// #include "BunGCOutputConstraint.h" // #include "BunClientData.h" // #include // #include // #include // #include // #include // #include // namespace Bun { // using namespace JSC; // BunGCOutputConstraint::BunGCOutputConstraint(VM &vm, Bun::JSVMClientData &clientData) // : MarkingConstraint("Domo", "DOM Output", ConstraintVolatility::SeldomGreyed, // ConstraintConcurrency::Concurrent, ConstraintParallelism::Parallel), // m_vm(vm), // m_clientData(clientData), // m_lastExecutionVersion(vm.heap.mutatorExecutionVersion()) {} // template void BunGCOutputConstraint::executeImplImpl(Visitor &visitor) { // Heap &heap = m_vm.heap; // if (heap.mutatorExecutionVersion() == m_lastExecutionVersion) return; // m_lastExecutionVersion = heap.mutatorExecutionVersion(); // m_clientData.forEachOutputConstraintSpace([&](Subspace &subspace) { // auto func = [](Visitor &visitor, HeapCell *heapCell, HeapCell::Kind) { // SetRootMarkReasonScope rootScope(visitor, RootMarkReason::DOMGCOutput); // JSCell *cell = static_cast(heapCell); // cell->methodTable(visitor.vm())->visitOutputConstraints(cell, visitor); // }; // RefPtr> task = // subspace.template forEachMarkedCellInParallel(func); // visitor.addParallelConstraintTask(task); // }); // } // void BunGCOutputConstraint::executeImpl(AbstractSlotVisitor &visitor) { executeImplImpl(visitor); // } void BunGCOutputConstraint::executeImpl(SlotVisitor &visitor) { executeImplImpl(visitor); } // } // namespace Bun