Index: runtime/vm/snapshot.cc |
diff --git a/runtime/vm/snapshot.cc b/runtime/vm/snapshot.cc |
index 9c7997583372c672287080ad6e83e0de8e631cf6..9d794fb6105864c257db464731f247c4f1478a29 100644 |
--- a/runtime/vm/snapshot.cc |
+++ b/runtime/vm/snapshot.cc |
@@ -1333,6 +1333,13 @@ RawObject* SnapshotReader::ReadVMIsolateObject(intptr_t header_value) { |
} |
} |
+ // Check if it is a singleton ICData array object. |
+ for (intptr_t i = 0; i < ICData::kCachedICDataArrayCount; i++) { |
+ if (object_id == (kCachedICDataArray0 + i)) { |
+ return ICData::cached_icdata_arrays_[i]; |
+ } |
+ } |
+ |
ASSERT(Symbols::IsVMSymbolId(object_id)); |
return Symbols::GetVMSymbol(object_id); // return VM symbol. |
} |
@@ -1675,6 +1682,14 @@ bool SnapshotWriter::HandleVMIsolateObject(RawObject* rawobj) { |
} |
} |
+ // Check if it is a singleton ICData array object. |
+ for (intptr_t i = 0; i < ICData::kCachedICDataArrayCount; i++) { |
+ if (rawobj == ICData::cached_icdata_arrays_[i]) { |
+ WriteVMIsolateObject(kCachedICDataArray0 + i); |
+ return true; |
+ } |
+ } |
+ |
if (kind() == Snapshot::kFull) { |
// Check it is a predefined symbol in the VM isolate. |
id = Symbols::LookupVMSymbol(rawobj); |