Changeset 245808 in webkit
- Timestamp:
- May 28, 2019 1:45:02 AM (5 years ago)
- Location:
- trunk/Source/JavaScriptCore
- Files:
-
- 6 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/JavaScriptCore/ChangeLog
r245800 r245808 1 2019-05-28 Yusuke Suzuki <ysuzuki@apple.com> 2 3 Unreviewed, revert r242070 due to Membuster regression 4 https://bugs.webkit.org/show_bug.cgi?id=195013 5 6 Membuster shows ~0.3% regression. 7 8 * heap/Heap.cpp: 9 (JSC::Heap::Heap): 10 (JSC::Heap::runBeginPhase): 11 * heap/Heap.h: 12 * heap/HeapInlines.h: 13 (JSC::Heap::forEachSlotVisitor): 14 (JSC::Heap::numberOfSlotVisitors): Deleted. 15 * heap/MarkingConstraintSolver.cpp: 16 (JSC::MarkingConstraintSolver::didVisitSomething const): 17 * heap/SlotVisitor.h: 18 1 19 2019-05-27 Tadeu Zagallo <tzagallo@apple.com> 2 20 -
trunk/Source/JavaScriptCore/heap/Heap.cpp
r245258 r245808 302 302 { 303 303 m_worldState.store(0); 304 305 for (unsigned i = 0, numberOfParallelThreads = heapHelperPool().numberOfThreads(); i < numberOfParallelThreads; ++i) { 306 std::unique_ptr<SlotVisitor> visitor = std::make_unique<SlotVisitor>(*this, toCString("P", i + 1)); 307 if (Options::optimizeParallelSlotVisitorsForStoppedMutator()) 308 visitor->optimizeForStoppedMutator(); 309 m_availableParallelSlotVisitors.append(visitor.get()); 310 m_parallelSlotVisitors.append(WTFMove(visitor)); 311 } 304 312 305 313 if (Options::useConcurrentGC()) { … … 1284 1292 { 1285 1293 LockHolder locker(m_parallelSlotVisitorLock); 1286 if (m_availableParallelSlotVisitors.isEmpty()) { 1287 std::unique_ptr<SlotVisitor> newVisitor = std::make_unique<SlotVisitor>( 1288 *this, toCString("P", m_parallelSlotVisitors.size() + 1)); 1289 1290 if (Options::optimizeParallelSlotVisitorsForStoppedMutator()) 1291 newVisitor->optimizeForStoppedMutator(); 1292 1293 newVisitor->didStartMarking(); 1294 1295 slotVisitor = newVisitor.get(); 1296 m_parallelSlotVisitors.append(WTFMove(newVisitor)); 1297 } else 1298 slotVisitor = m_availableParallelSlotVisitors.takeLast(); 1294 RELEASE_ASSERT_WITH_MESSAGE(!m_availableParallelSlotVisitors.isEmpty(), "Parallel SlotVisitors are allocated apriori"); 1295 slotVisitor = m_availableParallelSlotVisitors.takeLast(); 1299 1296 } 1300 1297 -
trunk/Source/JavaScriptCore/heap/Heap.h
r245258 r245808 394 394 template<typename Func> 395 395 void forEachSlotVisitor(const Func&); 396 unsigned numberOfSlotVisitors();397 396 398 397 Seconds totalGCTime() const { return m_totalGCTime; } -
trunk/Source/JavaScriptCore/heap/HeapInlines.h
r245258 r245808 273 273 void Heap::forEachSlotVisitor(const Func& func) 274 274 { 275 auto locker = holdLock(m_parallelSlotVisitorLock);276 275 func(*m_collectorSlotVisitor); 277 276 func(*m_mutatorSlotVisitor); … … 280 279 } 281 280 282 inline unsigned Heap::numberOfSlotVisitors()283 {284 auto locker = holdLock(m_parallelSlotVisitorLock);285 return m_parallelSlotVisitors.size() + 2; // m_collectorSlotVisitor and m_mutatorSlotVisitor286 }287 288 281 } // namespace JSC -
trunk/Source/JavaScriptCore/heap/MarkingConstraintSolver.cpp
r244088 r245808 53 53 return true; 54 54 } 55 // If the number of SlotVisitors increases after creating m_visitCounters,56 // we conservatively say there could be something visited by added SlotVisitors.57 if (m_heap.numberOfSlotVisitors() > m_visitCounters.size())58 return true;59 55 return false; 60 56 } -
trunk/Source/JavaScriptCore/heap/SlotVisitor.h
r242812 r245808 260 260 MarkingConstraintSolver* m_currentSolver { nullptr }; 261 261 262 // Put padding here to mitigate false sharing between multiple SlotVisitors. 263 char padding[64]; 262 264 public: 263 265 #if !ASSERT_DISABLED
Note: See TracChangeset
for help on using the changeset viewer.