Branch: refs/heads/main
Home: https://github.com/WebKit/WebKit
Commit: d5408df0618d2f1bfbba7b5bd3ab8f3f1d52d44c
https://github.com/WebKit/WebKit/commit/d5408df0618d2f1bfbba7b5bd3ab8f3f1d52d44c
Author: Yusuke Suzuki <[email protected]>
Date: 2024-04-29 (Mon, 29 Apr 2024)
Changed paths:
M Source/JavaScriptCore/bytecode/AccessCase.cpp
M Source/JavaScriptCore/bytecode/AccessCase.h
M Source/JavaScriptCore/bytecode/GetterSetterAccessCase.cpp
M Source/JavaScriptCore/bytecode/InlineCacheCompiler.cpp
M Source/JavaScriptCore/bytecode/InlineCacheCompiler.h
M Source/JavaScriptCore/bytecode/InstanceOfAccessCase.cpp
M Source/JavaScriptCore/bytecode/IntrinsicGetterAccessCase.cpp
M Source/JavaScriptCore/bytecode/ModuleNamespaceAccessCase.cpp
M Source/JavaScriptCore/bytecode/ProxyObjectAccessCase.cpp
M Source/JavaScriptCore/bytecode/ProxyableAccessCase.cpp
Log Message:
-----------
[JSC] Extract WatchpointSet collection from AccessCase
https://bugs.webkit.org/show_bug.cgi?id=273392
rdar://127220534
Reviewed by Keith Miller.
This patch changes how watchpoint set are registered in IC.
1. We will always clone AccessCase holding CallLinkInfo for simplicity. This is
rare and this wipes AccessCase::State completely.
2. We stop registering watchpoint set at addCases. It only materializes
watchpoint set for the future invalidation. We collect them
when actually generating code. And we stop generating code for AccessCase
which already holds invalid watchpoint set.
By doing this approach, now we can list up all the watchpoint set we would
like to see in InlineCacheCompiler's regenerate function.
And AccessCase becomes much more just an immutable feedback data.
This is important step towards Handler IC. Now we gather all watchpoint set
registrations into InlineCacheCompiler::regenerate.
Next step is redesign of these watchpoint set to put them into IC code instead
of StructureStubInfo. And then, Handler IC will share the
same set of watchpoint set when sharing code.
* Source/JavaScriptCore/bytecode/AccessCase.cpp:
(JSC::AccessCase::commit): Deleted.
* Source/JavaScriptCore/bytecode/AccessCase.h:
(JSC::AccessCase::polyProtoAccessChain const):
* Source/JavaScriptCore/bytecode/InlineCacheCompiler.cpp:
(JSC::InlineCacheCompiler::generateWithGuard):
(JSC::InlineCacheCompiler::generateImpl):
(JSC::collectAdditionalWatchpoints):
(JSC::InlineCacheCompiler::regenerate):
(JSC::PolymorphicAccess::addCases):
(JSC::InlineCacheCompiler::installWatchpoint): Deleted.
(JSC::commit): Deleted.
* Source/JavaScriptCore/bytecode/InlineCacheCompiler.h:
Canonical link: https://commits.webkit.org/278113@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