|
Lines 211-217
Structure::Structure(VM& vm)
Source/JavaScriptCore/runtime/Structure.cpp_sec1
|
| 211 |
ASSERT(hasGetterSetterProperties() || !m_classInfo->hasStaticSetterOrReadonlyProperties(vm)); |
211 |
ASSERT(hasGetterSetterProperties() || !m_classInfo->hasStaticSetterOrReadonlyProperties(vm)); |
| 212 |
} |
212 |
} |
| 213 |
|
213 |
|
| 214 |
Structure::Structure(VM& vm, const Structure* previous) |
214 |
Structure::Structure(VM& vm, Structure* previous) |
| 215 |
: JSCell(vm, vm.structureStructure.get()) |
215 |
: JSCell(vm, vm.structureStructure.get()) |
| 216 |
, m_prototype(vm, this, previous->storedPrototype()) |
216 |
, m_prototype(vm, this, previous->storedPrototype()) |
| 217 |
, m_classInfo(previous->m_classInfo) |
217 |
, m_classInfo(previous->m_classInfo) |
|
Lines 236-243
Structure::Structure(VM& vm, const Struc
Source/JavaScriptCore/runtime/Structure.cpp_sec2
|
| 236 |
ASSERT(!previous->typeInfo().structureIsImmortal()); |
236 |
ASSERT(!previous->typeInfo().structureIsImmortal()); |
| 237 |
if (previous->typeInfo().structureHasRareData() && previous->rareData()->needsCloning()) |
237 |
if (previous->typeInfo().structureHasRareData() && previous->rareData()->needsCloning()) |
| 238 |
cloneRareDataFrom(vm, previous); |
238 |
cloneRareDataFrom(vm, previous); |
| 239 |
else if (previous->previousID()) |
239 |
setPreviousID(vm, this, previous); |
| 240 |
m_previousOrRareData.set(vm, this, previous->previousID()); |
|
|
| 241 |
|
240 |
|
| 242 |
previous->notifyTransitionFromThisStructure(); |
241 |
previous->notifyTransitionFromThisStructure(); |
| 243 |
if (previous->m_globalObject) |
242 |
if (previous->m_globalObject) |
|
Lines 459-465
Structure* Structure::addPropertyTransit
Source/JavaScriptCore/runtime/Structure.cpp_sec3
|
| 459 |
Structure* transition = create(vm, structure); |
458 |
Structure* transition = create(vm, structure); |
| 460 |
|
459 |
|
| 461 |
transition->m_cachedPrototypeChain.setMayBeNull(vm, transition, structure->m_cachedPrototypeChain.get()); |
460 |
transition->m_cachedPrototypeChain.setMayBeNull(vm, transition, structure->m_cachedPrototypeChain.get()); |
| 462 |
transition->setPreviousID(vm, transition, structure); |
|
|
| 463 |
transition->m_nameInPrevious = propertyName.uid(); |
461 |
transition->m_nameInPrevious = propertyName.uid(); |
| 464 |
transition->m_attributesInPrevious = attributes; |
462 |
transition->m_attributesInPrevious = attributes; |
| 465 |
transition->m_specificValueInPrevious.setMayBeNull(vm, transition, specificValue); |
463 |
transition->m_specificValueInPrevious.setMayBeNull(vm, transition, specificValue); |
|
Lines 672-678
Structure* Structure::nonPropertyTransit
Source/JavaScriptCore/runtime/Structure.cpp_sec4
|
| 672 |
} |
670 |
} |
| 673 |
|
671 |
|
| 674 |
Structure* transition = create(vm, structure); |
672 |
Structure* transition = create(vm, structure); |
| 675 |
transition->setPreviousID(vm, transition, structure); |
|
|
| 676 |
transition->m_attributesInPrevious = attributes; |
673 |
transition->m_attributesInPrevious = attributes; |
| 677 |
transition->m_blob.setIndexingType(indexingType); |
674 |
transition->m_blob.setIndexingType(indexingType); |
| 678 |
transition->propertyTable().set(vm, transition, structure->takePropertyTableOrCloneIfPinned(vm, transition)); |
675 |
transition->propertyTable().set(vm, transition, structure->takePropertyTableOrCloneIfPinned(vm, transition)); |