From 6467567aa8f5a7cd0b3c2b8c2fb3461f3863ccdb Mon Sep 17 00:00:00 2001 From: Alon Zakai Date: Thu, 10 Sep 2026 09:07:56 -0700 Subject: [PATCH 1/8] call --- src/wasm.h | 2 +- test/gtest/sizes.cpp | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/wasm.h b/src/wasm.h index 601acbadc80..69ea1f66e61 100644 --- a/src/wasm.h +++ b/src/wasm.h @@ -953,9 +953,9 @@ class Call : public SpecificExpression { public: Call(MixedArena& allocator) : operands(allocator) {} + bool isReturn = false; ExpressionList operands; Name target; - bool isReturn = false; void finalize(); }; diff --git a/test/gtest/sizes.cpp b/test/gtest/sizes.cpp index a421b56fa54..b5112b6718d 100644 --- a/test/gtest/sizes.cpp +++ b/test/gtest/sizes.cpp @@ -16,7 +16,7 @@ TEST(SizesTest, ExpressionSizes) { EXPECT_EQ(sizeof(Loop), 32u); EXPECT_EQ(sizeof(Break), 40u); EXPECT_EQ(sizeof(Switch), 72u); - EXPECT_EQ(sizeof(Call), 64u); + EXPECT_EQ(sizeof(Call), 56u); EXPECT_EQ(sizeof(CallIndirect), 80u); EXPECT_EQ(sizeof(LocalGet), 16u); EXPECT_EQ(sizeof(LocalSet), 24u); From 679ac0541c9822e278c4281f9f917151fe8a5f9e Mon Sep 17 00:00:00 2001 From: Alon Zakai Date: Thu, 10 Sep 2026 09:09:16 -0700 Subject: [PATCH 2/8] calls --- src/wasm.h | 6 ++++-- test/gtest/sizes.cpp | 4 ++-- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/src/wasm.h b/src/wasm.h index 69ea1f66e61..d6822a7bd4b 100644 --- a/src/wasm.h +++ b/src/wasm.h @@ -963,11 +963,12 @@ class Call : public SpecificExpression { class CallIndirect : public SpecificExpression { public: CallIndirect(MixedArena& allocator) : operands(allocator) {} + + bool isReturn = false; HeapType heapType; ExpressionList operands; Expression* target; Name table; - bool isReturn = false; void finalize(); }; @@ -1672,9 +1673,10 @@ class I31Get : public SpecificExpression { class CallRef : public SpecificExpression { public: CallRef(MixedArena& allocator) : operands(allocator) {} + + bool isReturn = false; ExpressionList operands; Expression* target; - bool isReturn = false; void finalize(); }; diff --git a/test/gtest/sizes.cpp b/test/gtest/sizes.cpp index b5112b6718d..7a57f638e43 100644 --- a/test/gtest/sizes.cpp +++ b/test/gtest/sizes.cpp @@ -17,7 +17,7 @@ TEST(SizesTest, ExpressionSizes) { EXPECT_EQ(sizeof(Break), 40u); EXPECT_EQ(sizeof(Switch), 72u); EXPECT_EQ(sizeof(Call), 56u); - EXPECT_EQ(sizeof(CallIndirect), 80u); + EXPECT_EQ(sizeof(CallIndirect), 72u); EXPECT_EQ(sizeof(LocalGet), 16u); EXPECT_EQ(sizeof(LocalSet), 24u); EXPECT_EQ(sizeof(GlobalGet), 24u); @@ -73,7 +73,7 @@ TEST(SizesTest, ExpressionSizes) { EXPECT_EQ(sizeof(TupleExtract), 24u); EXPECT_EQ(sizeof(RefI31), 24u); EXPECT_EQ(sizeof(I31Get), 32u); - EXPECT_EQ(sizeof(CallRef), 64u); + EXPECT_EQ(sizeof(CallRef), 56u); EXPECT_EQ(sizeof(RefTest), 32u); EXPECT_EQ(sizeof(RefCast), 32u); EXPECT_EQ(sizeof(RefGetDesc), 24u); From daadfc1fa05d9ef49397e9e8b562ac12d1b97cb6 Mon Sep 17 00:00:00 2001 From: Alon Zakai Date: Thu, 10 Sep 2026 09:09:41 -0700 Subject: [PATCH 3/8] more --- src/wasm.h | 2 +- test/gtest/sizes.cpp | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/wasm.h b/src/wasm.h index d6822a7bd4b..acf4cfc2799 100644 --- a/src/wasm.h +++ b/src/wasm.h @@ -1664,8 +1664,8 @@ class I31Get : public SpecificExpression { I31Get() = default; I31Get(MixedArena& allocator) {} - Expression* i31; bool signed_ = false; + Expression* i31; void finalize(); }; diff --git a/test/gtest/sizes.cpp b/test/gtest/sizes.cpp index 7a57f638e43..3c55e5a007f 100644 --- a/test/gtest/sizes.cpp +++ b/test/gtest/sizes.cpp @@ -72,7 +72,7 @@ TEST(SizesTest, ExpressionSizes) { EXPECT_EQ(sizeof(TupleMake), 48u); EXPECT_EQ(sizeof(TupleExtract), 24u); EXPECT_EQ(sizeof(RefI31), 24u); - EXPECT_EQ(sizeof(I31Get), 32u); + EXPECT_EQ(sizeof(I31Get), 24u); EXPECT_EQ(sizeof(CallRef), 56u); EXPECT_EQ(sizeof(RefTest), 32u); EXPECT_EQ(sizeof(RefCast), 32u); From 41e56b21b9b25d580bf1c5143b88509357ee18d6 Mon Sep 17 00:00:00 2001 From: Alon Zakai Date: Thu, 10 Sep 2026 09:10:59 -0700 Subject: [PATCH 4/8] more --- src/wasm.h | 4 ++-- test/gtest/sizes.cpp | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/wasm.h b/src/wasm.h index acf4cfc2799..100c087d1bf 100644 --- a/src/wasm.h +++ b/src/wasm.h @@ -1062,12 +1062,12 @@ class AtomicRMW : public SpecificExpression { AtomicRMW(MixedArena& allocator) : AtomicRMW() {} AtomicRMWOp op; + MemoryOrder order = MemoryOrder::SeqCst; uint8_t bytes; Address offset; Expression* ptr; Expression* value; Name memory; - MemoryOrder order = MemoryOrder::SeqCst; void finalize(); }; @@ -1078,12 +1078,12 @@ class AtomicCmpxchg : public SpecificExpression { AtomicCmpxchg(MixedArena& allocator) : AtomicCmpxchg() {} uint8_t bytes; + MemoryOrder order = MemoryOrder::SeqCst; Address offset; Expression* ptr; Expression* expected; Expression* replacement; Name memory; - MemoryOrder order = MemoryOrder::SeqCst; void finalize(); }; diff --git a/test/gtest/sizes.cpp b/test/gtest/sizes.cpp index 3c55e5a007f..8035f7a924f 100644 --- a/test/gtest/sizes.cpp +++ b/test/gtest/sizes.cpp @@ -34,8 +34,8 @@ TEST(SizesTest, ExpressionSizes) { EXPECT_EQ(sizeof(MemoryGrow), 32u); EXPECT_EQ(sizeof(Nop), 16u); EXPECT_EQ(sizeof(Unreachable), 16u); - EXPECT_EQ(sizeof(AtomicRMW), 64u); - EXPECT_EQ(sizeof(AtomicCmpxchg), 64u); + EXPECT_EQ(sizeof(AtomicRMW), 56u); + EXPECT_EQ(sizeof(AtomicCmpxchg), 56u); EXPECT_EQ(sizeof(AtomicWait), 64u); EXPECT_EQ(sizeof(AtomicNotify), 48u); EXPECT_EQ(sizeof(AtomicFence), 16u); From eae16b469498291e8e1e71dcd98e5c7ebf1389b4 Mon Sep 17 00:00:00 2001 From: Alon Zakai Date: Thu, 10 Sep 2026 09:11:36 -0700 Subject: [PATCH 5/8] more --- src/wasm.h | 4 ++-- test/gtest/sizes.cpp | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/wasm.h b/src/wasm.h index 100c087d1bf..8c8430fd4f8 100644 --- a/src/wasm.h +++ b/src/wasm.h @@ -1796,10 +1796,10 @@ class StructRMW : public SpecificExpression { StructRMW(MixedArena& allocator) {} AtomicRMWOp op; + MemoryOrder order; Index index; Expression* ref; Expression* value; - MemoryOrder order; void finalize(); }; @@ -1810,10 +1810,10 @@ class StructCmpxchg : public SpecificExpression { StructCmpxchg(MixedArena& allocator) {} Index index; + MemoryOrder order; Expression* ref; Expression* expected; Expression* replacement; - MemoryOrder order; void finalize(); }; diff --git a/test/gtest/sizes.cpp b/test/gtest/sizes.cpp index 8035f7a924f..da871e4d41d 100644 --- a/test/gtest/sizes.cpp +++ b/test/gtest/sizes.cpp @@ -81,8 +81,8 @@ TEST(SizesTest, ExpressionSizes) { EXPECT_EQ(sizeof(StructNew), 56u); EXPECT_EQ(sizeof(StructGet), 24u); EXPECT_EQ(sizeof(StructSet), 32u); - EXPECT_EQ(sizeof(StructRMW), 48u); - EXPECT_EQ(sizeof(StructCmpxchg), 48u); + EXPECT_EQ(sizeof(StructRMW), 40u); + EXPECT_EQ(sizeof(StructCmpxchg), 40u); EXPECT_EQ(sizeof(ArrayNew), 32u); EXPECT_EQ(sizeof(ArrayNewData), 40u); EXPECT_EQ(sizeof(ArrayNewElem), 40u); From b12b11b7d165327b1d107aab1d89599ea5d540ca Mon Sep 17 00:00:00 2001 From: Alon Zakai Date: Thu, 10 Sep 2026 09:12:20 -0700 Subject: [PATCH 6/8] more --- src/wasm.h | 6 +++--- test/gtest/sizes.cpp | 6 +++--- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/src/wasm.h b/src/wasm.h index 8c8430fd4f8..04d50b32524 100644 --- a/src/wasm.h +++ b/src/wasm.h @@ -1148,8 +1148,8 @@ class SIMDReplace : public SpecificExpression { SIMDReplace(MixedArena& allocator) : SIMDReplace() {} SIMDReplaceOp op; - Expression* vec; uint8_t index; + Expression* vec; Expression* value; void finalize(); @@ -2043,10 +2043,10 @@ class ArrayRMW : public SpecificExpression { ArrayRMW(MixedArena& allocator) {} AtomicRMWOp op; + MemoryOrder order; Expression* ref; Expression* index; Expression* value; - MemoryOrder order; void finalize(); }; @@ -2057,10 +2057,10 @@ class ArrayCmpxchg : public SpecificExpression { ArrayCmpxchg(MixedArena& allocator) {} Expression* ref; + MemoryOrder order; Expression* index; Expression* expected; Expression* replacement; - MemoryOrder order; void finalize(); }; diff --git a/test/gtest/sizes.cpp b/test/gtest/sizes.cpp index da871e4d41d..913427f617e 100644 --- a/test/gtest/sizes.cpp +++ b/test/gtest/sizes.cpp @@ -41,7 +41,7 @@ TEST(SizesTest, ExpressionSizes) { EXPECT_EQ(sizeof(AtomicFence), 16u); EXPECT_EQ(sizeof(Pause), 16u); EXPECT_EQ(sizeof(SIMDExtract), 24u); - EXPECT_EQ(sizeof(SIMDReplace), 40u); + EXPECT_EQ(sizeof(SIMDReplace), 32u); EXPECT_EQ(sizeof(SIMDShuffle), 48u); EXPECT_EQ(sizeof(SIMDTernary), 40u); EXPECT_EQ(sizeof(SIMDShift), 32u); @@ -96,8 +96,8 @@ TEST(SizesTest, ExpressionSizes) { EXPECT_EQ(sizeof(ArrayFill), 48u); EXPECT_EQ(sizeof(ArrayInitData), 56u); EXPECT_EQ(sizeof(ArrayInitElem), 56u); - EXPECT_EQ(sizeof(ArrayRMW), 48u); - EXPECT_EQ(sizeof(ArrayCmpxchg), 56u); + EXPECT_EQ(sizeof(ArrayRMW), 40u); + EXPECT_EQ(sizeof(ArrayCmpxchg), 48u); EXPECT_EQ(sizeof(RefAs), 24u); EXPECT_EQ(sizeof(StringNew), 40u); EXPECT_EQ(sizeof(StringConst), 24u); From e03b2536d5dcfdef2f9e305b737b2dff066df49c Mon Sep 17 00:00:00 2001 From: Alon Zakai Date: Thu, 10 Sep 2026 09:14:48 -0700 Subject: [PATCH 7/8] more --- src/wasm.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/wasm.h b/src/wasm.h index 04d50b32524..80a6d0dbd43 100644 --- a/src/wasm.h +++ b/src/wasm.h @@ -1147,8 +1147,8 @@ class SIMDReplace : public SpecificExpression { SIMDReplace() = default; SIMDReplace(MixedArena& allocator) : SIMDReplace() {} - SIMDReplaceOp op; uint8_t index; + SIMDReplaceOp op; Expression* vec; Expression* value; From 3b11f1164398ad6edbee58df31e3a5e70b9e025e Mon Sep 17 00:00:00 2001 From: Alon Zakai Date: Thu, 10 Sep 2026 09:17:01 -0700 Subject: [PATCH 8/8] more --- src/wasm.h | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/wasm.h b/src/wasm.h index 80a6d0dbd43..3007b07f7f4 100644 --- a/src/wasm.h +++ b/src/wasm.h @@ -1809,8 +1809,8 @@ class StructCmpxchg : public SpecificExpression { StructCmpxchg() = default; StructCmpxchg(MixedArena& allocator) {} - Index index; MemoryOrder order; + Index index; Expression* ref; Expression* expected; Expression* replacement; @@ -2042,8 +2042,8 @@ class ArrayRMW : public SpecificExpression { ArrayRMW() = default; ArrayRMW(MixedArena& allocator) {} - AtomicRMWOp op; MemoryOrder order; + AtomicRMWOp op; Expression* ref; Expression* index; Expression* value; @@ -2056,8 +2056,8 @@ class ArrayCmpxchg : public SpecificExpression { ArrayCmpxchg() = default; ArrayCmpxchg(MixedArena& allocator) {} - Expression* ref; MemoryOrder order; + Expression* ref; Expression* index; Expression* expected; Expression* replacement;