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
|