[webkit-changes] [WebKit/WebKit] 876acc: Evaluate right-hand-side of assignment before TDZ ...
Commit Queue
noreply at github.com
Wed Nov 16 10:21:58 PST 2022
Branch: refs/heads/main
Home: https://github.com/WebKit/WebKit
Commit: 876accfa73f6d4613d489f23a88b20e827cfbc73
https://github.com/WebKit/WebKit/commit/876accfa73f6d4613d489f23a88b20e827cfbc73
Author: David Degazio <d_degazio at apple.com>
Date: 2022-11-16 (Wed, 16 Nov 2022)
Changed paths:
A JSTests/stress/assignment-side-effects-before-tdz-check.js
M Source/JavaScriptCore/bytecompiler/NodesCodegen.cpp
Log Message:
-----------
Evaluate right-hand-side of assignment before TDZ check
https://bugs.webkit.org/show_bug.cgi?id=247787
rdar://102324888
Reviewed by Yusuke Suzuki.
When we assign to a variable in its TDZ, we currently always do a TDZ check
before evaluating anything else. However, per the spec, we should actually
be evaluating the right-hand-side value before putting it into the destination -
potentially resulting in observable side-effects like throwing an exception. This
patch makes it so we add a TDZ check only after evaluating the right-hand-side
expression in assignment expressions. We shouldn't need this for any
read-modify-assignment expressions (i.e. +=, &&=) since those are supposed to
read the TDZ-checked value before evaluating the right.
* JSTests/stress/assignment-side-effects-before-tdz-check.js: Added.
(catch):
(try.x):
* Source/JavaScriptCore/bytecompiler/NodesCodegen.cpp:
(JSC::AssignResolveNode::emitBytecode):
Canonical link: https://commits.webkit.org/256743@main
More information about the webkit-changes
mailing list