Branch: refs/heads/main
Home: https://github.com/WebKit/WebKit
Commit: 4ab3c0e99e3c1d4340efeb17beca257a2c9d3423
https://github.com/WebKit/WebKit/commit/4ab3c0e99e3c1d4340efeb17beca257a2c9d3423
Author: Yusuke Suzuki <[email protected]>
Date: 2026-10-12 (Mon, 12 Oct 2026)
Changed paths:
M Source/JavaScriptCore/dfg/DFGBackwardsPropagationPhase.cpp
M Source/JavaScriptCore/dfg/DFGByteCodeParser.cpp
M Source/JavaScriptCore/dfg/DFGGraph.cpp
M Source/JavaScriptCore/dfg/DFGGraph.h
M Source/JavaScriptCore/dfg/DFGLiveCatchVariablePreservationPhase.cpp
M Source/JavaScriptCore/dfg/DFGLiveCatchVariablePreservationPhase.h
Log Message:
-----------
[JSC] DFG BackwardsPropagationPhase should visit only affected blocks
https://bugs.webkit.org/show_bug.cgi?id=327168
rdar://189761815
Reviewed by Dan Hecht.
BackwardsPropagationPhase is iterating all basic blocks, which is super
costly when graph size is large.
1. We should compute predecessors much earlier phase. Use
determineReachability to compute them.
2. Use predecessors in BackwardsPropagationPhase to limit the blocks we
visit again in the fix-point iteration.
3. ByteCodeParser::pruneUnreachableNodes uses predecessors now.
* Source/JavaScriptCore/dfg/DFGBackwardsPropagationPhase.cpp:
(JSC::DFG::BackwardsPropagationPhase::run):
* Source/JavaScriptCore/dfg/DFGByteCodeParser.cpp:
(JSC::DFG::ByteCodeParser::pruneUnreachableNodes):
(JSC::DFG::ByteCodeParser::parse):
* Source/JavaScriptCore/dfg/DFGGraph.cpp:
(JSC::DFG::Graph::blocksInPostOrder):
* Source/JavaScriptCore/dfg/DFGGraph.h:
* Source/JavaScriptCore/dfg/DFGLiveCatchVariablePreservationPhase.cpp:
(JSC::DFG::LiveCatchVariablePreservationPhase::run):
* Source/JavaScriptCore/dfg/DFGLiveCatchVariablePreservationPhase.h:
Canonical link: https://commits.webkit.org/323541@main
To unsubscribe from these emails, change your notification settings at
https://github.com/WebKit/WebKit/settings/notifications