+ , m_specificFunctionThrashCount(0)
+ , m_preventExtensions(false)
+ , m_didTransition(false)
+ , m_staticFunctionReified(false)
+{
+ ASSERT(inlineCapacity <= JSFinalObject::maxInlineCapacity());
+ ASSERT(static_cast<PropertyOffset>(inlineCapacity) < firstOutOfLineOffset);
+ ASSERT(!typeInfo.structureHasRareData());
+}
+
+const ClassInfo Structure::s_info = { "Structure", 0, 0, 0, CREATE_METHOD_TABLE(Structure) };
+
+Structure::Structure(VM& vm)
+ : JSCell(CreatingEarlyCell)
+ , m_prototype(vm, this, jsNull())
+ , m_classInfo(&s_info)
+ , m_transitionWatchpointSet(InitializedWatching)
+ , m_offset(invalidOffset)
+ , m_typeInfo(CompoundType, OverridesVisitChildren)
+ , m_indexingType(0)
+ , m_inlineCapacity(0)
+ , m_dictionaryKind(NoneDictionaryKind)
+ , m_isPinnedPropertyTable(false)
+ , m_hasGetterSetterProperties(false)
+ , m_hasReadOnlyOrGetterSetterPropertiesExcludingProto(false)
+ , m_hasNonEnumerableProperties(false)
+ , m_attributesInPrevious(0)
+ , m_specificFunctionThrashCount(0)
+ , m_preventExtensions(false)
+ , m_didTransition(false)
+ , m_staticFunctionReified(false)
+{
+}
+
+Structure::Structure(VM& vm, const Structure* previous)
+ : JSCell(vm, vm.structureStructure.get())
+ , m_prototype(vm, this, previous->storedPrototype())
+ , m_classInfo(previous->m_classInfo)
+ , m_transitionWatchpointSet(InitializedWatching)
+ , m_offset(invalidOffset)
+ , m_typeInfo(previous->typeInfo().type(), previous->typeInfo().flags() & ~StructureHasRareData)
+ , m_indexingType(previous->indexingTypeIncludingHistory())
+ , m_inlineCapacity(previous->m_inlineCapacity)
+ , m_dictionaryKind(previous->m_dictionaryKind)
+ , m_isPinnedPropertyTable(false)
+ , m_hasGetterSetterProperties(previous->m_hasGetterSetterProperties)
+ , m_hasReadOnlyOrGetterSetterPropertiesExcludingProto(previous->m_hasReadOnlyOrGetterSetterPropertiesExcludingProto)
+ , m_hasNonEnumerableProperties(previous->m_hasNonEnumerableProperties)
+ , m_attributesInPrevious(0)
+ , m_specificFunctionThrashCount(previous->m_specificFunctionThrashCount)
+ , m_preventExtensions(previous->m_preventExtensions)
+ , m_didTransition(true)
+ , m_staticFunctionReified(previous->m_staticFunctionReified)