TBAA, separate JRuntime and ConstJObject.
This change can eliminate redundant virtual table load.
Also, fix comment.
Change-Id: I9deb9979eadce6ad728b6582cef80001e3a7039e
diff --git a/src/compiler_llvm/method_compiler.cc b/src/compiler_llvm/method_compiler.cc
index cbad3f966..de0e1ea 100644
--- a/src/compiler_llvm/method_compiler.cc
+++ b/src/compiler_llvm/method_compiler.cc
@@ -1600,7 +1600,7 @@
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 @@
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 @@
return irb_.LoadFromObjectOffset(array,
Array::LengthOffset().Int32Value(),
irb_.getJIntTy(),
- kTBAAJRuntime);
+ kTBAAConstJObject);
}
@@ -2565,7 +2565,7 @@
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 @@
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 @@
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 @@
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 @@
return irb_.LoadFromObjectOffset(method_object_addr,
offset.Int32Value(),
irb_.getJObjectTy(),
- kTBAAJRuntime);
+ kTBAAConstJObject);
}