Create an instance of CompilerLLVM in the constructor of Compiler.
(cherry picked from commit 120539c9a333789f52dd75aa3ec2d303c7cf2119)
Change-Id: I43d10f712e515cffd2f97e628a9d2aa2ff994f5b
diff --git a/src/compiler.cc b/src/compiler.cc
index 0eb4301..0431d74 100644
--- a/src/compiler.cc
+++ b/src/compiler.cc
@@ -330,6 +330,18 @@
}
VLOG(compiler) << "dlopen(\"" << compiler_so_name << "\", RTLD_LAZY) returned " << compiler_library_;
+#if defined(ART_USE_LLVM_COMPILER)
+ // Initialize compiler_context_
+ typedef void (*InitCompilerContextFn)(Compiler&);
+
+ InitCompilerContextFn init_compiler_context =
+ FindFunction<void (*)(Compiler&)>(compiler_so_name,
+ compiler_library_,
+ "ArtInitCompilerContext");
+
+ init_compiler_context(*this);
+#endif
+
compiler_ = FindFunction<CompilerFn>(compiler_so_name, compiler_library_, "ArtCompileMethod");
jni_compiler_ = FindFunction<JniCompilerFn>(compiler_so_name, compiler_library_, "ArtJniCompileMethod");
create_invoke_stub_ = FindFunction<CreateInvokeStubFn>(compiler_so_name, compiler_library_, "ArtCreateInvokeStub");
@@ -1397,17 +1409,25 @@
#if defined(ART_USE_LLVM_COMPILER)
void Compiler::SetElfFileName(std::string const& filename) {
- elf_filename_ = filename;
+ typedef void (*SetElfFileNameFn)(Compiler&, std::string const&);
+
+ SetElfFileNameFn set_elf_file_name =
+ FindFunction<SetElfFileNameFn>(MakeCompilerSoName(instruction_set_),
+ compiler_library_,
+ "compilerLLVMSetElfFileName");
+
+ set_elf_file_name(*this, filename);
}
void Compiler::SetBitcodeFileName(std::string const& filename) {
- bitcode_filename_ = filename;
-}
-std::string const& Compiler::GetElfFileName() {
- return elf_filename_;
-}
-std::string const& Compiler::GetBitcodeFileName() {
- return bitcode_filename_;
+ typedef void (*SetBitcodeFileNameFn)(Compiler&, std::string const&);
+
+ SetBitcodeFileNameFn set_bitcode_file_name =
+ FindFunction<SetBitcodeFileNameFn>(MakeCompilerSoName(instruction_set_),
+ compiler_library_,
+ "compilerLLVMSetBitcodeFileName");
+
+ set_bitcode_file_name(*this, filename);
}
#endif