• 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
scheduler.cc 62.7 KB