diff options
author | Ian Rogers <irogers@google.com> | 2014-05-06 16:20:11 -0700 |
---|---|---|
committer | Ian Rogers <irogers@google.com> | 2014-05-06 16:23:19 -0700 |
commit | 72d32629303f8f39362a4099481f48646aed042f (patch) | |
tree | 0ff613168c3bf2e12799594c9211f9a1694119e2 /compiler/compilers.cc | |
parent | 47ebd77a6d249403a34d242908749b7446da2a82 (diff) | |
download | art-72d32629303f8f39362a4099481f48646aed042f.tar.gz art-72d32629303f8f39362a4099481f48646aed042f.tar.bz2 art-72d32629303f8f39362a4099481f48646aed042f.zip |
Give Compiler a back reference to the driver.
The compiler driver is a single object delegating work to the compiler, rather
than passing it through to every Compiler call make it a member of Compiler so
that it maybe queried. This simplifies the Compiler API and makes the
relationship to CompilerDriver more explicit.
Remove reference arguments that contravene code style.
Change-Id: Iba47f2e3cbda679a7ec7588f26188d77643aa2c6
Diffstat (limited to 'compiler/compilers.cc')
-rw-r--r-- | compiler/compilers.cc | 75 |
1 files changed, 37 insertions, 38 deletions
diff --git a/compiler/compilers.cc b/compiler/compilers.cc index 1237e7019a..188ce6ff62 100644 --- a/compiler/compilers.cc +++ b/compiler/compilers.cc @@ -22,9 +22,9 @@ namespace art { -extern "C" void ArtInitQuickCompilerContext(art::CompilerDriver& driver); -extern "C" void ArtUnInitQuickCompilerContext(art::CompilerDriver& driver); -extern "C" art::CompiledMethod* ArtQuickCompileMethod(art::CompilerDriver& driver, +extern "C" void ArtInitQuickCompilerContext(art::CompilerDriver* driver); +extern "C" void ArtUnInitQuickCompilerContext(art::CompilerDriver* driver); +extern "C" art::CompiledMethod* ArtQuickCompileMethod(art::CompilerDriver* driver, const art::DexFile::CodeItem* code_item, uint32_t access_flags, art::InvokeType invoke_type, @@ -33,40 +33,40 @@ extern "C" art::CompiledMethod* ArtQuickCompileMethod(art::CompilerDriver& drive jobject class_loader, const art::DexFile& dex_file); -extern "C" art::CompiledMethod* ArtQuickJniCompileMethod(art::CompilerDriver& driver, +extern "C" art::CompiledMethod* ArtQuickJniCompileMethod(art::CompilerDriver* driver, uint32_t access_flags, uint32_t method_idx, const art::DexFile& dex_file); // Hack for CFI CIE initialization extern std::vector<uint8_t>* X86CFIInitialization(); -void QuickCompiler::Init(CompilerDriver& driver) const { - ArtInitQuickCompilerContext(driver); +void QuickCompiler::Init() const { + ArtInitQuickCompilerContext(GetCompilerDriver()); } -void QuickCompiler::UnInit(CompilerDriver& driver) const { - ArtUnInitQuickCompilerContext(driver); +void QuickCompiler::UnInit() const { + ArtUnInitQuickCompilerContext(GetCompilerDriver()); } -CompiledMethod* QuickCompiler::Compile(CompilerDriver& driver, - 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 { - CompiledMethod* method = TryCompileWithSeaIR(driver, - code_item, +CompiledMethod* QuickCompiler::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 { + CompiledMethod* method = TryCompileWithSeaIR(code_item, access_flags, invoke_type, class_def_idx, method_idx, class_loader, dex_file); - if (method != nullptr) return method; + if (method != nullptr) { + return method; + } - return ArtQuickCompileMethod(driver, + return ArtQuickCompileMethod(GetCompilerDriver(), code_item, access_flags, invoke_type, @@ -76,11 +76,10 @@ CompiledMethod* QuickCompiler::Compile(CompilerDriver& driver, dex_file); } -CompiledMethod* QuickCompiler::JniCompile(CompilerDriver& driver, - uint32_t access_flags, +CompiledMethod* QuickCompiler::JniCompile(uint32_t access_flags, uint32_t method_idx, const DexFile& dex_file) const { - return ArtQuickJniCompileMethod(driver, access_flags, method_idx, dex_file); + return ArtQuickJniCompileMethod(GetCompilerDriver(), access_flags, method_idx, dex_file); } uintptr_t QuickCompiler::GetEntryPointOf(mirror::ArtMethod* method) const { @@ -88,11 +87,12 @@ uintptr_t QuickCompiler::GetEntryPointOf(mirror::ArtMethod* method) const { } bool QuickCompiler::WriteElf(art::File* file, - OatWriter* oat_writer, - const std::vector<const art::DexFile*>& dex_files, - const std::string& android_root, - bool is_host, const CompilerDriver& driver) const { - return art::ElfWriterQuick::Create(file, oat_writer, dex_files, android_root, is_host, driver); + OatWriter* oat_writer, + const std::vector<const art::DexFile*>& dex_files, + const std::string& android_root, + bool is_host) const { + return art::ElfWriterQuick::Create(file, oat_writer, dex_files, android_root, is_host, + *GetCompilerDriver()); } Backend* QuickCompiler::GetCodeGenerator(CompilationUnit* cu, void* compilation_unit) const { @@ -134,22 +134,21 @@ std::vector<uint8_t>* QuickCompiler::GetCallFrameInformationInitialization( return nullptr; } -CompiledMethod* OptimizingCompiler::Compile(CompilerDriver& driver, - const DexFile::CodeItem* code_item, +CompiledMethod* OptimizingCompiler::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 { - CompiledMethod* method = TryCompile( - driver, code_item, access_flags, invoke_type, class_def_idx, method_idx, - class_loader, dex_file); - if (method != nullptr) return method; - - return QuickCompiler::Compile( - driver, code_item, access_flags, invoke_type, class_def_idx, method_idx, - class_loader, dex_file); + CompiledMethod* method = TryCompile(code_item, access_flags, invoke_type, class_def_idx, + method_idx, class_loader, dex_file); + if (method != nullptr) { + return method; + } + + return QuickCompiler::Compile(code_item, access_flags, invoke_type, class_def_idx, method_idx, + class_loader, dex_file); } } // namespace art |