summaryrefslogtreecommitdiff
path: root/src/compiler_llvm/method_compiler.cc
diff options
context:
space:
mode:
author TDYa127 <tdy@google.com> 2012-05-27 20:49:31 -0700
committer Shih-wei Liao <sliao@google.com> 2012-05-30 16:10:11 -0700
commit0de52be83fc634d1407d8574986e8014de1df4fa (patch)
tree8ae618f94b59174459b0332ad7608cab4933cf8b /src/compiler_llvm/method_compiler.cc
parente21021411bcab601692815ea13696f7426ac026e (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.cc8
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_);
}