Deprecate the extract compiler filter.

For now make it an alias to verify.

Test: test.py
Bug: 237380287
Change-Id: Ib6cb2037d24bb895b77a870e8aebe76764b53e3d
diff --git a/compiler/driver/compiler_options.h b/compiler/driver/compiler_options.h
index 1cc9f2d..74d081d 100644
--- a/compiler/driver/compiler_options.h
+++ b/compiler/driver/compiler_options.h
@@ -114,10 +114,6 @@
     return compiler_filter_ == CompilerFilter::kAssumeVerified;
   }
 
-  bool VerifyAtRuntime() const {
-    return compiler_filter_ == CompilerFilter::kExtract;
-  }
-
   bool IsAnyCompilationEnabled() const {
     return CompilerFilter::IsAnyCompilationEnabled(compiler_filter_);
   }
diff --git a/dex2oat/dex2oat.cc b/dex2oat/dex2oat.cc
index 51a3689..a0b860f 100644
--- a/dex2oat/dex2oat.cc
+++ b/dex2oat/dex2oat.cc
@@ -1840,7 +1840,7 @@
     // 2. not verifying a vdex file, and
     // 3. using multidex, and
     // 4. not doing any AOT compilation.
-    // This means extract, no-vdex verify, and quicken, will use the individual compilation
+    // This means no-vdex verify will use the individual compilation
     // mode (to reduce RAM used by the compiler).
     return compile_individually_ &&
            (!IsImage() && !use_existing_vdex_ &&
@@ -1934,9 +1934,7 @@
 
     const bool compile_individually = ShouldCompileDexFilesIndividually();
     if (compile_individually) {
-      // Set the compiler driver in the callbacks so that we can avoid re-verification. This not
-      // only helps performance but also prevents reverifying quickened bytecodes. Attempting
-      // verify quickened bytecode causes verification failures.
+      // Set the compiler driver in the callbacks so that we can avoid re-verification.
       // Only set the compiler filter if we are doing separate compilation since there is a bit
       // of overhead when checking if a class was previously verified.
       callbacks_->SetDoesClassUnloading(true, driver_.get());
diff --git a/dex2oat/dex2oat_test.cc b/dex2oat/dex2oat_test.cc
index fd321e4..e444071 100644
--- a/dex2oat/dex2oat_test.cc
+++ b/dex2oat/dex2oat_test.cc
@@ -479,7 +479,6 @@
     CheckResult(dex_location,
                 odex_location,
                 app_image_file,
-                filter,
                 expected_filter,
                 expect_large,
                 expect_downgrade);
@@ -488,7 +487,6 @@
   void CheckResult(const std::string& dex_location,
                    const std::string& odex_location,
                    const std::string& app_image_file,
-                   CompilerFilter::Filter filter,
                    CompilerFilter::Filter expected_filter,
                    bool expect_large,
                    bool expect_downgrade) {
@@ -526,9 +524,7 @@
       }
 
       // If the input filter was "below," it should have been used.
-      if (!CompilerFilter::IsAsGoodAs(CompilerFilter::kExtract, filter)) {
-        EXPECT_EQ(odex_file->GetCompilerFilter(), expected_filter);
-      }
+      EXPECT_EQ(odex_file->GetCompilerFilter(), expected_filter);
 
       // If expect large, make sure the app image isn't generated or is empty.
       if (file != nullptr) {
@@ -583,17 +579,14 @@
 
 TEST_F(Dex2oatVeryLargeTest, DontUseVeryLarge) {
   RunTest(CompilerFilter::kAssumeVerified, false, false);
-  RunTest(CompilerFilter::kExtract, false, false);
   RunTest(CompilerFilter::kSpeed, false, false);
 
   RunTest(CompilerFilter::kAssumeVerified, false, false, { "--very-large-app-threshold=10000000" });
-  RunTest(CompilerFilter::kExtract, false, false, { "--very-large-app-threshold=10000000" });
   RunTest(CompilerFilter::kSpeed, false, false, { "--very-large-app-threshold=10000000" });
 }
 
 TEST_F(Dex2oatVeryLargeTest, UseVeryLarge) {
   RunTest(CompilerFilter::kAssumeVerified, true, false, { "--very-large-app-threshold=100" });
-  RunTest(CompilerFilter::kExtract, true, false, { "--very-large-app-threshold=100" });
   RunTest(CompilerFilter::kSpeed, true, true, { "--very-large-app-threshold=100" });
 }
 
diff --git a/dexoptanalyzer/dexoptanalyzer_test.cc b/dexoptanalyzer/dexoptanalyzer_test.cc
index 7abd4ba..b6b26db 100644
--- a/dexoptanalyzer/dexoptanalyzer_test.cc
+++ b/dexoptanalyzer/dexoptanalyzer_test.cc
@@ -118,7 +118,6 @@
   Copy(GetDexSrc1(), dex_location);
 
   Verify(dex_location, CompilerFilter::kSpeed);
-  Verify(dex_location, CompilerFilter::kExtract);
   Verify(dex_location, CompilerFilter::kVerify);
   Verify(dex_location, CompilerFilter::kSpeedProfile);
   Verify(dex_location, CompilerFilter::kSpeed,
@@ -134,7 +133,6 @@
 
   Verify(dex_location, CompilerFilter::kSpeed);
   Verify(dex_location, CompilerFilter::kVerify);
-  Verify(dex_location, CompilerFilter::kExtract);
   Verify(dex_location, CompilerFilter::kEverything);
   Verify(dex_location, CompilerFilter::kSpeed,
       ProfileAnalysisResult::kDontOptimizeSmallDelta, false, nullptr);
@@ -194,8 +192,6 @@
       ProfileAnalysisResult::kDontOptimizeSmallDelta, true);
   Verify(dex_location, CompilerFilter::kVerify,
       ProfileAnalysisResult::kDontOptimizeSmallDelta, true);
-  Verify(dex_location, CompilerFilter::kExtract,
-      ProfileAnalysisResult::kDontOptimizeSmallDelta, true);
 }
 
 // Case: We have a MultiDEX file and up-to-date ODEX file for it.
@@ -237,7 +233,6 @@
   GenerateOdexForTest(dex_location.c_str(), odex_location.c_str(), CompilerFilter::kSpeed);
   Copy(GetDexSrc2(), dex_location);
 
-  Verify(dex_location, CompilerFilter::kExtract);
   Verify(dex_location, CompilerFilter::kSpeed);
 }
 
@@ -253,29 +248,10 @@
                      CompilerFilter::kSpeed,
                      /*with_alternate_image=*/true);
 
-  Verify(dex_location, CompilerFilter::kExtract);
   Verify(dex_location, CompilerFilter::kVerify);
   Verify(dex_location, CompilerFilter::kSpeed);
 }
 
-// Case: We have a DEX file and a verify-at-runtime OAT file out of date with
-// respect to the boot image.
-// It shouldn't matter that the OAT file is out of date, because it is
-// verify-at-runtime.
-TEST_F(DexoptAnalyzerTest, OatVerifyAtRuntimeImageOutOfDate) {
-  std::string dex_location = GetScratchDir() + "/OatVerifyAtRuntimeImageOutOfDate.jar";
-  std::string odex_location = GetOdexDir() + "/OatVerifyAtRuntimeImageOutOfDate.odex";
-
-  Copy(GetDexSrc1(), dex_location);
-  GenerateOatForTest(dex_location.c_str(),
-                     odex_location.c_str(),
-                     CompilerFilter::kExtract,
-                     /*with_alternate_image=*/true);
-
-  Verify(dex_location, CompilerFilter::kExtract);
-  Verify(dex_location, CompilerFilter::kVerify);
-}
-
 // Case: We have a DEX file and an ODEX file, but no OAT file.
 TEST_F(DexoptAnalyzerTest, DexOdexNoOat) {
   std::string dex_location = GetScratchDir() + "/DexOdexNoOat.jar";
@@ -284,7 +260,6 @@
   Copy(GetDexSrc1(), dex_location);
   GenerateOdexForTest(dex_location, odex_location, CompilerFilter::kSpeed);
 
-  Verify(dex_location, CompilerFilter::kExtract);
   Verify(dex_location, CompilerFilter::kSpeed);
   Verify(dex_location, CompilerFilter::kEverything);
 }
@@ -297,7 +272,6 @@
   Copy(GetResourceOnlySrc1(), dex_location);
 
   Verify(dex_location, CompilerFilter::kSpeed);
-  Verify(dex_location, CompilerFilter::kExtract);
   Verify(dex_location, CompilerFilter::kVerify);
 }
 
@@ -317,18 +291,6 @@
   Verify(dex_location, CompilerFilter::kSpeed);
 }
 
-// Case: We have a DEX file and a VerifyAtRuntime ODEX file, but no OAT file..
-TEST_F(DexoptAnalyzerTest, DexVerifyAtRuntimeOdexNoOat) {
-  std::string dex_location = GetScratchDir() + "/DexVerifyAtRuntimeOdexNoOat.jar";
-  std::string odex_location = GetOdexDir() + "/DexVerifyAtRuntimeOdexNoOat.odex";
-
-  Copy(GetDexSrc1(), dex_location);
-  GenerateOdexForTest(dex_location, odex_location, CompilerFilter::kExtract);
-
-  Verify(dex_location, CompilerFilter::kExtract);
-  Verify(dex_location, CompilerFilter::kSpeed);
-}
-
 // Case: Non-standard extension for dex file.
 TEST_F(DexoptAnalyzerTest, LongDexExtension) {
   std::string dex_location = GetScratchDir() + "/LongDexExtension.jarx";
diff --git a/libartbase/base/compiler_filter.cc b/libartbase/base/compiler_filter.cc
index a6d1c80..b4f924d 100644
--- a/libartbase/base/compiler_filter.cc
+++ b/libartbase/base/compiler_filter.cc
@@ -25,7 +25,6 @@
 bool CompilerFilter::IsAotCompilationEnabled(Filter filter) {
   switch (filter) {
     case CompilerFilter::kAssumeVerified:
-    case CompilerFilter::kExtract:
     case CompilerFilter::kVerify: return false;
 
     case CompilerFilter::kSpaceProfile:
@@ -41,7 +40,6 @@
 bool CompilerFilter::IsJniCompilationEnabled(Filter filter) {
   switch (filter) {
     case CompilerFilter::kAssumeVerified:
-    case CompilerFilter::kExtract:
     case CompilerFilter::kVerify: return false;
 
     case CompilerFilter::kSpaceProfile:
@@ -60,8 +58,7 @@
 
 bool CompilerFilter::IsVerificationEnabled(Filter filter) {
   switch (filter) {
-    case CompilerFilter::kAssumeVerified:
-    case CompilerFilter::kExtract: return false;
+    case CompilerFilter::kAssumeVerified: return false;
 
     case CompilerFilter::kVerify:
     case CompilerFilter::kSpaceProfile:
@@ -83,7 +80,6 @@
 bool CompilerFilter::DependsOnProfile(Filter filter) {
   switch (filter) {
     case CompilerFilter::kAssumeVerified:
-    case CompilerFilter::kExtract:
     case CompilerFilter::kVerify:
     case CompilerFilter::kSpace:
     case CompilerFilter::kSpeed:
@@ -99,7 +95,6 @@
 CompilerFilter::Filter CompilerFilter::GetNonProfileDependentFilterFrom(Filter filter) {
   switch (filter) {
     case CompilerFilter::kAssumeVerified:
-    case CompilerFilter::kExtract:
     case CompilerFilter::kVerify:
     case CompilerFilter::kSpace:
     case CompilerFilter::kSpeed:
@@ -123,7 +118,6 @@
   // code.
   switch (filter) {
     case CompilerFilter::kAssumeVerified:
-    case CompilerFilter::kExtract:
     case CompilerFilter::kVerify:
       return filter;
 
@@ -149,7 +143,6 @@
 std::string CompilerFilter::NameOfFilter(Filter filter) {
   switch (filter) {
     case CompilerFilter::kAssumeVerified: return "assume-verified";
-    case CompilerFilter::kExtract: return "extract";
     case CompilerFilter::kVerify: return "verify";
     case CompilerFilter::kSpaceProfile: return "space-profile";
     case CompilerFilter::kSpace: return "space";
@@ -178,8 +171,8 @@
     *filter = kVerify;
   } else if (strcmp(option, "verify-at-runtime") == 0) {
     LOG(WARNING) << "'verify-at-runtime' is an obsolete compiler filter name that will be "
-                 << "removed in future releases, please use 'extract' instead.";
-    *filter = kExtract;
+                 << "removed in future releases, please use 'verify' instead.";
+    *filter = kVerify;
   } else if (strcmp(option, "balanced") == 0) {
     LOG(WARNING) << "'balanced' is an obsolete compiler filter name that will be "
                  << "removed in future releases, please use 'speed' instead.";
@@ -188,14 +181,17 @@
     LOG(WARNING) << "'time' is an obsolete compiler filter name that will be "
                  << "removed in future releases, please use 'space' instead.";
     *filter = kSpace;
-  } else if (strcmp(option, "assume-verified") == 0) {
-    *filter = kAssumeVerified;
   } else if (strcmp(option, "extract") == 0) {
-    *filter = kExtract;
-  } else if (strcmp(option, "verify") == 0) {
+    LOG(WARNING) << "'extract' is an obsolete compiler filter name that will be "
+                 << "removed in future releases, please use 'verify' instead.";
     *filter = kVerify;
   } else if (strcmp(option, "quicken") == 0) {
-    // b/170086509 'quicken' becomes an alias to 'verify.
+    LOG(WARNING) << "'quicken' is an obsolete compiler filter name that will be "
+                 << "removed in future releases, please use 'verify' instead.";
+    *filter = kVerify;
+  } else if (strcmp(option, "assume-verified") == 0) {
+    *filter = kAssumeVerified;
+  } else if (strcmp(option, "verify") == 0) {
     *filter = kVerify;
   } else if (strcmp(option, "space") == 0) {
     *filter = kSpace;
@@ -216,7 +212,7 @@
 }
 
 const char* CompilerFilter::DescribeOptions() {
-  return "assume-verified|extract|verify|quicken|space{,-profile}|speed{,-profile}|"
+  return "assume-verified|verify|space{,-profile}|speed{,-profile}|"
           "everything{,-profile}";
 }
 
diff --git a/libartbase/base/compiler_filter.h b/libartbase/base/compiler_filter.h
index 4ca3c76..7e6aae8 100644
--- a/libartbase/base/compiler_filter.h
+++ b/libartbase/base/compiler_filter.h
@@ -31,7 +31,6 @@
   // as" earlier filter choices.
   enum Filter {
     kAssumeVerified,      // Skip verification but mark all classes as verified anyway.
-    kExtract,             // Delay verication to runtime, do not compile anything.
     kVerify,              // Only verify classes.
     kSpaceProfile,        // Maximize space savings based on profile.
     kSpace,               // Maximize space savings.
diff --git a/libartbase/base/compiler_filter_test.cc b/libartbase/base/compiler_filter_test.cc
index df7c8e7..3677afa 100644
--- a/libartbase/base/compiler_filter_test.cc
+++ b/libartbase/base/compiler_filter_test.cc
@@ -41,7 +41,6 @@
   CompilerFilter::Filter filter;
 
   TestCompilerFilterName(CompilerFilter::kAssumeVerified, "assume-verified");
-  TestCompilerFilterName(CompilerFilter::kExtract, "extract");
   TestCompilerFilterName(CompilerFilter::kVerify, "verify");
   TestCompilerFilterName(CompilerFilter::kSpaceProfile, "space-profile");
   TestCompilerFilterName(CompilerFilter::kSpace, "space");
@@ -55,7 +54,6 @@
 
 TEST(CompilerFilterTest, SafeModeFilter) {
   TestSafeModeFilter(CompilerFilter::kAssumeVerified, "assume-verified");
-  TestSafeModeFilter(CompilerFilter::kExtract, "extract");
   TestSafeModeFilter(CompilerFilter::kVerify, "verify");
   TestSafeModeFilter(CompilerFilter::kVerify, "space-profile");
   TestSafeModeFilter(CompilerFilter::kVerify, "space");
diff --git a/runtime/oat_file_assistant_test.cc b/runtime/oat_file_assistant_test.cc
index baa3094..d34e6a7 100644
--- a/runtime/oat_file_assistant_test.cc
+++ b/runtime/oat_file_assistant_test.cc
@@ -380,12 +380,6 @@
   OatFileAssistant oat_file_assistant = CreateOatFileAssistant(dex_location.c_str());
 
   VerifyGetDexOptNeededDefault(&oat_file_assistant,
-                               CompilerFilter::kExtract,
-                               /*expected_dexopt_needed=*/true,
-                               /*expected_is_vdex_usable=*/false,
-                               /*expected_location=*/OatFileAssistant::kLocationNoneOrError,
-                               /*expected_legacy_result=*/OatFileAssistant::kDex2OatFromScratch);
-  VerifyGetDexOptNeededDefault(&oat_file_assistant,
                                CompilerFilter::kVerify,
                                /*expected_dexopt_needed=*/true,
                                /*expected_is_vdex_usable=*/false,
@@ -462,12 +456,6 @@
                                /*expected_location=*/OatFileAssistant::kLocationOdex,
                                /*expected_legacy_result=*/-OatFileAssistant::kNoDexOptNeeded);
   VerifyGetDexOptNeededDefault(&oat_file_assistant,
-                               CompilerFilter::kExtract,
-                               /*expected_dexopt_needed=*/false,
-                               /*expected_is_vdex_usable=*/true,
-                               /*expected_location=*/OatFileAssistant::kLocationOdex,
-                               /*expected_legacy_result=*/-OatFileAssistant::kNoDexOptNeeded);
-  VerifyGetDexOptNeededDefault(&oat_file_assistant,
                                CompilerFilter::kEverything,
                                /*expected_dexopt_needed=*/true,
                                /*expected_is_vdex_usable=*/true,
@@ -513,12 +501,6 @@
                                /*expected_location=*/OatFileAssistant::kLocationOdex,
                                /*expected_legacy_result=*/-OatFileAssistant::kNoDexOptNeeded);
   VerifyGetDexOptNeededDefault(&oat_file_assistant,
-                               CompilerFilter::kExtract,
-                               /*expected_dexopt_needed=*/false,
-                               /*expected_is_vdex_usable=*/true,
-                               /*expected_location=*/OatFileAssistant::kLocationOdex,
-                               /*expected_legacy_result=*/-OatFileAssistant::kNoDexOptNeeded);
-  VerifyGetDexOptNeededDefault(&oat_file_assistant,
                                CompilerFilter::kEverything,
                                /*expected_dexopt_needed=*/true,
                                /*expected_is_vdex_usable=*/true,
@@ -567,12 +549,6 @@
                                /*expected_location=*/OatFileAssistant::kLocationOdex,
                                /*expected_legacy_result=*/-OatFileAssistant::kNoDexOptNeeded);
   VerifyGetDexOptNeededDefault(&oat_file_assistant,
-                               CompilerFilter::kExtract,
-                               /*expected_dexopt_needed=*/false,
-                               /*expected_is_vdex_usable=*/true,
-                               /*expected_location=*/OatFileAssistant::kLocationOdex,
-                               /*expected_legacy_result=*/-OatFileAssistant::kNoDexOptNeeded);
-  VerifyGetDexOptNeededDefault(&oat_file_assistant,
                                CompilerFilter::kEverything,
                                /*expected_dexopt_needed=*/true,
                                /*expected_is_vdex_usable=*/true,
@@ -619,12 +595,6 @@
                                /*expected_location=*/OatFileAssistant::kLocationOat,
                                /*expected_legacy_result=*/OatFileAssistant::kNoDexOptNeeded);
   VerifyGetDexOptNeededDefault(&oat_file_assistant,
-                               CompilerFilter::kExtract,
-                               /*expected_dexopt_needed=*/false,
-                               /*expected_is_vdex_usable=*/true,
-                               /*expected_location=*/OatFileAssistant::kLocationOat,
-                               /*expected_legacy_result=*/OatFileAssistant::kNoDexOptNeeded);
-  VerifyGetDexOptNeededDefault(&oat_file_assistant,
                                CompilerFilter::kEverything,
                                /*expected_dexopt_needed=*/true,
                                /*expected_is_vdex_usable=*/true,
@@ -678,12 +648,6 @@
                                /*expected_location=*/OatFileAssistant::kLocationOdex,
                                /*expected_legacy_result=*/OatFileAssistant::kNoDexOptNeeded);
   VerifyGetDexOptNeededDefault(&oat_file_assistant,
-                               CompilerFilter::kExtract,
-                               /*expected_dexopt_needed=*/false,
-                               /*expected_is_vdex_usable=*/true,
-                               /*expected_location=*/OatFileAssistant::kLocationOdex,
-                               /*expected_legacy_result=*/OatFileAssistant::kNoDexOptNeeded);
-  VerifyGetDexOptNeededDefault(&oat_file_assistant,
                                CompilerFilter::kEverything,
                                /*expected_dexopt_needed=*/true,
                                /*expected_is_vdex_usable=*/true,
@@ -1069,12 +1033,6 @@
 
   OatFileAssistant oat_file_assistant = CreateOatFileAssistant(dex_location.c_str());
   VerifyGetDexOptNeededDefault(&oat_file_assistant,
-                               CompilerFilter::kExtract,
-                               /*expected_dexopt_needed=*/true,
-                               /*expected_is_vdex_usable=*/false,
-                               /*expected_location=*/OatFileAssistant::kLocationNoneOrError,
-                               /*expected_legacy_result=*/OatFileAssistant::kDex2OatFromScratch);
-  VerifyGetDexOptNeededDefault(&oat_file_assistant,
                                CompilerFilter::kSpeed,
                                /*expected_dexopt_needed=*/true,
                                /*expected_is_vdex_usable=*/false,
@@ -1159,12 +1117,6 @@
 
   OatFileAssistant oat_file_assistant = CreateOatFileAssistant(dex_location.c_str());
   VerifyGetDexOptNeededDefault(&oat_file_assistant,
-                               CompilerFilter::kExtract,
-                               /*expected_dexopt_needed=*/false,
-                               /*expected_is_vdex_usable=*/true,
-                               /*expected_location=*/OatFileAssistant::kLocationOat,
-                               /*expected_legacy_result=*/OatFileAssistant::kNoDexOptNeeded);
-  VerifyGetDexOptNeededDefault(&oat_file_assistant,
                                CompilerFilter::kVerify,
                                /*expected_dexopt_needed=*/false,
                                /*expected_is_vdex_usable=*/true,
@@ -1214,49 +1166,6 @@
       dex_location.c_str(), context.get(), "verify", "vdex", "up-to-date", /*check_context=*/true);
 }
 
-// Case: We have a DEX file and a verify-at-runtime OAT file out of date with
-// respect to the boot image.
-// It shouldn't matter that the OAT file is out of date, because it is
-// verify-at-runtime.
-TEST_P(OatFileAssistantTest, OatVerifyAtRuntimeImageOutOfDate) {
-  if (IsExecutedAsRoot()) {
-    // We cannot simulate non writable locations when executed as root: b/38000545.
-    LOG(ERROR) << "Test skipped because it's running as root";
-    return;
-  }
-
-  std::string dex_location = GetScratchDir() + "/OatVerifyAtRuntimeImageOutOfDate.jar";
-
-  Copy(GetDexSrc1(), dex_location);
-  GenerateOatForTest(dex_location.c_str(),
-                     CompilerFilter::kExtract,
-                     /* with_alternate_image= */ true);
-
-  ScopedNonWritable scoped_non_writable(dex_location);
-  ASSERT_TRUE(scoped_non_writable.IsSuccessful());
-
-  auto scoped_maybe_without_runtime = ScopedMaybeWithoutRuntime();
-
-  OatFileAssistant oat_file_assistant = CreateOatFileAssistant(dex_location.c_str());
-  VerifyGetDexOptNeededDefault(&oat_file_assistant,
-                               CompilerFilter::kExtract,
-                               /*expected_dexopt_needed=*/false,
-                               /*expected_is_vdex_usable=*/true,
-                               /*expected_location=*/OatFileAssistant::kLocationOat,
-                               /*expected_legacy_result=*/OatFileAssistant::kNoDexOptNeeded);
-  VerifyGetDexOptNeededDefault(&oat_file_assistant,
-                               CompilerFilter::kVerify,
-                               /*expected_dexopt_needed=*/true,
-                               /*expected_is_vdex_usable=*/true,
-                               /*expected_location=*/OatFileAssistant::kLocationOat,
-                               /*expected_legacy_result=*/OatFileAssistant::kDex2OatForFilter);
-
-  EXPECT_FALSE(oat_file_assistant.IsInBootClassPath());
-  EXPECT_EQ(OatFileAssistant::kOatCannotOpen, oat_file_assistant.OdexFileStatus());
-  EXPECT_EQ(OatFileAssistant::kOatUpToDate, oat_file_assistant.OatFileStatus());
-  ExpectHasDexFiles(&oat_file_assistant, true);
-}
-
 // Case: We have a DEX file and an ODEX file, but no OAT file.
 TEST_P(OatFileAssistantTest, DexOdexNoOat) {
   std::string dex_location = GetScratchDir() + "/DexOdexNoOat.jar";
@@ -1272,12 +1181,6 @@
   OatFileAssistant oat_file_assistant = CreateOatFileAssistant(dex_location.c_str());
 
   VerifyGetDexOptNeededDefault(&oat_file_assistant,
-                               CompilerFilter::kExtract,
-                               /*expected_dexopt_needed=*/false,
-                               /*expected_is_vdex_usable=*/true,
-                               /*expected_location=*/OatFileAssistant::kLocationOdex,
-                               /*expected_legacy_result=*/OatFileAssistant::kNoDexOptNeeded);
-  VerifyGetDexOptNeededDefault(&oat_file_assistant,
                                CompilerFilter::kSpeed,
                                /*expected_dexopt_needed=*/false,
                                /*expected_is_vdex_usable=*/true,
@@ -1313,12 +1216,6 @@
                                /*expected_location=*/OatFileAssistant::kLocationNoneOrError,
                                /*expected_legacy_result=*/OatFileAssistant::kNoDexOptNeeded);
   VerifyGetDexOptNeededDefault(&oat_file_assistant,
-                               CompilerFilter::kExtract,
-                               /*expected_dexopt_needed=*/false,
-                               /*expected_is_vdex_usable=*/false,
-                               /*expected_location=*/OatFileAssistant::kLocationNoneOrError,
-                               /*expected_legacy_result=*/OatFileAssistant::kNoDexOptNeeded);
-  VerifyGetDexOptNeededDefault(&oat_file_assistant,
                                CompilerFilter::kVerify,
                                /*expected_dexopt_needed=*/false,
                                /*expected_is_vdex_usable=*/false,
@@ -1384,40 +1281,6 @@
   EXPECT_EQ(1u, dex_files.size());
 }
 
-// Case: We have a DEX file and a VerifyAtRuntime ODEX file, but no OAT file.
-// Expect: The status is kNoDexOptNeeded, because VerifyAtRuntime contains no code.
-TEST_P(OatFileAssistantTest, DexVerifyAtRuntimeOdexNoOat) {
-  std::string dex_location = GetScratchDir() + "/DexVerifyAtRuntimeOdexNoOat.jar";
-  std::string odex_location = GetOdexDir() + "/DexVerifyAtRuntimeOdexNoOat.odex";
-
-  // Create the dex and odex files
-  Copy(GetDexSrc1(), dex_location);
-  GenerateOdexForTest(dex_location, odex_location, CompilerFilter::kExtract);
-
-  auto scoped_maybe_without_runtime = ScopedMaybeWithoutRuntime();
-
-  // Verify the status.
-  OatFileAssistant oat_file_assistant = CreateOatFileAssistant(dex_location.c_str());
-
-  VerifyGetDexOptNeededDefault(&oat_file_assistant,
-                               CompilerFilter::kExtract,
-                               /*expected_dexopt_needed=*/false,
-                               /*expected_is_vdex_usable=*/true,
-                               /*expected_location=*/OatFileAssistant::kLocationOdex,
-                               /*expected_legacy_result=*/OatFileAssistant::kNoDexOptNeeded);
-  VerifyGetDexOptNeededDefault(&oat_file_assistant,
-                               CompilerFilter::kSpeed,
-                               /*expected_dexopt_needed=*/true,
-                               /*expected_is_vdex_usable=*/true,
-                               /*expected_location=*/OatFileAssistant::kLocationOdex,
-                               /*expected_legacy_result=*/-OatFileAssistant::kDex2OatForFilter);
-
-  EXPECT_FALSE(oat_file_assistant.IsInBootClassPath());
-  EXPECT_EQ(OatFileAssistant::kOatUpToDate, oat_file_assistant.OdexFileStatus());
-  EXPECT_EQ(OatFileAssistant::kOatCannotOpen, oat_file_assistant.OatFileStatus());
-  ExpectHasDexFiles(&oat_file_assistant, true);
-}
-
 // Case: We have a DEX file and up-to-date OAT file for it.
 // Expect: We should load an executable dex file.
 TEST_P(OatFileAssistantTest, LoadOatUpToDate) {
@@ -1861,26 +1724,6 @@
     ASSERT_TRUE(updated_context != nullptr);
     std::vector<int> context_fds;
     ASSERT_TRUE(updated_context->OpenDexFiles("", context_fds, /*only_read_checksums*/ true));
-    args.push_back("--compiler-filter=extract");
-    ASSERT_TRUE(Dex2Oat(args, &error_msg)) << error_msg;
-
-    auto scoped_maybe_without_runtime = ScopedMaybeWithoutRuntime();
-
-    OatFileAssistant oat_file_assistant =
-        CreateOatFileAssistant(dex_location.c_str(), updated_context.get());
-    // Now check that DexOptNeeded does not advise compilation if we only extracted the file.
-    VerifyGetDexOptNeededDefault(&oat_file_assistant,
-                                 CompilerFilter::kExtract,
-                                 /*expected_dexopt_needed=*/false,
-                                 /*expected_is_vdex_usable=*/true,
-                                 /*expected_location=*/OatFileAssistant::kLocationOdex,
-                                 /*expected_legacy_result=*/OatFileAssistant::kNoDexOptNeeded);
-  }
-  {
-    std::unique_ptr<ClassLoaderContext> updated_context = ClassLoaderContext::Create(context_str);
-    ASSERT_TRUE(updated_context != nullptr);
-    std::vector<int> context_fds;
-    ASSERT_TRUE(updated_context->OpenDexFiles("", context_fds, /*only_read_checksums*/ true));
     args.push_back("--compiler-filter=verify");
     ASSERT_TRUE(Dex2Oat(args, &error_msg)) << error_msg;
 
@@ -1890,7 +1733,7 @@
         CreateOatFileAssistant(dex_location.c_str(), updated_context.get());
     // Now check that DexOptNeeded does not advise compilation if we only verify the file.
     VerifyGetDexOptNeededDefault(&oat_file_assistant,
-                                 CompilerFilter::kExtract,
+                                 CompilerFilter::kVerify,
                                  /*expected_dexopt_needed=*/false,
                                  /*expected_is_vdex_usable=*/true,
                                  /*expected_location=*/OatFileAssistant::kLocationOdex,