• Leszek Swirski's avatar
    Reland "[ignition] Skip binding dead labels" · c7ebc581
    Leszek Swirski authored
    This is a reland of 35269f77
    
    Switches on an expression that unconditionally throws would have all their
    case statements dead, causing a DCHECK error in the SwitchBuilder. This
    fixes up the DCHECK to allow dead labels.
    
    Original change's description:
    > [ignition] Skip binding dead labels
    >
    > BytecodeLabels for forward jumps may create a dead basic block if their
    > corresponding jump was elided (due to it dead code elimination). We can
    > avoid generating such dead basic blocks by skipping the label bind when
    > no corresponding jump has been observed. This works because all jumps
    > except JumpLoop are forward jumps, so we only have to special case one
    > Bind for loop headers to bind unconditionally.
    >
    > Since Binds are now conditional on a jump existing, we can no longer rely
    > on using Bind to get the current offset (e.g. at the beginning of a try
    > block). Instead, we now expose the current offset in the bytecode array
    > writer. Conveniently, this means that we can be a bit smarter about basic
    > blocks around these statements.
    >
    > As a drive-by, remove the unused Bind(target,label) function.
    >
    > Bug: chromium:934166
    > Change-Id: I532aa452fb083560d07b90da99caca0b1d082aa3
    > Reviewed-on: https://chromium-review.googlesource.com/c/1488763
    > Commit-Queue: Leszek Swirski <leszeks@chromium.org>
    > Reviewed-by: Ross McIlroy <rmcilroy@chromium.org>
    > Cr-Commit-Position: refs/heads/master@{#59942}
    
    TBR=rmcilroy@chromium.org
    
    Bug: chromium:934166
    Change-Id: If6eab4162106717ce64a2dc477000c6a76354cb4
    Reviewed-on: https://chromium-review.googlesource.com/c/1494535Reviewed-by: 's avatarLeszek Swirski <leszeks@chromium.org>
    Commit-Queue: Leszek Swirski <leszeks@chromium.org>
    Cr-Commit-Position: refs/heads/master@{#59948}
    c7ebc581
Name
Last commit
Last update
..
benchmarks Loading commit data...
cctest Loading commit data...
common Loading commit data...
debugger Loading commit data...
fuzzer Loading commit data...
inspector Loading commit data...
intl Loading commit data...
js-perf-test Loading commit data...
memory Loading commit data...
message Loading commit data...
mjsunit Loading commit data...
mkgrokdump Loading commit data...
mozilla Loading commit data...
preparser Loading commit data...
test262 Loading commit data...
torque Loading commit data...
unittests Loading commit data...
wasm-js Loading commit data...
wasm-spec-tests Loading commit data...
webkit Loading commit data...
BUILD.gn Loading commit data...
OWNERS Loading commit data...