Changeset 79355 in webkit for trunk/Source/JavaScriptCore/runtime/Structure.h
- Timestamp:
- Feb 22, 2011, 1:49:59 PM (14 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/JavaScriptCore/runtime/Structure.h
r79132 r79355 116 116 return get(propertyName.impl(), attributes, specificValue); 117 117 } 118 bool transitionedFor(const JSCell* specificValue)119 {120 return m_specificValueInPrevious == specificValue;121 }122 bool hasTransition(StringImpl*, unsigned attributes);123 bool hasTransition(const Identifier& propertyName, unsigned attributes)124 {125 return hasTransition(propertyName.impl(), attributes);126 }127 118 128 119 bool hasGetterSetterProperties() const { return m_hasGetterSetterProperties; } … … 191 182 } 192 183 193 typedef std::pair<Structure*, Structure*> Transition;194 typedef HashMap<StructureTransitionTableHash::Key, Transition, StructureTransitionTableHash, StructureTransitionTableHashTraits> TransitionTable;195 196 inline bool transitionTableContains(const StructureTransitionTableHash::Key& key, JSCell* specificValue);197 inline void transitionTableRemove(const StructureTransitionTableHash::Key& key, JSCell* specificValue);198 inline void transitionTableAdd(const StructureTransitionTableHash::Key& key, Structure* structure, JSCell* specificValue);199 inline bool transitionTableHasTransition(const StructureTransitionTableHash::Key& key) const;200 inline Structure* transitionTableGet(const StructureTransitionTableHash::Key& key, JSCell* specificValue) const;201 202 TransitionTable* transitionTable() const { ASSERT(!m_isUsingSingleSlot); return m_transitions.m_table; }203 inline void setTransitionTable(TransitionTable* table);204 Structure* singleTransition() const { ASSERT(m_isUsingSingleSlot); return m_transitions.m_singleTransition; }205 void setSingleTransition(Structure* structure) { ASSERT(m_isUsingSingleSlot); m_transitions.m_singleTransition = structure; }206 207 184 bool isValid(ExecState*, StructureChain* cachedPrototypeChain) const; 208 185 … … 226 203 const ClassInfo* m_classInfo; 227 204 228 // 'm_isUsingSingleSlot' indicates whether we are using the single transition optimisation. 229 union { 230 TransitionTable* m_table; 231 Structure* m_singleTransition; 232 } m_transitions; 205 StructureTransitionTable m_transitionTable; 233 206 234 207 WeakGCPtr<JSPropertyNameIterator> m_enumerationCache; … … 255 228 unsigned m_specificFunctionThrashCount : 2; 256 229 unsigned m_anonymousSlotCount : 5; 257 unsigned m_isUsingSingleSlot : 1; 258 // 4 free bits 230 // 5 free bits 259 231 }; 260 232
Note:
See TracChangeset
for help on using the changeset viewer.