PutByIdAccess()
: m_type(Invalid)
+ , m_chainCount(UINT_MAX)
{
}
AccessType accessType,
Structure* structure,
StructureChain* chain,
+ unsigned chainCount,
PutPropertySlot::PutValueFunc customSetter,
PassRefPtr<JITStubRoutine> stubRoutine)
{
PutByIdAccess result;
result.m_oldStructure.set(vm, owner, structure);
result.m_type = accessType;
- if (chain)
+ if (chain) {
result.m_chain.set(vm, owner, chain);
+ result.m_chainCount = chainCount;
+ }
result.m_customSetter = customSetter;
result.m_stubRoutine = stubRoutine;
return result;
Structure* structure() const
{
- ASSERT(isReplace());
+ ASSERT(isReplace() || isSetter() || isCustom());
return m_oldStructure.get();
}
return m_chain.get();
}
+ unsigned chainCount() const
+ {
+ ASSERT(isSetter() || isCustom());
+ return m_chainCount;
+ }
+
JITStubRoutine* stubRoutine() const
{
ASSERT(isTransition() || isReplace() || isSetter() || isCustom());
WriteBarrier<Structure> m_oldStructure;
WriteBarrier<Structure> m_newStructure;
WriteBarrier<StructureChain> m_chain;
+ unsigned m_chainCount;
PutPropertySlot::PutValueFunc m_customSetter;
RefPtr<JITStubRoutine> m_stubRoutine;
};