Merge "Code cleanup. Simplify EmitArrayGEP." into ics-mr1-plus-art
diff --git a/src/compiler_llvm/method_compiler.cc b/src/compiler_llvm/method_compiler.cc
index 9028594..3122712 100644
--- a/src/compiler_llvm/method_compiler.cc
+++ b/src/compiler_llvm/method_compiler.cc
@@ -2257,7 +2257,6 @@
// 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::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 @@
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 @@
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 @@
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 @@
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 @@
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 @@
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 @@
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);
}
diff --git a/src/compiler_llvm/method_compiler.h b/src/compiler_llvm/method_compiler.h
index 598a337..02a5b2e 100644
--- a/src/compiler_llvm/method_compiler.h
+++ b/src/compiler_llvm/method_compiler.h
@@ -344,7 +344,6 @@
llvm::Value* EmitArrayGEP(llvm::Value* array_addr,
llvm::Value* index_value,
- llvm::Type* elem_type,
JType elem_jty);
llvm::Value* EmitLoadConstantClass(uint32_t dex_pc, uint32_t type_idx);