diff options
Diffstat (limited to 'compiler/dex')
-rw-r--r-- | compiler/dex/quick/quick_compiler.cc | 13 | ||||
-rw-r--r-- | compiler/dex/quick/quick_compiler.h | 9 |
2 files changed, 22 insertions, 0 deletions
diff --git a/compiler/dex/quick/quick_compiler.cc b/compiler/dex/quick/quick_compiler.cc index 4469b51497..0e9d268681 100644 --- a/compiler/dex/quick/quick_compiler.cc +++ b/compiler/dex/quick/quick_compiler.cc @@ -59,8 +59,10 @@ static_assert(5U == static_cast<size_t>(kX86_64), "kX86_64 not 5"); static_assert(6U == static_cast<size_t>(kMips), "kMips not 6"); static_assert(7U == static_cast<size_t>(kMips64), "kMips64 not 7"); +#ifndef DISABLE_CAF_BAILOUT // check the pass status for early bail out thread_local bool check_bail_out; +#endif // Additional disabled optimizations (over generally disabled) per instruction set. static constexpr uint32_t kDisabledOptimizationsPerISA[] = { @@ -732,11 +734,19 @@ CompiledMethod* QuickCompiler::Compile(const DexFile::CodeItem* code_item, PassDriverMEOpts pass_driver(GetPreOptPassManager(), GetPostOptPassManager(), &cu); pass_driver.Launch(); +#ifndef DISABLE_CAF_BAILOUT if (check_bail_out && cu.mir_graph->PassFailed()) { +#else + if (GetCheckBailOutFlag() && cu.mir_graph->PassFailed()) { +#endif return nullptr; } +#ifndef DISABLE_CAF_BAILOUT if (check_bail_out) { +#else + if (GetCheckBailOutFlag()) { +#endif VLOG(compiler) << "fast compile applied to " << PrettyMethod(method_idx, dex_file); } @@ -868,6 +878,9 @@ QuickCompiler::QuickCompiler(CompilerDriver* driver) : Compiler(driver, 100) { if (pass_manager_options->GetPrintPassOptions()) { PassDriverMEPostOpt::PrintPassOptions(post_opt_pass_manager_.get()); } +#ifdef DISABLE_CAF_BAILOUT + check_bail_out_ = false; +#endif } QuickCompiler::~QuickCompiler() { diff --git a/compiler/dex/quick/quick_compiler.h b/compiler/dex/quick/quick_compiler.h index e545b55610..7d66901723 100644 --- a/compiler/dex/quick/quick_compiler.h +++ b/compiler/dex/quick/quick_compiler.h @@ -73,12 +73,21 @@ class QuickCompiler : public Compiler { bool CheckMoreConditions(CompilationUnit* cu) const QC_WEAK; +#ifdef DISABLE_CAF_BAILOUT + void SetCheckBailOutFlag() { check_bail_out_ = true; } + void ResetCheckBailOutFlag() { check_bail_out_ = false; } + bool GetCheckBailOutFlag() const { return check_bail_out_; } +#endif + protected: explicit QuickCompiler(CompilerDriver* driver); private: std::unique_ptr<PassManager> pre_opt_pass_manager_; std::unique_ptr<PassManager> post_opt_pass_manager_; +#ifdef DISABLE_CAF_BAILOUT + bool check_bail_out_; +#endif DISALLOW_COPY_AND_ASSIGN(QuickCompiler); }; |