330 {
331
332
333 auto isolate_group = thread->isolate_group();
334 Heap* heap = isolate_group->heap();
335
336
337 isolate_group->ReleaseStoreBuffers();
338 isolate_group->store_buffer()->Reset();
339
340 ForwardPointersVisitor pointer_visitor(thread);
341
342 {
343
344 WritableCodeLiteralsScope writable_code(heap);
345 ForwardHeapPointersVisitor object_visitor(&pointer_visitor);
346 heap->VisitObjects(&object_visitor);
347 pointer_visitor.VisitingObject(nullptr);
348 }
349
350
351 isolate_group->VisitObjectPointers(&pointer_visitor,
353#ifndef PRODUCT
354 isolate_group->ForEachIsolate(
355 [&](Isolate* isolate) {
356 ObjectIdRing* ring = isolate->object_id_ring();
357 if (ring != nullptr) {
358 ring->VisitPointers(&pointer_visitor);
359 }
360 },
361 true);
362#endif
363
364
365 ForwardHeapPointersHandleVisitor handle_visitor(thread);
366 isolate_group->VisitWeakPersistentHandles(&handle_visitor);
367}