Don't recursively take ClassLinker::dex_lock_.
Fix for Bug: 9285048.
Change-Id: I4bdefdc7e1de2eec6488e8d629147d9699f4d099
diff --git a/src/class_linker.cc b/src/class_linker.cc
index 0c5c9da..5df99b0 100644
--- a/src/class_linker.cc
+++ b/src/class_linker.cc
@@ -728,10 +728,9 @@
return NULL;
}
-static const DexFile* FindDexFileInOatLocation(const std::string& dex_location,
- uint32_t dex_location_checksum,
- const std::string& oat_location)
- SHARED_LOCKS_REQUIRED(Locks::mutator_lock_) {
+const DexFile* ClassLinker::FindDexFileInOatLocation(const std::string& dex_location,
+ uint32_t dex_location_checksum,
+ const std::string& oat_location) {
UniquePtr<OatFile> oat_file(OatFile::Open(oat_location, oat_location, NULL));
if (oat_file.get() == NULL) {
return NULL;
@@ -752,7 +751,7 @@
if (oat_dex_file->GetDexFileLocationChecksum() != dex_location_checksum) {
return NULL;
}
- runtime->GetClassLinker()->RegisterOatFile(*oat_file.release());
+ RegisterOatFileLocked(*oat_file.release());
return oat_dex_file->OpenDexFile();
}