Emit name only in debug mode.
Change-Id: I5de11b98ae07eccce2ce12d55867ae8d4a98288c
diff --git a/src/compiler_llvm/dalvik_reg.cc b/src/compiler_llvm/dalvik_reg.cc
index 492d33b..0ed6089 100644
--- a/src/compiler_llvm/dalvik_reg.cc
+++ b/src/compiler_llvm/dalvik_reg.cc
@@ -86,6 +86,30 @@
}
+llvm::Type* DalvikReg::GetRegCategoryEquivSizeTy(IRBuilder& irb, RegCategory reg_cat) {
+ switch (reg_cat) {
+ case kRegCat1nr: return irb.getJIntTy();
+ case kRegCat2: return irb.getJLongTy();
+ case kRegObject: return irb.getJObjectTy();
+ default:
+ LOG(FATAL) << "Unknown register category: " << reg_cat;
+ return NULL;
+ }
+}
+
+
+char DalvikReg::GetRegCategoryNamePrefix(RegCategory reg_cat) {
+ switch (reg_cat) {
+ case kRegCat1nr: return 'r';
+ case kRegCat2: return 'w';
+ case kRegObject: return 'p';
+ default:
+ LOG(FATAL) << "Unknown register category: " << reg_cat;
+ return '\0';
+ }
+}
+
+
inline llvm::Value* DalvikReg::RegCat1SExt(llvm::Value* value) {
return irb_.CreateSExt(value, irb_.getJIntTy());
}
diff --git a/src/compiler_llvm/dalvik_reg.h b/src/compiler_llvm/dalvik_reg.h
index 2b17541..7356c87 100644
--- a/src/compiler_llvm/dalvik_reg.h
+++ b/src/compiler_llvm/dalvik_reg.h
@@ -39,6 +39,10 @@
static DalvikReg* CreateRetValReg(MethodCompiler& method_compiler);
+ static llvm::Type* GetRegCategoryEquivSizeTy(IRBuilder& irb, RegCategory reg_cat);
+
+ static char GetRegCategoryNamePrefix(RegCategory reg_cat);
+
virtual ~DalvikReg();
llvm::Value* GetValue(JType jty, JTypeSpace space);
diff --git a/src/compiler_llvm/jni_compiler.cc b/src/compiler_llvm/jni_compiler.cc
index 801a692..27fe6db 100644
--- a/src/compiler_llvm/jni_compiler.cc
+++ b/src/compiler_llvm/jni_compiler.cc
@@ -99,7 +99,9 @@
// "this" object pointer for non-static
// "class" object pointer for static
for (unsigned i = 0; arg_iter != arg_end; ++i, ++arg_iter) {
+#if !defined(NDEBUG)
arg_iter->setName(StringPrintf("a%u", i));
+#endif
if (arg_iter->getType() == irb_.getJObjectTy()) {
++sirt_size;
}
diff --git a/src/compiler_llvm/method_compiler.cc b/src/compiler_llvm/method_compiler.cc
index c8976cd..9d0d3f4 100644
--- a/src/compiler_llvm/method_compiler.cc
+++ b/src/compiler_llvm/method_compiler.cc
@@ -88,6 +88,7 @@
func_ = llvm::Function::Create(func_type, llvm::Function::ExternalLinkage,
func_name, module_);
+#if !defined(NDEBUG)
// Set argument name
llvm::Function::arg_iterator arg_iter(func_->arg_begin());
llvm::Function::arg_iterator arg_end(func_->arg_end());
@@ -105,6 +106,7 @@
for (unsigned i = 0; arg_iter != arg_end; ++i, ++arg_iter) {
arg_iter->setName(StringPrintf("a%u", i));
}
+#endif
}
@@ -3666,11 +3668,13 @@
CreateBasicBlockWithDexPC(uint32_t dex_pc, char const* postfix) {
std::string name;
+#if !defined(NDEBUG)
if (postfix) {
StringAppendF(&name, "B%04x.%s", dex_pc, postfix);
} else {
StringAppendF(&name, "B%04x", dex_pc);
}
+#endif
return llvm::BasicBlock::Create(*context_, name, func_);
}
@@ -3746,10 +3750,14 @@
// Get try item from code item
DexFile::TryItem const* ti = DexFile::GetTryItems(*code_item_, ti_offset);
+ std::string lpadname;
+
+#if !defined(NDEBUG)
+ StringAppendF(&lpadname, "lpad%d_%04x_to_%04x", ti_offset, ti->start_addr_, ti->handler_off_);
+#endif
+
// Create landing pad basic block
- block_lpad = llvm::BasicBlock::Create(*context_,
- StringPrintf("lpad%d", ti_offset),
- func_);
+ block_lpad = llvm::BasicBlock::Create(*context_, lpadname, func_);
// Change IRBuilder insert point
llvm::IRBuilderBase::InsertPoint irb_ip_original = irb_.saveIP();
@@ -3820,35 +3828,20 @@
llvm::Value* MethodCompiler::AllocDalvikLocalVarReg(RegCategory cat,
uint32_t reg_idx) {
+ // Get reg_type and reg_name from DalvikReg
+ llvm::Type* reg_type = DalvikReg::GetRegCategoryEquivSizeTy(irb_, cat);
+ std::string reg_name;
+
+#if !defined(NDEBUG)
+ StringAppendF(®_name, "%c%u", DalvikReg::GetRegCategoryNamePrefix(cat), reg_idx);
+#endif
// Save current IR builder insert point
llvm::IRBuilderBase::InsertPoint irb_ip_original = irb_.saveIP();
+ irb_.SetInsertPoint(basic_block_reg_alloca_);
// Alloca
- llvm::Value* reg_addr = NULL;
-
- switch (cat) {
- case kRegCat1nr:
- irb_.SetInsertPoint(basic_block_reg_alloca_);
- reg_addr = irb_.CreateAlloca(irb_.getJIntTy(), 0,
- StringPrintf("r%u", reg_idx));
- break;
-
- case kRegCat2:
- irb_.SetInsertPoint(basic_block_reg_alloca_);
- reg_addr = irb_.CreateAlloca(irb_.getJLongTy(), 0,
- StringPrintf("w%u", reg_idx));
- break;
-
- case kRegObject:
- irb_.SetInsertPoint(basic_block_reg_alloca_);
- reg_addr = irb_.CreateAlloca(irb_.getJObjectTy(), 0,
- StringPrintf("o%u", reg_idx));
- break;
-
- default:
- LOG(FATAL) << "Unknown register category for allocation: " << cat;
- }
+ llvm::Value* reg_addr = irb_.CreateAlloca(reg_type, 0, reg_name);
// Restore IRBuilder insert point
irb_.restoreIP(irb_ip_original);
@@ -3859,6 +3852,12 @@
llvm::Value* MethodCompiler::AllocShadowFrameEntry(uint32_t reg_idx) {
+ std::string reg_name;
+
+#if !defined(NDEBUG)
+ StringAppendF(®_name, "o%u", reg_idx);
+#endif
+
// Save current IR builder insert point
llvm::IRBuilderBase::InsertPoint irb_ip_original = irb_.saveIP();
@@ -3870,8 +3869,7 @@
irb_.getInt32(reg_idx) // Pointer field
};
- llvm::Value* reg_addr =
- irb_.CreateGEP(shadow_frame_, gep_index, StringPrintf("p%u", reg_idx));
+ llvm::Value* reg_addr = irb_.CreateGEP(shadow_frame_, gep_index, reg_name);
// Restore IRBuilder insert point
irb_.restoreIP(irb_ip_original);
@@ -3882,31 +3880,20 @@
llvm::Value* MethodCompiler::AllocDalvikRetValReg(RegCategory cat) {
+ // Get reg_type and reg_name from DalvikReg
+ llvm::Type* reg_type = DalvikReg::GetRegCategoryEquivSizeTy(irb_, cat);
+ std::string reg_name;
+
+#if !defined(NDEBUG)
+ StringAppendF(®_name, "%c_res", DalvikReg::GetRegCategoryNamePrefix(cat));
+#endif
+
// Save current IR builder insert point
llvm::IRBuilderBase::InsertPoint irb_ip_original = irb_.saveIP();
+ irb_.SetInsertPoint(basic_block_reg_alloca_);
// Alloca
- llvm::Value* reg_addr = NULL;
-
- switch (cat) {
- case kRegCat1nr:
- irb_.SetInsertPoint(basic_block_reg_alloca_);
- reg_addr = irb_.CreateAlloca(irb_.getJIntTy(), 0, "r_res");
- break;
-
- case kRegCat2:
- irb_.SetInsertPoint(basic_block_reg_alloca_);
- reg_addr = irb_.CreateAlloca(irb_.getJLongTy(), 0, "w_res");
- break;
-
- case kRegObject:
- irb_.SetInsertPoint(basic_block_reg_alloca_);
- reg_addr = irb_.CreateAlloca(irb_.getJObjectTy(), 0, "p_res");
- break;
-
- default:
- LOG(FATAL) << "Unknown register category for allocation: " << cat;
- }
+ llvm::Value* reg_addr = irb_.CreateAlloca(reg_type, 0, reg_name);
// Restore IRBuilder insert point
irb_.restoreIP(irb_ip_original);