aboutsummaryrefslogtreecommitdiff
path: root/src/javascript/jsc/bindings/BunGCOutputConstraint.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/javascript/jsc/bindings/BunGCOutputConstraint.cpp')
-rw-r--r--src/javascript/jsc/bindings/BunGCOutputConstraint.cpp101
1 files changed, 50 insertions, 51 deletions
diff --git a/src/javascript/jsc/bindings/BunGCOutputConstraint.cpp b/src/javascript/jsc/bindings/BunGCOutputConstraint.cpp
index 53f4bbb90..ef5bba244 100644
--- a/src/javascript/jsc/bindings/BunGCOutputConstraint.cpp
+++ b/src/javascript/jsc/bindings/BunGCOutputConstraint.cpp
@@ -1,53 +1,52 @@
-// #include "BunGCOutputConstraint.h"
-
-// #include "BunClientData.h"
-// #include <JavaScriptCore/BlockDirectoryInlines.h>
-// #include <JavaScriptCore/HeapInlines.h>
-// #include <JavaScriptCore/MarkedBlockInlines.h>
-// #include <JavaScriptCore/MarkingConstraint.h>
-// #include <JavaScriptCore/SubspaceInlines.h>
-// #include <JavaScriptCore/VM.h>
-
-// 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<typename Visitor> 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<JSCell*>(heapCell);
-// cell->methodTable(visitor.vm())->visitOutputConstraints(cell, visitor);
-// };
-
-// RefPtr<SharedTask<void(Visitor&)>> task = subspace.template forEachMarkedCellInParallel<Visitor>(func);
-// visitor.addParallelConstraintTask(task);
-// });
-// }
-
-// void BunGCOutputConstraint::executeImpl(AbstractSlotVisitor& visitor)
-// {
-// executeImplImpl(visitor);
-// }
-// void BunGCOutputConstraint::executeImpl(SlotVisitor& visitor) { executeImplImpl(visitor); }
-
-// } // namespace Bun
+#include "BunGCOutputConstraint.h"
+
+#include "BunClientData.h"
+#include "JavaScriptCore/BlockDirectoryInlines.h"
+#include "JavaScriptCore/HeapInlines.h"
+#include "JavaScriptCore/MarkedBlockInlines.h"
+#include "JavaScriptCore/MarkingConstraint.h"
+#include "JavaScriptCore/SubspaceInlines.h"
+#include "JavaScriptCore/VM.h"
+
+namespace WebCore {
+
+using namespace JSC;
+
+BunGCOutputConstraint::BunGCOutputConstraint(VM& vm, WebCore::JSVMClientData& clientData)
+ : MarkingConstraint("Domo", "DOM Output", ConstraintVolatility::SeldomGreyed, ConstraintConcurrency::Concurrent, ConstraintParallelism::Parallel)
+ , m_vm(vm)
+ , m_clientData(clientData)
+ , m_lastExecutionVersion(vm.heap.mutatorExecutionVersion())
+{
+}
+
+template<typename Visitor> 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<JSCell*>(heapCell);
+ cell->methodTable(visitor.vm())->visitOutputConstraints(cell, visitor);
+ };
+
+ RefPtr<SharedTask<void(Visitor&)>> task = subspace.template forEachMarkedCellInParallel<Visitor>(func);
+ visitor.addParallelConstraintTask(task);
+ });
+}
+
+void BunGCOutputConstraint::executeImpl(AbstractSlotVisitor& visitor)
+{
+ executeImplImpl(visitor);
+}
+void BunGCOutputConstraint::executeImpl(SlotVisitor& visitor) { executeImplImpl(visitor); }
+
+} // namespace WebCore