diff options
author | Anwar Ghuloum <anwarg@google.com> | 2013-04-30 17:27:40 -0700 |
---|---|---|
committer | Anwar Ghuloum <anwarg@google.com> | 2013-04-30 20:32:59 -0700 |
commit | 8447d84d847d4562d7a7bce62768c27e7d20a9aa (patch) | |
tree | 46aad5bf1bc3d3ce28b24ef1fcc5463224083991 /src/compiler/driver/compiler_driver.cc | |
parent | 88fc036842eb3c48acd5d3b01e75b3012c996d90 (diff) | |
download | android_art-8447d84d847d4562d7a7bce62768c27e7d20a9aa.tar.gz android_art-8447d84d847d4562d7a7bce62768c27e7d20a9aa.tar.bz2 android_art-8447d84d847d4562d7a7bce62768c27e7d20a9aa.zip |
Compile filter for small applications and methods
Adds a filter per method and program size (in method count). Right now, options are treated
as runtime options...but we might want to change this and separate options for compilers and
runtime.
Change-Id: I8c3e925116119af8ffa95ff09f77bcfdd173767b
Diffstat (limited to 'src/compiler/driver/compiler_driver.cc')
-rw-r--r-- | src/compiler/driver/compiler_driver.cc | 10 |
1 files changed, 6 insertions, 4 deletions
diff --git a/src/compiler/driver/compiler_driver.cc b/src/compiler/driver/compiler_driver.cc index 1660914ce3..3075a54988 100644 --- a/src/compiler/driver/compiler_driver.cc +++ b/src/compiler/driver/compiler_driver.cc @@ -283,7 +283,7 @@ static Fn FindFunction(const std::string& compiler_so_name, void* library, const } CompilerDriver::CompilerDriver(CompilerBackend compiler_backend, InstructionSet instruction_set, - bool image, size_t thread_count, bool support_debugging, bool light_mode, + bool image, size_t thread_count, bool support_debugging, const std::set<std::string>* image_classes, bool dump_stats, bool dump_timings) : compiler_backend_(compiler_backend), @@ -294,7 +294,6 @@ CompilerDriver::CompilerDriver(CompilerBackend compiler_backend, InstructionSet image_(image), thread_count_(thread_count), support_debugging_(support_debugging), - light_mode_(light_mode), start_ns_(0), stats_(new AOTCompilationStats), dump_stats_(dump_stats), @@ -1566,12 +1565,15 @@ void CompilerDriver::CompileMethod(const DexFile::CodeItem* code_item, uint32_t CHECK(compiled_method != NULL); } else if ((access_flags & kAccAbstract) != 0) { } else { - // In light mode we only compile image classes. - bool dont_compile = light_mode_ && ((image_classes_ == NULL) || (image_classes_->size() == 0)); + // In small mode we only compile image classes. + bool dont_compile = Runtime::Current()->IsSmallMode() && ((image_classes_ == NULL) || (image_classes_->size() == 0)); // Don't compile class initializers, ever. if (((access_flags & kAccConstructor) != 0) && ((access_flags & kAccStatic) != 0)) { dont_compile = true; + } else if (code_item->insns_size_in_code_units_ < Runtime::Current()->GetSmallModeMethodDexSizeLimit()) { + // Do compile small methods. + dont_compile = false; } if (!dont_compile) { |