Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: d5408df0618d2f1bfbba7b5bd3ab8f3f1d52d44c
      
https://github.com/WebKit/WebKit/commit/d5408df0618d2f1bfbba7b5bd3ab8f3f1d52d44c
  Author: Yusuke Suzuki <ysuz...@apple.com>
  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
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to