summaryrefslogtreecommitdiff
path: root/src/compiler_llvm/compiler_llvm.h
diff options
context:
space:
mode:
author Shih-wei Liao <sliao@google.com> 2012-02-29 17:17:18 -0800
committer Android (Google) Code Review <android-gerrit@google.com> 2012-02-29 17:17:18 -0800
commit32c9a2decebe7b736e1f05b53b5822affea5e81d (patch)
tree7f08328399bb7a49c410b4e8f444d18a0c6091ff /src/compiler_llvm/compiler_llvm.h
parentb97616cbf8dac617658ec418d51072e14cee19e9 (diff)
parent8b977d38483aaa08abcbdaa5fa888076c1142169 (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.h31
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);
};