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

Issue 844008 link

Starred by 6 users

Issue metadata

Status: Fixed
Owner:
Closed: Dec 7
Cc:
Components:
EstimatedDays: ----
NextAction: ----
OS: ----
Pri: 2
Type: Bug



Sign in to add a comment

Optimize WeakMap processing in GC

Project Member Reported by u...@chromium.org, May 17 2018

Issue description

Mark-compacts spend more than 50ms in mark.weak_closure.ephemeral phase in the web-tooling-benchmark (see attached file).

We need to understand why that happens and fix it if possible.


 
wtb.txt
30.1 KB View Download

Comment 1 by u...@chromium.org, May 17 2018

Webpack and Babel create many ephemerons using WeakMaps: 
https://drive.google.com/file/d/1eJ-gzJJS0-J-kC5i0yWflqPC9IvObHa-/view?usp=sharing

We can optimize this by parallelizing ephemeron processing Mark-Compact

Comment 2 by u...@chromium.org, Jun 6 2018

Cc: dinfuehr@google.com
Labels: -Pri-3 Pri-2
Summary: Optimize WeakMap processing in GC (was: Investigate time spent in mark.weak_closure.ephemeral phase in web-tooling-benchmark)
Dominik started working on GC optimizations for WeakMaps.
Project Member

Comment 3 by bugdroid1@chromium.org, Jun 7 2018

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

commit 3db0672cc40ab0ae4e1cecf672f81222716049f0
Author: Dominik Inführ <dinfuehr@google.com>
Date: Thu Jun 07 09:04:37 2018

Use EphemeronHashTable as backing store for JSWeakCollection

JSWeakCollection should use EphemeronHashTable as backing store instead of
ObjectHashTable such that the GC can handle these structures differently in
the future.

Bug:  chromium:844008 
Change-Id: Icc6df60c975a942877e2507ef45e0d235e5f72be
Reviewed-on: https://chromium-review.googlesource.com/1089063
Commit-Queue: Dominik Inführ <dinfuehr@google.com>
Reviewed-by: Ulan Degenbaev <ulan@chromium.org>
Cr-Commit-Position: refs/heads/master@{#53572}
[modify] https://crrev.com/3db0672cc40ab0ae4e1cecf672f81222716049f0/src/builtins/builtins-collections-gen.cc
[modify] https://crrev.com/3db0672cc40ab0ae4e1cecf672f81222716049f0/src/heap/mark-compact.cc
[modify] https://crrev.com/3db0672cc40ab0ae4e1cecf672f81222716049f0/src/objects-inl.h
[modify] https://crrev.com/3db0672cc40ab0ae4e1cecf672f81222716049f0/src/objects.cc
[modify] https://crrev.com/3db0672cc40ab0ae4e1cecf672f81222716049f0/src/objects.h
[modify] https://crrev.com/3db0672cc40ab0ae4e1cecf672f81222716049f0/src/objects/hash-table.h
[modify] https://crrev.com/3db0672cc40ab0ae4e1cecf672f81222716049f0/src/profiler/heap-snapshot-generator.cc
[modify] https://crrev.com/3db0672cc40ab0ae4e1cecf672f81222716049f0/src/runtime/runtime-collections.cc
[modify] https://crrev.com/3db0672cc40ab0ae4e1cecf672f81222716049f0/test/cctest/test-weakmaps.cc
[modify] https://crrev.com/3db0672cc40ab0ae4e1cecf672f81222716049f0/test/cctest/test-weaksets.cc

Project Member

Comment 4 by bugdroid1@chromium.org, Jun 7 2018

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

commit 3b93e695bb71e0ea2a75962dd394ca17f1ba5b52
Author: Dominik Inführ <dinfuehr@google.com>
Date: Thu Jun 07 11:42:57 2018

Add InstanceType for EphemeronHashTable

This will allow the GC to differentiate between regular HashTables and EphemeronHashTables.

Bug:  chromium:844008 
Change-Id: I2f9009ac25eb117de03786b110dd362b829c5e9e
Reviewed-on: https://chromium-review.googlesource.com/1089066
Reviewed-by: Tobias Tebbi <tebbi@chromium.org>
Reviewed-by: Ulan Degenbaev <ulan@chromium.org>
Commit-Queue: Dominik Inführ <dinfuehr@google.com>
Cr-Commit-Position: refs/heads/master@{#53577}
[modify] https://crrev.com/3b93e695bb71e0ea2a75962dd394ca17f1ba5b52/src/compiler/types.cc
[modify] https://crrev.com/3b93e695bb71e0ea2a75962dd394ca17f1ba5b52/src/heap/heap.h
[modify] https://crrev.com/3b93e695bb71e0ea2a75962dd394ca17f1ba5b52/src/heap/mark-compact-inl.h
[modify] https://crrev.com/3b93e695bb71e0ea2a75962dd394ca17f1ba5b52/src/heap/mark-compact.cc
[modify] https://crrev.com/3b93e695bb71e0ea2a75962dd394ca17f1ba5b52/src/heap/setup-heap-internal.cc
[modify] https://crrev.com/3b93e695bb71e0ea2a75962dd394ca17f1ba5b52/src/objects-body-descriptors-inl.h
[modify] https://crrev.com/3b93e695bb71e0ea2a75962dd394ca17f1ba5b52/src/objects-debug.cc
[modify] https://crrev.com/3b93e695bb71e0ea2a75962dd394ca17f1ba5b52/src/objects-inl.h
[modify] https://crrev.com/3b93e695bb71e0ea2a75962dd394ca17f1ba5b52/src/objects-printer.cc
[modify] https://crrev.com/3b93e695bb71e0ea2a75962dd394ca17f1ba5b52/src/objects.cc
[modify] https://crrev.com/3b93e695bb71e0ea2a75962dd394ca17f1ba5b52/src/objects.h
[modify] https://crrev.com/3b93e695bb71e0ea2a75962dd394ca17f1ba5b52/src/objects/hash-table-inl.h
[modify] https://crrev.com/3b93e695bb71e0ea2a75962dd394ca17f1ba5b52/src/objects/hash-table.h
[modify] https://crrev.com/3b93e695bb71e0ea2a75962dd394ca17f1ba5b52/src/profiler/heap-snapshot-generator.cc
[modify] https://crrev.com/3b93e695bb71e0ea2a75962dd394ca17f1ba5b52/tools/v8heapconst.py

Project Member

Comment 5 by bugdroid1@chromium.org, Jun 7 2018

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

commit 4f9455994c83eeec8f778cbfc1c7bd3c362ce582
Author: Dominik Inführ <dinfuehr@google.com>
Date: Thu Jun 07 13:50:14 2018

Add Visitor for EphemeronHashTable

JSWeakCollection does not have any weak references anymore. Special
handling of Ephemerons can now be implemented in
VisitEphemeronHashTable.

Bug:  chromium:844008 
Change-Id: I9f4d8ad6a32cc7a55b715803f6a83ff8d2743ce8
Reviewed-on: https://chromium-review.googlesource.com/1090274
Commit-Queue: Dominik Inführ <dinfuehr@google.com>
Reviewed-by: Ulan Degenbaev <ulan@chromium.org>
Cr-Commit-Position: refs/heads/master@{#53584}
[modify] https://crrev.com/4f9455994c83eeec8f778cbfc1c7bd3c362ce582/src/heap/concurrent-marking.cc
[modify] https://crrev.com/4f9455994c83eeec8f778cbfc1c7bd3c362ce582/src/heap/mark-compact-inl.h
[modify] https://crrev.com/4f9455994c83eeec8f778cbfc1c7bd3c362ce582/src/heap/mark-compact.h
[modify] https://crrev.com/4f9455994c83eeec8f778cbfc1c7bd3c362ce582/src/heap/objects-visiting.h
[modify] https://crrev.com/4f9455994c83eeec8f778cbfc1c7bd3c362ce582/src/objects-body-descriptors-inl.h
[modify] https://crrev.com/4f9455994c83eeec8f778cbfc1c7bd3c362ce582/src/objects.cc
[modify] https://crrev.com/4f9455994c83eeec8f778cbfc1c7bd3c362ce582/src/objects/js-collection.h
[modify] https://crrev.com/4f9455994c83eeec8f778cbfc1c7bd3c362ce582/src/objects/map.h
[modify] https://crrev.com/4f9455994c83eeec8f778cbfc1c7bd3c362ce582/src/profiler/heap-snapshot-generator.cc
[modify] https://crrev.com/4f9455994c83eeec8f778cbfc1c7bd3c362ce582/src/profiler/heap-snapshot-generator.h

Project Member

Comment 6 by bugdroid1@chromium.org, Jun 7 2018

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

commit d4cb533a07876223f58a09080fd38675d0530295
Author: Bill Budge <bbudge@chromium.org>
Date: Thu Jun 07 15:52:39 2018

Revert "Add Visitor for EphemeronHashTable"

This reverts commit 4f9455994c83eeec8f778cbfc1c7bd3c362ce582.

Reason for revert: Changed break Linux Bot:
https://ci.chromium.org/buildbot/client.v8/V8%20Linux%20-%20nosnap%20-%20debug/19064

Original change's description:
> Add Visitor for EphemeronHashTable
> 
> JSWeakCollection does not have any weak references anymore. Special
> handling of Ephemerons can now be implemented in
> VisitEphemeronHashTable.
> 
> Bug:  chromium:844008 
> Change-Id: I9f4d8ad6a32cc7a55b715803f6a83ff8d2743ce8
> Reviewed-on: https://chromium-review.googlesource.com/1090274
> Commit-Queue: Dominik Inführ <dinfuehr@google.com>
> Reviewed-by: Ulan Degenbaev <ulan@chromium.org>
> Cr-Commit-Position: refs/heads/master@{#53584}

TBR=ulan@chromium.org,dinfuehr@google.com

Change-Id: Ifba31e75b0ca221da3a3905db829af586d342e26
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Bug:  chromium:844008 
Reviewed-on: https://chromium-review.googlesource.com/1090971
Reviewed-by: Bill Budge <bbudge@chromium.org>
Commit-Queue: Bill Budge <bbudge@chromium.org>
Cr-Commit-Position: refs/heads/master@{#53588}
[modify] https://crrev.com/d4cb533a07876223f58a09080fd38675d0530295/src/heap/concurrent-marking.cc
[modify] https://crrev.com/d4cb533a07876223f58a09080fd38675d0530295/src/heap/mark-compact-inl.h
[modify] https://crrev.com/d4cb533a07876223f58a09080fd38675d0530295/src/heap/mark-compact.h
[modify] https://crrev.com/d4cb533a07876223f58a09080fd38675d0530295/src/heap/objects-visiting.h
[modify] https://crrev.com/d4cb533a07876223f58a09080fd38675d0530295/src/objects-body-descriptors-inl.h
[modify] https://crrev.com/d4cb533a07876223f58a09080fd38675d0530295/src/objects.cc
[modify] https://crrev.com/d4cb533a07876223f58a09080fd38675d0530295/src/objects/js-collection.h
[modify] https://crrev.com/d4cb533a07876223f58a09080fd38675d0530295/src/objects/map.h
[modify] https://crrev.com/d4cb533a07876223f58a09080fd38675d0530295/src/profiler/heap-snapshot-generator.cc
[modify] https://crrev.com/d4cb533a07876223f58a09080fd38675d0530295/src/profiler/heap-snapshot-generator.h

Project Member

Comment 7 by bugdroid1@chromium.org, Jun 7 2018

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

commit 8d2bda5509376eb5824970ad224bd70285e26f15
Author: Bill Budge <bbudge@chromium.org>
Date: Thu Jun 07 15:55:23 2018

Revert "Add InstanceType for EphemeronHashTable"

This reverts commit 3b93e695bb71e0ea2a75962dd394ca17f1ba5b52.

Reason for revert: Breaks Linux nosnap:
https://ci.chromium.org/buildbot/client.v8/V8%20Linux%20-%20nosnap%20-%20debug/19064

Original change's description:
> Add InstanceType for EphemeronHashTable
> 
> This will allow the GC to differentiate between regular HashTables and EphemeronHashTables.
> 
> Bug:  chromium:844008 
> Change-Id: I2f9009ac25eb117de03786b110dd362b829c5e9e
> Reviewed-on: https://chromium-review.googlesource.com/1089066
> Reviewed-by: Tobias Tebbi <tebbi@chromium.org>
> Reviewed-by: Ulan Degenbaev <ulan@chromium.org>
> Commit-Queue: Dominik Inführ <dinfuehr@google.com>
> Cr-Commit-Position: refs/heads/master@{#53577}

TBR=ulan@chromium.org,tebbi@chromium.org,dinfuehr@google.com

Change-Id: I8f92d76e35ae419af937add9a0e70a288c604781
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Bug:  chromium:844008 
Reviewed-on: https://chromium-review.googlesource.com/1090973
Reviewed-by: Bill Budge <bbudge@chromium.org>
Commit-Queue: Bill Budge <bbudge@chromium.org>
Cr-Commit-Position: refs/heads/master@{#53589}
[modify] https://crrev.com/8d2bda5509376eb5824970ad224bd70285e26f15/src/compiler/types.cc
[modify] https://crrev.com/8d2bda5509376eb5824970ad224bd70285e26f15/src/heap/heap.h
[modify] https://crrev.com/8d2bda5509376eb5824970ad224bd70285e26f15/src/heap/mark-compact-inl.h
[modify] https://crrev.com/8d2bda5509376eb5824970ad224bd70285e26f15/src/heap/mark-compact.cc
[modify] https://crrev.com/8d2bda5509376eb5824970ad224bd70285e26f15/src/heap/setup-heap-internal.cc
[modify] https://crrev.com/8d2bda5509376eb5824970ad224bd70285e26f15/src/objects-body-descriptors-inl.h
[modify] https://crrev.com/8d2bda5509376eb5824970ad224bd70285e26f15/src/objects-debug.cc
[modify] https://crrev.com/8d2bda5509376eb5824970ad224bd70285e26f15/src/objects-inl.h
[modify] https://crrev.com/8d2bda5509376eb5824970ad224bd70285e26f15/src/objects-printer.cc
[modify] https://crrev.com/8d2bda5509376eb5824970ad224bd70285e26f15/src/objects.cc
[modify] https://crrev.com/8d2bda5509376eb5824970ad224bd70285e26f15/src/objects.h
[modify] https://crrev.com/8d2bda5509376eb5824970ad224bd70285e26f15/src/objects/hash-table-inl.h
[modify] https://crrev.com/8d2bda5509376eb5824970ad224bd70285e26f15/src/objects/hash-table.h
[modify] https://crrev.com/8d2bda5509376eb5824970ad224bd70285e26f15/src/profiler/heap-snapshot-generator.cc
[modify] https://crrev.com/8d2bda5509376eb5824970ad224bd70285e26f15/tools/v8heapconst.py

Project Member

Comment 8 by bugdroid1@chromium.org, Jun 7 2018

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

commit e2325ccd7812f6086c69124dfb2c4660bbb30a95
Author: Dominik Inführ <dinfuehr@google.com>
Date: Thu Jun 07 19:33:57 2018

Reland "Add InstanceType for EphemeronHashTable"

This is a reland of 3b93e695bb71e0ea2a75962dd394ca17f1ba5b52

Original change's description:
> Add InstanceType for EphemeronHashTable
>
> This will allow the GC to differentiate between regular HashTables and EphemeronHashTables.
>
> Bug:  chromium:844008 
> Change-Id: I2f9009ac25eb117de03786b110dd362b829c5e9e
> Reviewed-on: https://chromium-review.googlesource.com/1089066
> Reviewed-by: Tobias Tebbi <tebbi@chromium.org>
> Reviewed-by: Ulan Degenbaev <ulan@chromium.org>
> Commit-Queue: Dominik Inführ <dinfuehr@google.com>
> Cr-Commit-Position: refs/heads/master@{#53577}

TBR=tebbi@chromium.org

Bug:  chromium:844008 
Change-Id: Ia5da3d15e28ace94063f9db4fdd4997d88696501
Reviewed-on: https://chromium-review.googlesource.com/1091090
Commit-Queue: Dominik Inführ <dinfuehr@google.com>
Reviewed-by: Ulan Degenbaev <ulan@chromium.org>
Cr-Commit-Position: refs/heads/master@{#53594}
[modify] https://crrev.com/e2325ccd7812f6086c69124dfb2c4660bbb30a95/src/code-stub-assembler.cc
[modify] https://crrev.com/e2325ccd7812f6086c69124dfb2c4660bbb30a95/src/code-stub-assembler.h
[modify] https://crrev.com/e2325ccd7812f6086c69124dfb2c4660bbb30a95/src/compiler/types.cc
[modify] https://crrev.com/e2325ccd7812f6086c69124dfb2c4660bbb30a95/src/heap/heap.h
[modify] https://crrev.com/e2325ccd7812f6086c69124dfb2c4660bbb30a95/src/heap/mark-compact-inl.h
[modify] https://crrev.com/e2325ccd7812f6086c69124dfb2c4660bbb30a95/src/heap/mark-compact.cc
[modify] https://crrev.com/e2325ccd7812f6086c69124dfb2c4660bbb30a95/src/heap/setup-heap-internal.cc
[modify] https://crrev.com/e2325ccd7812f6086c69124dfb2c4660bbb30a95/src/objects-body-descriptors-inl.h
[modify] https://crrev.com/e2325ccd7812f6086c69124dfb2c4660bbb30a95/src/objects-debug.cc
[modify] https://crrev.com/e2325ccd7812f6086c69124dfb2c4660bbb30a95/src/objects-inl.h
[modify] https://crrev.com/e2325ccd7812f6086c69124dfb2c4660bbb30a95/src/objects-printer.cc
[modify] https://crrev.com/e2325ccd7812f6086c69124dfb2c4660bbb30a95/src/objects.cc
[modify] https://crrev.com/e2325ccd7812f6086c69124dfb2c4660bbb30a95/src/objects.h
[modify] https://crrev.com/e2325ccd7812f6086c69124dfb2c4660bbb30a95/src/objects/hash-table-inl.h
[modify] https://crrev.com/e2325ccd7812f6086c69124dfb2c4660bbb30a95/src/objects/hash-table.h
[modify] https://crrev.com/e2325ccd7812f6086c69124dfb2c4660bbb30a95/src/profiler/heap-snapshot-generator.cc
[modify] https://crrev.com/e2325ccd7812f6086c69124dfb2c4660bbb30a95/tools/v8heapconst.py

Project Member

Comment 9 by bugdroid1@chromium.org, Jun 8 2018

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

commit 6b50454d37a712697db4dc915081eb784afa9e0f
Author: Dominik Inführ <dinfuehr@google.com>
Date: Fri Jun 08 08:19:22 2018

Reland "Add Visitor for EphemeronHashTable"

This is a reland of 4f9455994c83eeec8f778cbfc1c7bd3c362ce582

Original change's description:
> Add Visitor for EphemeronHashTable
> 
> JSWeakCollection does not have any weak references anymore. Special
> handling of Ephemerons can now be implemented in
> VisitEphemeronHashTable.
> 
> Bug:  chromium:844008 
> Change-Id: I9f4d8ad6a32cc7a55b715803f6a83ff8d2743ce8
> Reviewed-on: https://chromium-review.googlesource.com/1090274
> Commit-Queue: Dominik Inführ <dinfuehr@google.com>
> Reviewed-by: Ulan Degenbaev <ulan@chromium.org>
> Cr-Commit-Position: refs/heads/master@{#53584}

Bug:  chromium:844008 
Change-Id: I9d2953d55eb0affba4fede5ec37369c1eb6574f5
Reviewed-on: https://chromium-review.googlesource.com/1092370
Reviewed-by: Ulan Degenbaev <ulan@chromium.org>
Commit-Queue: Dominik Inführ <dinfuehr@google.com>
Cr-Commit-Position: refs/heads/master@{#53602}
[modify] https://crrev.com/6b50454d37a712697db4dc915081eb784afa9e0f/src/heap/concurrent-marking.cc
[modify] https://crrev.com/6b50454d37a712697db4dc915081eb784afa9e0f/src/heap/mark-compact-inl.h
[modify] https://crrev.com/6b50454d37a712697db4dc915081eb784afa9e0f/src/heap/mark-compact.h
[modify] https://crrev.com/6b50454d37a712697db4dc915081eb784afa9e0f/src/heap/objects-visiting.h
[modify] https://crrev.com/6b50454d37a712697db4dc915081eb784afa9e0f/src/objects-body-descriptors-inl.h
[modify] https://crrev.com/6b50454d37a712697db4dc915081eb784afa9e0f/src/objects.cc
[modify] https://crrev.com/6b50454d37a712697db4dc915081eb784afa9e0f/src/objects/js-collection.h
[modify] https://crrev.com/6b50454d37a712697db4dc915081eb784afa9e0f/src/objects/map.h
[modify] https://crrev.com/6b50454d37a712697db4dc915081eb784afa9e0f/src/profiler/heap-snapshot-generator.cc
[modify] https://crrev.com/6b50454d37a712697db4dc915081eb784afa9e0f/src/profiler/heap-snapshot-generator.h

Project Member

Comment 10 by bugdroid1@chromium.org, Jun 8 2018

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

commit 310ba80b218e44a36b4e36a29cdc292a35199cfe
Author: Dominik Inführ <dinfuehr@google.com>
Date: Fri Jun 08 13:07:21 2018

Improve output for HashTables

Emit full header and key/value-pairs.

Bug:  chromium:844008 
Change-Id: Ia94b841ff97d024d6ba27b1bcc2f993f95fc11fa
Reviewed-on: https://chromium-review.googlesource.com/1092698
Reviewed-by: Ulan Degenbaev <ulan@chromium.org>
Commit-Queue: Dominik Inführ <dinfuehr@google.com>
Cr-Commit-Position: refs/heads/master@{#53613}
[modify] https://crrev.com/310ba80b218e44a36b4e36a29cdc292a35199cfe/src/objects-printer.cc
[modify] https://crrev.com/310ba80b218e44a36b4e36a29cdc292a35199cfe/src/objects/hash-table.h

Project Member

Comment 11 by bugdroid1@chromium.org, Jun 8 2018

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

commit 16586b52969f284e87c1103f05eedd20d7f89a99
Author: Dominik Inführ <dinfuehr@google.com>
Date: Fri Jun 08 17:35:22 2018

Keep track of EphemeronHashTables in Worklist

JSWeakCollections used to be chained in a singly-linked list. The GC now
stores the JSWeakCollection's backing store EphemeronHashTable in a
Worklist. This should allow easier parallelization in the future.

Bug:  chromium:844008 
Change-Id: Icc0c1b537c23e8d24dc5b27452fb8106562c9a09
Reviewed-on: https://chromium-review.googlesource.com/1092496
Commit-Queue: Dominik Inführ <dinfuehr@google.com>
Reviewed-by: Ulan Degenbaev <ulan@chromium.org>
Cr-Commit-Position: refs/heads/master@{#53619}
[modify] https://crrev.com/16586b52969f284e87c1103f05eedd20d7f89a99/src/heap/heap.cc
[modify] https://crrev.com/16586b52969f284e87c1103f05eedd20d7f89a99/src/heap/heap.h
[modify] https://crrev.com/16586b52969f284e87c1103f05eedd20d7f89a99/src/heap/incremental-marking.cc
[modify] https://crrev.com/16586b52969f284e87c1103f05eedd20d7f89a99/src/heap/mark-compact-inl.h
[modify] https://crrev.com/16586b52969f284e87c1103f05eedd20d7f89a99/src/heap/mark-compact.cc
[modify] https://crrev.com/16586b52969f284e87c1103f05eedd20d7f89a99/src/heap/mark-compact.h
[modify] https://crrev.com/16586b52969f284e87c1103f05eedd20d7f89a99/src/heap/worklist.h
[modify] https://crrev.com/16586b52969f284e87c1103f05eedd20d7f89a99/src/objects.cc
[modify] https://crrev.com/16586b52969f284e87c1103f05eedd20d7f89a99/src/objects/hash-table.h

Project Member

Comment 12 by bugdroid1@chromium.org, Jun 8 2018

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

commit d14decc3eb592bba3fd5c3a305b3263dc64b8810
Author: Dominik Inführ <dinfuehr@google.com>
Date: Fri Jun 08 17:48:51 2018

Remove next field from JSWeakCollection

The GC now stores EphemeronHashTables in a Worklist.

Bug:  chromium:844008 
Change-Id: I6ad95b3b49484901d75c6fd92b59065c438fcd03
Reviewed-on: https://chromium-review.googlesource.com/1093092
Commit-Queue: Dominik Inführ <dinfuehr@google.com>
Reviewed-by: Ulan Degenbaev <ulan@chromium.org>
Cr-Commit-Position: refs/heads/master@{#53620}
[modify] https://crrev.com/d14decc3eb592bba3fd5c3a305b3263dc64b8810/src/objects-body-descriptors-inl.h
[modify] https://crrev.com/d14decc3eb592bba3fd5c3a305b3263dc64b8810/src/objects/js-collection-inl.h
[modify] https://crrev.com/d14decc3eb592bba3fd5c3a305b3263dc64b8810/src/objects/js-collection.h

Project Member

Comment 14 by bugdroid1@chromium.org, Jun 11 2018

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

commit eb5d449b6051141b83f9281282fc5f9720b1289f
Author: Dominik Inführ <dinfuehr@google.com>
Date: Mon Jun 11 14:23:27 2018

Mark WeakMaps concurrently

Mark JSWeakCollections and EphemeronHashTables concurrently to
the application to reduce pause times.

Bug:  chromium:844008 
Change-Id: I0a8fe592e651b368c5c12846d02d55bbf4058ff2
Reviewed-on: https://chromium-review.googlesource.com/1095035
Reviewed-by: Ulan Degenbaev <ulan@chromium.org>
Commit-Queue: Dominik Inführ <dinfuehr@google.com>
Cr-Commit-Position: refs/heads/master@{#53641}
[modify] https://crrev.com/eb5d449b6051141b83f9281282fc5f9720b1289f/src/heap/concurrent-marking.cc
[modify] https://crrev.com/eb5d449b6051141b83f9281282fc5f9720b1289f/src/heap/mark-compact.cc

Project Member

Comment 15 by bugdroid1@chromium.org, Jun 11 2018

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

commit cbd4932ea663c853bae7ba9276278ec4051b9c71
Author: Dominik Inführ <dinfuehr@google.com>
Date: Mon Jun 11 15:22:13 2018

Heap-Snapshot-Generator only needs single pass

Now that V8 uses EphemeronHashTable as backing store for
JSWeakCollections one pass over the heap is enough. In the old
implementation a second pass was necessary to find the owner
of the FixedArray to determine if its entries are strong or weak
references.

Bug:  chromium:844008 
Change-Id: I04bdf7d480c9be301831698571be5b226d20ac20
Reviewed-on: https://chromium-review.googlesource.com/1090910
Reviewed-by: Ulan Degenbaev <ulan@chromium.org>
Reviewed-by: Alexei Filippov <alph@chromium.org>
Commit-Queue: Dominik Inführ <dinfuehr@google.com>
Cr-Commit-Position: refs/heads/master@{#53643}
[modify] https://crrev.com/cbd4932ea663c853bae7ba9276278ec4051b9c71/src/profiler/heap-snapshot-generator.cc
[modify] https://crrev.com/cbd4932ea663c853bae7ba9276278ec4051b9c71/src/profiler/heap-snapshot-generator.h

Project Member

Comment 17 by bugdroid1@chromium.org, Jun 13 2018

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

commit 0d66b129ca64cc4d28b91673b1573b7762926abb
Author: Dominik Inführ <dinfuehr@google.com>
Date: Wed Jun 13 09:49:18 2018

[heap] EphemeronHashTable in Incremental Marking

Mark values if their corresponding key was already marked. Also
take into account the size for backing store.

Bug:  chromium:844008 
Change-Id: I58570f935c69fb39b686fd22dc93caba309f83b2
Reviewed-on: https://chromium-review.googlesource.com/1097400
Reviewed-by: Ulan Degenbaev <ulan@chromium.org>
Commit-Queue: Dominik Inführ <dinfuehr@google.com>
Cr-Commit-Position: refs/heads/master@{#53690}
[modify] https://crrev.com/0d66b129ca64cc4d28b91673b1573b7762926abb/src/heap/incremental-marking.cc
[modify] https://crrev.com/0d66b129ca64cc4d28b91673b1573b7762926abb/src/heap/mark-compact-inl.h

Project Member

Comment 18 by bugdroid1@chromium.org, Jun 13 2018

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

commit d47a6fe05c0cff87dd0d9f454ff6c2022b3dd0db
Author: Dominik Inführ <dinfuehr@google.com>
Date: Wed Jun 13 09:50:24 2018

[heap] GCTracer for visiting/marking ephemerons

Bug:  chromium:844008 
Change-Id: Ic736bb91c13da5d52baa53cd3630978b9819f66b
Reviewed-on: https://chromium-review.googlesource.com/1097488
Reviewed-by: Ulan Degenbaev <ulan@chromium.org>
Commit-Queue: Dominik Inführ <dinfuehr@google.com>
Cr-Commit-Position: refs/heads/master@{#53691}
[modify] https://crrev.com/d47a6fe05c0cff87dd0d9f454ff6c2022b3dd0db/src/heap-symbols.h
[modify] https://crrev.com/d47a6fe05c0cff87dd0d9f454ff6c2022b3dd0db/src/heap/gc-tracer.cc
[modify] https://crrev.com/d47a6fe05c0cff87dd0d9f454ff6c2022b3dd0db/src/heap/mark-compact.cc

Project Member

Comment 19 by bugdroid1@chromium.org, Jun 13 2018

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

commit 249d0ea4df569908d6d4d9d3a49dd24956eda842
Author: Dominik Inführ <dinfuehr@google.com>
Date: Wed Jun 13 11:04:18 2018

[heap] Parallel marking for ephemerons

After marking ephemerons process the worklist in parallel.

Bug:  chromium:844008 
Change-Id: Id750c19d0f564675f051cc4f9933d41fa0afb42b
Reviewed-on: https://chromium-review.googlesource.com/1097490
Commit-Queue: Dominik Inführ <dinfuehr@google.com>
Reviewed-by: Ulan Degenbaev <ulan@chromium.org>
Cr-Commit-Position: refs/heads/master@{#53694}
[modify] https://crrev.com/249d0ea4df569908d6d4d9d3a49dd24956eda842/src/heap/mark-compact.cc
[modify] https://crrev.com/249d0ea4df569908d6d4d9d3a49dd24956eda842/src/heap/mark-compact.h

Project Member

Comment 20 by bugdroid1@chromium.org, Jun 13 2018

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

commit 2aa166a6330407f9784d5e12d5f4b534bfe37988
Author: Dominik Inführ <dinfuehr@google.com>
Date: Wed Jun 13 15:28:21 2018

[heap] Clear ephemeron worklist when tearing down

Bug: chromium:852308,  chromium:844008 
Change-Id: I99551c1f75d5916edfb780998963140b8282a570
Reviewed-on: https://chromium-review.googlesource.com/1099065
Commit-Queue: Dominik Inführ <dinfuehr@google.com>
Reviewed-by: Ulan Degenbaev <ulan@chromium.org>
Cr-Commit-Position: refs/heads/master@{#53706}
[modify] https://crrev.com/2aa166a6330407f9784d5e12d5f4b534bfe37988/src/heap/mark-compact.cc
[modify] https://crrev.com/2aa166a6330407f9784d5e12d5f4b534bfe37988/src/heap/mark-compact.h
[modify] https://crrev.com/2aa166a6330407f9784d5e12d5f4b534bfe37988/src/isolate.cc
[modify] https://crrev.com/2aa166a6330407f9784d5e12d5f4b534bfe37988/test/cctest/heap/test-concurrent-marking.cc

Project Member

Comment 21 by bugdroid1@chromium.org, Jun 14 2018

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

commit 9ee78d965bb9cfee1a12db7a4d34496f4463fba8
Author: Dominik Inführ <dinfuehr@google.com>
Date: Thu Jun 14 09:28:10 2018

[heap] Flag for parallel ephemeron marking

New flag for disabling of parallel marking after visiting all
ephemerons.

Bug:  chromium:844008 
Change-Id: I3dfc4e6a05ffc8e065313ef4955279617246802c
Reviewed-on: https://chromium-review.googlesource.com/1100468
Reviewed-by: Ulan Degenbaev <ulan@chromium.org>
Commit-Queue: Dominik Inführ <dinfuehr@google.com>
Cr-Commit-Position: refs/heads/master@{#53728}
[modify] https://crrev.com/9ee78d965bb9cfee1a12db7a4d34496f4463fba8/src/flag-definitions.h
[modify] https://crrev.com/9ee78d965bb9cfee1a12db7a4d34496f4463fba8/src/heap/mark-compact.cc

Project Member

Comment 23 by bugdroid1@chromium.org, Jun 15 2018

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

commit 586786630c8f90b1c933b8a9a9de24621bcd4056
Author: Dominik Inführ <dinfuehr@google.com>
Date: Fri Jun 15 12:15:15 2018

[heap] Implication for parallel ephemeron flags

Disable parallel ephemeron handling if single-threaded flag is set.

Bug:  chromium:844008 
Change-Id: I96d3daae4a239a5326c6d3394f620697bad1780a
Reviewed-on: https://chromium-review.googlesource.com/1102335
Reviewed-by: Ulan Degenbaev <ulan@chromium.org>
Commit-Queue: Dominik Inführ <dinfuehr@google.com>
Cr-Commit-Position: refs/heads/master@{#53761}
[modify] https://crrev.com/586786630c8f90b1c933b8a9a9de24621bcd4056/src/flag-definitions.h

Project Member

Comment 24 by bugdroid1@chromium.org, Jun 18 2018

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

commit 3e5db4875139ff12affa8292af5e90b6f34a14bb
Author: Dominik Inführ <dinfuehr@google.com>
Date: Mon Jun 18 16:04:23 2018

[heap] Move RecordSlot to concurrent marking

Move Slot recording to concurrent and incremental marking phase and
out of the atomic pause. Records more slots to remove
slot recording completely from the pause.

Bug:  chromium:844008 
Change-Id: I13ba20b4839990134dc37bd909fb0a2d66e13c64
Reviewed-on: https://chromium-review.googlesource.com/1104348
Commit-Queue: Dominik Inführ <dinfuehr@google.com>
Reviewed-by: Ulan Degenbaev <ulan@chromium.org>
Cr-Commit-Position: refs/heads/master@{#53804}
[modify] https://crrev.com/3e5db4875139ff12affa8292af5e90b6f34a14bb/src/heap/concurrent-marking.cc
[modify] https://crrev.com/3e5db4875139ff12affa8292af5e90b6f34a14bb/src/heap/mark-compact-inl.h
[modify] https://crrev.com/3e5db4875139ff12affa8292af5e90b6f34a14bb/src/heap/mark-compact.cc

Project Member

Comment 25 by bugdroid1@chromium.org, Jun 19 2018

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

commit 996a6c1096f10d151cb4696ed1bca55955ec6aa2
Author: Dominik Inführ <dinfuehr@google.com>
Date: Tue Jun 19 19:53:43 2018

[heap] Flag for disabling ephemeron optimizations

Disables all optimizations for WeakMaps/WeakSets.

Bug:  chromium:844008 
Change-Id: I5395ce981bbdd0e8e03ba0821103afde0889cf56
Reviewed-on: https://chromium-review.googlesource.com/1102513
Commit-Queue: Dominik Inführ <dinfuehr@google.com>
Reviewed-by: Ulan Degenbaev <ulan@chromium.org>
Cr-Commit-Position: refs/heads/master@{#53851}
[modify] https://crrev.com/996a6c1096f10d151cb4696ed1bca55955ec6aa2/src/flag-definitions.h
[modify] https://crrev.com/996a6c1096f10d151cb4696ed1bca55955ec6aa2/src/heap/concurrent-marking.cc
[modify] https://crrev.com/996a6c1096f10d151cb4696ed1bca55955ec6aa2/src/heap/mark-compact-inl.h
[modify] https://crrev.com/996a6c1096f10d151cb4696ed1bca55955ec6aa2/src/heap/mark-compact.cc
[modify] https://crrev.com/996a6c1096f10d151cb4696ed1bca55955ec6aa2/src/heap/mark-compact.h

Project Member

Comment 26 by bugdroid1@chromium.org, Jun 26 2018

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

commit 9aba015976fd951b8894d5281427c3c439bb2235
Author: Dominik Inführ <dinfuehr@google.com>
Date: Tue Jun 26 17:42:27 2018

[heap] Visit individual ephemerons instead of collections

When marking ephemerons visit individual ephemerons with key and value
unreachable instead of simply iterating all ephemerons in all weak
collections. Also visit ephemerons at end of concurrent marking to do
work we would otherwise need to do in the atomic pause.

Bug:  chromium:844008 
Change-Id: I3400ad1f81c0cdc0fe6506a1f1146a6743a7fcd7
Reviewed-on: https://chromium-review.googlesource.com/1113934
Commit-Queue: Dominik Inführ <dinfuehr@google.com>
Reviewed-by: Ulan Degenbaev <ulan@chromium.org>
Cr-Commit-Position: refs/heads/master@{#54039}
[modify] https://crrev.com/9aba015976fd951b8894d5281427c3c439bb2235/src/heap-symbols.h
[modify] https://crrev.com/9aba015976fd951b8894d5281427c3c439bb2235/src/heap/concurrent-marking.cc
[modify] https://crrev.com/9aba015976fd951b8894d5281427c3c439bb2235/src/heap/concurrent-marking.h
[modify] https://crrev.com/9aba015976fd951b8894d5281427c3c439bb2235/src/heap/gc-tracer.cc
[modify] https://crrev.com/9aba015976fd951b8894d5281427c3c439bb2235/src/heap/incremental-marking.cc
[modify] https://crrev.com/9aba015976fd951b8894d5281427c3c439bb2235/src/heap/mark-compact-inl.h
[modify] https://crrev.com/9aba015976fd951b8894d5281427c3c439bb2235/src/heap/mark-compact.cc
[modify] https://crrev.com/9aba015976fd951b8894d5281427c3c439bb2235/src/heap/mark-compact.h
[modify] https://crrev.com/9aba015976fd951b8894d5281427c3c439bb2235/src/heap/worklist.h

Project Member

Comment 27 by bugdroid1@chromium.org, Jun 27 2018

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

commit 4b429b102f0ba65a2fc3191967fcb5202d50fecb
Author: Jakob Kummerow <jkummerow@chromium.org>
Date: Wed Jun 27 00:07:21 2018

Revert "[heap] Visit individual ephemerons instead of collections"

This reverts commit 9aba015976fd951b8894d5281427c3c439bb2235.

Reason for revert: causes widespread breakage on Chromium-integrated builds, failing here:

  CHECK_EQ(0, heap()->local_embedder_heap_tracer()->NumberOfWrappersToTrace());

in MarkCompactCollector::ProcessEphemeronMarking(). See e.g. https://logs.chromium.org/v/?s=chromium%2Fbb%2Fclient.v8.fyi%2FV8-Blink_Linux_64__dbg_%2F12321%2F%2B%2Frecipes%2Fsteps%2Fwebkit_unit_tests%2F0%2Fstdout and more on https://ci.chromium.org/p/v8/g/fyi/console

Original change's description:
> [heap] Visit individual ephemerons instead of collections
> 
> When marking ephemerons visit individual ephemerons with key and value
> unreachable instead of simply iterating all ephemerons in all weak
> collections. Also visit ephemerons at end of concurrent marking to do
> work we would otherwise need to do in the atomic pause.
> 
> Bug:  chromium:844008 
> Change-Id: I3400ad1f81c0cdc0fe6506a1f1146a6743a7fcd7
> Reviewed-on: https://chromium-review.googlesource.com/1113934
> Commit-Queue: Dominik Inführ <dinfuehr@google.com>
> Reviewed-by: Ulan Degenbaev <ulan@chromium.org>
> Cr-Commit-Position: refs/heads/master@{#54039}

TBR=ulan@chromium.org,dinfuehr@google.com

Change-Id: Ib44bfe8c49e8fc30c3d0f2beba03a2895530dfd6
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Bug:  chromium:844008 
Reviewed-on: https://chromium-review.googlesource.com/1116118
Reviewed-by: Jakob Kummerow <jkummerow@chromium.org>
Commit-Queue: Jakob Kummerow <jkummerow@chromium.org>
Cr-Commit-Position: refs/heads/master@{#54045}
[modify] https://crrev.com/4b429b102f0ba65a2fc3191967fcb5202d50fecb/src/heap-symbols.h
[modify] https://crrev.com/4b429b102f0ba65a2fc3191967fcb5202d50fecb/src/heap/concurrent-marking.cc
[modify] https://crrev.com/4b429b102f0ba65a2fc3191967fcb5202d50fecb/src/heap/concurrent-marking.h
[modify] https://crrev.com/4b429b102f0ba65a2fc3191967fcb5202d50fecb/src/heap/gc-tracer.cc
[modify] https://crrev.com/4b429b102f0ba65a2fc3191967fcb5202d50fecb/src/heap/incremental-marking.cc
[modify] https://crrev.com/4b429b102f0ba65a2fc3191967fcb5202d50fecb/src/heap/mark-compact-inl.h
[modify] https://crrev.com/4b429b102f0ba65a2fc3191967fcb5202d50fecb/src/heap/mark-compact.cc
[modify] https://crrev.com/4b429b102f0ba65a2fc3191967fcb5202d50fecb/src/heap/mark-compact.h
[modify] https://crrev.com/4b429b102f0ba65a2fc3191967fcb5202d50fecb/src/heap/worklist.h

Project Member

Comment 28 by bugdroid1@chromium.org, Jun 27 2018

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

commit 91f113e2bb69642709123de793b7cab5f06ea46e
Author: Dominik Inführ <dinfuehr@google.com>
Date: Wed Jun 27 08:22:43 2018

Reland "[heap] Visit individual ephemerons instead of collections"

This is a reland of 9aba015976fd951b8894d5281427c3c439bb2235

Original change's description:
> [heap] Visit individual ephemerons instead of collections
> 
> When marking ephemerons visit individual ephemerons with key and value
> unreachable instead of simply iterating all ephemerons in all weak
> collections. Also visit ephemerons at end of concurrent marking to do
> work we would otherwise need to do in the atomic pause.
> 
> Bug:  chromium:844008 
> Change-Id: I3400ad1f81c0cdc0fe6506a1f1146a6743a7fcd7
> Reviewed-on: https://chromium-review.googlesource.com/1113934
> Commit-Queue: Dominik Inführ <dinfuehr@google.com>
> Reviewed-by: Ulan Degenbaev <ulan@chromium.org>
> Cr-Commit-Position: refs/heads/master@{#54039}

Bug:  chromium:844008 
Change-Id: I4c44e74c7cf5fe380ffa4ce9f106bebb57bc023d
Reviewed-on: https://chromium-review.googlesource.com/1116438
Reviewed-by: Ulan Degenbaev <ulan@chromium.org>
Commit-Queue: Dominik Inführ <dinfuehr@google.com>
Cr-Commit-Position: refs/heads/master@{#54046}
[modify] https://crrev.com/91f113e2bb69642709123de793b7cab5f06ea46e/src/heap-symbols.h
[modify] https://crrev.com/91f113e2bb69642709123de793b7cab5f06ea46e/src/heap/concurrent-marking.cc
[modify] https://crrev.com/91f113e2bb69642709123de793b7cab5f06ea46e/src/heap/concurrent-marking.h
[modify] https://crrev.com/91f113e2bb69642709123de793b7cab5f06ea46e/src/heap/gc-tracer.cc
[modify] https://crrev.com/91f113e2bb69642709123de793b7cab5f06ea46e/src/heap/incremental-marking.cc
[modify] https://crrev.com/91f113e2bb69642709123de793b7cab5f06ea46e/src/heap/mark-compact-inl.h
[modify] https://crrev.com/91f113e2bb69642709123de793b7cab5f06ea46e/src/heap/mark-compact.cc
[modify] https://crrev.com/91f113e2bb69642709123de793b7cab5f06ea46e/src/heap/mark-compact.h
[modify] https://crrev.com/91f113e2bb69642709123de793b7cab5f06ea46e/src/heap/worklist.h

Project Member

Comment 29 by bugdroid1@chromium.org, Jun 27 2018

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

commit 265d5c243f452c1993a6eba9c3a0ea82a8da42f9
Author: Dominik Inführ <dinfuehr@google.com>
Date: Wed Jun 27 09:42:21 2018

Revert "Reland "[heap] Visit individual ephemerons instead of collections""

This reverts commit 91f113e2bb69642709123de793b7cab5f06ea46e.

Reason for revert: still causes breakage on Chromium-integrated builds, failing here:

  CHECK_EQ(0, heap()->local_embedder_heap_tracer()->NumberOfWrappersToTrace());

Original change's description:
> Reland "[heap] Visit individual ephemerons instead of collections"
>
> This is a reland of 9aba015976fd951b8894d5281427c3c439bb2235
>
> Original change's description:
> > [heap] Visit individual ephemerons instead of collections
> >
> > When marking ephemerons visit individual ephemerons with key and value
> > unreachable instead of simply iterating all ephemerons in all weak
> > collections. Also visit ephemerons at end of concurrent marking to do
> > work we would otherwise need to do in the atomic pause.
> >
> > Bug:  chromium:844008 
> > Change-Id: I3400ad1f81c0cdc0fe6506a1f1146a6743a7fcd7
> > Reviewed-on: https://chromium-review.googlesource.com/1113934
> > Commit-Queue: Dominik Inführ <dinfuehr@google.com>
> > Reviewed-by: Ulan Degenbaev <ulan@chromium.org>
> > Cr-Commit-Position: refs/heads/master@{#54039}
>
> Bug:  chromium:844008 
> Change-Id: I4c44e74c7cf5fe380ffa4ce9f106bebb57bc023d
> Reviewed-on: https://chromium-review.googlesource.com/1116438
> Reviewed-by: Ulan Degenbaev <ulan@chromium.org>
> Commit-Queue: Dominik Inführ <dinfuehr@google.com>
> Cr-Commit-Position: refs/heads/master@{#54046}

TBR=ulan@chromium.org,dinfuehr@google.com

Change-Id: I4a059e86ba06e0b2562afc311b12d397cd78e857
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Bug:  chromium:844008 
Reviewed-on: https://chromium-review.googlesource.com/1116718
Reviewed-by: Sigurd Schneider <sigurds@chromium.org>
Commit-Queue: Sigurd Schneider <sigurds@chromium.org>
Cr-Commit-Position: refs/heads/master@{#54047}
[modify] https://crrev.com/265d5c243f452c1993a6eba9c3a0ea82a8da42f9/src/heap-symbols.h
[modify] https://crrev.com/265d5c243f452c1993a6eba9c3a0ea82a8da42f9/src/heap/concurrent-marking.cc
[modify] https://crrev.com/265d5c243f452c1993a6eba9c3a0ea82a8da42f9/src/heap/concurrent-marking.h
[modify] https://crrev.com/265d5c243f452c1993a6eba9c3a0ea82a8da42f9/src/heap/gc-tracer.cc
[modify] https://crrev.com/265d5c243f452c1993a6eba9c3a0ea82a8da42f9/src/heap/incremental-marking.cc
[modify] https://crrev.com/265d5c243f452c1993a6eba9c3a0ea82a8da42f9/src/heap/mark-compact-inl.h
[modify] https://crrev.com/265d5c243f452c1993a6eba9c3a0ea82a8da42f9/src/heap/mark-compact.cc
[modify] https://crrev.com/265d5c243f452c1993a6eba9c3a0ea82a8da42f9/src/heap/mark-compact.h
[modify] https://crrev.com/265d5c243f452c1993a6eba9c3a0ea82a8da42f9/src/heap/worklist.h

Project Member

Comment 30 by bugdroid1@chromium.org, Jun 27 2018

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

commit 5cb08217a60613a8bf5cff97715b357c8ee7df1e
Author: Dominik Inführ <dinfuehr@google.com>
Date: Wed Jun 27 12:33:00 2018

Reland "Reland "[heap] Visit individual ephemerons instead of collections""

This is a reland of 91f113e2bb69642709123de793b7cab5f06ea46e

Original change's description:
> Reland "[heap] Visit individual ephemerons instead of collections"
> 
> This is a reland of 9aba015976fd951b8894d5281427c3c439bb2235
> 
> Original change's description:
> > [heap] Visit individual ephemerons instead of collections
> > 
> > When marking ephemerons visit individual ephemerons with key and value
> > unreachable instead of simply iterating all ephemerons in all weak
> > collections. Also visit ephemerons at end of concurrent marking to do
> > work we would otherwise need to do in the atomic pause.
> > 
> > Bug:  chromium:844008 
> > Change-Id: I3400ad1f81c0cdc0fe6506a1f1146a6743a7fcd7
> > Reviewed-on: https://chromium-review.googlesource.com/1113934
> > Commit-Queue: Dominik Inführ <dinfuehr@google.com>
> > Reviewed-by: Ulan Degenbaev <ulan@chromium.org>
> > Cr-Commit-Position: refs/heads/master@{#54039}
> 
> Bug:  chromium:844008 
> Change-Id: I4c44e74c7cf5fe380ffa4ce9f106bebb57bc023d
> Reviewed-on: https://chromium-review.googlesource.com/1116438
> Reviewed-by: Ulan Degenbaev <ulan@chromium.org>
> Commit-Queue: Dominik Inführ <dinfuehr@google.com>
> Cr-Commit-Position: refs/heads/master@{#54046}

Bug:  chromium:844008 
Change-Id: Ie9d606c51aacdfa9ffe77fe4cf780e30dd445d52
Reviewed-on: https://chromium-review.googlesource.com/1116639
Reviewed-by: Ulan Degenbaev <ulan@chromium.org>
Commit-Queue: Dominik Inführ <dinfuehr@google.com>
Cr-Commit-Position: refs/heads/master@{#54053}
[modify] https://crrev.com/5cb08217a60613a8bf5cff97715b357c8ee7df1e/src/heap-symbols.h
[modify] https://crrev.com/5cb08217a60613a8bf5cff97715b357c8ee7df1e/src/heap/concurrent-marking.cc
[modify] https://crrev.com/5cb08217a60613a8bf5cff97715b357c8ee7df1e/src/heap/concurrent-marking.h
[modify] https://crrev.com/5cb08217a60613a8bf5cff97715b357c8ee7df1e/src/heap/gc-tracer.cc
[modify] https://crrev.com/5cb08217a60613a8bf5cff97715b357c8ee7df1e/src/heap/incremental-marking.cc
[modify] https://crrev.com/5cb08217a60613a8bf5cff97715b357c8ee7df1e/src/heap/mark-compact-inl.h
[modify] https://crrev.com/5cb08217a60613a8bf5cff97715b357c8ee7df1e/src/heap/mark-compact.cc
[modify] https://crrev.com/5cb08217a60613a8bf5cff97715b357c8ee7df1e/src/heap/mark-compact.h
[modify] https://crrev.com/5cb08217a60613a8bf5cff97715b357c8ee7df1e/src/heap/worklist.h

Project Member

Comment 31 by bugdroid1@chromium.org, Jul 5

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

commit 9847f9c89e76620532174748ad0a13ca0f587541
Author: Dominik Inführ <dinfuehr@google.com>
Date: Thu Jul 05 07:53:04 2018

[heap] Add linear ephemeron marking

After a certain number of iterations in the fixpoint
iteration switch to a linear algorithm. This
algorithm uses a key-to-values map for weak collections
contents to avoid checking all EphemeronHashTables
again.

Bug:  chromium:844008 
Change-Id: I044fede5911e0a780d088d1ba2bb5343317d9b7a
Reviewed-on: https://chromium-review.googlesource.com/1105835
Commit-Queue: Dominik Inführ <dinfuehr@google.com>
Reviewed-by: Ulan Degenbaev <ulan@chromium.org>
Cr-Commit-Position: refs/heads/master@{#54232}
[modify] https://crrev.com/9847f9c89e76620532174748ad0a13ca0f587541/src/flag-definitions.h
[modify] https://crrev.com/9847f9c89e76620532174748ad0a13ca0f587541/src/heap-symbols.h
[modify] https://crrev.com/9847f9c89e76620532174748ad0a13ca0f587541/src/heap/gc-tracer.cc
[modify] https://crrev.com/9847f9c89e76620532174748ad0a13ca0f587541/src/heap/mark-compact.cc
[modify] https://crrev.com/9847f9c89e76620532174748ad0a13ca0f587541/src/heap/mark-compact.h

Project Member

Comment 32 by bugdroid1@chromium.org, Jul 6

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

commit 5f9686616c972e54571847708a80f8d68b8bfc78
Author: Dominik Inführ <dinfuehr@google.com>
Date: Fri Jul 06 08:45:11 2018

[heap] remove flag optimize_ephemerons

Originally intended for benchmarking but not good enough for that since
recent changes cannot be easily disabled.

Bug:  chromium:844008 
Change-Id: I4c7075fe2f1d5e85b76a0c40c854b0dbf7d4564b
Reviewed-on: https://chromium-review.googlesource.com/1127376
Reviewed-by: Ulan Degenbaev <ulan@chromium.org>
Commit-Queue: Dominik Inführ <dinfuehr@google.com>
Cr-Commit-Position: refs/heads/master@{#54281}
[modify] https://crrev.com/5f9686616c972e54571847708a80f8d68b8bfc78/src/flag-definitions.h
[modify] https://crrev.com/5f9686616c972e54571847708a80f8d68b8bfc78/src/heap/concurrent-marking.cc
[modify] https://crrev.com/5f9686616c972e54571847708a80f8d68b8bfc78/src/heap/mark-compact-inl.h
[modify] https://crrev.com/5f9686616c972e54571847708a80f8d68b8bfc78/src/heap/mark-compact.cc

Project Member

Comment 33 by bugdroid1@chromium.org, Jul 9

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

commit fa4bcc4da0ca84d7122148e8cc545944641b1a01
Author: Dominik Inführ <dinfuehr@google.com>
Date: Mon Jul 09 14:24:03 2018

[heap] Add GCTracer for updating refs after scavenge

Updating refs to new space in internal data structures could take some
time, so also measure this.

Bug:  chromium:844008 
Change-Id: I9f5af4d09f8ef580ca0ad0019cfc78a994d62ffd
Reviewed-on: https://chromium-review.googlesource.com/1128889
Reviewed-by: Hannes Payer <hpayer@chromium.org>
Commit-Queue: Dominik Inführ <dinfuehr@google.com>
Cr-Commit-Position: refs/heads/master@{#54328}
[modify] https://crrev.com/fa4bcc4da0ca84d7122148e8cc545944641b1a01/src/heap-symbols.h
[modify] https://crrev.com/fa4bcc4da0ca84d7122148e8cc545944641b1a01/src/heap/gc-tracer.cc
[modify] https://crrev.com/fa4bcc4da0ca84d7122148e8cc545944641b1a01/src/heap/heap.cc

Project Member

Comment 34 by bugdroid1@chromium.org, Jul 12

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

commit 7abd2243e28b7d832987ba741357343935d844ff
Author: Dominik Inführ <dinfuehr@google.com>
Date: Thu Jul 12 13:44:28 2018

[heap] Set number of fixpoint iterations to 10

Set number of fixpoint iterations to 10 before switching to the linear
algorithm. The flag's initial default value was set to 0 to use the
linear algorithm all the time for testing purposes.

Bug:  chromium:844008 
Change-Id: Ib0fd6241b55468ef5be2c4cc3cc147db2d432c83
Reviewed-on: https://chromium-review.googlesource.com/1134769
Reviewed-by: Ulan Degenbaev <ulan@chromium.org>
Commit-Queue: Dominik Inführ <dinfuehr@google.com>
Cr-Commit-Position: refs/heads/master@{#54413}
[modify] https://crrev.com/7abd2243e28b7d832987ba741357343935d844ff/src/flag-definitions.h

Status: Fixed (was: Assigned)

Sign in to add a comment