Branch: refs/heads/main
Home: https://github.com/WebKit/WebKit
Commit: cc5180250455cc0abf88c2620e5762f0e2c7b5e6
https://github.com/WebKit/WebKit/commit/cc5180250455cc0abf88c2620e5762f0e2c7b5e6
Author: Yusuke Suzuki <[email protected]>
Date: 2024-07-02 (Tue, 02 Jul 2024)
Changed paths:
M Source/JavaScriptCore/JavaScriptCore.xcodeproj/project.pbxproj
M Source/JavaScriptCore/Sources.txt
M Source/JavaScriptCore/builtins/ProxyHelpers.js
M Source/JavaScriptCore/bytecode/AccessCase.cpp
M Source/JavaScriptCore/bytecode/AccessCase.h
M Source/JavaScriptCore/bytecode/GetByStatus.cpp
M Source/JavaScriptCore/bytecode/GetByStatus.h
M Source/JavaScriptCore/bytecode/InlineCacheCompiler.cpp
M Source/JavaScriptCore/bytecode/InlineCacheCompiler.h
R Source/JavaScriptCore/bytecode/ProxyObjectAccessCase.cpp
R Source/JavaScriptCore/bytecode/ProxyObjectAccessCase.h
M Source/JavaScriptCore/bytecode/PutByStatus.cpp
M Source/JavaScriptCore/bytecode/Repatch.cpp
M Source/JavaScriptCore/runtime/JSGlobalObject.cpp
M Source/JavaScriptCore/runtime/JSGlobalObject.h
M Source/JavaScriptCore/runtime/JSGlobalObjectInlines.h
Log Message:
-----------
[JSC] Implement IndexedProxyObjectIn and IndexedProxyObjectStore
https://bugs.webkit.org/show_bug.cgi?id=276148
rdar://130996102
Reviewed by Yijia Huang.
This patch adds IndexedProxyObjectIn and IndexedProxyObjectStore IC as we see
this patterns.
1. IndexedProxyObjectIn and IndexedProxyObjectStore are both stateless IC as
the same to IndexedProxyObjectLoad.
2. IndexedProxyObjectIn and IndexedProxyObjectStore just implement Proxy object
handler invocation as the same to ProxyObjectIn and ProxyObjectStore.
Also, we rename ProxyObjectHas to ProxyObjectIn to align these IC names to the
rest of the IC names.
* Source/JavaScriptCore/JavaScriptCore.xcodeproj/project.pbxproj:
* Source/JavaScriptCore/Sources.txt:
* Source/JavaScriptCore/builtins/ProxyHelpers.js:
(linkTimeConstant.performProxyObjectHasByVal):
(linkTimeConstant.performProxyObjectSetByValSloppy):
(linkTimeConstant.performProxyObjectSetByValStrict):
* Source/JavaScriptCore/bytecode/AccessCase.cpp:
(JSC::AccessCase::create):
(JSC::AccessCase::guardedByStructureCheckSkippingConstantIdentifierCheck const):
(JSC::AccessCase::requiresIdentifierNameMatch const):
(JSC::AccessCase::requiresInt32PropertyCheck const):
(JSC::AccessCase::forEachDependentCell const):
(JSC::AccessCase::doesCalls const):
(JSC::AccessCase::canReplace const):
(JSC::AccessCase::runWithDowncast):
(JSC::AccessCase::canBeShared):
* Source/JavaScriptCore/bytecode/AccessCase.h:
* Source/JavaScriptCore/bytecode/GetByStatus.cpp:
(JSC::GetByStatus::computeForStubInfoWithoutExitSiteFeedback):
* Source/JavaScriptCore/bytecode/GetByStatus.h:
* Source/JavaScriptCore/bytecode/InlineCacheCompiler.cpp:
(JSC::needsScratchFPR):
(JSC::forInBy):
(JSC::isStateless):
(JSC::doesJSCalls):
(JSC::isMegamorphic):
(JSC::canBeViaGlobalProxy):
(JSC::InlineCacheCompiler::generateWithGuard):
(JSC::InlineCacheCompiler::generateAccessCase):
(JSC::InlineCacheCompiler::emitProxyObjectAccess):
* Source/JavaScriptCore/bytecode/InlineCacheCompiler.h:
* Source/JavaScriptCore/bytecode/ProxyObjectAccessCase.cpp: Removed.
* Source/JavaScriptCore/bytecode/ProxyObjectAccessCase.h: Removed.
* Source/JavaScriptCore/bytecode/PutByStatus.cpp:
(JSC::PutByStatus::computeForStubInfo):
* Source/JavaScriptCore/bytecode/Repatch.cpp:
(JSC::tryCacheGetBy):
(JSC::tryCacheArrayGetByVal):
(JSC::tryCachePutBy):
(JSC::tryCacheArrayPutByVal):
(JSC::tryCacheInBy):
(JSC::tryCacheArrayInByVal):
* Source/JavaScriptCore/runtime/JSGlobalObject.cpp:
(JSC::JSGlobalObject::init):
(JSC::JSGlobalObject::visitChildrenImpl):
* Source/JavaScriptCore/runtime/JSGlobalObject.h:
(JSC::JSGlobalObject::offsetOfPerformProxyObjectHasByValFunction):
(JSC::JSGlobalObject::offsetOfPerformProxyObjectSetByValStrictFunction):
(JSC::JSGlobalObject::offsetOfPerformProxyObjectSetByValSloppyFunction):
* Source/JavaScriptCore/runtime/JSGlobalObjectInlines.h:
(JSC::JSGlobalObject::performProxyObjectHasByValFunction const):
(JSC::JSGlobalObject::performProxyObjectHasByValFunctionConcurrently const):
(JSC::JSGlobalObject::performProxyObjectSetByValSloppyFunction const):
(JSC::JSGlobalObject::performProxyObjectSetByValSloppyFunctionConcurrently
const):
(JSC::JSGlobalObject::performProxyObjectSetByValStrictFunction const):
(JSC::JSGlobalObject::performProxyObjectSetByValStrictFunctionConcurrently
const):
Canonical link: https://commits.webkit.org/280608@main
To unsubscribe from these emails, change your notification settings at
https://github.com/WebKit/WebKit/settings/notifications
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes