diff options
Diffstat (limited to 'compiler/compiler.h')
| -rw-r--r-- | compiler/compiler.h | 49 |
1 files changed, 14 insertions, 35 deletions
diff --git a/compiler/compiler.h b/compiler/compiler.h index 4caebf32cd..e5d1aff08c 100644 --- a/compiler/compiler.h +++ b/compiler/compiler.h @@ -22,31 +22,29 @@ namespace art { +class ArtMethod; class Backend; struct CompilationUnit; class CompilerDriver; class CompiledMethod; -class MIRGraph; class OatWriter; -namespace mirror { - class ArtMethod; -} - class Compiler { public: enum Kind { kQuick, - kOptimizing, - kPortable + kOptimizing }; static Compiler* Create(CompilerDriver* driver, Kind kind); - virtual void Init() const = 0; + virtual void Init() = 0; virtual void UnInit() const = 0; + virtual bool CanCompileMethod(uint32_t method_idx, const DexFile& dex_file, CompilationUnit* cu) + const = 0; + virtual CompiledMethod* Compile(const DexFile::CodeItem* code_item, uint32_t access_flags, InvokeType invoke_type, @@ -55,43 +53,17 @@ class Compiler { jobject class_loader, const DexFile& dex_file) const = 0; - static CompiledMethod* TryCompileWithSeaIR(const art::DexFile::CodeItem* code_item, - uint32_t access_flags, - art::InvokeType invoke_type, - uint16_t class_def_idx, - uint32_t method_idx, - jobject class_loader, - const art::DexFile& dex_file); - virtual CompiledMethod* JniCompile(uint32_t access_flags, uint32_t method_idx, const DexFile& dex_file) const = 0; - virtual uintptr_t GetEntryPointOf(mirror::ArtMethod* method) const + virtual uintptr_t GetEntryPointOf(ArtMethod* method) const SHARED_LOCKS_REQUIRED(Locks::mutator_lock_) = 0; - virtual bool WriteElf(art::File* file, - OatWriter* oat_writer, - const std::vector<const art::DexFile*>& dex_files, - const std::string& android_root, - bool is_host) const - SHARED_LOCKS_REQUIRED(Locks::mutator_lock_) = 0; - - virtual Backend* GetCodeGenerator(CompilationUnit* cu, void* compilation_unit) const = 0; - uint64_t GetMaximumCompilationTimeBeforeWarning() const { return maximum_compilation_time_before_warning_; } - virtual bool IsPortable() const { - return false; - } - - void SetBitcodeFileName(const CompilerDriver& driver, const std::string& filename) { - UNUSED(driver); - UNUSED(filename); - } - virtual void InitCompilationUnit(CompilationUnit& cu) const = 0; virtual ~Compiler() {} @@ -106,9 +78,16 @@ class Compiler { */ virtual std::vector<uint8_t>* GetCallFrameInformationInitialization(const CompilerDriver& driver) const { + UNUSED(driver); return nullptr; } + // Returns whether the method to compile is such a pathological case that + // it's not worth compiling. + static bool IsPathologicalCase(const DexFile::CodeItem& code_item, + uint32_t method_idx, + const DexFile& dex_file); + protected: explicit Compiler(CompilerDriver* driver, uint64_t warning) : driver_(driver), maximum_compilation_time_before_warning_(warning) { |