Cleanup LLVM code generation code.
Materialize the bitcode in the end of CompileClass,
so that the code generation time won't be calculated
in method compilation time.
Change-Id: I1e2bd0b23bcb5c55bd966a31b1df0b8b34922f94
diff --git a/src/compiler_llvm/compiler_llvm.h b/src/compiler_llvm/compiler_llvm.h
index 208edfc..3c653a3 100644
--- a/src/compiler_llvm/compiler_llvm.h
+++ b/src/compiler_llvm/compiler_llvm.h
@@ -56,7 +56,9 @@
~CompilerLLVM();
- void MaterializeEveryCompilationUnit();
+ void MaterializeIfThresholdReached();
+
+ void MaterializeRemainder();
Compiler* GetCompiler() const {
return compiler_;
@@ -81,21 +83,25 @@
CompiledInvokeStub* CreateInvokeStub(bool is_static, char const *shorty);
private:
- void EnsureCompilationUnit();
+ void EnsureCompilationUnit(MutexLock& GUARD);
- void MaterializeCompilationUnit();
+ void Materialize(MutexLock& GUARD);
- void MaterializeCompilationUnitSafePoint();
+ bool IsBitcodeFileNameAvailable() const {
+ return !bitcode_filename_.empty();
+ }
Compiler* compiler_;
+ public:
Mutex compiler_lock_;
+ private:
InstructionSet insn_set_;
- UniquePtr<CompilationUnit> cunit_;
+ CompilationUnit* curr_cunit_;
- unsigned cunit_counter_;
+ std::vector<CompilationUnit*> cunits_;
std::string elf_filename_;