Revert "If generating an image, run initialization and other optimizations."
This reverts commit ada8536c19e57cbfe55dcb3c72aa95e79365ed21.
Reason for revert: test failures
Change-Id: I8640fe842d7f2255b5749403c798094f9e365fda
diff --git a/compiler/driver/compiler_options.h b/compiler/driver/compiler_options.h
index 79ba1c2..747205e 100644
--- a/compiler/driver/compiler_options.h
+++ b/compiler/driver/compiler_options.h
@@ -195,10 +195,6 @@
return implicit_suspend_checks_;
}
- bool IsGeneratingImage() const {
- return IsBootImage() || IsBootImageExtension() || IsAppImage();
- }
-
// Are we compiling a boot image?
bool IsBootImage() const {
return image_type_ == ImageType::kBootImage;
diff --git a/dex2oat/driver/compiler_driver.cc b/dex2oat/driver/compiler_driver.cc
index 7707ab6..6792a59 100644
--- a/dex2oat/driver/compiler_driver.cc
+++ b/dex2oat/driver/compiler_driver.cc
@@ -887,56 +887,55 @@
if (compiler_options_->AssumeClassesAreVerified()) {
VLOG(compiler) << "Verify none mode specified, skipping verification.";
SetVerified(class_loader, dex_files, timings);
- } else if (compiler_options_->IsVerificationEnabled()) {
- Verify(class_loader, dex_files, timings, verification_results);
- VLOG(compiler) << "Verify: " << GetMemoryUsageString(false);
-
- if (GetCompilerOptions().IsForceDeterminism() &&
- (GetCompilerOptions().IsBootImage() || GetCompilerOptions().IsBootImageExtension())) {
- // Resolve strings from const-string. Do this now to have a deterministic image.
- ResolveConstStrings(dex_files, /*only_startup_strings=*/ false, timings);
- VLOG(compiler) << "Resolve const-strings: " << GetMemoryUsageString(false);
- } else if (GetCompilerOptions().ResolveStartupConstStrings()) {
- ResolveConstStrings(dex_files, /*only_startup_strings=*/ true, timings);
- }
-
- if (had_hard_verifier_failure_ && GetCompilerOptions().AbortOnHardVerifierFailure()) {
- // Avoid dumping threads. Even if we shut down the thread pools, there will still be three
- // instances of this thread's stack.
- LOG(FATAL_WITHOUT_ABORT) << "Had a hard failure verifying all classes, and was asked to abort "
- << "in such situations. Please check the log.";
- _exit(1);
- } else if (number_of_soft_verifier_failures_ > 0 &&
- GetCompilerOptions().AbortOnSoftVerifierFailure()) {
- LOG(FATAL_WITHOUT_ABORT) << "Had " << number_of_soft_verifier_failures_ << " soft failure(s) "
- << "verifying all classes, and was asked to abort in such situations. "
- << "Please check the log.";
- _exit(1);
- }
}
- if (GetCompilerOptions().IsGeneratingImage()) {
- // We can only initialize classes when their verification bit is set.
- if (compiler_options_->AssumeClassesAreVerified() ||
- compiler_options_->IsVerificationEnabled()) {
- if (kIsDebugBuild) {
- EnsureVerifiedOrVerifyAtRuntime(class_loader, dex_files);
- }
- InitializeClasses(class_loader, dex_files, timings);
- VLOG(compiler) << "InitializeClasses: " << GetMemoryUsageString(false);
- }
+ if (!compiler_options_->IsVerificationEnabled()) {
+ return;
+ }
- UpdateImageClasses(timings, image_classes);
- VLOG(compiler) << "UpdateImageClasses: " << GetMemoryUsageString(false);
+ Verify(class_loader, dex_files, timings, verification_results);
+ VLOG(compiler) << "Verify: " << GetMemoryUsageString(false);
- if (kBitstringSubtypeCheckEnabled &&
- GetCompilerOptions().IsForceDeterminism() && GetCompilerOptions().IsBootImage()) {
- // Initialize type check bit string used by check-cast and instanceof.
- // Do this now to have a deterministic image.
- // Note: This is done after UpdateImageClasses() at it relies on the image
- // classes to be final.
- InitializeTypeCheckBitstrings(this, dex_files, timings);
+ if (GetCompilerOptions().IsForceDeterminism() &&
+ (GetCompilerOptions().IsBootImage() || GetCompilerOptions().IsBootImageExtension())) {
+ // Resolve strings from const-string. Do this now to have a deterministic image.
+ ResolveConstStrings(dex_files, /*only_startup_strings=*/ false, timings);
+ VLOG(compiler) << "Resolve const-strings: " << GetMemoryUsageString(false);
+ } else if (GetCompilerOptions().ResolveStartupConstStrings()) {
+ ResolveConstStrings(dex_files, /*only_startup_strings=*/ true, timings);
+ }
+
+ if (had_hard_verifier_failure_ && GetCompilerOptions().AbortOnHardVerifierFailure()) {
+ // Avoid dumping threads. Even if we shut down the thread pools, there will still be three
+ // instances of this thread's stack.
+ LOG(FATAL_WITHOUT_ABORT) << "Had a hard failure verifying all classes, and was asked to abort "
+ << "in such situations. Please check the log.";
+ _exit(1);
+ } else if (number_of_soft_verifier_failures_ > 0 &&
+ GetCompilerOptions().AbortOnSoftVerifierFailure()) {
+ LOG(FATAL_WITHOUT_ABORT) << "Had " << number_of_soft_verifier_failures_ << " soft failure(s) "
+ << "verifying all classes, and was asked to abort in such situations. "
+ << "Please check the log.";
+ _exit(1);
+ }
+
+ if (compiler_options_->IsAnyCompilationEnabled()) {
+ if (kIsDebugBuild) {
+ EnsureVerifiedOrVerifyAtRuntime(class_loader, dex_files);
}
+ InitializeClasses(class_loader, dex_files, timings);
+ VLOG(compiler) << "InitializeClasses: " << GetMemoryUsageString(false);
+ }
+
+ UpdateImageClasses(timings, image_classes);
+ VLOG(compiler) << "UpdateImageClasses: " << GetMemoryUsageString(false);
+
+ if (kBitstringSubtypeCheckEnabled &&
+ GetCompilerOptions().IsForceDeterminism() && GetCompilerOptions().IsBootImage()) {
+ // Initialize type check bit string used by check-cast and instanceof.
+ // Do this now to have a deterministic image.
+ // Note: This is done after UpdateImageClasses() at it relies on the image classes to be final.
+ InitializeTypeCheckBitstrings(this, dex_files, timings);
}
}
diff --git a/dex2oat/driver/compiler_driver_test.cc b/dex2oat/driver/compiler_driver_test.cc
index 50cb292..0a9702b 100644
--- a/dex2oat/driver/compiler_driver_test.cc
+++ b/dex2oat/driver/compiler_driver_test.cc
@@ -308,7 +308,7 @@
bool found = compiler_driver_->GetCompiledClass(
ClassReference(&klass->GetDexFile(), klass->GetDexTypeIndex().index_), &status);
ASSERT_TRUE(found);
- EXPECT_GE(status, ClassStatus::kVerified);
+ EXPECT_EQ(status, ClassStatus::kVerified);
}
};