New issue
Advanced search Search tips
Starred by 2 users

Issue metadata

Status: Assigned
Owner:
Cc:
Components:
HW: All
NextAction: ----
OS: All
Priority: 1
Type: FeatureRequest



Sign in to add a comment
link

Issue 8423: Speedvember tracking bug

Reported by titzer@chromium.org, Nov 6 Project Member

Issue description

This is a tracking bug for WebAssembly performance improvements during the Speedvember push.
 

Comment 1 by bugdroid1@chromium.org, Nov 9

Project Member
The following revision refers to this bug:
  https://chromium.googlesource.com/v8/v8.git/+/799a69d4b610d3a5d332051daff6be7ebbd94d8c

commit 799a69d4b610d3a5d332051daff6be7ebbd94d8c
Author: Deepti Gandluri <gdeepti@chromium.org>
Date: Fri Nov 09 23:51:54 2018

[wasm] Improve instrumentation for chrome://tracing

Currently, the tracing for background tasks is quite cryptic when
looking at chrome://tracing. Most tasks that are posted appear as
ThreadControllerImpl::RunTask, which when looking at other threads
can be deduced as compile tasks. Improve instrumentation to be more
indicative of the work being done.

BUG:v8:8423

Change-Id: I9b5469154ff7163d743efb1df998ca1df08cd4ce
Reviewed-on: https://chromium-review.googlesource.com/c/1330012
Commit-Queue: Deepti Gandluri <gdeepti@chromium.org>
Reviewed-by: Adam Klein <adamk@chromium.org>
Cr-Commit-Position: refs/heads/master@{#57413}
[modify] https://crrev.com/799a69d4b610d3a5d332051daff6be7ebbd94d8c/src/wasm/module-compiler.cc
[modify] https://crrev.com/799a69d4b610d3a5d332051daff6be7ebbd94d8c/src/wasm/wasm-objects.cc

Comment 2 by bugdroid1@chromium.org, Nov 14

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

commit ebb0f30f6588c7114590c5dc4c85df84b7067137
Author: Michael Starzinger <mstarzinger@chromium.org>
Date: Wed Nov 14 16:10:19 2018

[wasm] Avoid redundant code copy for import wrappers.

This avoids creating an on-heap copy for import wrappers by directly
adding the {WasmCode} into the native heap instead. It reduces
compilation time as well as useless GC pressure.

R=clemensh@chromium.org
BUG=v8:8423

Change-Id: Ia063523834c963591027c7d1ed78b795d24907bf
Reviewed-on: https://chromium-review.googlesource.com/c/1335566
Commit-Queue: Michael Starzinger <mstarzinger@chromium.org>
Reviewed-by: Andreas Haas <ahaas@chromium.org>
Reviewed-by: Clemens Hammacher <clemensh@chromium.org>
Cr-Commit-Position: refs/heads/master@{#57511}
[modify] https://crrev.com/ebb0f30f6588c7114590c5dc4c85df84b7067137/src/compiler/pipeline.cc
[modify] https://crrev.com/ebb0f30f6588c7114590c5dc4c85df84b7067137/src/compiler/pipeline.h
[modify] https://crrev.com/ebb0f30f6588c7114590c5dc4c85df84b7067137/src/compiler/wasm-compiler.cc
[modify] https://crrev.com/ebb0f30f6588c7114590c5dc4c85df84b7067137/src/wasm/baseline/liftoff-compiler.cc
[modify] https://crrev.com/ebb0f30f6588c7114590c5dc4c85df84b7067137/src/wasm/wasm-code-manager.cc
[modify] https://crrev.com/ebb0f30f6588c7114590c5dc4c85df84b7067137/src/wasm/wasm-code-manager.h
[modify] https://crrev.com/ebb0f30f6588c7114590c5dc4c85df84b7067137/test/cctest/wasm/test-run-wasm.cc
[modify] https://crrev.com/ebb0f30f6588c7114590c5dc4c85df84b7067137/test/unittests/wasm/wasm-code-manager-unittest.cc

Comment 3 by bugdroid1@chromium.org, Nov 15

Project Member
The following revision refers to this bug:
  https://chromium.googlesource.com/v8/v8.git/+/53d47216d9e21921d74d53a2d483259e1f71e5b6

commit 53d47216d9e21921d74d53a2d483259e1f71e5b6
Author: Michael Starzinger <mstarzinger@chromium.org>
Date: Thu Nov 15 10:09:28 2018

[wasm] Avoid redundant code copy for interpreter entry.

This avoids creating an on-heap copy for interpreter entry wrappers by
directly adding the {WasmCode} into the native heap instead. It reduces
compilation time as well as useless GC pressure.

R=clemensh@chromium.org
BUG=v8:8423

Change-Id: I91a8f3fc9fe542233d8700a58585f4715eed695a
Reviewed-on: https://chromium-review.googlesource.com/c/1337570
Reviewed-by: Clemens Hammacher <clemensh@chromium.org>
Commit-Queue: Michael Starzinger <mstarzinger@chromium.org>
Cr-Commit-Position: refs/heads/master@{#57527}
[modify] https://crrev.com/53d47216d9e21921d74d53a2d483259e1f71e5b6/src/compiler/pipeline.cc
[modify] https://crrev.com/53d47216d9e21921d74d53a2d483259e1f71e5b6/src/compiler/pipeline.h
[modify] https://crrev.com/53d47216d9e21921d74d53a2d483259e1f71e5b6/src/compiler/wasm-compiler.cc
[modify] https://crrev.com/53d47216d9e21921d74d53a2d483259e1f71e5b6/src/wasm/wasm-code-manager.cc
[modify] https://crrev.com/53d47216d9e21921d74d53a2d483259e1f71e5b6/src/wasm/wasm-code-manager.h
[modify] https://crrev.com/53d47216d9e21921d74d53a2d483259e1f71e5b6/src/wasm/wasm-debug.cc

Comment 4 by bugdroid1@chromium.org, Nov 16

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

commit c01bfa9af930e9460a7732a997076bc6611d6b3f
Author: Ben L. Titzer <titzer@chromium.org>
Date: Fri Nov 16 13:52:12 2018

[turbofan] Implement loop rotation

This CL implements an assembly order optimization that moves blocks
that end a loop with an unconditional backedge to the beginning of
the loop, saving a branch.

R=jarin@chromium.org,mstarzinger@chromium.org
BUG=v8:8423

Change-Id: I8a5d25f5472d71227af0f623277ea8d0a8d69867
Reviewed-on: https://chromium-review.googlesource.com/c/1335944
Commit-Queue: Ben Titzer <titzer@chromium.org>
Reviewed-by: Michael Starzinger <mstarzinger@chromium.org>
Cr-Commit-Position: refs/heads/master@{#57572}
[modify] https://crrev.com/c01bfa9af930e9460a7732a997076bc6611d6b3f/src/compiler/backend/code-generator.cc
[modify] https://crrev.com/c01bfa9af930e9460a7732a997076bc6611d6b3f/src/compiler/backend/instruction.cc
[modify] https://crrev.com/c01bfa9af930e9460a7732a997076bc6611d6b3f/src/compiler/backend/instruction.h
[modify] https://crrev.com/c01bfa9af930e9460a7732a997076bc6611d6b3f/src/compiler/backend/jump-threading.cc
[modify] https://crrev.com/c01bfa9af930e9460a7732a997076bc6611d6b3f/src/flag-definitions.h
[modify] https://crrev.com/c01bfa9af930e9460a7732a997076bc6611d6b3f/test/cctest/compiler/test-code-generator.cc
[modify] https://crrev.com/c01bfa9af930e9460a7732a997076bc6611d6b3f/test/cctest/compiler/test-instruction-scheduler.cc
[modify] https://crrev.com/c01bfa9af930e9460a7732a997076bc6611d6b3f/test/cctest/compiler/test-jump-threading.cc
[add] https://crrev.com/c01bfa9af930e9460a7732a997076bc6611d6b3f/test/mjsunit/wasm/loop-rotation.js

Comment 5 by bugdroid1@chromium.org, Nov 16

Project Member
The following revision refers to this bug:
  https://chromium.googlesource.com/v8/v8.git/+/12d146cf230b70e497ba94caff3ee95d6cf70ddc

commit 12d146cf230b70e497ba94caff3ee95d6cf70ddc
Author: Ben L. Titzer <titzer@chromium.org>
Date: Fri Nov 16 16:44:49 2018

[turbofan] Enable loop rotation

R=mstarzinger@chromium.org

Bug: v8:8423
Change-Id: Iefa50c221f38d1548ca2298e3c03c42d03d1c2d8
Reviewed-on: https://chromium-review.googlesource.com/c/1340281
Reviewed-by: Michael Starzinger <mstarzinger@chromium.org>
Commit-Queue: Ben Titzer <titzer@chromium.org>
Cr-Commit-Position: refs/heads/master@{#57582}
[modify] https://crrev.com/12d146cf230b70e497ba94caff3ee95d6cf70ddc/src/flag-definitions.h

Comment 6 by bugdroid1@chromium.org, Nov 20

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

commit de2681c1a8fea8d2f8da2424863714f4652b0b76
Author: Clemens Hammacher <clemensh@chromium.org>
Date: Tue Nov 20 13:44:17 2018

Print readable register names

This adds a {PrintRegister} method which prints the given register in a
readable way (e.g. "eax", ... on ia32).
This is currently only used in Liftoff. The {RegisterConfiguration}
class has the same functionality, and I plan to make
{RegisterConfiguration} also use the new {RegisterName} functions in a
follow-up CL.

R=mstarzinger@chromium.org

Bug: v8:8238, v8:8423, v8:6600
Change-Id: If03901f1d8c5b043e0097e63920ab711bd7e2d17
Reviewed-on: https://chromium-review.googlesource.com/c/1340041
Reviewed-by: Michael Starzinger <mstarzinger@chromium.org>
Commit-Queue: Clemens Hammacher <clemensh@chromium.org>
Cr-Commit-Position: refs/heads/master@{#57646}
[modify] https://crrev.com/de2681c1a8fea8d2f8da2424863714f4652b0b76/src/arm/assembler-arm.h
[modify] https://crrev.com/de2681c1a8fea8d2f8da2424863714f4652b0b76/src/arm64/assembler-arm64.h
[modify] https://crrev.com/de2681c1a8fea8d2f8da2424863714f4652b0b76/src/assembler.h
[modify] https://crrev.com/de2681c1a8fea8d2f8da2424863714f4652b0b76/src/ia32/assembler-ia32.h
[modify] https://crrev.com/de2681c1a8fea8d2f8da2424863714f4652b0b76/src/mips/assembler-mips.h
[modify] https://crrev.com/de2681c1a8fea8d2f8da2424863714f4652b0b76/src/mips64/assembler-mips64.h
[modify] https://crrev.com/de2681c1a8fea8d2f8da2424863714f4652b0b76/src/wasm/baseline/liftoff-register.h
[modify] https://crrev.com/de2681c1a8fea8d2f8da2424863714f4652b0b76/src/x64/assembler-x64.h

Comment 7 by bugdroid1@chromium.org, Nov 22

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

commit 4eb53245f0949a1198155f646d67d19e86635048
Author: Ben L. Titzer <titzer@chromium.org>
Date: Thu Nov 22 15:36:21 2018

[wasm/tools] Add import profiler

Add a profiler for functions imported to WASM instances. This profiler
is implemented entirely in JavaScript and monkey-patches
WebAssembly.instantiate() and new WebAssembly.Instance() to instrument
the imported functions to each instance in order to count their
invocations and cumulative time.

R=mstarzinger@chromium.org

Bug: v8:8423
Change-Id: If456355aba07dc69c5500bafbe35fc56b31486af
Reviewed-on: https://chromium-review.googlesource.com/c/1347488
Commit-Queue: Ben Titzer <titzer@chromium.org>
Reviewed-by: Michael Starzinger <mstarzinger@chromium.org>
Cr-Commit-Position: refs/heads/master@{#57746}
[add] https://crrev.com/4eb53245f0949a1198155f646d67d19e86635048/tools/wasm/wasm-import-profiler-end.js
[add] https://crrev.com/4eb53245f0949a1198155f646d67d19e86635048/tools/wasm/wasm-import-profiler.js

Comment 8 by bugdroid1@chromium.org, Nov 26

Project Member
The following revision refers to this bug:
  https://chromium.googlesource.com/v8/v8.git/+/99484e23cbdac4ea521a486dd3f9b119355962ab

commit 99484e23cbdac4ea521a486dd3f9b119355962ab
Author: Ben L. Titzer <titzer@chromium.org>
Date: Mon Nov 26 15:17:51 2018

[wasm] Intrinsify math imports

This CL adds new Wasm import call kinds that correspond to various
math functions that can be imported from JavaScript, such as trigonometry.
Instead of calling a special import wrapper that converts arguments
to tagged values by boxing, we can now generate calls to little WASM
stubs that contain a single WASM bytecode each.

R=mstarzinger@chromium.org
BUG=v8:8423

Change-Id: I59b1be2dd36d190a8b6c98b88c86cecc0ca7f4a2
Reviewed-on: https://chromium-review.googlesource.com/c/1349279
Commit-Queue: Ben Titzer <titzer@chromium.org>
Reviewed-by: Michael Starzinger <mstarzinger@chromium.org>
Cr-Commit-Position: refs/heads/master@{#57835}
[modify] https://crrev.com/99484e23cbdac4ea521a486dd3f9b119355962ab/src/compiler/pipeline.cc
[modify] https://crrev.com/99484e23cbdac4ea521a486dd3f9b119355962ab/src/compiler/wasm-compiler.cc
[modify] https://crrev.com/99484e23cbdac4ea521a486dd3f9b119355962ab/src/compiler/wasm-compiler.h
[modify] https://crrev.com/99484e23cbdac4ea521a486dd3f9b119355962ab/src/flag-definitions.h
[modify] https://crrev.com/99484e23cbdac4ea521a486dd3f9b119355962ab/src/wasm/module-compiler.cc
[modify] https://crrev.com/99484e23cbdac4ea521a486dd3f9b119355962ab/test/mjsunit/mjsunit.status
[add] https://crrev.com/99484e23cbdac4ea521a486dd3f9b119355962ab/test/mjsunit/regress/wasm/regress-8505.js
[add] https://crrev.com/99484e23cbdac4ea521a486dd3f9b119355962ab/test/mjsunit/wasm/asm-wasm-math-intrinsic.js
[modify] https://crrev.com/99484e23cbdac4ea521a486dd3f9b119355962ab/test/mjsunit/wasm/wasm-constants.js
[add] https://crrev.com/99484e23cbdac4ea521a486dd3f9b119355962ab/test/mjsunit/wasm/wasm-math-intrinsic.js

Comment 9 by bugdroid1@chromium.org, Nov 26

Project Member
The following revision refers to this bug:
  https://chromium.googlesource.com/v8/v8.git/+/0397f782cdd6b73a9212de41e9a0f4071ca42e0e

commit 0397f782cdd6b73a9212de41e9a0f4071ca42e0e
Author: Ben L. Titzer <titzer@chromium.org>
Date: Mon Nov 26 16:26:55 2018

[wasm] Enable intrinsification of math imports

Flag flip to enable this feature.

R=mstarzinger@chromium.org

Bug: v8:8423
Change-Id: I59ee8c49c2f0323a32e8c7e6c9cf8d929b4a8bb4
Reviewed-on: https://chromium-review.googlesource.com/c/1349239
Commit-Queue: Ben Titzer <titzer@chromium.org>
Reviewed-by: Michael Starzinger <mstarzinger@chromium.org>
Cr-Commit-Position: refs/heads/master@{#57844}
[modify] https://crrev.com/0397f782cdd6b73a9212de41e9a0f4071ca42e0e/src/flag-definitions.h

Comment 10 by bugdroid1@chromium.org, Nov 28

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

commit bded0eb6bddd37df589f5d5b0a50474328137514
Author: Clemens Hammacher <clemensh@chromium.org>
Date: Wed Nov 28 15:20:04 2018

[wasm] Handle break to outermost block like a return

This saves a few control merges in Liftoff, and might also generate
smaller graphs in Turbofan.

R=titzer@chromium.org

Bug: v8:6600, v8:8423
Change-Id: Ice921f8b048809bc38b820b94688f482e67bd386
Reviewed-on: https://chromium-review.googlesource.com/c/1354039
Reviewed-by: Ben Titzer <titzer@chromium.org>
Commit-Queue: Clemens Hammacher <clemensh@chromium.org>
Cr-Commit-Position: refs/heads/master@{#57907}
[modify] https://crrev.com/bded0eb6bddd37df589f5d5b0a50474328137514/src/wasm/function-body-decoder-impl.h

Comment 11 by bugdroid1@chromium.org, Nov 30

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

commit c2aaf0a6fa659a8f41b778f3fca039ba62a32e74
Author: Clemens Hammacher <clemensh@chromium.org>
Date: Fri Nov 30 14:05:03 2018

[wasm][liftoff] Optimize one-armed ifs

Do not implement one-armed ifs by emulating an empty else branch. In
Liftoff, we can generate better code and save compile time by handling
this specially. If the merge point at the end of the if is not reached
by the if-branch, we do not need to generate any merge code.

R=titzer@chromium.org

Bug: v8:6600, v8:8423
Change-Id: Ie8ea69dd7491f225605a8e1b986d275d869aa90b
Reviewed-on: https://chromium-review.googlesource.com/c/1356508
Commit-Queue: Clemens Hammacher <clemensh@chromium.org>
Reviewed-by: Ben Titzer <titzer@chromium.org>
Cr-Commit-Position: refs/heads/master@{#57968}
[modify] https://crrev.com/c2aaf0a6fa659a8f41b778f3fca039ba62a32e74/src/wasm/baseline/liftoff-compiler.cc
[modify] https://crrev.com/c2aaf0a6fa659a8f41b778f3fca039ba62a32e74/src/wasm/function-body-decoder-impl.h
[modify] https://crrev.com/c2aaf0a6fa659a8f41b778f3fca039ba62a32e74/src/wasm/graph-builder-interface.cc
[modify] https://crrev.com/c2aaf0a6fa659a8f41b778f3fca039ba62a32e74/test/unittests/wasm/function-body-decoder-unittest.cc

Comment 12 by bugdroid1@chromium.org, Dec 3

Project Member
The following revision refers to this bug:
  https://chromium.googlesource.com/v8/v8.git/+/558c950454906d8d1e67b4690d24a391c3cf75de

commit 558c950454906d8d1e67b4690d24a391c3cf75de
Author: Clemens Hammacher <clemensh@chromium.org>
Date: Mon Dec 03 14:47:00 2018

[Liftoff] Optimize code for returns

Since all other values are not used any more if we return, we don't
need to spill anything (as might happen during {PopToRegister}).
Instead, just load the top stack value into the return register(s).

R=titzer@chromium.org

Bug: v8:6600, v8:8423
Change-Id: Ibfd02d20191459c7b136ab9a48f0cf1a53b3385d
Reviewed-on: https://chromium-review.googlesource.com/c/1358391
Commit-Queue: Clemens Hammacher <clemensh@chromium.org>
Reviewed-by: Ben Titzer <titzer@chromium.org>
Cr-Commit-Position: refs/heads/master@{#57995}
[modify] https://crrev.com/558c950454906d8d1e67b4690d24a391c3cf75de/src/wasm/baseline/liftoff-assembler.cc
[modify] https://crrev.com/558c950454906d8d1e67b4690d24a391c3cf75de/src/wasm/baseline/liftoff-assembler.h
[modify] https://crrev.com/558c950454906d8d1e67b4690d24a391c3cf75de/src/wasm/baseline/liftoff-compiler.cc

Comment 13 by bugdroid1@chromium.org, Dec 4

Project Member
The following revision refers to this bug:
  https://chromium.googlesource.com/v8/v8.git/+/0536ee43db0c699a6bc54ec7c28e3e87ed65d467

commit 0536ee43db0c699a6bc54ec7c28e3e87ed65d467
Author: Clemens Hammacher <clemensh@chromium.org>
Date: Tue Dec 04 11:25:27 2018

Revert "[wasm][liftoff] Optimize one-armed ifs"

This reverts commit c2aaf0a6fa659a8f41b778f3fca039ba62a32e74.

Reason for revert: Benchmarks fail, and ClusterFuzz is not happy (issue 911406, issue 911271)

Original change's description:
> [wasm][liftoff] Optimize one-armed ifs
> 
> Do not implement one-armed ifs by emulating an empty else branch. In
> Liftoff, we can generate better code and save compile time by handling
> this specially. If the merge point at the end of the if is not reached
> by the if-branch, we do not need to generate any merge code.
> 
> R=​titzer@chromium.org
> 
> Bug: v8:6600, v8:8423
> Change-Id: Ie8ea69dd7491f225605a8e1b986d275d869aa90b
> Reviewed-on: https://chromium-review.googlesource.com/c/1356508
> Commit-Queue: Clemens Hammacher <clemensh@chromium.org>
> Reviewed-by: Ben Titzer <titzer@chromium.org>
> Cr-Commit-Position: refs/heads/master@{#57968}

TBR=titzer@chromium.org,clemensh@chromium.org

# Not skipping CQ checks because original CL landed > 1 day ago.

Bug: v8:6600, v8:8423
Change-Id: I5cb3b069f40e34f34da4013e666f6ff293752567
Reviewed-on: https://chromium-review.googlesource.com/c/1360633
Reviewed-by: Clemens Hammacher <clemensh@chromium.org>
Commit-Queue: Clemens Hammacher <clemensh@chromium.org>
Cr-Commit-Position: refs/heads/master@{#58012}
[modify] https://crrev.com/0536ee43db0c699a6bc54ec7c28e3e87ed65d467/src/wasm/baseline/liftoff-compiler.cc
[modify] https://crrev.com/0536ee43db0c699a6bc54ec7c28e3e87ed65d467/src/wasm/function-body-decoder-impl.h
[modify] https://crrev.com/0536ee43db0c699a6bc54ec7c28e3e87ed65d467/src/wasm/graph-builder-interface.cc
[modify] https://crrev.com/0536ee43db0c699a6bc54ec7c28e3e87ed65d467/test/unittests/wasm/function-body-decoder-unittest.cc

Comment 14 by bugdroid1@chromium.org, Dec 4

Project Member
The following revision refers to this bug:
  https://chromium.googlesource.com/v8/v8.git/+/7768b245d9d8c8ac3be5adb290efc2a7162d17d8

commit 7768b245d9d8c8ac3be5adb290efc2a7162d17d8
Author: Clemens Hammacher <clemensh@chromium.org>
Date: Tue Dec 04 16:44:38 2018

Reland "[wasm][liftoff] Optimize one-armed ifs"

This is a reland of c2aaf0a6fa659a8f41b778f3fca039ba62a32e74

Original change's description:
> [wasm][liftoff] Optimize one-armed ifs
> 
> Do not implement one-armed ifs by emulating an empty else branch. In
> Liftoff, we can generate better code and save compile time by handling
> this specially. If the merge point at the end of the if is not reached
> by the if-branch, we do not need to generate any merge code.
> 
> R=titzer@chromium.org
> 
> Bug: v8:6600, v8:8423
> Change-Id: Ie8ea69dd7491f225605a8e1b986d275d869aa90b
> Reviewed-on: https://chromium-review.googlesource.com/c/1356508
> Commit-Queue: Clemens Hammacher <clemensh@chromium.org>
> Reviewed-by: Ben Titzer <titzer@chromium.org>
> Cr-Commit-Position: refs/heads/master@{#57968}

Bug: v8:6600, v8:8423
Change-Id: I6d5eea9f860486768779a33bf6bd7b87cbfc2af0
Reviewed-on: https://chromium-review.googlesource.com/c/1361040
Reviewed-by: Ben Titzer <titzer@chromium.org>
Commit-Queue: Clemens Hammacher <clemensh@chromium.org>
Cr-Commit-Position: refs/heads/master@{#58024}
[modify] https://crrev.com/7768b245d9d8c8ac3be5adb290efc2a7162d17d8/src/wasm/baseline/liftoff-compiler.cc
[modify] https://crrev.com/7768b245d9d8c8ac3be5adb290efc2a7162d17d8/src/wasm/function-body-decoder-impl.h
[modify] https://crrev.com/7768b245d9d8c8ac3be5adb290efc2a7162d17d8/src/wasm/graph-builder-interface.cc
[modify] https://crrev.com/7768b245d9d8c8ac3be5adb290efc2a7162d17d8/test/unittests/wasm/function-body-decoder-unittest.cc

Comment 15 by bugdroid1@chromium.org, Dec 10

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

commit f7db2726dc1c04cce1f6113f8215b3ce9d3bc481
Author: Clemens Hammacher <clemensh@chromium.org>
Date: Mon Dec 10 15:33:26 2018

[Liftoff] Avoid implicit returns, return immediately instead

Instead of branching to the end merge of the outermost block, we should
return directly. This often generates shorter and faster code, since
the merge is omitted.

R=titzer@chromium.org

Bug: v8:6600, v8:8423
Change-Id: Id5e92b05d3fbbcdb69e4a8bf48629d6031d85291
Reviewed-on: https://chromium-review.googlesource.com/c/1358411
Reviewed-by: Ben Titzer <titzer@chromium.org>
Commit-Queue: Clemens Hammacher <clemensh@chromium.org>
Cr-Commit-Position: refs/heads/master@{#58129}
[modify] https://crrev.com/f7db2726dc1c04cce1f6113f8215b3ce9d3bc481/src/wasm/baseline/liftoff-compiler.cc
[modify] https://crrev.com/f7db2726dc1c04cce1f6113f8215b3ce9d3bc481/src/wasm/function-body-decoder-impl.h

Comment 16 by bugdroid1@chromium.org, Dec 10

Project Member
The following revision refers to this bug:
  https://chromium.googlesource.com/v8/v8.git/+/776c8dd436001521fe5784ba328aff9be7f8c432

commit 776c8dd436001521fe5784ba328aff9be7f8c432
Author: Clemens Hammacher <clemensh@chromium.org>
Date: Mon Dec 10 15:44:33 2018

[wasm] Remove redundant buffer fill

This loop is redundant in {GetNodes}.

R=titzer@chromium.org

Bug: v8:8423
Change-Id: Ia624fbe145ae2cd77ea099c3f109899ea6fac9c0
Reviewed-on: https://chromium-review.googlesource.com/c/1370031
Reviewed-by: Ben Titzer <titzer@chromium.org>
Commit-Queue: Clemens Hammacher <clemensh@chromium.org>
Cr-Commit-Position: refs/heads/master@{#58131}
[modify] https://crrev.com/776c8dd436001521fe5784ba328aff9be7f8c432/src/wasm/graph-builder-interface.cc

Comment 17 by bugdroid1@chromium.org, Dec 10

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

commit 2c90935772e30c936574343be914875fe51ff7a7
Author: Clemens Hammacher <clemensh@chromium.org>
Date: Mon Dec 10 16:15:21 2018

[wasm] Do not pop arguments for return

Just pass a pointer to the current stack. This makes it easier to reuse
the {DoReturn} method for breaks to the outermost block.

R=titzer@chromium.org

Bug: v8:8423
Change-Id: Ide8533b154daa227e044820bb9c181f836ba654a
Reviewed-on: https://chromium-review.googlesource.com/c/1370028
Commit-Queue: Clemens Hammacher <clemensh@chromium.org>
Reviewed-by: Ben Titzer <titzer@chromium.org>
Cr-Commit-Position: refs/heads/master@{#58132}
[modify] https://crrev.com/2c90935772e30c936574343be914875fe51ff7a7/src/wasm/function-body-decoder-impl.h
[modify] https://crrev.com/2c90935772e30c936574343be914875fe51ff7a7/test/mjsunit/wasm/errors.js

Comment 18 by bugdroid1@chromium.org, Dec 11

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

commit 3f3e2993ec91668a43e7a7d8581285c175c3dcea
Author: Clemens Hammacher <clemensh@chromium.org>
Date: Tue Dec 11 12:09:15 2018

[wasm] Remove implicit returns

Instead, return directly when branching to the outermost block. When
falling through the end of the function block, generate a standard
return, otherwise do not generate a return at the end of the function
block.

R=titzer@chromium.org

Bug: v8:8423
Change-Id: I3c5ffacfa4ef7a960d41bea62920bd98e63d78df
Reviewed-on: https://chromium-review.googlesource.com/c/1369958
Commit-Queue: Clemens Hammacher <clemensh@chromium.org>
Reviewed-by: Ben Titzer <titzer@chromium.org>
Cr-Commit-Position: refs/heads/master@{#58151}
[modify] https://crrev.com/3f3e2993ec91668a43e7a7d8581285c175c3dcea/src/wasm/baseline/liftoff-compiler.cc
[modify] https://crrev.com/3f3e2993ec91668a43e7a7d8581285c175c3dcea/src/wasm/function-body-decoder-impl.h
[modify] https://crrev.com/3f3e2993ec91668a43e7a7d8581285c175c3dcea/src/wasm/graph-builder-interface.cc

Comment 19 by bugdroid1@chromium.org, Dec 11

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

commit 3eb3529d64341b1157b8eefe3a6ba97b8a7ad959
Author: Clemens Hammacher <clemensh@chromium.org>
Date: Tue Dec 11 13:50:03 2018

[wasm] Skip end env for outermost block

Since implicit returns are gone, this environment is never being used.

R=titzer@chromium.org

Bug: v8:8423
Change-Id: I24d61a1316433fde6835fd608c3d308592721a5c
Reviewed-on: https://chromium-review.googlesource.com/c/1371569
Commit-Queue: Clemens Hammacher <clemensh@chromium.org>
Reviewed-by: Ben Titzer <titzer@chromium.org>
Cr-Commit-Position: refs/heads/master@{#58155}
[modify] https://crrev.com/3eb3529d64341b1157b8eefe3a6ba97b8a7ad959/src/wasm/graph-builder-interface.cc

Comment 20 by bugdroid1@chromium.org, Dec 12

Project Member
The following revision refers to this bug:
  https://chromium.googlesource.com/v8/v8.git/+/83544915ed9c8568522d5a0faf31f68a950859ab

commit 83544915ed9c8568522d5a0faf31f68a950859ab
Author: Clemens Hammacher <clemensh@chromium.org>
Date: Wed Dec 12 14:48:10 2018

[wasm] Remove unused signature parameter for UnOp and BinOp

Neither the TF backend nor Liftoff use the signature, thus remove it.

R=titzer@chromium.org

Bug: v8:8423
Change-Id: I909e9a0095cac67aaefaebcb4240f7d9829e4c87
Reviewed-on: https://chromium-review.googlesource.com/c/1373777
Reviewed-by: Ben Titzer <titzer@chromium.org>
Commit-Queue: Clemens Hammacher <clemensh@chromium.org>
Cr-Commit-Position: refs/heads/master@{#58190}
[modify] https://crrev.com/83544915ed9c8568522d5a0faf31f68a950859ab/src/wasm/baseline/liftoff-compiler.cc
[modify] https://crrev.com/83544915ed9c8568522d5a0faf31f68a950859ab/src/wasm/function-body-decoder-impl.h
[modify] https://crrev.com/83544915ed9c8568522d5a0faf31f68a950859ab/src/wasm/graph-builder-interface.cc

Comment 21 by bugdroid1@chromium.org, Dec 12

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

commit e5984c64c75264b8be6fd1851872d40466bc8758
Author: Clemens Hammacher <clemensh@chromium.org>
Date: Wed Dec 12 17:53:15 2018

[wasm] Simplify error detection at end of functions

The {last_end_found_} field is redundant. If it's false, there will be
a control struct left on the stack.
Thus remove that field, and simplify the error detection condition.

R=titzer@chromium.org

Bug: v8:8423
Change-Id: I16ac4597f229c5e3abd923f8eb504f93afb82eb4
Reviewed-on: https://chromium-review.googlesource.com/c/1373788
Reviewed-by: Ben Titzer <titzer@chromium.org>
Commit-Queue: Clemens Hammacher <clemensh@chromium.org>
Cr-Commit-Position: refs/heads/master@{#58198}
[modify] https://crrev.com/e5984c64c75264b8be6fd1851872d40466bc8758/src/wasm/function-body-decoder-impl.h

Comment 22 by bugdroid1@chromium.org, Dec 12

Project Member
The following revision refers to this bug:
  https://chromium.googlesource.com/v8/v8.git/+/63e46a69f5c51b5d86f5313b5beaee22fe15b96c

commit 63e46a69f5c51b5d86f5313b5beaee22fe15b96c
Author: Clemens Hammacher <clemensh@chromium.org>
Date: Wed Dec 12 17:54:20 2018

[Liftoff] Remove redundant stack_base field

This information is already stored in ControlBase::stack_depth.

R=titzer@chromium.org

Bug: v8:8423
Change-Id: Ie707878b5d7ee5180e44881086d05a590c0dea21
Reviewed-on: https://chromium-review.googlesource.com/c/1373786
Reviewed-by: Ben Titzer <titzer@chromium.org>
Commit-Queue: Clemens Hammacher <clemensh@chromium.org>
Cr-Commit-Position: refs/heads/master@{#58199}
[modify] https://crrev.com/63e46a69f5c51b5d86f5313b5beaee22fe15b96c/src/wasm/baseline/liftoff-assembler.cc
[modify] https://crrev.com/63e46a69f5c51b5d86f5313b5beaee22fe15b96c/src/wasm/baseline/liftoff-assembler.h
[modify] https://crrev.com/63e46a69f5c51b5d86f5313b5beaee22fe15b96c/src/wasm/baseline/liftoff-compiler.cc

Comment 23 by bugdroid1@chromium.org, Dec 13

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

commit bed304a354660a2c034ca2f59228bd5a816a4276
Author: Clemens Hammacher <clemensh@chromium.org>
Date: Thu Dec 13 14:34:30 2018

[wasm] Use atomic instead of mutex for error checking

Different threads check this flag multiple times per function, and
currently all of them synchronize on a single mutex. It's not even a
reader-writer-lock, hence they might block each other just for checking
whether an error has been set.
Threads don't rely on precise information here, this is just a check to
abort early if compilation failed anyway. Also in the current
implementation, no ordering is guaranteed on this error field.

We can avoid taking the mutex by turning the field into an atomic
pointer. It will be updated at most once, from nullptr to the first
error detected. To check whether an error is set, we can even use
relaxed memory order, since we won't look into the object behind the
pointer.

R=titzer@chromium.org

Bug: v8:8423
Change-Id: I71354c8d463a57c219eb21e53136556ae787ebd4
Cq-Include-Trybots: luci.v8.try:v8_linux64_tsan_rel
Reviewed-on: https://chromium-review.googlesource.com/c/1375661
Commit-Queue: Clemens Hammacher <clemensh@chromium.org>
Reviewed-by: Ben Titzer <titzer@chromium.org>
Cr-Commit-Position: refs/heads/master@{#58220}
[modify] https://crrev.com/bed304a354660a2c034ca2f59228bd5a816a4276/src/wasm/module-compiler.cc

Comment 24 by bugdroid1@chromium.org, Dec 13

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

commit acc4ed885eb4b7c3ad7df89044af7bb3b3bdf5da
Author: Clemens Hammacher <clemensh@chromium.org>
Date: Thu Dec 13 14:56:24 2018

[Liftoff] Avoid unneeded CacheState Steal

When finishing a one-armed if, the else state has to be merged into the
end state. We did this before by switching to the else state, then
doing the merge. This CL changes this to avoid the switch.

Drive-by: Add a few missing "const" qualifiers. The style guide forbids
non-const l-value references.

R=titzer@chromium.org

Bug: v8:8423, v8:6600
Change-Id: Iab2aeca393147fba55493bebabd27bc4d77baa0f
Reviewed-on: https://chromium-review.googlesource.com/c/1375656
Reviewed-by: Ben Titzer <titzer@chromium.org>
Commit-Queue: Clemens Hammacher <clemensh@chromium.org>
Cr-Commit-Position: refs/heads/master@{#58222}
[modify] https://crrev.com/acc4ed885eb4b7c3ad7df89044af7bb3b3bdf5da/src/wasm/baseline/liftoff-assembler.cc
[modify] https://crrev.com/acc4ed885eb4b7c3ad7df89044af7bb3b3bdf5da/src/wasm/baseline/liftoff-assembler.h
[modify] https://crrev.com/acc4ed885eb4b7c3ad7df89044af7bb3b3bdf5da/src/wasm/baseline/liftoff-compiler.cc

Comment 25 by bugdroid1@chromium.org, Dec 14

Project Member
The following revision refers to this bug:
  https://chromium.googlesource.com/v8/v8.git/+/768093f4c337c96118d19a937e22f2caab2c3aec

commit 768093f4c337c96118d19a937e22f2caab2c3aec
Author: Clemens Hammacher <clemensh@chromium.org>
Date: Fri Dec 14 14:00:52 2018

[wasm] Handle simple opcodes specially

Avoid the indirection via the signature, instead specialize per
signature. On a microbenchmark run locally, this speeds up Liftoff by
~5% and validation by ~15%.

R=titzer@chromium.org

Bug: v8:8423
Change-Id: Ia0e9ab0dcaa759e4ed4dcd46d2e6f16e65790915
Reviewed-on: https://chromium-review.googlesource.com/c/1373778
Reviewed-by: Michael Starzinger <mstarzinger@chromium.org>
Commit-Queue: Clemens Hammacher <clemensh@chromium.org>
Cr-Commit-Position: refs/heads/master@{#58241}
[modify] https://crrev.com/768093f4c337c96118d19a937e22f2caab2c3aec/src/wasm/function-body-decoder-impl.h
[modify] https://crrev.com/768093f4c337c96118d19a937e22f2caab2c3aec/src/wasm/wasm-opcodes.cc
[modify] https://crrev.com/768093f4c337c96118d19a937e22f2caab2c3aec/src/wasm/wasm-opcodes.h

Comment 26 by bugdroid1@chromium.org, Dec 18

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

commit d520e5f510ee7eb73fdeb79d35cc9f75e1889900
Author: Clemens Hammacher <clemensh@chromium.org>
Date: Tue Dec 18 14:41:55 2018

[Liftoff] Introduce SmallVector and use in some places

This CL introduces our own minimal SmallVector implementation and uses
it in several places (more might follow).
I measured that in the majority of cases, these vectors are quite small
(<= 8 elements), so we will avoid any heap allocation in those cases.

R=mstarzinger@chromium.org
CC=titzer@chromium.org

Bug: v8:8423
Change-Id: I93a26b3303a10fe1dc93186430e20333ea4970a8
Reviewed-on: https://chromium-review.googlesource.com/c/1378178
Commit-Queue: Clemens Hammacher <clemensh@chromium.org>
Reviewed-by: Andreas Haas <ahaas@chromium.org>
Cr-Commit-Position: refs/heads/master@{#58323}
[modify] https://crrev.com/d520e5f510ee7eb73fdeb79d35cc9f75e1889900/BUILD.gn
[add] https://crrev.com/d520e5f510ee7eb73fdeb79d35cc9f75e1889900/src/base/small-vector.h
[modify] https://crrev.com/d520e5f510ee7eb73fdeb79d35cc9f75e1889900/src/wasm/baseline/ia32/liftoff-assembler-ia32.h
[modify] https://crrev.com/d520e5f510ee7eb73fdeb79d35cc9f75e1889900/src/wasm/baseline/liftoff-assembler.cc
[modify] https://crrev.com/d520e5f510ee7eb73fdeb79d35cc9f75e1889900/src/wasm/baseline/liftoff-assembler.h

Comment 27 by bugdroid1@chromium.org, Dec 19

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

commit e95be4598ca2a50828d7946d83a64cdca51a07ef
Author: Clemens Hammacher <clemensh@chromium.org>
Date: Wed Dec 19 12:25:26 2018

[wasm] Avoid redundant {EndControl}

Many callers of {DoReturn} either already call {EndControl}, or pop
the control afterwards, hence we do not need to {EndControl}.
Hence only call {EndControl} when really needed.

R=herhut@chromium.org

Bug: v8:8423
Change-Id: Ie4e7b2dd6918cc0f9619a72d624014222f58a251
Reviewed-on: https://chromium-review.googlesource.com/c/1384085
Reviewed-by: Stephan Herhut <herhut@chromium.org>
Commit-Queue: Clemens Hammacher <clemensh@chromium.org>
Cr-Commit-Position: refs/heads/master@{#58359}
[modify] https://crrev.com/e95be4598ca2a50828d7946d83a64cdca51a07ef/src/wasm/function-body-decoder-impl.h

Comment 28 by bugdroid1@chromium.org, Dec 19

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

commit b534e00e38e56b6677dddef0f9559a90c2ab0f04
Author: Clemens Hammacher <clemensh@chromium.org>
Date: Wed Dec 19 15:55:39 2018

[wasm] Deprecate reachability tracking in SsaEnv

Reachability is already being tracked in the function body decoder.
This CL adds a DCHECK that the reachability tracked in the SsaEnv
matches the reachability tracked in the function body decoder. Most of
our methods will only be called for reachable code anyway.
For exceptions, we still track reachability explicitly for now in the
wasm graph builder, this can be refactored in the future by improving
reachability tracking for catch blocks in the function body decoder.

If this DCHECK survives fuzzing for a few days, we can remove code that
handles unreachable code in graph-building-interface.cc.

R=herhut@chromium.org

Bug: v8:8423,  v8:8611 
Change-Id: I0fb375c99497352aad396816566883fe234ca0ac
Reviewed-on: https://chromium-review.googlesource.com/c/1384089
Reviewed-by: Stephan Herhut <herhut@chromium.org>
Commit-Queue: Clemens Hammacher <clemensh@chromium.org>
Cr-Commit-Position: refs/heads/master@{#58368}
[modify] https://crrev.com/b534e00e38e56b6677dddef0f9559a90c2ab0f04/src/wasm/graph-builder-interface.cc

Comment 29 by bugdroid1@chromium.org, Dec 21

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

commit f62e8cde440cb651ba05030ba5642c6fd90af145
Author: Clemens Hammacher <clemensh@chromium.org>
Date: Fri Dec 21 09:28:45 2018

[wasm] Merge FallThruTo into PopControl

Since FallThruTo is often followed by PopControl, we can save a few
cache state copy operations in Liftoff by merging the two.
On epic workloads, this saves ~18% of Steal operations and ~22% of
Split operations.

R=herhut@chromium.org

Bug: v8:8423
Change-Id: I99900eaa49ae14ead6a0c08b69da2175730e077e
Reviewed-on: https://chromium-review.googlesource.com/c/1384093
Reviewed-by: Stephan Herhut <herhut@chromium.org>
Commit-Queue: Clemens Hammacher <clemensh@chromium.org>
Cr-Commit-Position: refs/heads/master@{#58420}
[modify] https://crrev.com/f62e8cde440cb651ba05030ba5642c6fd90af145/src/wasm/baseline/liftoff-compiler.cc
[modify] https://crrev.com/f62e8cde440cb651ba05030ba5642c6fd90af145/src/wasm/function-body-decoder-impl.h
[modify] https://crrev.com/f62e8cde440cb651ba05030ba5642c6fd90af145/src/wasm/graph-builder-interface.cc

Comment 30 by bugdroid1@chromium.org, Dec 21

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

commit 2c2a6bb0f84c43bc385fa55688b0125a945edeff
Author: Clemens Hammacher <clemensh@chromium.org>
Date: Fri Dec 21 12:17:15 2018

[Liftoff] Use SmallVector for storing cache state

This replaces another use of std::vector. Stack states (consisting of
locals plus operand stack) are also typically small, thus optimize for
those cases.
Using StackVector as part of CacheState requires the definition of move
constructors and copy constructors, plus a few other methods.

R=tebbi@chromium.org

Bug: v8:8423
Change-Id: I5d39c1ebc4d6d65e4849dd06c556114cd2cd36ff
Reviewed-on: https://chromium-review.googlesource.com/c/1380053
Commit-Queue: Clemens Hammacher <clemensh@chromium.org>
Reviewed-by: Tobias Tebbi <tebbi@chromium.org>
Cr-Commit-Position: refs/heads/master@{#58429}
[modify] https://crrev.com/2c2a6bb0f84c43bc385fa55688b0125a945edeff/src/base/small-vector.h
[modify] https://crrev.com/2c2a6bb0f84c43bc385fa55688b0125a945edeff/src/wasm/baseline/liftoff-assembler.cc
[modify] https://crrev.com/2c2a6bb0f84c43bc385fa55688b0125a945edeff/src/wasm/baseline/liftoff-assembler.h

Comment 31 by bugdroid1@chromium.org, Dec 21

Project Member
The following revision refers to this bug:
  https://chromium.googlesource.com/v8/v8.git/+/893ef74101432c39149db332b131c2b6b9ef6b9a

commit 893ef74101432c39149db332b131c2b6b9ef6b9a
Author: Clemens Hammacher <clemensh@chromium.org>
Date: Fri Dec 21 13:18:46 2018

[Liftoff] Improve merge state initialization

Before computing the merge state, compute the list of free registers.
This list is used when we need a register for ensuring single register
use. It avoids picking a register which is in use by a not-yet-visited
merge slot, which would then have to be moved to another register or to
the stack.

On epic, this saves ~10.5% generated code size in Liftoff.

R=herhut@chromium.org

Bug: v8:8423
Change-Id: If9fac24abbfe2273bf18d9cb287c7c05a59b2118
Reviewed-on: https://chromium-review.googlesource.com/c/1387488
Commit-Queue: Clemens Hammacher <clemensh@chromium.org>
Reviewed-by: Stephan Herhut <herhut@chromium.org>
Cr-Commit-Position: refs/heads/master@{#58435}
[modify] https://crrev.com/893ef74101432c39149db332b131c2b6b9ef6b9a/src/wasm/baseline/liftoff-assembler.cc
[modify] https://crrev.com/893ef74101432c39149db332b131c2b6b9ef6b9a/src/wasm/baseline/liftoff-register.h

Comment 32 by bugdroid1@chromium.org, Dec 27

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

commit c430bd1c4ee359457c302c50ff665255a5a3cee1
Author: Clemens Hammacher <clemensh@chromium.org>
Date: Thu Dec 27 15:02:50 2018

[compiler] Avoid creating redundant register moves

They will later be detected as redundant again, but we can save memory
and performance by just not adding them in the first place.

R=mvstanton@chromium.org

Bug: v8:8423
Change-Id: I11d88642333681612e2f8f4eaee7ba700cbf64d5
Reviewed-on: https://chromium-review.googlesource.com/c/1390132
Reviewed-by: Michael Stanton <mvstanton@chromium.org>
Commit-Queue: Clemens Hammacher <clemensh@chromium.org>
Cr-Commit-Position: refs/heads/master@{#58479}
[modify] https://crrev.com/c430bd1c4ee359457c302c50ff665255a5a3cee1/src/compiler/backend/instruction.h
[modify] https://crrev.com/c430bd1c4ee359457c302c50ff665255a5a3cee1/src/compiler/backend/register-allocator.cc

Comment 33 by bugdroid1@chromium.org, Dec 28

Project Member
The following revision refers to this bug:
  https://chromium.googlesource.com/v8/v8.git/+/65da8bf06d0d3d3a46b1505b550ff9012b5f6f26

commit 65da8bf06d0d3d3a46b1505b550ff9012b5f6f26
Author: Clemens Hammacher <clemensh@chromium.org>
Date: Fri Dec 28 09:29:53 2018

[wasm] Inline Pop methods for performance

This improves validation time by 7-8% and Liftoff compilation time by
2-3% while increasing binary size by ~12kB.

R=mvstanton@chromium.org

Bug: v8:8423
Change-Id: I08961097fb61f4a218522138efe51a9165a7c62b
Reviewed-on: https://chromium-review.googlesource.com/c/1391748
Reviewed-by: Michael Stanton <mvstanton@chromium.org>
Commit-Queue: Clemens Hammacher <clemensh@chromium.org>
Cr-Commit-Position: refs/heads/master@{#58486}
[modify] https://crrev.com/65da8bf06d0d3d3a46b1505b550ff9012b5f6f26/src/wasm/function-body-decoder-impl.h

Comment 34 by bugdroid1@chromium.org, Jan 3

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

commit 20b633003795e54e03da436c0f806621d2cbeba6
Author: Clemens Hammacher <clemensh@chromium.org>
Date: Thu Jan 03 14:37:48 2019

[Liftoff] Keep consistent register mapping in non-merged regions

We currently de-duplicate used registers also in regions which do not
need merging. In those regions though it can never happen that we need
to pass different values from any merge input. Apart from introducing
unnecessary register moves, this also causes a DCHECK to fail, because
we might later want to merge back different registers into one.

Assume this initial stack state (where each letter is a register):
[A B B C]
If in any child block the two Bs get de-duplicated so something like
[A B D C]
then we run into trouble when merging back this state into the parent
state, because both B and D would need to be put into B.
In this case we can statically infer that B and D must hold the same
value anyway, but having this situation does not make much sense in the
first place, so the DCHECK fires correctly.

R=titzer@chromium.org

Bug: v8:8423, chromium:917412
Change-Id: I24c36b062e04a134cf7051725afab98126753f31
Reviewed-on: https://chromium-review.googlesource.com/c/1392190
Commit-Queue: Clemens Hammacher <clemensh@chromium.org>
Reviewed-by: Andreas Haas <ahaas@chromium.org>
Cr-Commit-Position: refs/heads/master@{#58522}
[modify] https://crrev.com/20b633003795e54e03da436c0f806621d2cbeba6/src/wasm/baseline/liftoff-assembler.cc
[modify] https://crrev.com/20b633003795e54e03da436c0f806621d2cbeba6/src/wasm/baseline/liftoff-register.h
[add] https://crrev.com/20b633003795e54e03da436c0f806621d2cbeba6/test/mjsunit/regress/wasm/regress-917412.js

Comment 35 by bugdroid1@chromium.org, Jan 4

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

commit f5e1353f060df1e1f07d4a5a87ba61cea385dce2
Author: Clemens Hammacher <clemensh@chromium.org>
Date: Fri Jan 04 12:25:31 2019

[wasm] Finish compilation units from background

"Finishing" currently only means decrementing a counter and notifying
users via the callback if baseline compilation or tier-up finished.
We can totally do this from background, if we spawn foreground tasks to
actually call the callback.

R=ahaas@chromium.org

Bug:  v8:7921 , v8:8423
Change-Id: I815964d07a4d9111248097c41ebbd650842304c3
Cq-Include-Trybots: luci.v8.try:v8_linux64_tsan_rel
Reviewed-on: https://chromium-review.googlesource.com/c/1375662
Reviewed-by: Andreas Haas <ahaas@chromium.org>
Commit-Queue: Clemens Hammacher <clemensh@chromium.org>
Cr-Commit-Position: refs/heads/master@{#58547}
[modify] https://crrev.com/f5e1353f060df1e1f07d4a5a87ba61cea385dce2/src/utils.h
[modify] https://crrev.com/f5e1353f060df1e1f07d4a5a87ba61cea385dce2/src/wasm/module-compiler.cc

Comment 36 by bugdroid1@chromium.org, Jan 7

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

commit b962c071079b195f09009e8d01e25846d9f2a078
Author: Clemens Hammacher <clemensh@chromium.org>
Date: Mon Jan 07 10:58:31 2019

[Liftoff] Restructure execution of stack transfers

This is a fully semantically preserving CL, it just moves code around a
bit to make the follow-up CL easier to review.

R=ahaas@chromium.org

Bug: v8:6600, v8:8423
Change-Id: I0de80b18faa3ae570894cbd8073c495a5731d255
Reviewed-on: https://chromium-review.googlesource.com/c/1396096
Reviewed-by: Andreas Haas <ahaas@chromium.org>
Commit-Queue: Clemens Hammacher <clemensh@chromium.org>
Cr-Commit-Position: refs/heads/master@{#58569}
[modify] https://crrev.com/b962c071079b195f09009e8d01e25846d9f2a078/src/wasm/baseline/liftoff-assembler.cc

Comment 37 by bugdroid1@chromium.org, Jan 7

Project Member
The following revision refers to this bug:
  https://chromium.googlesource.com/v8/v8.git/+/96671ab2e0c64c1c02b361d8c327bdea8655f8b1

commit 96671ab2e0c64c1c02b361d8c327bdea8655f8b1
Author: Clemens Hammacher <clemensh@chromium.org>
Date: Mon Jan 07 13:38:33 2019

[Liftoff] Change the way we store stack transfers

Stack transfers consist of a number of register moves plus a number of
register loads. We currently store both in separate vectors. This CL
changes that to be stored in arrays indexed by the destination register
(such that it behaves like a map). This avoids any dynamically growing
structures.

Measured locally, this speeds up stack transfer processing by ~10%,
which translates to ~0.5% of overall Liftoff compilation time.

R=ahaas@chromium.org

Bug: v8:6600, v8:8423
Change-Id: Id532960dcc12f228507ed75e392ad4c57710593f
Reviewed-on: https://chromium-review.googlesource.com/c/1396278
Commit-Queue: Clemens Hammacher <clemensh@chromium.org>
Reviewed-by: Andreas Haas <ahaas@chromium.org>
Cr-Commit-Position: refs/heads/master@{#58587}
[modify] https://crrev.com/96671ab2e0c64c1c02b361d8c327bdea8655f8b1/src/wasm/baseline/liftoff-assembler.cc
[modify] https://crrev.com/96671ab2e0c64c1c02b361d8c327bdea8655f8b1/src/wasm/baseline/liftoff-register.h

Comment 38 by bugdroid1@chromium.org, Jan 7

Project Member
The following revision refers to this bug:
  https://chromium.googlesource.com/v8/v8.git/+/23a85a3326efaf704b79a5f03319ca0ffd24eb74

commit 23a85a3326efaf704b79a5f03319ca0ffd24eb74
Author: Clemens Hammacher <clemensh@chromium.org>
Date: Mon Jan 07 14:23:39 2019

[Liftoff] Avoid quadratic behaviour in stack transfers

We currently iterate the list of unexecuted register moves repeatedly,
always executing the moves whose destination register is not being used
as source register any more. This can lead to quadratic execution times
if only a small number of moves is processed in every iteration.

This CL refactors this such that we iterate the moves at most three
times: Once for executing moves which can be executed right away (fast
path) and for computing the source register use counts. A second time
to execute all remaining non-cyclic moves, and a third time to execute
cyclic moves.
During the second and third iteration, whenever we decrement the source
register use count, we check whether it drops to zero and execute the
respective move right away.

R=ahaas@chromium.org

Bug: v8:6600, v8:8423
Change-Id: I503328f5ae5f0208e35d53c71b4c289d75799892
Reviewed-on: https://chromium-review.googlesource.com/c/1397703
Commit-Queue: Clemens Hammacher <clemensh@chromium.org>
Reviewed-by: Andreas Haas <ahaas@chromium.org>
Cr-Commit-Position: refs/heads/master@{#58588}
[modify] https://crrev.com/23a85a3326efaf704b79a5f03319ca0ffd24eb74/src/wasm/baseline/liftoff-assembler.cc

Comment 39 by bugdroid1@chromium.org, Jan 8

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

commit afa95fb4e40345d33efc40cd2857d93ff6f10928
Author: Clemens Hammacher <clemensh@chromium.org>
Date: Tue Jan 08 08:04:33 2019

[Liftoff] Avoid redundant reg list in register moves

We currently hold the register list for {move_src_regs_} in the
{StackTransferRecipe} class, and only compute src use counts for
executing the moves. Since the use counts and the register list are
redundant, just compute the use counts right away, and get rid of the
register list.
This saves one iteration of the register list in {ExecuteMoves}.

R=ahaas@chromium.org

Bug: v8:6600, v8:8423
Change-Id: I832fb0d1c1d3afe536289162a81a49b73313e7f4
Reviewed-on: https://chromium-review.googlesource.com/c/1397670
Commit-Queue: Clemens Hammacher <clemensh@chromium.org>
Reviewed-by: Andreas Haas <ahaas@chromium.org>
Cr-Commit-Position: refs/heads/master@{#58611}
[modify] https://crrev.com/afa95fb4e40345d33efc40cd2857d93ff6f10928/src/wasm/baseline/liftoff-assembler.cc

Comment 40 by bugdroid1@chromium.org, Jan 8

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

commit ac2fb66b65053d1cac5d1bb430261979f4017f60
Author: Clemens Hammacher <clemensh@chromium.org>
Date: Tue Jan 08 13:24:57 2019

[wasm] Remove finisher task

This removes the finisher task and instead finishes compilation units
from the background.
It also changes ownership of the AsyncCompileJob to be shared among all
tasks that still operate on it. The AsyncCompileJob dies when the last
reference dies.

R=ahaas@chromium.org
CC=​​mstarzinger@chromium.org

Bug:  v8:7921 , v8:8423
Change-Id: Id09378327dfc146459ef41bc97176a8716756ae4
Cq-Include-Trybots: luci.v8.try:v8_linux64_tsan_rel
Reviewed-on: https://chromium-review.googlesource.com/c/1335553
Reviewed-by: Andreas Haas <ahaas@chromium.org>
Commit-Queue: Clemens Hammacher <clemensh@chromium.org>
Cr-Commit-Position: refs/heads/master@{#58630}
[modify] https://crrev.com/ac2fb66b65053d1cac5d1bb430261979f4017f60/src/api.cc
[modify] https://crrev.com/ac2fb66b65053d1cac5d1bb430261979f4017f60/src/isolate.cc
[modify] https://crrev.com/ac2fb66b65053d1cac5d1bb430261979f4017f60/src/wasm/compilation-environment.h
[modify] https://crrev.com/ac2fb66b65053d1cac5d1bb430261979f4017f60/src/wasm/module-compiler.cc
[modify] https://crrev.com/ac2fb66b65053d1cac5d1bb430261979f4017f60/src/wasm/module-compiler.h
[modify] https://crrev.com/ac2fb66b65053d1cac5d1bb430261979f4017f60/src/wasm/streaming-decoder.cc
[modify] https://crrev.com/ac2fb66b65053d1cac5d1bb430261979f4017f60/src/wasm/wasm-code-manager.cc
[modify] https://crrev.com/ac2fb66b65053d1cac5d1bb430261979f4017f60/src/wasm/wasm-engine.cc
[modify] https://crrev.com/ac2fb66b65053d1cac5d1bb430261979f4017f60/src/wasm/wasm-engine.h

Comment 41 by bugdroid1@chromium.org, Jan 8

Project Member
The following revision refers to this bug:
  https://chromium.googlesource.com/v8/v8.git/+/58ca5638603815906d09c87ef12d91749bfc29ea

commit 58ca5638603815906d09c87ef12d91749bfc29ea
Author: Michael Achenbach <machenbach@chromium.org>
Date: Tue Jan 08 13:58:12 2019

Revert "[wasm] Remove finisher task"

This reverts commit ac2fb66b65053d1cac5d1bb430261979f4017f60.

Reason for revert: Flakily crashes on several bots:
https://ci.chromium.org/p/v8/builders/luci.v8.ci/V8%20Win32/18524
https://ci.chromium.org/p/v8/builders/luci.v8.ci/V8%20Win64%20-%20msvc/6824
https://ci.chromium.org/p/v8/builders/luci.v8.ci/V8%20Linux64%20-%20internal%20snapshot/19766

Original change's description:
> [wasm] Remove finisher task
> 
> This removes the finisher task and instead finishes compilation units
> from the background.
> It also changes ownership of the AsyncCompileJob to be shared among all
> tasks that still operate on it. The AsyncCompileJob dies when the last
> reference dies.
> 
> R=​ahaas@chromium.org
> CC=​​​mstarzinger@chromium.org
> 
> Bug:  v8:7921 , v8:8423
> Change-Id: Id09378327dfc146459ef41bc97176a8716756ae4
> Cq-Include-Trybots: luci.v8.try:v8_linux64_tsan_rel
> Reviewed-on: https://chromium-review.googlesource.com/c/1335553
> Reviewed-by: Andreas Haas <ahaas@chromium.org>
> Commit-Queue: Clemens Hammacher <clemensh@chromium.org>
> Cr-Commit-Position: refs/heads/master@{#58630}

TBR=ahaas@chromium.org,clemensh@chromium.org

Change-Id: I6b332b66adaec8f713fb31f4c8517cae7ebb4645
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Bug:  v8:7921 , v8:8423
Cq-Include-Trybots: luci.v8.try:v8_linux64_tsan_rel
Reviewed-on: https://chromium-review.googlesource.com/c/1400420
Reviewed-by: Michael Achenbach <machenbach@chromium.org>
Commit-Queue: Michael Achenbach <machenbach@chromium.org>
Cr-Commit-Position: refs/heads/master@{#58634}
[modify] https://crrev.com/58ca5638603815906d09c87ef12d91749bfc29ea/src/api.cc
[modify] https://crrev.com/58ca5638603815906d09c87ef12d91749bfc29ea/src/isolate.cc
[modify] https://crrev.com/58ca5638603815906d09c87ef12d91749bfc29ea/src/wasm/compilation-environment.h
[modify] https://crrev.com/58ca5638603815906d09c87ef12d91749bfc29ea/src/wasm/module-compiler.cc
[modify] https://crrev.com/58ca5638603815906d09c87ef12d91749bfc29ea/src/wasm/module-compiler.h
[modify] https://crrev.com/58ca5638603815906d09c87ef12d91749bfc29ea/src/wasm/streaming-decoder.cc
[modify] https://crrev.com/58ca5638603815906d09c87ef12d91749bfc29ea/src/wasm/wasm-code-manager.cc
[modify] https://crrev.com/58ca5638603815906d09c87ef12d91749bfc29ea/src/wasm/wasm-engine.cc
[modify] https://crrev.com/58ca5638603815906d09c87ef12d91749bfc29ea/src/wasm/wasm-engine.h

Comment 42 by bugdroid1@chromium.org, Jan 8

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

commit d953d9fb2449d16012ddaf14296e247133cba7f8
Author: Clemens Hammacher <clemensh@chromium.org>
Date: Tue Jan 08 17:50:40 2019

[compiler] Add fast path for simple parallel moves

Most parallel moves do not actually require the heavy analysis in the
GapResolver since there is no overlap between source and destination
registers. Handle some of these cases by a fast-path to avoid the
quadratic behaviour in the general case.
The fast path is taken for about 2/3 of the non-empty parallel moves on
wasm workloads.

R=herhut@chromium.org, titzer@chromium.org

Bug: v8:8423
Change-Id: I026256fd6cf268f176fccc97f0f427e07629aeb3
Reviewed-on: https://chromium-review.googlesource.com/c/1400410
Commit-Queue: Clemens Hammacher <clemensh@chromium.org>
Reviewed-by: Stephan Herhut <herhut@chromium.org>
Reviewed-by: Ben Titzer <titzer@chromium.org>
Cr-Commit-Position: refs/heads/master@{#58644}
[modify] https://crrev.com/d953d9fb2449d16012ddaf14296e247133cba7f8/src/compiler/backend/gap-resolver.cc
[modify] https://crrev.com/d953d9fb2449d16012ddaf14296e247133cba7f8/src/utils.h

Comment 43 by bugdroid1@chromium.org, Jan 9

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

commit c26b4977d6d4b91d8cd88402d3f98ce4597e2e70
Author: Clemens Hammacher <clemensh@chromium.org>
Date: Wed Jan 09 11:01:15 2019

[wasm] Create runtime objects later

For compilation we only need the NativeModule. Thus only create this
before compilation, create other runtime objects later.
This is a first step towards removing the deferred handles and
clustering all foreground work in one chunk after compilation.

R=ahaas@chromium.org

Bug:  v8:7921 , v8:8423
Change-Id: If62387d68ddf0f5e067adbaef5fbeca7178958a4
Reviewed-on: https://chromium-review.googlesource.com/c/1402544
Reviewed-by: Andreas Haas <ahaas@chromium.org>
Commit-Queue: Clemens Hammacher <clemensh@chromium.org>
Cr-Commit-Position: refs/heads/master@{#58656}
[modify] https://crrev.com/c26b4977d6d4b91d8cd88402d3f98ce4597e2e70/src/wasm/module-compiler.cc
[modify] https://crrev.com/c26b4977d6d4b91d8cd88402d3f98ce4597e2e70/src/wasm/module-compiler.h

Comment 44 by bugdroid1@chromium.org, Jan 9

Project Member
The following revision refers to this bug:
  https://chromium.googlesource.com/v8/v8.git/+/556ef4c387a31bed3fa3b530767592e8e8ab3109

commit 556ef4c387a31bed3fa3b530767592e8e8ab3109
Author: Clemens Hammacher <clemensh@chromium.org>
Date: Wed Jan 09 12:12:50 2019

[wasm] Inline CompileFailed step

The {CompileFailed} just calls {AsyncCompileFailed}, which also does
not do much. Thus just inline directly call a function instead of
spawning a foreground task. This saves one instance of DeferredHandles.

R=ahaas@chromium.org

Bug:  v8:7921 , v8:8423
Change-Id: Ia8fb72a3ce2efd1f9a069c1a3b0b670b15fd8bce
Reviewed-on: https://chromium-review.googlesource.com/c/1402714
Reviewed-by: Andreas Haas <ahaas@chromium.org>
Commit-Queue: Clemens Hammacher <clemensh@chromium.org>
Cr-Commit-Position: refs/heads/master@{#58662}
[modify] https://crrev.com/556ef4c387a31bed3fa3b530767592e8e8ab3109/src/wasm/module-compiler.cc
[modify] https://crrev.com/556ef4c387a31bed3fa3b530767592e8e8ab3109/src/wasm/module-compiler.h

Comment 45 by bugdroid1@chromium.org, Jan 9

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

commit 3c99ee28d3ebe455363fb14423ee6b556a7ba211
Author: Clemens Hammacher <clemensh@chromium.org>
Date: Wed Jan 09 12:37:38 2019

Revert "[wasm] Inline CompileFailed step"

This reverts commit 556ef4c387a31bed3fa3b530767592e8e8ab3109.

Reason for revert: Seems to cause hangs in tests.

Original change's description:
> [wasm] Inline CompileFailed step
> 
> The {CompileFailed} just calls {AsyncCompileFailed}, which also does
> not do much. Thus just inline directly call a function instead of
> spawning a foreground task. This saves one instance of DeferredHandles.
> 
> R=​ahaas@chromium.org
> 
> Bug:  v8:7921 , v8:8423
> Change-Id: Ia8fb72a3ce2efd1f9a069c1a3b0b670b15fd8bce
> Reviewed-on: https://chromium-review.googlesource.com/c/1402714
> Reviewed-by: Andreas Haas <ahaas@chromium.org>
> Commit-Queue: Clemens Hammacher <clemensh@chromium.org>
> Cr-Commit-Position: refs/heads/master@{#58662}

TBR=ahaas@chromium.org,clemensh@chromium.org

Change-Id: I3430fb304b8df72b93330d104c09b0a144bbd069
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Bug:  v8:7921 , v8:8423
Reviewed-on: https://chromium-review.googlesource.com/c/1402786
Reviewed-by: Clemens Hammacher <clemensh@chromium.org>
Commit-Queue: Clemens Hammacher <clemensh@chromium.org>
Cr-Commit-Position: refs/heads/master@{#58663}
[modify] https://crrev.com/3c99ee28d3ebe455363fb14423ee6b556a7ba211/src/wasm/module-compiler.cc
[modify] https://crrev.com/3c99ee28d3ebe455363fb14423ee6b556a7ba211/src/wasm/module-compiler.h

Comment 46 by bugdroid1@chromium.org, Jan 9

Project Member
The following revision refers to this bug:
  https://chromium.googlesource.com/v8/v8.git/+/01f824c1767842aa3ccd9166a3ab2feb05266bc4

commit 01f824c1767842aa3ccd9166a3ab2feb05266bc4
Author: Clemens Hammacher <clemensh@chromium.org>
Date: Wed Jan 09 16:17:29 2019

[wasm] Merge foreground work after compilation

Instead of spawning several foreground tasks, execute the work in a
single chunk.
This will allow us in a follow-up step to remove the deferred handle
scope and pass the handles directly.

R=ahaas@chromium.org

Bug:  v8:7921 , v8:8423
Change-Id: I4dae6241e2a33e89e304a04cb67c2229c34f7b99
Reviewed-on: https://chromium-review.googlesource.com/c/1402545
Commit-Queue: Clemens Hammacher <clemensh@chromium.org>
Reviewed-by: Andreas Haas <ahaas@chromium.org>
Cr-Commit-Position: refs/heads/master@{#58677}
[modify] https://crrev.com/01f824c1767842aa3ccd9166a3ab2feb05266bc4/src/wasm/module-compiler.cc
[modify] https://crrev.com/01f824c1767842aa3ccd9166a3ab2feb05266bc4/src/wasm/module-compiler.h

Comment 47 by bugdroid1@chromium.org, Jan 17

Project Member
The following revision refers to this bug:
  https://chromium.googlesource.com/v8/v8.git/+/314da8eed28e25758981c09bb8c81d3b53692ad4

commit 314da8eed28e25758981c09bb8c81d3b53692ad4
Author: Clemens Hammacher <clemensh@chromium.org>
Date: Thu Jan 17 09:32:40 2019

[wasm] Remove reachability checks from TF backend

The function body decoder already tracks reachability and only calls
the backend for reachable code. Thus the checks in the TF backend can
be skipped.
Note that there was already a DCHECK in place that checks whether
{SsaEnv::reached()} always returns true. This was to give fuzzers a
chance to prove the reachability analysis in the function body decoder
wrong. Since this did not happen, we can not remove the {reached()}
method from SsaEnv, since it always returned true anyway.

R=titzer@chromium.org

Bug: v8:8423,  v8:8611 
Change-Id: I2336aa7a092e381e3d94d87051b6e14db0dbab99
Reviewed-on: https://chromium-review.googlesource.com/c/1415493
Reviewed-by: Ben Titzer <titzer@chromium.org>
Commit-Queue: Clemens Hammacher <clemensh@chromium.org>
Cr-Commit-Position: refs/heads/master@{#58871}
[modify] https://crrev.com/314da8eed28e25758981c09bb8c81d3b53692ad4/src/wasm/graph-builder-interface.cc

Comment 48 by bugdroid, Jan 31

Project Member
The following revision refers to this bug:
  https://chromium.googlesource.com/v8/v8.git/+/889730afda6edde6e1dc506edadfd47ab9962a56

commit 889730afda6edde6e1dc506edadfd47ab9962a56
Author: Clemens Hammacher <clemensh@chromium.org>
Date: Thu Jan 31 17:10:20 2019

[wasm] Inline single-use CompileFailed step

This factors out one part of the "Remove finisher task" CL
(https://crrev.com/c/1400781), which I would like to test in isolation.

R=ahaas@chromium.org

Bug: v8:8423
Change-Id: I7c598f60c4757df8e26508e68da4b3c300a511cb
Reviewed-on: https://chromium-review.googlesource.com/c/1448316
Reviewed-by: Andreas Haas <ahaas@chromium.org>
Commit-Queue: Clemens Hammacher <clemensh@chromium.org>
Cr-Commit-Position: refs/heads/master@{#59256}
[modify] https://crrev.com/889730afda6edde6e1dc506edadfd47ab9962a56/src/wasm/module-compiler.cc
[modify] https://crrev.com/889730afda6edde6e1dc506edadfd47ab9962a56/src/wasm/module-compiler.h

Comment 49 by bugdroid, Feb 1

Project Member
The following revision refers to this bug:
  https://chromium.googlesource.com/v8/v8.git/+/84f17076b10fafb56a5fea2d92f838398d450be4

commit 84f17076b10fafb56a5fea2d92f838398d450be4
Author: Clemens Hammacher <clemensh@chromium.org>
Date: Fri Feb 01 16:48:40 2019

Reland "[wasm] Remove finisher task"

This is a reland of ac2fb66b65053d1cac5d1bb430261979f4017f60.
Crashes were fixed in https://crrev.com/c/1429862.

Original change's description:
> [wasm] Remove finisher task
>
> This removes the finisher task and instead finishes compilation units
> from the background.
> It also changes ownership of the AsyncCompileJob to be shared among all
> tasks that still operate on it. The AsyncCompileJob dies when the last
> reference dies.
>
> R=ahaas@chromium.org
> CC=​​mstarzinger@chromium.org
>
> Bug:  v8:7921 , v8:8423
> Change-Id: Id09378327dfc146459ef41bc97176a8716756ae4
> Cq-Include-Trybots: luci.v8.try:v8_linux64_tsan_rel
> Reviewed-on: https://chromium-review.googlesource.com/c/1335553
> Reviewed-by: Andreas Haas <ahaas@chromium.org>
> Commit-Queue: Clemens Hammacher <clemensh@chromium.org>
> Cr-Commit-Position: refs/heads/master@{#58630}

Bug:  v8:7921 , v8:8423
Change-Id: I3dcee4e8e56d2a524d302af91b5cb4a7a9ceb8ce
Cq-Include-Trybots: luci.v8.try:v8_linux64_tsan_rel
Reviewed-on: https://chromium-review.googlesource.com/c/1400781
Commit-Queue: Clemens Hammacher <clemensh@chromium.org>
Reviewed-by: Andreas Haas <ahaas@chromium.org>
Cr-Commit-Position: refs/heads/master@{#59302}
[modify] https://crrev.com/84f17076b10fafb56a5fea2d92f838398d450be4/src/wasm/compilation-environment.h
[modify] https://crrev.com/84f17076b10fafb56a5fea2d92f838398d450be4/src/wasm/module-compiler.cc
[modify] https://crrev.com/84f17076b10fafb56a5fea2d92f838398d450be4/src/wasm/module-compiler.h
[modify] https://crrev.com/84f17076b10fafb56a5fea2d92f838398d450be4/src/wasm/wasm-code-manager.cc
[modify] https://crrev.com/84f17076b10fafb56a5fea2d92f838398d450be4/src/wasm/wasm-engine.cc
[modify] https://crrev.com/84f17076b10fafb56a5fea2d92f838398d450be4/src/wasm/wasm-engine.h

Comment 50 by bugdroid, Feb 4

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

commit 8a91484619f4aeec72fec049f817ea86342b80f4
Author: Clemens Hammacher <clemensh@chromium.org>
Date: Mon Feb 04 11:32:59 2019

[wasm] Turn deferred handles into global handles

Each instance of {DeferredHandles} only stores a single handle anyway,
so turning them into global handles saves memory.

R=ahaas@chromium.org

Bug:  v8:7921 , v8:8423
Change-Id: I75e0cc6ecb6d0337f1695e6bfd4b5fdcb8a2039c
Reviewed-on: https://chromium-review.googlesource.com/c/1402715
Commit-Queue: Clemens Hammacher <clemensh@chromium.org>
Reviewed-by: Andreas Haas <ahaas@chromium.org>
Cr-Commit-Position: refs/heads/master@{#59331}
[modify] https://crrev.com/8a91484619f4aeec72fec049f817ea86342b80f4/src/wasm/module-compiler.cc
[modify] https://crrev.com/8a91484619f4aeec72fec049f817ea86342b80f4/src/wasm/module-compiler.h

Comment 51 by bugdroid, Feb 4

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

commit e85876067798a6b58f2c012598a500d601bfd082
Author: Clemens Hammacher <clemensh@chromium.org>
Date: Mon Feb 04 14:28:30 2019

Revert "[wasm] Turn deferred handles into global handles"

This reverts commit 8a91484619f4aeec72fec049f817ea86342b80f4.

Reason for revert: Seems to cause layout test failures: https://ci.chromium.org/p/v8/builders/luci.v8.ci/V8-Blink%2520Mac/16246

Original change's description:
> [wasm] Turn deferred handles into global handles
> 
> Each instance of {DeferredHandles} only stores a single handle anyway,
> so turning them into global handles saves memory.
> 
> R=​ahaas@chromium.org
> 
> Bug:  v8:7921 , v8:8423
> Change-Id: I75e0cc6ecb6d0337f1695e6bfd4b5fdcb8a2039c
> Reviewed-on: https://chromium-review.googlesource.com/c/1402715
> Commit-Queue: Clemens Hammacher <clemensh@chromium.org>
> Reviewed-by: Andreas Haas <ahaas@chromium.org>
> Cr-Commit-Position: refs/heads/master@{#59331}

TBR=ahaas@chromium.org,clemensh@chromium.org

Change-Id: I8996fd22702b5dd0485e59b54989788596293a1f
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Bug:  v8:7921 , v8:8423
Reviewed-on: https://chromium-review.googlesource.com/c/1451888
Reviewed-by: Clemens Hammacher <clemensh@chromium.org>
Commit-Queue: Clemens Hammacher <clemensh@chromium.org>
Cr-Commit-Position: refs/heads/master@{#59342}
[modify] https://crrev.com/e85876067798a6b58f2c012598a500d601bfd082/src/wasm/module-compiler.cc
[modify] https://crrev.com/e85876067798a6b58f2c012598a500d601bfd082/src/wasm/module-compiler.h

Comment 52 by bugdroid, Feb 5

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

commit 61a758c11fb94fddf8117c85a69325447ca17bb6
Author: Clemens Hammacher <clemensh@chromium.org>
Date: Tue Feb 05 12:31:21 2019

Reland "[wasm] Turn deferred handles into global handles"

This is a reland of 8a91484619f4aeec72fec049f817ea86342b80f4.
No modifications, this CL was not the culprit.

Original change's description:
> [wasm] Turn deferred handles into global handles
>
> Each instance of {DeferredHandles} only stores a single handle anyway,
> so turning them into global handles saves memory.
>
> R=ahaas@chromium.org
>
> Bug:  v8:7921 , v8:8423
> Change-Id: I75e0cc6ecb6d0337f1695e6bfd4b5fdcb8a2039c
> Reviewed-on: https://chromium-review.googlesource.com/c/1402715
> Commit-Queue: Clemens Hammacher <clemensh@chromium.org>
> Reviewed-by: Andreas Haas <ahaas@chromium.org>
> Cr-Commit-Position: refs/heads/master@{#59331}

Bug:  v8:7921 , v8:8423
Tbr: ahaas@chromium.org
Change-Id: I9111eb6405c2624779b9eaa65353ab5f438e9daf
Reviewed-on: https://chromium-review.googlesource.com/c/1451930
Reviewed-by: Clemens Hammacher <clemensh@chromium.org>
Commit-Queue: Clemens Hammacher <clemensh@chromium.org>
Cr-Commit-Position: refs/heads/master@{#59363}
[modify] https://crrev.com/61a758c11fb94fddf8117c85a69325447ca17bb6/src/wasm/module-compiler.cc
[modify] https://crrev.com/61a758c11fb94fddf8117c85a69325447ca17bb6/src/wasm/module-compiler.h

Sign in to add a comment