SlotVisitorInlines.h [plain text]
#pragma once
#include "SlotVisitor.h"
#include "Weak.h"
#include "WeakInlines.h"
namespace JSC {
inline void SlotVisitor::appendUnbarriered(JSValue* slot, size_t count)
{
for (size_t i = count; i--;)
appendUnbarriered(slot[i]);
}
inline void SlotVisitor::appendUnbarriered(JSCell* cell)
{
appendUnbarriered(JSValue(cell));
}
template<typename T>
inline void SlotVisitor::append(const Weak<T>& weak)
{
appendUnbarriered(weak.get());
}
template<typename T>
inline void SlotVisitor::append(const WriteBarrierBase<T>& slot)
{
appendUnbarriered(slot.get());
}
template<typename T>
inline void SlotVisitor::appendHidden(const WriteBarrierBase<T>& slot)
{
appendHidden(slot.get());
}
template<typename Iterator>
inline void SlotVisitor::append(Iterator begin, Iterator end)
{
for (auto it = begin; it != end; ++it)
append(*it);
}
inline void SlotVisitor::appendValues(const WriteBarrierBase<Unknown>* barriers, size_t count)
{
for (size_t i = 0; i < count; ++i)
append(barriers[i]);
}
inline void SlotVisitor::appendValuesHidden(const WriteBarrierBase<Unknown>* barriers, size_t count)
{
for (size_t i = 0; i < count; ++i)
appendHidden(barriers[i]);
}
inline void SlotVisitor::reportExtraMemoryVisited(size_t size)
{
if (m_isFirstVisit)
heap()->reportExtraMemoryVisited(size);
}
#if ENABLE(RESOURCE_USAGE)
inline void SlotVisitor::reportExternalMemoryVisited(size_t size)
{
if (m_isFirstVisit)
heap()->reportExternalMemoryVisited(size);
}
#endif
inline Heap* SlotVisitor::heap() const
{
return &m_heap;
}
inline VM& SlotVisitor::vm()
{
return *m_heap.m_vm;
}
inline const VM& SlotVisitor::vm() const
{
return *m_heap.m_vm;
}
}