Add ELF index to art::compiler_llvm::CompilationUnit.
We need an ELF index to remember which ELF image contains
the CompiledMethod or CompiledInvokeStub.
(cherry picked from commit df612fb98fabeec2fa7277c7ab332589fa38283c)
Change-Id: Ic8a4aca7d030685e156c9f3fe632bf45a5c4d02b
diff --git a/src/compiler_llvm/compilation_unit.cc b/src/compiler_llvm/compilation_unit.cc
index f654e48..d548976 100644
--- a/src/compiler_llvm/compilation_unit.cc
+++ b/src/compiler_llvm/compilation_unit.cc
@@ -60,8 +60,9 @@
llvm::Module* makeLLVMModuleContents(llvm::Module* module);
-CompilationUnit::CompilationUnit(InstructionSet insn_set)
-: insn_set_(insn_set), context_(new llvm::LLVMContext()), mem_usage_(0) {
+CompilationUnit::CompilationUnit(InstructionSet insn_set, size_t elf_idx)
+: insn_set_(insn_set), elf_idx_(elf_idx), context_(new llvm::LLVMContext()),
+ mem_usage_(0) {
// Create the module and include the runtime function declaration
module_ = new llvm::Module("art", *context_);
diff --git a/src/compiler_llvm/compilation_unit.h b/src/compiler_llvm/compilation_unit.h
index a0882bb..4a23095 100644
--- a/src/compiler_llvm/compilation_unit.h
+++ b/src/compiler_llvm/compilation_unit.h
@@ -36,10 +36,14 @@
class CompilationUnit {
public:
- CompilationUnit(InstructionSet insn_set);
+ CompilationUnit(InstructionSet insn_set, size_t elf_idx);
~CompilationUnit();
+ size_t GetElfIndex() const {
+ return elf_idx_;
+ }
+
InstructionSet GetInstructionSet() const {
return insn_set_;
}
@@ -98,6 +102,7 @@
private:
InstructionSet insn_set_;
+ const size_t elf_idx_;
UniquePtr<llvm::LLVMContext> context_;
UniquePtr<IRBuilder> irb_;
diff --git a/src/compiler_llvm/compiler_llvm.cc b/src/compiler_llvm/compiler_llvm.cc
index 7563fe0..d528615 100644
--- a/src/compiler_llvm/compiler_llvm.cc
+++ b/src/compiler_llvm/compiler_llvm.cc
@@ -119,7 +119,7 @@
// Allocate compilation unit
size_t cunit_idx = cunits_.size();
- curr_cunit_ = new CompilationUnit(insn_set_);
+ curr_cunit_ = new CompilationUnit(insn_set_, cunit_idx);
// Setup output filename
curr_cunit_->SetElfFileName(