Branch: refs/heads/webkitglib/2.54
  Home:   https://github.com/WebKit/WebKit
  Commit: 92b9fe2ead6631aefb500e90a2d352a88affa11f
      
https://github.com/WebKit/WebKit/commit/92b9fe2ead6631aefb500e90a2d352a88affa11f
  Author: Dan Hecht <[email protected]>
  Date:   2026-09-08 (Tue, 08 Sep 2026)

  Changed paths:
    A JSTests/wasm/gc/backwards-graph-multi-backedge-licm.js
    M Source/JavaScriptCore/b3/B3Procedure.h
    M Source/JavaScriptCore/b3/testb3.h
    M Source/JavaScriptCore/b3/testb3_1.cpp
    M Source/JavaScriptCore/b3/testb3_7.cpp
    M Source/WTF/wtf/BackwardsGraph.h

  Log Message:
  -----------
  Cherry-pick [email protected] (dec21f1baf1f). 
https://bugs.webkit.org/show_bug.cgi?id=317603

    [JSC] Fix BackwardsGraph for loops with multiple back-edge sources
    https://bugs.webkit.org/show_bug.cgi?id=317603
    rdar://178735697

    Reviewed by Marcus Plutowski.

    The addRootSuccessor lambda in WTF::BackwardsGraph used a single
    GraphNodeWorklist both to decide synthetic-root membership and to drive
    the predecessor-coverage flood. Depending on the order that back-edges
    were processed, this would cause some back-edge sources to not be
    included as backwards root successors.

    B3::BackwardsDominators, built on the resulting incomplete reverse CFG, can
    then report that a block post-dominates the loop pre-header even though a
    potentially-infinite loop between them means the block may never execute.
    B3HoistLoopInvariantValues uses post-dominators to conclude a 
control-dependent
    value always runs once the loop is entered, and hoists it into the 
pre-header,
    so the value can execute on paths where it should not.

    Decouple the two roles: addRootSuccessor now records every distinct 
back-edge
    source and terminal in m_rootSuccessorSet unconditionally, and uses the
    worklist only to bound the predecessor flood.

    Tests: JSTests/wasm/gc/backwards-graph-multi-backedge-licm.js
           Source/JavaScriptCore/b3/testb3_1.cpp
           Source/JavaScriptCore/b3/testb3_7.cpp

    * JSTests/wasm/gc/backwards-graph-multi-backedge-licm.js: Added.
    (catch):
    * Source/JavaScriptCore/b3/B3Procedure.h:
    * Source/JavaScriptCore/b3/testb3.h:
    * Source/JavaScriptCore/b3/testb3_1.cpp:
    (run):
    * Source/JavaScriptCore/b3/testb3_7.cpp:
    (testBackwardsDominatorsWithMultipleBackEdges):
    * Source/WTF/wtf/BackwardsGraph.h:
    (WTF::BackwardsGraph::BackwardsGraph):

    Identifier: [email protected]

Canonical link: https://commits.webkit.org/317695.228@webkitglib/2.54


  Commit: a0c79c002d3adaa88824db4f34ea31d6e4efe3ff
      
https://github.com/WebKit/WebKit/commit/a0c79c002d3adaa88824db4f34ea31d6e4efe3ff
  Author: Mark Lam <[email protected]>
  Date:   2026-09-08 (Tue, 08 Sep 2026)

  Changed paths:
    A JSTests/stress/unlinked-metadata-table-finalize-overflow.js
    M Source/JavaScriptCore/bytecode/UnlinkedCodeBlockGenerator.cpp
    M Source/JavaScriptCore/bytecode/UnlinkedCodeBlockGenerator.h
    M Source/JavaScriptCore/bytecode/UnlinkedMetadataTable.cpp
    M Source/JavaScriptCore/bytecode/UnlinkedMetadataTable.h
    M Source/JavaScriptCore/bytecompiler/BytecodeGenerator.cpp

  Log Message:
  -----------
  Cherry-pick [email protected] (9343a9521f58). 
https://bugs.webkit.org/show_bug.cgi?id=317632

    Handle overflows in UnlinkedMetadataTable::finalize().
    https://bugs.webkit.org/show_bug.cgi?id=317632
    rdar://172794625

    Reviewed by Dan Hecht.

    If the number of opcodes (with metadata of substantive size) is large, the 
32-bit unsigned
    computed buffer offsets in UnlinkedMetadataTable::finalize() can overflow.  
This patch
    applies the use of CheckedArithmetic to detect and handle any potential 
overflows.  In the
    event of a detected overflow, we'll propagate the failure to allocate the 
bytecode metadata
    up to the BytecodeGenerator, and treat its as an OOM error during parsing.

    Test: JSTests/stress/unlinked-metadata-table-finalize-overflow.js

    * JSTests/stress/unlinked-metadata-table-finalize-overflow.js: Added.
    (try.f):
    (catch):
    * Source/JavaScriptCore/bytecode/UnlinkedCodeBlockGenerator.cpp:
    (JSC::UnlinkedCodeBlockGenerator::finalize):
    * Source/JavaScriptCore/bytecode/UnlinkedCodeBlockGenerator.h:
    * Source/JavaScriptCore/bytecode/UnlinkedMetadataTable.cpp:
    (JSC::UnlinkedMetadataTable::finalize):
    * Source/JavaScriptCore/bytecode/UnlinkedMetadataTable.h:
    * Source/JavaScriptCore/bytecompiler/BytecodeGenerator.cpp:
    (JSC::BytecodeGenerator::generate):

    Identifier: [email protected]

Canonical link: https://commits.webkit.org/317695.229@webkitglib/2.54


  Commit: 2b0366caa04401a0bdee31482a168928e1811381
      
https://github.com/WebKit/WebKit/commit/2b0366caa04401a0bdee31482a168928e1811381
  Author: Anand Srinivasan <[email protected]>
  Date:   2026-09-08 (Tue, 08 Sep 2026)

  Changed paths:
    A JSTests/stress/b3-ccmp-chain.js
    M Source/JavaScriptCore/b3/B3LowerToAir.cpp
    M Source/JavaScriptCore/b3/testb3.h
    M Source/JavaScriptCore/b3/testb3_1.cpp
    M Source/JavaScriptCore/b3/testb3_8.cpp

  Log Message:
  -----------
  Cherry-pick 320274@main (65ef7f38f8f9). 
https://bugs.webkit.org/show_bug.cgi?id=315389

    Make B3 ccmp chain matcher use RAII
    https://bugs.webkit.org/show_bug.cgi?id=315389
    rdar://176792415

    Reviewed by Keith Miller.

    B3 ccmp chain matcher needs to roll back if a given pattern match fails
    part way through. RAII is a more principled and less error prone way to
    handle this.

    Test: JSTests/stress/b3-ccmp-chain.js

    * JSTests/stress/b3-ccmp-chain.js: Added.
    (f):
    (f_legit_chain):
    * Source/JavaScriptCore/b3/B3LowerToAir.cpp:
    * Source/JavaScriptCore/b3/testb3.h:
    * Source/JavaScriptCore/b3/testb3_1.cpp:
    (run):
    * Source/JavaScriptCore/b3/testb3_8.cpp:
    (testCCmpChainRollback):

    Originally-landed-as: [email protected] (7e01f14f8eb7). 
rdar://185367009
    Canonical link: https://commits.webkit.org/320274@main

Canonical link: https://commits.webkit.org/317695.230@webkitglib/2.54


Compare: https://github.com/WebKit/WebKit/compare/19c5e4df06f4...2b0366caa044

To unsubscribe from these emails, change your notification settings at 
https://github.com/WebKit/WebKit/settings/notifications

Reply via email to