summaryrefslogtreecommitdiff
path: root/src/compiler_llvm
diff options
context:
space:
mode:
author Shih-wei Liao <sliao@google.com> 2012-05-13 10:07:44 -0700
committer Android (Google) Code Review <android-gerrit@google.com> 2012-05-13 10:07:44 -0700
commitdd9255c91a2132b2f24812cbc3aff10c0d3f8e11 (patch)
treee75b017eb896103469d3ff9c6295c4013ce643f5 /src/compiler_llvm
parent68adbe41c7d9295da2bfc521d737ba6dabd36c98 (diff)
parentd955bec688d007bd3afdde89a08691a8fe97a6a9 (diff)
Merge "TBAA, separate RuntimeInfo and ShadowFrame." into ics-mr1-plus-art
Diffstat (limited to 'src/compiler_llvm')
-rw-r--r--src/compiler_llvm/backend_types.h1
-rw-r--r--src/compiler_llvm/dalvik_reg.cc2
-rw-r--r--src/compiler_llvm/jni_compiler.cc10
-rw-r--r--src/compiler_llvm/method_compiler.cc8
-rw-r--r--src/compiler_llvm/runtime_support_builder.cc4
-rw-r--r--src/compiler_llvm/tbaa_info.cc1
6 files changed, 14 insertions, 12 deletions
diff --git a/src/compiler_llvm/backend_types.h b/src/compiler_llvm/backend_types.h
index f7449a5ca1..24703b8c24 100644
--- a/src/compiler_llvm/backend_types.h
+++ b/src/compiler_llvm/backend_types.h
@@ -64,6 +64,7 @@ enum TBAASpecialType {
kTBAAHeapStatic,
kTBAAJRuntime,
kTBAARuntimeInfo,
+ kTBAAShadowFrame,
kTBAAConstJObject,
MAX_TBAA_SPECIAL_TYPE
};
diff --git a/src/compiler_llvm/dalvik_reg.cc b/src/compiler_llvm/dalvik_reg.cc
index 6f7e908831..ab5cc40a7a 100644
--- a/src/compiler_llvm/dalvik_reg.cc
+++ b/src/compiler_llvm/dalvik_reg.cc
@@ -249,7 +249,7 @@ void DalvikLocalVarReg::SetValue(JType jty, JTypeSpace space, llvm::Value* value
if (jty == kObject) {
DCHECK_NE(reg_shadow_frame_, static_cast<llvm::Value*>(NULL))
<< "Didn't allocate shadow frame entry.";
- irb_.CreateStore(value, reg_shadow_frame_, kTBAARuntimeInfo);
+ irb_.CreateStore(value, reg_shadow_frame_, kTBAAShadowFrame);
}
}
diff --git a/src/compiler_llvm/jni_compiler.cc b/src/compiler_llvm/jni_compiler.cc
index 357d50d0c3..4b9fb052b2 100644
--- a/src/compiler_llvm/jni_compiler.cc
+++ b/src/compiler_llvm/jni_compiler.cc
@@ -120,19 +120,19 @@ CompiledMethod* JniCompiler::Compile() {
irb_.CreatePtrDisp(shadow_frame_,
irb_.getPtrEquivInt(ShadowFrame::MethodOffset()),
irb_.getJObjectTy()->getPointerTo());
- irb_.CreateStore(method_object_addr, method_field_addr, kTBAARuntimeInfo);
+ irb_.CreateStore(method_object_addr, method_field_addr, kTBAAShadowFrame);
// Store the dex pc
irb_.StoreToObjectOffset(shadow_frame_,
ShadowFrame::DexPCOffset(),
irb_.getInt32(0),
- kTBAARuntimeInfo);
+ kTBAAShadowFrame);
// Store the number of the pointer slots
irb_.StoreToObjectOffset(shadow_frame_,
ShadowFrame::NumberOfReferencesOffset(),
irb_.getInt32(sirt_size),
- kTBAARuntimeInfo);
+ kTBAAShadowFrame);
// Push the shadow frame
llvm::Value* shadow_frame_upcast = irb_.CreateConstGEP2_32(shadow_frame_, 0, 0);
@@ -176,7 +176,7 @@ CompiledMethod* JniCompiler::Compile() {
// Store the "this object or class object" to SIRT
gep_index[2] = irb_.getInt32(sirt_member_index++);
llvm::Value* sirt_field_addr = irb_.CreateGEP(shadow_frame_, gep_index);
- irb_.CreateStore(this_object_or_class_object, sirt_field_addr, kTBAARuntimeInfo);
+ irb_.CreateStore(this_object_or_class_object, sirt_field_addr, kTBAAShadowFrame);
// Push the "this object or class object" to out args
args.push_back(irb_.CreateBitCast(sirt_field_addr, irb_.getJObjectTy()));
// Store arguments to SIRT, and push back to args
@@ -185,7 +185,7 @@ CompiledMethod* JniCompiler::Compile() {
// Store the reference type arguments to SIRT
gep_index[2] = irb_.getInt32(sirt_member_index++);
llvm::Value* sirt_field_addr = irb_.CreateGEP(shadow_frame_, gep_index);
- irb_.CreateStore(arg_iter, sirt_field_addr, kTBAARuntimeInfo);
+ irb_.CreateStore(arg_iter, sirt_field_addr, kTBAAShadowFrame);
// Note null is placed in the SIRT but the jobject passed to the native code must be null
// (not a pointer into the SIRT as with regular references).
llvm::Value* equal_null = irb_.CreateICmpEQ(arg_iter, irb_.getJNull());
diff --git a/src/compiler_llvm/method_compiler.cc b/src/compiler_llvm/method_compiler.cc
index de0e1ea806..b3ae1a6a02 100644
--- a/src/compiler_llvm/method_compiler.cc
+++ b/src/compiler_llvm/method_compiler.cc
@@ -262,7 +262,7 @@ void MethodCompiler::EmitPrologueAllocShadowFrame() {
llvm::ConstantAggregateZero* zero_initializer =
llvm::ConstantAggregateZero::get(shadow_frame_type);
- irb_.CreateStore(zero_initializer, shadow_frame_, kTBAARuntimeInfo);
+ irb_.CreateStore(zero_initializer, shadow_frame_, kTBAAShadowFrame);
// Get method object
llvm::Value* method_object_addr = EmitLoadMethodObjectAddr();
@@ -271,13 +271,13 @@ void MethodCompiler::EmitPrologueAllocShadowFrame() {
irb_.StoreToObjectOffset(shadow_frame_,
ShadowFrame::MethodOffset(),
method_object_addr,
- kTBAARuntimeInfo);
+ kTBAAShadowFrame);
// Store the number of the pointer slots
irb_.StoreToObjectOffset(shadow_frame_,
ShadowFrame::NumberOfReferencesOffset(),
irb_.getJInt(sirt_size),
- kTBAARuntimeInfo);
+ kTBAAShadowFrame);
// Push the shadow frame
llvm::Value* shadow_frame_upcast =
@@ -3918,7 +3918,7 @@ void MethodCompiler::EmitUpdateDexPC(uint32_t dex_pc) {
irb_.StoreToObjectOffset(shadow_frame_,
ShadowFrame::DexPCOffset(),
irb_.getInt32(dex_pc),
- kTBAARuntimeInfo);
+ kTBAAShadowFrame);
}
diff --git a/src/compiler_llvm/runtime_support_builder.cc b/src/compiler_llvm/runtime_support_builder.cc
index 03500311df..c5a44abaf8 100644
--- a/src/compiler_llvm/runtime_support_builder.cc
+++ b/src/compiler_llvm/runtime_support_builder.cc
@@ -88,7 +88,7 @@ void RuntimeSupportBuilder::OptimizeRuntimeSupport() {
irb_.StoreToObjectOffset(new_shadow_frame,
ShadowFrame::LinkOffset(),
old_shadow_frame,
- kTBAARuntimeInfo);
+ kTBAAShadowFrame);
irb_.StoreToObjectOffset(thread,
Thread::TopShadowFrameOffset().Int32Value(),
new_shadow_frame,
@@ -113,7 +113,7 @@ void RuntimeSupportBuilder::OptimizeRuntimeSupport() {
Value* old_shadow_frame = irb_.LoadFromObjectOffset(new_shadow_frame,
ShadowFrame::LinkOffset(),
irb_.getJObjectTy(),
- kTBAARuntimeInfo);
+ kTBAAShadowFrame);
irb_.StoreToObjectOffset(thread,
Thread::TopShadowFrameOffset().Int32Value(),
old_shadow_frame,
diff --git a/src/compiler_llvm/tbaa_info.cc b/src/compiler_llvm/tbaa_info.cc
index 913760b4ea..03ef52541d 100644
--- a/src/compiler_llvm/tbaa_info.cc
+++ b/src/compiler_llvm/tbaa_info.cc
@@ -49,6 +49,7 @@ llvm::MDNode* TBAAInfo::GetSpecialType(TBAASpecialType sty_id) {
case kTBAAHeapStatic: spec_ty = GenTBAANode("HeapStatic", GetRootType()); break;
case kTBAAJRuntime: spec_ty = GenTBAANode("JRuntime", GetRootType()); break;
case kTBAARuntimeInfo: spec_ty = GenTBAANode("RuntimeInfo", GetRootType()); break;
+ case kTBAAShadowFrame: spec_ty = GenTBAANode("ShadowFrame", GetRootType()); break;
case kTBAAConstJObject: spec_ty = GenTBAANode("ConstJObject", GetRootType(), true); break;
default:
LOG(FATAL) << "Unknown TBAA special type: " << sty_id;