summaryrefslogtreecommitdiff
path: root/src/compiler_llvm/method_compiler.cc
diff options
context:
space:
mode:
author Shih-wei Liao <sliao@google.com> 2012-05-30 17:06:55 -0700
committer Android (Google) Code Review <android-gerrit@google.com> 2012-05-30 17:06:55 -0700
commit044958948cd7f0b30657289dddd6ab8392aa077b (patch)
tree34e6b121021d592294adf702d09d170997500fda /src/compiler_llvm/method_compiler.cc
parent3c0e2a54030190e6eb6cdabcf4a2809588c1c184 (diff)
parent0de52be83fc634d1407d8574986e8014de1df4fa (diff)
Merge "Remove data dependency of push/pop shadow frame." into ics-mr1-plus-art
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_);
}