diff options
Diffstat (limited to 'compiler/compiler.cc')
-rw-r--r-- | compiler/compiler.cc | 48 |
1 files changed, 29 insertions, 19 deletions
diff --git a/compiler/compiler.cc b/compiler/compiler.cc index 744bafa0fe..b9fcf5bab6 100644 --- a/compiler/compiler.cc +++ b/compiler/compiler.cc @@ -25,13 +25,24 @@ namespace art { #ifdef ART_SEA_IR_MODE -extern "C" art::CompiledMethod* SeaIrCompileMethod(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); +constexpr bool kCanUseSeaIR = true; +#else +constexpr bool kCanUseSeaIR = false; +#endif + +extern "C" art::CompiledMethod* SeaIrCompileMethod(const art::DexFile::CodeItem* code_item ATTRIBUTE_UNUSED, + uint32_t access_flags ATTRIBUTE_UNUSED, + art::InvokeType invoke_type ATTRIBUTE_UNUSED, + uint16_t class_def_idx ATTRIBUTE_UNUSED, + uint32_t method_idx ATTRIBUTE_UNUSED, + jobject class_loader ATTRIBUTE_UNUSED, + const art::DexFile& dex_file ATTRIBUTE_UNUSED) +#ifdef ART_SEA_IR_MODE +; // NOLINT(whitespace/semicolon) +#else +{ + UNREACHABLE(); +} #endif @@ -42,19 +53,18 @@ CompiledMethod* Compiler::TryCompileWithSeaIR(const art::DexFile::CodeItem* code uint32_t method_idx, jobject class_loader, const art::DexFile& dex_file) { -#ifdef ART_SEA_IR_MODE - bool use_sea = (std::string::npos != PrettyMethod(method_idx, dex_file).find("fibonacci")); - if (use_sea) { - LOG(INFO) << "Using SEA IR to compile..." << std::endl; - return SeaIrCompileMethod(code_item, - access_flags, - invoke_type, - class_def_idx, - method_idx, - class_loader, - dex_file); + bool use_sea = kCanUseSeaIR && + (std::string::npos != PrettyMethod(method_idx, dex_file).find("fibonacci")); + if (use_sea) { + LOG(INFO) << "Using SEA IR to compile..." << std::endl; + return SeaIrCompileMethod(code_item, + access_flags, + invoke_type, + class_def_idx, + method_idx, + class_loader, + dex_file); } -#endif return nullptr; } |