diff options
| author | 2021-05-13 10:29:22 +0000 | |
|---|---|---|
| committer | 2021-05-13 14:25:56 +0000 | |
| commit | 3606cc69f5975d7ae81044a51706a6896d148781 (patch) | |
| tree | 6cb682d7bb8ec086c43caf873b3c854181806be9 /runtime/interpreter/interpreter_switch_impl-inl.h | |
| parent | 0da7dfc71506d1f6bfa93f0c5fdb33df49dea0e7 (diff) | |
Do not try to do OSR in transactional interpreter.
Test: testrunner.py --host --optimizing --jit
Bug: 175869411
Bug: 181943478
Change-Id: I005c532c23d34c16a8b6bd2f7dd464f9ef2a2b75
Diffstat (limited to 'runtime/interpreter/interpreter_switch_impl-inl.h')
| -rw-r--r-- | runtime/interpreter/interpreter_switch_impl-inl.h | 22 |
1 files changed, 12 insertions, 10 deletions
diff --git a/runtime/interpreter/interpreter_switch_impl-inl.h b/runtime/interpreter/interpreter_switch_impl-inl.h index 07a04fe4bb..8e16e04bfa 100644 --- a/runtime/interpreter/interpreter_switch_impl-inl.h +++ b/runtime/interpreter/interpreter_switch_impl-inl.h @@ -237,16 +237,18 @@ class InstructionHandler { if (UNLIKELY(Instrumentation()->HasBranchListeners())) { Instrumentation()->Branch(Self(), shadow_frame_.GetMethod(), DexPC(), offset); } - // TODO: Do OSR only on back-edges and check if OSR code is ready here. - JValue result; - if (jit::Jit::MaybeDoOnStackReplacement(Self(), - shadow_frame_.GetMethod(), - DexPC(), - offset, - &result)) { - ctx_->result = result; - ExitInterpreterLoop(); - return false; + if (!transaction_active) { + // TODO: Do OSR only on back-edges and check if OSR code is ready here. + JValue result; + if (jit::Jit::MaybeDoOnStackReplacement(Self(), + shadow_frame_.GetMethod(), + DexPC(), + offset, + &result)) { + ctx_->result = result; + ExitInterpreterLoop(); + return false; + } } SetNextInstruction(inst_->RelativeAt(offset)); if (offset <= 0) { // Back-edge. |