summaryrefslogtreecommitdiff
path: root/src/compiler_llvm/method_compiler.cc
diff options
context:
space:
mode:
author TDYa127 <tdy@google.com> 2012-05-17 21:23:57 -0700
committer Shih-wei Liao <sliao@google.com> 2012-05-18 12:19:09 -0700
commit6e474f8a2eb5379c74e589a41713c9b26aed2904 (patch)
tree6fecf7b7feaad9e12214b4a2346f2c61c9a1a738 /src/compiler_llvm/method_compiler.cc
parentd70faafce3b04aa79faa5def1e907f29bc24a788 (diff)
Only initialize the shadow frame table.
The shadow frame header will be filled before used. Change-Id: Ic7375012c1a65ea67dd9be648671edb9d4a5fb9a
Diffstat (limited to 'src/compiler_llvm/method_compiler.cc')
-rw-r--r--src/compiler_llvm/method_compiler.cc9
1 files changed, 6 insertions, 3 deletions
diff --git a/src/compiler_llvm/method_compiler.cc b/src/compiler_llvm/method_compiler.cc
index 3a02ee95ee..1acb17d24f 100644
--- a/src/compiler_llvm/method_compiler.cc
+++ b/src/compiler_llvm/method_compiler.cc
@@ -279,11 +279,14 @@ void MethodCompiler::EmitPrologueAllocShadowFrame() {
irb_.SetInsertPoint(basic_block_shadow_frame_);
- // Zero-initialization of the shadow frame
+ // Zero-initialization of the shadow frame table
+ llvm::Value* shadow_frame_table = irb_.CreateConstGEP2_32(shadow_frame_, 0, 1);
+ llvm::Type* table_type = shadow_frame_type->getElementType(1);
+
llvm::ConstantAggregateZero* zero_initializer =
- llvm::ConstantAggregateZero::get(shadow_frame_type);
+ llvm::ConstantAggregateZero::get(table_type);
- irb_.CreateStore(zero_initializer, shadow_frame_, kTBAAShadowFrame);
+ irb_.CreateStore(zero_initializer, shadow_frame_table, kTBAAShadowFrame);
// Get method object
llvm::Value* method_object_addr = EmitLoadMethodObjectAddr();