Index: src/snapshot/deserializer.cc |
diff --git a/src/snapshot/deserializer.cc b/src/snapshot/deserializer.cc |
index 288308776663a389b968e8aca56f09fed65da150..38f41caa2727d77d33daf1d217d04a225bc3b097 100644 |
--- a/src/snapshot/deserializer.cc |
+++ b/src/snapshot/deserializer.cc |
@@ -54,6 +54,14 @@ void Deserializer::FlushICacheForNewCodeObjectsAndRecordEmbeddedObjects() { |
} |
} |
+void Deserializer::RecordWritesForLargeObjects() { |
+ Heap* heap = isolate_->heap(); |
+ if (!heap->incremental_marking()->black_allocation()) return; |
+ for (HeapObject* object : deserialized_large_objects_) { |
+ heap->incremental_marking()->IterateBlackObject(object); |
+ } |
+} |
+ |
bool Deserializer::ReserveSpace() { |
#ifdef DEBUG |
for (int i = NEW_SPACE; i < kNumberOfSpaces; ++i) { |
@@ -171,6 +179,7 @@ MaybeHandle<HeapObject> Deserializer::DeserializeObject(Isolate* isolate) { |
VisitRootPointer(Root::kPartialSnapshotCache, &root); |
DeserializeDeferredObjects(); |
FlushICacheForNewCodeObjectsAndRecordEmbeddedObjects(); |
+ RecordWritesForLargeObjects(); |
Hannes Payer (out of office)
2017/05/09 21:19:51
Ideally, we would move this one into RegisterReser
Jakob Kummerow
2017/05/10 11:09:07
Done.
|
result = Handle<HeapObject>(HeapObject::cast(root)); |
isolate->heap()->RegisterReservationsForBlackAllocation(reservations_); |
Hannes Payer (out of office)
2017/05/09 21:19:51
I guess that means we never have reservations for
Jakob Kummerow
2017/05/10 11:09:07
Correct; LO space doesn't use reservations (becaus
|
} |