DescriptionPPC: Use a different map to distinguish eval contexts
Port 53fdf9d1926c6a6f9a2d2acf0c303ae4c71210a1
Original Commit Message:
eval() may introduce a scope which needs to be represented as a context at
runtime, e.g.,
eval('var x; let y; ()=>y')
introduces a variable y which needs to have a context allocated for it. However,
when traversing upwards to find the declaration context for a variable which leaks,
as the declaration of x does above, this context has to be understood to not be
a declaration context in sloppy mode.
This patch makes that distinction by introducing a different map for eval-introduced
contexts. A dynamic search for the appropriate context will continue past an eval
context to find the appropriate context. Marking contexts as eval contexts rather
than function contexts required updates in each compiler backend.
R=littledan@chromium.org, joransiu@ca.ibm.com, jyan@ca.ibm.com, michael_dawson@ca.ibm.com
BUG=v8:5295, chromium:648719
LOG=N
Review-Url: https://codereview.chromium.org/2590343002
Cr-Commit-Position: refs/heads/master@{#41872}
Committed: https://chromium.googlesource.com/v8/v8/+/cc48d2b1d87f4cab501a66eea2083f1c64d5007b
Patch Set 1 #
Messages
Total messages: 7 (3 generated)
|