• jarin's avatar
    [turbofan] Introduce node regions for protection from scheduling. · 59c616cc
    jarin authored
    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.
    
    Review URL: https://codereview.chromium.org/1399423002
    
    Cr-Commit-Position: refs/heads/master@{#31265}
    59c616cc
Name
Last commit
Last update
benchmarks Loading commit data...
build Loading commit data...
docs Loading commit data...
include Loading commit data...
infra Loading commit data...
samples Loading commit data...
src Loading commit data...
test Loading commit data...
testing Loading commit data...
third_party/binutils Loading commit data...
tools Loading commit data...
.clang-format Loading commit data...
.gitignore Loading commit data...
.ycm_extra_conf.py Loading commit data...
AUTHORS Loading commit data...
BUILD.gn Loading commit data...
ChangeLog Loading commit data...
DEPS Loading commit data...
LICENSE Loading commit data...
LICENSE.strongtalk Loading commit data...
LICENSE.v8 Loading commit data...
LICENSE.valgrind Loading commit data...
Makefile Loading commit data...
Makefile.android Loading commit data...
Makefile.nacl Loading commit data...
OWNERS Loading commit data...
PRESUBMIT.py Loading commit data...
README.md Loading commit data...
WATCHLISTS Loading commit data...
codereview.settings Loading commit data...
snapshot_toolchain.gni Loading commit data...