Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: 22af8f1310b162dbcb59c0d76d60a6bfce24f67e
      
https://github.com/WebKit/WebKit/commit/22af8f1310b162dbcb59c0d76d60a6bfce24f67e
  Author: Yusuke Suzuki <[email protected]>
  Date:   2024-07-15 (Mon, 15 Jul 2024)

  Changed paths:
    A JSTests/microbenchmarks/indexed-proxy-get-dfg-call.js
    A JSTests/microbenchmarks/indexed-proxy-has-dfg-call.js
    A JSTests/microbenchmarks/indexed-proxy-put-dfg-call.js
    M Source/JavaScriptCore/bytecode/BytecodeList.rb
    M Source/JavaScriptCore/bytecode/GetByStatus.cpp
    M Source/JavaScriptCore/bytecode/InByStatus.cpp
    M Source/JavaScriptCore/bytecode/InByStatus.h
    M Source/JavaScriptCore/bytecode/InByVariant.cpp
    M Source/JavaScriptCore/bytecode/InByVariant.h
    M Source/JavaScriptCore/bytecode/InlineCallFrame.cpp
    M Source/JavaScriptCore/bytecode/InlineCallFrame.h
    M Source/JavaScriptCore/bytecode/PutByStatus.cpp
    M Source/JavaScriptCore/bytecode/PutByStatus.h
    M Source/JavaScriptCore/dfg/DFGByteCodeParser.cpp
    M Source/JavaScriptCore/dfg/DFGOSRExitCompilerCommon.cpp
    M Source/JavaScriptCore/llint/LLIntThunks.cpp
    M Source/JavaScriptCore/llint/LowLevelInterpreter.asm
    M Source/JavaScriptCore/llint/LowLevelInterpreter32_64.asm
    M Source/JavaScriptCore/llint/LowLevelInterpreter64.asm
    M Source/JavaScriptCore/runtime/JSGlobalObject.h
    M Source/JavaScriptCore/runtime/JSGlobalObjectInlines.h

  Log Message:
  -----------
  [JSC] Inline Proxy IC calls in DFG
https://bugs.webkit.org/show_bug.cgi?id=276574
rdar://131675707

Reviewed by Yijia Huang.

This patch inlines ProxyObject IC into DFG / FTL when IC site only see one 
ProxyObject IC.
As the same to the already-existing Proxy Load inlining in DFG, we do this for 
Store and In.
Also we support Indexed Proxy Load / Store / In in DFG inlining too.

                                           ToT                     Patched

    indexed-proxy-has-dfg-call       46.8285+-0.0983     ^     43.8616+-0.1500  
      ^ definitely 1.0676x faster
    indexed-proxy-get-dfg-call       49.7546+-0.0843     ^     45.7176+-0.2335  
      ^ definitely 1.0883x faster
    indexed-proxy-put-dfg-call       40.6735+-0.0854     ^     39.6159+-0.1099  
      ^ definitely 1.0267x faster

* JSTests/microbenchmarks/indexed-proxy-get-dfg-call.js: Added.
(test):
* JSTests/microbenchmarks/indexed-proxy-has-dfg-call.js: Added.
(test):
* JSTests/microbenchmarks/indexed-proxy-put-dfg-call.js: Added.
(test):
* Source/JavaScriptCore/bytecode/BytecodeList.rb:
* Source/JavaScriptCore/bytecode/GetByStatus.cpp:
(JSC::GetByStatus::computeForStubInfoWithoutExitSiteFeedback):
* Source/JavaScriptCore/bytecode/InByStatus.cpp:
(JSC::InByStatus::computeFor):
(JSC::InByStatus::computeForStubInfoWithoutExitSiteFeedback):
(JSC::InByStatus::merge):
(JSC::InByStatus::dump const):
(JSC::InByStatus::computeForStubInfo): Deleted.
* Source/JavaScriptCore/bytecode/InByStatus.h:
* Source/JavaScriptCore/bytecode/InByVariant.cpp:
(JSC::InByVariant::InByVariant):
(JSC::InByVariant::operator=):
(JSC::InByVariant::attemptToMerge):
(JSC::InByVariant::finalize):
(JSC::InByVariant::dumpInContext const):
* Source/JavaScriptCore/bytecode/InByVariant.h:
(JSC::InByVariant::callLinkStatus const):
* Source/JavaScriptCore/bytecode/InlineCallFrame.cpp:
(WTF::printInternal):
* Source/JavaScriptCore/bytecode/InlineCallFrame.h:
(JSC::InlineCallFrame::callModeFor):
(JSC::InlineCallFrame::specializationKindFor):
* Source/JavaScriptCore/bytecode/PutByStatus.cpp:
(JSC::PutByStatus::computeForStubInfo):
(JSC::PutByStatus::merge):
(JSC::PutByStatus::dump const):
* Source/JavaScriptCore/bytecode/PutByStatus.h:
* Source/JavaScriptCore/dfg/DFGByteCodeParser.cpp:
(JSC::DFG::ByteCodeParser::inlineCall):
(JSC::DFG::ByteCodeParser::emitProxyObjectLoadCall):
(JSC::DFG::ByteCodeParser::emitProxyObjectStoreCall):
(JSC::DFG::ByteCodeParser::emitProxyObjectInCall):
(JSC::DFG::ByteCodeParser::handleProxyObjectLoad):
(JSC::DFG::ByteCodeParser::handleIndexedProxyObjectLoad):
(JSC::DFG::ByteCodeParser::handleProxyObjectStore):
(JSC::DFG::ByteCodeParser::handleIndexedProxyObjectStore):
(JSC::DFG::ByteCodeParser::handleProxyObjectIn):
(JSC::DFG::ByteCodeParser::handleIndexedProxyObjectIn):
(JSC::DFG::ByteCodeParser::handleInById):
(JSC::DFG::ByteCodeParser::handlePutById):
(JSC::DFG::ByteCodeParser::parseBlock):
(JSC::DFG::ByteCodeParser::handlePutByVal):
* Source/JavaScriptCore/dfg/DFGOSRExitCompilerCommon.cpp:
(JSC::DFG::callerReturnPC):
* Source/JavaScriptCore/llint/LLIntThunks.cpp:
(JSC::LLInt::returnLocationThunk):
* Source/JavaScriptCore/llint/LowLevelInterpreter.asm:
* Source/JavaScriptCore/llint/LowLevelInterpreter32_64.asm:
* Source/JavaScriptCore/llint/LowLevelInterpreter64.asm:
* Source/JavaScriptCore/runtime/JSGlobalObject.h:
* Source/JavaScriptCore/runtime/JSGlobalObjectInlines.h:
(JSC::JSGlobalObject::performProxyObjectHasFunctionConcurrently const):

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

Reply via email to