diff options
| author | 2012-05-27 20:49:31 -0700 | |
|---|---|---|
| committer | 2012-05-30 16:10:11 -0700 | |
| commit | 0de52be83fc634d1407d8574986e8014de1df4fa (patch) | |
| tree | 8ae618f94b59174459b0332ad7608cab4933cf8b /src/compiler_llvm/method_compiler.cc | |
| parent | e21021411bcab601692815ea13696f7426ac026e (diff) | |
Remove data dependency of push/pop shadow frame.
Change-Id: I883a1082190084ddfa4a09b8953ac9dafa256e7e
Diffstat (limited to 'src/compiler_llvm/method_compiler.cc')
| -rw-r--r-- | src/compiler_llvm/method_compiler.cc | 8 |
1 files changed, 5 insertions, 3 deletions
diff --git a/src/compiler_llvm/method_compiler.cc b/src/compiler_llvm/method_compiler.cc index f76f57b76b..52b7b5f39b 100644 --- a/src/compiler_llvm/method_compiler.cc +++ b/src/compiler_llvm/method_compiler.cc @@ -73,7 +73,8 @@ MethodCompiler::MethodCompiler(CompilationUnit* cunit, basic_blocks_(code_item_->insns_size_in_code_units_), basic_block_landing_pads_(code_item_->tries_size_, NULL), basic_block_unwind_(NULL), basic_block_unreachable_(NULL), - shadow_frame_(NULL), elf_func_idx_(cunit_->AcquireUniqueElfFuncIndex()) { + shadow_frame_(NULL), jvalue_temp_(NULL), old_shadow_frame_(NULL), + elf_func_idx_(cunit_->AcquireUniqueElfFuncIndex()) { } @@ -320,7 +321,7 @@ void MethodCompiler::EmitPrologueAllocShadowFrame() { llvm::Value* shadow_frame_upcast = irb_.CreateConstGEP2_32(shadow_frame_, 0, 0); - irb_.CreateCall(irb_.GetRuntime(PushShadowFrame), shadow_frame_upcast); + old_shadow_frame_ = irb_.CreateCall(irb_.GetRuntime(PushShadowFrame), shadow_frame_upcast); } @@ -3954,7 +3955,8 @@ void MethodCompiler::EmitPopShadowFrame() { if (!method_info_.need_shadow_frame) { return; } - irb_.CreateCall(irb_.GetRuntime(PopShadowFrame)); + DCHECK(old_shadow_frame_ != NULL); + irb_.CreateCall(irb_.GetRuntime(PopShadowFrame), old_shadow_frame_); } |