Changeset 260621 in webkit
- Timestamp:
- Apr 23, 2020 10:43:33 PM (4 years ago)
- Location:
- trunk
- Files:
-
- 2 deleted
- 6 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/JSTests/ChakraCore.yaml
r259564 r260621 1693 1693 cmd: runChakra :pass, "NoException", "", ["../UnitTestFramework/UnitTestFramework.js"] 1694 1694 - path: ChakraCore/test/es6/proxyTrapConsumeNewTarget.js 1695 # Different behavior. 1696 cmd: runChakra :skip, "NoException", "", ["../UnitTestFramework/UnitTestFramework.js"] 1695 cmd: runChakra :pass, "NoException", "", ["../UnitTestFramework/UnitTestFramework.js"] 1697 1696 - path: ChakraCore/test/es6/CrossContextSpreadfunctionCall.js 1698 1697 # LoadScriptFile polyfill doesn't return an object. … … 1744 1743 cmd: runChakra :skipDueToOutdatedOrBadTest, "NoException", "", [] 1745 1744 - path: ChakraCore/test/es6/proxy-issue884.js 1746 # Different behavior. 1747 cmd: runChakra :skip, "NoException", "proxy-issue884.baseline", [] 1745 cmd: runChakra :pass, "NoException", "proxy-issue884.baseline", [] 1748 1746 - path: ChakraCore/test/es6/nullPropertyDescriptor.js 1749 1747 cmd: runChakra :pass, "NoException", "", [] … … 1849 1847 cmd: runChakra :pass, "NoException", "", ["../UnitTestFramework/UnitTestFramework.js"] 1850 1848 - path: ChakraCore/test/es6/arraywithproxy.js 1851 # Different behavior, cannot convert Symbol to string. Could be bad test. 1852 cmd: runChakra :skip, "NoException", "arraywithproxy.baseline", [] 1849 cmd: runChakra :skipDueToOutdatedOrBadTest, "NoException", "", [] 1853 1850 - path: ChakraCore/test/es6/proxytest8.js 1854 1851 cmd: runChakra :baseline, "NoException", "proxytest8.baseline", [] 1855 1852 - path: ChakraCore/test/es6/proxytest9.js 1856 # Different behavior. 1857 cmd: runChakra :skip, "NoException", "proxytest9.baseline", [] 1853 cmd: runChakra :skipDueToOutdatedOrBadTest, "NoException", "", [] 1858 1854 - path: ChakraCore/test/es6/ES6Function_bugs.js 1859 1855 cmd: runChakra :pass, "NoException", "", ["../UnitTestFramework/UnitTestFramework.js"] -
trunk/JSTests/ChangeLog
r260601 r260621 1 2020-04-23 Alexey Shvayka <shvaikalesh@gmail.com> 2 3 Remove revoked Proxy checks from ProxyCreate 4 https://bugs.webkit.org/show_bug.cgi?id=210862 5 6 Reviewed by Ross Kirsling. 7 8 Removes expectations for 2 invalid ChakraCore tests. 9 10 * ChakraCore.yaml: Mark 2 test cases as passing. 11 * ChakraCore/test/es6/arraywithproxy.baseline: Removed. 12 * ChakraCore/test/es6/proxytest9.baseline: Removed. 13 * stress/proxy-revoke.js: Adjust test. 14 * test262/expectations.yaml: Mark 12 test cases as passing. 15 1 16 2020-04-23 Ross Kirsling <ross.kirsling@sony.com> 2 17 -
trunk/JSTests/stress/proxy-revoke.js
r248880 r260621 96 96 } catch(e) { 97 97 threw = true; 98 assert(e.toString() === "TypeError: A Proxy's 'target' shouldn't be a revoked Proxy");99 98 } 100 assert( threw);99 assert(!threw); 101 100 } 102 101 foo(); -
trunk/JSTests/test262/expectations.yaml
r260601 r260621 1253 1253 default: 'Test262Error: Expected a TypeError but got a TypeError' 1254 1254 strict mode: 'Test262Error: Expected a TypeError but got a TypeError' 1255 test/built-ins/Proxy/create-handler-is-revoked-proxy.js:1256 default: "TypeError: A Proxy's 'handler' shouldn't be a revoked Proxy"1257 strict mode: "TypeError: A Proxy's 'handler' shouldn't be a revoked Proxy"1258 test/built-ins/Proxy/create-target-is-revoked-function-proxy.js:1259 default: "TypeError: A Proxy's 'target' shouldn't be a revoked Proxy"1260 strict mode: "TypeError: A Proxy's 'target' shouldn't be a revoked Proxy"1261 test/built-ins/Proxy/create-target-is-revoked-proxy.js:1262 default: "TypeError: A Proxy's 'target' shouldn't be a revoked Proxy"1263 strict mode: "TypeError: A Proxy's 'target' shouldn't be a revoked Proxy"1264 1255 test/built-ins/Proxy/get-fn-realm-recursive.js: 1265 1256 default: 'Test262Error: Expected true but got false' … … 1274 1265 default: 'Test262Error: Expected SameValue(«true», «false») to be true' 1275 1266 strict mode: 'Test262Error: Expected SameValue(«true», «false») to be true' 1276 test/built-ins/Proxy/revocable/handler-is-revoked-proxy.js:1277 default: "TypeError: A Proxy's 'handler' shouldn't be a revoked Proxy"1278 strict mode: "TypeError: A Proxy's 'handler' shouldn't be a revoked Proxy"1279 test/built-ins/Proxy/revocable/target-is-revoked-function-proxy.js:1280 default: "TypeError: A Proxy's 'target' shouldn't be a revoked Proxy"1281 strict mode: "TypeError: A Proxy's 'target' shouldn't be a revoked Proxy"1282 test/built-ins/Proxy/revocable/target-is-revoked-proxy.js:1283 default: "TypeError: A Proxy's 'target' shouldn't be a revoked Proxy"1284 strict mode: "TypeError: A Proxy's 'target' shouldn't be a revoked Proxy"1285 1267 test/built-ins/Reflect/ownKeys/order-after-define-property.js: 1286 1268 default: 'Test262Error: Expected [Symbol(b), Symbol(a)] and [Symbol(a), Symbol(b)] to have the same contents. ' -
trunk/Source/JavaScriptCore/ChangeLog
r260585 r260621 1 2020-04-23 Alexey Shvayka <shvaikalesh@gmail.com> 2 3 Remove revoked Proxy checks from ProxyCreate 4 https://bugs.webkit.org/show_bug.cgi?id=210862 5 6 Reviewed by Ross Kirsling. 7 8 This change removes revoked Proxy checks from ProxyCreate [1], implementing 9 https://github.com/tc39/ecma262/pull/1814 and aligning JSC with SpiderMonkey. 10 Also cleans up ProxyObject creation by using isFunction() instead of 11 isCallable(), which are identical. 12 13 [1]: https://tc39.es/ecma262/#sec-proxycreate (steps 2, 4) 14 15 * runtime/ProxyObject.cpp: 16 (JSC::ProxyObject::structureForTarget): 17 (JSC::ProxyObject::finishCreation): 18 1 19 2020-04-22 Keith Miller <keith_miller@apple.com> 2 20 -
trunk/Source/JavaScriptCore/runtime/ProxyObject.cpp
r260447 r260621 72 72 Structure* ProxyObject::structureForTarget(JSGlobalObject* globalObject, JSValue target) 73 73 { 74 if (!target.isObject()) 75 return globalObject->proxyObjectStructure(); 76 77 JSObject* targetAsObject = jsCast<JSObject*>(target); 78 CallData ignoredCallData; 79 VM& vm = globalObject->vm(); 80 bool isCallable = targetAsObject->methodTable(vm)->getCallData(targetAsObject, ignoredCallData) != CallType::None; 81 return isCallable ? globalObject->callableProxyObjectStructure() : globalObject->proxyObjectStructure(); 74 VM& vm = globalObject->vm(); 75 return target.isFunction(vm) ? globalObject->callableProxyObjectStructure() : globalObject->proxyObjectStructure(); 82 76 } 83 77 … … 91 85 return; 92 86 } 93 if (ProxyObject* targetAsProxy = jsDynamicCast<ProxyObject*>(vm, target)) {94 if (targetAsProxy->isRevoked()) {95 throwTypeError(globalObject, scope, "A Proxy's 'target' shouldn't be a revoked Proxy"_s);96 return;97 }98 }99 87 if (!handler.isObject()) { 100 88 throwTypeError(globalObject, scope, "A Proxy's 'handler' should be an Object"_s); 101 89 return; 102 90 } 103 if (ProxyObject* handlerAsProxy = jsDynamicCast<ProxyObject*>(vm, handler)) {104 if (handlerAsProxy->isRevoked()) {105 throwTypeError(globalObject, scope, "A Proxy's 'handler' shouldn't be a revoked Proxy"_s);106 return;107 }108 }109 91 110 92 JSObject* targetAsObject = jsCast<JSObject*>(target); 111 93 112 CallData ignoredCallData; 113 m_isCallable = targetAsObject->methodTable(vm)->getCallData(targetAsObject, ignoredCallData) != CallType::None; 94 m_isCallable = targetAsObject->isFunction(vm); 114 95 if (m_isCallable) { 115 96 TypeInfo info = structure(vm)->typeInfo(); … … 117 98 } 118 99 119 m_isConstructible = jsCast<JSObject*>(target)->isConstructor(vm);100 m_isConstructible = targetAsObject->isConstructor(vm); 120 101 121 102 m_target.set(vm, this, targetAsObject);
Note: See TracChangeset
for help on using the changeset viewer.