Changeset 119633 in webkit for trunk/Source/JavaScriptCore/heap/MarkStack.cpp
- Timestamp:
- Jun 6, 2012, 4:11:09 PM (13 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/JavaScriptCore/heap/MarkStack.cpp
r117013 r119633 37 37 #include "ScopeChain.h" 38 38 #include "Structure.h" 39 #include "UString.h" 39 40 #include "WriteBarrier.h" 40 41 #include <wtf/DataLog.h> … … 220 221 221 222 #if ENABLE(PARALLEL_GC) 222 void MarkStackThreadSharedData::markingThreadMain() 223 void MarkStackThreadSharedData::resetChildren() 224 { 225 for (unsigned i = 0; i < m_markingThreadsMarkStack.size(); ++i) 226 m_markingThreadsMarkStack[i]->reset(); 227 } 228 229 size_t MarkStackThreadSharedData::childVisitCount() 230 { 231 unsigned long result = 0; 232 for (unsigned i = 0; i < m_markingThreadsMarkStack.size(); ++i) 233 result += m_markingThreadsMarkStack[i]->visitCount(); 234 return result; 235 } 236 237 void MarkStackThreadSharedData::markingThreadMain(SlotVisitor* slotVisitor) 223 238 { 224 239 WTF::registerGCThread(); 225 240 { 226 SlotVisitor slotVisitor(*this); 227 ParallelModeEnabler enabler(slotVisitor); 228 slotVisitor.drainFromShared(SlotVisitor::SlaveDrain); 229 } 230 } 231 232 void MarkStackThreadSharedData::markingThreadStartFunc(void* shared) 233 { 234 static_cast<MarkStackThreadSharedData*>(shared)->markingThreadMain(); 241 ParallelModeEnabler enabler(*slotVisitor); 242 slotVisitor->drainFromShared(SlotVisitor::SlaveDrain); 243 } 244 delete slotVisitor; 245 } 246 247 void MarkStackThreadSharedData::markingThreadStartFunc(void* myVisitor) 248 { 249 SlotVisitor* slotVisitor = static_cast<SlotVisitor*>(myVisitor); 250 251 slotVisitor->sharedData().markingThreadMain(slotVisitor); 235 252 } 236 253 #endif … … 245 262 #if ENABLE(PARALLEL_GC) 246 263 for (unsigned i = 1; i < Options::numberOfGCMarkers; ++i) { 247 m_markingThreads.append(createThread(markingThreadStartFunc, this, "JavaScriptCore::Marking")); 264 SlotVisitor* slotVisitor = new SlotVisitor(*this); 265 m_markingThreadsMarkStack.append(slotVisitor); 266 m_markingThreads.append(createThread(markingThreadStartFunc, slotVisitor, "JavaScriptCore::Marking")); 248 267 ASSERT(m_markingThreads.last()); 249 268 } … … 277 296 ASSERT(m_opaqueRoots.isEmpty()); 278 297 #endif 279 280 298 m_weakReferenceHarvesters.removeAll(); 281 299 }
Note:
See TracChangeset
for help on using the changeset viewer.