Don't return kPatchOatNeeded if there is no patch info.
Bug: 27693977
Change-Id: Ie1f27cc45f3cb434108a375136480cb92fd95e26
diff --git a/runtime/oat_file_assistant.cc b/runtime/oat_file_assistant.cc
index 096296b..bb90d46 100644
--- a/runtime/oat_file_assistant.cc
+++ b/runtime/oat_file_assistant.cc
@@ -166,15 +166,11 @@
// See if we can get an up-to-date file by running patchoat.
if (compilation_desired) {
- if (odex_okay && OdexFileNeedsRelocation()) {
- // TODO: don't return kPatchOatNeeded if the odex file contains no
- // patch information.
+ if (odex_okay && OdexFileNeedsRelocation() && OdexFileHasPatchInfo()) {
return kPatchOatNeeded;
}
- if (oat_okay && OatFileNeedsRelocation()) {
- // TODO: don't return kSelfPatchOatNeeded if the oat file contains no
- // patch information.
+ if (oat_okay && OatFileNeedsRelocation() && OatFileHasPatchInfo()) {
return kSelfPatchOatNeeded;
}
}
@@ -863,6 +859,11 @@
return (odex_file != nullptr && odex_file->IsExecutable());
}
+bool OatFileAssistant::OdexFileHasPatchInfo() {
+ const OatFile* odex_file = GetOdexFile();
+ return (odex_file != nullptr && odex_file->HasPatchInfo());
+}
+
void OatFileAssistant::ClearOdexFileCache() {
odex_file_load_attempted_ = false;
cached_odex_file_.reset();
@@ -899,6 +900,11 @@
return (oat_file != nullptr && oat_file->IsExecutable());
}
+bool OatFileAssistant::OatFileHasPatchInfo() {
+ const OatFile* oat_file = GetOatFile();
+ return (oat_file != nullptr && oat_file->HasPatchInfo());
+}
+
void OatFileAssistant::ClearOatFileCache() {
oat_file_load_attempted_ = false;
cached_oat_file_.reset();