• Leszek Swirski's avatar
    [compiler] Propagate liveness across suspends · 41b80eef
    Leszek Swirski authored
    Suspend points (inside generators and async functions) have slightly
    funky semantics when it comes to liveness, as they save and restore a
    chunk of the register file as-is. In particular, this means that
    granular liveness information is lost, as it is assumed that all
    registers in that chunk of the register file are live in a suspend.
    
    Rather than marking that entire chunk of register as live/dead in
    suspend/restore, we can instead pattern-match the set of bytecodes in a
    suspend point, and propagate liveness across them. This tightens
    liveness estimates, and could be used to optimize which values TurboFan
    actually saves when suspending.
    
    Bug: chromium:798137
    Change-Id: I5840cdbfc2c6edb1d3a48cf025f52615b629cdfc
    Reviewed-on: https://chromium-review.googlesource.com/848895
    Commit-Queue: Leszek Swirski <leszeks@chromium.org>
    Reviewed-by: 's avatarJaroslav Sevcik <jarin@chromium.org>
    Cr-Commit-Position: refs/heads/master@{#50757}
    41b80eef
bytecode-analysis.cc 23.8 KB