From 8447d84d847d4562d7a7bce62768c27e7d20a9aa Mon Sep 17 00:00:00 2001 From: Anwar Ghuloum Date: Tue, 30 Apr 2013 17:27:40 -0700 Subject: 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 --- src/compiler/driver/compiler_driver.cc | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) (limited to 'src/compiler/driver/compiler_driver.cc') 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* 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) { -- cgit v1.2.3-59-g8ed1b