aboutsummaryrefslogtreecommitdiff
path: root/src/javascript/jsc/bindings/BunGCOutputConstraint.cpp
blob: bc99ef2e226ee1dade00fa44091590e8fc606511 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47


// #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