aboutsummaryrefslogtreecommitdiff
path: root/src/javascript/jsc/bindings/BunGCOutputConstraint.cpp
blob: 53f4bbb9092363f0d758d9603d4425528ffdb8b2 (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
48
49
50
51
52
53


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