diff options
author | Jeff Hao <jeffhao@google.com> | 2014-04-01 14:58:49 -0700 |
---|---|---|
committer | Jeff Hao <jeffhao@google.com> | 2014-04-02 17:18:13 -0700 |
commit | 4a200f56b7075309316b04d550c9cc50f8314edd (patch) | |
tree | 0c01f484239203eeeb9f8e5f97300bca09b051ad /compiler/driver | |
parent | d0ab1223cc8c5181e502196a7765790ad2aba3c8 (diff) | |
download | art-4a200f56b7075309316b04d550c9cc50f8314edd.tar.gz art-4a200f56b7075309316b04d550c9cc50f8314edd.tar.bz2 art-4a200f56b7075309316b04d550c9cc50f8314edd.zip |
Add support for -Xverify:none mode.
This mode skips all verification and compilation.
Public bug: https://code.google.com/p/android/issues/detail?id=67664
Change-Id: Idd00ab8e9e46d129c02988b063c41a507e07bf5b
Diffstat (limited to 'compiler/driver')
-rw-r--r-- | compiler/driver/compiler_driver.cc | 7 | ||||
-rw-r--r-- | compiler/driver/compiler_options.h | 12 |
2 files changed, 17 insertions, 2 deletions
diff --git a/compiler/driver/compiler_driver.cc b/compiler/driver/compiler_driver.cc index c10dd8422..a120d054c 100644 --- a/compiler/driver/compiler_driver.cc +++ b/compiler/driver/compiler_driver.cc @@ -598,6 +598,11 @@ void CompilerDriver::PreCompile(jobject class_loader, const std::vector<const De ThreadPool* thread_pool, TimingLogger* timings) { LoadImageClasses(timings); + if (!compiler_options_->IsVerificationEnabled()) { + VLOG(compiler) << "Verify none mode specified, skipping pre-compilation"; + return; + } + Resolve(class_loader, dex_files, thread_pool, timings); Verify(class_loader, dex_files, thread_pool, timings); @@ -1872,7 +1877,7 @@ void CompilerDriver::CompileMethod(const DexFile::CodeItem* code_item, uint32_t if ((access_flags & kAccNative) != 0) { // Are we interpreting only and have support for generic JNI down calls? - if ((compiler_options_->GetCompilerFilter() == CompilerOptions::kInterpretOnly) && + if (!compiler_options_->IsCompilationEnabled() && (instruction_set_ == kX86_64 || instruction_set_ == kArm64)) { // Leaving this empty will trigger the generic JNI version } else { diff --git a/compiler/driver/compiler_options.h b/compiler/driver/compiler_options.h index 0cca1e970..20c6bc8e4 100644 --- a/compiler/driver/compiler_options.h +++ b/compiler/driver/compiler_options.h @@ -22,7 +22,8 @@ namespace art { class CompilerOptions { public: enum CompilerFilter { - kInterpretOnly, // Compile nothing. + kVerifyNone, // Skip verification and compile nothing except JNI stubs. + kInterpretOnly, // Compile nothing except JNI stubs. kProfiled, // Compile based on profile. kSpace, // Maximize space savings. kBalanced, // Try to get the best performance return on compilation investment. @@ -86,6 +87,15 @@ class CompilerOptions { compiler_filter_ = compiler_filter; } + bool IsCompilationEnabled() const { + return ((compiler_filter_ != CompilerOptions::kVerifyNone) && + (compiler_filter_ != CompilerOptions::kInterpretOnly)); + } + + bool IsVerificationEnabled() const { + return (compiler_filter_ != CompilerOptions::kVerifyNone); + } + size_t GetHugeMethodThreshold() const { return huge_method_threshold_; } |