diff options
Diffstat (limited to 'compiler')
-rw-r--r-- | compiler/common_compiler_test.cc | 11 | ||||
-rw-r--r-- | compiler/common_compiler_test.h | 5 | ||||
-rw-r--r-- | compiler/compiler.cc | 15 | ||||
-rw-r--r-- | compiler/compiler.h | 8 | ||||
-rw-r--r-- | compiler/jit/jit_compiler.cc | 3 |
5 files changed, 37 insertions, 5 deletions
diff --git a/compiler/common_compiler_test.cc b/compiler/common_compiler_test.cc index 8c05888215..d2cf3aef3c 100644 --- a/compiler/common_compiler_test.cc +++ b/compiler/common_compiler_test.cc @@ -255,6 +255,14 @@ void CommonCompilerTestImpl::SetUpRuntimeOptionsImpl() { ApplyInstructionSet(); } +Compiler::Kind CommonCompilerTestImpl::GetCompilerKind() const { + return compiler_kind_; +} + +void CommonCompilerTestImpl::SetCompilerKind(Compiler::Kind compiler_kind) { + compiler_kind_ = compiler_kind; +} + void CommonCompilerTestImpl::TearDown() { code_and_metadata_.clear(); compiler_options_.reset(); @@ -270,7 +278,8 @@ void CommonCompilerTestImpl::CompileMethod(ArtMethod* method) { DCHECK(!Runtime::Current()->IsStarted()); Thread* self = Thread::Current(); StackHandleScope<2> hs(self); - std::unique_ptr<Compiler> compiler(Compiler::Create(*compiler_options_, &storage)); + std::unique_ptr<Compiler> compiler( + Compiler::Create(*compiler_options_, &storage, compiler_kind_)); const DexFile& dex_file = *method->GetDexFile(); Handle<mirror::DexCache> dex_cache = hs.NewHandle(GetClassLinker()->FindDexCache(self, dex_file)); diff --git a/compiler/common_compiler_test.h b/compiler/common_compiler_test.h index 30d5734ba3..89f3fb40ad 100644 --- a/compiler/common_compiler_test.h +++ b/compiler/common_compiler_test.h @@ -60,6 +60,9 @@ class EXPORT CommonCompilerTestImpl { void SetUpRuntimeOptionsImpl(); + Compiler::Kind GetCompilerKind() const; + void SetCompilerKind(Compiler::Kind compiler_kind); + virtual CompilerFilter::Filter GetCompilerFilter() const { return CompilerFilter::kDefaultCompilerFilter; } @@ -73,6 +76,8 @@ class EXPORT CommonCompilerTestImpl { void ClearBootImageOption(); + Compiler::Kind compiler_kind_ = Compiler::kOptimizing; + InstructionSet instruction_set_ = (kRuntimeISA == InstructionSet::kArm) ? InstructionSet::kThumb2 : kRuntimeISA; // Take the default set of instruction features from the build. diff --git a/compiler/compiler.cc b/compiler/compiler.cc index 9cbd65d89d..0e040ac54a 100644 --- a/compiler/compiler.cc +++ b/compiler/compiler.cc @@ -27,11 +27,22 @@ namespace art HIDDEN { -Compiler* Compiler::Create(const CompilerOptions& compiler_options, CompiledCodeStorage* storage) { +Compiler* Compiler::Create(const CompilerOptions& compiler_options, + CompiledCodeStorage* storage, + Compiler::Kind kind) { // Check that oat version when runtime was compiled matches the oat version of the compiler. constexpr std::array<uint8_t, 4> compiler_oat_version = OatHeader::kOatVersion; OatHeader::CheckOatVersion(compiler_oat_version); - return CreateOptimizingCompiler(compiler_options, storage); + switch (kind) { + case kQuick: + // TODO: Remove Quick in options. + case kOptimizing: + return CreateOptimizingCompiler(compiler_options, storage); + + default: + LOG(FATAL) << "UNREACHABLE"; + UNREACHABLE(); + } } bool Compiler::IsPathologicalCase(const dex::CodeItem& code_item, diff --git a/compiler/compiler.h b/compiler/compiler.h index 843bbbb083..6c317f7e02 100644 --- a/compiler/compiler.h +++ b/compiler/compiler.h @@ -48,8 +48,14 @@ class Thread; class Compiler { public: + enum Kind { + kQuick, + kOptimizing + }; + EXPORT static Compiler* Create(const CompilerOptions& compiler_options, - CompiledCodeStorage* storage); + CompiledCodeStorage* storage, + Kind kind); virtual bool CanCompileMethod(uint32_t method_idx, const DexFile& dex_file) const = 0; diff --git a/compiler/jit/jit_compiler.cc b/compiler/jit/jit_compiler.cc index 051368cc8a..c14d5d37e8 100644 --- a/compiler/jit/jit_compiler.cc +++ b/compiler/jit/jit_compiler.cc @@ -165,7 +165,8 @@ std::vector<uint8_t> JitCompiler::PackElfFileForJIT(ArrayRef<const JITCodeEntry* JitCompiler::JitCompiler() { compiler_options_.reset(new CompilerOptions()); ParseCompilerOptions(); - compiler_.reset(Compiler::Create(*compiler_options_, /*storage=*/ nullptr)); + compiler_.reset( + Compiler::Create(*compiler_options_, /*storage=*/ nullptr, Compiler::kOptimizing)); } JitCompiler::~JitCompiler() { |