Compile method one-by-one.
Change-Id: Ic56fb397f3bd6dee32372eb875261a3383eaf30c
diff --git a/src/compiler_llvm/compiler_llvm.h b/src/compiler_llvm/compiler_llvm.h
index 7cc4a0e..24a766e 100644
--- a/src/compiler_llvm/compiler_llvm.h
+++ b/src/compiler_llvm/compiler_llvm.h
@@ -19,10 +19,10 @@
#include "compiler.h"
#include "dex_file.h"
-#include "elf_image.h"
#include "instruction_set.h"
#include "macros.h"
#include "object.h"
+#include "procedure_linkage_table.h"
#include <UniquePtr.h>
@@ -54,7 +54,6 @@
namespace compiler_llvm {
class CompilationUnit;
-class ElfLoader;
class IRBuilder;
class CompilerLLVM {
@@ -63,10 +62,6 @@
~CompilerLLVM();
- void MaterializeIfThresholdReached();
-
- void MaterializeRemainder();
-
Compiler* GetCompiler() const {
return compiler_;
}
@@ -75,31 +70,10 @@
return insn_set_;
}
- size_t GetNumCompilationUnits() const {
- return cunits_.size();
- }
-
- const CompilationUnit* GetCompilationUnit(size_t i) const {
- return cunits_[i];
- }
-
void SetBitcodeFileName(std::string const& filename) {
bitcode_filename_ = filename;
}
- void EnableAutoElfLoading();
-
- bool IsAutoElfLoadingEnabled() const {
- return (elf_loader_.get() != NULL);
- }
-
- const void* GetMethodCodeAddr(const CompiledMethod* cm) const;
-
- const Method::InvokeStub* GetMethodInvokeStubAddr(
- const CompiledInvokeStub* cm) const;
-
- std::vector<ElfImage> GetElfImages() const;
-
CompiledMethod* CompileDexMethod(OatCompilationUnit* oat_compilation_unit);
CompiledMethod* CompileNativeMethod(OatCompilationUnit* oat_compilation_unit);
@@ -108,32 +82,29 @@
CompiledInvokeStub* CreateProxyStub(const char *shorty);
+ const ProcedureLinkageTable& GetProcedureLinkageTable() const {
+ return plt_;
+ }
+
private:
- void EnsureCompilationUnit();
+ CompilationUnit* AllocateCompilationUnit();
void Materialize(CompilationUnit* cunit);
- void LoadElfFromCompilationUnit(const CompilationUnit* cunit);
-
bool IsBitcodeFileNameAvailable() const {
return !bitcode_filename_.empty();
}
Compiler* compiler_;
- public:
- Mutex compiler_lock_;
-
- private:
InstructionSet insn_set_;
- CompilationUnit* curr_cunit_;
-
- std::vector<CompilationUnit*> cunits_;
+ Mutex num_cunits_lock_;
+ size_t num_cunits_;
std::string bitcode_filename_;
- UniquePtr<ElfLoader> elf_loader_;
+ ProcedureLinkageTable plt_;
DISALLOW_COPY_AND_ASSIGN(CompilerLLVM);
};