Project: chromium Issues People Development process History Sign in
New issue
Advanced search Search tips
Note: Color blocks (like or ) mean that a user may not be available. Tooltip shows the reason.
Starred by 1 user
Status: Started
Owner:
Cc:
Components:
EstimatedDays: ----
NextAction: ----
OS: Linux, Android, Windows, Chrome, Mac
Pri: 3
Type: Feature

Blocked on:
issue 738368

Blocking:
issue 581412



Sign in to add a comment
Parallel Scavenger
Project Member Reported by mlippautz@chromium.org, Jul 3 Back to list
Tracking bug for implementing and evaluating a parallel scavenge.
 
Blockedon: 738368
Project Member Comment 2 by bugdroid1@chromium.org, Jul 3
The following revision refers to this bug:
  https://chromium.googlesource.com/v8/v8.git/+/64329a4bfacbcf7e6b2899cb6d4b0e7e5e5fd797

commit 64329a4bfacbcf7e6b2899cb6d4b0e7e5e5fd797
Author: Michael Lippautz <mlippautz@chromium.org>
Date: Mon Jul 03 12:32:08 2017

[heap] Refactor Scavenger

- Avoid static methods.
- Instantiate the actual visitor on the stack.
- Get rid of unnecessary abstractions.

Bug: chromium:738865
Change-Id: I4115d7b88f17a7118aa9ee129eb39a28ec413696
Reviewed-on: https://chromium-review.googlesource.com/558878
Commit-Queue: Michael Lippautz <mlippautz@chromium.org>
Reviewed-by: Ulan Degenbaev <ulan@chromium.org>
Cr-Commit-Position: refs/heads/master@{#46384}
[modify] https://crrev.com/64329a4bfacbcf7e6b2899cb6d4b0e7e5e5fd797/src/heap/heap.cc
[modify] https://crrev.com/64329a4bfacbcf7e6b2899cb6d4b0e7e5e5fd797/src/heap/heap.h
[modify] https://crrev.com/64329a4bfacbcf7e6b2899cb6d4b0e7e5e5fd797/src/heap/scavenger-inl.h
[modify] https://crrev.com/64329a4bfacbcf7e6b2899cb6d4b0e7e5e5fd797/src/heap/scavenger.cc
[modify] https://crrev.com/64329a4bfacbcf7e6b2899cb6d4b0e7e5e5fd797/src/heap/scavenger.h

Project Member Comment 5 by bugdroid1@chromium.org, Jul 5
The following revision refers to this bug:
  https://chromium.googlesource.com/v8/v8.git/+/a93188c63dff1c5e05c68df9ac01212d4467fe9c

commit a93188c63dff1c5e05c68df9ac01212d4467fe9c
Author: Michael Lippautz <mlippautz@chromium.org>
Date: Wed Jul 05 13:55:58 2017

[heap] Worklist: Allow limiting number of tasks

Bug: chromium:738865
Change-Id: I310684886b6507616733e61338b605f24c6adfe1
Reviewed-on: https://chromium-review.googlesource.com/558298
Reviewed-by: Ulan Degenbaev <ulan@chromium.org>
Commit-Queue: Michael Lippautz <mlippautz@chromium.org>
Cr-Commit-Position: refs/heads/master@{#46416}
[modify] https://crrev.com/a93188c63dff1c5e05c68df9ac01212d4467fe9c/src/heap/worklist.h

Project Member Comment 6 by bugdroid1@chromium.org, Jul 6
The following revision refers to this bug:
  https://chromium.googlesource.com/v8/v8.git/+/94b1b48b38e8d14225f720c8e3089d6604406251

commit 94b1b48b38e8d14225f720c8e3089d6604406251
Author: Michael Lippautz <mlippautz@chromium.org>
Date: Thu Jul 06 13:39:38 2017

[heap] Introduce PromtionWorklist

Replaces the old PromotionQueue that was kept at the end of to space.

This change allows a future implementation to use 
(a) a thread-local promotion list and 
(b) enables work stealing for concurrent scenarios.

Bug: chromium:738865
Change-Id: I4c983a36e69ad4a9462eb9a59f586a85e51acbde
Reviewed-on: https://chromium-review.googlesource.com/561141
Commit-Queue: Michael Lippautz <mlippautz@chromium.org>
Reviewed-by: Ulan Degenbaev <ulan@chromium.org>
Cr-Commit-Position: refs/heads/master@{#46446}
[modify] https://crrev.com/94b1b48b38e8d14225f720c8e3089d6604406251/src/heap/heap-inl.h
[modify] https://crrev.com/94b1b48b38e8d14225f720c8e3089d6604406251/src/heap/heap.cc
[modify] https://crrev.com/94b1b48b38e8d14225f720c8e3089d6604406251/src/heap/heap.h
[modify] https://crrev.com/94b1b48b38e8d14225f720c8e3089d6604406251/src/heap/scavenger-inl.h
[modify] https://crrev.com/94b1b48b38e8d14225f720c8e3089d6604406251/src/heap/scavenger.h
[modify] https://crrev.com/94b1b48b38e8d14225f720c8e3089d6604406251/src/heap/spaces.cc
[modify] https://crrev.com/94b1b48b38e8d14225f720c8e3089d6604406251/src/heap/worklist.h
[modify] https://crrev.com/94b1b48b38e8d14225f720c8e3089d6604406251/test/cctest/heap/test-heap.cc

Project Member Comment 8 by bugdroid1@chromium.org, Jul 10
The following revision refers to this bug:
  https://chromium.googlesource.com/v8/v8.git/+/ec8904aedccafc77fa861bbd9e4594ed96de2705

commit ec8904aedccafc77fa861bbd9e4594ed96de2705
Author: Michael Lippautz <mlippautz@chromium.org>
Date: Mon Jul 10 15:54:59 2017

[heap] Scavenger: Cache pretenuring feedback locally

Bug: chromium:738865
Change-Id: Icb92b649ecd3d4ab4c60f35ffe0649a35fe8b3f6
Reviewed-on: https://chromium-review.googlesource.com/565285
Reviewed-by: Ulan Degenbaev <ulan@chromium.org>
Commit-Queue: Michael Lippautz <mlippautz@chromium.org>
Cr-Commit-Position: refs/heads/master@{#46530}
[modify] https://crrev.com/ec8904aedccafc77fa861bbd9e4594ed96de2705/src/heap/heap.cc
[modify] https://crrev.com/ec8904aedccafc77fa861bbd9e4594ed96de2705/src/heap/scavenger-inl.h
[modify] https://crrev.com/ec8904aedccafc77fa861bbd9e4594ed96de2705/src/heap/scavenger.cc
[modify] https://crrev.com/ec8904aedccafc77fa861bbd9e4594ed96de2705/src/heap/scavenger.h

Project Member Comment 9 by bugdroid1@chromium.org, Jul 12
The following revision refers to this bug:
  https://chromium.googlesource.com/v8/v8.git/+/5fe5cbf8084cfd01f886fa9e7a50f2b15aa0d54c

commit 5fe5cbf8084cfd01f886fa9e7a50f2b15aa0d54c
Author: Michael Lippautz <mlippautz@chromium.org>
Date: Wed Jul 12 08:36:31 2017

[heap] Scavenger: Update counters locally

Bug: chromium:738865
Change-Id: I53f82a459a82057486dcba26696fadebf7befcf7
Reviewed-on: https://chromium-review.googlesource.com/567156
Reviewed-by: Ulan Degenbaev <ulan@chromium.org>
Commit-Queue: Michael Lippautz <mlippautz@chromium.org>
Cr-Commit-Position: refs/heads/master@{#46576}
[modify] https://crrev.com/5fe5cbf8084cfd01f886fa9e7a50f2b15aa0d54c/src/heap/scavenger-inl.h
[modify] https://crrev.com/5fe5cbf8084cfd01f886fa9e7a50f2b15aa0d54c/src/heap/scavenger.cc
[modify] https://crrev.com/5fe5cbf8084cfd01f886fa9e7a50f2b15aa0d54c/src/heap/scavenger.h

Project Member Comment 10 by bugdroid1@chromium.org, Jul 12
The following revision refers to this bug:
  https://chromium.googlesource.com/v8/v8.git/+/f6f86e740148610b5d76a6d45da9d25c9573430f

commit f6f86e740148610b5d76a6d45da9d25c9573430f
Author: Michael Lippautz <mlippautz@chromium.org>
Date: Wed Jul 12 08:37:37 2017

[heap] Worklist: Avoid false sharing for Segment access

Bug: chromium:738865
Change-Id: Iffa80389def41cf03719c01b56f7971612367660
Reviewed-on: https://chromium-review.googlesource.com/567154
Reviewed-by: Ulan Degenbaev <ulan@chromium.org>
Commit-Queue: Michael Lippautz <mlippautz@chromium.org>
Cr-Commit-Position: refs/heads/master@{#46577}
[modify] https://crrev.com/f6f86e740148610b5d76a6d45da9d25c9573430f/src/heap/worklist.h

Project Member Comment 11 by bugdroid1@chromium.org, Jul 12
The following revision refers to this bug:
  https://chromium.googlesource.com/v8/v8.git/+/b1eecfd5276af04b6e93e78e89f8edada4fc1fa5

commit b1eecfd5276af04b6e93e78e89f8edada4fc1fa5
Author: Michael Lippautz <mlippautz@chromium.org>
Date: Wed Jul 12 08:42:36 2017

[heap] Scavenger fixes

Various Scavenger fixes for smaller issues that accumulated over the
last years.

Bug: chromium:738865
Change-Id: I7573e438eba030944b99c65807944c662526a171
Reviewed-on: https://chromium-review.googlesource.com/567190
Commit-Queue: Michael Lippautz <mlippautz@chromium.org>
Reviewed-by: Ulan Degenbaev <ulan@chromium.org>
Cr-Commit-Position: refs/heads/master@{#46578}
[modify] https://crrev.com/b1eecfd5276af04b6e93e78e89f8edada4fc1fa5/src/heap/scavenger-inl.h
[modify] https://crrev.com/b1eecfd5276af04b6e93e78e89f8edada4fc1fa5/src/heap/scavenger.cc
[modify] https://crrev.com/b1eecfd5276af04b6e93e78e89f8edada4fc1fa5/src/heap/scavenger.h

Project Member Comment 13 by bugdroid1@chromium.org, Jul 13
The following revision refers to this bug:
  https://chromium.googlesource.com/v8/v8.git/+/20bb55586ae43c33eaa2991c7d3ba23cca08ebef

commit 20bb55586ae43c33eaa2991c7d3ba23cca08ebef
Author: Michael Lippautz <mlippautz@chromium.org>
Date: Thu Jul 13 13:09:34 2017

[heap] Generalize memory fence used for publishing new pages

Bug: chromium:738865
Change-Id: Iff9a2e606559dc5587589e53c5e8060ef65f72a5
Reviewed-on: https://chromium-review.googlesource.com/570028
Reviewed-by: Ulan Degenbaev <ulan@chromium.org>
Commit-Queue: Michael Lippautz <mlippautz@chromium.org>
Cr-Commit-Position: refs/heads/master@{#46636}
[modify] https://crrev.com/20bb55586ae43c33eaa2991c7d3ba23cca08ebef/src/heap/spaces.cc
[modify] https://crrev.com/20bb55586ae43c33eaa2991c7d3ba23cca08ebef/src/heap/spaces.h

Project Member Comment 14 by bugdroid1@chromium.org, Jul 14
The following revision refers to this bug:
  https://chromium.googlesource.com/v8/v8.git/+/8cfd7d4449b2dba7f6c2c94c5c7cf7102c037aba

commit 8cfd7d4449b2dba7f6c2c94c5c7cf7102c037aba
Author: Michael Lippautz <mlippautz@chromium.org>
Date: Fri Jul 14 08:54:20 2017

[heap] Worklist: Avoid forward decl and allow querying global pool state

Bug: chromium:738865
Change-Id: I663be62e73e9ba4e2f1aaededc6937d5ca1db179
Reviewed-on: https://chromium-review.googlesource.com/571780
Commit-Queue: Michael Lippautz <mlippautz@chromium.org>
Reviewed-by: Ulan Degenbaev <ulan@chromium.org>
Cr-Commit-Position: refs/heads/master@{#46665}
[modify] https://crrev.com/8cfd7d4449b2dba7f6c2c94c5c7cf7102c037aba/src/heap/concurrent-marking.h
[modify] https://crrev.com/8cfd7d4449b2dba7f6c2c94c5c7cf7102c037aba/src/heap/mark-compact.h
[modify] https://crrev.com/8cfd7d4449b2dba7f6c2c94c5c7cf7102c037aba/src/heap/worklist.h

Project Member Comment 15 by bugdroid1@chromium.org, Jul 17
The following revision refers to this bug:
  https://chromium.googlesource.com/v8/v8.git/+/7a49c94c25eb03c750ce0cea8027eadde306522f

commit 7a49c94c25eb03c750ce0cea8027eadde306522f
Author: Michael Lippautz <mlippautz@chromium.org>
Date: Mon Jul 17 08:52:13 2017

[heap] Make page promotion tests more robust against fragmentation

Bug: chromium:738865
Change-Id: If710b60d33eea94bff7b621910006c2d941a7670
Reviewed-on: https://chromium-review.googlesource.com/571900
Reviewed-by: Ulan Degenbaev <ulan@chromium.org>
Commit-Queue: Michael Lippautz <mlippautz@chromium.org>
Cr-Commit-Position: refs/heads/master@{#46697}
[modify] https://crrev.com/7a49c94c25eb03c750ce0cea8027eadde306522f/test/cctest/heap/test-page-promotion.cc

Project Member Comment 17 by bugdroid1@chromium.org, Jul 17
The following revision refers to this bug:
  https://chromium.googlesource.com/v8/v8.git/+/b52ad07b4cb5c30c5c1c3b484e428f19617f2ad9

commit b52ad07b4cb5c30c5c1c3b484e428f19617f2ad9
Author: Michael Lippautz <mlippautz@chromium.org>
Date: Mon Jul 17 16:49:38 2017

[heap] Allow concurrent insertion in slot set

Bug: chromium:738865
Change-Id: I4c8aa8c90ba401200222d95d6395c022fc023a71
Reviewed-on: https://chromium-review.googlesource.com/574535
Commit-Queue: Michael Lippautz <mlippautz@chromium.org>
Reviewed-by: Ulan Degenbaev <ulan@chromium.org>
Cr-Commit-Position: refs/heads/master@{#46715}
[modify] https://crrev.com/b52ad07b4cb5c30c5c1c3b484e428f19617f2ad9/src/heap/slot-set.h

Project Member Comment 18 by bugdroid1@chromium.org, Jul 17
The following revision refers to this bug:
  https://chromium.googlesource.com/v8/v8.git/+/93a1a16dbd14acc3f7fd0a10f7c4d75ba6b1a080

commit 93a1a16dbd14acc3f7fd0a10f7c4d75ba6b1a080
Author: Michael Lippautz <mlippautz@chromium.org>
Date: Mon Jul 17 17:10:05 2017

[heap] Scavenger: Move code entry slot recording to promoted visitor

Bug: chromium:738865
Change-Id: Ic30a3e1012771d2e37b0e10aa59ab348a40bac10
Reviewed-on: https://chromium-review.googlesource.com/574714
Reviewed-by: Ulan Degenbaev <ulan@chromium.org>
Commit-Queue: Michael Lippautz <mlippautz@chromium.org>
Cr-Commit-Position: refs/heads/master@{#46717}
[modify] https://crrev.com/93a1a16dbd14acc3f7fd0a10f7c4d75ba6b1a080/src/heap/scavenger-inl.h
[modify] https://crrev.com/93a1a16dbd14acc3f7fd0a10f7c4d75ba6b1a080/src/heap/scavenger.cc

Project Member Comment 19 by bugdroid1@chromium.org, Jul 18
The following revision refers to this bug:
  https://chromium.googlesource.com/v8/v8.git/+/beb4037aed45d280d11d128e1aa6ca52fef4ee09

commit beb4037aed45d280d11d128e1aa6ca52fef4ee09
Author: Michael Lippautz <mlippautz@chromium.org>
Date: Tue Jul 18 14:18:49 2017

[heap] Introduce separate pass for pre-freeing empty buckets in SlotSet

This will allow us to concurrently allocate buckets during iteration.

Bug: chromium:738865
Change-Id: I88bd1ac152d1ef8b40395f0ba3e55a7c3e82f75d
Reviewed-on: https://chromium-review.googlesource.com/575990
Commit-Queue: Michael Lippautz <mlippautz@chromium.org>
Reviewed-by: Ulan Degenbaev <ulan@chromium.org>
Cr-Commit-Position: refs/heads/master@{#46737}
[modify] https://crrev.com/beb4037aed45d280d11d128e1aa6ca52fef4ee09/src/heap/heap.cc
[modify] https://crrev.com/beb4037aed45d280d11d128e1aa6ca52fef4ee09/src/heap/mark-compact.cc
[modify] https://crrev.com/beb4037aed45d280d11d128e1aa6ca52fef4ee09/src/heap/remembered-set.h
[modify] https://crrev.com/beb4037aed45d280d11d128e1aa6ca52fef4ee09/src/heap/slot-set.h
[modify] https://crrev.com/beb4037aed45d280d11d128e1aa6ca52fef4ee09/test/cctest/heap/test-heap.cc

Project Member Comment 20 by bugdroid1@chromium.org, Jul 18
The following revision refers to this bug:
  https://chromium.googlesource.com/v8/v8.git/+/34cac45ccfa32754f4f0caf9ce63c74333efaffb

commit 34cac45ccfa32754f4f0caf9ce63c74333efaffb
Author: Michael Lippautz <mlippautz@chromium.org>
Date: Tue Jul 18 20:14:20 2017

[heap] Scavenger: Itemize work

- Create items for each page containing OLD_TO_NEW references.
- Introduce the flags for parallel scavenge since this forces
  us to introduce Tasks.

Bug: chromium:738865
Change-Id: Idad63f4318bdb3786117441e5413eb5e8594b7fb
Reviewed-on: https://chromium-review.googlesource.com/575052
Commit-Queue: Michael Lippautz <mlippautz@chromium.org>
Reviewed-by: Ulan Degenbaev <ulan@chromium.org>
Cr-Commit-Position: refs/heads/master@{#46748}
[modify] https://crrev.com/34cac45ccfa32754f4f0caf9ce63c74333efaffb/src/flag-definitions.h
[modify] https://crrev.com/34cac45ccfa32754f4f0caf9ce63c74333efaffb/src/heap/heap.cc
[modify] https://crrev.com/34cac45ccfa32754f4f0caf9ce63c74333efaffb/src/heap/heap.h
[modify] https://crrev.com/34cac45ccfa32754f4f0caf9ce63c74333efaffb/src/heap/scavenger.h

Project Member Comment 21 by bugdroid1@chromium.org, Jul 20
The following revision refers to this bug:
  https://chromium.googlesource.com/v8/v8.git/+/a45048e20582e7fb1f1f5c7d4b77110dab1f9cba

commit a45048e20582e7fb1f1f5c7d4b77110dab1f9cba
Author: Michael Lippautz <mlippautz@chromium.org>
Date: Thu Jul 20 14:05:02 2017

[heap] Parallel Scavenge

Bug: chromium:738865
Change-Id: Ie18574bb067438816238e2cf930e6d2a7bc5ecef
Reviewed-on: https://chromium-review.googlesource.com/570579
Commit-Queue: Michael Lippautz <mlippautz@chromium.org>
Reviewed-by: Ulan Degenbaev <ulan@chromium.org>
Cr-Commit-Position: refs/heads/master@{#46798}
[modify] https://crrev.com/a45048e20582e7fb1f1f5c7d4b77110dab1f9cba/src/heap/heap.cc
[modify] https://crrev.com/a45048e20582e7fb1f1f5c7d4b77110dab1f9cba/src/heap/heap.h
[modify] https://crrev.com/a45048e20582e7fb1f1f5c7d4b77110dab1f9cba/src/heap/local-allocator.h
[modify] https://crrev.com/a45048e20582e7fb1f1f5c7d4b77110dab1f9cba/src/heap/scavenger-inl.h
[modify] https://crrev.com/a45048e20582e7fb1f1f5c7d4b77110dab1f9cba/src/heap/scavenger.cc
[modify] https://crrev.com/a45048e20582e7fb1f1f5c7d4b77110dab1f9cba/src/heap/scavenger.h
[modify] https://crrev.com/a45048e20582e7fb1f1f5c7d4b77110dab1f9cba/src/heap/spaces-inl.h
[modify] https://crrev.com/a45048e20582e7fb1f1f5c7d4b77110dab1f9cba/src/heap/spaces.h
[modify] https://crrev.com/a45048e20582e7fb1f1f5c7d4b77110dab1f9cba/src/objects/string-inl.h
[modify] https://crrev.com/a45048e20582e7fb1f1f5c7d4b77110dab1f9cba/test/cctest/heap/test-page-promotion.cc
[modify] https://crrev.com/a45048e20582e7fb1f1f5c7d4b77110dab1f9cba/test/cctest/test-api.cc

Project Member Comment 22 by bugdroid1@chromium.org, Jul 21
The following revision refers to this bug:
  https://chromium.googlesource.com/v8/v8.git/+/6dce5c668dc84b700a5ed17b039d0075f2b0535e

commit 6dce5c668dc84b700a5ed17b039d0075f2b0535e
Author: Michael Lippautz <mlippautz@chromium.org>
Date: Fri Jul 21 09:44:08 2017

[heap] Use all freelist sizes in LocalAllocator

The Scavenger is the only consumer of free list entries besides MC
evacuation and pretenured allocations. Make use of all size classes for
allocation.

Bug: chromium:738865
Change-Id: Ieb62c01b41f2aa62222efac91dde4dce2127ff70
Reviewed-on: https://chromium-review.googlesource.com/580409
Reviewed-by: Ulan Degenbaev <ulan@chromium.org>
Commit-Queue: Michael Lippautz <mlippautz@chromium.org>
Cr-Commit-Position: refs/heads/master@{#46812}
[modify] https://crrev.com/6dce5c668dc84b700a5ed17b039d0075f2b0535e/src/heap/spaces.cc

Project Member Comment 23 by bugdroid1@chromium.org, Jul 24
The following revision refers to this bug:
  https://chromium.googlesource.com/v8/v8.git/+/486e641c11c00b644a0fff2e7725e456c4f265d7

commit 486e641c11c00b644a0fff2e7725e456c4f265d7
Author: Michael Lippautz <mlippautz@chromium.org>
Date: Mon Jul 24 14:27:28 2017

[heap] Fix Barrier used in Scavenger

The barrier assumed that the number of tasks is fixed. However, we
cannot rely on that because other tasks might take up threads. In the
ein thend this would result in the Scavenge task being (rightfully)
cancelled.

The barrier now assumes no tasks in the beginning and relies on the fact
that reaching the barrier means that no global work is left. Tasks that
lag behing will just observe the barrier being in its end state.

Bug: chromium:738865
Change-Id: I4d47e8ec4b9cf7c615b3d9585e4a6bb9d271d409
Reviewed-on: https://chromium-review.googlesource.com/582947
Reviewed-by: Ulan Degenbaev <ulan@chromium.org>
Commit-Queue: Michael Lippautz <mlippautz@chromium.org>
Cr-Commit-Position: refs/heads/master@{#46842}
[modify] https://crrev.com/486e641c11c00b644a0fff2e7725e456c4f265d7/src/heap/heap.cc
[modify] https://crrev.com/486e641c11c00b644a0fff2e7725e456c4f265d7/src/heap/scavenger.h

Project Member Comment 24 by bugdroid1@chromium.org, Jul 25
The following revision refers to this bug:
  https://chromium.googlesource.com/v8/v8.git/+/8c9b0b50bf441890573682ae494a4fe986657cc1

commit 8c9b0b50bf441890573682ae494a4fe986657cc1
Author: Michael Lippautz <mlippautz@chromium.org>
Date: Tue Jul 25 13:00:23 2017

[heap] Disable parallel scavenge for single-threaded use

Bug: chromium:738865
Change-Id: I7c367116e60117eab36d58d5078a87841e4b03cc
Reviewed-on: https://chromium-review.googlesource.com/584833
Reviewed-by: Ulan Degenbaev <ulan@chromium.org>
Commit-Queue: Michael Lippautz <mlippautz@chromium.org>
Cr-Commit-Position: refs/heads/master@{#46872}
[modify] https://crrev.com/8c9b0b50bf441890573682ae494a4fe986657cc1/src/flag-definitions.h

Project Member Comment 25 by bugdroid1@chromium.org, Jul 27
The following revision refers to this bug:
  https://chromium.googlesource.com/v8/v8.git/+/e70969a10a383db5b407fbd4e3547e96cbb3f396

commit e70969a10a383db5b407fbd4e3547e96cbb3f396
Author: Michael Lippautz <mlippautz@chromium.org>
Date: Thu Jul 27 06:50:23 2017

[heap] Enable parallel scavenge

                       -+ssssssyyssssooossooooooo+:`                   
                    :ys+///////oyo//////////////+oy:                  
                   +y+///////////ss///////////////+y/        ``       
                  +y//////////////oy+///////////////yo`   .:o/        
                `oy////////////////sy+///////////////ss-/syh/         
               `ss////////////////+y/yo///////////////oo+oy:          
              .ss////////////////oy- .ss////////////////oy-           
             .yo////////////////oy.   `os//////////////oy.            
             +ss+//////////////ss.     `+y+///////////ss.             
              `./oso+/////////ss`     `-+yo//////////ss.     `        
                  `-+oso+////so`   .:oyysoooooooooooso`  `-/os/       
./ooooooooooooooooo: `.:+ss+y+`  .:///::::-----.....``.:+so+/+y+      
  `-+sso+/////////+y/    `-//                     `-/oso+//////yo`    
     `/yo///////////so`                        .:+oo+///////////ss`   
     :yo/////////////ss.                      .sy+///////////////ss.  
    /y+///////////////oy-                      -yo////////////////oy- 
   +y+//////////////+o++y/                   `  .ss////////////////oy-
  :h///////////////+y+ossy+`                `o   .ss////////////////ss
  :h//////////////oy-  `:+so.              `oy    `os///////////////oy
   oy////////////ss.      `-/`            `sys     `+y+/////////////y/
    +y//////////so`                      .ssss       /y+//////////oy/ 
     +y+///////yyo++++++++++++++++      .yo/ss::::::--oyo++++++osyy-  
      /y+////+yo////////////////sy     -yo//++++++++++ooooooo++oyo.   
       /y+//+yo/////////////////oy    -yo/////////////////////+y+`    
        /y++y+//////////////////oy   :y+/////////////////////+y:      
         :yys///////////////////oy  -y+/////////////////////os-       
          :ys///////////////////oy  `os////////////////////so`        
           -y+//////////////////oy   `oy/////////////////+y+          
            -ss/////////////////oy     +y+//////////////oy:           
             `:ossooooooooooooooss      :y+/oyssssssssso/`            
                 `................       -yooy                        
                                          .yyy                        
                                           `sy                        
                                            `+                        

Bug: chromium:738865
Change-Id: I202f9c61c13fcacfb8fff37458931d91c6f831e5
Reviewed-on: https://chromium-review.googlesource.com/584835
Reviewed-by: Ulan Degenbaev <ulan@chromium.org>
Commit-Queue: Michael Lippautz <mlippautz@chromium.org>
Cr-Commit-Position: refs/heads/master@{#46920}
[modify] https://crrev.com/e70969a10a383db5b407fbd4e3547e96cbb3f396/src/flag-definitions.h

Project Member Comment 26 by bugdroid1@chromium.org, Jul 27
The following revision refers to this bug:
  https://chromium.googlesource.com/v8/v8.git/+/bb840f4fcafd575928d7567010725edd9e277731

commit bb840f4fcafd575928d7567010725edd9e277731
Author: Michael Lippautz <mlippautz@chromium.org>
Date: Thu Jul 27 08:24:19 2017

[heap] Scavenger: Fix benign race in LayoutDescriptor access

We need to write the slot with a relaxed write. No additional barrier is
needed because the new object has been published using Release_CAS and
reading either value is fine (as long as all initializing stores have
been published).

NOTRY=true

Bug: chromium:738865
Change-Id: Ieeacccf00e0a7e8eb950eee01060bd1963e30a42
Reviewed-on: https://chromium-review.googlesource.com/589007
Commit-Queue: Michael Lippautz <mlippautz@chromium.org>
Reviewed-by: Ulan Degenbaev <ulan@chromium.org>
Cr-Commit-Position: refs/heads/master@{#46924}
[modify] https://crrev.com/bb840f4fcafd575928d7567010725edd9e277731/src/heap/scavenger-inl.h

Project Member Comment 27 by bugdroid1@chromium.org, Jul 27
The following revision refers to this bug:
  https://chromium.googlesource.com/v8/v8.git/+/20f870c7297ff26de61ac42aca4d8c15eb939d0b

commit 20f870c7297ff26de61ac42aca4d8c15eb939d0b
Author: Michael Lippautz <mlippautz@chromium.org>
Date: Thu Jul 27 09:55:54 2017

[heap] Scavenger: Fix benign race with forwarding pointer load

NOTRY=true

Bug: chromium:738865
Change-Id: I8e3ac86bf6f0b3356398053b157ec03217e78a08
Reviewed-on: https://chromium-review.googlesource.com/589129
Reviewed-by: Ulan Degenbaev <ulan@chromium.org>
Commit-Queue: Michael Lippautz <mlippautz@chromium.org>
Cr-Commit-Position: refs/heads/master@{#46928}
[modify] https://crrev.com/20f870c7297ff26de61ac42aca4d8c15eb939d0b/src/heap/scavenger-inl.h

Project Member Comment 28 by bugdroid1@chromium.org, Jul 27
The following revision refers to this bug:
  https://chromium.googlesource.com/v8/v8.git/+/f3817e9bd7d48a753e759a34fa39fb293a492a32

commit f3817e9bd7d48a753e759a34fa39fb293a492a32
Author: Michael Lippautz <mlippautz@chromium.org>
Date: Thu Jul 27 14:15:23 2017

[heap] Scavenger: Cache compacting property

Bug: chromium:738865
Change-Id: I02cb7ea48a1dfaec25bf702b09242d537fe612f4
Reviewed-on: https://chromium-review.googlesource.com/589271
Reviewed-by: Ulan Degenbaev <ulan@chromium.org>
Commit-Queue: Michael Lippautz <mlippautz@chromium.org>
Cr-Commit-Position: refs/heads/master@{#46939}
[modify] https://crrev.com/f3817e9bd7d48a753e759a34fa39fb293a492a32/src/heap/heap.cc
[modify] https://crrev.com/f3817e9bd7d48a753e759a34fa39fb293a492a32/src/heap/scavenger.cc
[modify] https://crrev.com/f3817e9bd7d48a753e759a34fa39fb293a492a32/src/heap/scavenger.h

Project Member Comment 29 by bugdroid1@chromium.org, Jul 28
The following revision refers to this bug:
  https://chromium.googlesource.com/v8/v8.git/+/7c8a75e508de5a64c124b19fb7714f91319e1cfd

commit 7c8a75e508de5a64c124b19fb7714f91319e1cfd
Author: Michael Lippautz <mlippautz@chromium.org>
Date: Fri Jul 28 11:43:35 2017

Pretenure LayoutDescriptor

LayoutDescriptor is currently the only case where the Scavenger needs to
potentially follow an updated slot to iterate an object. This scenario
requires at least Acq/Rel semantics.

In order to use relaxed store/load for the slots we need to allocate it
pretenured.

Bug: chromium:738865
Change-Id: I353fa6f252b436918b60fff54ece5ce5c7783072
Reviewed-on: https://chromium-review.googlesource.com/590429
Reviewed-by: Ulan Degenbaev <ulan@chromium.org>
Reviewed-by: Igor Sheludko <ishell@chromium.org>
Commit-Queue: Michael Lippautz <mlippautz@chromium.org>
Cr-Commit-Position: refs/heads/master@{#46965}
[modify] https://crrev.com/7c8a75e508de5a64c124b19fb7714f91319e1cfd/src/layout-descriptor-inl.h

Project Member Comment 30 by bugdroid1@chromium.org, Jul 28
The following revision refers to this bug:
  https://chromium.googlesource.com/v8/v8.git/+/52a9b5cb8f1a0035778c167f08941c2352585555

commit 52a9b5cb8f1a0035778c167f08941c2352585555
Author: Michael Lippautz <mlippautz@chromium.org>
Date: Fri Jul 28 13:09:05 2017

[heap] Scavenger: Remove left-over

Also remove the comment on LayoutDescriptor as we want to pretenure
those.

Bug: chromium:738865
Change-Id: I5bdf66d383b481edc3250623e155b97d1081a7cc
Reviewed-on: https://chromium-review.googlesource.com/590235
Reviewed-by: Ulan Degenbaev <ulan@chromium.org>
Commit-Queue: Michael Lippautz <mlippautz@chromium.org>
Cr-Commit-Position: refs/heads/master@{#46970}
[modify] https://crrev.com/52a9b5cb8f1a0035778c167f08941c2352585555/src/heap/scavenger-inl.h

Project Member Comment 31 by bugdroid1@chromium.org, Jul 31
The following revision refers to this bug:
  https://chromium.googlesource.com/v8/v8.git/+/6432301fc3c0a3b80f5845ef51b546b943ef3259

commit 6432301fc3c0a3b80f5845ef51b546b943ef3259
Author: Michael Lippautz <mlippautz@chromium.org>
Date: Mon Jul 31 08:15:49 2017

[heap] Scavenger: Remove dead code

Bug: chromium:738865
Change-Id: Ia9544707d4117187746fc50a416370b3c08ab842
Reviewed-on: https://chromium-review.googlesource.com/593313
Reviewed-by: Ulan Degenbaev <ulan@chromium.org>
Commit-Queue: Michael Lippautz <mlippautz@chromium.org>
Cr-Commit-Position: refs/heads/master@{#46993}
[modify] https://crrev.com/6432301fc3c0a3b80f5845ef51b546b943ef3259/src/heap/heap.cc

Project Member Comment 32 by bugdroid1@chromium.org, Jul 31
The following revision refers to this bug:
  https://chromium.googlesource.com/v8/v8.git/+/3d2b211a0c02a732e7849acd2e5f3fd45d53c0d4

commit 3d2b211a0c02a732e7849acd2e5f3fd45d53c0d4
Author: Michael Lippautz <mlippautz@chromium.org>
Date: Mon Jul 31 10:58:22 2017

[heap] Scavenger: Restructure main processing method

- Add scopes
- Rename scopes to fit hierarchy
- Scavenge weak collections before parallel phase
- Remove semi space phase which doesn't exist anymore

Bug: chromium:738865
Change-Id: Id3b72793e764f8d3597917e45185d08675b57f5d
Reviewed-on: https://chromium-review.googlesource.com/593611
Reviewed-by: Ulan Degenbaev <ulan@chromium.org>
Commit-Queue: Michael Lippautz <mlippautz@chromium.org>
Cr-Commit-Position: refs/heads/master@{#47002}
[modify] https://crrev.com/3d2b211a0c02a732e7849acd2e5f3fd45d53c0d4/src/heap/gc-tracer.cc
[modify] https://crrev.com/3d2b211a0c02a732e7849acd2e5f3fd45d53c0d4/src/heap/gc-tracer.h
[modify] https://crrev.com/3d2b211a0c02a732e7849acd2e5f3fd45d53c0d4/src/heap/heap.cc

Labels: -OS-All OS-Android OS-Chrome OS-Linux OS-Mac OS-Windows
Status: Started
This is actually almost finished. Leaving open until we successfully ship to beta and stable. 
Blocking: 581412
Project Member Comment 36 by bugdroid1@chromium.org, Sep 22 (3 days ago)
The following revision refers to this bug:
  https://chromium.googlesource.com/v8/v8.git/+/2098e9c5895acf1bc87a40c7a683633b758af563

commit 2098e9c5895acf1bc87a40c7a683633b758af563
Author: Michael Lippautz <mlippautz@chromium.org>
Date: Fri Sep 22 05:01:57 2017

[heap] Scavenger: Remove JSFunction specialization when scanning promoted objects

Bug: chromium:738865
Change-Id: I0b5dea276363aa5bf51eea0b7fde1f4f265a6360
Reviewed-on: https://chromium-review.googlesource.com/678354
Reviewed-by: Ulan Degenbaev <ulan@chromium.org>
Commit-Queue: Michael Lippautz <mlippautz@chromium.org>
Cr-Commit-Position: refs/heads/master@{#48120}
[modify] https://crrev.com/2098e9c5895acf1bc87a40c7a683633b758af563/src/heap/scavenger.cc

Sign in to add a comment