diff options
| author | 2012-02-29 17:17:18 -0800 | |
|---|---|---|
| committer | 2012-02-29 17:17:18 -0800 | |
| commit | 32c9a2decebe7b736e1f05b53b5822affea5e81d (patch) | |
| tree | 7f08328399bb7a49c410b4e8f444d18a0c6091ff /src/compiler_llvm/compiler_llvm.h | |
| parent | b97616cbf8dac617658ec418d51072e14cee19e9 (diff) | |
| parent | 8b977d38483aaa08abcbdaa5fa888076c1142169 (diff) | |
Merge "Compile llvm.Module into ELF object file." into dalvik-dev
Diffstat (limited to 'src/compiler_llvm/compiler_llvm.h')
| -rw-r--r-- | src/compiler_llvm/compiler_llvm.h | 31 |
1 files changed, 17 insertions, 14 deletions
diff --git a/src/compiler_llvm/compiler_llvm.h b/src/compiler_llvm/compiler_llvm.h index 29d32a54bf..208edfcd22 100644 --- a/src/compiler_llvm/compiler_llvm.h +++ b/src/compiler_llvm/compiler_llvm.h @@ -47,6 +47,7 @@ namespace llvm { namespace art { namespace compiler_llvm { +class CompilationUnit; class IRBuilder; class CompilerLLVM { @@ -55,9 +56,7 @@ class CompilerLLVM { ~CompilerLLVM(); - void MaterializeLLVMModule(); - - void WriteBitcodeToFile(std::string const &filename); + void MaterializeEveryCompilationUnit(); Compiler* GetCompiler() const { return compiler_; @@ -67,16 +66,12 @@ class CompilerLLVM { return insn_set_; } - llvm::Module* GetModule() const { - return module_; - } - - llvm::LLVMContext* GetLLVMContext() const { - return context_.get(); + void SetElfFileName(std::string const& filename) { + elf_filename_ = filename; } - IRBuilder* GetIRBuilder() const { - return irb_.get(); + void SetBitcodeFileName(std::string const& filename) { + bitcode_filename_ = filename; } CompiledMethod* CompileDexMethod(OatCompilationUnit* oat_compilation_unit); @@ -86,17 +81,25 @@ class CompilerLLVM { CompiledInvokeStub* CreateInvokeStub(bool is_static, char const *shorty); private: + void EnsureCompilationUnit(); + + void MaterializeCompilationUnit(); + + void MaterializeCompilationUnitSafePoint(); + Compiler* compiler_; Mutex compiler_lock_; InstructionSet insn_set_; - UniquePtr<llvm::LLVMContext> context_; + UniquePtr<CompilationUnit> cunit_; + + unsigned cunit_counter_; - UniquePtr<IRBuilder> irb_; + std::string elf_filename_; - llvm::Module* module_; + std::string bitcode_filename_; DISALLOW_COPY_AND_ASSIGN(CompilerLLVM); }; |