Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: 6848dafe458b079a1f25f642f419e448b28837df
      
https://github.com/WebKit/WebKit/commit/6848dafe458b079a1f25f642f419e448b28837df
  Author: Yusuke Suzuki <[email protected]>
  Date:   2022-09-23 (Fri, 23 Sep 2022)

  Changed paths:
    A JSTests/stress/proxy-helper-should-have-target-in-parameter.js
    M Source/JavaScriptCore/builtins/ProxyHelpers.js
    M Source/JavaScriptCore/bytecode/ProxyObjectAccessCase.cpp

  Log Message:
  -----------
  [JSC] Pass target object as a parameter to globalFuncHandleProxyGetTrapResult 
to suppress JSC shell issue
https://bugs.webkit.org/show_bug.cgi?id=245567
<rdar://100315084>

Reviewed by Darin Adler and Mark Lam.

Only in JSC shell, we are directly exposing JSGlobalObject to user space, and 
Proxy's helper function cannot
handle well when this is specified as a target object of ProxyObject since we 
convert JSGlobalObject to undefined
when it is passed to strict JS code (and this is how we handle strict mode's 
JSGlobalObject's |this|, and this is
totally valid since we do not expose it in the user code. User code only see 
JSGlobalObject wrapped with JSProxy).
This patch suppresses this JSC shell case to make Proxy code robust against 
that by passing the target as a parameter
instead of |this|.

* JSTests/stress/proxy-helper-should-have-target-in-parameter.js: Added.
(main.const.v11):
(main.v3):
(main):
* Source/JavaScriptCore/builtins/ProxyHelpers.js:
(linkTimeConstant.performProxyObjectGet):
* Source/JavaScriptCore/bytecode/ProxyObjectAccessCase.cpp:
(JSC::ProxyObjectAccessCase::emit):

Canonical link: https://commits.webkit.org/254815@main


_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to