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.cpp184
1 files changed, 0 insertions, 184 deletions
diff --git a/src/javascript/jsc/bindings/BunGCOutputConstraint.cpp b/src/javascript/jsc/bindings/BunGCOutputConstraint.cpp
deleted file mode 100644
index 97ee0761b..000000000
--- a/src/javascript/jsc/bindings/BunGCOutputConstraint.cpp
+++ /dev/null
@@ -1,184 +0,0 @@
-/*
- * Copyright (C) 2017-2022 Apple Inc. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY
- * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR
- * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
- * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-#include "config.h"
-
-#include "JavaScriptCore/WeakInlines.h"
-#include "JavaScriptCore/AbstractSlotVisitorInlines.h"
-
-#include "JavaScriptCore/VM.h"
-#include "JavaScriptCore/MarkingConstraint.h"
-
-// namespace JSC {
-
-// class VisitCounter {
-// public:
-// VisitCounter() {}
-
-// VisitCounter(AbstractSlotVisitor& visitor)
-// : m_visitor(&visitor)
-// , m_initialVisitCount(visitor.visitCount())
-// {
-// }
-
-// AbstractSlotVisitor& visitor() const { return *m_visitor; }
-
-// size_t visitCount() const
-// {
-// return m_visitor->visitCount() - m_initialVisitCount;
-// }
-
-// private:
-// AbstractSlotVisitor* m_visitor { nullptr };
-// size_t m_initialVisitCount { 0 };
-// };
-
-// static constexpr bool verboseMarkingConstraint = false;
-
-// MarkingConstraint::MarkingConstraint(CString abbreviatedName, CString name, ConstraintVolatility volatility, ConstraintConcurrency concurrency, ConstraintParallelism parallelism)
-// : m_abbreviatedName(abbreviatedName)
-// , m_name(WTFMove(name))
-// , m_volatility(volatility)
-// , m_concurrency(concurrency)
-// , m_parallelism(parallelism)
-// {
-// }
-
-// MarkingConstraint::~MarkingConstraint()
-// {
-// }
-
-// void MarkingConstraint::resetStats()
-// {
-// m_lastVisitCount = 0;
-// }
-
-// void MarkingConstraint::execute(SlotVisitor& visitor)
-// {
-// ASSERT(!visitor.heap()->isMarkingForGCVerifier());
-// VisitCounter visitCounter(visitor);
-// executeImpl(visitor);
-// m_lastVisitCount += visitCounter.visitCount();
-// if (verboseMarkingConstraint && visitCounter.visitCount())
-// dataLog("(", abbreviatedName(), " visited ", visitCounter.visitCount(), " in execute)");
-// }
-
-// void MarkingConstraint::executeSynchronously(AbstractSlotVisitor& visitor)
-// {
-// prepareToExecuteImpl(NoLockingNecessary, visitor);
-// executeImpl(visitor);
-// }
-
-// double MarkingConstraint::quickWorkEstimate(SlotVisitor&)
-// {
-// return 0;
-// }
-
-// double MarkingConstraint::workEstimate(SlotVisitor& visitor)
-// {
-// return lastVisitCount() + quickWorkEstimate(visitor);
-// }
-
-// void MarkingConstraint::prepareToExecute(const AbstractLocker& constraintSolvingLocker, SlotVisitor& visitor)
-// {
-// ASSERT(!visitor.heap()->isMarkingForGCVerifier());
-// dataLogIf(Options::logGC(), abbreviatedName());
-// VisitCounter visitCounter(visitor);
-// prepareToExecuteImpl(constraintSolvingLocker, visitor);
-// m_lastVisitCount = visitCounter.visitCount();
-// if (verboseMarkingConstraint && visitCounter.visitCount())
-// dataLog("(", abbreviatedName(), " visited ", visitCounter.visitCount(), " in prepareToExecute)");
-// }
-
-// void MarkingConstraint::doParallelWork(SlotVisitor& visitor, SharedTask<void(SlotVisitor&)>& task)
-// {
-// ASSERT(!visitor.heap()->isMarkingForGCVerifier());
-// VisitCounter visitCounter(visitor);
-// task.run(visitor);
-// if (verboseMarkingConstraint && visitCounter.visitCount())
-// dataLog("(", abbreviatedName(), " visited ", visitCounter.visitCount(), " in doParallelWork)");
-// {
-// Locker locker { m_lock };
-// m_lastVisitCount += visitCounter.visitCount();
-// }
-// }
-
-// void MarkingConstraint::prepareToExecuteImpl(const AbstractLocker&, AbstractSlotVisitor&)
-// {
-// }
-
-// } // namespace JSC
-
-#include "BunGCOutputConstraint.h"
-
-#include "WebCoreJSClientData.h"
-#include "JavaScriptCore/BlockDirectoryInlines.h"
-#include "JavaScriptCore/HeapInlines.h"
-#include "JavaScriptCore/MarkedBlockInlines.h"
-#include "JavaScriptCore/SubspaceInlines.h"
-
-namespace WebCore {
-
-using namespace JSC;
-
-DOMGCOutputConstraint::DOMGCOutputConstraint(VM& vm, JSHeapData& heapData)
- : MarkingConstraint("Domo", "DOM Output", ConstraintVolatility::SeldomGreyed, ConstraintConcurrency::Concurrent, ConstraintParallelism::Parallel)
- , m_vm(vm)
- , m_heapData(heapData)
- , m_lastExecutionVersion(vm.heap.mutatorExecutionVersion())
-{
-}
-
-DOMGCOutputConstraint::~DOMGCOutputConstraint()
-{
-}
-
-template<typename Visitor>
-void DOMGCOutputConstraint::executeImplImpl(Visitor& visitor)
-{
- Heap& heap = m_vm.heap;
-
- if (heap.mutatorExecutionVersion() == m_lastExecutionVersion)
- return;
-
- m_lastExecutionVersion = heap.mutatorExecutionVersion();
-
- m_heapData.forEachOutputConstraintSpace(
- [&](Subspace& subspace) {
- auto func = [](Visitor& visitor, HeapCell* heapCell, HeapCell::Kind) {
- SetRootMarkReasonScope rootScope(visitor, RootMarkReason::DOMGCOutput);
- JSCell* cell = static_cast<JSCell*>(heapCell);
- cell->methodTable()->visitOutputConstraints(cell, visitor);
- };
-
- RefPtr<SharedTask<void(Visitor&)>> task = subspace.template forEachMarkedCellInParallel<Visitor>(func);
- visitor.addParallelConstraintTask(task);
- });
-}
-
-void DOMGCOutputConstraint::executeImpl(AbstractSlotVisitor& visitor) { executeImplImpl(visitor); }
-void DOMGCOutputConstraint::executeImpl(SlotVisitor& visitor) { executeImplImpl(visitor); }
-
-} // namespace WebCore