[parser] Always mark shadowed vars maybe_assigned
If there was an assignment to a maybe-shadowing dynamic variable, then the shadowing variable would be marked maybe_assigned, but the maybe-shadowed variable would stay unchanged. This meant that in non-shadowing cases, the not-actually-shadowed variable would have the wrong maybe_assigned state, and e.g. would break context specialization. This patch pessimistically unconditionally sets maybe_assigned on variables shadowed by a dynamic variable in a `with` scope. This marking can cause false positives and sub-optimal optimization for some functions with 'with' blocks, but it's also the simplest fix for this issue which doesn't affect performance in the common case of no 'with' blocks. Bug: v8:9394 Change-Id: I6924bd7d48dda61232aa9d72c39df1c76c665c67 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1678365 Commit-Queue: Leszek Swirski <leszeks@chromium.org> Auto-Submit: Leszek Swirski <leszeks@chromium.org> Reviewed-by: Georg Neis <neis@chromium.org> Cr-Commit-Position: refs/heads/master@{#62407}
Showing
Please
register
or
sign in
to comment