summaryrefslogtreecommitdiffstats
path: root/compiler/optimizing/optimizing_compiler.cc
diff options
context:
space:
mode:
authorNicolas Geoffray <ngeoffray@google.com>2015-03-23 14:45:53 +0000
committerNicolas Geoffray <ngeoffray@google.com>2015-03-23 14:47:12 +0000
commit36540cb4d549c706cc7cd23086684f1548a91042 (patch)
tree2c96f65e657ea190e20bd311dab4ba0a35f4040e /compiler/optimizing/optimizing_compiler.cc
parent476448128d0ebf3328e96548de34f19bc55fa5c8 (diff)
downloadart-36540cb4d549c706cc7cd23086684f1548a91042.zip
art-36540cb4d549c706cc7cd23086684f1548a91042.tar.gz
art-36540cb4d549c706cc7cd23086684f1548a91042.tar.bz2
Implement a space filter for optimizing.
Heuristic-based. Currently only for enabling fugu user build. Change-Id: I76e652bd3f00ed84a2a8ad69c7c2c0e24d74cd68
Diffstat (limited to 'compiler/optimizing/optimizing_compiler.cc')
-rw-r--r--compiler/optimizing/optimizing_compiler.cc10
1 files changed, 10 insertions, 0 deletions
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,