summaryrefslogtreecommitdiff
path: root/runtime/interpreter/interpreter_common.cc
diff options
context:
space:
mode:
author Mingyao Yang <mingyao@google.com> 2015-06-08 17:41:30 +0000
committer Gerrit Code Review <noreply-gerritcodereview@google.com> 2015-06-08 17:41:30 +0000
commita56b2e09cc311d3b8eb9384decc76a13ed5da6e9 (patch)
tree3eb3f919e06f80de28022063f7f1104ceb1f50ad /runtime/interpreter/interpreter_common.cc
parent8c4cce0abe6cfa8f4157cfa42b18474d9536c159 (diff)
parent1f2d3ba6af52cf6f566deb38b7e07735c9a08fb6 (diff)
Merge "Fix nested deoptimization."
Diffstat (limited to 'runtime/interpreter/interpreter_common.cc')
-rw-r--r--runtime/interpreter/interpreter_common.cc5
1 files changed, 2 insertions, 3 deletions
diff --git a/runtime/interpreter/interpreter_common.cc b/runtime/interpreter/interpreter_common.cc
index 1ed1a649b8..3f2e6db716 100644
--- a/runtime/interpreter/interpreter_common.cc
+++ b/runtime/interpreter/interpreter_common.cc
@@ -517,7 +517,8 @@ bool DoCall(ArtMethod* called_method, Thread* self, ShadowFrame& shadow_frame,
// Slow path.
// We might need to do class loading, which incurs a thread state change to kNative. So
// register the shadow frame as under construction and allow suspension again.
- self->SetShadowFrameUnderConstruction(new_shadow_frame);
+ ScopedStackedShadowFramePusher pusher(
+ self, new_shadow_frame, kShadowFrameUnderConstruction);
self->EndAssertNoThreadSuspension(old_cause);
// We need to do runtime check on reference assignment. We need to load the shorty
@@ -590,8 +591,6 @@ bool DoCall(ArtMethod* called_method, Thread* self, ShadowFrame& shadow_frame,
break;
}
}
- // We're done with the construction.
- self->ClearShadowFrameUnderConstruction();
} else {
// Fast path: no extra checks.
if (is_range) {