Changeset 34792 in webkit for trunk/JavaScriptCore/kjs/nodes.cpp
- Timestamp:
- Jun 25, 2008, 12:15:20 AM (17 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
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.