summaryrefslogtreecommitdiff
path: root/src/compiler_llvm
diff options
context:
space:
mode:
author TDYa127 <tdy@google.com> 2012-05-05 20:54:19 -0700
committer Shih-wei Liao <sliao@google.com> 2012-05-09 10:02:42 -0700
commitd3e24c21dcf3f76f00a00e7e0a8c59a4575e0e7b (patch)
treefed17bf043fbddeed8257f2bd106fbe4b055c5f4 /src/compiler_llvm
parente6a7adc91696930dae60c3d0eac46473a74d9941 (diff)
TBAA, separate JRuntime and ConstJObject.
This change can eliminate redundant virtual table load. Also, fix comment. Change-Id: I9deb9979eadce6ad728b6582cef80001e3a7039e
Diffstat (limited to 'src/compiler_llvm')
-rw-r--r--src/compiler_llvm/jni_compiler.cc2
-rw-r--r--src/compiler_llvm/method_compiler.cc18
-rw-r--r--src/compiler_llvm/runtime_support_builder.cc2
-rw-r--r--src/compiler_llvm/tbaa_info.cc2
4 files changed, 12 insertions, 12 deletions
diff --git a/src/compiler_llvm/jni_compiler.cc b/src/compiler_llvm/jni_compiler.cc
index 1fa0ce76b8..357d50d0c3 100644
--- a/src/compiler_llvm/jni_compiler.cc
+++ b/src/compiler_llvm/jni_compiler.cc
@@ -90,7 +90,7 @@ CompiledMethod* JniCompiler::Compile() {
irb_.LoadFromObjectOffset(method_object_addr,
Method::DeclaringClassOffset().Int32Value(),
irb_.getJObjectTy(),
- kTBAAJRuntime);
+ kTBAAConstJObject);
}
// Actual argument (ignore method and this object)
arg_begin = arg_iter;
diff --git a/src/compiler_llvm/method_compiler.cc b/src/compiler_llvm/method_compiler.cc
index cbad3f9668..de0e1ea806 100644
--- a/src/compiler_llvm/method_compiler.cc
+++ b/src/compiler_llvm/method_compiler.cc
@@ -1600,7 +1600,7 @@ void MethodCompiler::EmitInsn_CheckCast(uint32_t dex_pc,
irb_.CreateBitCast(object_addr, jobject_ptr_ty->getPointerTo());
llvm::Value* object_type_object_addr =
- irb_.CreateLoad(object_type_field_addr, kTBAAJRuntime);
+ irb_.CreateLoad(object_type_field_addr, kTBAAConstJObject);
llvm::Value* equal_class =
irb_.CreateICmpEQ(type_object_addr, object_type_object_addr);
@@ -1669,7 +1669,7 @@ void MethodCompiler::EmitInsn_InstanceOf(uint32_t dex_pc,
irb_.CreateBitCast(object_addr, jobject_ptr_ty->getPointerTo());
llvm::Value* object_type_object_addr =
- irb_.CreateLoad(object_type_field_addr, kTBAAJRuntime);
+ irb_.CreateLoad(object_type_field_addr, kTBAAConstJObject);
llvm::Value* equal_class =
irb_.CreateICmpEQ(type_object_addr, object_type_object_addr);
@@ -1698,7 +1698,7 @@ llvm::Value* MethodCompiler::EmitLoadArrayLength(llvm::Value* array) {
return irb_.LoadFromObjectOffset(array,
Array::LengthOffset().Int32Value(),
irb_.getJIntTy(),
- kTBAAJRuntime);
+ kTBAAConstJObject);
}
@@ -2565,7 +2565,7 @@ void MethodCompiler::EmitInsn_SGet(uint32_t dex_pc,
irb_.LoadFromObjectOffset(method_object_addr,
Method::DeclaringClassOffset().Int32Value(),
irb_.getJObjectTy(),
- kTBAAJRuntime);
+ kTBAAConstJObject);
} else {
// Medium path, static storage base in a different class which
// requires checks that the other class is initialized
@@ -2644,7 +2644,7 @@ void MethodCompiler::EmitInsn_SPut(uint32_t dex_pc,
irb_.LoadFromObjectOffset(method_object_addr,
Method::DeclaringClassOffset().Int32Value(),
irb_.getJObjectTy(),
- kTBAAJRuntime);
+ kTBAAConstJObject);
} else {
// Medium path, static storage base in a different class which
// requires checks that the other class is initialized
@@ -2932,14 +2932,14 @@ EmitLoadVirtualCalleeMethodObjectAddr(int vtable_idx,
irb_.LoadFromObjectOffset(this_addr,
Object::ClassOffset().Int32Value(),
irb_.getJObjectTy(),
- kTBAAJRuntime);
+ kTBAAConstJObject);
// Load vtable address
llvm::Value* vtable_addr =
irb_.LoadFromObjectOffset(class_object_addr,
Class::VTableOffset().Int32Value(),
irb_.getJObjectTy(),
- kTBAAJRuntime);
+ kTBAAConstJObject);
// Load callee method object
llvm::Value* vtable_idx_value =
@@ -2948,7 +2948,7 @@ EmitLoadVirtualCalleeMethodObjectAddr(int vtable_idx,
llvm::Value* method_field_addr =
EmitArrayGEP(vtable_addr, vtable_idx_value, irb_.getJObjectTy(), kObject);
- return irb_.CreateLoad(method_field_addr, kTBAAJRuntime);
+ return irb_.CreateLoad(method_field_addr, kTBAAConstJObject);
}
@@ -3549,7 +3549,7 @@ llvm::Value* MethodCompiler::EmitLoadDexCacheAddr(MemberOffset offset) {
return irb_.LoadFromObjectOffset(method_object_addr,
offset.Int32Value(),
irb_.getJObjectTy(),
- kTBAAJRuntime);
+ kTBAAConstJObject);
}
diff --git a/src/compiler_llvm/runtime_support_builder.cc b/src/compiler_llvm/runtime_support_builder.cc
index f7b9f07959..03500311df 100644
--- a/src/compiler_llvm/runtime_support_builder.cc
+++ b/src/compiler_llvm/runtime_support_builder.cc
@@ -201,7 +201,7 @@ void RuntimeSupportBuilder::OptimizeRuntimeSupport() {
Value* card_table = irb_.LoadFromObjectOffset(thread,
Thread::CardTableOffset().Int32Value(),
irb_.getInt8Ty()->getPointerTo(),
- kTBAAJRuntime);
+ kTBAAConstJObject);
Value* target_addr_int = irb_.CreatePtrToInt(target_addr, irb_.getPtrEquivIntTy());
Value* card_no = irb_.CreateLShr(target_addr_int, irb_.getPtrEquivInt(GC_CARD_SHIFT));
Value* card_table_entry = irb_.CreateGEP(card_table, card_no);
diff --git a/src/compiler_llvm/tbaa_info.cc b/src/compiler_llvm/tbaa_info.cc
index d1b351f53c..913760b4ea 100644
--- a/src/compiler_llvm/tbaa_info.cc
+++ b/src/compiler_llvm/tbaa_info.cc
@@ -61,7 +61,7 @@ llvm::MDNode* TBAAInfo::GetSpecialType(TBAASpecialType sty_id) {
llvm::MDNode* TBAAInfo::GetMemoryJType(TBAASpecialType sty_id, JType jty_id) {
DCHECK(sty_id == kTBAAHeapArray ||
sty_id == kTBAAHeapInstance ||
- sty_id == kTBAAHeapStatic) << "SpecialType must be array, identified, or static";
+ sty_id == kTBAAHeapStatic) << "SpecialType must be array, instance, or static";
DCHECK_GE(jty_id, 0) << "Unknown JType: " << jty_id;
DCHECK_LT(jty_id, MAX_JTYPE) << "Unknown JType: " << jty_id;