Fix combined checksum calculation to use isa.

Bug: 28054110

(cherry-picked from commit 8bbda8e683a1933755d0b8a68fed620cd63148ee)

Change-Id: I228db6ea1003e4e70d6a5fa7345d56409e70bd87
diff --git a/runtime/oat_file_assistant.cc b/runtime/oat_file_assistant.cc
index f0768f9..78e372a 100644
--- a/runtime/oat_file_assistant.cc
+++ b/runtime/oat_file_assistant.cc
@@ -940,18 +940,27 @@
     }
     image_info_load_succeeded_ = (!image_spaces.empty());
 
-    combined_image_checksum_ = CalculateCombinedImageChecksum();
+    combined_image_checksum_ = CalculateCombinedImageChecksum(isa_);
   }
   return image_info_load_succeeded_ ? &cached_image_info_ : nullptr;
 }
 
 // TODO: Use something better than xor.
-uint32_t OatFileAssistant::CalculateCombinedImageChecksum() {
+uint32_t OatFileAssistant::CalculateCombinedImageChecksum(InstructionSet isa) {
   uint32_t checksum = 0;
   std::vector<gc::space::ImageSpace*> image_spaces =
       Runtime::Current()->GetHeap()->GetBootImageSpaces();
-  for (gc::space::ImageSpace* image_space : image_spaces) {
-    checksum ^= image_space->GetImageHeader().GetOatChecksum();
+  if (isa == kRuntimeISA) {
+    for (gc::space::ImageSpace* image_space : image_spaces) {
+      checksum ^= image_space->GetImageHeader().GetOatChecksum();
+    }
+  } else {
+    for (gc::space::ImageSpace* image_space : image_spaces) {
+      std::string location = image_space->GetImageLocation();
+      std::unique_ptr<ImageHeader> image_header(
+          gc::space::ImageSpace::ReadImageHeaderOrDie(location.c_str(), isa));
+      checksum ^= image_header->GetOatChecksum();
+    }
   }
   return checksum;
 }