Revert "Support pass BCP art/vdex/oat files by FD"

This reverts commit b1adfc2a0570f52d74b8a4acdd578efc1790995b.

Reason: reports from Realtime Stability Insights (RTSI) infra.

Bug: 193720426
Fix: 194481664
Fix: 194475273
Fix: 194478073
Test: TH
Change-Id: I421d0b4a613de5ac8fb2830fa27206edb5428374
diff --git a/dex2oat/dex2oat_image_test.cc b/dex2oat/dex2oat_image_test.cc
index 09cdd50..e377308 100644
--- a/dex2oat/dex2oat_image_test.cc
+++ b/dex2oat/dex2oat_image_test.cc
@@ -423,9 +423,6 @@
     return gc::space::ImageSpace::LoadBootImage(/*boot_class_path=*/ boot_class_path,
                                                 /*boot_class_path_locations=*/ libcore_dex_files,
                                                 /*boot_class_path_fds=*/ std::vector<int>(),
-                                                /*boot_class_path_image_fds=*/ std::vector<int>(),
-                                                /*boot_class_path_vdex_fds=*/ std::vector<int>(),
-                                                /*boot_class_path_oat_fds=*/ std::vector<int>(),
                                                 android::base::Split(image_location, ":"),
                                                 kRuntimeISA,
                                                 relocate,
diff --git a/odrefresh/odrefresh.cc b/odrefresh/odrefresh.cc
index ff23f55..fbf30c4 100644
--- a/odrefresh/odrefresh.cc
+++ b/odrefresh/odrefresh.cc
@@ -735,88 +735,21 @@
     }
   }
 
-  static bool AddCompiledBootClasspathFds(
-      /*inout*/ std::vector<std::unique_ptr<File>>& output_files,
-      /*inout*/ std::vector<std::string>& bcp_image_fds,
-      /*inout*/ std::vector<std::string>& bcp_vdex_fds,
-      /*inout*/ std::vector<std::string>& bcp_oat_fds,
-      const std::string& image_path) {
-    bool added_any = false;
-    std::unique_ptr<File> image_file(OS::OpenFileForReading(image_path.c_str()));
-    if (image_file && image_file->IsValid()) {
-      bcp_image_fds.push_back(std::to_string(image_file->Fd()));
-      output_files.push_back(std::move(image_file));
-      added_any = true;
-    } else {
-      bcp_image_fds.push_back("-1");
-    }
-
-    std::string oat_path = ReplaceFileExtension(image_path, "oat");
-    std::unique_ptr<File> oat_file(OS::OpenFileForReading(oat_path.c_str()));
-    if (oat_file && oat_file->IsValid()) {
-      bcp_oat_fds.push_back(std::to_string(oat_file->Fd()));
-      output_files.push_back(std::move(oat_file));
-      added_any = true;
-    } else {
-      bcp_oat_fds.push_back("-1");
-    }
-
-    std::string vdex_path = ReplaceFileExtension(image_path, "vdex");
-    std::unique_ptr<File> vdex_file(OS::OpenFileForReading(vdex_path.c_str()));
-    if (vdex_file && vdex_file->IsValid()) {
-      bcp_vdex_fds.push_back(std::to_string(vdex_file->Fd()));
-      output_files.push_back(std::move(vdex_file));
-      added_any = true;
-    } else {
-      bcp_vdex_fds.push_back("-1");
-    }
-    return added_any;
-  }
-
   static bool AddBootClasspathFds(/*inout*/ std::vector<std::string>& args,
                                   /*inout*/ std::vector<std::unique_ptr<File>>& output_files,
-                                  const std::vector<std::string>& bcp_jars,
-                                  const InstructionSet isa,
-                                  bool use_compiled_bcp_ext_as_fds) {
+                                  const std::vector<std::string>& bcp_jars) {
     auto bcp_fds = std::vector<std::string>();
-    auto bcp_image_fds = std::vector<std::string>();
-    auto bcp_oat_fds = std::vector<std::string>();
-    auto bcp_vdex_fds = std::vector<std::string>();
-    bool added_any = false;
     for (const std::string& jar : bcp_jars) {
       std::unique_ptr<File> jar_file(OS::OpenFileForReading(jar.c_str()));
-      if (jar_file && !jar_file->IsValid()) {
+      if (!jar_file->IsValid()) {
         LOG(ERROR) << "Failed to open a BCP jar " << jar;
         return false;
       }
       bcp_fds.push_back(std::to_string(jar_file->Fd()));
       output_files.push_back(std::move(jar_file));
-
-      // When enabled, for each JAR, also pass the corresponding .art/.vdex/.odex as FDs.
-      if (use_compiled_bcp_ext_as_fds) {
-        std::string image_path = GetApexDataBootImage(jar);
-        if (!image_path.empty()) {
-          added_any |= AddCompiledBootClasspathFds(output_files,
-                                                   bcp_image_fds,
-                                                   bcp_oat_fds,
-                                                   bcp_vdex_fds,
-                                                   GetSystemImageFilename(image_path.c_str(), isa));
-        }
-      }
     }
     args.emplace_back("--runtime-arg");
     args.emplace_back(Concatenate({"-Xbootclasspathfds:", android::base::Join(bcp_fds, ':')}));
-    if (use_compiled_bcp_ext_as_fds && added_any) {
-      args.emplace_back("--runtime-arg");
-      args.emplace_back(Concatenate({"-Xbootclasspathimagefds:",
-        android::base::Join(bcp_image_fds, ':')}));
-      args.emplace_back("--runtime-arg");
-      args.emplace_back(Concatenate({"-Xbootclasspathoatfds:",
-        android::base::Join(bcp_oat_fds, ':')}));
-      args.emplace_back("--runtime-arg");
-      args.emplace_back(Concatenate({"-Xbootclasspathvdexfds:",
-        android::base::Join(bcp_vdex_fds, ':')}));
-    }
     return true;
   }
 
@@ -1186,8 +1119,7 @@
     args.emplace_back("--runtime-arg");
     args.emplace_back(Concatenate({"-Xbootclasspath:", config_.GetDex2oatBootClasspath()}));
     auto bcp_jars = android::base::Split(config_.GetDex2oatBootClasspath(), ":");
-    if (!AddBootClasspathFds(args, readonly_files_raii, bcp_jars, isa,
-                             /*use_compiled_bcp_ext_as_fds=*/ false)) {
+    if (!AddBootClasspathFds(args, readonly_files_raii, bcp_jars)) {
       return false;
     }
 
@@ -1353,8 +1285,7 @@
       args.emplace_back("--runtime-arg");
       args.emplace_back(Concatenate({"-Xbootclasspath:", config_.GetBootClasspath()}));
       auto bcp_jars = android::base::Split(config_.GetBootClasspath(), ":");
-      if (!AddBootClasspathFds(args, readonly_files_raii, bcp_jars, isa,
-                               /*use_compiled_bcp_ext_as_fds=*/ true)) {
+      if (!AddBootClasspathFds(args, readonly_files_raii, bcp_jars)) {
         return false;
       }
 
diff --git a/runtime/gc/heap.cc b/runtime/gc/heap.cc
index 55fdb72..7706a5c 100644
--- a/runtime/gc/heap.cc
+++ b/runtime/gc/heap.cc
@@ -263,9 +263,6 @@
            const std::vector<std::string>& boot_class_path,
            const std::vector<std::string>& boot_class_path_locations,
            const std::vector<int>& boot_class_path_fds,
-           const std::vector<int>& boot_class_path_image_fds,
-           const std::vector<int>& boot_class_path_vdex_fds,
-           const std::vector<int>& boot_class_path_oat_fds,
            const std::vector<std::string>& image_file_names,
            const InstructionSet image_instruction_set,
            CollectorType foreground_collector_type,
@@ -467,9 +464,6 @@
   if (space::ImageSpace::LoadBootImage(boot_class_path,
                                        boot_class_path_locations,
                                        boot_class_path_fds,
-                                       boot_class_path_image_fds,
-                                       boot_class_path_vdex_fds,
-                                       boot_class_path_oat_fds,
                                        image_file_names,
                                        image_instruction_set,
                                        runtime->ShouldRelocate(),
diff --git a/runtime/gc/heap.h b/runtime/gc/heap.h
index 27616fb..345109d 100644
--- a/runtime/gc/heap.h
+++ b/runtime/gc/heap.h
@@ -202,9 +202,6 @@
        const std::vector<std::string>& boot_class_path,
        const std::vector<std::string>& boot_class_path_locations,
        const std::vector<int>& boot_class_path_fds,
-       const std::vector<int>& boot_class_path_image_fds,
-       const std::vector<int>& boot_class_path_vdex_fds,
-       const std::vector<int>& boot_class_path_oat_fds,
        const std::vector<std::string>& image_file_names,
        InstructionSet image_instruction_set,
        CollectorType foreground_collector_type,
diff --git a/runtime/gc/space/image_space.cc b/runtime/gc/space/image_space.cc
index 3930ad5..c1410ce 100644
--- a/runtime/gc/space/image_space.cc
+++ b/runtime/gc/space/image_space.cc
@@ -1418,17 +1418,11 @@
   BootImageLayout(ArrayRef<const std::string> image_locations,
                   ArrayRef<const std::string> boot_class_path,
                   ArrayRef<const std::string> boot_class_path_locations,
-                  ArrayRef<const int> boot_class_path_fds,
-                  ArrayRef<const int> boot_class_path_image_fds,
-                  ArrayRef<const int> boot_class_path_vdex_fds,
-                  ArrayRef<const int> boot_class_path_oat_fds)
+                  ArrayRef<const int> boot_class_path_fds)
      : image_locations_(image_locations),
        boot_class_path_(boot_class_path),
        boot_class_path_locations_(boot_class_path_locations),
-       boot_class_path_fds_(boot_class_path_fds),
-       boot_class_path_image_fds_(boot_class_path_image_fds),
-       boot_class_path_vdex_fds_(boot_class_path_vdex_fds),
-       boot_class_path_oat_fds_(boot_class_path_oat_fds) {}
+       boot_class_path_fds_(boot_class_path_fds) {}
 
   std::string GetPrimaryImageLocation();
 
@@ -1543,9 +1537,6 @@
   ArrayRef<const std::string> boot_class_path_;
   ArrayRef<const std::string> boot_class_path_locations_;
   ArrayRef<const int> boot_class_path_fds_;
-  ArrayRef<const int> boot_class_path_image_fds_;
-  ArrayRef<const int> boot_class_path_vdex_fds_;
-  ArrayRef<const int> boot_class_path_oat_fds_;
 
   std::vector<ImageChunk> chunks_;
   uint32_t base_address_ = 0u;
@@ -1828,19 +1819,8 @@
   DCHECK_LT(bcp_index, boot_class_path_.size());
 
   std::string actual_filename = ExpandLocation(base_filename, bcp_index);
-  int bcp_image_fd = bcp_index < boot_class_path_image_fds_.size()
-      ? boot_class_path_image_fds_[bcp_index]
-      : -1;
   ImageHeader header;
-  auto image_file = bcp_image_fd >= 0
-      ? std::make_unique<File>(bcp_image_fd, actual_filename, /*check_usage=*/ false)
-      : std::unique_ptr<File>(OS::OpenFileForReading(actual_filename.c_str()));
-  if (!image_file || !image_file->IsOpened()) {
-    *error_msg = StringPrintf("Unable to open file \"%s\" for reading image header",
-                              actual_filename.c_str());
-    return false;
-  }
-  if (!ReadSpecificImageHeader(image_file.get(), actual_filename.c_str(), &header, error_msg)) {
+  if (!ReadSpecificImageHeader(actual_filename.c_str(), &header, error_msg)) {
     return false;
   }
   const char* file_description = actual_filename.c_str();
@@ -1862,20 +1842,6 @@
   chunk.boot_image_component_count = header.GetBootImageComponentCount();
   chunk.boot_image_checksum = header.GetBootImageChecksum();
   chunk.boot_image_size = header.GetBootImageSize();
-  // When BCP art/vdex/oat FDs are also passed, initialize the chunk accordingly.
-  if (bcp_index < boot_class_path_image_fds_.size()) {
-    // The FD of .art needs to be duplicated because it'll be owned/used later.
-    int fd = boot_class_path_image_fds_[bcp_index];
-    if (fd >= 0) {
-      chunk.art_fd.reset(dup(fd));
-    }
-  }
-  if (bcp_index < boot_class_path_vdex_fds_.size()) {
-    chunk.vdex_fd.reset(boot_class_path_vdex_fds_[bcp_index]);
-  }
-  if (bcp_index < boot_class_path_oat_fds_.size()) {
-    chunk.oat_fd.reset(boot_class_path_oat_fds_[bcp_index]);
-  }
   chunks_.push_back(std::move(chunk));
   next_bcp_index_ = bcp_index + header.GetComponentCount();
   total_component_count_ += header.GetComponentCount();
@@ -2261,9 +2227,6 @@
   BootImageLoader(const std::vector<std::string>& boot_class_path,
                   const std::vector<std::string>& boot_class_path_locations,
                   const std::vector<int>& boot_class_path_fds,
-                  const std::vector<int>& boot_class_path_image_fds,
-                  const std::vector<int>& boot_class_path_vdex_fds,
-                  const std::vector<int>& boot_class_path_oat_fds,
                   const std::vector<std::string>& image_locations,
                   InstructionSet image_isa,
                   bool relocate,
@@ -2271,9 +2234,6 @@
       : boot_class_path_(boot_class_path),
         boot_class_path_locations_(boot_class_path_locations),
         boot_class_path_fds_(boot_class_path_fds),
-        boot_class_path_image_fds_(boot_class_path_image_fds),
-        boot_class_path_vdex_fds_(boot_class_path_vdex_fds),
-        boot_class_path_oat_fds_(boot_class_path_oat_fds),
         image_locations_(image_locations),
         image_isa_(image_isa),
         relocate_(relocate),
@@ -2285,10 +2245,7 @@
     BootImageLayout layout(image_locations_,
                            boot_class_path_,
                            boot_class_path_locations_,
-                           boot_class_path_fds_,
-                           boot_class_path_image_fds_,
-                           boot_class_path_vdex_fds_,
-                           boot_class_path_oat_fds_);
+                           boot_class_path_fds_);
     std::string image_location = layout.GetPrimaryImageLocation();
     std::string system_filename;
     bool found_image = FindImageFilenameImpl(image_location.c_str(),
@@ -2912,7 +2869,6 @@
                                      executable_,
                                      /*low_4gb=*/ false,
                                      dex_filenames,
-                                     dex_fds,
                                      image_reservation,
                                      error_msg));
         // We no longer need the file descriptors and they will be closed by
@@ -3171,9 +3127,6 @@
   const ArrayRef<const std::string> boot_class_path_;
   const ArrayRef<const std::string> boot_class_path_locations_;
   const ArrayRef<const int> boot_class_path_fds_;
-  const ArrayRef<const int> boot_class_path_image_fds_;
-  const ArrayRef<const int> boot_class_path_vdex_fds_;
-  const ArrayRef<const int> boot_class_path_oat_fds_;
   const ArrayRef<const std::string> image_locations_;
   const InstructionSet image_isa_;
   const bool relocate_;
@@ -3191,10 +3144,7 @@
   BootImageLayout layout(image_locations_,
                          boot_class_path_,
                          boot_class_path_locations_,
-                         boot_class_path_fds_,
-                         boot_class_path_image_fds_,
-                         boot_class_path_vdex_fds_,
-                         boot_class_path_oat_fds_);
+                         boot_class_path_fds_);
   if (!layout.LoadFromSystem(image_isa_, error_msg)) {
     return false;
   }
@@ -3222,10 +3172,7 @@
   BootImageLayout layout(ArrayRef<const std::string>(runtime->GetImageLocations()),
                          ArrayRef<const std::string>(runtime->GetBootClassPath()),
                          ArrayRef<const std::string>(runtime->GetBootClassPathLocations()),
-                         ArrayRef<const int>(runtime->GetBootClassPathFds()),
-                         ArrayRef<const int>(runtime->GetBootClassPathImageFds()),
-                         ArrayRef<const int>(runtime->GetBootClassPathVdexFds()),
-                         ArrayRef<const int>(runtime->GetBootClassPathOatFds()));
+                         ArrayRef<const int>(runtime->GetBootClassPathFds()));
   const std::string image_location = layout.GetPrimaryImageLocation();
   std::unique_ptr<ImageHeader> image_header;
   std::string error_msg;
@@ -3248,9 +3195,6 @@
     const std::vector<std::string>& boot_class_path,
     const std::vector<std::string>& boot_class_path_locations,
     const std::vector<int>& boot_class_path_fds,
-    const std::vector<int>& boot_class_path_image_fds,
-    const std::vector<int>& boot_class_path_vdex_fds,
-    const std::vector<int>& boot_class_path_odex_fds,
     const std::vector<std::string>& image_locations,
     const InstructionSet image_isa,
     bool relocate,
@@ -3273,9 +3217,6 @@
   BootImageLoader loader(boot_class_path,
                          boot_class_path_locations,
                          boot_class_path_fds,
-                         boot_class_path_image_fds,
-                         boot_class_path_vdex_fds,
-                         boot_class_path_odex_fds,
                          image_locations,
                          image_isa,
                          relocate,
@@ -3547,10 +3488,7 @@
     BootImageLayout layout(image_locations,
                            boot_class_path.SubArray(/*pos=*/ 0u, bcp_size),
                            boot_class_path_locations.SubArray(/*pos=*/ 0u, bcp_size),
-                           bcp_fds,
-                           /*boot_class_path_image_fds=*/ ArrayRef<const int>(),
-                           /*boot_class_path_vdex_fds=*/ ArrayRef<const int>(),
-                           /*boot_class_path_oat_fds=*/ ArrayRef<const int>());
+                           bcp_fds);
     std::string primary_image_location = layout.GetPrimaryImageLocation();
     std::string system_filename;
     bool has_system = false;
diff --git a/runtime/gc/space/image_space.h b/runtime/gc/space/image_space.h
index 28cc795..c8879cb 100644
--- a/runtime/gc/space/image_space.h
+++ b/runtime/gc/space/image_space.h
@@ -125,9 +125,6 @@
       const std::vector<std::string>& boot_class_path,
       const std::vector<std::string>& boot_class_path_locations,
       const std::vector<int>& boot_class_path_fds,
-      const std::vector<int>& boot_class_path_image_fds,
-      const std::vector<int>& boot_class_path_vdex_fds,
-      const std::vector<int>& boot_class_path_oat_fds,
       const std::vector<std::string>& image_locations,
       const InstructionSet image_isa,
       bool relocate,
diff --git a/runtime/gc/space/image_space_test.cc b/runtime/gc/space/image_space_test.cc
index 973bf5e..5e1bc11 100644
--- a/runtime/gc/space/image_space_test.cc
+++ b/runtime/gc/space/image_space_test.cc
@@ -137,9 +137,6 @@
     return ImageSpace::LoadBootImage(bcp,
                                      bcp_locations,
                                      /*boot_class_path_fds=*/ std::vector<int>(),
-                                     /*boot_class_path_image_fds=*/ std::vector<int>(),
-                                     /*boot_class_path_vdex_fds=*/ std::vector<int>(),
-                                     /*boot_class_path_oat_fds=*/ std::vector<int>(),
                                      full_image_locations,
                                      kRuntimeISA,
                                      /*relocate=*/ false,
diff --git a/runtime/oat_file.cc b/runtime/oat_file.cc
index 347b58f..179cfc9 100644
--- a/runtime/oat_file.cc
+++ b/runtime/oat_file.cc
@@ -127,7 +127,6 @@
                                   bool executable,
                                   bool low_4gb,
                                   ArrayRef<const std::string> dex_filenames,
-                                  ArrayRef<const int> dex_fds,
                                   /*inout*/MemMap* reservation,  // Where to load if not null.
                                   /*out*/std::string* error_msg);
 
@@ -249,7 +248,6 @@
                                       bool executable,
                                       bool low_4gb,
                                       ArrayRef<const std::string> dex_filenames,
-                                      ArrayRef<const int> dex_fds,
                                       /*inout*/MemMap* reservation,
                                       /*out*/std::string* error_msg) {
   std::unique_ptr<OatFileBase> ret(new kOatFileBaseSubType(oat_location, executable));
@@ -273,7 +271,7 @@
     return nullptr;
   }
 
-  if (!ret->Setup(zip_fd, dex_filenames, dex_fds, error_msg)) {
+  if (!ret->Setup(zip_fd, dex_filenames, /*dex_fds=*/ArrayRef<const int>(), error_msg)) {
     return nullptr;
   }
 
@@ -1833,7 +1831,6 @@
                        bool executable,
                        bool low_4gb,
                        ArrayRef<const std::string> dex_filenames,
-                       ArrayRef<const int> dex_fds,
                        /*inout*/MemMap* reservation,
                        /*out*/std::string* error_msg) {
   CHECK(!oat_location.empty()) << oat_location;
@@ -1849,7 +1846,6 @@
                                                                 executable,
                                                                 low_4gb,
                                                                 dex_filenames,
-                                                                dex_fds,
                                                                 reservation,
                                                                 error_msg);
   return with_internal;
diff --git a/runtime/oat_file.h b/runtime/oat_file.h
index 5c98176..beb231c 100644
--- a/runtime/oat_file.h
+++ b/runtime/oat_file.h
@@ -154,7 +154,6 @@
                        bool executable,
                        bool low_4gb,
                        ArrayRef<const std::string> dex_filenames,
-                       ArrayRef<const int> dex_fds,
                        /*inout*/MemMap* reservation,  // Where to load if not null.
                        /*out*/std::string* error_msg);
 
diff --git a/runtime/oat_file_assistant.cc b/runtime/oat_file_assistant.cc
index 109769c..67ee940 100644
--- a/runtime/oat_file_assistant.cc
+++ b/runtime/oat_file_assistant.cc
@@ -877,7 +877,6 @@
                                   executable,
                                   /*low_4gb=*/ false,
                                   dex_locations,
-                                  /*dex_fds=*/ ArrayRef<const int>(),
                                   /*reservation=*/ nullptr,
                                   &error_msg));
       }
diff --git a/runtime/parsed_options.cc b/runtime/parsed_options.cc
index f27947e..af45213 100644
--- a/runtime/parsed_options.cc
+++ b/runtime/parsed_options.cc
@@ -115,15 +115,6 @@
       .Define("-Xbootclasspathfds:_")
           .WithType<ParseIntList<':'>>()
           .IntoKey(M::BootClassPathFds)
-      .Define("-Xbootclasspathimagefds:_")
-          .WithType<ParseIntList<':'>>()
-          .IntoKey(M::BootClassPathImageFds)
-      .Define("-Xbootclasspathvdexfds:_")
-          .WithType<ParseIntList<':'>>()
-          .IntoKey(M::BootClassPathVdexFds)
-      .Define("-Xbootclasspathoatfds:_")
-          .WithType<ParseIntList<':'>>()
-          .IntoKey(M::BootClassPathOatFds)
       .Define("-Xcheck:jni")
           .IntoKey(M::CheckJni)
       .Define("-Xms_")
diff --git a/runtime/runtime.cc b/runtime/runtime.cc
index b64c5e3..91cbd67 100644
--- a/runtime/runtime.cc
+++ b/runtime/runtime.cc
@@ -1206,7 +1206,6 @@
 
 static size_t OpenBootDexFiles(ArrayRef<const std::string> dex_filenames,
                                ArrayRef<const std::string> dex_locations,
-                               ArrayRef<const int> dex_fds,
                                std::vector<std::unique_ptr<const DexFile>>* dex_files) {
   DCHECK(dex_files != nullptr) << "OpenDexFiles: out-param is nullptr";
   size_t failure_count = 0;
@@ -1214,22 +1213,20 @@
   for (size_t i = 0; i < dex_filenames.size(); i++) {
     const char* dex_filename = dex_filenames[i].c_str();
     const char* dex_location = dex_locations[i].c_str();
-    const int dex_fd = i < dex_fds.size() ? dex_fds[i] : -1;
     static constexpr bool kVerifyChecksum = true;
     std::string error_msg;
-    if (!OS::FileExists(dex_filename) && dex_fd < 0) {
+    if (!OS::FileExists(dex_filename)) {
       LOG(WARNING) << "Skipping non-existent dex file '" << dex_filename << "'";
       continue;
     }
     bool verify = Runtime::Current()->IsVerificationEnabled();
     if (!dex_file_loader.Open(dex_filename,
-                              dex_fd,
                               dex_location,
                               verify,
                               kVerifyChecksum,
                               &error_msg,
                               dex_files)) {
-      LOG(WARNING) << "Failed to open .dex from file '" << dex_filename << "' / fd " << dex_fd << ": " << error_msg;
+      LOG(WARNING) << "Failed to open .dex from file '" << dex_filename << "': " << error_msg;
       ++failure_count;
     }
   }
@@ -1416,16 +1413,6 @@
     return false;
   }
 
-  boot_class_path_image_fds_ = runtime_options.ReleaseOrDefault(Opt::BootClassPathImageFds);
-  boot_class_path_vdex_fds_ = runtime_options.ReleaseOrDefault(Opt::BootClassPathVdexFds);
-  boot_class_path_oat_fds_ = runtime_options.ReleaseOrDefault(Opt::BootClassPathOatFds);
-  CHECK(boot_class_path_image_fds_.empty() ||
-        boot_class_path_image_fds_.size() == boot_class_path_fds_.size());
-  CHECK(boot_class_path_vdex_fds_.empty() ||
-        boot_class_path_vdex_fds_.size() == boot_class_path_fds_.size());
-  CHECK(boot_class_path_oat_fds_.empty() ||
-        boot_class_path_oat_fds_.size() == boot_class_path_fds_.size());
-
   class_path_string_ = runtime_options.ReleaseOrDefault(Opt::ClassPath);
   properties_ = runtime_options.ReleaseOrDefault(Opt::PropertiesList);
 
@@ -1550,9 +1537,6 @@
                        GetBootClassPath(),
                        GetBootClassPathLocations(),
                        GetBootClassPathFds(),
-                       GetBootClassPathImageFds(),
-                       GetBootClassPathVdexFds(),
-                       GetBootClassPathOatFds(),
                        image_locations_,
                        instruction_set_,
                        // Override the collector type to CC if the read barrier config.
@@ -1760,12 +1744,8 @@
       if (runtime_options.Exists(Opt::BootClassPathDexList)) {
         extra_boot_class_path.swap(*runtime_options.GetOrDefault(Opt::BootClassPathDexList));
       } else {
-        ArrayRef<const int> bcp_fds = start < GetBootClassPathFds().size()
-            ? ArrayRef<const int>(GetBootClassPathFds()).SubArray(start)
-            : ArrayRef<const int>();
         OpenBootDexFiles(ArrayRef<const std::string>(GetBootClassPath()).SubArray(start),
                          ArrayRef<const std::string>(GetBootClassPathLocations()).SubArray(start),
-                         bcp_fds,
                          &extra_boot_class_path);
       }
       class_linker_->AddExtraBootDexFiles(self, std::move(extra_boot_class_path));
@@ -1784,7 +1764,6 @@
     } else {
       OpenBootDexFiles(ArrayRef<const std::string>(GetBootClassPath()),
                        ArrayRef<const std::string>(GetBootClassPathLocations()),
-                       ArrayRef<const int>(GetBootClassPathFds()),
                        &boot_class_path);
     }
     if (!class_linker_->InitWithoutImage(std::move(boot_class_path), &error_msg)) {
diff --git a/runtime/runtime.h b/runtime/runtime.h
index 221bcaf..eb313e0 100644
--- a/runtime/runtime.h
+++ b/runtime/runtime.h
@@ -292,18 +292,6 @@
     return boot_class_path_fds_;
   }
 
-  const std::vector<int>& GetBootClassPathImageFds() const {
-    return boot_class_path_image_fds_;
-  }
-
-  const std::vector<int>& GetBootClassPathVdexFds() const {
-    return boot_class_path_vdex_fds_;
-  }
-
-  const std::vector<int>& GetBootClassPathOatFds() const {
-    return boot_class_path_oat_fds_;
-  }
-
   // Returns the checksums for the boot image, extensions and extra boot class path dex files,
   // based on the image spaces and boot class path dex files loaded in memory.
   const std::string& GetBootClassPathChecksums() const {
@@ -1151,9 +1139,6 @@
   std::vector<std::string> boot_class_path_locations_;
   std::string boot_class_path_checksums_;
   std::vector<int> boot_class_path_fds_;
-  std::vector<int> boot_class_path_image_fds_;
-  std::vector<int> boot_class_path_vdex_fds_;
-  std::vector<int> boot_class_path_oat_fds_;
   std::string class_path_string_;
   std::vector<std::string> properties_;
 
diff --git a/runtime/runtime_options.def b/runtime/runtime_options.def
index 209c3d8..f5085e0 100644
--- a/runtime/runtime_options.def
+++ b/runtime/runtime_options.def
@@ -41,9 +41,6 @@
 RUNTIME_OPTIONS_KEY (ParseStringList<':'>,BootClassPath)           // std::vector<std::string>
 RUNTIME_OPTIONS_KEY (ParseStringList<':'>,BootClassPathLocations)  // std::vector<std::string>
 RUNTIME_OPTIONS_KEY (ParseIntList<':'>,   BootClassPathFds)        // std::vector<int>
-RUNTIME_OPTIONS_KEY (ParseIntList<':'>,   BootClassPathImageFds)   // std::vector<int>
-RUNTIME_OPTIONS_KEY (ParseIntList<':'>,   BootClassPathVdexFds)    // std::vector<int>
-RUNTIME_OPTIONS_KEY (ParseIntList<':'>,   BootClassPathOatFds)     // std::vector<int>
 RUNTIME_OPTIONS_KEY (std::string,         ClassPath)
 RUNTIME_OPTIONS_KEY (ParseStringList<':'>,Image)
 RUNTIME_OPTIONS_KEY (Unit,                CheckJni)