void DOMGCOutputConstraint::executeImpl(SlotVisitor& visitor) { Heap& heap = m_vm.heap; if (heap.mutatorExecutionVersion() == m_lastExecutionVersion) return; m_lastExecutionVersion = heap.mutatorExecutionVersion(); m_clientData.forEachOutputConstraintSpace( [&] (Subspace& subspace) { auto func = [] (SlotVisitor& visitor, HeapCell* heapCell, HeapCell::Kind) { SetRootMarkReasonScope rootScope(visitor, SlotVisitor::RootMarkReason::DOMGCOutput); JSCell* cell = static_cast<JSCell*>(heapCell); cell->methodTable(visitor.vm())->visitOutputConstraints(cell, visitor); }; visitor.addParallelConstraintTask(subspace.forEachMarkedCellInParallel(func)); }); }