Changeset 54022 in webkit for trunk/JavaScriptCore/runtime/StructureTransitionTable.h
- Timestamp:
- Jan 28, 2010, 2:51:06 PM (15 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/JavaScriptCore/runtime/StructureTransitionTable.h
r53320 r54022 70 70 class StructureTransitionTable { 71 71 typedef std::pair<Structure*, Structure*> Transition; 72 struct TransitionTable : public HashMap<StructureTransitionTableHash::Key, Transition, StructureTransitionTableHash, StructureTransitionTableHashTraits> { 73 typedef HashMap<unsigned, Structure*> AnonymousSlotMap; 74 75 void addSlotTransition(unsigned count, Structure* structure) 76 { 77 ASSERT(!getSlotTransition(count)); 78 if (!m_anonymousSlotTable) 79 m_anonymousSlotTable.set(new AnonymousSlotMap); 80 m_anonymousSlotTable->add(count, structure); 81 } 82 83 void removeSlotTransition(unsigned count) 84 { 85 ASSERT(getSlotTransition(count)); 86 m_anonymousSlotTable->remove(count); 87 } 88 89 Structure* getSlotTransition(unsigned count) 90 { 91 if (!m_anonymousSlotTable) 92 return 0; 93 94 AnonymousSlotMap::iterator find = m_anonymousSlotTable->find(count); 95 if (find == m_anonymousSlotTable->end()) 96 return 0; 97 return find->second; 98 } 99 private: 100 OwnPtr<AnonymousSlotMap> m_anonymousSlotTable; 101 }; 72 typedef HashMap<StructureTransitionTableHash::Key, Transition, StructureTransitionTableHash, StructureTransitionTableHashTraits> TransitionTable; 102 73 public: 103 74 StructureTransitionTable() { … … 155 126 } 156 127 157 Structure* getAnonymousSlotTransition(unsigned count)158 {159 if (usingSingleTransitionSlot())160 return 0;161 return table()->getSlotTransition(count);162 }163 164 void addAnonymousSlotTransition(unsigned count, Structure* structure)165 {166 if (usingSingleTransitionSlot())167 reifySingleTransition();168 ASSERT(!table()->getSlotTransition(count));169 table()->addSlotTransition(count, structure);170 }171 172 void removeAnonymousSlotTransition(unsigned count)173 {174 ASSERT(!usingSingleTransitionSlot());175 table()->removeSlotTransition(count);176 }177 128 private: 178 129 TransitionTable* table() const { ASSERT(!usingSingleTransitionSlot()); return m_transitions.m_table; }
Note:
See TracChangeset
for help on using the changeset viewer.