This is due to the dead-code elimination happening in the bytecode-array-builder before it reaches any of the optimization stages. We eliminate some code which stores a value into a register, but then start a new basic block (due to a label bind for a hole check). This basic block is actually also dead, although our dead-code elimination only works within a basic block, so we start emitting code again. The new code tries to load from the register, however since we never emitted code to store into that register, this causes a crash in the register optimizer.
The correct fix is to move the dead-code elimination until after the other optimization stages. The problem with this is that we can't easily do it unless we also move the jump patching to the final bytecode writer stage (which we really should have done originally but deferred).
I'll upload a CL to remove the dead-code elimination which should fix this patch, but adding it back will require refactoring how we emit jumps.
Removing EditIssue view restrictions from ClusterFuzz filed bugs. If you believe that this issue should still be restricted, please reapply the label.
For more details visit https://www.chromium.org/issue-tracking/autotriage - Your friendly Sheriffbot
Comment 1 by ajha@chromium.org
, May 31 2016Labels: Te-Logged M-53