Changeset 245808 in webkit


Ignore:
Timestamp:
May 28, 2019 1:45:02 AM (5 years ago)
Author:
ysuzuki@apple.com
Message:

Unreviewed, revert r242070 due to Membuster regression
https://bugs.webkit.org/show_bug.cgi?id=195013

Membuster shows ~0.3% regression.

  • heap/Heap.cpp:

(JSC::Heap::Heap):
(JSC::Heap::runBeginPhase):

  • heap/Heap.h:
  • heap/HeapInlines.h:

(JSC::Heap::forEachSlotVisitor):
(JSC::Heap::numberOfSlotVisitors): Deleted.

  • heap/MarkingConstraintSolver.cpp:

(JSC::MarkingConstraintSolver::didVisitSomething const):

  • heap/SlotVisitor.h:
Location:
trunk/Source/JavaScriptCore
Files:
6 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/JavaScriptCore/ChangeLog

    r245800 r245808  
     12019-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
    1192019-05-27  Tadeu Zagallo  <tzagallo@apple.com>
    220
  • trunk/Source/JavaScriptCore/heap/Heap.cpp

    r245258 r245808  
    302302{
    303303    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    }
    304312   
    305313    if (Options::useConcurrentGC()) {
     
    12841292            {
    12851293                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();
    12991296            }
    13001297
  • trunk/Source/JavaScriptCore/heap/Heap.h

    r245258 r245808  
    394394    template<typename Func>
    395395    void forEachSlotVisitor(const Func&);
    396     unsigned numberOfSlotVisitors();
    397396   
    398397    Seconds totalGCTime() const { return m_totalGCTime; }
  • trunk/Source/JavaScriptCore/heap/HeapInlines.h

    r245258 r245808  
    273273void Heap::forEachSlotVisitor(const Func& func)
    274274{
    275     auto locker = holdLock(m_parallelSlotVisitorLock);
    276275    func(*m_collectorSlotVisitor);
    277276    func(*m_mutatorSlotVisitor);
     
    280279}
    281280
    282 inline unsigned Heap::numberOfSlotVisitors()
    283 {
    284     auto locker = holdLock(m_parallelSlotVisitorLock);
    285     return m_parallelSlotVisitors.size() + 2; // m_collectorSlotVisitor and m_mutatorSlotVisitor
    286 }
    287 
    288281} // namespace JSC
  • trunk/Source/JavaScriptCore/heap/MarkingConstraintSolver.cpp

    r244088 r245808  
    5353            return true;
    5454    }
    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;
    5955    return false;
    6056}
  • trunk/Source/JavaScriptCore/heap/SlotVisitor.h

    r242812 r245808  
    260260    MarkingConstraintSolver* m_currentSolver { nullptr };
    261261   
     262    // Put padding here to mitigate false sharing between multiple SlotVisitors.
     263    char padding[64];
    262264public:
    263265#if !ASSERT_DISABLED
Note: See TracChangeset for help on using the changeset viewer.