Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(270)

Issue 1399423002: [turbofan] Introduce node regions for protection from scheduling. (Closed)

Created:
5 years, 2 months ago by Jarin
Modified:
5 years, 2 months ago
CC:
v8-reviews_googlegroups.com, Michael Starzinger
Base URL:
https://chromium.googlesource.com/v8/v8.git@master
Target Ref:
refs/pending/heads/master
Project:
v8
Visibility:
Public.

Description

[turbofan] Introduce node regions for protection from scheduling. This CL re-purposes ValueEffect and Finish as delimiters for regions that are scheduled atomically (renamed to BeginRegion, FinishRegion). The BeginRegion node takes and produces an effect. For the uses that do not care about the placement in the effect chain, it is ok to feed graph->start() as an effect input. The FinishRegion takes a value and an effect and produces a value and an effect. It is important that any value or effect produced inside the region is not used outside the region. The FinishRegion node is the only way to smuggle an effect and a value out. At the moment, this does not support control flow inside the region. Control flow would be hard. During scheduling we do some sanity check, but the checks are not exhaustive. Here is what we check: - the effect chain between begin and finish is linear (no splitting, single effect input and output). - any value produced is consumed by the FinishRegion node. - no control flow outputs. Committed: https://crrev.com/59c616ccd7f9d707f6129c5f726aa652e7bc5f22 Cr-Commit-Position: refs/heads/master@{#31265}

Patch Set 1 #

Patch Set 2 : No control output inside the region check #

Patch Set 3 : Tweaks #

Total comments: 11

Patch Set 4 : Address review comments. #

Total comments: 2

Patch Set 5 : Move RelaxControls #

Unified diffs Side-by-side diffs Delta from patch set Stats (+157 lines, -126 lines) Patch
M src/compiler/change-lowering.cc View 2 chunks +2 lines, -2 lines 0 comments Download
M src/compiler/common-operator.h View 1 chunk +2 lines, -2 lines 0 comments Download
M src/compiler/common-operator.cc View 1 2 3 2 chunks +3 lines, -19 lines 0 comments Download
M src/compiler/instruction-selector.h View 1 chunk +1 line, -1 line 0 comments Download
M src/compiler/instruction-selector.cc View 2 chunks +4 lines, -3 lines 0 comments Download
M src/compiler/js-typed-lowering.cc View 1 2 3 4 5 chunks +14 lines, -23 lines 0 comments Download
M src/compiler/opcodes.h View 1 chunk +2 lines, -2 lines 0 comments Download
M src/compiler/scheduler.cc View 1 2 2 chunks +30 lines, -0 lines 0 comments Download
M src/compiler/typer.cc View 1 chunk +2 lines, -2 lines 0 comments Download
M src/compiler/verifier.cc View 1 chunk +2 lines, -2 lines 0 comments Download
M test/unittests/compiler/change-lowering-unittest.cc View 4 chunks +30 lines, -26 lines 0 comments Download
M test/unittests/compiler/common-operator-unittest.cc View 1 chunk +15 lines, -19 lines 0 comments Download
M test/unittests/compiler/instruction-selector-unittest.cc View 2 chunks +7 lines, -5 lines 0 comments Download
M test/unittests/compiler/js-typed-lowering-unittest.cc View 1 2 3 2 chunks +8 lines, -8 lines 0 comments Download
M test/unittests/compiler/node-test-utils.h View 1 chunk +3 lines, -3 lines 0 comments Download
M test/unittests/compiler/node-test-utils.cc View 2 chunks +32 lines, -9 lines 0 comments Download

Messages

Total messages: 15 (6 generated)
Jarin
Could you take a look, please?
5 years, 2 months ago (2015-10-13 14:15:28 UTC) #2
Benedikt Meurer
Adding Michi as reviewer for JSTypedLowering. https://codereview.chromium.org/1399423002/diff/40001/src/compiler/common-operator.cc File src/compiler/common-operator.cc (right): https://codereview.chromium.org/1399423002/diff/40001/src/compiler/common-operator.cc#newcode681 src/compiler/common-operator.cc:681: const Operator* CommonOperatorBuilder::BeginRegion() ...
5 years, 2 months ago (2015-10-13 19:12:10 UTC) #5
Jarin
Addressed the comments. https://codereview.chromium.org/1399423002/diff/40001/src/compiler/common-operator.cc File src/compiler/common-operator.cc (right): https://codereview.chromium.org/1399423002/diff/40001/src/compiler/common-operator.cc#newcode681 src/compiler/common-operator.cc:681: const Operator* CommonOperatorBuilder::BeginRegion() { On 2015/10/13 ...
5 years, 2 months ago (2015-10-14 06:37:21 UTC) #6
Benedikt Meurer
Thanks. LGTM from my side.
5 years, 2 months ago (2015-10-14 10:56:52 UTC) #8
Michael Starzinger
LGTM on just JSTypedLowering with one nit, to unblock. I didn't look at the rest. ...
5 years, 2 months ago (2015-10-14 13:58:13 UTC) #9
Jarin
Thanks! https://codereview.chromium.org/1399423002/diff/60001/src/compiler/js-typed-lowering.cc File src/compiler/js-typed-lowering.cc (right): https://codereview.chromium.org/1399423002/diff/60001/src/compiler/js-typed-lowering.cc#newcode1272 src/compiler/js-typed-lowering.cc:1272: RelaxControls(node); On 2015/10/14 13:58:13, Michael Starzinger wrote: > ...
5 years, 2 months ago (2015-10-14 14:42:34 UTC) #10
commit-bot: I haz the power
CQ is trying da patch. Follow status at https://chromium-cq-status.appspot.com/patch-status/1399423002/80001 View timeline at https://chromium-cq-status.appspot.com/patch-timeline/1399423002/80001
5 years, 2 months ago (2015-10-14 14:43:04 UTC) #13
commit-bot: I haz the power
Committed patchset #5 (id:80001)
5 years, 2 months ago (2015-10-14 14:53:07 UTC) #14
commit-bot: I haz the power
5 years, 2 months ago (2015-10-14 14:53:18 UTC) #15
Message was sent while issue was closed.
Patchset 5 (id:??) landed as
https://crrev.com/59c616ccd7f9d707f6129c5f726aa652e7bc5f22
Cr-Commit-Position: refs/heads/master@{#31265}

Powered by Google App Engine
This is Rietveld 408576698