Branch: refs/heads/webkitglib/2.52
  Home:   https://github.com/WebKit/WebKit
  Commit: 20441aae5f2364cea956c1523c32b31a21415720
      
https://github.com/WebKit/WebKit/commit/20441aae5f2364cea956c1523c32b31a21415720
  Author: Youenn Fablet <[email protected]>
  Date:   2026-03-02 (Mon, 02 Mar 2026)

  Changed paths:
    M Source/WebCore/loader/cache/CachedResourceLoader.cpp
    M Tools/TestWebKitAPI/Tests/WebKitCocoa/Navigation.mm

  Log Message:
  -----------
  Cherry-pick 301765.328@safari-7623-branch (00c47cad6649). rdar://158416842

    Safari allows CSRF by resetting the Sec-Fetch-Site header on refresh
    rdar://158416842

    Reviewed by Chris Dumez.

    In case of form resubmition, we were recomputing Sec-Fetch-Site and friends 
from the destination origin, which was wrong.
    Instead, given we already computed the Sec headers, we reuse them when 
resubmitting a form.

    Test: Tools/TestWebKitAPI/Tests/WebKitCocoa/Navigation.mm
    * Source/WebCore/loader/cache/CachedResourceLoader.cpp:
    (WebCore::shouldReuseExistingFetchMetadata):
    (WebCore::shouldUpdateFetchMetadata):
    (WebCore::CachedResourceLoader::updateHTTPRequestHeaders):
    * Tools/TestWebKitAPI/Tests/WebKitCocoa/Navigation.mm:
    (TEST(Navigation, FormResubmited)):

    Identifier: 301765.328@safari-7623-branch

Canonical link: https://commits.webkit.org/305877.126@webkitglib/2.52


  Commit: ab44c655e8bb71d4ab05ec3709f9e064476d62c4
      
https://github.com/WebKit/WebKit/commit/ab44c655e8bb71d4ab05ec3709f9e064476d62c4
  Author: Shu-yu Guo <[email protected]>
  Date:   2026-03-02 (Mon, 02 Mar 2026)

  Changed paths:
    M JSTests/stress/regexp-duplicate-named-captures.js
    M Source/JavaScriptCore/yarr/YarrInterpreter.cpp
    M Source/JavaScriptCore/yarr/YarrJIT.cpp
    M Source/JavaScriptCore/yarr/YarrPattern.cpp
    M Source/JavaScriptCore/yarr/YarrPattern.h

  Log Message:
  -----------
  Cherry-pick 301765.330@safari-7623-branch (3b3f8ae21a23). 
https://bugs.webkit.org/show_bug.cgi?id=302560

    [JSC] Distinguish named and numbered backreferences in Yarr
    https://bugs.webkit.org/show_bug.cgi?id=302560
    rdar://164402403

    Reviewed by Keith Miller.

    The duplicate named capture group feature added the ability to have 
duplicate
    capture group names so long as they're in different disjuncts. The 
semantics is
    to check if any of the capture groups with the same name matched.  There 
can be
    a maximum of one match as they are restricted to different disjuncts. In 
this
    case, Yarr mints a special "duplicated named groups group" id along with an
    indirection table that can check if any of the groups with the same name
    matched.

    Currently both named and numbered backreferences are compiled to the same
    PatternTerm and ByteTerm type, with named capture groups resolved to the
    numbers. If the capture group number is part of a duplicated name groups 
group,
    the special id is used instead.

    The problem is that that duplicated named group resolution is done even when
    the backreference was explicitly numbered. That is, in 
/(?<k>...)|(?<k>...\1)/,
    \1 is supposed to refer to the first parentheses, but ends up referring to 
both
    disjuncts. As shown in this example, this can be recursive!

    This recursion can manifest as out of bounds when doing backtracking, 
because
    you can end up matching a group of size N, match a disjunct of size M, then
    backtrack expecting to undo size N, but end up rewinding size M.

    This PR fixes this issue by distinguishing numbered and named backreference
    PatternTerms, and only performing the duplicate named group logic for named
    backreferences.

    A new test function is added to regexp-duplicate-named-capture.js

    Identifier: 301765.330@safari-7623-branch

Canonical link: https://commits.webkit.org/305877.127@webkitglib/2.52


  Commit: ab0b9d426c2b9f150442bc94fbab9582221706ef
      
https://github.com/WebKit/WebKit/commit/ab0b9d426c2b9f150442bc94fbab9582221706ef
  Author: Shu-yu Guo <[email protected]>
  Date:   2026-03-02 (Mon, 02 Mar 2026)

  Changed paths:
    A JSTests/wasm/gc/struct-new-default-v128.js
    M Source/JavaScriptCore/wasm/WasmOMGIRGenerator.cpp
    M Source/JavaScriptCore/wasm/WasmOMGIRGenerator32_64.cpp

  Log Message:
  -----------
  Cherry-pick 301765.340@safari-7623-branch (4241fa8b2343). 
https://bugs.webkit.org/show_bug.cgi?id=302906

    [JSC] Initialize V128 correctly for struct.new_default
    https://bugs.webkit.org/show_bug.cgi?id=302906
    rdar://163912308

    Reviewed by Yusuke Suzuki, Yijia Huang, and Dan Hecht.

    Initialize v128 fields in struct.new_default with a v128_t { }.

    Also drive-by changes array.new_default to use the constant() helper.

    Test: JSTests/wasm/gc/struct-new-default-v128.js
    Identifier: 301765.340@safari-7623-branch

Canonical link: https://commits.webkit.org/305877.128@webkitglib/2.52


  Commit: edaca0e74b78c210eef3b612697508e033376645
      
https://github.com/WebKit/WebKit/commit/edaca0e74b78c210eef3b612697508e033376645
  Author: Shu-yu Guo <[email protected]>
  Date:   2026-03-02 (Mon, 02 Mar 2026)

  Changed paths:
    A JSTests/stress/private-names-seal-freeze.js
    M Source/JavaScriptCore/runtime/PropertyTable.cpp

  Log Message:
  -----------
  Cherry-pick 301765.343@safari-7623-branch (b6b02057f0c4). 
https://bugs.webkit.org/show_bug.cgi?id=303357

    [JSC] Don't set attributes on private fields when sealing/freezing
    https://bugs.webkit.org/show_bug.cgi?id=303357
    rdar://165252763

    Reviewed by Yusuke Suzuki and Mark Lam.

    This PR makes it such that when sealing and freezing objects, entries in the
    PropertyTable that are private fields do not change their attributes.  
Private
    fields are not properties from the spec's point of view, and thus don't have
    attributes.

    Ensuring private field entries simplifies assumptions in the JITs, as they 
can
    assume having attributes when setting a property results in a structure
    transition.

    Test: JSTests/stress/private-names-seal-freeze.js
    Identifier: 301765.343@safari-7623-branch

Canonical link: https://commits.webkit.org/305877.129@webkitglib/2.52


  Commit: e43cdb17a7235c862216900e666e4be140444af9
      
https://github.com/WebKit/WebKit/commit/e43cdb17a7235c862216900e666e4be140444af9
  Author: Chris Dumez <[email protected]>
  Date:   2026-03-02 (Mon, 02 Mar 2026)

  Changed paths:
    M Source/WebCore/html/canvas/EXTDisjointTimerQueryWebGL2.cpp

  Log Message:
  -----------
  Cherry-pick 301765.347@safari-7623-branch (fabe69c2dcb4). 
https://bugs.webkit.org/show_bug.cgi?id=303348

    Unsafe argument capture in EXTDisjointTimerQueryWebGL2::queryCounterEXT()
    https://bugs.webkit.org/show_bug.cgi?id=303348
    rdar://165125247

    Reviewed by Brent Fulgham.

    The lambda runs asynchronously and it is thus unsafe to capture by reference
    here. We need to capture a smart pointer to the query to make sure it is 
kept
    alive.

    * Source/WebCore/html/canvas/EXTDisjointTimerQueryWebGL2.cpp:
    (WebCore::EXTDisjointTimerQueryWebGL2::queryCounterEXT):

    Identifier: 301765.347@safari-7623-branch

Canonical link: https://commits.webkit.org/305877.130@webkitglib/2.52


  Commit: 0d9daeff0303be766c417ced493943fcd8b6cc33
      
https://github.com/WebKit/WebKit/commit/0d9daeff0303be766c417ced493943fcd8b6cc33
  Author: Anthony Tarbinian <[email protected]>
  Date:   2026-03-02 (Mon, 02 Mar 2026)

  Changed paths:
    A LayoutTests/workers/worker-set-delete-terminate-crash-expected.txt
    A LayoutTests/workers/worker-set-delete-terminate-crash.html
    M Source/JavaScriptCore/runtime/OrderedHashTableHelper.h

  Log Message:
  -----------
  Cherry-pick 301765.357@safari-7623-branch (eccc2eed44f9). 
https://bugs.webkit.org/show_bug.cgi?id=303658

    [JSC] Modifying storage in OrderedHashTableHelper should 
DeferTerminationForAWhile
    https://bugs.webkit.org/show_bug.cgi?id=303658
    rdar://162356649

    Reviewed by Keith Miller.

    When resizing storage in OrderedHashTableHelper (via addImpl or 
shinkIfNeeded),
    it's possible to leave the storage in an inconsistent state if we handle a
    termination exception. For consistency, we should DeferTerminationForAWhile
    until the storage has been fully updated.

    Test: workers/worker-set-delete-terminate-crash.html

    * LayoutTests/workers/worker-set-delete-terminate-crash-expected.txt: Added.
    * LayoutTests/workers/worker-set-delete-terminate-crash.html: Added.
    * Source/JavaScriptCore/runtime/OrderedHashTableHelper.h:
    (JSC::OrderedHashTableHelper::addImpl):
    (JSC::OrderedHashTableHelper::shrinkIfNeeded):

    Identifier: 301765.357@safari-7623-branch

Canonical link: https://commits.webkit.org/305877.131@webkitglib/2.52


  Commit: fbe943514eb0150d121f95dcdbc5b54aa5414239
      
https://github.com/WebKit/WebKit/commit/fbe943514eb0150d121f95dcdbc5b54aa5414239
  Author: Jer Noble <[email protected]>
  Date:   2026-03-02 (Mon, 02 Mar 2026)

  Changed paths:
    M Source/WebCore/platform/audio/AudioResamplerKernel.cpp

  Log Message:
  -----------
  Cherry-pick 301765.369@safari-7623-branch (ee36b92f6f9f). 
https://bugs.webkit.org/show_bug.cgi?id=303959

    Integer underflow in AudioResamplerKernel::getSourceSpan()
    rdar://162552376
    https://bugs.webkit.org/show_bug.cgi?id=303959

    Reviewed by Eric Carlson.

    Protect against underflows when calculating the number of
    source frames needed using WTF::safeSub().

    * Source/WebCore/platform/audio/AudioResamplerKernel.cpp:
    (WebCore::AudioResamplerKernel::getSourceSpan):

    Identifier: 301765.369@safari-7623-branch

Canonical link: https://commits.webkit.org/305877.132@webkitglib/2.52


  Commit: a594669c3c64aec432aa666df04145579b63e7a5
      
https://github.com/WebKit/WebKit/commit/a594669c3c64aec432aa666df04145579b63e7a5
  Author: Shu-yu Guo <[email protected]>
  Date:   2026-03-02 (Mon, 02 Mar 2026)

  Changed paths:
    M Source/JavaScriptCore/wasm/WasmOMGIRGenerator.cpp
    M Source/JavaScriptCore/wasm/WasmOMGIRGenerator32_64.cpp

  Log Message:
  -----------
  Cherry-pick 301765.371@safari-7623-branch (167074a8e936). 
https://bugs.webkit.org/show_bug.cgi?id=304032

    [JSC] Store float instead of double for F32 in OMG tail calls
    https://bugs.webkit.org/show_bug.cgi?id=304032
    rdar://166285942

    Reviewed by Dan Hecht and Mark Lam.

    F32 and F64 were both doing a double store when spilling in OMG tail calls,
    while F32 should be doing a float store to avoid writing out of bounds of 
the
    spill slot.

    No test as cannot reliably and observably test this temporary stack 
corruption.

    Identifier: 301765.371@safari-7623-branch

Canonical link: https://commits.webkit.org/305877.133@webkitglib/2.52


  Commit: 37167dbd5e9e68ecc5ea26c48b5c373d20710fe0
      
https://github.com/WebKit/WebKit/commit/37167dbd5e9e68ecc5ea26c48b5c373d20710fe0
  Author: Shu-yu Guo <[email protected]>
  Date:   2026-03-02 (Mon, 02 Mar 2026)

  Changed paths:
    A JSTests/wasm/gc/validate-unreachable-unset-local.js
    M Source/JavaScriptCore/wasm/WasmFunctionParser.h

  Log Message:
  -----------
  Cherry-pick 301765.372@safari-7623-branch (e2b2223e8a58). 
https://bugs.webkit.org/show_bug.cgi?id=304086

    [JSC] Fix Wasm validation of unreachable locals
    https://bugs.webkit.org/show_bug.cgi?id=304086
    rdar://166283484

    Reviewed by Dan Hecht.

    WebAssembly requires non-defaultable locals (i.e. locals with non-nullable 
ref
    types) to be set before they're used by local.get. Current implementation
    incorrectly performs this validation in the case the local.get/set are
    unreachable. While initialization is tracked in such unreachable local
    instructions, the locals stack is not correctly reset at control flow merge
    points. This PR resets the stack at such points.

    Test: JSTests/wasm/gc/validate-unreachable-unset-local.js
    Identifier: 301765.372@safari-7623-branch

Canonical link: https://commits.webkit.org/305877.134@webkitglib/2.52


  Commit: 42fe793caba9479b78534bf8bec4548aa4b45972
      
https://github.com/WebKit/WebKit/commit/42fe793caba9479b78534bf8bec4548aa4b45972
  Author: Rob Buis <[email protected]>
  Date:   2026-03-02 (Mon, 02 Mar 2026)

  Changed paths:
    A LayoutTests/fast/forms/onformdata-navigate-crash-expected.txt
    A LayoutTests/fast/forms/onformdata-navigate-crash.html
    M Source/WebCore/html/HTMLFormElement.cpp
    M Source/WebCore/loader/FormSubmission.cpp
    M Source/WebCore/loader/FormSubmission.h

  Log Message:
  -----------
  Cherry-pick 301765.373@safari-7623-branch (1acabe11a6b0). 
https://bugs.webkit.org/show_bug.cgi?id=301645

    [WebKit][Main+SU] [ea2e11e05711c082] ASAN_ILL | WebCore::FormState::create; 
WebCore::FormSubmission::create; WebCore::HTMLFormElement::submit
    https://bugs.webkit.org/show_bug.cgi?id=301645
    rdar://163480500

    Reviewed by Chris Dumez.

    When constructing FormSubmission the formdata event is dispatched. When 
combined
    with the Navigation API the event handling can cause the document frame to 
be
    detached, triggering a release assert in the FormState constructor. To fix 
this
    detect the frame removal after dispatching and end the submit operation 
early.

    * LayoutTests/fast/forms/onformdata-navigate-crash-expected.txt: Added.
    * LayoutTests/fast/forms/onformdata-navigate-crash.html: Added.
    * Source/WebCore/html/HTMLFormElement.cpp:
    (WebCore::HTMLFormElement::submit):
    * Source/WebCore/loader/FormSubmission.cpp:
    (WebCore::FormSubmission::create):
    * Source/WebCore/loader/FormSubmission.h:

    Canonical link: https://commits.webkit.org/[email protected]
    Identifier: 301765.373@safari-7623-branch

Canonical link: https://commits.webkit.org/305877.135@webkitglib/2.52


  Commit: 00fcca53cefaca9f948de039a528f0684e210fc9
      
https://github.com/WebKit/WebKit/commit/00fcca53cefaca9f948de039a528f0684e210fc9
  Author: Frédéric Wang <[email protected]>
  Date:   2026-03-02 (Mon, 02 Mar 2026)

  Changed paths:
    A 
LayoutTests/fast/webcodecs/resetting-audio-decoder-with-unsupported-codec-crash-expected.txt
    A 
LayoutTests/fast/webcodecs/resetting-audio-decoder-with-unsupported-codec-crash.html
    A 
LayoutTests/fast/webcodecs/resetting-audio-encoder-with-unsupported-codec-crash-expected.txt
    A 
LayoutTests/fast/webcodecs/resetting-audio-encoder-with-unsupported-codec-crash.html
    A 
LayoutTests/fast/webcodecs/resetting-video-decoder-with-unsupported-codec-crash-expected.txt
    A 
LayoutTests/fast/webcodecs/resetting-video-decoder-with-unsupported-codec-crash.html
    A 
LayoutTests/fast/webcodecs/resetting-video-encoder-with-unsupported-codec-crash-expected.txt
    A 
LayoutTests/fast/webcodecs/resetting-video-encoder-with-unsupported-codec-crash.html
    M Source/WebCore/Modules/webcodecs/WebCodecsAudioDecoder.cpp
    M Source/WebCore/Modules/webcodecs/WebCodecsAudioEncoder.cpp
    M Source/WebCore/Modules/webcodecs/WebCodecsBase.cpp
    M Source/WebCore/Modules/webcodecs/WebCodecsVideoDecoder.cpp
    M Source/WebCore/Modules/webcodecs/WebCodecsVideoEncoder.cpp

  Log Message:
  -----------
  Cherry-pick 301765.374@safari-7623-branch (13f8cb5f9bd5). 
https://bugs.webkit.org/show_bug.cgi?id=300958

    ASAN_SEGV | WebCore::JSCallbackData::invokeCallback; 
WebCore::JSWebCodecsErrorCallback::invoke; 
WebCore::WebCodecsVideoDecoder::closeDecoder
    https://bugs.webkit.org/show_bug.cgi?id=300958

    Reviewed by Youenn Fablet.

    When calling configure() on a webcodec with an unsupported config,
    postTaskToCodec() is called to "queue a task to run the Close
    AudioDecoder algorithm with NotSupportedError" as per
    https://www.w3.org/TR/webcodecs.

    If reset() is called before that task in dequeued, then the codec state
    becomes Unconfigured and WebCodecsBase::virtualHasPendingActivity() no
    longer ensures the JS wrapper stay alive, potentially causing a nullptr
    crash when trying to execute the associated error callback:

    ```
    bool WebCodecsBase::virtualHasPendingActivity() const
    {
     return m_state == WebCodecsCodecState::Configured && 
(m_codecControlMessagesPending || m_isMessageQueueBlocked);
    }
    ```

    This patch removes the assumption that the codec state must be
    Configured in order to keep the JS wrapper alive and that addresses the
    nullptr crash here. It makes sure that virtualHasPendingActivity()
    would eventually be reset to false though.

    Tests: 
fast/webcodecs/resetting-audio-decoder-with-unsupported-codec-crash.html
           
fast/webcodecs/resetting-audio-encoder-with-unsupported-codec-crash.html
           
fast/webcodecs/resetting-video-decoder-with-unsupported-codec-crash.html
           
fast/webcodecs/resetting-video-encoder-with-unsupported-codec-crash.html
    * 
LayoutTests/fast/webcodecs/resetting-audio-decoder-with-unsupported-codec-crash-expected.txt:
 Added.
    * 
LayoutTests/fast/webcodecs/resetting-audio-decoder-with-unsupported-codec-crash.html:
 Added.
    * 
LayoutTests/fast/webcodecs/resetting-audio-encoder-with-unsupported-codec-crash-expected.txt:
 Added.
    * 
LayoutTests/fast/webcodecs/resetting-audio-encoder-with-unsupported-codec-crash.html:
 Added.
    * 
LayoutTests/fast/webcodecs/resetting-video-decoder-with-unsupported-codec-crash-expected.txt:
 Added.
    * 
LayoutTests/fast/webcodecs/resetting-video-decoder-with-unsupported-codec-crash.html:
 Added.
    * 
LayoutTests/fast/webcodecs/resetting-video-encoder-with-unsupported-codec-crash-expected.txt:
 Added.
    * 
LayoutTests/fast/webcodecs/resetting-video-encoder-with-unsupported-codec-crash.html:
 Added.
    * Source/WebCore/Modules/webcodecs/WebCodecsBase.cpp:
    (WebCore::WebCodecsBase::virtualHasPendingActivity const): Don't release 
the codec when it's not in configured state.
    * Source/WebCore/Modules/webcodecs/WebCodecsAudioDecoder.cpp:
    (WebCore::WebCodecsAudioDecoder::configure): Ensure we clear 
m_isMessageQueueBlocked when done.
    * Source/WebCore/Modules/webcodecs/WebCodecsAudioEncoder.cpp:
    (WebCore::WebCodecsAudioEncoder::configure): Ditto.
    * Source/WebCore/Modules/webcodecs/WebCodecsVideoDecoder.cpp:
    (WebCore::WebCodecsVideoDecoder::configure): Ditto.
    * Source/WebCore/Modules/webcodecs/WebCodecsVideoEncoder.cpp:
    (WebCore::WebCodecsVideoEncoder::configure): Ditto.

    Canonical link: https://commits.webkit.org/[email protected]
    Identifier: 301765.374@safari-7623-branch

Canonical link: https://commits.webkit.org/305877.136@webkitglib/2.52


  Commit: 4cc27c002e06134a13ce263747057c76df22f45e
      
https://github.com/WebKit/WebKit/commit/4cc27c002e06134a13ce263747057c76df22f45e
  Author: Claudio Saavedra <[email protected]>
  Date:   2026-03-02 (Mon, 02 Mar 2026)

  Changed paths:
    A LayoutTests/fast/rendering/collapsed-scrollbar-crash-expected.txt
    A LayoutTests/fast/rendering/collapsed-scrollbar-crash.html
    M Source/WebCore/rendering/RenderElement.h
    M Source/WebCore/rendering/RenderScrollbarPart.h

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

    [WebKit][Main+SU] [292b7257c3a80358] ASAN_SEGV | 
WebCore::RenderBox::localRectsForRepaint; 
WebCore::RenderObject::clippedOverflowRect; 
WebCore::RenderObject::repaintSlowRepaintObject
    https://bugs.webkit.org/show_bug.cgi?id=302377

    Reviewed by Simon Fraser.

    RenderScrollbarPart doesn't have an enclosing layer,
    so we can short-circuit the check in RenderElement
    and return false always.

    Test: fast/rendering/collapsed-scrollbar-crash.html

    * LayoutTests/fast/rendering/collapsed-scrollbar-crash-expected.txt: Added.
    * LayoutTests/fast/rendering/collapsed-scrollbar-crash.html: Added.
    * Source/WebCore/rendering/RenderElement.h:
    * Source/WebCore/rendering/RenderScrollbarPart.h:

    Canonical link: https://commits.webkit.org/[email protected]

    Identifier: 301765.379@safari-7623-branch

Canonical link: https://commits.webkit.org/305877.137@webkitglib/2.52


  Commit: 40c5aeb406ce1f46463de260c5af4f3f742d01f0
      
https://github.com/WebKit/WebKit/commit/40c5aeb406ce1f46463de260c5af4f3f742d01f0
  Author: Claudio Saavedra <[email protected]>
  Date:   2026-03-02 (Mon, 02 Mar 2026)

  Changed paths:
    A 
LayoutTests/fast/css-grid-layout/subgrid-with-changing-writing-mode-crash-expected.txt
    A 
LayoutTests/fast/css-grid-layout/subgrid-with-changing-writing-mode-crash.html
    M Source/WebCore/rendering/RenderGrid.cpp

  Log Message:
  -----------
  Cherry-pick 301765.380@safari-7623-branch (3c710b2a33ae). 
https://bugs.webkit.org/show_bug.cgi?id=301640

    [WebKit][Main+SU] [80bcc69aeb72643f] ASAN_ILL | 
WebCore::GridTrackSizingAlgorithm::copyUsedTrackSizesForSubgrid; 
WebCore::GridTrackSizingAlgorithm::run; WebCore::RenderGrid::layoutGrid
    https://bugs.webkit.org/show_bug.cgi?id=301640

    Reviewed by Sammy Gill.

    When the writing mode of a grid changes orthogonally, there might
    be incongruences in how parent and subgrid tracks relate. This needs
    to be taken into account so that later the track sizing algorithm can
    try to copy the track sizes for its subgrid. If the writing mode direction
     has changed during a style change for a grid, call setNeedsItemPlacement()
    for subgrid children.

    Test: fast/css-grid-layout/subgrid-with-changing-writing-mode-crash.html

    * 
LayoutTests/fast/css-grid-layout/subgrid-with-changing-writing-mode-crash-expected.txt:
 Added.
    * 
LayoutTests/fast/css-grid-layout/subgrid-with-changing-writing-mode-crash.html: 
Added.
    * Source/WebCore/rendering/RenderGrid.cpp:
    (WebCore::RenderGrid::styleDidChange):

    Canonical link: https://commits.webkit.org/[email protected]
    Identifier: 301765.380@safari-7623-branch

Canonical link: https://commits.webkit.org/305877.138@webkitglib/2.52


  Commit: d039d6161b78694ee3228f08f82c9d28ce7515bd
      
https://github.com/WebKit/WebKit/commit/d039d6161b78694ee3228f08f82c9d28ce7515bd
  Author: Youenn Fablet <[email protected]>
  Date:   2026-03-02 (Mon, 02 Mar 2026)

  Changed paths:
    M 
Source/ThirdParty/libwebrtc/Source/third_party/libvpx/source/libvpx/vp9/encoder/vp9_encoder.h

  Log Message:
  -----------
  Cherry-pick 301765.383@safari-7623-branch (9d4b06b7a57c). 
https://bugs.webkit.org/show_bug.cgi?id=302863

    Potential 'out of bounds' issue committed to upstream libwebrtc
    rdar://166200109

    Reviewed by Chris Dumez.

    Cherry-picking of 
https://github.com/webmproject/libvpx/commit/d6e5cd7132d59d3cea86d06c9aae26f95fe00adb.

    Identifier: 301765.383@safari-7623-branch

Canonical link: https://commits.webkit.org/305877.139@webkitglib/2.52


  Commit: 096d705ff415618ae1c9e661b3d1733770c7c57a
      
https://github.com/WebKit/WebKit/commit/096d705ff415618ae1c9e661b3d1733770c7c57a
  Author: Yijia Huang <[email protected]>
  Date:   2026-03-02 (Mon, 02 Mar 2026)

  Changed paths:
    A JSTests/stress/map-forEach.js
    M Source/JavaScriptCore/dfg/DFGNodeType.h

  Log Message:
  -----------
  Cherry-pick 301765.392@safari-7623-branch (47b55468bf82). 
https://bugs.webkit.org/show_bug.cgi?id=304950

    [JSC] MapIterationEntryKey should have NodeResultJS, not NodeResultInt32
    https://bugs.webkit.org/show_bug.cgi?id=304950
    rdar://167200795

    Reviewed by Marcus Plutowski.

    MapIterationEntryKey returns arbitrary JSValues (map keys can be any type),
    so it should be declared with NodeResultJS to match MapIterationEntryValue.

    Test: JSTests/stress/map-forEach.js
    Identifier: 301765.392@safari-7623-branch

Canonical link: https://commits.webkit.org/305877.140@webkitglib/2.52


  Commit: 517d573084dc5dea120cd3fcc7cf20a1a32aec91
      
https://github.com/WebKit/WebKit/commit/517d573084dc5dea120cd3fcc7cf20a1a32aec91
  Author: Yusuke Suzuki <[email protected]>
  Date:   2026-03-02 (Mon, 02 Mar 2026)

  Changed paths:
    A JSTests/stress/stack-overflow-llint-large-params-and-large-locals.js
    M Source/JavaScriptCore/llint/LLIntSlowPaths.cpp
    M Source/JavaScriptCore/llint/LowLevelInterpreter32_64.asm
    M Source/JavaScriptCore/llint/LowLevelInterpreter64.asm

  Log Message:
  -----------
  Cherry-pick 301765.393@safari-7623-branch (a0aac3a0fa8f). 
https://bugs.webkit.org/show_bug.cgi?id=304973

    [JSC] LLInt arity fix needs to be done against sp
    https://bugs.webkit.org/show_bug.cgi?id=304973
    rdar://167110398

    Reviewed by Yijia Huang.

    When performing LLInt arity fixup, it is done after checking local
    frame's adjustment. This means that we should do stack overflow check
    with `newlyAddedSlots + sp` with soft-stack-limit instead of
    `newlyAddedSlots + cfr`.
    Note that JIT code is doing the right things already.

    Test: JSTests/stress/stack-overflow-llint-large-params-and-large-locals.js

    * JSTests/stress/stack-overflow-llint-large-params-and-large-locals.js: 
Added.
    (shouldThrow):
    * Source/JavaScriptCore/llint/LLIntSlowPaths.cpp:
    (JSC::LLInt::arityCheckFor):
    * Source/JavaScriptCore/llint/LowLevelInterpreter32_64.asm:
    * Source/JavaScriptCore/llint/LowLevelInterpreter64.asm:

    Identifier: 301765.393@safari-7623-branch

Canonical link: https://commits.webkit.org/305877.141@webkitglib/2.52


  Commit: b37590bc6144bf17216aba71f0647b753b86aef7
      
https://github.com/WebKit/WebKit/commit/b37590bc6144bf17216aba71f0647b753b86aef7
  Author: Kai Tamkun <[email protected]>
  Date:   2026-03-02 (Mon, 02 Mar 2026)

  Changed paths:
    A JSTests/wasm/function-references/nullability.js
    M Source/JavaScriptCore/wasm/WasmExceptionType.h
    M Source/JavaScriptCore/wasm/WasmOperations.cpp
    M Source/JavaScriptCore/wasm/js/WasmToJS.cpp

  Log Message:
  -----------
  Cherry-pick 301765.394@safari-7623-branch (f5681488766e). 
https://bugs.webkit.org/show_bug.cgi?id=304356

    [WASM] Return-from-JS conversions should check the nullability
    rdar://159086936
    https://bugs.webkit.org/show_bug.cgi?id=304356

    Reviewed by Yusuke Suzuki.

    Adds a null check when returning from JS to Wasm and the expected
    return type is a nonnullable reference type.

    Test: JSTests/wasm/function-references/nullability.js

    * JSTests/wasm/function-references/nullability.js: Added.
    (module):
    (async nullability): Tests whether the null check occurs
    * Source/JavaScriptCore/wasm/WasmExceptionType.h: Added 
ExceptionType::TypeErrorUnexpectedNullReference
    (JSC::Wasm::isTypeErrorExceptionType):
    * Source/JavaScriptCore/wasm/WasmOperations.cpp: Added null checks
    (JSC::Wasm::operationWasmToJSExitMarshalReturnValues):
    (JSC::Wasm::operationWasmToJSExitIterateResults):
    (JSC::Wasm::operationIterateResults):
    * Source/JavaScriptCore/wasm/js/WasmToJS.cpp: Added null check
    (JSC::Wasm::wasmToJS): JIT now emits a null check when needed

    Identifier: 301765.394@safari-7623-branch

Canonical link: https://commits.webkit.org/305877.142@webkitglib/2.52


  Commit: 11384cc8e996bd50786c96ffd558a1bc84e6e710
      
https://github.com/WebKit/WebKit/commit/11384cc8e996bd50786c96ffd558a1bc84e6e710
  Author: Ryosuke Niwa <[email protected]>
  Date:   2026-03-02 (Mon, 02 Mar 2026)

  Changed paths:
    M Source/WebCore/xml/XMLSerializer.cpp
    M Tools/TestWebKitAPI/Tests/WebKitCocoa/WKWebViewConfiguration.mm

  Log Message:
  -----------
  Cherry-pick 301765.396@safari-7623-branch (f6a3e33e70aa). 
https://bugs.webkit.org/show_bug.cgi?id=305020

    XMLSerializer.serializeToString leaks URLs used by web extensions
    https://bugs.webkit.org/show_bug.cgi?id=305020
    <rdar://165629762>

    Reviewed by Chris Dumez and Wenson Hsieh.

    Fix the bug by masking out custom scheme URLs in XMLSerializer.

    Test: Tools/TestWebKitAPI/Tests/WebKitCocoa/WKWebViewConfiguration.mm

    * Source/WebCore/xml/XMLSerializer.cpp:
    (WebCore::XMLSerializer::serializeToString):
    * Tools/TestWebKitAPI/Tests/WebKitCocoa/WKWebViewConfiguration.mm:
    (TEST(WebKit, ConfigurationMaskedURLSchemes)):

    Identifier: 301765.396@safari-7623-branch

Canonical link: https://commits.webkit.org/305877.143@webkitglib/2.52


  Commit: 5f674db4fab08e0608dc2c13e15c9f07c035eda8
      
https://github.com/WebKit/WebKit/commit/5f674db4fab08e0608dc2c13e15c9f07c035eda8
  Author: Shu-yu Guo <[email protected]>
  Date:   2026-03-02 (Mon, 02 Mar 2026)

  Changed paths:
    A JSTests/stress/ftl-valuerepreduction-double-undefined.js
    M Source/JavaScriptCore/dfg/DFGMultiGetByOffsetData.h
    M Source/JavaScriptCore/dfg/DFGValueRepReductionPhase.cpp

  Log Message:
  -----------
  Cherry-pick 301765.399@safari-7623-branch (d32d4c76087a). 
https://bugs.webkit.org/show_bug.cgi?id=305064

    [JSC] Convert MultiGetByOffsetMethod constants to double if needed
    https://bugs.webkit.org/show_bug.cgi?id=305064
    rdar://167109771

    Reviewed by Keith Miller and Yusuke Suzuki.

    FTL's ValueRep reduction phase can convert MultiGetByOffset nodes to
    NodeResultDouble with non-Number constant values in its cases. These 
constants
    are non-Cells and should be converted to Numbers.

    Test: JSTests/stress/ftl-valuerepreduction-double-undefined.js
    Identifier: 301765.399@safari-7623-branch

Canonical link: https://commits.webkit.org/305877.144@webkitglib/2.52


  Commit: d93b7bc3977ef3857fb4f36e3c38d305d13c8524
      
https://github.com/WebKit/WebKit/commit/d93b7bc3977ef3857fb4f36e3c38d305d13c8524
  Author: Kai Tamkun <[email protected]>
  Date:   2026-03-02 (Mon, 02 Mar 2026)

  Changed paths:
    A JSTests/stress/object-assign-inline-storage.js
    M Source/JavaScriptCore/runtime/ObjectConstructorInlines.h

  Log Message:
  -----------
  Cherry-pick 301765.401@safari-7623-branch (dabdca54351d). 
https://bugs.webkit.org/show_bug.cgi?id=305094

    Don't attempt to copy nonexistent inline storage in fast object cloning
    rdar://167110652

    Reviewed by Yusuke Suzuki.

    This prevents an attempt to access inline storage in Object.assign when
    there is no inline storage to copy.

    Added a test that crashed with an assertion failure in debug mode
    before these changes.

    * JSTests/stress/object-assign-inline-storage.js: Added.
    (shouldBe):
    (C):
    * Source/JavaScriptCore/runtime/ObjectConstructorInlines.h:
    (JSC::checkStructureForClone): Renamed from checkStrucureForClone.
    (JSC::objectCloneFast): Add a check for inline storage presence.
    (JSC::tryCreateObjectViaCloning): Updated an invocation name.
    (JSC::checkStrucureForClone): Renamed to checkStructureForClone.

    Identifier: 301765.401@safari-7623-branch

Canonical link: https://commits.webkit.org/305877.145@webkitglib/2.52


  Commit: 8eecd3f655a42656521923f5c63e5203986384e0
      
https://github.com/WebKit/WebKit/commit/8eecd3f655a42656521923f5c63e5203986384e0
  Author: Anand Srinivasan <[email protected]>
  Date:   2026-03-02 (Mon, 02 Mar 2026)

  Changed paths:
    A JSTests/stress/dfg-miscompiles-new-regexp.js
    M Source/JavaScriptCore/dfg/DFGOperations.cpp

  Log Message:
  -----------
  Cherry-pick 301765.415@safari-7623-branch (4175b9cec24d). 
https://bugs.webkit.org/show_bug.cgi?id=305161

    operationNewRegExpUntyped should call constructRegExp with a newTarget
    https://bugs.webkit.org/show_bug.cgi?id=305161
    rdar://167199047

    Reviewed by Mark Lam.

    If the RegExp constructor is invoked using "new" then it must have a
    valid newTarget, but not if it is invoked as a function call
    ("RegExp(...)" vs. "new RegExp(...)"). This patch updates DFG to
    follow the specification correctly, since previously the code did not
    pass in a newTarget to the RegExp constructor.

    operationNewRegExpUntyped() is only called for the NewRegExpUntyped DFG 
node.
    NewRegExpUntyped is only emitted by the bytecode parser if newTargetNode != 
callTargetNode.
    Hence, the newTarget value that should be passes is the callTargetNode i.e. 
the RegExp constructor.

    See https://262.ecma-international.org/#sec-regexp-pattern-flags
    specifying what should be passed in newTarget.

    ```
    2. If NewTarget is undefined, then
      a. Let newTarget be the active function object.
    ```

    Test: JSTests/stress/dfg-miscompiles-new-regexp.js

    * JSTests/stress/dfg-miscompiles-new-regexp.js: Added.
    (opt):
    (main):
    * Source/JavaScriptCore/dfg/DFGOperations.cpp:
    (JSC::DFG::JSC_DEFINE_JIT_OPERATION):

    Identifier: 301765.415@safari-7623-branch

Canonical link: https://commits.webkit.org/305877.146@webkitglib/2.52


  Commit: 126896bdc12c9501bee26e345f3e1f31c3dff3f6
      
https://github.com/WebKit/WebKit/commit/126896bdc12c9501bee26e345f3e1f31c3dff3f6
  Author: Gerald Squelart <[email protected]>
  Date:   2026-03-02 (Mon, 02 Mar 2026)

  Changed paths:
    M Source/WebKit/Shared/WebCoreArgumentCoders.serialization.in

  Log Message:
  -----------
  Cherry-pick 301765.416@safari-7623-branch (7c8da3f7f913). 
https://bugs.webkit.org/show_bug.cgi?id=305033

    Catch multiplication overflow in bytesPerRow() validator
    https://bugs.webkit.org/show_bug.cgi?id=305033
    rdar://167621238

    Reviewed by Dan Glastonbury.

    The multiplication `m_size->width() * *bytesPerPixel` could overflow
    into a negative number, allowing the validation to pass for very large
    widths.
    Fixed by using `WTF::safeMultiply`, which checks for overflows relative
    to the result type.

    * Source/WebKit/Shared/WebCoreArgumentCoders.serialization.in:

    Identifier: 301765.416@safari-7623-branch

Canonical link: https://commits.webkit.org/305877.147@webkitglib/2.52


  Commit: e3b9c38b30698efccf8709d6e95f0aa370f85237
      
https://github.com/WebKit/WebKit/commit/e3b9c38b30698efccf8709d6e95f0aa370f85237
  Author: Basuke Suzuki <[email protected]>
  Date:   2026-03-02 (Mon, 02 Mar 2026)

  Changed paths:
    A LayoutTests/http/tests/security/resources/page-with-text.html
    A 
LayoutTests/http/tests/security/text-fragment/popup-cross-origin-blocked-expected.txt
    A 
LayoutTests/http/tests/security/text-fragment/popup-cross-origin-blocked.html
    A 
LayoutTests/http/tests/security/text-fragment/popup-same-origin-allowed-expected.txt
    A 
LayoutTests/http/tests/security/text-fragment/popup-same-origin-allowed.html
    M Source/WebCore/page/LocalFrameView.cpp

  Log Message:
  -----------
  Cherry-pick 301765.417@safari-7623-branch (75bcb9f43cbe). 
https://bugs.webkit.org/show_bug.cgi?id=305033

    Block text fragments in cross-origin window.open() popups.
    rdar://163804356

    Reviewed by Chris Dumez.

    This implements a security defense against timing side-channel attacks
    using Text Fragments in cross-origin popups.

    The exploit pattern:
    w = window.open("attacker.com");
    w.location = "victim.com";
    w.location = "victim.com#:~:text=secret";
    w.location = "about:blank";
    // Measure timing to detect if text was found

    Defense mechanism:
    - Add checkTextFragmentSecurity() in LocalFrameView.cpp
    - Block text fragments when opener origin ≠ current document origin
    - Allow text fragments in same-origin popups (legitimate use)
    - Allow text fragments in top-level navigation (no opener)

    This aligns with Chrome's 2019 defense (commit c0d3c4cca8b16),
    which uses RelatedPages().size() check. WebKit uses a simpler
    cross-origin check that achieves the same security goal.

    The fix does not affect about:blank origin inheritance or WPT tests,
    as those don't use text fragments.

    Tests: http/tests/security/text-fragment/popup-cross-origin-blocked.html
           http/tests/security/text-fragment/popup-same-origin-allowed.html
    * LayoutTests/http/tests/security/resources/page-with-text.html: Added.
    * 
LayoutTests/http/tests/security/text-fragment/popup-cross-origin-blocked-expected.txt:
 Added.
    * 
LayoutTests/http/tests/security/text-fragment/popup-cross-origin-blocked.html: 
Added.
    * 
LayoutTests/http/tests/security/text-fragment/popup-same-origin-allowed-expected.txt:
 Added.
    * 
LayoutTests/http/tests/security/text-fragment/popup-same-origin-allowed.html: 
Added.
    * Source/WebCore/page/LocalFrameView.cpp:
    (WebCore::checkTextFragmentSecurity):
    (WebCore::LocalFrameView::scrollToTextFragment):

    Identifier: 301765.417@safari-7623-branch

Canonical link: https://commits.webkit.org/305877.148@webkitglib/2.52


  Commit: f8dba4532a836a799f909a4ece11c079362d797d
      
https://github.com/WebKit/WebKit/commit/f8dba4532a836a799f909a4ece11c079362d797d
  Author: Shu-yu Guo <[email protected]>
  Date:   2026-03-02 (Mon, 02 Mar 2026)

  Changed paths:
    A JSTests/wasm/stress/omg-tail-call-clobber-scratch-register-2.js
    M Source/JavaScriptCore/wasm/WasmBBQJIT.cpp
    M Source/JavaScriptCore/wasm/WasmOMGIRGenerator.cpp
    M Source/JavaScriptCore/wasm/WasmOMGIRGenerator32_64.cpp

  Log Message:
  -----------
  Cherry-pick 301765.350@safari-7623-branch (271320645405). 
https://bugs.webkit.org/show_bug.cgi?id=303444

    [JSC] Clobber scratch register in OMG tail call on non-x64
    https://bugs.webkit.org/show_bug.cgi?id=303444
    rdar://165678403

    Reviewed by Yusuke Suzuki.

    The OMG tailcall patchpoint uses the scratch register. Currently, the 
scratch
    is not clobbered early because on x64 we exhaust all registers if we do so.
    Because of that, prepareTailCallImpl has special handling for saving and
    restoring the scratch if it happens to alias one of the inputs. This special
    save and restore has issues on ARM as the stack pointer arithmetic itself 
may
    use the scratch, which complicates the restoring.

    This PR makes the tail call patchpoint code architecture specific to confine
    the save/restore complexity to x64. The special scratch register 
save/restore
    paths are kept only on x64. On non-x64 platforms, the scratch registers are
    clobbered early so they can never alias an input.

    There is also a drive-by fix for negating float32s on x64 in BBQ, as the 
test
    case also causes an assertion failure there.

    Test: JSTests/wasm/stress/omg-tail-call-clobber-scratch-register-2.js
    Identifier: 301765.350@safari-7623-branch

Canonical link: https://commits.webkit.org/305877.149@webkitglib/2.52


  Commit: d539944b2fd702f264905857b595dbca9c8b71c7
      
https://github.com/WebKit/WebKit/commit/d539944b2fd702f264905857b595dbca9c8b71c7
  Author: Rob Buis <[email protected]>
  Date:   2026-03-02 (Mon, 02 Mar 2026)

  Changed paths:
    A LayoutTests/svg/filters/filter-insert-button-crash-expected.txt
    A LayoutTests/svg/filters/filter-insert-button-crash.html
    M Source/WebCore/page/LocalFrameViewLayoutContext.cpp
    M Source/WebCore/page/LocalFrameViewLayoutContext.h
    M Source/WebCore/rendering/RenderObject.cpp
    M Source/WebCore/rendering/updating/RenderTreeBuilderInline.cpp

  Log Message:
  -----------
  Cherry-pick 301765.361@safari-7623-branch (e218dd58cf7e). 
https://bugs.webkit.org/show_bug.cgi?id=301140

      Cherry-pick [email protected] (6c8a256d475b). 
rdar://137178583

        [SVG] Don't repaint when referenced resources change if the renderer is 
not in-tree yet
        https://bugs.webkit.org/show_bug.cgi?id=301140
        rdar://137178583

        Reviewed by Alan Baradlay.

        When moving svg resources around it's possible to end up
        triggering a repaint before the renderer is in-tree. To
        fix that, add API for blocking repaints and start using that
        while in RenderTreeBuilder::Inline::splitFlow.

        Test: svg/filters/filter-insert-button-crash.html

        * LayoutTests/svg/filters/filter-insert-button-crash-expected.txt: 
Added.
        * LayoutTests/svg/filters/filter-insert-button-crash.html: Added.
        * Source/WebCore/page/LocalFrameViewLayoutContext.cpp:
        (WebCore::RepaintBlocker::RepaintBlocker):
        (WebCore::RepaintBlocker::~RepaintBlocker):
        * Source/WebCore/page/LocalFrameViewLayoutContext.h:
        * Source/WebCore/rendering/RenderObject.cpp:
        (WebCore::RenderObject::repaint const):
        * Source/WebCore/rendering/updating/RenderTreeBuilderInline.cpp:
        (WebCore::RenderTreeBuilder::Inline::splitFlow):

        Canonical link: 
https://commits.webkit.org/[email protected]

    Identifier: 301765.361@safari-7623-branch

Canonical link: https://commits.webkit.org/305877.150@webkitglib/2.52


  Commit: 5a18bd80ccd0cde300bc8f4018cfe08d6f173664
      
https://github.com/WebKit/WebKit/commit/5a18bd80ccd0cde300bc8f4018cfe08d6f173664
  Author: Claudio Saavedra <[email protected]>
  Date:   2026-03-02 (Mon, 02 Mar 2026)

  Changed paths:
    A LayoutTests/highlight/highlight-crash-2-expected.txt
    A LayoutTests/highlight/highlight-crash-2.html
    M Source/WebCore/Modules/highlight/Highlight.cpp

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

    [WebKit][Main] [76d1bb47f067ac21] ASAN_SEGV | 
WebCore::Highlight::clearFromSetLike; WebCore::HighlightRegistry::clear; 
WebCore::Document::commonTeardown
    https://bugs.webkit.org/show_bug.cgi?id=304176

    Reviewed by Chris Dumez.

    With the right disposing order, it is possible to cause reentrancy to
    Highlight::clearFromSetLike(). This is due to the ownership relationship
    between 
Document->HighlightRegistry->Highlight->HighlightRange->Range->Document.

    The attached test shows an example of how to achieve this (a dangling 
document
    that is only attached to a Range gets disposed during another Document's 
disposing,
    causing a reentrant call to Highlight::clearFromSetLike()).

    Ensure Highlight::clearFromSetLike() is safely reentrant by exchanging
    Highlight::m_highlightRanges with an empty vector so that any potentially 
reentrant
    call is a no-op.

    Test: highlight/highlight-crash-2.html

    * LayoutTests/highlight/highlight-crash-2-expected.txt: Added.
    * LayoutTests/highlight/highlight-crash-2.html: Added.
    * Source/WebCore/Modules/highlight/Highlight.cpp:
    (WebCore::Highlight::clearFromSetLike):

    Canonical link: 
https://commits.webkit.org/[email protected]

    Identifier: 301765.424@safari-7623-branch

Canonical link: https://commits.webkit.org/305877.151@webkitglib/2.52


  Commit: 47c3d50e6d98e7aad700f51697802b962b8cfebb
      
https://github.com/WebKit/WebKit/commit/47c3d50e6d98e7aad700f51697802b962b8cfebb
  Author: Claudio Saavedra <[email protected]>
  Date:   2026-03-02 (Mon, 02 Mar 2026)

  Changed paths:
    M Source/WebCore/Modules/highlight/Highlight.cpp

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

    [WebKit][Main] [76d1bb47f067ac21] ASAN_SEGV | 
WebCore::Highlight::clearFromSetLike; WebCore::HighlightRegistry::clear; 
WebCore::Document::commonTeardown
    https://bugs.webkit.org/show_bug.cgi?id=304176

    Reviewed by Chris Dumez.

    Follow-up after [email protected] to improve the bug fix.

    Covered by existing test.

    * Source/WebCore/Modules/highlight/Highlight.cpp:
    (WebCore::Highlight::clearFromSetLike):

    Canonical link: 
https://commits.webkit.org/[email protected]

    Identifier: 301765.426@safari-7623-branch

Canonical link: https://commits.webkit.org/305877.152@webkitglib/2.52


  Commit: 98747698f147c3bc4353029759c00b1bba1d3486
      
https://github.com/WebKit/WebKit/commit/98747698f147c3bc4353029759c00b1bba1d3486
  Author: Yusuke Suzuki <[email protected]>
  Date:   2026-03-02 (Mon, 02 Mar 2026)

  Changed paths:
    A JSTests/stress/dfg-proto-fold-invalidate3.js
    M Source/JavaScriptCore/bytecode/GetByStatus.cpp

  Log Message:
  -----------
  Cherry-pick 744106342146. https://bugs.webkit.org/show_bug.cgi?id=305521

    [JSC] GetByStatus::computeFor has race condition around swapped object's 
structure checks
    https://bugs.webkit.org/show_bug.cgi?id=305521
    rdar://155413221

    Reviewed by Yijia Huang.

    Now ObjectPropertyCondition is propertly created. But it is possible
    that this finally registered ObjectPropertyCondition's structures are
    not having a proper condition we would like. We are obtainining objects
    from the condition and checking structure's characteristics.

    Test: JSTests/stress/dfg-proto-fold-invalidate3.js

    * JSTests/stress/dfg-proto-fold-invalidate3.js: Added.
    (shouldBe):
    (opt):
    (watchCalleeProperty):
    (async sleep):
    (createClonedArguments):
    (p):
    (async main):
    * Source/JavaScriptCore/bytecode/GetByStatus.cpp:
    (JSC::GetByStatus::computeFor):

    Identifier: 305413.33@safari-7624-branch

    Canonical link: https://commits.webkit.org/301765.428@safari-7623-branch

Canonical link: https://commits.webkit.org/305877.153@webkitglib/2.52


  Commit: a72089c954e43a6662f6f737a43a5192588b3430
      
https://github.com/WebKit/WebKit/commit/a72089c954e43a6662f6f737a43a5192588b3430
  Author: Yusuke Suzuki <[email protected]>
  Date:   2026-03-02 (Mon, 02 Mar 2026)

  Changed paths:
    A JSTests/wasm/stress/ipint-variable-length-gc-opcodes.js
    M Source/JavaScriptCore/llint/InPlaceInterpreter64.asm
    M Source/JavaScriptCore/wasm/WasmBBQJIT.h
    M Source/JavaScriptCore/wasm/WasmBBQJIT32_64.cpp
    M Source/JavaScriptCore/wasm/WasmBBQJIT64.cpp
    M Source/JavaScriptCore/wasm/WasmConstExprGenerator.cpp
    M Source/JavaScriptCore/wasm/WasmFunctionParser.h
    M Source/JavaScriptCore/wasm/WasmIPIntGenerator.cpp
    M Source/JavaScriptCore/wasm/WasmIPIntGenerator.h
    M Source/JavaScriptCore/wasm/WasmOMGIRGenerator.cpp
    M Source/JavaScriptCore/wasm/WasmOMGIRGenerator32_64.cpp

  Log Message:
  -----------
  Cherry-pick 37d2b52a42b9. https://bugs.webkit.org/show_bug.cgi?id=305813

    [JSC] IPInt PC move should be recorded one for prefixed opcodes
    https://bugs.webkit.org/show_bug.cgi?id=305813
    rdar://168478682

    Reviewed by Keith Miller and Dan Hecht.

    Prefixed opcodes in IPInt (GC, SIMD, etc.) have subsequent sub-opcode to
    dispatch actual instruction. However this sub-opcode is encoded via
    VarUInt32 LEB. This means that opcode can have multiple different ways
    to be encoded (e.g. one value can be represeted via 2 byte, 3 byte,
    etc.). As a result, we should not use advancePC(constant) since
    instruction is variable-length. This patch fixes the issue using
    advancePC(constant).

    Test: JSTests/wasm/stress/ipint-variable-length-gc-opcodes.js

    * JSTests/wasm/stress/ipint-variable-length-gc-opcodes.js: Added.
    (createRedundantLEB128):
    (encodeVarUInt32):
    (testRefI31RedundantEncoding):
    (testI31GetRedundantEncoding):
    (testArrayLenRedundantEncoding):
    (testArrayFillRedundantEncoding):
    (testArrayCopyRedundantEncoding):
    (testExternAnyConvertRedundantEncoding):
    * Source/JavaScriptCore/llint/InPlaceInterpreter64.asm:
    * Source/JavaScriptCore/wasm/WasmBBQJIT.h:
    * Source/JavaScriptCore/wasm/WasmBBQJIT32_64.cpp:
    (JSC::Wasm::BBQJITImpl::BBQJIT::addSIMDConstant):
    (JSC::Wasm::BBQJITImpl::BBQJIT::addSIMDExtractLane):
    (JSC::Wasm::BBQJITImpl::BBQJIT::addSIMDReplaceLane):
    (JSC::Wasm::BBQJITImpl::BBQJIT::addConstant): Deleted.
    (JSC::Wasm::BBQJITImpl::BBQJIT::addExtractLane): Deleted.
    (JSC::Wasm::BBQJITImpl::BBQJIT::addReplaceLane): Deleted.
    * Source/JavaScriptCore/wasm/WasmBBQJIT64.cpp:
    (JSC::Wasm::BBQJITImpl::BBQJIT::addSIMDConstant):
    (JSC::Wasm::BBQJITImpl::BBQJIT::addSIMDExtractLane):
    (JSC::Wasm::BBQJITImpl::BBQJIT::addSIMDReplaceLane):
    (JSC::Wasm::BBQJITImpl::BBQJIT::addConstant): Deleted.
    (JSC::Wasm::BBQJITImpl::BBQJIT::addExtractLane): Deleted.
    (JSC::Wasm::BBQJITImpl::BBQJIT::addReplaceLane): Deleted.
    * Source/JavaScriptCore/wasm/WasmConstExprGenerator.cpp:
    (JSC::Wasm::ConstExprGenerator::addSIMDConstant):
    * Source/JavaScriptCore/wasm/WasmFunctionParser.h:
    (JSC::Wasm::FunctionParser<Context>::simd):
    * Source/JavaScriptCore/wasm/WasmIPIntGenerator.cpp:
    (JSC::Wasm::IPIntGenerator::addSIMDSplat):
    (JSC::Wasm::IPIntGenerator::addSIMDShuffle):
    (JSC::Wasm::IPIntGenerator::addSIMDShift):
    (JSC::Wasm::IPIntGenerator::addSIMDExtmul):
    (JSC::Wasm::IPIntGenerator::addSIMDConstant):
    (JSC::Wasm::IPIntGenerator::addSIMDExtractLane):
    (JSC::Wasm::IPIntGenerator::addSIMDReplaceLane):
    (JSC::Wasm::IPIntGenerator::addSIMDI_V):
    (JSC::Wasm::IPIntGenerator::addSIMDV_V):
    (JSC::Wasm::IPIntGenerator::addSIMDBitwiseSelect):
    (JSC::Wasm::IPIntGenerator::addSIMDRelOp):
    (JSC::Wasm::IPIntGenerator::addSIMDV_VV):
    (JSC::Wasm::IPIntGenerator::addRefI31):
    (JSC::Wasm::IPIntGenerator::addI31GetS):
    (JSC::Wasm::IPIntGenerator::addI31GetU):
    (JSC::Wasm::IPIntGenerator::addArrayLen):
    (JSC::Wasm::IPIntGenerator::addArrayFill):
    (JSC::Wasm::IPIntGenerator::addArrayCopy):
    (JSC::Wasm::IPIntGenerator::addAnyConvertExtern):
    (JSC::Wasm::IPIntGenerator::addExternConvertAny):
    (JSC::Wasm::IPIntGenerator::addExtractLane): Deleted.
    (JSC::Wasm::IPIntGenerator::addReplaceLane): Deleted.
    * Source/JavaScriptCore/wasm/WasmIPIntGenerator.h:
    * Source/JavaScriptCore/wasm/WasmOMGIRGenerator.cpp:
    (JSC::Wasm::OMGIRGenerator::addSIMDConstant):
    (JSC::Wasm::OMGIRGenerator::addSIMDExtractLane):
    (JSC::Wasm::OMGIRGenerator::addSIMDReplaceLane):
    (JSC::Wasm::OMGIRGenerator::addExtractLane): Deleted.
    (JSC::Wasm::OMGIRGenerator::addReplaceLane): Deleted.
    * Source/JavaScriptCore/wasm/WasmOMGIRGenerator32_64.cpp:
    (JSC::Wasm::OMGIRGenerator::addSIMDConstant):
    (JSC::Wasm::OMGIRGenerator::addSIMDExtractLane):
    (JSC::Wasm::OMGIRGenerator::addSIMDReplaceLane):
    (JSC::Wasm::OMGIRGenerator::addExtractLane): Deleted.
    (JSC::Wasm::OMGIRGenerator::addReplaceLane): Deleted.

    Identifier: 301765.432@safari-7623-branch

    Canonical link: https://commits.webkit.org/[email protected]

Canonical link: https://commits.webkit.org/305877.154@webkitglib/2.52


  Commit: 1064341ff52b6a6d6cc9eb17c6132e8815d6ac2b
      
https://github.com/WebKit/WebKit/commit/1064341ff52b6a6d6cc9eb17c6132e8815d6ac2b
  Author: Matthew Finkel <[email protected]>
  Date:   2026-03-02 (Mon, 02 Mar 2026)

  Changed paths:
    M Source/WebKit/NetworkProcess/NetworkSession.cpp
    M Source/WebKit/NetworkProcess/NetworkSessionCreationParameters.h
    M 
Source/WebKit/NetworkProcess/NetworkSessionCreationParameters.serialization.in
    M 
Source/WebKit/NetworkProcess/PrivateClickMeasurement/PrivateClickMeasurementManager.cpp
    M 
Source/WebKit/NetworkProcess/PrivateClickMeasurement/PrivateClickMeasurementManager.h
    M 
Source/WebKit/NetworkProcess/PrivateClickMeasurement/PrivateClickMeasurementManagerInterface.cpp
    M 
Source/WebKit/NetworkProcess/PrivateClickMeasurement/PrivateClickMeasurementManagerInterface.h
    M 
Source/WebKit/NetworkProcess/PrivateClickMeasurement/PrivateClickMeasurementNetworkLoader.cpp
    M 
Source/WebKit/NetworkProcess/PrivateClickMeasurement/PrivateClickMeasurementNetworkLoader.h
    M 
Source/WebKit/NetworkProcess/PrivateClickMeasurement/cocoa/PrivateClickMeasurementNetworkLoaderCocoa.mm
    M 
Source/WebKit/Shared/EntryPointUtilities/Cocoa/Daemon/PCMDaemonEntryPoint.mm
    M Source/WebKit/UIProcess/WebsiteData/soup/WebsiteDataStoreSoup.cpp

  Log Message:
  -----------
  Cherry-pick 22d708a2fd38. https://bugs.webkit.org/show_bug.cgi?id=305951

    [PCM] Connections for Private Click Measurement are not proxied
    https://bugs.webkit.org/show_bug.cgi?id=305951
    rdar://168552975

    Reviewed by Alex Christensen.

    This has a couple missing pieces. The expectation is that reports are sent 
via
    a proxied connection, and requests for fraud prevention key material is 
fetched
    over a proxied connection. Currently, these connections are not proxied 
because
    they are not:
      1) associated with the application bundle (e.g, Safari)
      2) considered "third party" resource requests

    This PR plumbs through the application bundle identifier or audit token,
    depending on which one is available, and it sets the request as a cross-site
    subresource request. As a safe guard, this patch also requires failing 
closed
    when the connection is not proxied.

    * Source/WebKit/NetworkProcess/NetworkSession.cpp:
    (WebKit::managerOrProxy):
    * 
Source/WebKit/NetworkProcess/PrivateClickMeasurement/PrivateClickMeasurementManager.cpp:
    (WebKit::PrivateClickMeasurementManager::create):
    (WebKit::PrivateClickMeasurementManager::PrivateClickMeasurementManager):
    (WebKit::PrivateClickMeasurementManager::getTokenPublicKey):
    (WebKit::PrivateClickMeasurementManager::getSignedUnlinkableTokenForSource):
    
(WebKit::PrivateClickMeasurementManager::getSignedUnlinkableTokenForDestination):
    (WebKit::PrivateClickMeasurementManager::fireConversionRequestImpl):
    * 
Source/WebKit/NetworkProcess/PrivateClickMeasurement/PrivateClickMeasurementManager.h:
    * 
Source/WebKit/NetworkProcess/PrivateClickMeasurement/PrivateClickMeasurementManagerInterface.cpp:
    (WebKit::PCM::initializePCMStorageInDirectory):
    * 
Source/WebKit/NetworkProcess/PrivateClickMeasurement/PrivateClickMeasurementManagerInterface.h:
    * 
Source/WebKit/NetworkProcess/PrivateClickMeasurement/PrivateClickMeasurementNetworkLoader.cpp:
    (WebKit::PCM::NetworkLoader::start):
    * 
Source/WebKit/NetworkProcess/PrivateClickMeasurement/PrivateClickMeasurementNetworkLoader.h:
    * 
Source/WebKit/NetworkProcess/PrivateClickMeasurement/cocoa/PrivateClickMeasurementNetworkLoaderCocoa.mm:
    (WebKit::PCM::statelessSessionWithoutRedirectsSingleton):
    (WebKit::PCM::NetworkLoader::start):
    * 
Source/WebKit/Shared/EntryPointUtilities/Cocoa/Daemon/PCMDaemonEntryPoint.mm:
    (WebKit::PCMDaemonMain):

    Identifier: 301765.433@safari-7623-branch
    (cherry picked from commit 22d708a2fd385c9649f4d2f1f96a1e2f76070649)

    Canonical link: 
https://commits.webkit.org/[email protected]

Canonical link: https://commits.webkit.org/305877.155@webkitglib/2.52


  Commit: 41012f4a8dcdc319618f7264a964a4c7f96656b0
      
https://github.com/WebKit/WebKit/commit/41012f4a8dcdc319618f7264a964a4c7f96656b0
  Author: Jer Noble <[email protected]>
  Date:   2026-03-02 (Mon, 02 Mar 2026)

  Changed paths:
    M Source/WebCore/Modules/streams/ReadableStreamDefaultReader.cpp

  Log Message:
  -----------
  Cherry-pick 308072@main (58e404642c05). 
https://bugs.webkit.org/show_bug.cgi?id=308309

    CRASH in WebCore::ReadableStream::state() const
    rdar://170652029
    https://bugs.webkit.org/show_bug.cgi?id=308309

    Reviewed by Youenn Fablet.

    The Streams specification states for the releaseLock() method
    that the method should return early if `this.[[stream]]` is
    undefined, but it was possible for releaseLock() to call
    genericRelease() if m_stream was null, if m_internalDefaultReader
    is also null.

    Return early from releaseLock() if m_stream is null, and
    due to the law of unintended consequences, also return early
    from genericRelease() if m_stream is null, as well as from
    genericCancel() and setup(), which have similar issues.

    * Source/WebCore/Modules/streams/ReadableStreamDefaultReader.cpp:
    (WebCore::ReadableStreamDefaultReader::releaseLock):
    (WebCore::ReadableStreamDefaultReader::setup):
    (WebCore::ReadableStreamDefaultReader::genericRelease):

    Canonical link: https://commits.webkit.org/308072@main

Canonical link: https://commits.webkit.org/305877.156@webkitglib/2.52


Compare: https://github.com/WebKit/WebKit/compare/d6e6276f013a...41012f4a8dcd

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

Reply via email to