Tracking bug for implementing and evaluating a parallel scavenge.
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
The following revision refers to this bug: https://chromium.googlesource.com/v8/v8.git/+/8c8bb2b150ddf3da41f018c5cc8f002797d0d9d5 commit 8c8bb2b150ddf3da41f018c5cc8f002797d0d9d5 Author: Michael Lippautz <mlippautz@chromium.org> Date: Tue Jul 04 09:24:26 2017 [heap] Templatize Worklist segment size Bug: chromium:738865 Change-Id: I67b65f3006d6fe7e88854806f364d9863076b49b Reviewed-on: https://chromium-review.googlesource.com/558969 Commit-Queue: Michael Lippautz <mlippautz@chromium.org> Reviewed-by: Ulan Degenbaev <ulan@chromium.org> Cr-Commit-Position: refs/heads/master@{#46397} [modify] https://crrev.com/8c8bb2b150ddf3da41f018c5cc8f002797d0d9d5/src/heap/concurrent-marking.cc [modify] https://crrev.com/8c8bb2b150ddf3da41f018c5cc8f002797d0d9d5/src/heap/concurrent-marking.h [modify] https://crrev.com/8c8bb2b150ddf3da41f018c5cc8f002797d0d9d5/src/heap/mark-compact.cc [modify] https://crrev.com/8c8bb2b150ddf3da41f018c5cc8f002797d0d9d5/src/heap/mark-compact.h [modify] https://crrev.com/8c8bb2b150ddf3da41f018c5cc8f002797d0d9d5/src/heap/worklist.h [modify] https://crrev.com/8c8bb2b150ddf3da41f018c5cc8f002797d0d9d5/test/cctest/heap/test-concurrent-marking.cc [modify] https://crrev.com/8c8bb2b150ddf3da41f018c5cc8f002797d0d9d5/test/unittests/heap/worklist-unittest.cc
The following revision refers to this bug: https://chromium.googlesource.com/v8/v8.git/+/660fb963b1b39873b2cdddeecad40e2260581661 commit 660fb963b1b39873b2cdddeecad40e2260581661 Author: Michael Lippautz <mlippautz@chromium.org> Date: Wed Jul 05 10:13:33 2017 [heap] Templatize worklist for arbitrary entry types To be used with tuples of heap objects and sizes. Bug: chromium:738865 Change-Id: I29d9cf98bb2097cc8e1616aaf19a251507ffbd9e Reviewed-on: https://chromium-review.googlesource.com/559050 Reviewed-by: Ulan Degenbaev <ulan@chromium.org> Commit-Queue: Michael Lippautz <mlippautz@chromium.org> Cr-Commit-Position: refs/heads/master@{#46407} [modify] https://crrev.com/660fb963b1b39873b2cdddeecad40e2260581661/src/heap/concurrent-marking.h [modify] https://crrev.com/660fb963b1b39873b2cdddeecad40e2260581661/src/heap/incremental-marking.cc [modify] https://crrev.com/660fb963b1b39873b2cdddeecad40e2260581661/src/heap/mark-compact.h [modify] https://crrev.com/660fb963b1b39873b2cdddeecad40e2260581661/src/heap/sequential-marking-deque.h [modify] https://crrev.com/660fb963b1b39873b2cdddeecad40e2260581661/src/heap/worklist.h [modify] https://crrev.com/660fb963b1b39873b2cdddeecad40e2260581661/test/unittests/heap/worklist-unittest.cc
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
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
The following revision refers to this bug: https://chromium.googlesource.com/v8/v8.git/+/2241b2476dd1aaea1ecde364bc7629d76fec24c0 commit 2241b2476dd1aaea1ecde364bc7629d76fec24c0 Author: Michael Lippautz <mlippautz@chromium.org> Date: Mon Jul 10 14:02:42 2017 [heap] Move scavenging logic to Scavenger Bug: chromium:738865 Change-Id: I93721f535ecf8518bf0355e62d5848147460abc8 Reviewed-on: https://chromium-review.googlesource.com/565198 Reviewed-by: Ulan Degenbaev <ulan@chromium.org> Commit-Queue: Michael Lippautz <mlippautz@chromium.org> Cr-Commit-Position: refs/heads/master@{#46519} [modify] https://crrev.com/2241b2476dd1aaea1ecde364bc7629d76fec24c0/src/heap/heap.cc [modify] https://crrev.com/2241b2476dd1aaea1ecde364bc7629d76fec24c0/src/heap/heap.h [modify] https://crrev.com/2241b2476dd1aaea1ecde364bc7629d76fec24c0/src/heap/scavenger-inl.h [modify] https://crrev.com/2241b2476dd1aaea1ecde364bc7629d76fec24c0/src/heap/scavenger.cc [modify] https://crrev.com/2241b2476dd1aaea1ecde364bc7629d76fec24c0/src/heap/scavenger.h
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
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
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
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
The following revision refers to this bug: https://chromium.googlesource.com/v8/v8.git/+/eaa47e1c0871b510c064df27c142b2351b6710c0 commit eaa47e1c0871b510c064df27c142b2351b6710c0 Author: Michael Lippautz <mlippautz@chromium.org> Date: Thu Jul 13 13:02:25 2017 [heap] Update allocation sites after migrating and object Bug: chromium:738865 Change-Id: I065c4e63a437daaeba8b42826f91ddd5c1b542e4 Reviewed-on: https://chromium-review.googlesource.com/570161 Reviewed-by: Ulan Degenbaev <ulan@chromium.org> Commit-Queue: Michael Lippautz <mlippautz@chromium.org> Cr-Commit-Position: refs/heads/master@{#46633} [modify] https://crrev.com/eaa47e1c0871b510c064df27c142b2351b6710c0/src/heap/heap-inl.h [modify] https://crrev.com/eaa47e1c0871b510c064df27c142b2351b6710c0/src/heap/heap.h [modify] https://crrev.com/eaa47e1c0871b510c064df27c142b2351b6710c0/src/heap/mark-compact.cc [modify] https://crrev.com/eaa47e1c0871b510c064df27c142b2351b6710c0/src/heap/scavenger-inl.h [modify] https://crrev.com/eaa47e1c0871b510c064df27c142b2351b6710c0/src/heap/scavenger.h [modify] https://crrev.com/eaa47e1c0871b510c064df27c142b2351b6710c0/src/objects.cc
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
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
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
The following revision refers to this bug: https://chromium.googlesource.com/v8/v8.git/+/24195a6d06985906a72fa2fcf27546bcb10a4a99 commit 24195a6d06985906a72fa2fcf27546bcb10a4a99 Author: Michael Lippautz <mlippautz@chromium.org> Date: Mon Jul 17 13:04:02 2017 [heap] Scavenger: Use LABs Bug: chromium:738865 Change-Id: Icc3e292ded7f4097ef266d8db80f273a412a8b92 Reviewed-on: https://chromium-review.googlesource.com/565718 Commit-Queue: Michael Lippautz <mlippautz@chromium.org> Reviewed-by: Ulan Degenbaev <ulan@chromium.org> Cr-Commit-Position: refs/heads/master@{#46708} [modify] https://crrev.com/24195a6d06985906a72fa2fcf27546bcb10a4a99/BUILD.gn [modify] https://crrev.com/24195a6d06985906a72fa2fcf27546bcb10a4a99/src/heap/heap.cc [add] https://crrev.com/24195a6d06985906a72fa2fcf27546bcb10a4a99/src/heap/local-allocator.h [modify] https://crrev.com/24195a6d06985906a72fa2fcf27546bcb10a4a99/src/heap/scavenger-inl.h [modify] https://crrev.com/24195a6d06985906a72fa2fcf27546bcb10a4a99/src/heap/scavenger.cc [modify] https://crrev.com/24195a6d06985906a72fa2fcf27546bcb10a4a99/src/heap/scavenger.h [modify] https://crrev.com/24195a6d06985906a72fa2fcf27546bcb10a4a99/src/heap/spaces.cc [modify] https://crrev.com/24195a6d06985906a72fa2fcf27546bcb10a4a99/src/v8.gyp
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
This is actually almost finished. Leaving open until we successfully ship to beta and stable.
The following revision refers to this bug: https://chromium.googlesource.com/v8/v8.git/+/9619b7f23cc6914629b6c277604feadea1b5c2dd commit 9619b7f23cc6914629b6c277604feadea1b5c2dd Author: Michael Lippautz <mlippautz@chromium.org> Date: Wed Aug 30 12:05:56 2017 [heap] Factor out the barrier from Scavenger and add tests Bug: chromium:738865 , chromium:750084 Change-Id: Ife30da4be118cd6f3212e84752978ebb39500f15 Reviewed-on: https://chromium-review.googlesource.com/641414 Commit-Queue: Michael Lippautz <mlippautz@chromium.org> Reviewed-by: Ulan Degenbaev <ulan@chromium.org> Cr-Commit-Position: refs/heads/master@{#47710} [modify] https://crrev.com/9619b7f23cc6914629b6c277604feadea1b5c2dd/BUILD.gn [add] https://crrev.com/9619b7f23cc6914629b6c277604feadea1b5c2dd/src/heap/barrier.h [modify] https://crrev.com/9619b7f23cc6914629b6c277604feadea1b5c2dd/src/heap/heap.cc [modify] https://crrev.com/9619b7f23cc6914629b6c277604feadea1b5c2dd/src/heap/scavenger.cc [modify] https://crrev.com/9619b7f23cc6914629b6c277604feadea1b5c2dd/src/heap/scavenger.h [modify] https://crrev.com/9619b7f23cc6914629b6c277604feadea1b5c2dd/src/v8.gyp [modify] https://crrev.com/9619b7f23cc6914629b6c277604feadea1b5c2dd/test/unittests/BUILD.gn [add] https://crrev.com/9619b7f23cc6914629b6c277604feadea1b5c2dd/test/unittests/heap/barrier-unittest.cc [modify] https://crrev.com/9619b7f23cc6914629b6c277604feadea1b5c2dd/test/unittests/unittests.gyp
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
The following revision refers to this bug: https://chromium.googlesource.com/v8/v8.git/+/f2414988ee6d08844e35eaa49669337a41c29491 commit f2414988ee6d08844e35eaa49669337a41c29491 Author: Michael Lippautz <mlippautz@chromium.org> Date: Fri Sep 29 17:03:32 2017 [heap] Scavenger: Move internal declarations into class Bug: chromium:738865 Change-Id: I070982d8a4fe2595673ca727973ad8b723050c2f Reviewed-on: https://chromium-review.googlesource.com/692255 Reviewed-by: Ulan Degenbaev <ulan@chromium.org> Commit-Queue: Michael Lippautz <mlippautz@chromium.org> Cr-Commit-Position: refs/heads/master@{#48238} [modify] https://crrev.com/f2414988ee6d08844e35eaa49669337a41c29491/src/heap/heap.cc [modify] https://crrev.com/f2414988ee6d08844e35eaa49669337a41c29491/src/heap/scavenger.h
The following revision refers to this bug: https://chromium.googlesource.com/v8/v8.git/+/6f91c68a545308644c5b879eee19ace8eada67af commit 6f91c68a545308644c5b879eee19ace8eada67af Author: Michael Lippautz <mlippautz@chromium.org> Date: Fri Oct 20 13:51:01 2017 [heap] Scavenger: Allow more tasks on arm Bug: chromium:738865 Change-Id: I17f01ae4e4c854a8ca674f4fa1647d281ecede9c Reviewed-on: https://chromium-review.googlesource.com/730743 Reviewed-by: Ulan Degenbaev <ulan@chromium.org> Commit-Queue: Michael Lippautz <mlippautz@chromium.org> Cr-Commit-Position: refs/heads/master@{#48792} [modify] https://crrev.com/6f91c68a545308644c5b879eee19ace8eada67af/src/heap/heap.h
This is done for now. Any further improvements or bugs should get their own issue.
Comment 1 by mlippautz@chromium.org
, Jul 3 2017