[webkit-changes] [WebKit/WebKit] 2725a2: [JSC] More sophisticated wasm worklist distribution
Yusuke Suzuki
noreply at github.com
Tue Feb 4 11:59:05 PST 2025
Branch: refs/heads/main
Home: https://github.com/WebKit/WebKit
Commit: 2725a2a8434afdc0c01107f0396e7b9e7c948abc
https://github.com/WebKit/WebKit/commit/2725a2a8434afdc0c01107f0396e7b9e7c948abc
Author: Yusuke Suzuki <ysuzuki at 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
More information about the webkit-changes
mailing list