MarkingConstraint.cpp [plain text]
#include "config.h"
#include "MarkingConstraint.h"
#include "JSCInlines.h"
namespace JSC {
MarkingConstraint::MarkingConstraint(
CString abbreviatedName, CString name,
::Function<void(SlotVisitor&, const VisitingTimeout&)> executeFunction,
ConstraintVolatility volatility)
: m_abbreviatedName(abbreviatedName)
, m_name(WTFMove(name))
, m_executeFunction(WTFMove(executeFunction))
, m_volatility(volatility)
{
}
MarkingConstraint::MarkingConstraint(
CString abbreviatedName, CString name,
::Function<void(SlotVisitor&, const VisitingTimeout&)> executeFunction,
::Function<double(SlotVisitor&)> quickWorkEstimateFunction,
ConstraintVolatility volatility)
: m_abbreviatedName(abbreviatedName)
, m_name(WTFMove(name))
, m_executeFunction(WTFMove(executeFunction))
, m_quickWorkEstimateFunction(WTFMove(quickWorkEstimateFunction))
, m_volatility(volatility)
{
}
MarkingConstraint::~MarkingConstraint()
{
}
void MarkingConstraint::resetStats()
{
m_lastVisitCount = 0;
}
void MarkingConstraint::execute(SlotVisitor& visitor, bool& didVisitSomething, MonotonicTime timeout)
{
if (Options::logGC())
dataLog(abbreviatedName());
VisitingTimeout visitingTimeout(visitor, didVisitSomething, timeout);
m_executeFunction(visitor, visitingTimeout);
m_lastVisitCount = visitingTimeout.visitCount(visitor);
didVisitSomething = visitingTimeout.didVisitSomething(visitor);
}
}