diff options
author | Mathieu Chartier <mathieuc@google.com> | 2015-01-29 01:17:10 +0000 |
---|---|---|
committer | Gerrit Code Review <noreply-gerritcodereview@google.com> | 2015-01-29 01:17:11 +0000 |
commit | 4a50662eeaa0b1a26be66e7584fb765151dabc59 (patch) | |
tree | 0f298a17285fd845303472e2c27ccd69f586feac /compiler/dex/quick/quick_compiler.h | |
parent | f08c6506858ff06d61c8f7ca2741409cd62142f5 (diff) | |
parent | 5bdab12d8b48ca4c395d9d2c506ebff0df01b734 (diff) | |
download | art-4a50662eeaa0b1a26be66e7584fb765151dabc59.tar.gz art-4a50662eeaa0b1a26be66e7584fb765151dabc59.tar.bz2 art-4a50662eeaa0b1a26be66e7584fb765151dabc59.zip |
Merge "Clean up pass driver"
Diffstat (limited to 'compiler/dex/quick/quick_compiler.h')
-rw-r--r-- | compiler/dex/quick/quick_compiler.h | 60 |
1 files changed, 59 insertions, 1 deletions
diff --git a/compiler/dex/quick/quick_compiler.h b/compiler/dex/quick/quick_compiler.h index 10de5fbca4..5153a9e82e 100644 --- a/compiler/dex/quick/quick_compiler.h +++ b/compiler/dex/quick/quick_compiler.h @@ -17,12 +17,70 @@ #ifndef ART_COMPILER_DEX_QUICK_QUICK_COMPILER_H_ #define ART_COMPILER_DEX_QUICK_QUICK_COMPILER_H_ +#include "compiler.h" + namespace art { class Compiler; class CompilerDriver; +class Mir2Lir; +class PassManager; + +class QuickCompiler : public Compiler { + public: + virtual ~QuickCompiler(); + + void Init() OVERRIDE; + + void UnInit() const OVERRIDE; + + bool CanCompileMethod(uint32_t method_idx, const DexFile& dex_file, CompilationUnit* cu) const + OVERRIDE; + + CompiledMethod* Compile(const DexFile::CodeItem* code_item, + uint32_t access_flags, + InvokeType invoke_type, + uint16_t class_def_idx, + uint32_t method_idx, + jobject class_loader, + const DexFile& dex_file) const OVERRIDE; + + CompiledMethod* JniCompile(uint32_t access_flags, + uint32_t method_idx, + const DexFile& dex_file) const OVERRIDE; + + uintptr_t GetEntryPointOf(mirror::ArtMethod* method) const OVERRIDE + SHARED_LOCKS_REQUIRED(Locks::mutator_lock_); + + 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 + OVERRIDE + SHARED_LOCKS_REQUIRED(Locks::mutator_lock_); + + Mir2Lir* GetCodeGenerator(CompilationUnit* cu, void* compilation_unit) const; + + void InitCompilationUnit(CompilationUnit& cu) const OVERRIDE; + + static Compiler* Create(CompilerDriver* driver); + + const PassManager* GetPreOptPassManager() const { + return pre_opt_pass_manager_.get(); + } + const PassManager* GetPostOptPassManager() const { + return post_opt_pass_manager_.get(); + } + + protected: + explicit QuickCompiler(CompilerDriver* driver); -Compiler* CreateQuickCompiler(CompilerDriver* driver); + private: + std::unique_ptr<PassManager> pre_opt_pass_manager_; + std::unique_ptr<PassManager> post_opt_pass_manager_; + DISALLOW_COPY_AND_ASSIGN(QuickCompiler); +}; } // namespace art |