summaryrefslogtreecommitdiff
path: root/runtime/art_method.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/art_method.cc
parent8c4cce0abe6cfa8f4157cfa42b18474d9536c159 (diff)
parent1f2d3ba6af52cf6f566deb38b7e07735c9a08fb6 (diff)
Merge "Fix nested deoptimization."
Diffstat (limited to 'runtime/art_method.cc')
-rw-r--r--runtime/art_method.cc3
1 files changed, 2 insertions, 1 deletions
diff --git a/runtime/art_method.cc b/runtime/art_method.cc
index fe26438eac..50d9860d82 100644
--- a/runtime/art_method.cc
+++ b/runtime/art_method.cc
@@ -428,7 +428,8 @@ void ArtMethod::Invoke(Thread* self, uint32_t* args, uint32_t args_size, JValue*
// exception was thrown to force the activations to be removed from the
// stack. Continue execution in the interpreter.
self->ClearException();
- ShadowFrame* shadow_frame = self->GetAndClearDeoptimizationShadowFrame(result);
+ ShadowFrame* shadow_frame = self->PopStackedShadowFrame(kDeoptimizationShadowFrame);
+ result->SetJ(self->PopDeoptimizationReturnValue().GetJ());
self->SetTopOfStack(nullptr);
self->SetTopOfShadowStack(shadow_frame);
interpreter::EnterInterpreterFromDeoptimize(self, shadow_frame, result);