From 0f778652c31b9fd37cb7829aec9a017732c03b7b Mon Sep 17 00:00:00 2001 From: CharlieTap Date: Fri, 19 Sep 2025 16:13:45 +0100 Subject: [PATCH 1/2] separate out remaining memory 64 tests into proposal directory --- test/core/binary-leb128.wast | 34 ------------------------- test/core/memory64/binary-leb12864.wast | 33 ++++++++++++++++++++++++ test/core/memory64/table64.wast | 22 ++++++++++++++++ test/core/memory64/table_grow64.wast | 34 +++++++++++++++++++++++++ test/core/table.wast | 24 ----------------- test/core/table_grow.wast | 32 ----------------------- 6 files changed, 89 insertions(+), 90 deletions(-) create mode 100644 test/core/memory64/binary-leb12864.wast create mode 100644 test/core/memory64/table64.wast create mode 100644 test/core/memory64/table_grow64.wast diff --git a/test/core/binary-leb128.wast b/test/core/binary-leb128.wast index c6b79eb95a..27584c7f6b 100644 --- a/test/core/binary-leb128.wast +++ b/test/core/binary-leb128.wast @@ -878,40 +878,6 @@ ) "integer too large" ) -(module binary - "\00asm" "\01\00\00\00" - "\01\04\01\60\00\00" ;; Type section - "\03\02\01\00" ;; Function section - "\05\03\01\04\00" ;; Memory section (flags: i64) - "\0a\13\01" ;; Code section - ;; function 0 - "\11\00" ;; local type count - "\42\00" ;; i64.const 0 - "\28" ;; i32.load - "\02" ;; alignment 2 - "\ff\ff\ff\ff\ff\ff\ff\ff\ff\01" ;; offset 2^64 - 1 - "\1a" ;; drop - "\0b" ;; end -) -(assert_malformed - (module binary - "\00asm" "\01\00\00\00" - "\01\04\01\60\00\00" ;; Type section - "\03\02\01\00" ;; Function section - "\05\03\01\04\00" ;; Memory section (flags: i64) - "\0a\13\01" ;; Code section - ;; function 0 - "\11\00" ;; local type count - "\42\00" ;; i64.const 0 - "\28" ;; i32.load - "\02" ;; alignment 2 - "\ff\ff\ff\ff\ff\ff\ff\ff\ff\02" ;; offset 2^64 (one unused bit set) - "\1a" ;; drop - "\0b" ;; end - ) - "integer too large" -) - ;; Signed LEB128s sign-extend (assert_malformed (module binary diff --git a/test/core/memory64/binary-leb12864.wast b/test/core/memory64/binary-leb12864.wast new file mode 100644 index 0000000000..21a07ecb84 --- /dev/null +++ b/test/core/memory64/binary-leb12864.wast @@ -0,0 +1,33 @@ +(module binary + "\00asm" "\01\00\00\00" + "\01\04\01\60\00\00" ;; Type section + "\03\02\01\00" ;; Function section + "\05\03\01\04\00" ;; Memory section (flags: i64) + "\0a\13\01" ;; Code section + ;; function 0 + "\11\00" ;; local type count + "\42\00" ;; i64.const 0 + "\28" ;; i32.load + "\02" ;; alignment 2 + "\ff\ff\ff\ff\ff\ff\ff\ff\ff\01" ;; offset 2^64 - 1 + "\1a" ;; drop + "\0b" ;; end +) +(assert_malformed + (module binary + "\00asm" "\01\00\00\00" + "\01\04\01\60\00\00" ;; Type section + "\03\02\01\00" ;; Function section + "\05\03\01\04\00" ;; Memory section (flags: i64) + "\0a\13\01" ;; Code section + ;; function 0 + "\11\00" ;; local type count + "\42\00" ;; i64.const 0 + "\28" ;; i32.load + "\02" ;; alignment 2 + "\ff\ff\ff\ff\ff\ff\ff\ff\ff\02" ;; offset 2^64 (one unused bit set) + "\1a" ;; drop + "\0b" ;; end + ) + "integer too large" +) diff --git a/test/core/memory64/table64.wast b/test/core/memory64/table64.wast new file mode 100644 index 0000000000..45ed0b9ea9 --- /dev/null +++ b/test/core/memory64/table64.wast @@ -0,0 +1,22 @@ +(module (table i64 0 funcref)) +(module (table i64 1 funcref)) +(module (table i64 0 0 funcref)) +(module (table i64 0 1 funcref)) +(module (table i64 1 256 funcref)) +(module (table i64 0 65536 funcref)) +(module (table i64 0 0xffff_ffff funcref)) +(module (table i64 0 0x1_0000_0000 funcref)) +(module definition (table i64 0xffff_ffff_ffff_ffff funcref)) +(module (table i64 0 0xffff_ffff_ffff_ffff funcref)) + +(module (table i64 0 funcref) (table i64 0 funcref)) +(module (table (import "spectest" "table64") i64 0 funcref) (table i64 0 funcref)) + +(assert_invalid + (module (table i64 1 0 funcref)) + "size minimum must not be greater than maximum" +) +(assert_invalid + (module (table i64 0xffff_ffff 0 funcref)) + "size minimum must not be greater than maximum" +) diff --git a/test/core/memory64/table_grow64.wast b/test/core/memory64/table_grow64.wast new file mode 100644 index 0000000000..7019e0d901 --- /dev/null +++ b/test/core/memory64/table_grow64.wast @@ -0,0 +1,34 @@ +(module + (table $t64 i64 0 externref) + + (func (export "get-t64") (param $i i64) (result externref) (table.get $t64 (local.get $i))) + (func (export "set-t64") (param $i i64) (param $r externref) (table.set $t64 (local.get $i) (local.get $r))) + (func (export "grow-t64") (param $sz i64) (param $init externref) (result i64) + (table.grow $t64 (local.get $init) (local.get $sz)) + ) + (func (export "size-t64") (result i64) (table.size $t64)) +) + +(assert_return (invoke "size-t64") (i64.const 0)) +(assert_trap (invoke "set-t64" (i64.const 0) (ref.extern 2)) "out of bounds table access") +(assert_trap (invoke "get-t64" (i64.const 0)) "out of bounds table access") + +(assert_return (invoke "grow-t64" (i64.const 1) (ref.null extern)) (i64.const 0)) +(assert_return (invoke "size-t64") (i64.const 1)) +(assert_return (invoke "get-t64" (i64.const 0)) (ref.null extern)) +(assert_return (invoke "set-t64" (i64.const 0) (ref.extern 2))) +(assert_return (invoke "get-t64" (i64.const 0)) (ref.extern 2)) +(assert_trap (invoke "set-t64" (i64.const 1) (ref.extern 2)) "out of bounds table access") +(assert_trap (invoke "get-t64" (i64.const 1)) "out of bounds table access") + +(assert_return (invoke "grow-t64" (i64.const 4) (ref.extern 3)) (i64.const 1)) +(assert_return (invoke "size-t64") (i64.const 5)) +(assert_return (invoke "get-t64" (i64.const 0)) (ref.extern 2)) +(assert_return (invoke "set-t64" (i64.const 0) (ref.extern 2))) +(assert_return (invoke "get-t64" (i64.const 0)) (ref.extern 2)) +(assert_return (invoke "get-t64" (i64.const 1)) (ref.extern 3)) +(assert_return (invoke "get-t64" (i64.const 4)) (ref.extern 3)) +(assert_return (invoke "set-t64" (i64.const 4) (ref.extern 4))) +(assert_return (invoke "get-t64" (i64.const 4)) (ref.extern 4)) +(assert_trap (invoke "set-t64" (i64.const 5) (ref.extern 2)) "out of bounds table access") +(assert_trap (invoke "get-t64" (i64.const 5)) "out of bounds table access") diff --git a/test/core/table.wast b/test/core/table.wast index 56baa1984d..629e174cf9 100644 --- a/test/core/table.wast +++ b/test/core/table.wast @@ -45,30 +45,6 @@ "table size" ) -;; Same as above but with i64 address types - -(module (table i64 0 funcref)) -(module (table i64 1 funcref)) -(module (table i64 0 0 funcref)) -(module (table i64 0 1 funcref)) -(module (table i64 1 256 funcref)) -(module (table i64 0 65536 funcref)) -(module (table i64 0 0xffff_ffff funcref)) -(module (table i64 0 0x1_0000_0000 funcref)) -(module definition (table i64 0xffff_ffff_ffff_ffff funcref)) -(module (table i64 0 0xffff_ffff_ffff_ffff funcref)) - -(module (table i64 0 funcref) (table i64 0 funcref)) -(module (table (import "spectest" "table64") i64 0 funcref) (table i64 0 funcref)) - -(assert_invalid - (module (table i64 1 0 funcref)) - "size minimum must not be greater than maximum" -) -(assert_invalid - (module (table i64 0xffff_ffff 0 funcref)) - "size minimum must not be greater than maximum" -) ;; Elem segments with no table diff --git a/test/core/table_grow.wast b/test/core/table_grow.wast index e0872d78db..3bed0ab116 100644 --- a/test/core/table_grow.wast +++ b/test/core/table_grow.wast @@ -12,14 +12,6 @@ ) (func (export "size") (result i32) (table.size $t)) - (table $t64 i64 0 externref) - - (func (export "get-t64") (param $i i64) (result externref) (table.get $t64 (local.get $i))) - (func (export "set-t64") (param $i i64) (param $r externref) (table.set $t64 (local.get $i) (local.get $r))) - (func (export "grow-t64") (param $sz i64) (param $init externref) (result i64) - (table.grow $t64 (local.get $init) (local.get $sz)) - ) - (func (export "size-t64") (result i64) (table.size $t64)) ) (assert_return (invoke "size") (i32.const 0)) @@ -46,30 +38,6 @@ (assert_trap (invoke "set" (i32.const 5) (ref.extern 2)) "out of bounds table access") (assert_trap (invoke "get" (i32.const 5)) "out of bounds table access") -;; Similar to above but for t64 -(assert_return (invoke "size-t64") (i64.const 0)) -(assert_trap (invoke "set-t64" (i64.const 0) (ref.extern 2)) "out of bounds table access") -(assert_trap (invoke "get-t64" (i64.const 0)) "out of bounds table access") - -(assert_return (invoke "grow-t64" (i64.const 1) (ref.null extern)) (i64.const 0)) -(assert_return (invoke "size-t64") (i64.const 1)) -(assert_return (invoke "get-t64" (i64.const 0)) (ref.null extern)) -(assert_return (invoke "set-t64" (i64.const 0) (ref.extern 2))) -(assert_return (invoke "get-t64" (i64.const 0)) (ref.extern 2)) -(assert_trap (invoke "set-t64" (i64.const 1) (ref.extern 2)) "out of bounds table access") -(assert_trap (invoke "get-t64" (i64.const 1)) "out of bounds table access") - -(assert_return (invoke "grow-t64" (i64.const 4) (ref.extern 3)) (i64.const 1)) -(assert_return (invoke "size-t64") (i64.const 5)) -(assert_return (invoke "get-t64" (i64.const 0)) (ref.extern 2)) -(assert_return (invoke "set-t64" (i64.const 0) (ref.extern 2))) -(assert_return (invoke "get-t64" (i64.const 0)) (ref.extern 2)) -(assert_return (invoke "get-t64" (i64.const 1)) (ref.extern 3)) -(assert_return (invoke "get-t64" (i64.const 4)) (ref.extern 3)) -(assert_return (invoke "set-t64" (i64.const 4) (ref.extern 4))) -(assert_return (invoke "get-t64" (i64.const 4)) (ref.extern 4)) -(assert_trap (invoke "set-t64" (i64.const 5) (ref.extern 2)) "out of bounds table access") -(assert_trap (invoke "get-t64" (i64.const 5)) "out of bounds table access") ;; Reject growing to size outside i32 value range (module From 6a0cf32884d3d39aae1fee8cae65e0a9f19e4db2 Mon Sep 17 00:00:00 2001 From: CharlieTap Date: Fri, 19 Sep 2025 17:31:45 +0100 Subject: [PATCH 2/2] rename binary leb128 64 test script --- .../core/memory64/{binary-leb12864.wast => binary_leb128_64.wast} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename test/core/memory64/{binary-leb12864.wast => binary_leb128_64.wast} (100%) diff --git a/test/core/memory64/binary-leb12864.wast b/test/core/memory64/binary_leb128_64.wast similarity index 100% rename from test/core/memory64/binary-leb12864.wast rename to test/core/memory64/binary_leb128_64.wast