Changeset 34792 in webkit for trunk/JavaScriptCore
- Timestamp:
- Jun 25, 2008, 12:15:20 AM (17 years ago)
- Location:
- trunk/JavaScriptCore
- Files:
-
- 4 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/JavaScriptCore/ChangeLog
r34791 r34792 1 2008-06-25 Alexey Proskuryakov <[email protected]> 2 3 Forgot to address a review comment about better names for tracked objects, doing it now. 4 5 * kjs/JSGlobalData.cpp: 6 (KJS::JSGlobalData::JSGlobalData): 7 * kjs/JSGlobalData.h: 8 * kjs/nodes.cpp: 9 (KJS::ParserRefCounted::ParserRefCounted): 10 (KJS::ParserRefCounted::ref): 11 (KJS::ParserRefCounted::deref): 12 (KJS::ParserRefCounted::hasOneRef): 13 (KJS::ParserRefCounted::deleteNewObjects): 14 1 15 2008-06-25 Alexey Proskuryakov <[email protected]> 2 16 -
trunk/JavaScriptCore/kjs/JSGlobalData.cpp
r34791 r34792 78 78 , identifierTable(createIdentifierTable()) 79 79 , propertyNames(new CommonIdentifiers(this)) 80 , new TrackedObjects(0)81 , trackedObjectExtraRefCounts(0)80 , newParserObjects(0) 81 , parserObjectExtraRefCounts(0) 82 82 , lexer(new Lexer(this)) 83 83 , parser(new Parser) -
trunk/JavaScriptCore/kjs/JSGlobalData.h
r34791 r34792 74 74 75 75 // Tracked object sets are transient, only needed when parsing. 76 HashSet<ParserRefCounted*>* new TrackedObjects;77 HashCountedSet<ParserRefCounted*>* trackedObjectExtraRefCounts;76 HashSet<ParserRefCounted*>* newParserObjects; 77 HashCountedSet<ParserRefCounted*>* parserObjectExtraRefCounts; 78 78 79 79 Lexer* lexer; -
trunk/JavaScriptCore/kjs/nodes.cpp
r34791 r34792 113 113 ParserRefCountedCounter::increment(); 114 114 #endif 115 if (!m_globalData->new TrackedObjects)116 m_globalData->new TrackedObjects = new HashSet<ParserRefCounted*>;117 m_globalData->new TrackedObjects->add(this);118 ASSERT(m_globalData->new TrackedObjects->contains(this));115 if (!m_globalData->newParserObjects) 116 m_globalData->newParserObjects = new HashSet<ParserRefCounted*>; 117 m_globalData->newParserObjects->add(this); 118 ASSERT(m_globalData->newParserObjects->contains(this)); 119 119 } 120 120 … … 129 129 { 130 130 // bumping from 0 to 1 is just removing from the new nodes set 131 if (m_globalData->new TrackedObjects) {132 HashSet<ParserRefCounted*>::iterator it = m_globalData->new TrackedObjects->find(this);133 if (it != m_globalData->new TrackedObjects->end()) {134 m_globalData->new TrackedObjects->remove(it);135 ASSERT(!m_globalData-> trackedObjectExtraRefCounts || !m_globalData->trackedObjectExtraRefCounts->contains(this));131 if (m_globalData->newParserObjects) { 132 HashSet<ParserRefCounted*>::iterator it = m_globalData->newParserObjects->find(this); 133 if (it != m_globalData->newParserObjects->end()) { 134 m_globalData->newParserObjects->remove(it); 135 ASSERT(!m_globalData->parserObjectExtraRefCounts || !m_globalData->parserObjectExtraRefCounts->contains(this)); 136 136 return; 137 137 } 138 138 } 139 139 140 ASSERT(!m_globalData->new TrackedObjects || !m_globalData->newTrackedObjects->contains(this));141 142 if (!m_globalData-> trackedObjectExtraRefCounts)143 m_globalData-> trackedObjectExtraRefCounts = new HashCountedSet<ParserRefCounted*>;144 m_globalData-> trackedObjectExtraRefCounts->add(this);140 ASSERT(!m_globalData->newParserObjects || !m_globalData->newParserObjects->contains(this)); 141 142 if (!m_globalData->parserObjectExtraRefCounts) 143 m_globalData->parserObjectExtraRefCounts = new HashCountedSet<ParserRefCounted*>; 144 m_globalData->parserObjectExtraRefCounts->add(this); 145 145 } 146 146 147 147 void ParserRefCounted::deref() 148 148 { 149 ASSERT(!m_globalData->new TrackedObjects || !m_globalData->newTrackedObjects->contains(this));150 151 if (!m_globalData-> trackedObjectExtraRefCounts) {149 ASSERT(!m_globalData->newParserObjects || !m_globalData->newParserObjects->contains(this)); 150 151 if (!m_globalData->parserObjectExtraRefCounts) { 152 152 delete this; 153 153 return; 154 154 } 155 155 156 HashCountedSet<ParserRefCounted*>::iterator it = m_globalData-> trackedObjectExtraRefCounts->find(this);157 if (it == m_globalData-> trackedObjectExtraRefCounts->end())156 HashCountedSet<ParserRefCounted*>::iterator it = m_globalData->parserObjectExtraRefCounts->find(this); 157 if (it == m_globalData->parserObjectExtraRefCounts->end()) 158 158 delete this; 159 159 else 160 m_globalData-> trackedObjectExtraRefCounts->remove(it);160 m_globalData->parserObjectExtraRefCounts->remove(it); 161 161 } 162 162 163 163 bool ParserRefCounted::hasOneRef() 164 164 { 165 if (m_globalData->new TrackedObjects && m_globalData->newTrackedObjects->contains(this)) {166 ASSERT(!m_globalData-> trackedObjectExtraRefCounts || !m_globalData->trackedObjectExtraRefCounts->contains(this));165 if (m_globalData->newParserObjects && m_globalData->newParserObjects->contains(this)) { 166 ASSERT(!m_globalData->parserObjectExtraRefCounts || !m_globalData->parserObjectExtraRefCounts->contains(this)); 167 167 return false; 168 168 } 169 169 170 ASSERT(!m_globalData->new TrackedObjects || !m_globalData->newTrackedObjects->contains(this));171 172 if (!m_globalData-> trackedObjectExtraRefCounts)170 ASSERT(!m_globalData->newParserObjects || !m_globalData->newParserObjects->contains(this)); 171 172 if (!m_globalData->parserObjectExtraRefCounts) 173 173 return true; 174 174 175 return !m_globalData-> trackedObjectExtraRefCounts->contains(this);175 return !m_globalData->parserObjectExtraRefCounts->contains(this); 176 176 } 177 177 178 178 void ParserRefCounted::deleteNewObjects(JSGlobalData* globalData) 179 179 { 180 if (!globalData->new TrackedObjects)180 if (!globalData->newParserObjects) 181 181 return; 182 182 183 183 #ifndef NDEBUG 184 HashSet<ParserRefCounted*>::iterator end = globalData->new TrackedObjects->end();185 for (HashSet<ParserRefCounted*>::iterator it = globalData->new TrackedObjects->begin(); it != end; ++it)186 ASSERT(!globalData-> trackedObjectExtraRefCounts || !globalData->trackedObjectExtraRefCounts->contains(*it));184 HashSet<ParserRefCounted*>::iterator end = globalData->newParserObjects->end(); 185 for (HashSet<ParserRefCounted*>::iterator it = globalData->newParserObjects->begin(); it != end; ++it) 186 ASSERT(!globalData->parserObjectExtraRefCounts || !globalData->parserObjectExtraRefCounts->contains(*it)); 187 187 #endif 188 deleteAllValues(*globalData->new TrackedObjects);189 delete globalData->new TrackedObjects;190 globalData->new TrackedObjects = 0;188 deleteAllValues(*globalData->newParserObjects); 189 delete globalData->newParserObjects; 190 globalData->newParserObjects = 0; 191 191 } 192 192
Note:
See TracChangeset
for help on using the changeset viewer.