[webkit-changes] [WebKit/WebKit] b0bf5b: B3 should use isTuple rather than `== Tuple`

Keith Miller noreply at github.com
Wed Oct 11 13:32:29 PDT 2023


  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: b0bf5bc7500a53126e9c9fb1f9ee1d978db07c7c
      https://github.com/WebKit/WebKit/commit/b0bf5bc7500a53126e9c9fb1f9ee1d978db07c7c
  Author: Keith Miller <keith_miller at apple.com>
  Date:   2023-10-11 (Wed, 11 Oct 2023)

  Changed paths:
    A JSTests/wasm/stress/multi-tuple.js
    M Source/JavaScriptCore/b3/B3Type.h
    M Source/JavaScriptCore/b3/B3Validate.cpp
    M Source/JavaScriptCore/b3/air/AirCustom.cpp

  Log Message:
  -----------
  B3 should use isTuple rather than `== Tuple`
https://bugs.webkit.org/show_bug.cgi?id=261467
rdar://115283700

Reviewed by Yusuke Suzuki.

Recently we switched to using the default operator== for many JSC classes (https://commits.webkit.org/267645@main).
This however revealed a subtle inconsistency where we would allow Tuple TypeKinds to be compared to Types but
didn't check the tuple index. Now that we use the default operator== we started checking the tuple index, which
causes assertion failures in validation.

To fix this validation should use `isTuple()` rather than `== Tuple`. Also, to prevent others from making the
same mistake, we now `ASSERT` the implicit `Type` constructor isn't receiving a `Tuple`.

* JSTests/wasm/stress/multi-tuple.js: Added.
(type.1.call.1.call.0.return.export.string_appeared_here.func.2.async test):
* Source/JavaScriptCore/b3/B3Type.h:
(JSC::B3::Type::Type):
* Source/JavaScriptCore/b3/B3Validate.cpp:
* Source/JavaScriptCore/b3/air/AirCustom.cpp:
(JSC::B3::Air::CCallCustom::isValidForm):

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




More information about the webkit-changes mailing list