Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: 06e92c10a5725ff226b8ba6a00cc428614d781a0
      
https://github.com/WebKit/WebKit/commit/06e92c10a5725ff226b8ba6a00cc428614d781a0
  Author: Dan Hecht <dan.he...@apple.com>
  Date:   2025-05-22 (Thu, 22 May 2025)

  Changed paths:
    A JSTests/wasm/gc/ref-i31-eq.js
    M Source/JavaScriptCore/llint/InPlaceInterpreter64.asm
    M Source/JavaScriptCore/wasm/WasmBBQJIT64.cpp

  Log Message:
  -----------
  [WASM GC] Fix BBQJIT::addRefI31 on constant expression
https://bugs.webkit.org/show_bug.cgi?id=293207
rdar://151653787

Reviewed by Yusuke Suzuki.

The constant evaluation path is constructing the final
i32.ref value incorrectly. The lhs of | is promoted to
signed 64-bits. So, when the constant had bit 30 set
(high bit of the i31), the sign was extended all the way
to 64 bits, rather than 32 bits.

This would not be noticible when doing i31.get_{u, s}
but is noticible when using the value as a ref, e.g. ref.eq.

Bonus: cleanup in InPlaceInterpreter64.asm is a no-op
but the value being pushed is the 64-bit ref, so use pushQuad().

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



To unsubscribe from these emails, change your notification settings at 
https://github.com/WebKit/WebKit/settings/notifications
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to