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

Reply via email to