summaryrefslogtreecommitdiff
path: root/src/compiler_llvm/method_compiler.cc
diff options
context:
space:
mode:
author TDYa127 <tdy@google.com> 2012-05-17 04:48:42 -0700
committer Shih-wei Liao <sliao@google.com> 2012-05-17 21:28:26 -0700
commit8db6ea39275171cc738c12685c4c6c5fd0c2af45 (patch)
tree04eba1debfd07268707f201b62cd0e36bbf1acf7 /src/compiler_llvm/method_compiler.cc
parentf165286d35bb5cc0e173cbf2d233314c7e805795 (diff)
Code cleanup. Simplify EmitArrayGEP.
Change-Id: Ief3d2448859ceae2e3818f29d69076423bfbd1e1
Diffstat (limited to 'src/compiler_llvm/method_compiler.cc')
-rw-r--r--src/compiler_llvm/method_compiler.cc27
1 files changed, 9 insertions, 18 deletions
diff --git a/src/compiler_llvm/method_compiler.cc b/src/compiler_llvm/method_compiler.cc
index 90285946ba..3122712505 100644
--- a/src/compiler_llvm/method_compiler.cc
+++ b/src/compiler_llvm/method_compiler.cc
@@ -2257,7 +2257,6 @@ void MethodCompiler::EmitGuard_ArrayException(uint32_t dex_pc,
// Emit Array GetElementPtr
llvm::Value* MethodCompiler::EmitArrayGEP(llvm::Value* array_addr,
llvm::Value* index_value,
- llvm::Type* elem_type,
JType elem_jty) {
int data_offset;
@@ -2271,6 +2270,8 @@ llvm::Value* MethodCompiler::EmitArrayGEP(llvm::Value* array_addr,
llvm::Constant* data_offset_value =
irb_.getPtrEquivInt(data_offset);
+ llvm::Type* elem_type = irb_.getJType(elem_jty, kArray);
+
llvm::Value* array_data_addr =
irb_.CreatePtrDisp(array_addr, data_offset_value,
elem_type->getPointerTo());
@@ -2290,10 +2291,7 @@ void MethodCompiler::EmitInsn_AGet(uint32_t dex_pc,
EmitGuard_ArrayException(dex_pc, array_addr, index_value);
- llvm::Type* elem_type = irb_.getJType(elem_jty, kArray);
-
- llvm::Value* array_elem_addr =
- EmitArrayGEP(array_addr, index_value, elem_type, elem_jty);
+ llvm::Value* array_elem_addr = EmitArrayGEP(array_addr, index_value, elem_jty);
llvm::Value* array_elem_value = irb_.CreateLoad(array_elem_addr, kTBAAHeapArray, elem_jty);
@@ -2314,10 +2312,7 @@ void MethodCompiler::EmitInsn_APut(uint32_t dex_pc,
EmitGuard_ArrayException(dex_pc, array_addr, index_value);
- llvm::Type* elem_type = irb_.getJType(elem_jty, kArray);
-
- llvm::Value* array_elem_addr =
- EmitArrayGEP(array_addr, index_value, elem_type, elem_jty);
+ llvm::Value* array_elem_addr = EmitArrayGEP(array_addr, index_value, elem_jty);
llvm::Value* new_value = EmitLoadDalvikReg(dec_insn.vA, elem_jty, kArray);
@@ -2963,7 +2958,7 @@ EmitLoadVirtualCalleeMethodObjectAddr(int vtable_idx,
irb_.getPtrEquivInt(static_cast<uint64_t>(vtable_idx));
llvm::Value* method_field_addr =
- EmitArrayGEP(vtable_addr, vtable_idx_value, irb_.getJObjectTy(), kObject);
+ EmitArrayGEP(vtable_addr, vtable_idx_value, kObject);
return irb_.CreateLoad(method_field_addr, kTBAAConstJObject);
}
@@ -3577,8 +3572,7 @@ EmitLoadDexCacheStaticStorageFieldAddr(uint32_t type_idx) {
llvm::Value* type_idx_value = irb_.getPtrEquivInt(type_idx);
- return EmitArrayGEP(static_storage_dex_cache_addr, type_idx_value,
- irb_.getJObjectTy(), kObject);
+ return EmitArrayGEP(static_storage_dex_cache_addr, type_idx_value, kObject);
}
@@ -3589,8 +3583,7 @@ EmitLoadDexCacheResolvedTypeFieldAddr(uint32_t type_idx) {
llvm::Value* type_idx_value = irb_.getPtrEquivInt(type_idx);
- return EmitArrayGEP(resolved_type_dex_cache_addr, type_idx_value,
- irb_.getJObjectTy(), kObject);
+ return EmitArrayGEP(resolved_type_dex_cache_addr, type_idx_value, kObject);
}
@@ -3601,8 +3594,7 @@ EmitLoadDexCacheResolvedMethodFieldAddr(uint32_t method_idx) {
llvm::Value* method_idx_value = irb_.getPtrEquivInt(method_idx);
- return EmitArrayGEP(resolved_method_dex_cache_addr, method_idx_value,
- irb_.getJObjectTy(), kObject);
+ return EmitArrayGEP(resolved_method_dex_cache_addr, method_idx_value, kObject);
}
@@ -3613,8 +3605,7 @@ EmitLoadDexCacheStringFieldAddr(uint32_t string_idx) {
llvm::Value* string_idx_value = irb_.getPtrEquivInt(string_idx);
- return EmitArrayGEP(string_dex_cache_addr, string_idx_value,
- irb_.getJObjectTy(), kObject);
+ return EmitArrayGEP(string_dex_cache_addr, string_idx_value, kObject);
}