diff options
| author | 2015-06-08 17:41:30 +0000 | |
|---|---|---|
| committer | 2015-06-08 17:41:30 +0000 | |
| commit | a56b2e09cc311d3b8eb9384decc76a13ed5da6e9 (patch) | |
| tree | 3eb3f919e06f80de28022063f7f1104ceb1f50ad /runtime/art_method.cc | |
| parent | 8c4cce0abe6cfa8f4157cfa42b18474d9536c159 (diff) | |
| parent | 1f2d3ba6af52cf6f566deb38b7e07735c9a08fb6 (diff) | |
Merge "Fix nested deoptimization."
Diffstat (limited to 'runtime/art_method.cc')
| -rw-r--r-- | runtime/art_method.cc | 3 |
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); |