diff options
| author | 2017-01-27 00:25:51 +0000 | |
|---|---|---|
| committer | 2017-01-27 00:25:52 +0000 | |
| commit | 13970e4af1005bf466410c4deab7b0450f348674 (patch) | |
| tree | 63521f624ca477c00f841e65d9af4e76438ca35d /compiler/driver/compiler_driver.cc | |
| parent | 6f04628765d738b648c1f9bccdebd4b2704314cd (diff) | |
| parent | e40dd38c6ccd3c55138ed6ef216dec261150fd5e (diff) | |
Merge "Re-enable tests 934 & 935"
Diffstat (limited to 'compiler/driver/compiler_driver.cc')
| -rw-r--r-- | compiler/driver/compiler_driver.cc | 8 |
1 files changed, 7 insertions, 1 deletions
diff --git a/compiler/driver/compiler_driver.cc b/compiler/driver/compiler_driver.cc index bf065ee4ba..1d4eaf8c5a 100644 --- a/compiler/driver/compiler_driver.cc +++ b/compiler/driver/compiler_driver.cc @@ -529,9 +529,15 @@ static optimizer::DexToDexCompilationLevel GetDexToDexCompilationLevel( // We store the verification information in the class status in the oat file, which the linker // can validate (checksums) and use to skip load-time verification. It is thus safe to // optimize when a class has been fully verified before. + optimizer::DexToDexCompilationLevel max_level = optimizer::DexToDexCompilationLevel::kOptimize; + if (driver.GetCompilerOptions().GetDebuggable()) { + // We are debuggable so definitions of classes might be changed. We don't want to do any + // optimizations that could break that. + max_level = optimizer::DexToDexCompilationLevel::kRequired; + } if (klass->IsVerified()) { // Class is verified so we can enable DEX-to-DEX compilation for performance. - return optimizer::DexToDexCompilationLevel::kOptimize; + return max_level; } else if (klass->IsCompileTimeVerified()) { // Class verification has soft-failed. Anyway, ensure at least correctness. DCHECK_EQ(klass->GetStatus(), mirror::Class::kStatusRetryVerificationAtRuntime); |