Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: d8d941f1893050954e64ab80125e28b1a38c6445
      
https://github.com/WebKit/WebKit/commit/d8d941f1893050954e64ab80125e28b1a38c6445
  Author: Yusuke Suzuki <ysuz...@apple.com>
  Date:   2024-04-01 (Mon, 01 Apr 2024)

  Changed paths:
    M Source/JavaScriptCore/JavaScriptCore.xcodeproj/project.pbxproj
    M Source/JavaScriptCore/Sources.txt
    M Source/JavaScriptCore/bytecode/AccessCase.h
    M Source/JavaScriptCore/bytecode/InlineCacheCompiler.cpp
    A Source/JavaScriptCore/bytecode/SharedJITStubSet.cpp
    A Source/JavaScriptCore/bytecode/SharedJITStubSet.h
    M Source/JavaScriptCore/bytecode/StructureStubInfo.cpp
    M Source/JavaScriptCore/bytecode/StructureStubInfo.h
    M Source/JavaScriptCore/heap/Heap.cpp
    M Source/JavaScriptCore/jit/GCAwareJITStubRoutine.cpp
    M Source/JavaScriptCore/jit/GCAwareJITStubRoutine.h
    M Source/JavaScriptCore/jit/PolymorphicCallStubRoutine.h
    M Source/JavaScriptCore/runtime/CacheableIdentifier.h
    M Source/JavaScriptCore/runtime/CacheableIdentifierInlines.h
    M Source/JavaScriptCore/runtime/VM.cpp

  Log Message:
  -----------
  [JSC] Start sharing megamorphic ById JIT code
https://bugs.webkit.org/show_bug.cgi?id=271942
rdar://125667161

Reviewed by Keith Miller.

This patch makes megamorphic ById JIT code shareable between multiple sites.
This is paving a way towards full handler IC, but for now, this is limited to 
megamorphic ById JIT code.
SharedJITStubSet can do hashing via AccessCase vector and can store JIT code 
for them. This is a key part
for Handler IC since we would like to use that later.

* Source/JavaScriptCore/JavaScriptCore.xcodeproj/project.pbxproj:
* Source/JavaScriptCore/Sources.txt:
* Source/JavaScriptCore/bytecode/AccessCase.h:
(JSC::AccessCase::updateIdentifier):
* Source/JavaScriptCore/bytecode/InlineCacheCompiler.cpp:
(JSC::isMegamorphicById):
(JSC::InlineCacheCompiler::regenerate):
* Source/JavaScriptCore/bytecode/SharedJITStubSet.cpp: Added.
(JSC::SharedJITStubSet::getStatelessStub const):
(JSC::SharedJITStubSet::setStatelessStub):
(JSC::SharedJITStubSet::getSlowPathHandler const):
(JSC::SharedJITStubSet::setSlowPathHandler):
* Source/JavaScriptCore/bytecode/SharedJITStubSet.h: Added.
(JSC::SharedJITStubSet::stubInfoKey):
(JSC::SharedJITStubSet::Hash::Key::Key):
(JSC::SharedJITStubSet::Hash::Key::isHashTableDeletedValue const):
(JSC::SharedJITStubSet::Hash::hash):
(JSC::SharedJITStubSet::Hash::equal):
(JSC::SharedJITStubSet::Searcher::Translator::hash):
(JSC::SharedJITStubSet::Searcher::Translator::equal):
(JSC::SharedJITStubSet::PointerTranslator::hash):
(JSC::SharedJITStubSet::PointerTranslator::equal):
(JSC::SharedJITStubSet::add):
(JSC::SharedJITStubSet::remove):
(JSC::SharedJITStubSet::find):
* Source/JavaScriptCore/bytecode/StructureStubInfo.cpp:
(JSC::SharedJITStubSet::getStatelessStub const): Deleted.
(JSC::SharedJITStubSet::setStatelessStub): Deleted.
(JSC::SharedJITStubSet::getSlowPathHandler const): Deleted.
(JSC::SharedJITStubSet::setSlowPathHandler): Deleted.
* Source/JavaScriptCore/bytecode/StructureStubInfo.h:
(JSC::SharedJITStubSet::Hash::Key::Key): Deleted.
(JSC::SharedJITStubSet::Hash::Key::isHashTableDeletedValue const): Deleted.
(JSC::SharedJITStubSet::Hash::hash): Deleted.
(JSC::SharedJITStubSet::Hash::equal): Deleted.
(JSC::SharedJITStubSet::Searcher::Translator::hash): Deleted.
(JSC::SharedJITStubSet::Searcher::Translator::equal): Deleted.
(JSC::SharedJITStubSet::PointerTranslator::hash): Deleted.
(JSC::SharedJITStubSet::PointerTranslator::equal): Deleted.
(JSC::SharedJITStubSet::add): Deleted.
(JSC::SharedJITStubSet::remove): Deleted.
(JSC::SharedJITStubSet::find): Deleted.
* Source/JavaScriptCore/heap/Heap.cpp:
(JSC::Heap::runEndPhase):
* Source/JavaScriptCore/jit/GCAwareJITStubRoutine.cpp:
(JSC::PolymorphicAccessJITStubRoutine::observeZeroRefCountImpl):
(JSC::PolymorphicAccessJITStubRoutine::computeHash):
(JSC::PolymorphicAccessJITStubRoutine::addedToSharedJITStubSet):
* Source/JavaScriptCore/jit/GCAwareJITStubRoutine.h:
(JSC::PolymorphicAccessJITStubRoutine::hash const):
* Source/JavaScriptCore/jit/PolymorphicCallStubRoutine.h:
* Source/JavaScriptCore/runtime/CacheableIdentifier.h:
* Source/JavaScriptCore/runtime/CacheableIdentifierInlines.h:
(JSC::CacheableIdentifier::createFromSharedStub):
* Source/JavaScriptCore/runtime/VM.cpp:

Canonical link: https://commits.webkit.org/276916@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