summaryrefslogtreecommitdiffstats
path: root/src/compiler_llvm/ir_builder.h
diff options
context:
space:
mode:
authorTDYa127 <tdy@google.com>2012-05-06 00:05:33 -0700
committerShih-wei Liao <sliao@google.com>2012-05-06 15:02:05 -0700
commit706e7dbb0dc15e809c2e2346b3bc4927bc1290cd (patch)
tree0f48cc61b80e401edd88b114f00d23ab8fbb7551 /src/compiler_llvm/ir_builder.h
parent8ca100552be43ed11351a27497e3581abb055311 (diff)
downloadart-706e7dbb0dc15e809c2e2346b3bc4927bc1290cd.zip
art-706e7dbb0dc15e809c2e2346b3bc4927bc1290cd.tar.gz
art-706e7dbb0dc15e809c2e2346b3bc4927bc1290cd.tar.bz2
TBAA, separate different types of heap load/store.
Change-Id: I24dc2857db2985239e17d97fdd6463d7f2b54985
Diffstat (limited to 'src/compiler_llvm/ir_builder.h')
-rw-r--r--src/compiler_llvm/ir_builder.h17
1 files changed, 14 insertions, 3 deletions
diff --git a/src/compiler_llvm/ir_builder.h b/src/compiler_llvm/ir_builder.h
index 4dbc1b5..4b7642d 100644
--- a/src/compiler_llvm/ir_builder.h
+++ b/src/compiler_llvm/ir_builder.h
@@ -80,6 +80,16 @@ class IRBuilder : public LLVMIRBuilder {
return CreateStore(val, ptr, tbaa_.GetSpecialType(special_ty));
}
+ llvm::LoadInst* CreateLoad(llvm::Value* ptr, TBAASpecialType special_ty, JType j_ty) {
+ return CreateLoad(ptr, tbaa_.GetMemoryJType(special_ty, j_ty));
+ }
+
+ llvm::StoreInst* CreateStore(llvm::Value* val, llvm::Value* ptr,
+ TBAASpecialType special_ty, JType j_ty) {
+ DCHECK_NE(special_ty, kTBAAConstJObject) << "ConstJObject is read only!";
+ return CreateStore(val, ptr, tbaa_.GetMemoryJType(special_ty, j_ty));
+ }
+
llvm::Value* LoadFromObjectOffset(llvm::Value* object_addr,
int64_t offset,
llvm::Type* type,
@@ -339,10 +349,11 @@ class IRBuilder : public LLVMIRBuilder {
case kObject:
return getJNull();
- }
- LOG(FATAL) << "Unknown java type: " << jty;
- return NULL;
+ default:
+ LOG(FATAL) << "Unknown java type: " << jty;
+ return NULL;
+ }
}