Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: 2725a2a8434afdc0c01107f0396e7b9e7c948abc
      
https://github.com/WebKit/WebKit/commit/2725a2a8434afdc0c01107f0396e7b9e7c948abc
  Author: Yusuke Suzuki <ysuz...@apple.com>
  Date:   2025-02-04 (Tue, 04 Feb 2025)

  Changed paths:
    A JSTests/slowMicrobenchmarks/gcc-loops-wasm-load.js
    A JSTests/slowMicrobenchmarks/quicksort-wasm-load.js
    A JSTests/slowMicrobenchmarks/richards-wasm-load.js
    A JSTests/slowMicrobenchmarks/tsf-wasm-load.js
    M Source/JavaScriptCore/runtime/OptionsList.h
    M Source/JavaScriptCore/wasm/WasmBBQPlan.cpp
    M Source/JavaScriptCore/wasm/WasmBBQPlan.h
    M Source/JavaScriptCore/wasm/WasmEntryPlan.cpp
    M Source/JavaScriptCore/wasm/WasmEntryPlan.h
    M Source/JavaScriptCore/wasm/WasmFunctionCodeBlockGenerator.cpp
    M Source/JavaScriptCore/wasm/WasmFunctionCodeBlockGenerator.h
    M Source/JavaScriptCore/wasm/WasmFunctionIPIntMetadataGenerator.cpp
    M Source/JavaScriptCore/wasm/WasmFunctionIPIntMetadataGenerator.h
    M Source/JavaScriptCore/wasm/WasmIPIntPlan.cpp
    M Source/JavaScriptCore/wasm/WasmIPIntPlan.h
    M Source/JavaScriptCore/wasm/WasmLLIntPlan.cpp
    M Source/JavaScriptCore/wasm/WasmLLIntPlan.h
    M Source/JavaScriptCore/wasm/WasmModuleInformation.h
    M Source/JavaScriptCore/wasm/WasmOMGPlan.cpp
    M Source/JavaScriptCore/wasm/WasmOMGPlan.h
    M Source/JavaScriptCore/wasm/WasmOSREntryPlan.cpp
    M Source/JavaScriptCore/wasm/WasmOSREntryPlan.h
    M Source/JavaScriptCore/wasm/WasmPlan.h
    M Source/JavaScriptCore/wasm/WasmStreamingParser.cpp
    M Source/JavaScriptCore/wasm/WasmStreamingParser.h
    M Source/JavaScriptCore/wasm/WasmStreamingPlan.cpp
    M Source/JavaScriptCore/wasm/WasmStreamingPlan.h
    M Source/JavaScriptCore/wasm/WasmWorklist.cpp

  Log Message:
  -----------
  [JSC] More sophisticated wasm worklist distribution
https://bugs.webkit.org/show_bug.cgi?id=286986
rdar://144136820

Reviewed by Keith Miller and Yijia Huang.

This patch tweaks our wasm worklist distribution code for non streaming
wasm compilation.

1. We check each function size and isolate super huge function in a
   different loop of wasm compilation so that we can distribute outlier
   sized function separately from the rest, which makes distribution of
   compilation task more uniformly.
2. We compute total size of functions and change partial wasm byte size
   based on that. For very small wasm functions, large threshold will
   reduce use of threads of the system. But for enough sized wasm
   binary, we should bulk compile many functions to reduce rescheduling
   of wasm plan cost.
3. We also remove unnecessary locking in WasmIPIntPlan / WasmLLIntPlan.

                                    ToT                     Patched

    richards-wasm-load       569.6911+-26.6883    ^    385.5147+-5.0021        
^ definitely 1.4777x faster
    quicksort-wasm-load      508.5815+-0.6967     ^    381.4527+-3.4712        
^ definitely 1.3333x faster
    gcc-loops-wasm-load      263.1294+-5.8862     ?    264.7556+-2.9799        ?
    hashset-wasm-load        402.5893+-2.0566     ^    381.7596+-0.8357        
^ definitely 1.0546x faster
    tsf-wasm-load            351.2520+-5.2388     ^    303.8165+-1.9450        
^ definitely 1.1561x faster

* JSTests/slowMicrobenchmarks/gcc-loops-wasm-load.js: Added.
* JSTests/slowMicrobenchmarks/quicksort-wasm-load.js: Added.
* JSTests/slowMicrobenchmarks/richards-wasm-load.js: Added.
* JSTests/slowMicrobenchmarks/tsf-wasm-load.js: Added.
* Source/JavaScriptCore/runtime/OptionsList.h:
* Source/JavaScriptCore/wasm/WasmEntryPlan.cpp:
(JSC::Wasm::EntryPlan::compileFunctions):
* Source/JavaScriptCore/wasm/WasmFunctionCodeBlockGenerator.cpp:
(JSC::Wasm::FunctionCodeBlockGenerator::setTailCall):
* Source/JavaScriptCore/wasm/WasmFunctionCodeBlockGenerator.h:
(JSC::Wasm::FunctionCodeBlockGenerator::hasTailCallSuccessors const):
* Source/JavaScriptCore/wasm/WasmFunctionIPIntMetadataGenerator.cpp:
(JSC::Wasm::FunctionIPIntMetadataGenerator::setTailCall):
* Source/JavaScriptCore/wasm/WasmFunctionIPIntMetadataGenerator.h:
(JSC::Wasm::FunctionIPIntMetadataGenerator::hasTailCallSuccessors const):
* Source/JavaScriptCore/wasm/WasmIPIntPlan.cpp:
(JSC::Wasm::IPIntPlan::compileFunction):
* Source/JavaScriptCore/wasm/WasmIPIntPlan.h:
* Source/JavaScriptCore/wasm/WasmLLIntPlan.cpp:
(JSC::Wasm::LLIntPlan::compileFunction):
* Source/JavaScriptCore/wasm/WasmLLIntPlan.h:
* Source/JavaScriptCore/wasm/WasmModuleInformation.h:
* Source/JavaScriptCore/wasm/WasmStreamingParser.cpp:
(JSC::Wasm::StreamingParser::parseFunctionPayload):
* Source/JavaScriptCore/wasm/WasmStreamingParser.h:

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