diff options
author | TDYa127 <tdy@google.com> | 2012-05-06 00:05:33 -0700 |
---|---|---|
committer | Shih-wei Liao <sliao@google.com> | 2012-05-06 15:02:05 -0700 |
commit | 706e7dbb0dc15e809c2e2346b3bc4927bc1290cd (patch) | |
tree | 0f48cc61b80e401edd88b114f00d23ab8fbb7551 /src/compiler_llvm/ir_builder.h | |
parent | 8ca100552be43ed11351a27497e3581abb055311 (diff) | |
download | art-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.h | 17 |
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; + } } |