[webkit-changes] [WebKit/WebKit] af8e0a: [JSC] Change JSProxy to JSGlobalProxy
Yusuke Suzuki
noreply at github.com
Wed Apr 12 21:57:45 PDT 2023
Branch: refs/heads/main
Home: https://github.com/WebKit/WebKit
Commit: af8e0a9ded65559e98d134a4f753b0bc68c89a49
https://github.com/WebKit/WebKit/commit/af8e0a9ded65559e98d134a4f753b0bc68c89a49
Author: Yusuke Suzuki <ysuzuki at apple.com>
Date: 2023-04-12 (Wed, 12 Apr 2023)
Changed paths:
M JSTests/microbenchmarks/put-slow-no-cache-js-proxy.js
M JSTests/stress/custom-get-set-proto-chain-put.js
M JSTests/stress/delete-property-ic-proxy.js
M JSTests/stress/for-in-proxy-target-changed-structure.js
M JSTests/stress/for-in-proxy.js
M JSTests/stress/get-property-names-stack-overflow.js
M JSTests/stress/object-toString-with-proxy.js
M JSTests/stress/proxy-inline-cache.js
M JSTests/stress/put-to-proto-chain-overrides-put.js
M Source/JavaScriptCore/API/JSObjectRef.cpp
M Source/JavaScriptCore/API/JSValueRef.cpp
M Source/JavaScriptCore/API/JSWeakObjectMapRefPrivate.cpp
M Source/JavaScriptCore/API/tests/JSObjectGetProxyTargetTest.cpp
M Source/JavaScriptCore/CMakeLists.txt
M Source/JavaScriptCore/JavaScriptCore.order
M Source/JavaScriptCore/JavaScriptCore.xcodeproj/project.pbxproj
M Source/JavaScriptCore/Sources.txt
M Source/JavaScriptCore/bytecode/AccessCase.cpp
M Source/JavaScriptCore/bytecode/AccessCase.h
M Source/JavaScriptCore/bytecode/DeleteByStatus.cpp
M Source/JavaScriptCore/bytecode/GetByStatus.cpp
M Source/JavaScriptCore/bytecode/GetterSetterAccessCase.cpp
M Source/JavaScriptCore/bytecode/GetterSetterAccessCase.h
M Source/JavaScriptCore/bytecode/InByStatus.cpp
M Source/JavaScriptCore/bytecode/InlineCacheCompiler.cpp
M Source/JavaScriptCore/bytecode/ProxyableAccessCase.cpp
M Source/JavaScriptCore/bytecode/ProxyableAccessCase.h
M Source/JavaScriptCore/bytecode/PutByStatus.cpp
M Source/JavaScriptCore/bytecode/Repatch.cpp
M Source/JavaScriptCore/heap/Heap.h
M Source/JavaScriptCore/heap/HeapSubspaceTypes.h
M Source/JavaScriptCore/jsc.cpp
M Source/JavaScriptCore/runtime/CommonSlowPaths.h
M Source/JavaScriptCore/runtime/HasOwnPropertyCache.h
M Source/JavaScriptCore/runtime/JSCInlines.h
M Source/JavaScriptCore/runtime/JSCJSValueInlines.h
M Source/JavaScriptCore/runtime/JSCast.h
M Source/JavaScriptCore/runtime/JSCellInlines.h
M Source/JavaScriptCore/runtime/JSGlobalObject.cpp
A Source/JavaScriptCore/runtime/JSGlobalProxy.cpp
A Source/JavaScriptCore/runtime/JSGlobalProxy.h
M Source/JavaScriptCore/runtime/JSObject.cpp
R Source/JavaScriptCore/runtime/JSProxy.cpp
R Source/JavaScriptCore/runtime/JSProxy.h
M Source/JavaScriptCore/runtime/JSType.cpp
M Source/JavaScriptCore/runtime/JSType.h
M Source/JavaScriptCore/runtime/Structure.h
M Source/JavaScriptCore/tools/JSDollarVM.cpp
M Source/WebCore/bindings/js/JSDOMGlobalObject.cpp
M Source/WebCore/bindings/js/JSDOMGlobalObject.h
M Source/WebCore/bindings/js/JSDOMGlobalObjectInlines.h
M Source/WebCore/bindings/js/JSShadowRealmGlobalScopeBase.cpp
M Source/WebCore/bindings/js/JSShadowRealmGlobalScopeBase.h
M Source/WebCore/bindings/js/JSWindowProxy.cpp
M Source/WebCore/bindings/js/JSWindowProxy.h
M Source/WebCore/bindings/js/JSWorkerGlobalScopeBase.cpp
M Source/WebCore/bindings/js/JSWorkerGlobalScopeBase.h
M Source/WebCore/bindings/js/JSWorkletGlobalScopeBase.cpp
M Source/WebCore/bindings/js/JSWorkletGlobalScopeBase.h
M Source/WebCore/bindings/scripts/CodeGeneratorJS.pm
M Source/WebCore/bindings/scripts/test/JS/JSDedicatedWorkerGlobalScope.cpp
M Source/WebCore/bindings/scripts/test/JS/JSDedicatedWorkerGlobalScope.h
M Source/WebCore/bindings/scripts/test/JS/JSPaintWorkletGlobalScope.cpp
M Source/WebCore/bindings/scripts/test/JS/JSPaintWorkletGlobalScope.h
M Source/WebCore/bindings/scripts/test/JS/JSServiceWorkerGlobalScope.cpp
M Source/WebCore/bindings/scripts/test/JS/JSServiceWorkerGlobalScope.h
M Source/WebCore/bindings/scripts/test/JS/JSShadowRealmGlobalScope.cpp
M Source/WebCore/bindings/scripts/test/JS/JSShadowRealmGlobalScope.h
M Source/WebCore/bindings/scripts/test/JS/JSSharedWorkerGlobalScope.cpp
M Source/WebCore/bindings/scripts/test/JS/JSSharedWorkerGlobalScope.h
M Source/WebCore/bindings/scripts/test/JS/JSWorkerGlobalScope.cpp
M Source/WebCore/bindings/scripts/test/JS/JSWorkerGlobalScope.h
M Source/WebCore/bindings/scripts/test/JS/JSWorkletGlobalScope.cpp
M Source/WebCore/bindings/scripts/test/JS/JSWorkletGlobalScope.h
M Source/WebCore/workers/WorkerOrWorkletScriptController.cpp
Log Message:
-----------
[JSC] Change JSProxy to JSGlobalProxy
https://bugs.webkit.org/show_bug.cgi?id=255374
rdar://107965509
Reviewed by Mark Lam and Justin Michaud.
We would like to optimize JSProxy case more in IC and this patch cleans up this with refactoring to pave a way to doing it.
We rename JSProxy to JSGlobalProxy, since it only takes GlobalObject. We never pass non JSGlobalObject as a target of this proxy.
* JSTests/microbenchmarks/put-slow-no-cache-js-proxy.js:
(set _v):
(proxy.vm.createProxy.set foo): Deleted.
* JSTests/stress/custom-get-set-proto-chain-put.js:
(getObjects):
* JSTests/stress/delete-property-ic-proxy.js:
(foo2):
(foo2.foo3): Deleted.
* JSTests/stress/get-property-names-stack-overflow.js:
* JSTests/stress/put-to-proto-chain-overrides-put.js:
(testSetResult):
* Source/JavaScriptCore/API/JSObjectRef.cpp:
(JSObjectGetPrivate):
(JSObjectSetPrivate):
(JSObjectGetPrivateProperty):
(JSObjectSetPrivateProperty):
(JSObjectDeletePrivateProperty):
(JSObjectGetProxyTarget):
* Source/JavaScriptCore/API/JSValueRef.cpp:
(JSValueIsObjectOfClass):
* Source/JavaScriptCore/API/JSWeakObjectMapRefPrivate.cpp:
* Source/JavaScriptCore/API/tests/JSObjectGetProxyTargetTest.cpp:
(testJSObjectGetProxyTarget):
* Source/JavaScriptCore/CMakeLists.txt:
* Source/JavaScriptCore/JavaScriptCore.order:
* Source/JavaScriptCore/JavaScriptCore.xcodeproj/project.pbxproj:
* Source/JavaScriptCore/Sources.txt:
* Source/JavaScriptCore/bytecode/AccessCase.cpp:
(JSC::AccessCase::createReplace):
(JSC::AccessCase::guardedByStructureCheckSkippingConstantIdentifierCheck const):
(JSC::AccessCase::doesCalls const):
(JSC::AccessCase::canReplace const):
(JSC::AccessCase::canBeShared):
* Source/JavaScriptCore/bytecode/AccessCase.h:
(JSC::AccessCase::viaGlobalProxy const):
(JSC::AccessCase::hash const):
(JSC::AccessCase::AccessCase):
(JSC::AccessCase::viaProxy const): Deleted.
* Source/JavaScriptCore/bytecode/DeleteByStatus.cpp:
(JSC::DeleteByStatus::computeForStubInfoWithoutExitSiteFeedback):
* Source/JavaScriptCore/bytecode/GetByStatus.cpp:
(JSC::GetByStatus::computeForStubInfoWithoutExitSiteFeedback):
* Source/JavaScriptCore/bytecode/GetterSetterAccessCase.cpp:
(JSC::GetterSetterAccessCase::GetterSetterAccessCase):
(JSC::GetterSetterAccessCase::create):
* Source/JavaScriptCore/bytecode/GetterSetterAccessCase.h:
* Source/JavaScriptCore/bytecode/InByStatus.cpp:
(JSC::InByStatus::computeForStubInfoWithoutExitSiteFeedback):
* Source/JavaScriptCore/bytecode/InlineCacheCompiler.cpp:
(JSC::InlineCacheCompiler::generateWithGuard):
(JSC::InlineCacheCompiler::generateImpl):
(JSC::InlineCacheCompiler::regenerate):
* Source/JavaScriptCore/bytecode/ProxyableAccessCase.cpp:
(JSC::ProxyableAccessCase::ProxyableAccessCase):
(JSC::ProxyableAccessCase::create):
(JSC::ProxyableAccessCase::dumpImpl const):
* Source/JavaScriptCore/bytecode/ProxyableAccessCase.h:
* Source/JavaScriptCore/bytecode/PutByStatus.cpp:
(JSC::PutByStatus::computeForStubInfo):
* Source/JavaScriptCore/bytecode/Repatch.cpp:
(JSC::tryCacheGetBy):
(JSC::tryCachePutBy):
* Source/JavaScriptCore/heap/Heap.h:
* Source/JavaScriptCore/heap/HeapSubspaceTypes.h:
* Source/JavaScriptCore/jsc.cpp:
(JSC_DEFINE_CUSTOM_SETTER):
(JSC_DEFINE_HOST_FUNCTION):
* Source/JavaScriptCore/runtime/CommonSlowPaths.h:
(JSC::CommonSlowPaths::originalStructureBeforePut):
* Source/JavaScriptCore/runtime/HasOwnPropertyCache.h:
(JSC::HasOwnPropertyCache::tryAdd):
* Source/JavaScriptCore/runtime/JSCInlines.h:
* Source/JavaScriptCore/runtime/JSCJSValueInlines.h:
(JSC::isThisValueAltered):
* Source/JavaScriptCore/runtime/JSCast.h:
* Source/JavaScriptCore/runtime/JSCellInlines.h:
(JSC::JSCell::isProxy const):
* Source/JavaScriptCore/runtime/JSGlobalObject.cpp:
(JSC::JSGlobalObject::resetPrototype):
(JSC::JSGlobalObject::finishCreation):
* Source/JavaScriptCore/runtime/JSGlobalProxy.cpp: Renamed from Source/JavaScriptCore/runtime/JSProxy.cpp.
(JSC::JSGlobalProxy::visitChildrenImpl):
(JSC::JSGlobalProxy::setTarget):
(JSC::JSGlobalProxy::getOwnPropertySlot):
(JSC::JSGlobalProxy::getOwnPropertySlotByIndex):
(JSC::JSGlobalProxy::put):
(JSC::JSGlobalProxy::putByIndex):
(JSC::JSGlobalProxy::defineOwnProperty):
(JSC::JSGlobalProxy::deleteProperty):
(JSC::JSGlobalProxy::isExtensible):
(JSC::JSGlobalProxy::preventExtensions):
(JSC::JSGlobalProxy::deletePropertyByIndex):
(JSC::JSGlobalProxy::getOwnPropertyNames):
(JSC::JSGlobalProxy::setPrototype):
(JSC::JSGlobalProxy::getPrototype):
* Source/JavaScriptCore/runtime/JSGlobalProxy.h: Renamed from Source/JavaScriptCore/runtime/JSProxy.h.
(JSC::JSGlobalProxy::subspaceFor):
(JSC::JSGlobalProxy::create):
(JSC::JSGlobalProxy::createStructure):
(JSC::JSGlobalProxy::target const):
(JSC::JSGlobalProxy::targetOffset):
(JSC::JSGlobalProxy::JSGlobalProxy):
(JSC::JSGlobalProxy::finishCreation):
* Source/JavaScriptCore/runtime/JSObject.cpp:
(JSC::JSObject::definePropertyOnReceiver):
* Source/JavaScriptCore/runtime/JSType.cpp:
(WTF::printInternal):
* Source/JavaScriptCore/runtime/JSType.h:
* Source/JavaScriptCore/runtime/Structure.h:
(JSC::Structure::isProxy const):
* Source/JavaScriptCore/tools/JSDollarVM.cpp:
(JSC::JSC_DEFINE_HOST_FUNCTION):
* Source/WebCore/bindings/js/JSDOMGlobalObject.cpp:
(WebCore::JSDOMGlobalObject::deriveShadowRealmGlobalObject):
* Source/WebCore/bindings/js/JSDOMGlobalObject.h:
* Source/WebCore/bindings/js/JSDOMGlobalObjectInlines.h:
(WebCore::toJSDOMGlobalObject):
* Source/WebCore/bindings/js/JSShadowRealmGlobalScopeBase.cpp:
(WebCore::JSShadowRealmGlobalScopeBase::finishCreation):
* Source/WebCore/bindings/js/JSShadowRealmGlobalScopeBase.h:
* Source/WebCore/bindings/js/JSWindowProxy.cpp:
(WebCore::JSWindowProxy::create):
* Source/WebCore/bindings/js/JSWindowProxy.h:
* Source/WebCore/bindings/js/JSWorkerGlobalScopeBase.cpp:
(WebCore::JSWorkerGlobalScopeBase::finishCreation):
* Source/WebCore/bindings/js/JSWorkerGlobalScopeBase.h:
* Source/WebCore/bindings/js/JSWorkletGlobalScopeBase.cpp:
(WebCore::JSWorkletGlobalScopeBase::finishCreation):
* Source/WebCore/bindings/js/JSWorkletGlobalScopeBase.h:
* Source/WebCore/bindings/scripts/CodeGeneratorJS.pm:
(ShouldCreateWithJSGlobalProxy):
(GenerateHeader):
(GenerateImplementation):
(ShouldCreateWithJSProxy): Deleted.
* Source/WebCore/bindings/scripts/test/JS/JSDedicatedWorkerGlobalScope.cpp:
(WebCore::JSDedicatedWorkerGlobalScope::finishCreation):
* Source/WebCore/bindings/scripts/test/JS/JSDedicatedWorkerGlobalScope.h:
(WebCore::JSDedicatedWorkerGlobalScope::create):
* Source/WebCore/bindings/scripts/test/JS/JSPaintWorkletGlobalScope.cpp:
(WebCore::JSPaintWorkletGlobalScope::finishCreation):
* Source/WebCore/bindings/scripts/test/JS/JSPaintWorkletGlobalScope.h:
(WebCore::JSPaintWorkletGlobalScope::create):
* Source/WebCore/bindings/scripts/test/JS/JSServiceWorkerGlobalScope.cpp:
(WebCore::JSServiceWorkerGlobalScope::finishCreation):
* Source/WebCore/bindings/scripts/test/JS/JSServiceWorkerGlobalScope.h:
(WebCore::JSServiceWorkerGlobalScope::create):
* Source/WebCore/bindings/scripts/test/JS/JSShadowRealmGlobalScope.cpp:
(WebCore::JSShadowRealmGlobalScope::finishCreation):
* Source/WebCore/bindings/scripts/test/JS/JSShadowRealmGlobalScope.h:
(WebCore::JSShadowRealmGlobalScope::create):
* Source/WebCore/bindings/scripts/test/JS/JSSharedWorkerGlobalScope.cpp:
(WebCore::JSSharedWorkerGlobalScope::finishCreation):
* Source/WebCore/bindings/scripts/test/JS/JSSharedWorkerGlobalScope.h:
(WebCore::JSSharedWorkerGlobalScope::create):
* Source/WebCore/bindings/scripts/test/JS/JSWorkerGlobalScope.cpp:
(WebCore::JSWorkerGlobalScope::finishCreation):
* Source/WebCore/bindings/scripts/test/JS/JSWorkerGlobalScope.h:
(WebCore::JSWorkerGlobalScope::create):
* Source/WebCore/bindings/scripts/test/JS/JSWorkletGlobalScope.cpp:
(WebCore::JSWorkletGlobalScope::finishCreation):
* Source/WebCore/bindings/scripts/test/JS/JSWorkletGlobalScope.h:
(WebCore::JSWorkletGlobalScope::create):
* Source/WebCore/workers/WorkerOrWorkletScriptController.cpp:
(WebCore::WorkerOrWorkletScriptController::initScriptWithSubclass):
Canonical link: https://commits.webkit.org/262902@main
More information about the webkit-changes
mailing list