From 36540cb4d549c706cc7cd23086684f1548a91042 Mon Sep 17 00:00:00 2001 From: Nicolas Geoffray Date: Mon, 23 Mar 2015 14:45:53 +0000 Subject: Implement a space filter for optimizing. Heuristic-based. Currently only for enabling fugu user build. Change-Id: I76e652bd3f00ed84a2a8ad69c7c2c0e24d74cd68 --- compiler/optimizing/optimizing_compiler.cc | 10 ++++++++++ 1 file changed, 10 insertions(+) (limited to 'compiler/optimizing/optimizing_compiler.cc') diff --git a/compiler/optimizing/optimizing_compiler.cc b/compiler/optimizing/optimizing_compiler.cc index b70f925..933a8a0 100644 --- a/compiler/optimizing/optimizing_compiler.cc +++ b/compiler/optimizing/optimizing_compiler.cc @@ -462,6 +462,16 @@ CompiledMethod* OptimizingCompiler::TryCompile(const DexFile::CodeItem* code_ite return nullptr; } + // Implementation of the space filter: do not compile a code item whose size in + // code units is bigger than 256. + static constexpr size_t kSpaceFilterOptimizingThreshold = 256; + const CompilerOptions& compiler_options = compiler_driver->GetCompilerOptions(); + if ((compiler_options.GetCompilerFilter() == CompilerOptions::kSpace) + && (code_item->insns_size_in_code_units_ > kSpaceFilterOptimizingThreshold)) { + compilation_stats_.RecordStat(MethodCompilationStat::kNotCompiledSpaceFilter); + return nullptr; + } + DexCompilationUnit dex_compilation_unit( nullptr, class_loader, art::Runtime::Current()->GetClassLinker(), dex_file, code_item, class_def_idx, method_idx, access_flags, -- cgit v1.1