diff options
author | Nicolas Geoffray <ngeoffray@google.com> | 2015-03-23 14:45:53 +0000 |
---|---|---|
committer | Nicolas Geoffray <ngeoffray@google.com> | 2015-03-23 14:47:12 +0000 |
commit | 36540cb4d549c706cc7cd23086684f1548a91042 (patch) | |
tree | 2c96f65e657ea190e20bd311dab4ba0a35f4040e | |
parent | 476448128d0ebf3328e96548de34f19bc55fa5c8 (diff) | |
download | android_art-36540cb4d549c706cc7cd23086684f1548a91042.tar.gz android_art-36540cb4d549c706cc7cd23086684f1548a91042.tar.bz2 android_art-36540cb4d549c706cc7cd23086684f1548a91042.zip |
Implement a space filter for optimizing.
Heuristic-based. Currently only for enabling fugu user build.
Change-Id: I76e652bd3f00ed84a2a8ad69c7c2c0e24d74cd68
-rw-r--r-- | compiler/optimizing/optimizing_compiler.cc | 10 | ||||
-rw-r--r-- | compiler/optimizing/optimizing_compiler_stats.h | 2 | ||||
-rw-r--r-- | dex2oat/dex2oat.cc | 1 |
3 files changed, 12 insertions, 1 deletions
diff --git a/compiler/optimizing/optimizing_compiler.cc b/compiler/optimizing/optimizing_compiler.cc index b70f9252ae..933a8a005c 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, diff --git a/compiler/optimizing/optimizing_compiler_stats.h b/compiler/optimizing/optimizing_compiler_stats.h index 3ebf0f8cd2..22ec2a5167 100644 --- a/compiler/optimizing/optimizing_compiler_stats.h +++ b/compiler/optimizing/optimizing_compiler_stats.h @@ -38,6 +38,7 @@ enum MethodCompilationStat { kNotCompiledUnresolvedMethod, kNotCompiledUnresolvedField, kNotCompiledNonSequentialRegPair, + kNotCompiledSpaceFilter, kNotOptimizedTryCatch, kNotOptimizedDisabled, kNotCompiledCantAccesType, @@ -96,6 +97,7 @@ class OptimizingCompilerStats { case kNotOptimizedDisabled : return "kNotOptimizedDisabled"; case kNotOptimizedTryCatch : return "kNotOptimizedTryCatch"; case kNotCompiledCantAccesType : return "kNotCompiledCantAccesType"; + case kNotCompiledSpaceFilter : return "kNotCompiledSpaceFilter"; case kNotOptimizedRegisterAllocator : return "kNotOptimizedRegisterAllocator"; case kNotCompiledUnhandledInstruction : return "kNotCompiledUnhandledInstruction"; case kRemovedCheckedCast: return "kRemovedCheckedCast"; diff --git a/dex2oat/dex2oat.cc b/dex2oat/dex2oat.cc index 44b07e2ad5..45d90aa44d 100644 --- a/dex2oat/dex2oat.cc +++ b/dex2oat/dex2oat.cc @@ -614,7 +614,6 @@ class Dex2Oat FINAL { Usage("Unknown compiler backend: %s", backend_str.data()); } } else if (option.starts_with("--compiler-filter=")) { - requested_specific_compiler = true; compiler_filter_string = option.substr(strlen("--compiler-filter=")).data(); } else if (option == "--compile-pic") { compile_pic = true; |