From 937105a220983351695bf4c8924171ba5d17a68c Mon Sep 17 00:00:00 2001 From: Logan Chien Date: Mon, 2 Apr 2012 02:37:37 +0800 Subject: Use ELF function index to distinguish generated functions. We replaced LLVMLongName and LLVMStubName with ElfFuncName, and we are using the simple name: Art0, Art1, ..., ArtN, as the function name of every generated functions. This gives us 3 benefits: 1. We can avoid the ambiguous function name returned by LLVMLongName() in some special situation. 2. We don't need to have the art::Method object during the executable linking procedure. Besides, this will make bootstrapping easier. 3. Reduce the size of the ELF executable, since we don't have to save a long function name, which usually contains more than 30 characters. Change-Id: Ib698062b272458e847ad5545d7acf33a4dc9eb85 --- src/compiler_llvm/jni_compiler.cc | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) (limited to 'src/compiler_llvm/jni_compiler.cc') diff --git a/src/compiler_llvm/jni_compiler.cc b/src/compiler_llvm/jni_compiler.cc index 097c4f11d0..285caaba26 100644 --- a/src/compiler_llvm/jni_compiler.cc +++ b/src/compiler_llvm/jni_compiler.cc @@ -52,7 +52,8 @@ JniCompiler::JniCompiler(CompilationUnit* cunit, class_loader_(oat_compilation_unit->class_loader_), dex_cache_(oat_compilation_unit->dex_cache_), dex_file_(oat_compilation_unit->dex_file_), - method_(dex_cache_->GetResolvedMethod(method_idx_)) { + method_(dex_cache_->GetResolvedMethod(method_idx_)), + elf_func_idx_(cunit_->AcquireUniqueElfFuncIndex()) { // Check: Ensure that the method is resolved CHECK_NE(method_, static_cast(NULL)); @@ -289,13 +290,14 @@ CompiledMethod* JniCompiler::Compile() { llvm::verifyFunction(*func_, llvm::PrintMessageAction); return new CompiledMethod(cunit_->GetInstructionSet(), - cunit_->GetElfIndex()); + cunit_->GetElfIndex(), + elf_func_idx_); } void JniCompiler::CreateFunction() { // LLVM function name - std::string func_name(LLVMLongName(method_)); + std::string func_name(ElfFuncName(elf_func_idx_)); // Get function type llvm::FunctionType* func_type = -- cgit v1.2.3-59-g8ed1b