summaryrefslogtreecommitdiff
path: root/runtime/interpreter/interpreter_switch_impl-inl.h
diff options
context:
space:
mode:
author Vladimir Marko <vmarko@google.com> 2021-05-13 10:29:22 +0000
committer Vladimir Marko <vmarko@google.com> 2021-05-13 14:25:56 +0000
commit3606cc69f5975d7ae81044a51706a6896d148781 (patch)
tree6cb682d7bb8ec086c43caf873b3c854181806be9 /runtime/interpreter/interpreter_switch_impl-inl.h
parent0da7dfc71506d1f6bfa93f0c5fdb33df49dea0e7 (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.h22
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.