[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