• ulan's avatar
    [heap] Ensure that the sweeper does not lose unswept pages. · b6219871
    ulan authored
    This fixes a race between the sweeper and the array buffer tracker
    that causes the sweeper to skip unswept pages.
    
    The scenario:
    1. Mark-compact GC adds page p to the sweeping_list_ of the sweeper.
    2. GC finishes, the main thread starts executinng JS.
    3. The main thread takes p->mutex to unregister an array buffer.
    4. A sweeper thread removes p from the sweeping_list_ and tries to
       take p->mutex. The try fails. The sweeper drops p and continues
       to the next page.
    5. During selection of evacuation candidate in the next GC we hit
       page->SweepingDone() assert.
    
    BUG=chromium:650314
    
    Review-Url: https://codereview.chromium.org/2484153004
    Cr-Commit-Position: refs/heads/master@{#40857}
    b6219871
Name
Last commit
Last update
..
OWNERS Loading commit data...
array-buffer-tracker-inl.h Loading commit data...
array-buffer-tracker.cc Loading commit data...
array-buffer-tracker.h Loading commit data...
code-stats.cc Loading commit data...
code-stats.h Loading commit data...
gc-idle-time-handler.cc Loading commit data...
gc-idle-time-handler.h Loading commit data...
gc-tracer.cc Loading commit data...
gc-tracer.h Loading commit data...
heap-inl.h Loading commit data...
heap.cc Loading commit data...
heap.h Loading commit data...
incremental-marking-inl.h Loading commit data...
incremental-marking-job.cc Loading commit data...
incremental-marking-job.h Loading commit data...
incremental-marking.cc Loading commit data...
incremental-marking.h Loading commit data...
mark-compact-inl.h Loading commit data...
mark-compact.cc Loading commit data...
mark-compact.h Loading commit data...
marking.h Loading commit data...
memory-reducer.cc Loading commit data...
memory-reducer.h Loading commit data...
object-stats.cc Loading commit data...
object-stats.h Loading commit data...
objects-visiting-inl.h Loading commit data...
objects-visiting.cc Loading commit data...
objects-visiting.h Loading commit data...
page-parallel-job.h Loading commit data...
remembered-set.h Loading commit data...
scavenge-job.cc Loading commit data...
scavenge-job.h Loading commit data...
scavenger-inl.h Loading commit data...
scavenger.cc Loading commit data...
scavenger.h Loading commit data...
slot-set.h Loading commit data...
spaces-inl.h Loading commit data...
spaces.cc Loading commit data...
spaces.h Loading commit data...
store-buffer.cc Loading commit data...
store-buffer.h Loading commit data...