New issue
Advanced search Search tips
Note: Color blocks (like or ) mean that a user may not be available. Tooltip shows the reason.

Issue 694255 link

Starred by 5 users

Issue metadata

Status: Fixed
Owner:
Closed: Feb 2018
Cc:
Components:
EstimatedDays: ----
NextAction: ----
OS: ----
Pri: 3
Type: Bug


Sign in to add a comment

Implement concurrent marking in V8

Project Member Reported by u...@chromium.org, Feb 20 2017

Issue description

This issue tracks CLs related to concurrent marking in V8.
 
Showing comments 109 - 208 of 208 Older
Project Member

Comment 110 by bugdroid1@chromium.org, Jul 29 2017

The following revision refers to this bug:
  https://chromium.googlesource.com/v8/v8.git/+/962de532f5848675d8e59ba0e2ccc50146bbda05

commit 962de532f5848675d8e59ba0e2ccc50146bbda05
Author: Ulan Degenbaev <ulan@chromium.org>
Date: Sat Jul 29 13:34:35 2017

[heap] Fix data race in IncrementalMarking::NotifyLeftTrimming.

BUG= chromium:694255 
TBR=mlippautz@chromium.org

Change-Id: I7dd9623ff85fcc49f034c71a6f5149f9488a9abb
Reviewed-on: https://chromium-review.googlesource.com/593010
Reviewed-by: Ulan Degenbaev <ulan@chromium.org>
Commit-Queue: Ulan Degenbaev <ulan@chromium.org>
Cr-Commit-Position: refs/heads/master@{#46990}
[modify] https://crrev.com/962de532f5848675d8e59ba0e2ccc50146bbda05/src/heap/incremental-marking.cc

Project Member

Comment 111 by bugdroid1@chromium.org, Jul 31 2017

The following revision refers to this bug:
  https://chromium.googlesource.com/v8/v8.git/+/c8c3f3cf75a768ba31c1be369b5d55ee9ad5c669

commit c8c3f3cf75a768ba31c1be369b5d55ee9ad5c669
Author: Ulan Degenbaev <ulan@chromium.org>
Date: Mon Jul 31 08:52:16 2017

[heap] Clear old-to-old recorded slots in the sweeper.

Currently we clear only old-to-new slots in the sweeper.
For old-to-old slots we maintain the invariant that there are no
recorded slots in dead objects by explicitly clearing them
on object size change and array trimming.

The write barrier for concurrent marking will record slots
even when the host object is white. Thus, it can introduce slots
in dead objects, which will break evacuation phase if we do not
clear them in the sweeper.

Besides that, the patch makes handling of slots more uniform and
allows us to remove clearing of slots on object size changes.

BUG= chromium:694255 

Change-Id: I48f60eb25ddc48c6948be4461367e3f7abf74672
Reviewed-on: https://chromium-review.googlesource.com/592207
Reviewed-by: Michael Lippautz <mlippautz@chromium.org>
Commit-Queue: Ulan Degenbaev <ulan@chromium.org>
Cr-Commit-Position: refs/heads/master@{#46996}
[modify] https://crrev.com/c8c3f3cf75a768ba31c1be369b5d55ee9ad5c669/src/heap/mark-compact.cc
[modify] https://crrev.com/c8c3f3cf75a768ba31c1be369b5d55ee9ad5c669/src/heap/mark-compact.h

Project Member

Comment 112 by bugdroid1@chromium.org, Jul 31 2017

The following revision refers to this bug:
  https://chromium.googlesource.com/v8/v8.git/+/ed76f17b15fbc7c2b63391a47ab55f2f5207ee8e

commit ed76f17b15fbc7c2b63391a47ab55f2f5207ee8e
Author: Ulan Degenbaev <ulan@chromium.org>
Date: Mon Jul 31 09:41:18 2017

[heap, runtime] Avoid redundant clearing of slots in a trimmed array.

The slots outside the trimmed array will be cleared by the sweeper and
will not be overwritten with an untagged value.

BUG= chromium:694255 

Change-Id: I3e814b9934ca95a09e883e237687434e6bb58c80
Reviewed-on: https://chromium-review.googlesource.com/591651
Reviewed-by: Michael Lippautz <mlippautz@chromium.org>
Commit-Queue: Ulan Degenbaev <ulan@chromium.org>
Cr-Commit-Position: refs/heads/master@{#46998}
[modify] https://crrev.com/ed76f17b15fbc7c2b63391a47ab55f2f5207ee8e/src/heap/heap.cc

Project Member

Comment 113 by bugdroid1@chromium.org, Jul 31 2017

The following revision refers to this bug:
  https://chromium.googlesource.com/v8/v8.git/+/3f820ebb0b1920d3773ad0c5256ae299fedf9542

commit 3f820ebb0b1920d3773ad0c5256ae299fedf9542
Author: Ulan Degenbaev <ulan@chromium.org>
Date: Mon Jul 31 09:42:27 2017

[heap, runtime] Avoid redundant clearing of slots outside an object.

When an object shrinks, we can keep the recorded slots until the sweeper
removes them. It is safe because the recorded slots will not be over-
written with untagged values.

BUG= chromium:694255 

Change-Id: I2b910c6345a306e00c7a10396876001e663f51ea
Reviewed-on: https://chromium-review.googlesource.com/591650
Reviewed-by: Michael Lippautz <mlippautz@chromium.org>
Reviewed-by: Jakob Kummerow <jkummerow@chromium.org>
Commit-Queue: Ulan Degenbaev <ulan@chromium.org>
Cr-Commit-Position: refs/heads/master@{#46999}
[modify] https://crrev.com/3f820ebb0b1920d3773ad0c5256ae299fedf9542/src/objects.cc

Project Member

Comment 114 by bugdroid1@chromium.org, Jul 31 2017

The following revision refers to this bug:
  https://chromium.googlesource.com/v8/v8.git/+/14e6a65afe8cd7918abd2130eb1d0ab3e4680022

commit 14e6a65afe8cd7918abd2130eb1d0ab3e4680022
Author: Ulan Degenbaev <ulan@chromium.org>
Date: Mon Jul 31 16:54:17 2017

[runtime] Use nullptr instead of NULL when calling WRITE_FIELD.

BUG= chromium:694255 
TBR=cbruni@chromium.org

Change-Id: I8a7907aa18d2855ca571ae564c7eeda41bf13fbb
Reviewed-on: https://chromium-review.googlesource.com/593655
Reviewed-by: Ulan Degenbaev <ulan@chromium.org>
Commit-Queue: Ulan Degenbaev <ulan@chromium.org>
Cr-Commit-Position: refs/heads/master@{#47017}
[modify] https://crrev.com/14e6a65afe8cd7918abd2130eb1d0ab3e4680022/src/objects-inl.h

Project Member

Comment 115 by bugdroid1@chromium.org, Jul 31 2017

The following revision refers to this bug:
  https://chromium.googlesource.com/v8/v8.git/+/6fbbe93c5e60909fbf85933df3f4e4d5e72fb78b

commit 6fbbe93c5e60909fbf85933df3f4e4d5e72fb78b
Author: Ulan Degenbaev <ulan@chromium.org>
Date: Mon Jul 31 19:16:24 2017

Revert "[heap, runtime] Fix data race in prototype map transition during"

This reverts commit d8846ffd5f9787ef79f85492530f40e7de2d22f3.

Reason: the fix doesn't work, the proper fix is to not mutate the map.

BUG= chromium:694255 
TBR=ishell@chromium.org

Change-Id: Iebef7cd01081145c172902727e0035a8745703b7
Reviewed-on: https://chromium-review.googlesource.com/594727
Reviewed-by: Ulan Degenbaev <ulan@chromium.org>
Commit-Queue: Ulan Degenbaev <ulan@chromium.org>
Cr-Commit-Position: refs/heads/master@{#47020}
[modify] https://crrev.com/6fbbe93c5e60909fbf85933df3f4e4d5e72fb78b/src/objects.cc

Project Member

Comment 116 by bugdroid1@chromium.org, Aug 1 2017

The following revision refers to this bug:
  https://chromium.googlesource.com/v8/v8.git/+/d624daacc645a1ed50bed641d939e87f8cf51028

commit d624daacc645a1ed50bed641d939e87f8cf51028
Author: Ulan Degenbaev <ulan@chromium.org>
Date: Tue Aug 01 13:43:36 2017

[heap] Remove special handling of map space in old-to-old pointer update.

Now that the layout descriptor is pretenured, we don't need atomic
accessor for the map space.

BUG= chromium:694255 

Change-Id: I0ced8c04eaa61eec0f6a7b518ecba6413a691501
Reviewed-on: https://chromium-review.googlesource.com/595742
Reviewed-by: Michael Lippautz <mlippautz@chromium.org>
Commit-Queue: Ulan Degenbaev <ulan@chromium.org>
Cr-Commit-Position: refs/heads/master@{#47042}
[modify] https://crrev.com/d624daacc645a1ed50bed641d939e87f8cf51028/src/heap/mark-compact.cc

Project Member

Comment 117 by bugdroid1@chromium.org, Aug 1 2017

The following revision refers to this bug:
  https://chromium.googlesource.com/v8/v8.git/+/7a5a777c97ed2cce2aa1b7c554646519e23bd05c

commit 7a5a777c97ed2cce2aa1b7c554646519e23bd05c
Author: Ulan Degenbaev <ulan@chromium.org>
Date: Tue Aug 01 16:12:53 2017

[heap] Add mechanism for tracking invalidated slots per memory chunk.

For correct slots recording in concurrent marker, we need to resolve
the race that happens when
1) the mutator is invalidating slots for double unboxing or string
conversions
2) and the concurrent marker is recording these slots.

This patch adds a data-structure for tracking the invalidated objects.
Thus we can allow the concurrent marker to record slots without
worrying about clearing them. During old-to-old pointer updating phase
we re-check all slots that belong to the invalidated objects.

BUG= chromium:694255 

Change-Id: Ifc3d82918cd3b96e5a5fb7125691626a56f4ab83
Reviewed-on: https://chromium-review.googlesource.com/591810
Reviewed-by: Michael Lippautz <mlippautz@chromium.org>
Commit-Queue: Ulan Degenbaev <ulan@chromium.org>
Cr-Commit-Position: refs/heads/master@{#47049}
[modify] https://crrev.com/7a5a777c97ed2cce2aa1b7c554646519e23bd05c/BUILD.gn
[modify] https://crrev.com/7a5a777c97ed2cce2aa1b7c554646519e23bd05c/src/heap/heap.cc
[modify] https://crrev.com/7a5a777c97ed2cce2aa1b7c554646519e23bd05c/src/heap/heap.h
[add] https://crrev.com/7a5a777c97ed2cce2aa1b7c554646519e23bd05c/src/heap/invalidated-slots-inl.h
[add] https://crrev.com/7a5a777c97ed2cce2aa1b7c554646519e23bd05c/src/heap/invalidated-slots.cc
[add] https://crrev.com/7a5a777c97ed2cce2aa1b7c554646519e23bd05c/src/heap/invalidated-slots.h
[modify] https://crrev.com/7a5a777c97ed2cce2aa1b7c554646519e23bd05c/src/heap/mark-compact.cc
[modify] https://crrev.com/7a5a777c97ed2cce2aa1b7c554646519e23bd05c/src/heap/remembered-set.h
[modify] https://crrev.com/7a5a777c97ed2cce2aa1b7c554646519e23bd05c/src/heap/spaces.cc
[modify] https://crrev.com/7a5a777c97ed2cce2aa1b7c554646519e23bd05c/src/heap/spaces.h
[modify] https://crrev.com/7a5a777c97ed2cce2aa1b7c554646519e23bd05c/src/objects.cc
[modify] https://crrev.com/7a5a777c97ed2cce2aa1b7c554646519e23bd05c/src/runtime/runtime-object.cc
[modify] https://crrev.com/7a5a777c97ed2cce2aa1b7c554646519e23bd05c/src/v8.gyp
[modify] https://crrev.com/7a5a777c97ed2cce2aa1b7c554646519e23bd05c/test/cctest/BUILD.gn
[modify] https://crrev.com/7a5a777c97ed2cce2aa1b7c554646519e23bd05c/test/cctest/cctest.gyp
[modify] https://crrev.com/7a5a777c97ed2cce2aa1b7c554646519e23bd05c/test/cctest/heap/heap-tester.h
[add] https://crrev.com/7a5a777c97ed2cce2aa1b7c554646519e23bd05c/test/cctest/heap/test-invalidated-slots.cc

Project Member

Comment 119 by bugdroid1@chromium.org, Aug 1 2017

The following revision refers to this bug:
  https://chromium.googlesource.com/v8/v8.git/+/c59b81d7b8e0062afdbbdb9b72bebaf8b056ccc0

commit c59b81d7b8e0062afdbbdb9b72bebaf8b056ccc0
Author: Ulan Degenbaev <ulan@chromium.org>
Date: Tue Aug 01 18:13:41 2017

Revert "[heap] Add mechanism for tracking invalidated slots per memory chunk."

This reverts commit 7a5a777c97ed2cce2aa1b7c554646519e23bd05c.

Reason for revert: crashing in test-api

Original change's description:
> [heap] Add mechanism for tracking invalidated slots per memory chunk.
> 
> For correct slots recording in concurrent marker, we need to resolve
> the race that happens when
> 1) the mutator is invalidating slots for double unboxing or string
> conversions
> 2) and the concurrent marker is recording these slots.
> 
> This patch adds a data-structure for tracking the invalidated objects.
> Thus we can allow the concurrent marker to record slots without
> worrying about clearing them. During old-to-old pointer updating phase
> we re-check all slots that belong to the invalidated objects.
> 
> BUG= chromium:694255 
> 
> Change-Id: Ifc3d82918cd3b96e5a5fb7125691626a56f4ab83
> Reviewed-on: https://chromium-review.googlesource.com/591810
> Reviewed-by: Michael Lippautz <mlippautz@chromium.org>
> Commit-Queue: Ulan Degenbaev <ulan@chromium.org>
> Cr-Commit-Position: refs/heads/master@{#47049}

TBR=ulan@chromium.org,mlippautz@chromium.org

Change-Id: I7f4f8e8cb027b921a82e9c0a0623536af02581fb
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Bug:  chromium:694255 
Reviewed-on: https://chromium-review.googlesource.com/595994
Reviewed-by: Ulan Degenbaev <ulan@chromium.org>
Commit-Queue: Ulan Degenbaev <ulan@chromium.org>
Cr-Commit-Position: refs/heads/master@{#47052}
[modify] https://crrev.com/c59b81d7b8e0062afdbbdb9b72bebaf8b056ccc0/BUILD.gn
[modify] https://crrev.com/c59b81d7b8e0062afdbbdb9b72bebaf8b056ccc0/src/heap/heap.cc
[modify] https://crrev.com/c59b81d7b8e0062afdbbdb9b72bebaf8b056ccc0/src/heap/heap.h
[delete] https://crrev.com/5337b905ce144601ef64abcec94512fd1f06dc9f/src/heap/invalidated-slots-inl.h
[delete] https://crrev.com/5337b905ce144601ef64abcec94512fd1f06dc9f/src/heap/invalidated-slots.cc
[delete] https://crrev.com/5337b905ce144601ef64abcec94512fd1f06dc9f/src/heap/invalidated-slots.h
[modify] https://crrev.com/c59b81d7b8e0062afdbbdb9b72bebaf8b056ccc0/src/heap/mark-compact.cc
[modify] https://crrev.com/c59b81d7b8e0062afdbbdb9b72bebaf8b056ccc0/src/heap/remembered-set.h
[modify] https://crrev.com/c59b81d7b8e0062afdbbdb9b72bebaf8b056ccc0/src/heap/spaces.cc
[modify] https://crrev.com/c59b81d7b8e0062afdbbdb9b72bebaf8b056ccc0/src/heap/spaces.h
[modify] https://crrev.com/c59b81d7b8e0062afdbbdb9b72bebaf8b056ccc0/src/objects.cc
[modify] https://crrev.com/c59b81d7b8e0062afdbbdb9b72bebaf8b056ccc0/src/runtime/runtime-object.cc
[modify] https://crrev.com/c59b81d7b8e0062afdbbdb9b72bebaf8b056ccc0/src/v8.gyp
[modify] https://crrev.com/c59b81d7b8e0062afdbbdb9b72bebaf8b056ccc0/test/cctest/BUILD.gn
[modify] https://crrev.com/c59b81d7b8e0062afdbbdb9b72bebaf8b056ccc0/test/cctest/cctest.gyp
[modify] https://crrev.com/c59b81d7b8e0062afdbbdb9b72bebaf8b056ccc0/test/cctest/heap/heap-tester.h
[delete] https://crrev.com/5337b905ce144601ef64abcec94512fd1f06dc9f/test/cctest/heap/test-invalidated-slots.cc

Project Member

Comment 120 by bugdroid1@chromium.org, Aug 1 2017

The following revision refers to this bug:
  https://chromium.googlesource.com/v8/v8.git/+/2614b26b449cb6b7508d31237b9e217a584bc939

commit 2614b26b449cb6b7508d31237b9e217a584bc939
Author: Ulan Degenbaev <ulan@chromium.org>
Date: Tue Aug 01 18:14:50 2017

[heap] Disable compaction for concurrent marking.

7a5a777 is going to be reverted and compaction depends on it.

BUG= chromium:694255 
TBR=ulan@chromium.org,mlippautz@chromium.org

No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Change-Id: I975ea597860dd63e543b69bdc787c6667b015567
Reviewed-on: https://chromium-review.googlesource.com/595993
Commit-Queue: Ulan Degenbaev <ulan@chromium.org>
Reviewed-by: Ulan Degenbaev <ulan@chromium.org>
Cr-Commit-Position: refs/heads/master@{#47053}
[modify] https://crrev.com/2614b26b449cb6b7508d31237b9e217a584bc939/src/flag-definitions.h

Project Member

Comment 121 by bugdroid1@chromium.org, Aug 1 2017

The following revision refers to this bug:
  https://chromium.googlesource.com/v8/v8.git/+/638343afd28e602e6510e9d0f6815523fe14361e

commit 638343afd28e602e6510e9d0f6815523fe14361e
Author: Ulan Degenbaev <ulan@chromium.org>
Date: Tue Aug 01 18:38:20 2017

[heap] Revert remaining parts of 5337b9

BUG= chromium:694255 
TBR=ulan@chromium.org,mlippautz@chromium.org

No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Change-Id: I832014d423335514cf1564984832b7a4e2c104ad
Reviewed-on: https://chromium-review.googlesource.com/595984
Commit-Queue: Ulan Degenbaev <ulan@chromium.org>
Reviewed-by: Ulan Degenbaev <ulan@chromium.org>
Cr-Commit-Position: refs/heads/master@{#47057}
[modify] https://crrev.com/638343afd28e602e6510e9d0f6815523fe14361e/src/heap/heap.cc

Project Member

Comment 122 by bugdroid1@chromium.org, Aug 2 2017

The following revision refers to this bug:
  https://chromium.googlesource.com/v8/v8.git/+/d4a742fdf16598872944c4378e41b59f35c1f9d6

commit d4a742fdf16598872944c4378e41b59f35c1f9d6
Author: Ulan Degenbaev <ulan@chromium.org>
Date: Wed Aug 02 08:46:56 2017

Reland "[heap] Add mechanism for tracking invalidated slots per memory chunk."

This reverts commit c59b81d7b8e0062afdbbdb9b72bebaf8b056ccc0.

Original change's description:
> [heap] Add mechanism for tracking invalidated slots per memory chunk.

> For correct slots recording in concurrent marker, we need to resolve
> the race that happens when
> 1) the mutator is invalidating slots for double unboxing or string
> conversions
> 2) and the concurrent marker is recording these slots.

> This patch adds a data-structure for tracking the invalidated objects.
> Thus we can allow the concurrent marker to record slots without
> worrying about clearing them. During old-to-old pointer updating phase
> we re-check all slots that belong to the invalidated objects.

BUG= chromium:694255 

Change-Id: Idf8927d162377a7bbdff34f81a87e52db27d6a9f
Reviewed-on: https://chromium-review.googlesource.com/596868
Reviewed-by: Michael Lippautz <mlippautz@chromium.org>
Commit-Queue: Ulan Degenbaev <ulan@chromium.org>
Cr-Commit-Position: refs/heads/master@{#47068}
[modify] https://crrev.com/d4a742fdf16598872944c4378e41b59f35c1f9d6/BUILD.gn
[modify] https://crrev.com/d4a742fdf16598872944c4378e41b59f35c1f9d6/src/heap/heap.cc
[modify] https://crrev.com/d4a742fdf16598872944c4378e41b59f35c1f9d6/src/heap/heap.h
[add] https://crrev.com/d4a742fdf16598872944c4378e41b59f35c1f9d6/src/heap/invalidated-slots-inl.h
[add] https://crrev.com/d4a742fdf16598872944c4378e41b59f35c1f9d6/src/heap/invalidated-slots.cc
[add] https://crrev.com/d4a742fdf16598872944c4378e41b59f35c1f9d6/src/heap/invalidated-slots.h
[modify] https://crrev.com/d4a742fdf16598872944c4378e41b59f35c1f9d6/src/heap/mark-compact.cc
[modify] https://crrev.com/d4a742fdf16598872944c4378e41b59f35c1f9d6/src/heap/remembered-set.h
[modify] https://crrev.com/d4a742fdf16598872944c4378e41b59f35c1f9d6/src/heap/spaces.cc
[modify] https://crrev.com/d4a742fdf16598872944c4378e41b59f35c1f9d6/src/heap/spaces.h
[modify] https://crrev.com/d4a742fdf16598872944c4378e41b59f35c1f9d6/src/objects.cc
[modify] https://crrev.com/d4a742fdf16598872944c4378e41b59f35c1f9d6/src/runtime/runtime-object.cc
[modify] https://crrev.com/d4a742fdf16598872944c4378e41b59f35c1f9d6/src/v8.gyp
[modify] https://crrev.com/d4a742fdf16598872944c4378e41b59f35c1f9d6/test/cctest/BUILD.gn
[modify] https://crrev.com/d4a742fdf16598872944c4378e41b59f35c1f9d6/test/cctest/cctest.gyp
[modify] https://crrev.com/d4a742fdf16598872944c4378e41b59f35c1f9d6/test/cctest/heap/heap-tester.h
[add] https://crrev.com/d4a742fdf16598872944c4378e41b59f35c1f9d6/test/cctest/heap/test-invalidated-slots.cc

Project Member

Comment 123 by bugdroid1@chromium.org, Aug 2 2017

The following revision refers to this bug:
  https://chromium.googlesource.com/v8/v8.git/+/3fe14218583f58ac989a97b8aec02f82fd36e3f2

commit 3fe14218583f58ac989a97b8aec02f82fd36e3f2
Author: Ulan Degenbaev <ulan@chromium.org>
Date: Wed Aug 02 08:51:56 2017

[heap] Add manual GC scope to test-array-buffer-tracker tests.

These tests perform GC manually which does not work well with concurrent
marking and stress incremental marking flags.

BUG= chromium:694255 

Change-Id: I43e32957bf37053e0d3af07afa00b8bb40935ebd
Reviewed-on: https://chromium-review.googlesource.com/596887
Reviewed-by: Michael Lippautz <mlippautz@chromium.org>
Commit-Queue: Ulan Degenbaev <ulan@chromium.org>
Cr-Commit-Position: refs/heads/master@{#47070}
[modify] https://crrev.com/3fe14218583f58ac989a97b8aec02f82fd36e3f2/test/cctest/heap/test-array-buffer-tracker.cc

Project Member

Comment 124 by bugdroid1@chromium.org, Aug 2 2017

The following revision refers to this bug:
  https://chromium.googlesource.com/v8/v8.git/+/6fde541d4cd32e2946b95b503c54ee6e32f92ebe

commit 6fde541d4cd32e2946b95b503c54ee6e32f92ebe
Author: Ulan Degenbaev <ulan@chromium.org>
Date: Wed Aug 02 11:38:20 2017

Revert "Reland "[heap] Add mechanism for tracking invalidated slots per memory chunk.""

This reverts commit d4a742fdf16598872944c4378e41b59f35c1f9d6.

Reason for revert: gc-stress failures

Original change's description:
> Reland "[heap] Add mechanism for tracking invalidated slots per memory chunk."
> 
> This reverts commit c59b81d7b8e0062afdbbdb9b72bebaf8b056ccc0.
> 
> Original change's description:
> > [heap] Add mechanism for tracking invalidated slots per memory chunk.
> 
> > For correct slots recording in concurrent marker, we need to resolve
> > the race that happens when
> > 1) the mutator is invalidating slots for double unboxing or string
> > conversions
> > 2) and the concurrent marker is recording these slots.
> 
> > This patch adds a data-structure for tracking the invalidated objects.
> > Thus we can allow the concurrent marker to record slots without
> > worrying about clearing them. During old-to-old pointer updating phase
> > we re-check all slots that belong to the invalidated objects.
> 
> BUG= chromium:694255 
> 
> Change-Id: Idf8927d162377a7bbdff34f81a87e52db27d6a9f
> Reviewed-on: https://chromium-review.googlesource.com/596868
> Reviewed-by: Michael Lippautz <mlippautz@chromium.org>
> Commit-Queue: Ulan Degenbaev <ulan@chromium.org>
> Cr-Commit-Position: refs/heads/master@{#47068}

TBR=ulan@chromium.org,mlippautz@chromium.org

Change-Id: I81c6059a092cc5834acd799c51fd30dc0ecf5b27
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Bug:  chromium:694255 
Reviewed-on: https://chromium-review.googlesource.com/597787
Reviewed-by: Ulan Degenbaev <ulan@chromium.org>
Commit-Queue: Ulan Degenbaev <ulan@chromium.org>
Cr-Commit-Position: refs/heads/master@{#47078}
[modify] https://crrev.com/6fde541d4cd32e2946b95b503c54ee6e32f92ebe/BUILD.gn
[modify] https://crrev.com/6fde541d4cd32e2946b95b503c54ee6e32f92ebe/src/heap/heap.cc
[modify] https://crrev.com/6fde541d4cd32e2946b95b503c54ee6e32f92ebe/src/heap/heap.h
[delete] https://crrev.com/33cac84c73e639fbe73aa3f33dc1485aa2c2f5ac/src/heap/invalidated-slots-inl.h
[delete] https://crrev.com/33cac84c73e639fbe73aa3f33dc1485aa2c2f5ac/src/heap/invalidated-slots.cc
[delete] https://crrev.com/33cac84c73e639fbe73aa3f33dc1485aa2c2f5ac/src/heap/invalidated-slots.h
[modify] https://crrev.com/6fde541d4cd32e2946b95b503c54ee6e32f92ebe/src/heap/mark-compact.cc
[modify] https://crrev.com/6fde541d4cd32e2946b95b503c54ee6e32f92ebe/src/heap/remembered-set.h
[modify] https://crrev.com/6fde541d4cd32e2946b95b503c54ee6e32f92ebe/src/heap/spaces.cc
[modify] https://crrev.com/6fde541d4cd32e2946b95b503c54ee6e32f92ebe/src/heap/spaces.h
[modify] https://crrev.com/6fde541d4cd32e2946b95b503c54ee6e32f92ebe/src/objects.cc
[modify] https://crrev.com/6fde541d4cd32e2946b95b503c54ee6e32f92ebe/src/runtime/runtime-object.cc
[modify] https://crrev.com/6fde541d4cd32e2946b95b503c54ee6e32f92ebe/src/v8.gyp
[modify] https://crrev.com/6fde541d4cd32e2946b95b503c54ee6e32f92ebe/test/cctest/BUILD.gn
[modify] https://crrev.com/6fde541d4cd32e2946b95b503c54ee6e32f92ebe/test/cctest/cctest.gyp
[modify] https://crrev.com/6fde541d4cd32e2946b95b503c54ee6e32f92ebe/test/cctest/heap/heap-tester.h
[delete] https://crrev.com/33cac84c73e639fbe73aa3f33dc1485aa2c2f5ac/test/cctest/heap/test-invalidated-slots.cc

Project Member

Comment 125 by bugdroid1@chromium.org, Aug 2 2017

The following revision refers to this bug:
  https://chromium.googlesource.com/v8/v8.git/+/0a9d51509595976df75178907228fa9ee5d46b85

commit 0a9d51509595976df75178907228fa9ee5d46b85
Author: Ulan Degenbaev <ulan@chromium.org>
Date: Wed Aug 02 14:29:31 2017

Reland^2 "[heap] Add mechanism for tracking invalidated slots per memory chunk."

This reverts commit 6fde541d4cd32e2946b95b503c54ee6e32f92ebe.

Bug:  chromium:694255 
Change-Id: I4670d0de3d2749afbb3bdb8dc5418822a885330c
Reviewed-on: https://chromium-review.googlesource.com/597850
Commit-Queue: Ulan Degenbaev <ulan@chromium.org>
Reviewed-by: Michael Lippautz <mlippautz@chromium.org>
Cr-Commit-Position: refs/heads/master@{#47083}
[modify] https://crrev.com/0a9d51509595976df75178907228fa9ee5d46b85/BUILD.gn
[modify] https://crrev.com/0a9d51509595976df75178907228fa9ee5d46b85/src/heap/heap.cc
[modify] https://crrev.com/0a9d51509595976df75178907228fa9ee5d46b85/src/heap/heap.h
[add] https://crrev.com/0a9d51509595976df75178907228fa9ee5d46b85/src/heap/invalidated-slots-inl.h
[add] https://crrev.com/0a9d51509595976df75178907228fa9ee5d46b85/src/heap/invalidated-slots.cc
[add] https://crrev.com/0a9d51509595976df75178907228fa9ee5d46b85/src/heap/invalidated-slots.h
[modify] https://crrev.com/0a9d51509595976df75178907228fa9ee5d46b85/src/heap/mark-compact.cc
[modify] https://crrev.com/0a9d51509595976df75178907228fa9ee5d46b85/src/heap/remembered-set.h
[modify] https://crrev.com/0a9d51509595976df75178907228fa9ee5d46b85/src/heap/spaces.cc
[modify] https://crrev.com/0a9d51509595976df75178907228fa9ee5d46b85/src/heap/spaces.h
[modify] https://crrev.com/0a9d51509595976df75178907228fa9ee5d46b85/src/objects.cc
[modify] https://crrev.com/0a9d51509595976df75178907228fa9ee5d46b85/src/runtime/runtime-object.cc
[modify] https://crrev.com/0a9d51509595976df75178907228fa9ee5d46b85/src/v8.gyp
[modify] https://crrev.com/0a9d51509595976df75178907228fa9ee5d46b85/test/cctest/BUILD.gn
[modify] https://crrev.com/0a9d51509595976df75178907228fa9ee5d46b85/test/cctest/cctest.gyp
[modify] https://crrev.com/0a9d51509595976df75178907228fa9ee5d46b85/test/cctest/heap/heap-tester.h
[add] https://crrev.com/0a9d51509595976df75178907228fa9ee5d46b85/test/cctest/heap/test-invalidated-slots.cc

Project Member

Comment 126 by bugdroid1@chromium.org, Aug 2 2017

The following revision refers to this bug:
  https://chromium.googlesource.com/v8/v8.git/+/b9acf4ededf108a5c0243d221c3522dd26abfcbf

commit b9acf4ededf108a5c0243d221c3522dd26abfcbf
Author: Ulan Degenbaev <ulan@chromium.org>
Date: Wed Aug 02 15:12:24 2017

Revert "Reland^2 "[heap] Add mechanism for tracking invalidated slots per memory chunk.""

This reverts commit 0a9d51509595976df75178907228fa9ee5d46b85.

Reason for revert: another gc-stress failure

Original change's description:
> Reland^2 "[heap] Add mechanism for tracking invalidated slots per memory chunk."
> 
> This reverts commit 6fde541d4cd32e2946b95b503c54ee6e32f92ebe.
> 
> Bug:  chromium:694255 
> Change-Id: I4670d0de3d2749afbb3bdb8dc5418822a885330c
> Reviewed-on: https://chromium-review.googlesource.com/597850
> Commit-Queue: Ulan Degenbaev <ulan@chromium.org>
> Reviewed-by: Michael Lippautz <mlippautz@chromium.org>
> Cr-Commit-Position: refs/heads/master@{#47083}

TBR=ulan@chromium.org,mlippautz@chromium.org

Change-Id: Iaabf4586e0297dccb1ab4ef180b6f1eea173273b
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Bug:  chromium:694255 
Reviewed-on: https://chromium-review.googlesource.com/598094
Reviewed-by: Ulan Degenbaev <ulan@chromium.org>
Commit-Queue: Ulan Degenbaev <ulan@chromium.org>
Cr-Commit-Position: refs/heads/master@{#47084}
[modify] https://crrev.com/b9acf4ededf108a5c0243d221c3522dd26abfcbf/BUILD.gn
[modify] https://crrev.com/b9acf4ededf108a5c0243d221c3522dd26abfcbf/src/heap/heap.cc
[modify] https://crrev.com/b9acf4ededf108a5c0243d221c3522dd26abfcbf/src/heap/heap.h
[delete] https://crrev.com/0a9d51509595976df75178907228fa9ee5d46b85/src/heap/invalidated-slots-inl.h
[delete] https://crrev.com/0a9d51509595976df75178907228fa9ee5d46b85/src/heap/invalidated-slots.cc
[delete] https://crrev.com/0a9d51509595976df75178907228fa9ee5d46b85/src/heap/invalidated-slots.h
[modify] https://crrev.com/b9acf4ededf108a5c0243d221c3522dd26abfcbf/src/heap/mark-compact.cc
[modify] https://crrev.com/b9acf4ededf108a5c0243d221c3522dd26abfcbf/src/heap/remembered-set.h
[modify] https://crrev.com/b9acf4ededf108a5c0243d221c3522dd26abfcbf/src/heap/spaces.cc
[modify] https://crrev.com/b9acf4ededf108a5c0243d221c3522dd26abfcbf/src/heap/spaces.h
[modify] https://crrev.com/b9acf4ededf108a5c0243d221c3522dd26abfcbf/src/objects.cc
[modify] https://crrev.com/b9acf4ededf108a5c0243d221c3522dd26abfcbf/src/runtime/runtime-object.cc
[modify] https://crrev.com/b9acf4ededf108a5c0243d221c3522dd26abfcbf/src/v8.gyp
[modify] https://crrev.com/b9acf4ededf108a5c0243d221c3522dd26abfcbf/test/cctest/BUILD.gn
[modify] https://crrev.com/b9acf4ededf108a5c0243d221c3522dd26abfcbf/test/cctest/cctest.gyp
[modify] https://crrev.com/b9acf4ededf108a5c0243d221c3522dd26abfcbf/test/cctest/heap/heap-tester.h
[delete] https://crrev.com/0a9d51509595976df75178907228fa9ee5d46b85/test/cctest/heap/test-invalidated-slots.cc

Project Member

Comment 127 by bugdroid1@chromium.org, Aug 2 2017

The following revision refers to this bug:
  https://chromium.googlesource.com/v8/v8.git/+/35c923cc10a7bfb47b95dca4c2bdd07891c46605

commit 35c923cc10a7bfb47b95dca4c2bdd07891c46605
Author: Ulan Degenbaev <ulan@chromium.org>
Date: Wed Aug 02 17:13:01 2017

[heap] Add support for atomic access to page flags.

This patch renames AsAtomicWord to AsAtomicPointer and
adds new AsAtomicWord that works with intptr_t.

Slot recording uses atomic page flag accessors.

BUG= chromium:694255 

Change-Id: I1c692813244b41320182e9eea50462d1802fcd98
Reviewed-on: https://chromium-review.googlesource.com/597688
Commit-Queue: Ulan Degenbaev <ulan@chromium.org>
Reviewed-by: Michael Lippautz <mlippautz@chromium.org>
Cr-Commit-Position: refs/heads/master@{#47086}
[modify] https://crrev.com/35c923cc10a7bfb47b95dca4c2bdd07891c46605/src/base/atomic-utils.h
[modify] https://crrev.com/35c923cc10a7bfb47b95dca4c2bdd07891c46605/src/globals.h
[modify] https://crrev.com/35c923cc10a7bfb47b95dca4c2bdd07891c46605/src/heap/concurrent-marking.cc
[modify] https://crrev.com/35c923cc10a7bfb47b95dca4c2bdd07891c46605/src/heap/heap.cc
[modify] https://crrev.com/35c923cc10a7bfb47b95dca4c2bdd07891c46605/src/heap/mark-compact-inl.h
[modify] https://crrev.com/35c923cc10a7bfb47b95dca4c2bdd07891c46605/src/heap/mark-compact.cc
[modify] https://crrev.com/35c923cc10a7bfb47b95dca4c2bdd07891c46605/src/heap/scavenger-inl.h
[modify] https://crrev.com/35c923cc10a7bfb47b95dca4c2bdd07891c46605/src/heap/slot-set.h
[modify] https://crrev.com/35c923cc10a7bfb47b95dca4c2bdd07891c46605/src/heap/spaces.cc
[modify] https://crrev.com/35c923cc10a7bfb47b95dca4c2bdd07891c46605/src/heap/spaces.h

Project Member

Comment 128 by bugdroid1@chromium.org, Aug 2 2017

The following revision refers to this bug:
  https://chromium.googlesource.com/v8/v8.git/+/74b1cbbd865e99b5bfba9982ecafb71463263fbb

commit 74b1cbbd865e99b5bfba9982ecafb71463263fbb
Author: Ulan Degenbaev <ulan@chromium.org>
Date: Wed Aug 02 20:07:08 2017

Revert "[heap] Add support for atomic access to page flags."

This reverts commit 35c923cc10a7bfb47b95dca4c2bdd07891c46605.

Reason for revert: speculative revert for GC stress failure

Original change's description:
> [heap] Add support for atomic access to page flags.
> 
> This patch renames AsAtomicWord to AsAtomicPointer and
> adds new AsAtomicWord that works with intptr_t.
> 
> Slot recording uses atomic page flag accessors.
> 
> BUG= chromium:694255 
> 
> Change-Id: I1c692813244b41320182e9eea50462d1802fcd98
> Reviewed-on: https://chromium-review.googlesource.com/597688
> Commit-Queue: Ulan Degenbaev <ulan@chromium.org>
> Reviewed-by: Michael Lippautz <mlippautz@chromium.org>
> Cr-Commit-Position: refs/heads/master@{#47086}

TBR=ulan@chromium.org,mlippautz@chromium.org

Change-Id: Id77ce7970c54a55646c072787e88311f6f3e6e91
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Bug:  chromium:694255 
Reviewed-on: https://chromium-review.googlesource.com/598967
Reviewed-by: Ulan Degenbaev <ulan@chromium.org>
Commit-Queue: Ulan Degenbaev <ulan@chromium.org>
Cr-Commit-Position: refs/heads/master@{#47094}
[modify] https://crrev.com/74b1cbbd865e99b5bfba9982ecafb71463263fbb/src/base/atomic-utils.h
[modify] https://crrev.com/74b1cbbd865e99b5bfba9982ecafb71463263fbb/src/globals.h
[modify] https://crrev.com/74b1cbbd865e99b5bfba9982ecafb71463263fbb/src/heap/concurrent-marking.cc
[modify] https://crrev.com/74b1cbbd865e99b5bfba9982ecafb71463263fbb/src/heap/heap.cc
[modify] https://crrev.com/74b1cbbd865e99b5bfba9982ecafb71463263fbb/src/heap/mark-compact-inl.h
[modify] https://crrev.com/74b1cbbd865e99b5bfba9982ecafb71463263fbb/src/heap/mark-compact.cc
[modify] https://crrev.com/74b1cbbd865e99b5bfba9982ecafb71463263fbb/src/heap/scavenger-inl.h
[modify] https://crrev.com/74b1cbbd865e99b5bfba9982ecafb71463263fbb/src/heap/slot-set.h
[modify] https://crrev.com/74b1cbbd865e99b5bfba9982ecafb71463263fbb/src/heap/spaces.cc
[modify] https://crrev.com/74b1cbbd865e99b5bfba9982ecafb71463263fbb/src/heap/spaces.h

Project Member

Comment 129 by bugdroid1@chromium.org, Aug 3 2017

The following revision refers to this bug:
  https://chromium.googlesource.com/v8/v8.git/+/d27e449e82ec4826e56dcfa0b39eb9941e9d88f7

commit d27e449e82ec4826e56dcfa0b39eb9941e9d88f7
Author: Ulan Degenbaev <ulan@chromium.org>
Date: Thu Aug 03 14:11:09 2017

Reland "[heap] Add support for atomic access to page flags."

This is a reland of 35c923cc10a7bfb47b95dca4c2bdd07891c46605
Original change's description:
> [heap] Add support for atomic access to page flags.
> 
> This patch renames AsAtomicWord to AsAtomicPointer and
> adds new AsAtomicWord that works with intptr_t.
> 
> Slot recording uses atomic page flag accessors.
> 
> BUG= chromium:694255 
> 
> Change-Id: I1c692813244b41320182e9eea50462d1802fcd98
> Reviewed-on: https://chromium-review.googlesource.com/597688
> Commit-Queue: Ulan Degenbaev <ulan@chromium.org>
> Reviewed-by: Michael Lippautz <mlippautz@chromium.org>
> Cr-Commit-Position: refs/heads/master@{#47086}

Bug:  chromium:694255 
Change-Id: I36780ff4001e068815d4be1e16cd06f1a4f98d13
Reviewed-on: https://chromium-review.googlesource.com/599909
Reviewed-by: Michael Lippautz <mlippautz@chromium.org>
Commit-Queue: Ulan Degenbaev <ulan@chromium.org>
Cr-Commit-Position: refs/heads/master@{#47131}
[modify] https://crrev.com/d27e449e82ec4826e56dcfa0b39eb9941e9d88f7/src/base/atomic-utils.h
[modify] https://crrev.com/d27e449e82ec4826e56dcfa0b39eb9941e9d88f7/src/globals.h
[modify] https://crrev.com/d27e449e82ec4826e56dcfa0b39eb9941e9d88f7/src/heap/concurrent-marking.cc
[modify] https://crrev.com/d27e449e82ec4826e56dcfa0b39eb9941e9d88f7/src/heap/heap.cc
[modify] https://crrev.com/d27e449e82ec4826e56dcfa0b39eb9941e9d88f7/src/heap/mark-compact-inl.h
[modify] https://crrev.com/d27e449e82ec4826e56dcfa0b39eb9941e9d88f7/src/heap/mark-compact.cc
[modify] https://crrev.com/d27e449e82ec4826e56dcfa0b39eb9941e9d88f7/src/heap/scavenger-inl.h
[modify] https://crrev.com/d27e449e82ec4826e56dcfa0b39eb9941e9d88f7/src/heap/slot-set.h
[modify] https://crrev.com/d27e449e82ec4826e56dcfa0b39eb9941e9d88f7/src/heap/spaces.cc
[modify] https://crrev.com/d27e449e82ec4826e56dcfa0b39eb9941e9d88f7/src/heap/spaces.h

Project Member

Comment 130 by bugdroid1@chromium.org, Aug 3 2017

The following revision refers to this bug:
  https://chromium.googlesource.com/v8/v8.git/+/b77115a0affe4b54d5cd6219694d1db9b8e58ae7

commit b77115a0affe4b54d5cd6219694d1db9b8e58ae7
Author: Ulan Degenbaev <ulan@chromium.org>
Date: Thu Aug 03 14:38:19 2017

Reland^3 "[heap] Add mechanism for tracking invalidated slots per memory chunk."

This reverts commit b9acf4ededf108a5c0243d221c3522dd26abfcbf.

Bug:  chromium:694255 
Change-Id: I62766e8b32cfa16af39a28ad07fecd72441ad8cd
Reviewed-on: https://chromium-review.googlesource.com/598468
Reviewed-by: Michael Lippautz <mlippautz@chromium.org>
Commit-Queue: Ulan Degenbaev <ulan@chromium.org>
Cr-Commit-Position: refs/heads/master@{#47132}
[modify] https://crrev.com/b77115a0affe4b54d5cd6219694d1db9b8e58ae7/BUILD.gn
[modify] https://crrev.com/b77115a0affe4b54d5cd6219694d1db9b8e58ae7/src/heap/heap.cc
[modify] https://crrev.com/b77115a0affe4b54d5cd6219694d1db9b8e58ae7/src/heap/heap.h
[add] https://crrev.com/b77115a0affe4b54d5cd6219694d1db9b8e58ae7/src/heap/invalidated-slots-inl.h
[add] https://crrev.com/b77115a0affe4b54d5cd6219694d1db9b8e58ae7/src/heap/invalidated-slots.cc
[add] https://crrev.com/b77115a0affe4b54d5cd6219694d1db9b8e58ae7/src/heap/invalidated-slots.h
[modify] https://crrev.com/b77115a0affe4b54d5cd6219694d1db9b8e58ae7/src/heap/mark-compact.cc
[modify] https://crrev.com/b77115a0affe4b54d5cd6219694d1db9b8e58ae7/src/heap/remembered-set.h
[modify] https://crrev.com/b77115a0affe4b54d5cd6219694d1db9b8e58ae7/src/heap/spaces.cc
[modify] https://crrev.com/b77115a0affe4b54d5cd6219694d1db9b8e58ae7/src/heap/spaces.h
[modify] https://crrev.com/b77115a0affe4b54d5cd6219694d1db9b8e58ae7/src/objects.cc
[modify] https://crrev.com/b77115a0affe4b54d5cd6219694d1db9b8e58ae7/src/runtime/runtime-object.cc
[modify] https://crrev.com/b77115a0affe4b54d5cd6219694d1db9b8e58ae7/src/v8.gyp
[modify] https://crrev.com/b77115a0affe4b54d5cd6219694d1db9b8e58ae7/test/cctest/BUILD.gn
[modify] https://crrev.com/b77115a0affe4b54d5cd6219694d1db9b8e58ae7/test/cctest/cctest.gyp
[modify] https://crrev.com/b77115a0affe4b54d5cd6219694d1db9b8e58ae7/test/cctest/heap/heap-tester.h
[add] https://crrev.com/b77115a0affe4b54d5cd6219694d1db9b8e58ae7/test/cctest/heap/test-invalidated-slots.cc

Project Member

Comment 131 by bugdroid1@chromium.org, Aug 3 2017

The following revision refers to this bug:
  https://chromium.googlesource.com/v8/v8.git/+/e625f4b66d87005ea4650277bf8640e533a57697

commit e625f4b66d87005ea4650277bf8640e533a57697
Author: Ulan Degenbaev <ulan@chromium.org>
Date: Thu Aug 03 18:27:42 2017

[heap] Fix InvalidatedSlotsFilter.

On advancing the iterator we need to reset the current object,
so that it can be lazily reloaded later on.

TBR=mlippautz@chromium.org

Bug:  chromium:694255 
Change-Id: If7ddd8670df9d11837f491503312919b55b451fe
Reviewed-on: https://chromium-review.googlesource.com/600687
Commit-Queue: Ulan Degenbaev <ulan@chromium.org>
Reviewed-by: Ulan Degenbaev <ulan@chromium.org>
Cr-Commit-Position: refs/heads/master@{#47142}
[modify] https://crrev.com/e625f4b66d87005ea4650277bf8640e533a57697/src/heap/invalidated-slots-inl.h
[modify] https://crrev.com/e625f4b66d87005ea4650277bf8640e533a57697/test/cctest/heap/heap-tester.h
[modify] https://crrev.com/e625f4b66d87005ea4650277bf8640e533a57697/test/cctest/heap/test-invalidated-slots.cc

Project Member

Comment 132 by bugdroid1@chromium.org, Aug 4 2017

The following revision refers to this bug:
  https://chromium.googlesource.com/v8/v8.git/+/4598d17ac639197a0604c7856588bfaa4abd4747

commit 4598d17ac639197a0604c7856588bfaa4abd4747
Author: Ulan Degenbaev <ulan@chromium.org>
Date: Fri Aug 04 07:58:12 2017

[heap] Replace compile time flag with runtime flag for parts of
concurrent marker.

Bug:  chromium:694255 
Change-Id: I973ba8df7a4afc5f58ede02f3f6d043cf7038784
Reviewed-on: https://chromium-review.googlesource.com/600970
Reviewed-by: Michael Lippautz <mlippautz@chromium.org>
Commit-Queue: Ulan Degenbaev <ulan@chromium.org>
Cr-Commit-Position: refs/heads/master@{#47153}
[modify] https://crrev.com/4598d17ac639197a0604c7856588bfaa4abd4747/src/heap/heap.cc
[modify] https://crrev.com/4598d17ac639197a0604c7856588bfaa4abd4747/src/heap/incremental-marking.cc

Project Member

Comment 133 by bugdroid1@chromium.org, Aug 4 2017

The following revision refers to this bug:
  https://chromium.googlesource.com/v8/v8.git/+/56f392292cbf5e343f080e6a924ee16001002f75

commit 56f392292cbf5e343f080e6a924ee16001002f75
Author: Ulan Degenbaev <ulan@chromium.org>
Date: Fri Aug 04 08:22:53 2017

[heap] Enable compaction for concurrent marking.

Bug:  chromium:694255 
Change-Id: Id1ae4eb069a4ba79a35f1bb6b2bc2b1c445edb96
Reviewed-on: https://chromium-review.googlesource.com/600969
Reviewed-by: Michael Lippautz <mlippautz@chromium.org>
Commit-Queue: Ulan Degenbaev <ulan@chromium.org>
Cr-Commit-Position: refs/heads/master@{#47155}
[modify] https://crrev.com/56f392292cbf5e343f080e6a924ee16001002f75/src/flag-definitions.h
[modify] https://crrev.com/56f392292cbf5e343f080e6a924ee16001002f75/src/heap/heap.cc

Blockedon: 752461
Project Member

Comment 135 by bugdroid1@chromium.org, Aug 7 2017

The following revision refers to this bug:
  https://chromium.googlesource.com/v8/v8.git/+/82202251b4d8bd40c6094b0e2fc526d88a93bfa6

commit 82202251b4d8bd40c6094b0e2fc526d88a93bfa6
Author: Ulan Degenbaev <ulan@chromium.org>
Date: Mon Aug 07 08:49:00 2017

[heap] Improve concurrent marking pausing protocol.

This patch allows the concurrent marker to process more objects before
checking for the interrupt request from the main thread.

Bug:  chromium:694255 
TBR: mlippautz@chromium.org
Change-Id: I876d3156ca9843196f2fdddbd8bd28d1a3f472b1
Reviewed-on: https://chromium-review.googlesource.com/602131
Reviewed-by: Ulan Degenbaev <ulan@chromium.org>
Commit-Queue: Ulan Degenbaev <ulan@chromium.org>
Cr-Commit-Position: refs/heads/master@{#47182}
[modify] https://crrev.com/82202251b4d8bd40c6094b0e2fc526d88a93bfa6/BUILD.gn
[modify] https://crrev.com/82202251b4d8bd40c6094b0e2fc526d88a93bfa6/src/heap/concurrent-marking.cc
[modify] https://crrev.com/82202251b4d8bd40c6094b0e2fc526d88a93bfa6/src/heap/concurrent-marking.h

Project Member

Comment 136 by bugdroid1@chromium.org, Aug 7 2017

The following revision refers to this bug:
  https://chromium.googlesource.com/v8/v8.git/+/a90f361fdc476537fc9fcf309d880d4152a98d01

commit a90f361fdc476537fc9fcf309d880d4152a98d01
Author: Ulan Degenbaev <ulan@chromium.org>
Date: Mon Aug 07 09:00:53 2017

[heap] Speed up Worklist::IsGlobalPoolEmpty check.

This patch makes the check lock-free. When concurrent marking is on,
the main thread checks two marking worklist: bailout and shared.

Often the bailout worklist empty, so the emptiness check is in hot path.

Bug:  chromium:694255 
TBR: mlippautz@chromium.org
Change-Id: I5c92ea3fb6c5300d653fbd27b536241851231f24
Reviewed-on: https://chromium-review.googlesource.com/602351
Reviewed-by: Ulan Degenbaev <ulan@chromium.org>
Commit-Queue: Ulan Degenbaev <ulan@chromium.org>
Cr-Commit-Position: refs/heads/master@{#47184}
[modify] https://crrev.com/a90f361fdc476537fc9fcf309d880d4152a98d01/src/heap/worklist.h

Project Member

Comment 137 by bugdroid1@chromium.org, Aug 7 2017

The following revision refers to this bug:
  https://chromium.googlesource.com/v8/v8.git/+/20d4840e557a88ee4b6bf583632844e439507354

commit 20d4840e557a88ee4b6bf583632844e439507354
Author: Jakob Gruber <jgruber@chromium.org>
Date: Mon Aug 07 09:26:55 2017

Revert "[heap] Improve concurrent marking pausing protocol."

This reverts commit 82202251b4d8bd40c6094b0e2fc526d88a93bfa6.

Reason for revert: https://build.chromium.org/p/client.v8/builders/V8%20Linux64%20GC%20Stress%20-%20custom%20snapshot/builds/14346/steps/Mjsunit/logs/large-object-literal-..
Original change's description:
> [heap] Improve concurrent marking pausing protocol.
> 
> This patch allows the concurrent marker to process more objects before
> checking for the interrupt request from the main thread.
> 
> Bug:  chromium:694255 
> TBR: mlippautz@chromium.org
> Change-Id: I876d3156ca9843196f2fdddbd8bd28d1a3f472b1
> Reviewed-on: https://chromium-review.googlesource.com/602131
> Reviewed-by: Ulan Degenbaev <ulan@chromium.org>
> Commit-Queue: Ulan Degenbaev <ulan@chromium.org>
> Cr-Commit-Position: refs/heads/master@{#47182}

TBR=ulan@chromium.org,mlippautz@chromium.org

Change-Id: I92ef49c4fb51468d5b5d689abbe5323f3637f1e6
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Bug:  chromium:694255 
Reviewed-on: https://chromium-review.googlesource.com/603327
Reviewed-by: Jakob Gruber <jgruber@chromium.org>
Commit-Queue: Jakob Gruber <jgruber@chromium.org>
Cr-Commit-Position: refs/heads/master@{#47187}
[modify] https://crrev.com/20d4840e557a88ee4b6bf583632844e439507354/BUILD.gn
[modify] https://crrev.com/20d4840e557a88ee4b6bf583632844e439507354/src/heap/concurrent-marking.cc
[modify] https://crrev.com/20d4840e557a88ee4b6bf583632844e439507354/src/heap/concurrent-marking.h

Project Member

Comment 138 by bugdroid1@chromium.org, Aug 7 2017

The following revision refers to this bug:
  https://chromium.googlesource.com/v8/v8.git/+/e1e423c32c3fe6367e9bbf381b20079b60986c16

commit e1e423c32c3fe6367e9bbf381b20079b60986c16
Author: Ulan Degenbaev <ulan@chromium.org>
Date: Mon Aug 07 09:28:02 2017

[heap] Disable concurrent marking.

It was accidentally enabled in 82202251b4d8

Bug:  chromium:694255 
TBR: mlippautz@chromium.org
Change-Id: I7febb8528a5116cfd43efdc41208db33841da495
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Reviewed-on: https://chromium-review.googlesource.com/603308
Reviewed-by: Ulan Degenbaev <ulan@chromium.org>
Commit-Queue: Ulan Degenbaev <ulan@chromium.org>
Cr-Commit-Position: refs/heads/master@{#47188}

Project Member

Comment 139 by bugdroid1@chromium.org, Aug 7 2017

The following revision refers to this bug:
  https://chromium.googlesource.com/v8/v8.git/+/4455db16722d3fd501a1b940d17cd325f065c5e2

commit 4455db16722d3fd501a1b940d17cd325f065c5e2
Author: Ulan Degenbaev <ulan@chromium.org>
Date: Mon Aug 07 10:16:02 2017

Reland "[heap] Improve concurrent marking pausing protocol."

This reverts commit 20d4840e557a88ee4b6bf583632844e439507354.

Bug:  chromium:694255 
TBR: mlippautz@chromium.rg
Change-Id: Ie7743ca5607e6ab6d7f5683180c698d0c08fcd66
Reviewed-on: https://chromium-review.googlesource.com/603367
Reviewed-by: Ulan Degenbaev <ulan@chromium.org>
Commit-Queue: Ulan Degenbaev <ulan@chromium.org>
Cr-Commit-Position: refs/heads/master@{#47189}
[modify] https://crrev.com/4455db16722d3fd501a1b940d17cd325f065c5e2/src/heap/concurrent-marking.cc
[modify] https://crrev.com/4455db16722d3fd501a1b940d17cd325f065c5e2/src/heap/concurrent-marking.h

Comment 140 by kbr@chromium.org, Aug 8 2017

Blockedon: 751804
Project Member

Comment 141 by bugdroid1@chromium.org, Aug 10 2017

The following revision refers to this bug:
  https://chromium.googlesource.com/v8/v8.git/+/4af9cfccf601f512b0fa6d9d5042684d66e2e9ca

commit 4af9cfccf601f512b0fa6d9d5042684d66e2e9ca
Author: Ulan Degenbaev <ulan@chromium.org>
Date: Thu Aug 10 17:28:03 2017

[heap] Refactor object marking state.

This patch merges ObjectMarking and MarkingState. The new marking state
encapsulates object marking, live byte tracking, and access atomicity.

The old ObjectMarking calls are now replaced with calls to marking
state. For example:
ObjectMarking::WhiteToGrey<kAtomicity>(obj, marking_state(obj)
becomes
marking_state()->WhiteToGrey(obj)

This simplifies custom handling of live bytes and allows to chose
atomicity of markbit accesses depending on collector's state.

This also decouples marking bitmap from the marking code, which will
allows in future to use different data-structure for mark-bits.

Bug:  chromium:694255 
Change-Id: Ifb4bc0144187bac1c08f6bc74a9d5c618fe77740
Reviewed-on: https://chromium-review.googlesource.com/602132
Commit-Queue: Ulan Degenbaev <ulan@chromium.org>
Reviewed-by: Michael Lippautz <mlippautz@chromium.org>
Cr-Commit-Position: refs/heads/master@{#47288}
[modify] https://crrev.com/4af9cfccf601f512b0fa6d9d5042684d66e2e9ca/src/heap/array-buffer-tracker-inl.h
[modify] https://crrev.com/4af9cfccf601f512b0fa6d9d5042684d66e2e9ca/src/heap/array-buffer-tracker.cc
[modify] https://crrev.com/4af9cfccf601f512b0fa6d9d5042684d66e2e9ca/src/heap/array-buffer-tracker.h
[modify] https://crrev.com/4af9cfccf601f512b0fa6d9d5042684d66e2e9ca/src/heap/concurrent-marking.cc
[modify] https://crrev.com/4af9cfccf601f512b0fa6d9d5042684d66e2e9ca/src/heap/heap.cc
[modify] https://crrev.com/4af9cfccf601f512b0fa6d9d5042684d66e2e9ca/src/heap/incremental-marking-inl.h
[modify] https://crrev.com/4af9cfccf601f512b0fa6d9d5042684d66e2e9ca/src/heap/incremental-marking.cc
[modify] https://crrev.com/4af9cfccf601f512b0fa6d9d5042684d66e2e9ca/src/heap/incremental-marking.h
[modify] https://crrev.com/4af9cfccf601f512b0fa6d9d5042684d66e2e9ca/src/heap/mark-compact-inl.h
[modify] https://crrev.com/4af9cfccf601f512b0fa6d9d5042684d66e2e9ca/src/heap/mark-compact.cc
[modify] https://crrev.com/4af9cfccf601f512b0fa6d9d5042684d66e2e9ca/src/heap/mark-compact.h
[modify] https://crrev.com/4af9cfccf601f512b0fa6d9d5042684d66e2e9ca/src/heap/object-stats.cc
[modify] https://crrev.com/4af9cfccf601f512b0fa6d9d5042684d66e2e9ca/src/heap/object-stats.h
[modify] https://crrev.com/4af9cfccf601f512b0fa6d9d5042684d66e2e9ca/src/heap/objects-visiting-inl.h
[modify] https://crrev.com/4af9cfccf601f512b0fa6d9d5042684d66e2e9ca/src/heap/scavenger-inl.h
[modify] https://crrev.com/4af9cfccf601f512b0fa6d9d5042684d66e2e9ca/src/heap/scavenger.cc
[modify] https://crrev.com/4af9cfccf601f512b0fa6d9d5042684d66e2e9ca/src/heap/spaces.cc
[modify] https://crrev.com/4af9cfccf601f512b0fa6d9d5042684d66e2e9ca/src/heap/spaces.h
[modify] https://crrev.com/4af9cfccf601f512b0fa6d9d5042684d66e2e9ca/src/objects-inl.h
[modify] https://crrev.com/4af9cfccf601f512b0fa6d9d5042684d66e2e9ca/test/cctest/heap/test-compaction.cc
[modify] https://crrev.com/4af9cfccf601f512b0fa6d9d5042684d66e2e9ca/test/cctest/heap/test-heap.cc
[modify] https://crrev.com/4af9cfccf601f512b0fa6d9d5042684d66e2e9ca/test/cctest/heap/test-mark-compact.cc
[modify] https://crrev.com/4af9cfccf601f512b0fa6d9d5042684d66e2e9ca/test/cctest/heap/test-page-promotion.cc
[modify] https://crrev.com/4af9cfccf601f512b0fa6d9d5042684d66e2e9ca/test/cctest/test-unboxed-doubles.cc

Project Member

Comment 142 by bugdroid1@chromium.org, Aug 10 2017

The following revision refers to this bug:
  https://chromium.googlesource.com/v8/v8.git/+/a7ab836aba387050d1d0bfc33af9893f83028136

commit a7ab836aba387050d1d0bfc33af9893f83028136
Author: Ulan Degenbaev <ulan@chromium.org>
Date: Thu Aug 10 18:46:40 2017

[heap] Fix atomicity of IncrementalMarking::TransferColor.

Bug:  chromium:694255 
TBR: mlippautz@chromium.org
Change-Id: Ie9f2f7bff8ada297b1d078947f073eaf62ac0649
Reviewed-on: https://chromium-review.googlesource.com/610782
Reviewed-by: Ulan Degenbaev <ulan@chromium.org>
Commit-Queue: Ulan Degenbaev <ulan@chromium.org>
Cr-Commit-Position: refs/heads/master@{#47293}
[modify] https://crrev.com/a7ab836aba387050d1d0bfc33af9893f83028136/src/heap/incremental-marking.cc
[modify] https://crrev.com/a7ab836aba387050d1d0bfc33af9893f83028136/src/heap/incremental-marking.h
[modify] https://crrev.com/a7ab836aba387050d1d0bfc33af9893f83028136/src/heap/mark-compact.cc
[modify] https://crrev.com/a7ab836aba387050d1d0bfc33af9893f83028136/src/heap/mark-compact.h

Project Member

Comment 143 by bugdroid1@chromium.org, Aug 10 2017

The following revision refers to this bug:
  https://chromium.googlesource.com/v8/v8.git/+/468d5faa6b245d4f547e3fca32d41e1b14d8e2f8

commit 468d5faa6b245d4f547e3fca32d41e1b14d8e2f8
Author: Ulan Degenbaev <ulan@chromium.org>
Date: Thu Aug 10 19:46:06 2017

[heap] Fix atomicity of IterateAndScavengePromotedObject

Bug:  chromium:694255 
TBR: mlippautz@chromium.org
No-Tree-Checks: true
No-Try: true
Change-Id: I720dcc79c4cb8c1cbd7dd6e6de4c6113c363b2f0
Reviewed-on: https://chromium-review.googlesource.com/610561
Commit-Queue: Ulan Degenbaev <ulan@chromium.org>
Reviewed-by: Ulan Degenbaev <ulan@chromium.org>
Cr-Commit-Position: refs/heads/master@{#47295}
[modify] https://crrev.com/468d5faa6b245d4f547e3fca32d41e1b14d8e2f8/src/heap/scavenger.cc

Project Member

Comment 144 by bugdroid1@chromium.org, Aug 11 2017

The following revision refers to this bug:
  https://chromium.googlesource.com/v8/v8.git/+/1e182fd4463621877f080f2d8f79964b6679b5e6

commit 1e182fd4463621877f080f2d8f79964b6679b5e6
Author: Ulan Degenbaev <ulan@chromium.org>
Date: Fri Aug 11 08:05:31 2017

Revert "[heap, runtime] Avoid redundant clearing of slots outside an object."

This reverts commit 3f820ebb0b1920d3773ad0c5256ae299fedf9542.

Revert "[heap, runtime] Avoid redundant clearing of slots in a trimmed array."

This reverts commit ed76f17b15fbc7c2b63391a47ab55f2f5207ee8e.

Reason: canary crashes.

Bug: chromium:752750,  chromium:694255 
TBR: mlippautz@chromium.org
Change-Id: I57c533e8a3db5f28e7659c5f326fa343627a3ff7
Reviewed-on: https://chromium-review.googlesource.com/607868
Reviewed-by: Michael Lippautz <mlippautz@chromium.org>
Reviewed-by: Ulan Degenbaev <ulan@chromium.org>
Commit-Queue: Ulan Degenbaev <ulan@chromium.org>
Cr-Commit-Position: refs/heads/master@{#47300}
[modify] https://crrev.com/1e182fd4463621877f080f2d8f79964b6679b5e6/src/heap/heap.cc
[modify] https://crrev.com/1e182fd4463621877f080f2d8f79964b6679b5e6/src/objects.cc

Project Member

Comment 145 by bugdroid1@chromium.org, Aug 11 2017

The following revision refers to this bug:
  https://chromium.googlesource.com/v8/v8.git/+/d9a036317c87afd5e255f700382f5d4db63b5822

commit d9a036317c87afd5e255f700382f5d4db63b5822
Author: Ulan Degenbaev <ulan@chromium.org>
Date: Fri Aug 11 09:11:20 2017

[heap] Track transition arrays using worklists.

This allows handling transitions arrays in concurrent marking

Bug:  chromium:694255 
Change-Id: I28196fccbf03bfba7d7dada1884813be372ddb54
Reviewed-on: https://chromium-review.googlesource.com/610961
Commit-Queue: Ulan Degenbaev <ulan@chromium.org>
Reviewed-by: Michael Lippautz <mlippautz@chromium.org>
Cr-Commit-Position: refs/heads/master@{#47303}
[modify] https://crrev.com/d9a036317c87afd5e255f700382f5d4db63b5822/src/heap/concurrent-marking.cc
[modify] https://crrev.com/d9a036317c87afd5e255f700382f5d4db63b5822/src/heap/concurrent-marking.h
[modify] https://crrev.com/d9a036317c87afd5e255f700382f5d4db63b5822/src/heap/heap.cc
[modify] https://crrev.com/d9a036317c87afd5e255f700382f5d4db63b5822/src/heap/heap.h
[modify] https://crrev.com/d9a036317c87afd5e255f700382f5d4db63b5822/src/heap/mark-compact.cc
[modify] https://crrev.com/d9a036317c87afd5e255f700382f5d4db63b5822/src/heap/mark-compact.h
[modify] https://crrev.com/d9a036317c87afd5e255f700382f5d4db63b5822/src/heap/objects-visiting-inl.h
[modify] https://crrev.com/d9a036317c87afd5e255f700382f5d4db63b5822/src/objects-debug.cc
[modify] https://crrev.com/d9a036317c87afd5e255f700382f5d4db63b5822/src/objects-printer.cc
[modify] https://crrev.com/d9a036317c87afd5e255f700382f5d4db63b5822/src/transitions-inl.h
[modify] https://crrev.com/d9a036317c87afd5e255f700382f5d4db63b5822/src/transitions.cc
[modify] https://crrev.com/d9a036317c87afd5e255f700382f5d4db63b5822/src/transitions.h
[modify] https://crrev.com/d9a036317c87afd5e255f700382f5d4db63b5822/test/cctest/heap/test-concurrent-marking.cc

Project Member

Comment 146 by bugdroid1@chromium.org, Aug 11 2017

The following revision refers to this bug:
  https://chromium.googlesource.com/v8/v8.git/+/9f97606ebc6b1f8172b7753d525f382c37c5f2cb

commit 9f97606ebc6b1f8172b7753d525f382c37c5f2cb
Author: Ulan Degenbaev <ulan@chromium.org>
Date: Fri Aug 11 10:51:49 2017

[heap] Fix initialization order of MC collectors after 4af9cfccf601.

This fixes the UBSAN failures on the bot.

Bug:  chromium:694255 
Change-Id: I7fc169bc526e71444ce52eba0285a8cafe9d902d
Reviewed-on: https://chromium-review.googlesource.com/612167
Reviewed-by: Michael Lippautz <mlippautz@chromium.org>
Commit-Queue: Ulan Degenbaev <ulan@chromium.org>
Cr-Commit-Position: refs/heads/master@{#47306}
[modify] https://crrev.com/9f97606ebc6b1f8172b7753d525f382c37c5f2cb/src/heap/heap.cc
[modify] https://crrev.com/9f97606ebc6b1f8172b7753d525f382c37c5f2cb/src/heap/mark-compact.cc
[modify] https://crrev.com/9f97606ebc6b1f8172b7753d525f382c37c5f2cb/src/heap/mark-compact.h

Project Member

Comment 147 by bugdroid1@chromium.org, Aug 11 2017

The following revision refers to this bug:
  https://chromium.googlesource.com/v8/v8.git/+/470e8024defc71d52d7a34dbc30ada3bf45e81b8

commit 470e8024defc71d52d7a34dbc30ada3bf45e81b8
Author: Ulan Degenbaev <ulan@chromium.org>
Date: Fri Aug 11 12:47:35 2017

[base] Introduce AsAtomic8 helper class.

This class provides byte level CAS operation using word level CAS.

Bug:  chromium:694255 
Change-Id: I39e661ee8d11e3f61fd5cb64c36f8f5ee94d1244
Reviewed-on: https://chromium-review.googlesource.com/612170
Commit-Queue: Ulan Degenbaev <ulan@chromium.org>
Reviewed-by: Michael Lippautz <mlippautz@chromium.org>
Cr-Commit-Position: refs/heads/master@{#47311}
[modify] https://crrev.com/470e8024defc71d52d7a34dbc30ada3bf45e81b8/src/base/atomic-utils.h
[modify] https://crrev.com/470e8024defc71d52d7a34dbc30ada3bf45e81b8/test/unittests/base/atomic-utils-unittest.cc

Project Member

Comment 148 by bugdroid1@chromium.org, Aug 11 2017

The following revision refers to this bug:
  https://chromium.googlesource.com/v8/v8.git/+/00f21d3d487da27f15a337a1c04f60f1610762e8

commit 00f21d3d487da27f15a337a1c04f60f1610762e8
Author: Ulan Degenbaev <ulan@chromium.org>
Date: Fri Aug 11 14:39:55 2017

[heap] Remove custom SharedFunctionInfo marking visitors.

Shared function info marking is now side-effect free, so can be handled
by base HeapVisitor.

Concurrent marker does not bailout on shared function infos.

Bug:  chromium:694255 
Change-Id: I41efece68f6758219fca318deb97a7f163ee9638
Reviewed-on: https://chromium-review.googlesource.com/608700
Commit-Queue: Ulan Degenbaev <ulan@chromium.org>
Reviewed-by: Michael Lippautz <mlippautz@chromium.org>
Cr-Commit-Position: refs/heads/master@{#47315}
[modify] https://crrev.com/00f21d3d487da27f15a337a1c04f60f1610762e8/src/heap/concurrent-marking.cc
[modify] https://crrev.com/00f21d3d487da27f15a337a1c04f60f1610762e8/src/heap/objects-visiting-inl.h
[modify] https://crrev.com/00f21d3d487da27f15a337a1c04f60f1610762e8/src/heap/objects-visiting.h

Project Member

Comment 149 by bugdroid1@chromium.org, Aug 11 2017

The following revision refers to this bug:
  https://chromium.googlesource.com/v8/v8.git/+/a7c7e8f64eb26db7eb48d8aab831f8ef0b738ec6

commit a7c7e8f64eb26db7eb48d8aab831f8ef0b738ec6
Author: Ulan Degenbaev <ulan@chromium.org>
Date: Fri Aug 11 15:32:35 2017

[heap] Handle bytecode arrays in concurrent marker.

Bytecode array visitor has a side-effect of incrementing the age counter.

This patch makes the increment atomic and thus safe for the concurrent
marker.

Bug:  chromium:694255 
Change-Id: I36c65b02ace8d366206bd8295e72aaa19742ed56
Reviewed-on: https://chromium-review.googlesource.com/610001
Commit-Queue: Ulan Degenbaev <ulan@chromium.org>
Reviewed-by: Ross McIlroy <rmcilroy@chromium.org>
Cr-Commit-Position: refs/heads/master@{#47317}
[modify] https://crrev.com/a7c7e8f64eb26db7eb48d8aab831f8ef0b738ec6/src/heap/concurrent-marking.cc
[modify] https://crrev.com/a7c7e8f64eb26db7eb48d8aab831f8ef0b738ec6/src/objects-inl.h
[modify] https://crrev.com/a7c7e8f64eb26db7eb48d8aab831f8ef0b738ec6/src/objects.cc
[modify] https://crrev.com/a7c7e8f64eb26db7eb48d8aab831f8ef0b738ec6/src/objects/object-macros.h
[modify] https://crrev.com/a7c7e8f64eb26db7eb48d8aab831f8ef0b738ec6/test/cctest/heap/test-heap.cc

Project Member

Comment 150 by bugdroid1@chromium.org, Aug 11 2017

The following revision refers to this bug:
  https://chromium.googlesource.com/v8/v8.git/+/a241576fa14af5a5fcc357a23d2fb18504ade702

commit a241576fa14af5a5fcc357a23d2fb18504ade702
Author: Ulan Degenbaev <ulan@chromium.org>
Date: Fri Aug 11 16:50:39 2017

Revert "[heap] Handle bytecode arrays in concurrent marker."

This reverts commit a7c7e8f64eb26db7eb48d8aab831f8ef0b738ec6.

Reason for revert: TSAN failures.

Original change's description:
> [heap] Handle bytecode arrays in concurrent marker.
> 
> Bytecode array visitor has a side-effect of incrementing the age counter.
> 
> This patch makes the increment atomic and thus safe for the concurrent
> marker.
> 
> Bug:  chromium:694255 
> Change-Id: I36c65b02ace8d366206bd8295e72aaa19742ed56
> Reviewed-on: https://chromium-review.googlesource.com/610001
> Commit-Queue: Ulan Degenbaev <ulan@chromium.org>
> Reviewed-by: Ross McIlroy <rmcilroy@chromium.org>
> Cr-Commit-Position: refs/heads/master@{#47317}

TBR=ulan@chromium.org,rmcilroy@chromium.org

Change-Id: Iceff1e5925bb6ad7c03f858aa2f1fa62240f6909
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Bug:  chromium:694255 
Reviewed-on: https://chromium-review.googlesource.com/612069
Reviewed-by: Ulan Degenbaev <ulan@chromium.org>
Commit-Queue: Ulan Degenbaev <ulan@chromium.org>
Cr-Commit-Position: refs/heads/master@{#47319}
[modify] https://crrev.com/a241576fa14af5a5fcc357a23d2fb18504ade702/src/heap/concurrent-marking.cc
[modify] https://crrev.com/a241576fa14af5a5fcc357a23d2fb18504ade702/src/objects-inl.h
[modify] https://crrev.com/a241576fa14af5a5fcc357a23d2fb18504ade702/src/objects.cc
[modify] https://crrev.com/a241576fa14af5a5fcc357a23d2fb18504ade702/src/objects/object-macros.h
[modify] https://crrev.com/a241576fa14af5a5fcc357a23d2fb18504ade702/test/cctest/heap/test-heap.cc

Project Member

Comment 151 by bugdroid1@chromium.org, Aug 14 2017

The following revision refers to this bug:
  https://chromium.googlesource.com/v8/v8.git/+/eaf7ec9d1598b83c72f175d224d16fa31b4980b3

commit eaf7ec9d1598b83c72f175d224d16fa31b4980b3
Author: Ulan Degenbaev <ulan@chromium.org>
Date: Mon Aug 14 11:46:56 2017

[heap] Process strong fields of maps in concurrent marker.

Bug:  chromium:694255 
TBR: mlippautz@chromium.org
Change-Id: I207fd28c2e19637f45da3735284c8ca223b33481
Reviewed-on: https://chromium-review.googlesource.com/610562
Reviewed-by: Ulan Degenbaev <ulan@chromium.org>
Commit-Queue: Ulan Degenbaev <ulan@chromium.org>
Cr-Commit-Position: refs/heads/master@{#47333}
[modify] https://crrev.com/eaf7ec9d1598b83c72f175d224d16fa31b4980b3/src/heap/concurrent-marking.cc

Project Member

Comment 152 by bugdroid1@chromium.org, Aug 14 2017

The following revision refers to this bug:
  https://chromium.googlesource.com/v8/v8.git/+/a88f740f9e373108ee480f561e4ba1ca4422eb0f

commit a88f740f9e373108ee480f561e4ba1ca4422eb0f
Author: Ulan Degenbaev <ulan@chromium.org>
Date: Mon Aug 14 11:54:06 2017

[heap] Fix StartBlackAllocationForTesting.

The function shouldn't try to start black allocation if it is already
started.

Bug:  chromium:694255 
TBR: mlippautz@chromium.org
Change-Id: I77b5346f6ac2ec5947ca4351a8abe33865729fda
Reviewed-on: https://chromium-review.googlesource.com/612385
Reviewed-by: Ulan Degenbaev <ulan@chromium.org>
Commit-Queue: Ulan Degenbaev <ulan@chromium.org>
Cr-Commit-Position: refs/heads/master@{#47334}
[modify] https://crrev.com/a88f740f9e373108ee480f561e4ba1ca4422eb0f/src/heap/incremental-marking.cc
[modify] https://crrev.com/a88f740f9e373108ee480f561e4ba1ca4422eb0f/src/heap/incremental-marking.h

Project Member

Comment 153 by bugdroid1@chromium.org, Aug 14 2017

The following revision refers to this bug:
  https://chromium.googlesource.com/v8/v8.git/+/19ae2fc1affa1ae38d4b8d8cbd53f44f679f69fd

commit 19ae2fc1affa1ae38d4b8d8cbd53f44f679f69fd
Author: Ulan Degenbaev <ulan@chromium.org>
Date: Mon Aug 14 12:18:37 2017

[heap] Refactor object marking state (part 2).

This follows up 4af9cfcc by separating incremental marking state
from the full MC marking state. Runtime and tests now use only
the incremental marking state. The full MC marking state used
by MC during atomic pause.

This separation decouples atomicity of markbit accesses
during incremental marking and during full MC.

Bug:  chromium:694255 
TBR: mlippautz@chromium.org
Change-Id: Ia409ab06515cd0d1403a272a016633295c0d6692
Reviewed-on: https://chromium-review.googlesource.com/612350
Commit-Queue: Ulan Degenbaev <ulan@chromium.org>
Reviewed-by: Ulan Degenbaev <ulan@chromium.org>
Cr-Commit-Position: refs/heads/master@{#47336}
[modify] https://crrev.com/19ae2fc1affa1ae38d4b8d8cbd53f44f679f69fd/src/heap/heap.cc
[modify] https://crrev.com/19ae2fc1affa1ae38d4b8d8cbd53f44f679f69fd/src/heap/incremental-marking.cc
[modify] https://crrev.com/19ae2fc1affa1ae38d4b8d8cbd53f44f679f69fd/src/heap/incremental-marking.h
[modify] https://crrev.com/19ae2fc1affa1ae38d4b8d8cbd53f44f679f69fd/src/heap/mark-compact.cc
[modify] https://crrev.com/19ae2fc1affa1ae38d4b8d8cbd53f44f679f69fd/src/heap/mark-compact.h
[modify] https://crrev.com/19ae2fc1affa1ae38d4b8d8cbd53f44f679f69fd/src/heap/objects-visiting-inl.h
[modify] https://crrev.com/19ae2fc1affa1ae38d4b8d8cbd53f44f679f69fd/src/heap/scavenger-inl.h
[modify] https://crrev.com/19ae2fc1affa1ae38d4b8d8cbd53f44f679f69fd/src/heap/scavenger.cc
[modify] https://crrev.com/19ae2fc1affa1ae38d4b8d8cbd53f44f679f69fd/src/heap/spaces.cc
[modify] https://crrev.com/19ae2fc1affa1ae38d4b8d8cbd53f44f679f69fd/src/heap/spaces.h
[modify] https://crrev.com/19ae2fc1affa1ae38d4b8d8cbd53f44f679f69fd/src/objects-inl.h
[modify] https://crrev.com/19ae2fc1affa1ae38d4b8d8cbd53f44f679f69fd/test/cctest/heap/test-compaction.cc
[modify] https://crrev.com/19ae2fc1affa1ae38d4b8d8cbd53f44f679f69fd/test/cctest/heap/test-heap.cc
[modify] https://crrev.com/19ae2fc1affa1ae38d4b8d8cbd53f44f679f69fd/test/cctest/heap/test-mark-compact.cc
[modify] https://crrev.com/19ae2fc1affa1ae38d4b8d8cbd53f44f679f69fd/test/cctest/heap/test-page-promotion.cc
[modify] https://crrev.com/19ae2fc1affa1ae38d4b8d8cbd53f44f679f69fd/test/cctest/test-unboxed-doubles.cc

Blocking: 626082
Project Member

Comment 155 by bugdroid1@chromium.org, Aug 17 2017

The following revision refers to this bug:
  https://chromium.googlesource.com/v8/v8.git/+/dfc6b4ddaa058e9526cfd3ea226539741b01663c

commit dfc6b4ddaa058e9526cfd3ea226539741b01663c
Author: Ulan Degenbaev <ulan@chromium.org>
Date: Thu Aug 17 18:16:33 2017

[heap] New live byte tracking.

This patch changes how space size and capacity are updated in GC:
- space capacity changes only when a page added/removed from the space.
- space size is reset to zero before sweeping and incremented by
  page->live_bytes_count_ for each to-be-swept page.
- space size is refined after sweeping using the accurate
  page->allocated_bytes counter produces by the sweeper.

Invariants:
1. space.capacity = sum [page.size | for page in space].
2. After marking, before sweeping:
   a) space.size = sum [page.live_bytes_count | for page in space].
3. After sweeping, before marking ends:
   a) space.size = sum [page.allocated_bytes | for page in space].
   b) page.allocated_bytes >= (sum [object.size | for object in page] +
         page.linear_allocation_area).
   c) page.area_size = (page.allocated_bytes + page.wasted_memory +
         sum [free_list_entry.size | for free_list_entry in page].

3.b becomes equality if the mutator is not doing array trimming,
object slack tracking during sweeping.

Bug:  chromium:694255 
Change-Id: Ic8d16a8171187a113fee2df8bf3c2a4c5e77bc08
Reviewed-on: https://chromium-review.googlesource.com/618889
Commit-Queue: Ulan Degenbaev <ulan@chromium.org>
Reviewed-by: Michael Lippautz <mlippautz@chromium.org>
Cr-Commit-Position: refs/heads/master@{#47409}
[modify] https://crrev.com/dfc6b4ddaa058e9526cfd3ea226539741b01663c/src/heap/heap.cc
[modify] https://crrev.com/dfc6b4ddaa058e9526cfd3ea226539741b01663c/src/heap/heap.h
[modify] https://crrev.com/dfc6b4ddaa058e9526cfd3ea226539741b01663c/src/heap/incremental-marking.cc
[modify] https://crrev.com/dfc6b4ddaa058e9526cfd3ea226539741b01663c/src/heap/mark-compact.cc
[modify] https://crrev.com/dfc6b4ddaa058e9526cfd3ea226539741b01663c/src/heap/spaces-inl.h
[modify] https://crrev.com/dfc6b4ddaa058e9526cfd3ea226539741b01663c/src/heap/spaces.cc
[modify] https://crrev.com/dfc6b4ddaa058e9526cfd3ea226539741b01663c/src/heap/spaces.h
[modify] https://crrev.com/dfc6b4ddaa058e9526cfd3ea226539741b01663c/test/cctest/heap/heap-utils.cc
[modify] https://crrev.com/dfc6b4ddaa058e9526cfd3ea226539741b01663c/test/cctest/heap/test-spaces.cc
[modify] https://crrev.com/dfc6b4ddaa058e9526cfd3ea226539741b01663c/test/unittests/heap/unmapper-unittest.cc

Project Member

Comment 156 by bugdroid1@chromium.org, Aug 17 2017

The following revision refers to this bug:
  https://chromium.googlesource.com/v8/v8.git/+/29b61d1ca22d8848afc1d902b7a327aa9eae91c7

commit 29b61d1ca22d8848afc1d902b7a327aa9eae91c7
Author: Ulan Degenbaev <ulan@chromium.org>
Date: Thu Aug 17 18:43:48 2017

[heap] Guard VerifyCountersAfterSweeping with ifdef DEBUG.

VERIFY_HEAP does not necessarily imply DEBUG.

Bug:  chromium:694255 
TRB: mlippautz@chromium.org
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Change-Id: I1699288bd9d826ea1d577dd4fc2de81ee450add7
Reviewed-on: https://chromium-review.googlesource.com/618892
Commit-Queue: Ulan Degenbaev <ulan@chromium.org>
Reviewed-by: Ulan Degenbaev <ulan@chromium.org>
Cr-Commit-Position: refs/heads/master@{#47410}
[modify] https://crrev.com/29b61d1ca22d8848afc1d902b7a327aa9eae91c7/src/heap/spaces.cc

Project Member

Comment 157 by bugdroid1@chromium.org, Aug 17 2017

The following revision refers to this bug:
  https://chromium.googlesource.com/v8/v8.git/+/6e5606efda433fba503483496e340c19bd76b8b9

commit 6e5606efda433fba503483496e340c19bd76b8b9
Author: Ulan Degenbaev <ulan@chromium.org>
Date: Thu Aug 17 19:40:58 2017

[heap] Sync write barrier stub with runtime for concurrent marking.

This also starts black allocation earlier if concurrent marking compile
time flag is on.

Bug:  chromium:694255 
Change-Id: I73c02676e5149fae10e5f9301ad585926e223a1d
Reviewed-on: https://chromium-review.googlesource.com/618893
Reviewed-by: Michael Lippautz <mlippautz@chromium.org>
Commit-Queue: Ulan Degenbaev <ulan@chromium.org>
Cr-Commit-Position: refs/heads/master@{#47412}
[modify] https://crrev.com/6e5606efda433fba503483496e340c19bd76b8b9/src/heap/incremental-marking.cc

Comment 158 by u...@chromium.org, Aug 17 2017

Blockedon: 756592
Project Member

Comment 159 by bugdroid1@chromium.org, Aug 17 2017

The following revision refers to this bug:
  https://chromium.googlesource.com/v8/v8.git/+/5d385417475a4eb5fa43781d6e7a2c56b7c04674

commit 5d385417475a4eb5fa43781d6e7a2c56b7c04674
Author: Ulan Degenbaev <ulan@chromium.org>
Date: Thu Aug 17 20:52:48 2017

[heap] Fix data race on access to space capacity.

The race happens during evacuation when multiple threads access the
main space capacity to check CanExpandOldGeneration.

Bug:  chromium:694255 
Change-Id: I63dbb71cc3a894f85ee11411a5dc01d53daefa11
Reviewed-on: https://chromium-review.googlesource.com/618876
Commit-Queue: Ulan Degenbaev <ulan@chromium.org>
Reviewed-by: Michael Lippautz <mlippautz@chromium.org>
Cr-Commit-Position: refs/heads/master@{#47414}
[modify] https://crrev.com/5d385417475a4eb5fa43781d6e7a2c56b7c04674/src/heap/spaces.h

Project Member

Comment 160 by bugdroid1@chromium.org, Aug 18 2017

The following revision refers to this bug:
  https://chromium.googlesource.com/v8/v8.git/+/d8a939624e4fb06c23168725f45769c440da4110

commit d8a939624e4fb06c23168725f45769c440da4110
Author: Ulan Degenbaev <ulan@chromium.org>
Date: Fri Aug 18 10:07:51 2017

[heap] Share marking state between incremental marking and full GC.

Bug:  chromium:694255 
Change-Id: I076a41230c559d5aa8540753bb3c42b46bc66ff1
Reviewed-on: https://chromium-review.googlesource.com/620664
Reviewed-by: Michael Lippautz <mlippautz@chromium.org>
Commit-Queue: Ulan Degenbaev <ulan@chromium.org>
Cr-Commit-Position: refs/heads/master@{#47423}
[modify] https://crrev.com/d8a939624e4fb06c23168725f45769c440da4110/src/heap/incremental-marking.h
[modify] https://crrev.com/d8a939624e4fb06c23168725f45769c440da4110/src/heap/mark-compact.h
[modify] https://crrev.com/d8a939624e4fb06c23168725f45769c440da4110/src/heap/spaces.h

Project Member

Comment 161 by bugdroid1@chromium.org, Aug 18 2017

The following revision refers to this bug:
  https://chromium.googlesource.com/v8/v8.git/+/b4a97a939af1b37addee8811957aee605f185c4c

commit b4a97a939af1b37addee8811957aee605f185c4c
Author: Ulan Degenbaev <ulan@chromium.org>
Date: Fri Aug 18 11:54:48 2017

[heap] Make page local counters non-atomic.

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

Project Member

Comment 162 by bugdroid1@chromium.org, Aug 18 2017

The following revision refers to this bug:
  https://chromium.googlesource.com/v8/v8.git/+/1518b1e349243821e2f0c598d9905306dec45549

commit 1518b1e349243821e2f0c598d9905306dec45549
Author: Ulan Degenbaev <ulan@chromium.org>
Date: Fri Aug 18 16:28:34 2017

[heap] Refactor page initialization.

This fixes layering between page and its owner, so that the page does
not update the owner state.

Bug:  chromium:694255 
Change-Id: Ic4f594340bed42d4f2c13d0a30f451317cbc9f50
Reviewed-on: https://chromium-review.googlesource.com/620732
Reviewed-by: Michael Lippautz <mlippautz@chromium.org>
Commit-Queue: Ulan Degenbaev <ulan@chromium.org>
Cr-Commit-Position: refs/heads/master@{#47437}
[modify] https://crrev.com/1518b1e349243821e2f0c598d9905306dec45549/src/heap/mark-compact.cc
[modify] https://crrev.com/1518b1e349243821e2f0c598d9905306dec45549/src/heap/spaces.cc
[modify] https://crrev.com/1518b1e349243821e2f0c598d9905306dec45549/src/heap/spaces.h
[modify] https://crrev.com/1518b1e349243821e2f0c598d9905306dec45549/test/unittests/heap/unmapper-unittest.cc

Project Member

Comment 163 by bugdroid1@chromium.org, Aug 18 2017

The following revision refers to this bug:
  https://chromium.googlesource.com/v8/v8.git/+/e57e9ce342dffaf5ed6f3e638f395ee1925e1de5

commit e57e9ce342dffaf5ed6f3e638f395ee1925e1de5
Author: Ulan Degenbaev <ulan@chromium.org>
Date: Fri Aug 18 17:18:15 2017

[heap] Refactor addition and removal of pages in PagedSpace.

Bug:  chromium:694255 
Change-Id: I7cd5b713f4a1d64dc53d99b65c924cae6e39f193
Reviewed-on: https://chromium-review.googlesource.com/621009
Commit-Queue: Ulan Degenbaev <ulan@chromium.org>
Reviewed-by: Michael Lippautz <mlippautz@chromium.org>
Cr-Commit-Position: refs/heads/master@{#47439}
[modify] https://crrev.com/e57e9ce342dffaf5ed6f3e638f395ee1925e1de5/src/heap/spaces-inl.h
[modify] https://crrev.com/e57e9ce342dffaf5ed6f3e638f395ee1925e1de5/src/heap/spaces.cc
[modify] https://crrev.com/e57e9ce342dffaf5ed6f3e638f395ee1925e1de5/src/heap/spaces.h

Comment 164 by u...@chromium.org, Aug 19 2017

Blockedon: 757175
Project Member

Comment 165 by bugdroid1@chromium.org, Aug 21 2017

The following revision refers to this bug:
  https://chromium.googlesource.com/v8/v8.git/+/f8a08f385c620f8e67ef511130a77fb279ffccd2

commit f8a08f385c620f8e67ef511130a77fb279ffccd2
Author: Ulan Degenbaev <ulan@chromium.org>
Date: Mon Aug 21 09:03:03 2017

[heap] Remove live byte adjustments from mutator.

The effect of array/string trimming on space size is postponed until sweeping
completes. This simplifies runtime code and fixes live byte update race with
the concurrent marker.

This patch restores monotonicity of PromotedSinceLastGC by notify the heap
when sweeper discovers more free space than estimated.

Bug:  chromium:694255 
Change-Id: I7a8c24f2c3398bc0c8a43ffd1d35ace68010cd65
Reviewed-on: https://chromium-review.googlesource.com/621326
Commit-Queue: Ulan Degenbaev <ulan@chromium.org>
Reviewed-by: Michael Lippautz <mlippautz@chromium.org>
Cr-Commit-Position: refs/heads/master@{#47464}
[modify] https://crrev.com/f8a08f385c620f8e67ef511130a77fb279ffccd2/src/heap/heap.cc
[modify] https://crrev.com/f8a08f385c620f8e67ef511130a77fb279ffccd2/src/heap/heap.h
[modify] https://crrev.com/f8a08f385c620f8e67ef511130a77fb279ffccd2/src/heap/spaces.cc
[modify] https://crrev.com/f8a08f385c620f8e67ef511130a77fb279ffccd2/src/heap/spaces.h
[modify] https://crrev.com/f8a08f385c620f8e67ef511130a77fb279ffccd2/src/objects.cc
[modify] https://crrev.com/f8a08f385c620f8e67ef511130a77fb279ffccd2/src/runtime/runtime-regexp.cc
[modify] https://crrev.com/f8a08f385c620f8e67ef511130a77fb279ffccd2/test/cctest/heap/test-heap.cc

Project Member

Comment 167 by bugdroid1@chromium.org, Aug 21 2017

The following revision refers to this bug:
  https://chromium.googlesource.com/v8/v8.git/+/895356129e2b76bf43ed01d41cb078502432d66b

commit 895356129e2b76bf43ed01d41cb078502432d66b
Author: Ulan Degenbaev <ulan@chromium.org>
Date: Mon Aug 21 10:31:16 2017

[base] Add byte level CAS atomic op.

This replaces custom Release_CompareAndSwap implementation with a call
to compiler intrinsic / std:atomic, which is TSAN friendly.

Bug:  chromium:694255 
Change-Id: Iab67c8f5a3a2329b18030a70f3dbf3cb5530374e
Reviewed-on: https://chromium-review.googlesource.com/622431
Commit-Queue: Ulan Degenbaev <ulan@chromium.org>
Reviewed-by: Michael Lippautz <mlippautz@chromium.org>
Cr-Commit-Position: refs/heads/master@{#47469}
[modify] https://crrev.com/895356129e2b76bf43ed01d41cb078502432d66b/src/base/atomic-utils.h
[modify] https://crrev.com/895356129e2b76bf43ed01d41cb078502432d66b/src/base/atomicops_internals_portable.h
[modify] https://crrev.com/895356129e2b76bf43ed01d41cb078502432d66b/src/base/atomicops_internals_std.h

Project Member

Comment 168 by bugdroid1@chromium.org, Aug 21 2017

The following revision refers to this bug:
  https://chromium.googlesource.com/v8/v8.git/+/880c4c7b25f6a81c09af65b277eec57843fb270f

commit 880c4c7b25f6a81c09af65b277eec57843fb270f
Author: Ulan Degenbaev <ulan@chromium.org>
Date: Mon Aug 21 12:44:18 2017

Reland "[heap] Handle bytecode arrays in concurrent marker."

This reverts commit a241576fa14af5a5fcc357a23d2fb18504ade702.

Bytecode array visitor has a side-effect of incrementing the age counter.

This patch makes the increment atomic and thus safe for the concurrent
marker.

Bug:  chromium:694255 
Change-Id: Ibe1d75714a5911385b06e52ed50b5f152ec6b73d
Reviewed-on: https://chromium-review.googlesource.com/622432
Commit-Queue: Ulan Degenbaev <ulan@chromium.org>
Reviewed-by: Ross McIlroy <rmcilroy@chromium.org>
Cr-Commit-Position: refs/heads/master@{#47472}
[modify] https://crrev.com/880c4c7b25f6a81c09af65b277eec57843fb270f/src/heap/concurrent-marking.cc
[modify] https://crrev.com/880c4c7b25f6a81c09af65b277eec57843fb270f/src/objects-inl.h
[modify] https://crrev.com/880c4c7b25f6a81c09af65b277eec57843fb270f/src/objects.cc
[modify] https://crrev.com/880c4c7b25f6a81c09af65b277eec57843fb270f/src/objects/object-macros.h
[modify] https://crrev.com/880c4c7b25f6a81c09af65b277eec57843fb270f/test/cctest/heap/test-heap.cc

Project Member

Comment 169 by bugdroid1@chromium.org, Aug 22 2017

The following revision refers to this bug:
  https://chromium.googlesource.com/v8/v8.git/+/13fd663eea66d01bfb1db3444ca7409c995645bd

commit 13fd663eea66d01bfb1db3444ca7409c995645bd
Author: Ulan Degenbaev <ulan@chromium.org>
Date: Tue Aug 22 13:09:16 2017

[heap] Fix flushing of live bytes in concurrent marker.

Bug:  chromium:694255 
Change-Id: I8a3856d9b9c5d1ee701286dacf5c0c8ad400d91d
Reviewed-on: https://chromium-review.googlesource.com/626120
Commit-Queue: Ulan Degenbaev <ulan@chromium.org>
Reviewed-by: Michael Lippautz <mlippautz@chromium.org>
Cr-Commit-Position: refs/heads/master@{#47508}
[modify] https://crrev.com/13fd663eea66d01bfb1db3444ca7409c995645bd/src/heap/concurrent-marking.cc

Comment 170 by u...@chromium.org, Aug 22 2017

Blockedon: 757843
Project Member

Comment 171 by bugdroid1@chromium.org, Aug 23 2017

The following revision refers to this bug:
  https://chromium.googlesource.com/v8/v8.git/+/8bbc2242433ce2c3faf678327891a693c43923a5

commit 8bbc2242433ce2c3faf678327891a693c43923a5
Author: Ulan Degenbaev <ulan@chromium.org>
Date: Wed Aug 23 09:40:23 2017

[heap] Enable concurrent marking for x86 and x64.

This is an experiment and will be reverted after getting canary
coverage.

Bug:  chromium:694255 
Change-Id: I40388d8c6db0e46e2ce64e88aba04c5ac8822e94
Reviewed-on: https://chromium-review.googlesource.com/625959
Commit-Queue: Ulan Degenbaev <ulan@chromium.org>
Reviewed-by: Michael Lippautz <mlippautz@chromium.org>
Cr-Commit-Position: refs/heads/master@{#47541}
[modify] https://crrev.com/8bbc2242433ce2c3faf678327891a693c43923a5/BUILD.gn

Comment 172 by u...@chromium.org, Aug 23 2017

Blockedon: 758183
Project Member

Comment 173 by bugdroid1@chromium.org, Aug 23 2017

The following revision refers to this bug:
  https://chromium.googlesource.com/v8/v8.git/+/d8d47effe102440ba06e4f07f9563618ab2737e3

commit d8d47effe102440ba06e4f07f9563618ab2737e3
Author: Ulan Degenbaev <ulan@chromium.org>
Date: Wed Aug 23 15:26:43 2017

[heap] Port concurrent marking flag to GYP.

This enables concurrent marking for x86 and x64 on GYP builds.

Bug:  chromium:694255 
Change-Id: I371b38e72ce0e8f7ad5b0eed4e29b223b9ed1cf4
Reviewed-on: https://chromium-review.googlesource.com/628836
Commit-Queue: Ulan Degenbaev <ulan@chromium.org>
Reviewed-by: Michael Lippautz <mlippautz@chromium.org>
Cr-Commit-Position: refs/heads/master@{#47551}
[modify] https://crrev.com/d8d47effe102440ba06e4f07f9563618ab2737e3/Makefile
[modify] https://crrev.com/d8d47effe102440ba06e4f07f9563618ab2737e3/gypfiles/features.gypi

Project Member

Comment 175 by bugdroid1@chromium.org, Aug 24 2017

The following revision refers to this bug:
  https://chromium.googlesource.com/v8/v8.git/+/f165dfdd5cb7d177de36b9fb87922ef19bb6e001

commit f165dfdd5cb7d177de36b9fb87922ef19bb6e001
Author: Michael Hablich <hablich@chromium.org>
Date: Thu Aug 24 07:52:10 2017

Revert "[heap] Enable concurrent marking for x86 and x64."

This reverts commit 8bbc2242433ce2c3faf678327891a693c43923a5.

Reason for revert: On Canary 3195.

Original change's description:
> [heap] Enable concurrent marking for x86 and x64.
> 
> This is an experiment and will be reverted after getting canary
> coverage.
> 
> Bug:  chromium:694255 
> Change-Id: I40388d8c6db0e46e2ce64e88aba04c5ac8822e94
> Reviewed-on: https://chromium-review.googlesource.com/625959
> Commit-Queue: Ulan Degenbaev <ulan@chromium.org>
> Reviewed-by: Michael Lippautz <mlippautz@chromium.org>
> Cr-Commit-Position: refs/heads/master@{#47541}

TBR=ulan@chromium.org,mlippautz@chromium.org

Change-Id: I642c1f778267a795bf1e1a6bba863552394ad1d4
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Bug:  chromium:694255 
Reviewed-on: https://chromium-review.googlesource.com/631717
Reviewed-by: Michael Hablich <hablich@chromium.org>
Commit-Queue: Michael Hablich <hablich@chromium.org>
Cr-Commit-Position: refs/heads/master@{#47564}
[modify] https://crrev.com/f165dfdd5cb7d177de36b9fb87922ef19bb6e001/BUILD.gn

Blockedon: 758570
Project Member

Comment 177 by bugdroid1@chromium.org, Aug 28 2017

The following revision refers to this bug:
  https://chromium.googlesource.com/v8/v8.git/+/5bd5fd45c25f0c7796033fff911504479ff1133b

commit 5bd5fd45c25f0c7796033fff911504479ff1133b
Author: Ulan Degenbaev <ulan@chromium.org>
Date: Mon Aug 28 09:14:32 2017

[heap] Disable concurrent marking on GYP builds.

Bug:  chromium:694255 
Change-Id: I58be876aa6db2e528f7d2e045e042657354575c7
Reviewed-on: https://chromium-review.googlesource.com/637393
Reviewed-by: Michael Achenbach <machenbach@chromium.org>
Commit-Queue: Ulan Degenbaev <ulan@chromium.org>
Cr-Commit-Position: refs/heads/master@{#47637}
[modify] https://crrev.com/5bd5fd45c25f0c7796033fff911504479ff1133b/gypfiles/features.gypi

Project Member

Comment 178 by bugdroid1@chromium.org, Aug 29 2017

The following revision refers to this bug:
  https://chromium.googlesource.com/v8/v8.git/+/5e284d9ab7356777de1b0d705b18e6c4194c1920

commit 5e284d9ab7356777de1b0d705b18e6c4194c1920
Author: Ulan Degenbaev <ulan@chromium.org>
Date: Tue Aug 29 14:03:09 2017

[heap] Temporarily bailout on transition array in concurrent marking.

The current processing of a transition array is not safe because the
targets in the array have conditional weakness, which can change
concurrently.

Bug:  chromium:694255 
Change-Id: I86bf7151af39307dc4101a0b0ca02ef7c704df53
Reviewed-on: https://chromium-review.googlesource.com/641410
Reviewed-by: Michael Lippautz <mlippautz@chromium.org>
Commit-Queue: Ulan Degenbaev <ulan@chromium.org>
Cr-Commit-Position: refs/heads/master@{#47682}
[modify] https://crrev.com/5e284d9ab7356777de1b0d705b18e6c4194c1920/src/heap/concurrent-marking.cc

Project Member

Comment 179 by bugdroid1@chromium.org, Sep 14 2017

The following revision refers to this bug:
  https://chromium.googlesource.com/v8/v8.git/+/97b2a814e4170873e939ff27f9956964b55b4f10

commit 97b2a814e4170873e939ff27f9956964b55b4f10
Author: Ulan Degenbaev <ulan@chromium.org>
Date: Thu Sep 14 08:33:49 2017

[heap] Fix black allocation.

This patch ensures that an object returned by AllocateRaw is marked
black if black allocation starts during the object allocation.

This fixes the following issue:
1) Generated code requests allocation of size N for folded allocation.
2) Runtime gets a free list node at address A of size N+M and sets up
   a linear allocation area with top = A+N and limit = A+N+M.
3) Runtime invokes the allocation observer that starts incremental marking
   and start black allocation. The area [A+N, A+N+M) is marked black.
4) Runtime returns a white object at address A as the allocation result.
5) Generated code moves the top pointer to A and does bump pointer
   allocations of white objects from A to A+N+M.
6) Object allocated new A+N can have the impossible marbit pattern.

Bug:  chromium:694255 
Change-Id: I09ceebc97a510fa5fe4ff20706bc46a99f8b7cf4
Reviewed-on: https://chromium-review.googlesource.com/638338
Commit-Queue: Ulan Degenbaev <ulan@chromium.org>
Reviewed-by: Michael Lippautz <mlippautz@chromium.org>
Cr-Commit-Position: refs/heads/master@{#48005}
[modify] https://crrev.com/97b2a814e4170873e939ff27f9956964b55b4f10/src/heap/incremental-marking.cc
[modify] https://crrev.com/97b2a814e4170873e939ff27f9956964b55b4f10/src/heap/spaces-inl.h
[modify] https://crrev.com/97b2a814e4170873e939ff27f9956964b55b4f10/src/heap/spaces.cc
[modify] https://crrev.com/97b2a814e4170873e939ff27f9956964b55b4f10/src/heap/spaces.h
[modify] https://crrev.com/97b2a814e4170873e939ff27f9956964b55b4f10/test/cctest/heap/test-heap.cc

Project Member

Comment 180 by bugdroid1@chromium.org, Sep 15 2017

The following revision refers to this bug:
  https://chromium.googlesource.com/v8/v8.git/+/8d1ad4b8aad07c2bb3d904e10efbe75f17236298

commit 8d1ad4b8aad07c2bb3d904e10efbe75f17236298
Author: Ulan Degenbaev <ulan@chromium.org>
Date: Fri Sep 15 11:08:16 2017

[heap] Remove adhoc weakness in TransitionArray.

Currently transition array targets have conditional weakness depending
on the type of the target. Map targets are weak and all other targets
are strong. This patch wraps maps in transitions arrays in weak cells,
which allows us to treat all elements of transition arrays strongly.

Conditional weakness is unsafe for concurrent marking because the
condition can change during marking.

Bug:  chromium:694255 
Change-Id: I64e5d0699698fc7c1758f3fbc52da43014c247af
Reviewed-on: https://chromium-review.googlesource.com/641271
Commit-Queue: Ulan Degenbaev <ulan@chromium.org>
Reviewed-by: Jakob Kummerow <jkummerow@chromium.org>
Reviewed-by: Michael Lippautz <mlippautz@chromium.org>
Cr-Commit-Position: refs/heads/master@{#48034}
[modify] https://crrev.com/8d1ad4b8aad07c2bb3d904e10efbe75f17236298/src/heap/concurrent-marking.cc
[modify] https://crrev.com/8d1ad4b8aad07c2bb3d904e10efbe75f17236298/src/heap/mark-compact.cc
[modify] https://crrev.com/8d1ad4b8aad07c2bb3d904e10efbe75f17236298/src/heap/objects-visiting-inl.h
[modify] https://crrev.com/8d1ad4b8aad07c2bb3d904e10efbe75f17236298/src/transitions-inl.h
[modify] https://crrev.com/8d1ad4b8aad07c2bb3d904e10efbe75f17236298/src/transitions.cc

Project Member

Comment 181 by bugdroid1@chromium.org, Sep 21 2017

The following revision refers to this bug:
  https://chromium.googlesource.com/v8/v8.git/+/8c4a8250de821e1b3db381fac04efcd14dd6eb2e

commit 8c4a8250de821e1b3db381fac04efcd14dd6eb2e
Author: Ulan Degenbaev <ulan@chromium.org>
Date: Thu Sep 21 07:01:00 2017

[heap] Enable concurrent marking for x86 and x64.

Bug:  chromium:694255 
Change-Id: I28c8c6e5ba6c84123f3951e822c132860cb22c1d
Reviewed-on: https://chromium-review.googlesource.com/641451
Commit-Queue: Kentaro Hara <haraken@chromium.org>
Reviewed-by: Michael Achenbach <machenbach@chromium.org>
Reviewed-by: Hannes Payer (slow) <hpayer@chromium.org>
Reviewed-by: Michael Lippautz <mlippautz@chromium.org>
Cr-Commit-Position: refs/heads/master@{#48100}
[modify] https://crrev.com/8c4a8250de821e1b3db381fac04efcd14dd6eb2e/BUILD.gn
[modify] https://crrev.com/8c4a8250de821e1b3db381fac04efcd14dd6eb2e/gypfiles/features.gypi

Project Member

Comment 182 by bugdroid1@chromium.org, Sep 21 2017

The following revision refers to this bug:
  https://chromium.googlesource.com/v8/v8.git/+/b36f39c34c6f009956787c5a634dae693d901fdb

commit b36f39c34c6f009956787c5a634dae693d901fdb
Author: Michael Achenbach <machenbach@chromium.org>
Date: Thu Sep 21 09:15:53 2017

Revert "[heap] Enable concurrent marking for x86 and x64."

This reverts commit 8c4a8250de821e1b3db381fac04efcd14dd6eb2e.

Reason for revert: Flaky dcheck on several bots, e.g.:
https://build.chromium.org/p/client.v8/builders/V8%20Linux%20-%20debug/builds/17055

Original change's description:
> [heap] Enable concurrent marking for x86 and x64.
> 
> Bug:  chromium:694255 
> Change-Id: I28c8c6e5ba6c84123f3951e822c132860cb22c1d
> Reviewed-on: https://chromium-review.googlesource.com/641451
> Commit-Queue: Kentaro Hara <haraken@chromium.org>
> Reviewed-by: Michael Achenbach <machenbach@chromium.org>
> Reviewed-by: Hannes Payer (slow) <hpayer@chromium.org>
> Reviewed-by: Michael Lippautz <mlippautz@chromium.org>
> Cr-Commit-Position: refs/heads/master@{#48100}

TBR=ulan@chromium.org,haraken@chromium.org,machenbach@chromium.org,hpayer@chromium.org,mlippautz@chromium.org

Change-Id: Id5954676c75e69b66e85f05ffab737ab7f760101
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Bug:  chromium:694255 
Reviewed-on: https://chromium-review.googlesource.com/677203
Reviewed-by: Michael Achenbach <machenbach@chromium.org>
Commit-Queue: Michael Achenbach <machenbach@chromium.org>
Cr-Commit-Position: refs/heads/master@{#48103}
[modify] https://crrev.com/b36f39c34c6f009956787c5a634dae693d901fdb/BUILD.gn
[modify] https://crrev.com/b36f39c34c6f009956787c5a634dae693d901fdb/gypfiles/features.gypi

Project Member

Comment 183 by bugdroid1@chromium.org, Sep 21 2017

The following revision refers to this bug:
  https://chromium.googlesource.com/v8/v8.git/+/a76d0a771e430dbc8716624febc549aede738d96

commit a76d0a771e430dbc8716624febc549aede738d96
Author: Ulan Degenbaev <ulan@chromium.org>
Date: Thu Sep 21 12:35:10 2017

Reland "[heap] Enable concurrent marking for x86 and x64."

This is a reland of 8c4a8250de821e1b3db381fac04efcd14dd6eb2e
Original change's description:
> [heap] Enable concurrent marking for x86 and x64.
> 
> Bug:  chromium:694255 
> Change-Id: I28c8c6e5ba6c84123f3951e822c132860cb22c1d
> Reviewed-on: https://chromium-review.googlesource.com/641451
> Commit-Queue: Kentaro Hara <haraken@chromium.org>
> Reviewed-by: Michael Achenbach <machenbach@chromium.org>
> Reviewed-by: Hannes Payer (slow) <hpayer@chromium.org>
> Reviewed-by: Michael Lippautz <mlippautz@chromium.org>
> Cr-Commit-Position: refs/heads/master@{#48100}

Bug:  chromium:694255 
TBR: mlippautz@chromium.org
Change-Id: Ic36515dbd418c219bccbbf371126a4dfd66a466f
Reviewed-on: https://chromium-review.googlesource.com/676966
Reviewed-by: Ulan Degenbaev <ulan@chromium.org>
Commit-Queue: Ulan Degenbaev <ulan@chromium.org>
Cr-Commit-Position: refs/heads/master@{#48107}
[modify] https://crrev.com/a76d0a771e430dbc8716624febc549aede738d96/BUILD.gn
[modify] https://crrev.com/a76d0a771e430dbc8716624febc549aede738d96/gypfiles/features.gypi

Project Member

Comment 184 by bugdroid1@chromium.org, Sep 22 2017

The following revision refers to this bug:
  https://chromium.googlesource.com/v8/v8.git/+/1530a74496116be44eb03edabe259a498cf26cf0

commit 1530a74496116be44eb03edabe259a498cf26cf0
Author: Ulan Degenbaev <ulan@chromium.org>
Date: Fri Sep 22 01:14:03 2017

[heap] Adjust condition for enabling concurrent marking.

This changes CPU check to use 'target_cpu' instead of 'v8_target_cpu'.

Bug:  chromium:694255 
Change-Id: Ic3ad5253e4e0b66b13e9f16a5842bcf49881fa52
Reviewed-on: https://chromium-review.googlesource.com/677994
Reviewed-by: Michael Lippautz <mlippautz@chromium.org>
Commit-Queue: Ulan Degenbaev <ulan@chromium.org>
Cr-Commit-Position: refs/heads/master@{#48119}
[modify] https://crrev.com/1530a74496116be44eb03edabe259a498cf26cf0/BUILD.gn
[modify] https://crrev.com/1530a74496116be44eb03edabe259a498cf26cf0/gypfiles/features.gypi

Project Member

Comment 185 by bugdroid1@chromium.org, Sep 25 2017

The following revision refers to this bug:
  https://chromium.googlesource.com/v8/v8.git/+/dc3bbbdbe869262f4a857b8aceadc10b5b12c993

commit dc3bbbdbe869262f4a857b8aceadc10b5b12c993
Author: Ulan Degenbaev <ulan@chromium.org>
Date: Mon Sep 25 04:39:35 2017

[heap] Tune the number of concurrent marking tasks.

This patch ensures that the concurrent marking tasks do not
use more than the half of the available background threads.

Bug:  chromium:694255 
Change-Id: I67d6eb3e717945f777d0711bd094630573c78661
Reviewed-on: https://chromium-review.googlesource.com/678636
Commit-Queue: Ulan Degenbaev <ulan@chromium.org>
Reviewed-by: Michael Lippautz <mlippautz@chromium.org>
Cr-Commit-Position: refs/heads/master@{#48130}
[modify] https://crrev.com/dc3bbbdbe869262f4a857b8aceadc10b5b12c993/src/heap/concurrent-marking.cc
[modify] https://crrev.com/dc3bbbdbe869262f4a857b8aceadc10b5b12c993/src/heap/concurrent-marking.h

Project Member

Comment 186 by bugdroid1@chromium.org, Sep 29 2017

The following revision refers to this bug:
  https://chromium.googlesource.com/v8/v8.git/+/7c1b01154a460dec5da40a9c8d5ae4e44eea8e4e

commit 7c1b01154a460dec5da40a9c8d5ae4e44eea8e4e
Author: Ulan Degenbaev <ulan@chromium.org>
Date: Fri Sep 29 11:38:50 2017

[heap] Enable concurrent marking on all platforms.

Bug:  chromium:694255 
Change-Id: Ie596e02207f13762dbfa77e4fe65950913302b47
Reviewed-on: https://chromium-review.googlesource.com/690075
Reviewed-by: Michael Lippautz <mlippautz@chromium.org>
Reviewed-by: Michael Achenbach <machenbach@chromium.org>
Commit-Queue: Ulan Degenbaev <ulan@chromium.org>
Cr-Commit-Position: refs/heads/master@{#48227}
[modify] https://crrev.com/7c1b01154a460dec5da40a9c8d5ae4e44eea8e4e/BUILD.gn
[modify] https://crrev.com/7c1b01154a460dec5da40a9c8d5ae4e44eea8e4e/gypfiles/features.gypi

Project Member

Comment 188 by bugdroid1@chromium.org, Oct 6 2017

The following revision refers to this bug:
  https://chromium.googlesource.com/v8/v8.git/+/71a3cc54ae288938c45cdae1486d4b81dbebc0bb

commit 71a3cc54ae288938c45cdae1486d4b81dbebc0bb
Author: Ulan Degenbaev <ulan@chromium.org>
Date: Fri Oct 06 16:13:14 2017

Revert "[heap] Use weak cell in normalized map cache."

This reverts commit f3c8da56e91c5731b7b821e8d53bd25932cdd057.

Reason for revert: GC stress failures
https://build.chromium.org/p/client.v8/builders/V8%20Linux64%20GC%20Stress%20-%20custom%20snapshot/builds/15396

Original change's description:
> [heap] Use weak cell in normalized map cache.
> 
> This replaces ad-hoc weakness in normalized map cache with weak cell.
> 
> Bug:  chromium:694255 
> Change-Id: I6a12301b2176fe3723b56178a65582cfb412f7d2
> Reviewed-on: https://chromium-review.googlesource.com/704834
> Commit-Queue: Ulan Degenbaev <ulan@chromium.org>
> Reviewed-by: Michael Lippautz <mlippautz@chromium.org>
> Cr-Commit-Position: refs/heads/master@{#48344}

TBR=ulan@chromium.org,mlippautz@chromium.org

Change-Id: I0b2d39a1dcff6416998ab36506ee950220c87e89
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Bug:  chromium:694255 
Reviewed-on: https://chromium-review.googlesource.com/705194
Reviewed-by: Ulan Degenbaev <ulan@chromium.org>
Commit-Queue: Ulan Degenbaev <ulan@chromium.org>
Cr-Commit-Position: refs/heads/master@{#48349}
[modify] https://crrev.com/71a3cc54ae288938c45cdae1486d4b81dbebc0bb/src/heap/concurrent-marking.cc
[modify] https://crrev.com/71a3cc54ae288938c45cdae1486d4b81dbebc0bb/src/heap/heap.cc
[modify] https://crrev.com/71a3cc54ae288938c45cdae1486d4b81dbebc0bb/src/heap/heap.h
[modify] https://crrev.com/71a3cc54ae288938c45cdae1486d4b81dbebc0bb/src/heap/incremental-marking.cc
[modify] https://crrev.com/71a3cc54ae288938c45cdae1486d4b81dbebc0bb/src/objects-debug.cc
[modify] https://crrev.com/71a3cc54ae288938c45cdae1486d4b81dbebc0bb/src/objects.cc
[modify] https://crrev.com/71a3cc54ae288938c45cdae1486d4b81dbebc0bb/src/objects/map.h

Project Member

Comment 189 by bugdroid1@chromium.org, Oct 9 2017

The following revision refers to this bug:
  https://chromium.googlesource.com/v8/v8.git/+/2e70adc7e2036734f20ba5a68e4032851ed69bda

commit 2e70adc7e2036734f20ba5a68e4032851ed69bda
Author: Ulan Degenbaev <ulan@chromium.org>
Date: Mon Oct 09 12:01:18 2017

[heap] Add thread-safe counter that tracks bytes marked concurrently.

Each concurrent marking task maintains task_state[i]->marked_bytes.
When a task finishes, its local counter is flushed into global
total_marked_bytes_ atomic counter.

Bug:  chromium:694255 
Change-Id: I629467385e80bf229e06a4231673ceb5ef8e4aea
Reviewed-on: https://chromium-review.googlesource.com/704823
Commit-Queue: Ulan Degenbaev <ulan@chromium.org>
Reviewed-by: Michael Lippautz <mlippautz@chromium.org>
Cr-Commit-Position: refs/heads/master@{#48374}
[modify] https://crrev.com/2e70adc7e2036734f20ba5a68e4032851ed69bda/src/heap/concurrent-marking.cc
[modify] https://crrev.com/2e70adc7e2036734f20ba5a68e4032851ed69bda/src/heap/concurrent-marking.h
[modify] https://crrev.com/2e70adc7e2036734f20ba5a68e4032851ed69bda/src/heap/incremental-marking.cc
[modify] https://crrev.com/2e70adc7e2036734f20ba5a68e4032851ed69bda/test/cctest/heap/test-concurrent-marking.cc

Project Member

Comment 190 by bugdroid1@chromium.org, Oct 9 2017

The following revision refers to this bug:
  https://chromium.googlesource.com/v8/v8.git/+/b54c1a6ef60bc7cf32f2f93f76132658a9a5d3b3

commit b54c1a6ef60bc7cf32f2f93f76132658a9a5d3b3
Author: Ulan Degenbaev <ulan@chromium.org>
Date: Mon Oct 09 13:12:41 2017

[heap] Ensure that sweeping is completed in ConcurrentMarking cctests.

Bug:  chromium:694255 
Change-Id: I5dc6157126544f20bca0ddee967e1d08d69bb060
Reviewed-on: https://chromium-review.googlesource.com/707104
Reviewed-by: Michael Lippautz <mlippautz@chromium.org>
Commit-Queue: Ulan Degenbaev <ulan@chromium.org>
Cr-Commit-Position: refs/heads/master@{#48380}
[modify] https://crrev.com/b54c1a6ef60bc7cf32f2f93f76132658a9a5d3b3/test/cctest/heap/test-concurrent-marking.cc

Project Member

Comment 191 by bugdroid1@chromium.org, Oct 9 2017

The following revision refers to this bug:
  https://chromium.googlesource.com/v8/v8.git/+/ed9b0f0e6954be59ca21dbb20e14b8c174baf3b9

commit ed9b0f0e6954be59ca21dbb20e14b8c174baf3b9
Author: Ulan Degenbaev <ulan@chromium.org>
Date: Mon Oct 09 15:02:08 2017

[heap] Fix a race introduced in 2e70adc7e203

The marked bytes counter needs to be updated before decrementing the
pending task counter.

Bug:  chromium:694255 
Change-Id: I19c4dfbdccfb32ded5b7bb707dc93d53e188e34a
Reviewed-on: https://chromium-review.googlesource.com/707140
Reviewed-by: Michael Lippautz <mlippautz@chromium.org>
Commit-Queue: Ulan Degenbaev <ulan@chromium.org>
Cr-Commit-Position: refs/heads/master@{#48390}
[modify] https://crrev.com/ed9b0f0e6954be59ca21dbb20e14b8c174baf3b9/src/heap/concurrent-marking.cc

Project Member

Comment 192 by bugdroid1@chromium.org, Oct 9 2017

The following revision refers to this bug:
  https://chromium.googlesource.com/v8/v8.git/+/cd3209e830177398b960c248ca23a93a03676e01

commit cd3209e830177398b960c248ca23a93a03676e01
Author: Ulan Degenbaev <ulan@chromium.org>
Date: Mon Oct 09 15:58:53 2017

[heap] Make concurrent marking tasks cancelable.

Bug:  chromium:694255 
Change-Id: I5c0c0b58cdcf3cf745670148724e3c6ecc34d485
Reviewed-on: https://chromium-review.googlesource.com/707149
Reviewed-by: Michael Lippautz <mlippautz@chromium.org>
Commit-Queue: Ulan Degenbaev <ulan@chromium.org>
Cr-Commit-Position: refs/heads/master@{#48395}
[modify] https://crrev.com/cd3209e830177398b960c248ca23a93a03676e01/src/heap/concurrent-marking.cc
[modify] https://crrev.com/cd3209e830177398b960c248ca23a93a03676e01/src/heap/concurrent-marking.h
[modify] https://crrev.com/cd3209e830177398b960c248ca23a93a03676e01/test/cctest/heap/test-concurrent-marking.cc

Project Member

Comment 193 by bugdroid1@chromium.org, Oct 10 2017

The following revision refers to this bug:
  https://chromium.googlesource.com/v8/v8.git/+/b7e6eb920807930202c728b147a80b0d293c8354

commit b7e6eb920807930202c728b147a80b0d293c8354
Author: Michael Lippautz <mlippautz@chromium.org>
Date: Tue Oct 10 11:33:39 2017

[heap] Introduce on-hold concurrent marking work list

When hitting objects that are allocated in the most recent lienar
allocation area, the concurrent marker currently has to bail out to the
main thread.

However, we only have to delay processing those objects until we are at
a safepoint, e.g. IM::Step(). With this change we flush those
on-hold-objects back to the shared queue upon performing an incremental
marking step.

Bug:  chromium:694255 
Change-Id: I25647d0fc581a5c4de0346bc394dc51062f65f70
Reviewed-on: https://chromium-review.googlesource.com/707315
Commit-Queue: Michael Lippautz <mlippautz@chromium.org>
Reviewed-by: Ulan Degenbaev <ulan@chromium.org>
Cr-Commit-Position: refs/heads/master@{#48424}
[modify] https://crrev.com/b7e6eb920807930202c728b147a80b0d293c8354/src/heap/concurrent-marking.cc
[modify] https://crrev.com/b7e6eb920807930202c728b147a80b0d293c8354/src/heap/concurrent-marking.h
[modify] https://crrev.com/b7e6eb920807930202c728b147a80b0d293c8354/src/heap/heap.cc
[modify] https://crrev.com/b7e6eb920807930202c728b147a80b0d293c8354/src/heap/incremental-marking.cc
[modify] https://crrev.com/b7e6eb920807930202c728b147a80b0d293c8354/src/heap/mark-compact.h
[modify] https://crrev.com/b7e6eb920807930202c728b147a80b0d293c8354/src/heap/spaces.h
[modify] https://crrev.com/b7e6eb920807930202c728b147a80b0d293c8354/src/heap/worklist.h
[modify] https://crrev.com/b7e6eb920807930202c728b147a80b0d293c8354/test/cctest/heap/test-concurrent-marking.cc
[modify] https://crrev.com/b7e6eb920807930202c728b147a80b0d293c8354/test/unittests/heap/worklist-unittest.cc

Project Member

Comment 194 by bugdroid1@chromium.org, Oct 10 2017

The following revision refers to this bug:
  https://chromium.googlesource.com/v8/v8.git/+/18b8fbb528a8021e04a029e06eafee50b918bce0

commit 18b8fbb528a8021e04a029e06eafee50b918bce0
Author: Ulan Degenbaev <ulan@chromium.org>
Date: Tue Oct 10 19:37:02 2017

[heap] Correctly handle strings in concurrent marking.

String with pointers should use snapshotting protocol because they can
be externalized concurrently.

Sequential strings can be turned into thin strings, so we need to cache
the length and synchronized of markbits.

No-Try: true
Bug:  v8:6915 ,  chromium:694255 
Change-Id: Ibd1f0ead31544f56aa9de9a177bee7e60fbc2e6a
Reviewed-on: https://chromium-review.googlesource.com/708761
Commit-Queue: Ulan Degenbaev <ulan@chromium.org>
Reviewed-by: Michael Lippautz <mlippautz@chromium.org>
Cr-Commit-Position: refs/heads/master@{#48432}
[modify] https://crrev.com/18b8fbb528a8021e04a029e06eafee50b918bce0/src/heap/concurrent-marking.cc

Project Member

Comment 195 by bugdroid1@chromium.org, Oct 11 2017

The following revision refers to this bug:
  https://chromium.googlesource.com/v8/v8.git/+/a6cd26ee01d413d512b755ead38a1c8188b15044

commit a6cd26ee01d413d512b755ead38a1c8188b15044
Author: Ulan Degenbaev <ulan@chromium.org>
Date: Wed Oct 11 08:36:15 2017

Reland "[heap] Use weak cell in normalized map cache."

This is a reland of f3c8da56e91c5731b7b821e8d53bd25932cdd057
Original change's description:
> [heap] Use weak cell in normalized map cache.
> 
> This replaces ad-hoc weakness in normalized map cache with weak cell.
> 
> Bug:  chromium:694255 
> Change-Id: I6a12301b2176fe3723b56178a65582cfb412f7d2
> Reviewed-on: https://chromium-review.googlesource.com/704834
> Commit-Queue: Ulan Degenbaev <ulan@chromium.org>
> Reviewed-by: Michael Lippautz <mlippautz@chromium.org>
> Cr-Commit-Position: refs/heads/master@{#48344}

Bug:  chromium:694255 
Change-Id: I181a9c02cc934373e40455f1be02f1caf140639b
Reviewed-on: https://chromium-review.googlesource.com/709354
Reviewed-by: Michael Lippautz <mlippautz@chromium.org>
Commit-Queue: Ulan Degenbaev <ulan@chromium.org>
Cr-Commit-Position: refs/heads/master@{#48442}
[modify] https://crrev.com/a6cd26ee01d413d512b755ead38a1c8188b15044/src/heap/concurrent-marking.cc
[modify] https://crrev.com/a6cd26ee01d413d512b755ead38a1c8188b15044/src/heap/heap.cc
[modify] https://crrev.com/a6cd26ee01d413d512b755ead38a1c8188b15044/src/heap/heap.h
[modify] https://crrev.com/a6cd26ee01d413d512b755ead38a1c8188b15044/src/heap/incremental-marking.cc
[modify] https://crrev.com/a6cd26ee01d413d512b755ead38a1c8188b15044/src/objects-debug.cc
[modify] https://crrev.com/a6cd26ee01d413d512b755ead38a1c8188b15044/src/objects.cc
[modify] https://crrev.com/a6cd26ee01d413d512b755ead38a1c8188b15044/src/objects/map.h

Project Member

Comment 196 by bugdroid1@chromium.org, Oct 11 2017

The following revision refers to this bug:
  https://chromium.googlesource.com/v8/v8.git/+/9941c1e344295708e7aa6a69202a7af3792bd486

commit 9941c1e344295708e7aa6a69202a7af3792bd486
Author: Ulan Degenbaev <ulan@chromium.org>
Date: Wed Oct 11 10:37:49 2017

[heap] Fix debug mode race in string casting in concurrent marker.

Bug:  v8:6915 ,  chromium:694255 
Change-Id: I16cd8f13087476a16c7647bec3d03665299ef232
Reviewed-on: https://chromium-review.googlesource.com/712044
Commit-Queue: Ulan Degenbaev <ulan@chromium.org>
Reviewed-by: Michael Lippautz <mlippautz@chromium.org>
Cr-Commit-Position: refs/heads/master@{#48448}
[modify] https://crrev.com/9941c1e344295708e7aa6a69202a7af3792bd486/src/heap/concurrent-marking.cc
[modify] https://crrev.com/9941c1e344295708e7aa6a69202a7af3792bd486/src/heap/objects-visiting-inl.h
[modify] https://crrev.com/9941c1e344295708e7aa6a69202a7af3792bd486/src/heap/objects-visiting.h

Project Member

Comment 197 by bugdroid1@chromium.org, Oct 11 2017

The following revision refers to this bug:
  https://chromium.googlesource.com/v8/v8.git/+/190fea60587bb44eb129bab8ab5f49fcf9bfa8a7

commit 190fea60587bb44eb129bab8ab5f49fcf9bfa8a7
Author: Ulan Degenbaev <ulan@chromium.org>
Date: Wed Oct 11 12:27:57 2017

Change FastArrayShift stub to use for-loop instead of memmove for SMIs.

The concurrent marker visits arrays with fast SMI elements because they
have the same visitor id as arrays with tagged elements.

Visiting concurrently with memmove can be unsafe depending on memmove
implementation.

Bug:  chromium:694255 
Change-Id: Ic6c2cae8761e5b1b042e4274d4f90ac59f32d91f
Reviewed-on: https://chromium-review.googlesource.com/712158
Commit-Queue: Ulan Degenbaev <ulan@chromium.org>
Reviewed-by: Tobias Tebbi <tebbi@chromium.org>
Cr-Commit-Position: refs/heads/master@{#48454}
[modify] https://crrev.com/190fea60587bb44eb129bab8ab5f49fcf9bfa8a7/src/builtins/builtins-array-gen.cc

Comment 198 by u...@chromium.org, Oct 13 2017

Blockedon: 774644
Project Member

Comment 199 by bugdroid1@chromium.org, Oct 16 2017

The following revision refers to this bug:
  https://chromium.googlesource.com/v8/v8.git/+/4b42656dd6fca982c60185c004e2648093d70b51

commit 4b42656dd6fca982c60185c004e2648093d70b51
Author: Michael Lippautz <mlippautz@chromium.org>
Date: Mon Oct 16 10:00:08 2017

[heap] Unify incremental and main marking visitor

With parallel marking enabled, both visitors have to be equal wrt. to
actual visitation.

The differences are captured by template parameters:
- Retaining path tracing which we only do for full GCs.
- Incremental marking of FixedArray.

CQ_INCLUDE_TRYBOTS=master.tryserver.v8:v8_linux64_tsan_rel;master.tryserver.v8:v8_linux64_tsan_concurrent_marking_rel_ng;master.tryserver.blink:linux_trusty_blink_rel;master.tryserver.chromium.linux:linux_optional_gpu_tests_rel;master.tryserver.chromium.mac:mac_optional_gpu_tests_rel;master.tryserver.chromium.win:win_optional_gpu_tests_rel;master.tryserver.chromium.android:android_optional_gpu_tests_rel

Bug:  chromium:694255 , chromium:750084
Change-Id: I177aeb0ee4f6a35e2f592ba257c9ddc14f88fd99
Reviewed-on: https://chromium-review.googlesource.com/704935
Commit-Queue: Michael Lippautz <mlippautz@chromium.org>
Reviewed-by: Ulan Degenbaev <ulan@chromium.org>
Cr-Commit-Position: refs/heads/master@{#48582}
[modify] https://crrev.com/4b42656dd6fca982c60185c004e2648093d70b51/src/heap/heap.h
[modify] https://crrev.com/4b42656dd6fca982c60185c004e2648093d70b51/src/heap/incremental-marking.cc
[modify] https://crrev.com/4b42656dd6fca982c60185c004e2648093d70b51/src/heap/mark-compact-inl.h
[modify] https://crrev.com/4b42656dd6fca982c60185c004e2648093d70b51/src/heap/mark-compact.cc
[modify] https://crrev.com/4b42656dd6fca982c60185c004e2648093d70b51/src/heap/mark-compact.h
[modify] https://crrev.com/4b42656dd6fca982c60185c004e2648093d70b51/src/heap/objects-visiting-inl.h
[modify] https://crrev.com/4b42656dd6fca982c60185c004e2648093d70b51/src/heap/objects-visiting.h

Project Member

Comment 200 by bugdroid1@chromium.org, Nov 7 2017

The following revision refers to this bug:
  https://chromium.googlesource.com/v8/v8.git/+/6bb1d47e6e82f75ead36cdab209afc5dafa8329c

commit 6bb1d47e6e82f75ead36cdab209afc5dafa8329c
Author: Ulan Degenbaev <ulan@chromium.org>
Date: Tue Nov 07 13:11:10 2017

[heap] Re-enable concurrent marking.

Bug:  chromium:774644 ,  chromium:694255 
Change-Id: I957037b14bf6508e774d6fd1c97239b31f2296e8
Reviewed-on: https://chromium-review.googlesource.com/756893
Reviewed-by: Michael Achenbach <machenbach@chromium.org>
Commit-Queue: Ulan Degenbaev <ulan@chromium.org>
Cr-Commit-Position: refs/heads/master@{#49187}
[modify] https://crrev.com/6bb1d47e6e82f75ead36cdab209afc5dafa8329c/BUILD.gn
[modify] https://crrev.com/6bb1d47e6e82f75ead36cdab209afc5dafa8329c/gypfiles/features.gypi

Project Member

Comment 201 by bugdroid1@chromium.org, Nov 17 2017

The following revision refers to this bug:
  https://chromium.googlesource.com/v8/v8.git/+/61bf2cc69217a4e9c7a40bb74269508fa26c2062

commit 61bf2cc69217a4e9c7a40bb74269508fa26c2062
Author: Ulan Degenbaev <ulan@chromium.org>
Date: Fri Nov 17 21:57:23 2017

[runtime] Make layout descriptor helper safe for concurrent marking.

The layout descriptor helper computes the object header size using
map->instance_size() and map->GetInObjectProperties().

It races with finalization of slack tracking, which changes both
the instance size and the in-object properties count.

This patch replaces the in-object properties count byte in the map
with the byte that stores the start offset of in-object properties.

The new byte can be used in the layout descriptor to compute the
object header size and it is immutable.

This patch also renames InstanceSize to InstanceSizeInWords where
the instance size is represented in words.

Bug:  chromium:786069 ,  chromium:694255 
Change-Id: I4b48c6944d3fe8a950bd7b0ba43d75216b177a78
Reviewed-on: https://chromium-review.googlesource.com/776720
Commit-Queue: Ulan Degenbaev <ulan@chromium.org>
Reviewed-by: Igor Sheludko <ishell@chromium.org>
Cr-Commit-Position: refs/heads/master@{#49461}
[modify] https://crrev.com/61bf2cc69217a4e9c7a40bb74269508fa26c2062/src/bootstrapper.cc
[modify] https://crrev.com/61bf2cc69217a4e9c7a40bb74269508fa26c2062/src/builtins/builtins-async-gen.cc
[modify] https://crrev.com/61bf2cc69217a4e9c7a40bb74269508fa26c2062/src/builtins/builtins-constructor-gen.cc
[modify] https://crrev.com/61bf2cc69217a4e9c7a40bb74269508fa26c2062/src/code-stub-assembler.cc
[modify] https://crrev.com/61bf2cc69217a4e9c7a40bb74269508fa26c2062/src/code-stub-assembler.h
[modify] https://crrev.com/61bf2cc69217a4e9c7a40bb74269508fa26c2062/src/heap/heap.cc
[modify] https://crrev.com/61bf2cc69217a4e9c7a40bb74269508fa26c2062/src/ic/keyed-store-generic.cc
[modify] https://crrev.com/61bf2cc69217a4e9c7a40bb74269508fa26c2062/src/layout-descriptor-inl.h
[modify] https://crrev.com/61bf2cc69217a4e9c7a40bb74269508fa26c2062/src/objects-inl.h
[modify] https://crrev.com/61bf2cc69217a4e9c7a40bb74269508fa26c2062/src/objects.cc
[modify] https://crrev.com/61bf2cc69217a4e9c7a40bb74269508fa26c2062/src/objects/map.h
[modify] https://crrev.com/61bf2cc69217a4e9c7a40bb74269508fa26c2062/tools/gen-postmortem-metadata.py

Project Member

Comment 202 by bugdroid1@chromium.org, Nov 28 2017

The following revision refers to this bug:
  https://chromium.googlesource.com/v8/v8.git/+/904050276a4d644f0246f1845f52e5b5544058f3

commit 904050276a4d644f0246f1845f52e5b5544058f3
Author: Ulan Degenbaev <ulan@chromium.org>
Date: Tue Nov 28 14:56:05 2017

[heap] Tune incremental marking step size.

The main thread now can reduce marking step size if concurrent marking
tasks are making progress and the bailout worklist is empty.

Bug:  chromium:694255 
Change-Id: I2f58530f184c03667ab3a170a1f6309929645c7c
Reviewed-on: https://chromium-review.googlesource.com/735859
Commit-Queue: Ulan Degenbaev <ulan@chromium.org>
Reviewed-by: Michael Lippautz <mlippautz@chromium.org>
Cr-Commit-Position: refs/heads/master@{#49671}
[modify] https://crrev.com/904050276a4d644f0246f1845f52e5b5544058f3/src/heap/incremental-marking.cc
[modify] https://crrev.com/904050276a4d644f0246f1845f52e5b5544058f3/src/heap/incremental-marking.h
[modify] https://crrev.com/904050276a4d644f0246f1845f52e5b5544058f3/src/heap/mark-compact.h

Project Member

Comment 203 by bugdroid1@chromium.org, Nov 28 2017

The following revision refers to this bug:
  https://chromium.googlesource.com/v8/v8.git/+/adf0fc8c596ea6bc69d97066449a6fb7649d2f30

commit adf0fc8c596ea6bc69d97066449a6fb7649d2f30
Author: Michael Achenbach <machenbach@chromium.org>
Date: Tue Nov 28 16:41:08 2017

Revert "[heap] Tune incremental marking step size."

This reverts commit 904050276a4d644f0246f1845f52e5b5544058f3.

Reason for revert: Flaky msan:
https://build.chromium.org/p/client.v8/builders/V8%20Linux%20-%20arm64%20-%20sim%20-%20MSAN/builds/18432

Original change's description:
> [heap] Tune incremental marking step size.
> 
> The main thread now can reduce marking step size if concurrent marking
> tasks are making progress and the bailout worklist is empty.
> 
> Bug:  chromium:694255 
> Change-Id: I2f58530f184c03667ab3a170a1f6309929645c7c
> Reviewed-on: https://chromium-review.googlesource.com/735859
> Commit-Queue: Ulan Degenbaev <ulan@chromium.org>
> Reviewed-by: Michael Lippautz <mlippautz@chromium.org>
> Cr-Commit-Position: refs/heads/master@{#49671}

TBR=ulan@chromium.org,mlippautz@chromium.org

Change-Id: Ic10ee9bae51b2b4b78d87c83c67b1307d0c36012
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Bug:  chromium:694255 
Reviewed-on: https://chromium-review.googlesource.com/794190
Reviewed-by: Michael Achenbach <machenbach@chromium.org>
Commit-Queue: Michael Achenbach <machenbach@chromium.org>
Cr-Commit-Position: refs/heads/master@{#49680}
[modify] https://crrev.com/adf0fc8c596ea6bc69d97066449a6fb7649d2f30/src/heap/incremental-marking.cc
[modify] https://crrev.com/adf0fc8c596ea6bc69d97066449a6fb7649d2f30/src/heap/incremental-marking.h
[modify] https://crrev.com/adf0fc8c596ea6bc69d97066449a6fb7649d2f30/src/heap/mark-compact.h

Project Member

Comment 204 by bugdroid1@chromium.org, Nov 28 2017

The following revision refers to this bug:
  https://chromium.googlesource.com/v8/v8.git/+/60184e66e03924b6d057fc8c659168891a97d386

commit 60184e66e03924b6d057fc8c659168891a97d386
Author: Ulan Degenbaev <ulan@chromium.org>
Date: Tue Nov 28 17:48:16 2017

[heap] Reland "Tune incremental marking step size."

This reverts commit adf0fc8c596ea6bc69d97066449a6fb7649d2f30.

Original change's description:
> [heap] Tune incremental marking step size.
>
> The main thread now can reduce marking step size if concurrent marking
> tasks are making progress and the bailout worklist is empty.
>
> Bug:  chromium:694255 

Change-Id: Ib2f04be258e14887059d88da301ddf17f6b453b4
Reviewed-on: https://chromium-review.googlesource.com/794135
Reviewed-by: Michael Lippautz <mlippautz@chromium.org>
Commit-Queue: Ulan Degenbaev <ulan@chromium.org>
Cr-Commit-Position: refs/heads/master@{#49685}
[modify] https://crrev.com/60184e66e03924b6d057fc8c659168891a97d386/src/heap/concurrent-marking.cc
[modify] https://crrev.com/60184e66e03924b6d057fc8c659168891a97d386/src/heap/incremental-marking.cc
[modify] https://crrev.com/60184e66e03924b6d057fc8c659168891a97d386/src/heap/incremental-marking.h
[modify] https://crrev.com/60184e66e03924b6d057fc8c659168891a97d386/src/heap/mark-compact.h

Project Member

Comment 205 by bugdroid1@chromium.org, Dec 8 2017

The following revision refers to this bug:
  https://chromium.googlesource.com/v8/v8.git/+/12779b16b0707bf73404962591b36523048c8c0e

commit 12779b16b0707bf73404962591b36523048c8c0e
Author: Ulan Degenbaev <ulan@chromium.org>
Date: Fri Dec 08 17:38:31 2017

[heap] Use unchecked length getter for concurrent marking of FixedArray.

If the fixed array is being concurrently left-trimmed then checked
getter can assert because the length is not necessarily a Smi.

This patch uses unchecked length getter to cache the length as Object*.
Only if the marker manages to color the array black, we are guaranteed
that the cached length is a Smi.

This patch also uses unchecked cast for FixedArray in HeapVisitor
for concurrent marker.

Note that this patch only affects debug mode.

Bug:  chromium:694255 
Change-Id: I5016a2234a9f5fb98b498e06f5d1428b3f1cc3c6
Reviewed-on: https://chromium-review.googlesource.com/817554
Commit-Queue: Ulan Degenbaev <ulan@chromium.org>
Reviewed-by: Michael Lippautz <mlippautz@chromium.org>
Cr-Commit-Position: refs/heads/master@{#49970}
[modify] https://crrev.com/12779b16b0707bf73404962591b36523048c8c0e/src/heap/concurrent-marking.cc
[modify] https://crrev.com/12779b16b0707bf73404962591b36523048c8c0e/src/objects/fixed-array-inl.h
[modify] https://crrev.com/12779b16b0707bf73404962591b36523048c8c0e/src/objects/fixed-array.h

Comment 206 by gab@chromium.org, Feb 14 2018

Blockedon: 812178

Comment 207 by u...@chromium.org, Feb 27 2018

Status: Fixed (was: Assigned)
Marking as fixed since concurrent marking is enabled by default since Nov 2017.

 Issue 812178  is improvement.

Comment 208 by gab@chromium.org, Feb 28 2018

Blockedon: 817330
Showing comments 109 - 208 of 208 Older

Sign in to add a comment