Changeset 214805 in webkit


Ignore:
Timestamp:
Apr 3, 2017 9:54:49 AM (7 years ago)
Author:
Carlos Garcia Campos
Message:

Merge r214509 - The Mutator should not be able to steal the conn if the Collector hasn't reached the NotRunning phase yet.
https://bugs.webkit.org/show_bug.cgi?id=170213
<rdar://problem/30755345>

Reviewed by Filip Pizlo.

The current condition for stealing the conn isn't tight enough. Restricting the
stealing to when m_currentPhase == NotRunning ensures that the Collector is
really done running.

No test because this issue only manifests with a race condition that is difficult
to reproduce on demand.

  • heap/Heap.cpp:

(JSC::Heap::requestCollection):

Location:
releases/WebKitGTK/webkit-2.16/Source/JavaScriptCore
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • releases/WebKitGTK/webkit-2.16/Source/JavaScriptCore/ChangeLog

    r214799 r214805  
     12017-03-28  Mark Lam  <mark.lam@apple.com>
     2
     3        The Mutator should not be able to steal the conn if the Collector hasn't reached the NotRunning phase yet.
     4        https://bugs.webkit.org/show_bug.cgi?id=170213
     5        <rdar://problem/30755345>
     6
     7        Reviewed by Filip Pizlo.
     8
     9        The current condition for stealing the conn isn't tight enough.  Restricting the
     10        stealing to when m_currentPhase == NotRunning ensures that the Collector is
     11        really done running.
     12
     13        No test because this issue only manifests with a race condition that is difficult
     14        to reproduce on demand.
     15
     16        * heap/Heap.cpp:
     17        (JSC::Heap::requestCollection):
     18
    1192017-03-24  Mark Lam  <mark.lam@apple.com>
    220
  • releases/WebKitGTK/webkit-2.16/Source/JavaScriptCore/heap/Heap.cpp

    r213039 r214805  
    19371937    // cases.
    19381938    ASSERT(m_lastServedTicket <= m_lastGrantedTicket);
    1939     if (m_lastServedTicket == m_lastGrantedTicket) {
     1939    if ((m_lastServedTicket == m_lastGrantedTicket) && (m_currentPhase == CollectorPhase::NotRunning)) {
    19401940        if (false)
    19411941            dataLog("Taking the conn.\n");
Note: See TracChangeset for help on using the changeset viewer.