StructureRareDataInlines.h [plain text]
#pragma once
#include "JSImmutableButterfly.h"
#include "JSPropertyNameEnumerator.h"
#include "JSString.h"
#include "StructureRareData.h"
namespace JSC {
inline void StructureRareData::setPreviousID(VM& vm, Structure* structure)
{
m_previous.set(vm, this, structure);
}
inline void StructureRareData::clearPreviousID()
{
m_previous.clear();
}
inline JSString* StructureRareData::objectToStringValue() const
{
return m_objectToStringValue.get();
}
inline JSPropertyNameEnumerator* StructureRareData::cachedPropertyNameEnumerator() const
{
return m_cachedPropertyNameEnumerator.get();
}
inline void StructureRareData::setCachedPropertyNameEnumerator(VM& vm, JSPropertyNameEnumerator* enumerator)
{
m_cachedPropertyNameEnumerator.set(vm, this, enumerator);
}
inline JSImmutableButterfly* StructureRareData::cachedOwnKeys() const
{
ASSERT(!isCompilationThread());
auto* butterfly = m_cachedOwnKeys.unvalidatedGet();
if (butterfly == cachedOwnKeysSentinel())
return nullptr;
return butterfly;
}
inline JSImmutableButterfly* StructureRareData::cachedOwnKeysIgnoringSentinel() const
{
ASSERT(!isCompilationThread());
return m_cachedOwnKeys.unvalidatedGet();
}
inline JSImmutableButterfly* StructureRareData::cachedOwnKeysConcurrently() const
{
auto* butterfly = m_cachedOwnKeys.unvalidatedGet();
if (butterfly == cachedOwnKeysSentinel())
return nullptr;
return butterfly;
}
inline void StructureRareData::setCachedOwnKeys(VM& vm, JSImmutableButterfly* butterfly)
{
if (butterfly == cachedOwnKeysSentinel()) {
m_cachedOwnKeys.setWithoutWriteBarrier(butterfly);
return;
}
WTF::storeStoreFence();
m_cachedOwnKeys.set(vm, this, butterfly);
}
}