Structure* Structure::toDictionaryTransition(VM& vm, Structure* structure, DictionaryKind kind, DeferredStructureTransitionWatchpointFire* deferred) { ASSERT(!structure->isUncacheableDictionary()); Structure* transition = create(vm, structure, deferred); DeferGC deferGC(vm.heap); structure->materializePropertyMapIfNecessary(vm, deferGC); transition->propertyTable().set(vm, transition, structure->copyPropertyTableForPinning(vm)); transition->m_offset = structure->m_offset; transition->setDictionaryKind(kind); transition->pin(); transition->setHasBeenDictionary(true); transition->checkOffsetConsistency(); return transition; }