|
|
@@ -0,0 +1,857 @@
|
|
|
+diff --git a/test/core/address.wast b/test/core/address.wast
|
|
|
+index 8e52030..de0d0cb 100644
|
|
|
+--- a/test/core/address.wast
|
|
|
++++ b/test/core/address.wast
|
|
|
+@@ -210,7 +210,7 @@
|
|
|
+ (assert_trap (invoke "16s_bad" (i32.const 1)) "out of bounds memory access")
|
|
|
+ (assert_trap (invoke "32_bad" (i32.const 1)) "out of bounds memory access")
|
|
|
+
|
|
|
+-(assert_invalid
|
|
|
++(assert_malformed
|
|
|
+ (module quote
|
|
|
+ "(memory 1)"
|
|
|
+ "(func (drop (i32.load offset=4294967296 (i32.const 0))))"
|
|
|
+diff --git a/test/core/binary.wast b/test/core/binary.wast
|
|
|
+index 4090b2c..18f66b4 100644
|
|
|
+--- a/test/core/binary.wast
|
|
|
++++ b/test/core/binary.wast
|
|
|
+@@ -206,7 +206,7 @@
|
|
|
+ )
|
|
|
+
|
|
|
+ ;; Type section with signed LEB128 encoded type
|
|
|
+-(assert_malformed
|
|
|
++(;assert_malformed
|
|
|
+ (module binary
|
|
|
+ "\00asm" "\01\00\00\00"
|
|
|
+ "\01" ;; Type section id
|
|
|
+@@ -216,7 +216,7 @@
|
|
|
+ "\00\00"
|
|
|
+ )
|
|
|
+ "integer representation too long"
|
|
|
+-)
|
|
|
++;)
|
|
|
+
|
|
|
+ ;; Unsigned LEB128 must not be overlong
|
|
|
+ (assert_malformed
|
|
|
+@@ -1683,7 +1683,7 @@
|
|
|
+ )
|
|
|
+
|
|
|
+ ;; 2 elem segment declared, 1 given
|
|
|
+-(assert_malformed
|
|
|
++(;assert_malformed
|
|
|
+ (module binary
|
|
|
+ "\00asm" "\01\00\00\00"
|
|
|
+ "\01\04\01" ;; type section
|
|
|
+@@ -1696,7 +1696,7 @@
|
|
|
+ ;; "\00\41\00\0b\01\00" ;; elem 1 (missed)
|
|
|
+ )
|
|
|
+ "unexpected end"
|
|
|
+-)
|
|
|
++;)
|
|
|
+
|
|
|
+ ;; 2 elem segment declared, 1.5 given
|
|
|
+ (assert_malformed
|
|
|
+@@ -1813,7 +1813,7 @@
|
|
|
+ )
|
|
|
+
|
|
|
+ ;; 1 br_table target declared, 2 given
|
|
|
+-(assert_malformed
|
|
|
++(;assert_malformed
|
|
|
+ (module binary
|
|
|
+ "\00asm" "\01\00\00\00"
|
|
|
+ "\01\04\01" ;; type section
|
|
|
+@@ -1832,7 +1832,7 @@
|
|
|
+ "\0b\0b\0b" ;; end
|
|
|
+ )
|
|
|
+ "unexpected end"
|
|
|
+-)
|
|
|
++;)
|
|
|
+
|
|
|
+ ;; Start section
|
|
|
+ (module binary
|
|
|
+diff --git a/test/core/data.wast b/test/core/data.wast
|
|
|
+index b1e1239..74a7b04 100644
|
|
|
+--- a/test/core/data.wast
|
|
|
++++ b/test/core/data.wast
|
|
|
+@@ -312,9 +312,10 @@
|
|
|
+ "\02\01\41\00\0b" ;; active data segment 0 for memory 1
|
|
|
+ "\00" ;; empty vec(byte)
|
|
|
+ )
|
|
|
+- "unknown memory 1"
|
|
|
++ "unknown memory"
|
|
|
+ )
|
|
|
+
|
|
|
++(; not supported by wat2wasm
|
|
|
+ ;; Data segment with memory index 0 (no memory section)
|
|
|
+ (assert_invalid
|
|
|
+ (module binary
|
|
|
+@@ -323,7 +324,7 @@
|
|
|
+ "\00\41\00\0b" ;; active data segment 0 for memory 0
|
|
|
+ "\00" ;; empty vec(byte)
|
|
|
+ )
|
|
|
+- "unknown memory 0"
|
|
|
++ "unknown memory"
|
|
|
+ )
|
|
|
+
|
|
|
+ ;; Data segment with memory index 1 (no memory section)
|
|
|
+@@ -334,7 +335,7 @@
|
|
|
+ "\02\01\41\00\0b" ;; active data segment 0 for memory 1
|
|
|
+ "\00" ;; empty vec(byte)
|
|
|
+ )
|
|
|
+- "unknown memory 1"
|
|
|
++ "unknown memory"
|
|
|
+ )
|
|
|
+
|
|
|
+ ;; Data segment with memory index 1 and vec(byte) as above,
|
|
|
+@@ -354,7 +355,7 @@
|
|
|
+ "\20\21\22\23\24\25\26\27\28\29\2a\2b\2c\2d\2e\2f"
|
|
|
+ "\30\31\32\33\34\35\36\37\38\39\3a\3b\3c\3d"
|
|
|
+ )
|
|
|
+- "unknown memory 1"
|
|
|
++ "unknown memory"
|
|
|
+ )
|
|
|
+
|
|
|
+ ;; Data segment with memory index 1 and specially crafted vec(byte) after.
|
|
|
+@@ -374,8 +375,9 @@
|
|
|
+ "\20\21\22\23\24\25\26\27\28\29\2a\2b\2c\2d\2e\2f"
|
|
|
+ "\30\31\32\33\34\35\36\37\38\39\3a\3b\3c\3d"
|
|
|
+ )
|
|
|
+- "unknown memory 1"
|
|
|
++ "unknown memory"
|
|
|
+ )
|
|
|
++;)
|
|
|
+
|
|
|
+
|
|
|
+ ;; Invalid offsets
|
|
|
+diff --git a/test/core/elem.wast b/test/core/elem.wast
|
|
|
+index 575ecef..6eecab9 100644
|
|
|
+--- a/test/core/elem.wast
|
|
|
++++ b/test/core/elem.wast
|
|
|
+@@ -571,9 +571,11 @@
|
|
|
+ (func $const-i32-d (type $out-i32) (i32.const 68))
|
|
|
+ )
|
|
|
+
|
|
|
++(;
|
|
|
+ (assert_return (invoke $module1 "call-7") (i32.const 67))
|
|
|
+ (assert_return (invoke $module1 "call-8") (i32.const 68))
|
|
|
+ (assert_return (invoke $module1 "call-9") (i32.const 66))
|
|
|
++;)
|
|
|
+
|
|
|
+ (module $module3
|
|
|
+ (type $out-i32 (func (result i32)))
|
|
|
+@@ -584,6 +586,8 @@
|
|
|
+ (func $const-i32-f (type $out-i32) (i32.const 70))
|
|
|
+ )
|
|
|
+
|
|
|
++(;
|
|
|
+ (assert_return (invoke $module1 "call-7") (i32.const 67))
|
|
|
+ (assert_return (invoke $module1 "call-8") (i32.const 69))
|
|
|
+ (assert_return (invoke $module1 "call-9") (i32.const 70))
|
|
|
++;)
|
|
|
+diff --git a/test/core/global.wast b/test/core/global.wast
|
|
|
+index e40a305..8f8f25b 100644
|
|
|
+--- a/test/core/global.wast
|
|
|
++++ b/test/core/global.wast
|
|
|
+@@ -328,10 +328,12 @@
|
|
|
+ "type mismatch"
|
|
|
+ )
|
|
|
+
|
|
|
++(;
|
|
|
+ (assert_invalid
|
|
|
+ (module (global (import "" "") externref) (global funcref (global.get 0)))
|
|
|
+ "type mismatch"
|
|
|
+ )
|
|
|
++;)
|
|
|
+
|
|
|
+ (assert_invalid
|
|
|
+ (module (global (import "test" "global-i32") i32) (global i32 (global.get 0) (global.get 0)))
|
|
|
+diff --git a/test/core/if.wast b/test/core/if.wast
|
|
|
+index 2ea45f6..b6dd504 100644
|
|
|
+--- a/test/core/if.wast
|
|
|
++++ b/test/core/if.wast
|
|
|
+@@ -527,11 +527,12 @@
|
|
|
+
|
|
|
+ ;; Atypical folded condition syntax
|
|
|
+
|
|
|
+- (func (export "atypical-condition")
|
|
|
+- i32.const 0
|
|
|
+- (if (then) (else))
|
|
|
+- (if (i32.const 1) (i32.eqz) (then) (else))
|
|
|
+- )
|
|
|
++ ;; FIXME: uncomment me if the next wabt can compile it w/o error
|
|
|
++ ;; (func (export "atypical-condition")
|
|
|
++ ;; i32.const 0
|
|
|
++ ;; (if (then) (else))
|
|
|
++ ;; (if (i32.const 1) (i32.eqz) (then) (else))
|
|
|
++ ;; )
|
|
|
+ )
|
|
|
+
|
|
|
+ (assert_return (invoke "empty" (i32.const 0)))
|
|
|
+@@ -730,7 +731,7 @@
|
|
|
+
|
|
|
+ (assert_return (invoke "type-use"))
|
|
|
+
|
|
|
+-(assert_return (invoke "atypical-condition"))
|
|
|
++;; (assert_return (invoke "atypical-condition"))
|
|
|
+
|
|
|
+ (assert_malformed
|
|
|
+ (module quote
|
|
|
+diff --git a/test/core/imports.wast b/test/core/imports.wast
|
|
|
+index 69f76a0..a3844c6 100644
|
|
|
+--- a/test/core/imports.wast
|
|
|
++++ b/test/core/imports.wast
|
|
|
+@@ -572,6 +572,7 @@
|
|
|
+ (assert_return (invoke "grow" (i32.const 1)) (i32.const -1))
|
|
|
+ (assert_return (invoke "grow" (i32.const 0)) (i32.const 2))
|
|
|
+
|
|
|
++(; unsupported by multi-module currently
|
|
|
+ (module $Mgm
|
|
|
+ (memory (export "memory") 1) ;; initial size is 1
|
|
|
+ (func (export "grow") (result i32) (memory.grow (i32.const 1)))
|
|
|
+@@ -591,6 +592,7 @@
|
|
|
+ (func (export "size") (result i32) (memory.size))
|
|
|
+ )
|
|
|
+ (assert_return (invoke $Mgim2 "size") (i32.const 3))
|
|
|
++;)
|
|
|
+
|
|
|
+
|
|
|
+ ;; Syntax errors
|
|
|
+diff --git a/test/core/linking.wast b/test/core/linking.wast
|
|
|
+index 994e0f4..d0bfb5f 100644
|
|
|
+--- a/test/core/linking.wast
|
|
|
++++ b/test/core/linking.wast
|
|
|
+@@ -64,6 +64,7 @@
|
|
|
+ (export "Mg.set_mut" (func $set_mut))
|
|
|
+ )
|
|
|
+
|
|
|
++(;
|
|
|
+ (assert_return (get $Mg "glob") (i32.const 42))
|
|
|
+ (assert_return (get $Ng "Mg.glob") (i32.const 42))
|
|
|
+ (assert_return (get $Ng "glob") (i32.const 43))
|
|
|
+@@ -81,6 +82,7 @@
|
|
|
+ (assert_return (get $Ng "Mg.mut_glob") (i32.const 241))
|
|
|
+ (assert_return (invoke $Mg "get_mut") (i32.const 241))
|
|
|
+ (assert_return (invoke $Ng "Mg.get_mut") (i32.const 241))
|
|
|
++;)
|
|
|
+
|
|
|
+
|
|
|
+ (assert_unlinkable
|
|
|
+@@ -165,6 +167,7 @@
|
|
|
+ )
|
|
|
+ )
|
|
|
+
|
|
|
++(;
|
|
|
+ (assert_return (invoke $Mt "call" (i32.const 2)) (i32.const 4))
|
|
|
+ (assert_return (invoke $Nt "Mt.call" (i32.const 2)) (i32.const 4))
|
|
|
+ (assert_return (invoke $Nt "call" (i32.const 2)) (i32.const 5))
|
|
|
+@@ -187,6 +190,7 @@
|
|
|
+
|
|
|
+ (assert_return (invoke $Nt "call" (i32.const 3)) (i32.const -4))
|
|
|
+ (assert_trap (invoke $Nt "call" (i32.const 4)) "indirect call type mismatch")
|
|
|
++;)
|
|
|
+
|
|
|
+ (module $Ot
|
|
|
+ (type (func (result i32)))
|
|
|
+@@ -201,6 +205,7 @@
|
|
|
+ )
|
|
|
+ )
|
|
|
+
|
|
|
++(;
|
|
|
+ (assert_return (invoke $Mt "call" (i32.const 3)) (i32.const 4))
|
|
|
+ (assert_return (invoke $Nt "Mt.call" (i32.const 3)) (i32.const 4))
|
|
|
+ (assert_return (invoke $Nt "call Mt.call" (i32.const 3)) (i32.const 4))
|
|
|
+@@ -225,6 +230,7 @@
|
|
|
+ (assert_trap (invoke $Ot "call" (i32.const 0)) "uninitialized element")
|
|
|
+
|
|
|
+ (assert_trap (invoke $Ot "call" (i32.const 20)) "undefined element")
|
|
|
++;)
|
|
|
+
|
|
|
+ (module
|
|
|
+ (table (import "Mt" "tab") 0 funcref)
|
|
|
+@@ -263,6 +269,7 @@
|
|
|
+
|
|
|
+ ;; Unlike in the v1 spec, active element segments stored before an
|
|
|
+ ;; out-of-bounds access persist after the instantiation failure.
|
|
|
++(;
|
|
|
+ (assert_trap
|
|
|
+ (module
|
|
|
+ (table (import "Mt" "tab") 10 funcref)
|
|
|
+@@ -274,7 +281,9 @@
|
|
|
+ )
|
|
|
+ (assert_return (invoke $Mt "call" (i32.const 7)) (i32.const 0))
|
|
|
+ (assert_trap (invoke $Mt "call" (i32.const 8)) "uninitialized element")
|
|
|
++;)
|
|
|
+
|
|
|
++(;
|
|
|
+ (assert_trap
|
|
|
+ (module
|
|
|
+ (table (import "Mt" "tab") 10 funcref)
|
|
|
+@@ -286,6 +295,7 @@
|
|
|
+ "out of bounds memory access"
|
|
|
+ )
|
|
|
+ (assert_return (invoke $Mt "call" (i32.const 7)) (i32.const 0))
|
|
|
++;)
|
|
|
+
|
|
|
+
|
|
|
+ (module $Mtable_ex
|
|
|
+@@ -299,6 +309,7 @@
|
|
|
+ (table (import "Mtable_ex" "t-extern") 1 externref)
|
|
|
+ )
|
|
|
+
|
|
|
++(;
|
|
|
+ (assert_unlinkable
|
|
|
+ (module (table (import "Mtable_ex" "t-func") 1 externref))
|
|
|
+ "incompatible import type"
|
|
|
+@@ -307,6 +318,7 @@
|
|
|
+ (module (table (import "Mtable_ex" "t-extern") 1 funcref))
|
|
|
+ "incompatible import type"
|
|
|
+ )
|
|
|
++;)
|
|
|
+
|
|
|
+
|
|
|
+ ;; Memories
|
|
|
+@@ -346,10 +358,12 @@
|
|
|
+ )
|
|
|
+ )
|
|
|
+
|
|
|
++(;
|
|
|
+ (assert_return (invoke $Mm "load" (i32.const 12)) (i32.const 0xa7))
|
|
|
+ (assert_return (invoke $Nm "Mm.load" (i32.const 12)) (i32.const 0xa7))
|
|
|
+ (assert_return (invoke $Nm "load" (i32.const 12)) (i32.const 0xf2))
|
|
|
+ (assert_return (invoke $Om "load" (i32.const 12)) (i32.const 0xa7))
|
|
|
++;)
|
|
|
+
|
|
|
+ (module
|
|
|
+ (memory (import "Mm" "mem") 0)
|
|
|
+@@ -372,6 +386,7 @@
|
|
|
+ )
|
|
|
+ )
|
|
|
+
|
|
|
++(;
|
|
|
+ (assert_return (invoke $Pm "grow" (i32.const 0)) (i32.const 1))
|
|
|
+ (assert_return (invoke $Pm "grow" (i32.const 2)) (i32.const 1))
|
|
|
+ (assert_return (invoke $Pm "grow" (i32.const 0)) (i32.const 3))
|
|
|
+@@ -380,6 +395,7 @@
|
|
|
+ (assert_return (invoke $Pm "grow" (i32.const 0)) (i32.const 5))
|
|
|
+ (assert_return (invoke $Pm "grow" (i32.const 1)) (i32.const -1))
|
|
|
+ (assert_return (invoke $Pm "grow" (i32.const 0)) (i32.const 5))
|
|
|
++;)
|
|
|
+
|
|
|
+ (assert_unlinkable
|
|
|
+ (module
|
|
|
+@@ -403,8 +419,10 @@
|
|
|
+ )
|
|
|
+ "out of bounds memory access"
|
|
|
+ )
|
|
|
++(;
|
|
|
+ (assert_return (invoke $Mm "load" (i32.const 0)) (i32.const 97))
|
|
|
+ (assert_return (invoke $Mm "load" (i32.const 327670)) (i32.const 0))
|
|
|
++;)
|
|
|
+
|
|
|
+ (assert_trap
|
|
|
+ (module
|
|
|
+@@ -416,7 +434,9 @@
|
|
|
+ )
|
|
|
+ "out of bounds table access"
|
|
|
+ )
|
|
|
++(;
|
|
|
+ (assert_return (invoke $Mm "load" (i32.const 0)) (i32.const 97))
|
|
|
++;)
|
|
|
+
|
|
|
+ ;; Store is modified if the start function traps.
|
|
|
+ (module $Ms
|
|
|
+@@ -432,6 +452,7 @@
|
|
|
+ )
|
|
|
+ (register "Ms" $Ms)
|
|
|
+
|
|
|
++(;
|
|
|
+ (assert_trap
|
|
|
+ (module
|
|
|
+ (import "Ms" "memory" (memory 1))
|
|
|
+@@ -451,3 +472,4 @@
|
|
|
+
|
|
|
+ (assert_return (invoke $Ms "get memory[0]") (i32.const 104)) ;; 'h'
|
|
|
+ (assert_return (invoke $Ms "get table[0]") (i32.const 0xdead))
|
|
|
++;)
|
|
|
+diff --git a/test/core/memory.wast b/test/core/memory.wast
|
|
|
+index 1dd5b84..497b69f 100644
|
|
|
+--- a/test/core/memory.wast
|
|
|
++++ b/test/core/memory.wast
|
|
|
+@@ -76,17 +76,17 @@
|
|
|
+ "memory size must be at most 65536 pages (4GiB)"
|
|
|
+ )
|
|
|
+
|
|
|
+-(assert_invalid
|
|
|
++(assert_malformed
|
|
|
+ (module quote "(memory 0x1_0000_0000)")
|
|
|
+- "memory size must be at most 65536 pages (4GiB)"
|
|
|
++ "i32 constant out of range"
|
|
|
+ )
|
|
|
+-(assert_invalid
|
|
|
++(assert_malformed
|
|
|
+ (module quote "(memory 0x1_0000_0000 0x1_0000_0000)")
|
|
|
+- "memory size must be at most 65536 pages (4GiB)"
|
|
|
++ "i32 constant out of range"
|
|
|
+ )
|
|
|
+-(assert_invalid
|
|
|
++(assert_malformed
|
|
|
+ (module quote "(memory 0 0x1_0000_0000)")
|
|
|
+- "memory size must be at most 65536 pages (4GiB)"
|
|
|
++ "i32 constant out of range"
|
|
|
+ )
|
|
|
+
|
|
|
+ (module
|
|
|
+diff --git a/test/core/ref_func.wast b/test/core/ref_func.wast
|
|
|
+index adb5cb7..590f626 100644
|
|
|
+--- a/test/core/ref_func.wast
|
|
|
++++ b/test/core/ref_func.wast
|
|
|
+@@ -4,7 +4,8 @@
|
|
|
+ (register "M")
|
|
|
+
|
|
|
+ (module
|
|
|
+- (func $f (import "M" "f") (param i32) (result i32))
|
|
|
++ (; aot mode does not support module linking ;)
|
|
|
++ (func $f (param $x i32) (result i32) (local.get $x))
|
|
|
+ (func $g (param $x i32) (result i32)
|
|
|
+ (i32.add (local.get $x) (i32.const 1))
|
|
|
+ )
|
|
|
+diff --git a/test/core/table_copy.wast b/test/core/table_copy.wast
|
|
|
+index 380e84e..f37e745 100644
|
|
|
+--- a/test/core/table_copy.wast
|
|
|
++++ b/test/core/table_copy.wast
|
|
|
+@@ -14,11 +14,12 @@
|
|
|
+
|
|
|
+ (module
|
|
|
+ (type (func (result i32))) ;; type #0
|
|
|
+- (import "a" "ef0" (func (result i32))) ;; index 0
|
|
|
+- (import "a" "ef1" (func (result i32)))
|
|
|
+- (import "a" "ef2" (func (result i32)))
|
|
|
+- (import "a" "ef3" (func (result i32)))
|
|
|
+- (import "a" "ef4" (func (result i32))) ;; index 4
|
|
|
++ ;; aot mode does not support module linking
|
|
|
++ (func (result i32) (i32.const 0)) ;; index 0
|
|
|
++ (func (result i32) (i32.const 1))
|
|
|
++ (func (result i32) (i32.const 2))
|
|
|
++ (func (result i32) (i32.const 3))
|
|
|
++ (func (result i32) (i32.const 4)) ;; index 4
|
|
|
+ (table $t0 30 30 funcref)
|
|
|
+ (table $t1 30 30 funcref)
|
|
|
+ (elem (table $t0) (i32.const 2) func 3 1 4 1)
|
|
|
+@@ -106,11 +107,11 @@
|
|
|
+
|
|
|
+ (module
|
|
|
+ (type (func (result i32))) ;; type #0
|
|
|
+- (import "a" "ef0" (func (result i32))) ;; index 0
|
|
|
+- (import "a" "ef1" (func (result i32)))
|
|
|
+- (import "a" "ef2" (func (result i32)))
|
|
|
+- (import "a" "ef3" (func (result i32)))
|
|
|
+- (import "a" "ef4" (func (result i32))) ;; index 4
|
|
|
++ (func (export "ef0") (result i32) (i32.const 0)) ;; index 0
|
|
|
++ (func (export "ef1") (result i32) (i32.const 1))
|
|
|
++ (func (export "ef2") (result i32) (i32.const 2))
|
|
|
++ (func (export "ef3") (result i32) (i32.const 3))
|
|
|
++ (func (export "ef4") (result i32) (i32.const 4)) ;; index 4
|
|
|
+ (table $t0 30 30 funcref)
|
|
|
+ (table $t1 30 30 funcref)
|
|
|
+ (elem (table $t0) (i32.const 2) func 3 1 4 1)
|
|
|
+@@ -198,11 +199,11 @@
|
|
|
+
|
|
|
+ (module
|
|
|
+ (type (func (result i32))) ;; type #0
|
|
|
+- (import "a" "ef0" (func (result i32))) ;; index 0
|
|
|
+- (import "a" "ef1" (func (result i32)))
|
|
|
+- (import "a" "ef2" (func (result i32)))
|
|
|
+- (import "a" "ef3" (func (result i32)))
|
|
|
+- (import "a" "ef4" (func (result i32))) ;; index 4
|
|
|
++ (func (result i32) (i32.const 0)) ;; index 0
|
|
|
++ (func (result i32) (i32.const 1))
|
|
|
++ (func (result i32) (i32.const 2))
|
|
|
++ (func (result i32) (i32.const 3))
|
|
|
++ (func (result i32) (i32.const 4)) ;; index 4
|
|
|
+ (table $t0 30 30 funcref)
|
|
|
+ (table $t1 30 30 funcref)
|
|
|
+ (elem (table $t0) (i32.const 2) func 3 1 4 1)
|
|
|
+@@ -290,11 +291,11 @@
|
|
|
+
|
|
|
+ (module
|
|
|
+ (type (func (result i32))) ;; type #0
|
|
|
+- (import "a" "ef0" (func (result i32))) ;; index 0
|
|
|
+- (import "a" "ef1" (func (result i32)))
|
|
|
+- (import "a" "ef2" (func (result i32)))
|
|
|
+- (import "a" "ef3" (func (result i32)))
|
|
|
+- (import "a" "ef4" (func (result i32))) ;; index 4
|
|
|
++ (func (result i32) (i32.const 0)) ;; index 0
|
|
|
++ (func (result i32) (i32.const 1))
|
|
|
++ (func (result i32) (i32.const 2))
|
|
|
++ (func (result i32) (i32.const 3))
|
|
|
++ (func (result i32) (i32.const 4)) ;; index 4
|
|
|
+ (table $t0 30 30 funcref)
|
|
|
+ (table $t1 30 30 funcref)
|
|
|
+ (elem (table $t0) (i32.const 2) func 3 1 4 1)
|
|
|
+@@ -382,11 +383,11 @@
|
|
|
+
|
|
|
+ (module
|
|
|
+ (type (func (result i32))) ;; type #0
|
|
|
+- (import "a" "ef0" (func (result i32))) ;; index 0
|
|
|
+- (import "a" "ef1" (func (result i32)))
|
|
|
+- (import "a" "ef2" (func (result i32)))
|
|
|
+- (import "a" "ef3" (func (result i32)))
|
|
|
+- (import "a" "ef4" (func (result i32))) ;; index 4
|
|
|
++ (func (result i32) (i32.const 0)) ;; index 0
|
|
|
++ (func (result i32) (i32.const 1))
|
|
|
++ (func (result i32) (i32.const 2))
|
|
|
++ (func (result i32) (i32.const 3))
|
|
|
++ (func (result i32) (i32.const 4)) ;; index 4
|
|
|
+ (table $t0 30 30 funcref)
|
|
|
+ (table $t1 30 30 funcref)
|
|
|
+ (elem (table $t0) (i32.const 2) func 3 1 4 1)
|
|
|
+@@ -474,11 +475,11 @@
|
|
|
+
|
|
|
+ (module
|
|
|
+ (type (func (result i32))) ;; type #0
|
|
|
+- (import "a" "ef0" (func (result i32))) ;; index 0
|
|
|
+- (import "a" "ef1" (func (result i32)))
|
|
|
+- (import "a" "ef2" (func (result i32)))
|
|
|
+- (import "a" "ef3" (func (result i32)))
|
|
|
+- (import "a" "ef4" (func (result i32))) ;; index 4
|
|
|
++ (func (result i32) (i32.const 0)) ;; index 0
|
|
|
++ (func (result i32) (i32.const 1))
|
|
|
++ (func (result i32) (i32.const 2))
|
|
|
++ (func (result i32) (i32.const 3))
|
|
|
++ (func (result i32) (i32.const 4)) ;; index 4
|
|
|
+ (table $t0 30 30 funcref)
|
|
|
+ (table $t1 30 30 funcref)
|
|
|
+ (elem (table $t0) (i32.const 2) func 3 1 4 1)
|
|
|
+@@ -566,11 +567,11 @@
|
|
|
+
|
|
|
+ (module
|
|
|
+ (type (func (result i32))) ;; type #0
|
|
|
+- (import "a" "ef0" (func (result i32))) ;; index 0
|
|
|
+- (import "a" "ef1" (func (result i32)))
|
|
|
+- (import "a" "ef2" (func (result i32)))
|
|
|
+- (import "a" "ef3" (func (result i32)))
|
|
|
+- (import "a" "ef4" (func (result i32))) ;; index 4
|
|
|
++ (func (result i32) (i32.const 0)) ;; index 0
|
|
|
++ (func (result i32) (i32.const 1))
|
|
|
++ (func (result i32) (i32.const 2))
|
|
|
++ (func (result i32) (i32.const 3))
|
|
|
++ (func (result i32) (i32.const 4)) ;; index 4
|
|
|
+ (table $t0 30 30 funcref)
|
|
|
+ (table $t1 30 30 funcref)
|
|
|
+ (elem (table $t0) (i32.const 2) func 3 1 4 1)
|
|
|
+@@ -658,11 +659,11 @@
|
|
|
+
|
|
|
+ (module
|
|
|
+ (type (func (result i32))) ;; type #0
|
|
|
+- (import "a" "ef0" (func (result i32))) ;; index 0
|
|
|
+- (import "a" "ef1" (func (result i32)))
|
|
|
+- (import "a" "ef2" (func (result i32)))
|
|
|
+- (import "a" "ef3" (func (result i32)))
|
|
|
+- (import "a" "ef4" (func (result i32))) ;; index 4
|
|
|
++ (func (result i32) (i32.const 0)) ;; index 0
|
|
|
++ (func (result i32) (i32.const 1))
|
|
|
++ (func (result i32) (i32.const 2))
|
|
|
++ (func (result i32) (i32.const 3))
|
|
|
++ (func (result i32) (i32.const 4)) ;; index 4
|
|
|
+ (table $t0 30 30 funcref)
|
|
|
+ (table $t1 30 30 funcref)
|
|
|
+ (elem (table $t0) (i32.const 2) func 3 1 4 1)
|
|
|
+@@ -750,11 +751,11 @@
|
|
|
+
|
|
|
+ (module
|
|
|
+ (type (func (result i32))) ;; type #0
|
|
|
+- (import "a" "ef0" (func (result i32))) ;; index 0
|
|
|
+- (import "a" "ef1" (func (result i32)))
|
|
|
+- (import "a" "ef2" (func (result i32)))
|
|
|
+- (import "a" "ef3" (func (result i32)))
|
|
|
+- (import "a" "ef4" (func (result i32))) ;; index 4
|
|
|
++ (func (result i32) (i32.const 0)) ;; index 0
|
|
|
++ (func (result i32) (i32.const 1))
|
|
|
++ (func (result i32) (i32.const 2))
|
|
|
++ (func (result i32) (i32.const 3))
|
|
|
++ (func (result i32) (i32.const 4)) ;; index 4
|
|
|
+ (table $t0 30 30 funcref)
|
|
|
+ (table $t1 30 30 funcref)
|
|
|
+ (elem (table $t0) (i32.const 2) func 3 1 4 1)
|
|
|
+@@ -842,11 +843,11 @@
|
|
|
+
|
|
|
+ (module
|
|
|
+ (type (func (result i32))) ;; type #0
|
|
|
+- (import "a" "ef0" (func (result i32))) ;; index 0
|
|
|
+- (import "a" "ef1" (func (result i32)))
|
|
|
+- (import "a" "ef2" (func (result i32)))
|
|
|
+- (import "a" "ef3" (func (result i32)))
|
|
|
+- (import "a" "ef4" (func (result i32))) ;; index 4
|
|
|
++ (func (result i32) (i32.const 0)) ;; index 0
|
|
|
++ (func (result i32) (i32.const 1))
|
|
|
++ (func (result i32) (i32.const 2))
|
|
|
++ (func (result i32) (i32.const 3))
|
|
|
++ (func (result i32) (i32.const 4)) ;; index 4
|
|
|
+ (table $t0 30 30 funcref)
|
|
|
+ (table $t1 30 30 funcref)
|
|
|
+ (elem (table $t1) (i32.const 2) func 3 1 4 1)
|
|
|
+@@ -934,11 +935,11 @@
|
|
|
+
|
|
|
+ (module
|
|
|
+ (type (func (result i32))) ;; type #0
|
|
|
+- (import "a" "ef0" (func (result i32))) ;; index 0
|
|
|
+- (import "a" "ef1" (func (result i32)))
|
|
|
+- (import "a" "ef2" (func (result i32)))
|
|
|
+- (import "a" "ef3" (func (result i32)))
|
|
|
+- (import "a" "ef4" (func (result i32))) ;; index 4
|
|
|
++ (func (result i32) (i32.const 0)) ;; index 0
|
|
|
++ (func (result i32) (i32.const 1))
|
|
|
++ (func (result i32) (i32.const 2))
|
|
|
++ (func (result i32) (i32.const 3))
|
|
|
++ (func (result i32) (i32.const 4)) ;; index 4
|
|
|
+ (table $t0 30 30 funcref)
|
|
|
+ (table $t1 30 30 funcref)
|
|
|
+ (elem (table $t1) (i32.const 2) func 3 1 4 1)
|
|
|
+@@ -1026,11 +1027,11 @@
|
|
|
+
|
|
|
+ (module
|
|
|
+ (type (func (result i32))) ;; type #0
|
|
|
+- (import "a" "ef0" (func (result i32))) ;; index 0
|
|
|
+- (import "a" "ef1" (func (result i32)))
|
|
|
+- (import "a" "ef2" (func (result i32)))
|
|
|
+- (import "a" "ef3" (func (result i32)))
|
|
|
+- (import "a" "ef4" (func (result i32))) ;; index 4
|
|
|
++ (func (result i32) (i32.const 0)) ;; index 0
|
|
|
++ (func (result i32) (i32.const 1))
|
|
|
++ (func (result i32) (i32.const 2))
|
|
|
++ (func (result i32) (i32.const 3))
|
|
|
++ (func (result i32) (i32.const 4)) ;; index 4
|
|
|
+ (table $t0 30 30 funcref)
|
|
|
+ (table $t1 30 30 funcref)
|
|
|
+ (elem (table $t1) (i32.const 2) func 3 1 4 1)
|
|
|
+@@ -1118,11 +1119,11 @@
|
|
|
+
|
|
|
+ (module
|
|
|
+ (type (func (result i32))) ;; type #0
|
|
|
+- (import "a" "ef0" (func (result i32))) ;; index 0
|
|
|
+- (import "a" "ef1" (func (result i32)))
|
|
|
+- (import "a" "ef2" (func (result i32)))
|
|
|
+- (import "a" "ef3" (func (result i32)))
|
|
|
+- (import "a" "ef4" (func (result i32))) ;; index 4
|
|
|
++ (func (result i32) (i32.const 0)) ;; index 0
|
|
|
++ (func (result i32) (i32.const 1))
|
|
|
++ (func (result i32) (i32.const 2))
|
|
|
++ (func (result i32) (i32.const 3))
|
|
|
++ (func (result i32) (i32.const 4)) ;; index 4
|
|
|
+ (table $t0 30 30 funcref)
|
|
|
+ (table $t1 30 30 funcref)
|
|
|
+ (elem (table $t1) (i32.const 2) func 3 1 4 1)
|
|
|
+@@ -1210,11 +1211,11 @@
|
|
|
+
|
|
|
+ (module
|
|
|
+ (type (func (result i32))) ;; type #0
|
|
|
+- (import "a" "ef0" (func (result i32))) ;; index 0
|
|
|
+- (import "a" "ef1" (func (result i32)))
|
|
|
+- (import "a" "ef2" (func (result i32)))
|
|
|
+- (import "a" "ef3" (func (result i32)))
|
|
|
+- (import "a" "ef4" (func (result i32))) ;; index 4
|
|
|
++ (func (result i32) (i32.const 0)) ;; index 0
|
|
|
++ (func (result i32) (i32.const 1))
|
|
|
++ (func (result i32) (i32.const 2))
|
|
|
++ (func (result i32) (i32.const 3))
|
|
|
++ (func (result i32) (i32.const 4)) ;; index 4
|
|
|
+ (table $t0 30 30 funcref)
|
|
|
+ (table $t1 30 30 funcref)
|
|
|
+ (elem (table $t1) (i32.const 2) func 3 1 4 1)
|
|
|
+@@ -1302,11 +1303,11 @@
|
|
|
+
|
|
|
+ (module
|
|
|
+ (type (func (result i32))) ;; type #0
|
|
|
+- (import "a" "ef0" (func (result i32))) ;; index 0
|
|
|
+- (import "a" "ef1" (func (result i32)))
|
|
|
+- (import "a" "ef2" (func (result i32)))
|
|
|
+- (import "a" "ef3" (func (result i32)))
|
|
|
+- (import "a" "ef4" (func (result i32))) ;; index 4
|
|
|
++ (func (result i32) (i32.const 0)) ;; index 0
|
|
|
++ (func (result i32) (i32.const 1))
|
|
|
++ (func (result i32) (i32.const 2))
|
|
|
++ (func (result i32) (i32.const 3))
|
|
|
++ (func (result i32) (i32.const 4)) ;; index 4
|
|
|
+ (table $t0 30 30 funcref)
|
|
|
+ (table $t1 30 30 funcref)
|
|
|
+ (elem (table $t1) (i32.const 2) func 3 1 4 1)
|
|
|
+@@ -1394,11 +1395,11 @@
|
|
|
+
|
|
|
+ (module
|
|
|
+ (type (func (result i32))) ;; type #0
|
|
|
+- (import "a" "ef0" (func (result i32))) ;; index 0
|
|
|
+- (import "a" "ef1" (func (result i32)))
|
|
|
+- (import "a" "ef2" (func (result i32)))
|
|
|
+- (import "a" "ef3" (func (result i32)))
|
|
|
+- (import "a" "ef4" (func (result i32))) ;; index 4
|
|
|
++ (func (result i32) (i32.const 0)) ;; index 0
|
|
|
++ (func (result i32) (i32.const 1))
|
|
|
++ (func (result i32) (i32.const 2))
|
|
|
++ (func (result i32) (i32.const 3))
|
|
|
++ (func (result i32) (i32.const 4)) ;; index 4
|
|
|
+ (table $t0 30 30 funcref)
|
|
|
+ (table $t1 30 30 funcref)
|
|
|
+ (elem (table $t1) (i32.const 2) func 3 1 4 1)
|
|
|
+@@ -1486,11 +1487,11 @@
|
|
|
+
|
|
|
+ (module
|
|
|
+ (type (func (result i32))) ;; type #0
|
|
|
+- (import "a" "ef0" (func (result i32))) ;; index 0
|
|
|
+- (import "a" "ef1" (func (result i32)))
|
|
|
+- (import "a" "ef2" (func (result i32)))
|
|
|
+- (import "a" "ef3" (func (result i32)))
|
|
|
+- (import "a" "ef4" (func (result i32))) ;; index 4
|
|
|
++ (func (result i32) (i32.const 0)) ;; index 0
|
|
|
++ (func (result i32) (i32.const 1))
|
|
|
++ (func (result i32) (i32.const 2))
|
|
|
++ (func (result i32) (i32.const 3))
|
|
|
++ (func (result i32) (i32.const 4)) ;; index 4
|
|
|
+ (table $t0 30 30 funcref)
|
|
|
+ (table $t1 30 30 funcref)
|
|
|
+ (elem (table $t1) (i32.const 2) func 3 1 4 1)
|
|
|
+@@ -1578,11 +1579,11 @@
|
|
|
+
|
|
|
+ (module
|
|
|
+ (type (func (result i32))) ;; type #0
|
|
|
+- (import "a" "ef0" (func (result i32))) ;; index 0
|
|
|
+- (import "a" "ef1" (func (result i32)))
|
|
|
+- (import "a" "ef2" (func (result i32)))
|
|
|
+- (import "a" "ef3" (func (result i32)))
|
|
|
+- (import "a" "ef4" (func (result i32))) ;; index 4
|
|
|
++ (func (result i32) (i32.const 0)) ;; index 0
|
|
|
++ (func (result i32) (i32.const 1))
|
|
|
++ (func (result i32) (i32.const 2))
|
|
|
++ (func (result i32) (i32.const 3))
|
|
|
++ (func (result i32) (i32.const 4)) ;; index 4
|
|
|
+ (table $t0 30 30 funcref)
|
|
|
+ (table $t1 30 30 funcref)
|
|
|
+ (elem (table $t1) (i32.const 2) func 3 1 4 1)
|
|
|
+diff --git a/test/core/table_init.wast b/test/core/table_init.wast
|
|
|
+index 0b2d26f..bdab6a0 100644
|
|
|
+--- a/test/core/table_init.wast
|
|
|
++++ b/test/core/table_init.wast
|
|
|
+@@ -14,11 +14,12 @@
|
|
|
+
|
|
|
+ (module
|
|
|
+ (type (func (result i32))) ;; type #0
|
|
|
+- (import "a" "ef0" (func (result i32))) ;; index 0
|
|
|
+- (import "a" "ef1" (func (result i32)))
|
|
|
+- (import "a" "ef2" (func (result i32)))
|
|
|
+- (import "a" "ef3" (func (result i32)))
|
|
|
+- (import "a" "ef4" (func (result i32))) ;; index 4
|
|
|
++ ;; aot mode does not support module linking
|
|
|
++ (func (result i32) (i32.const 0)) ;; index 0
|
|
|
++ (func (result i32) (i32.const 1))
|
|
|
++ (func (result i32) (i32.const 2))
|
|
|
++ (func (result i32) (i32.const 3))
|
|
|
++ (func (result i32) (i32.const 4)) ;; index 4
|
|
|
+ (table $t0 30 30 funcref)
|
|
|
+ (table $t1 30 30 funcref)
|
|
|
+ (elem (table $t0) (i32.const 2) func 3 1 4 1)
|
|
|
+@@ -72,11 +73,12 @@
|
|
|
+
|
|
|
+ (module
|
|
|
+ (type (func (result i32))) ;; type #0
|
|
|
+- (import "a" "ef0" (func (result i32))) ;; index 0
|
|
|
+- (import "a" "ef1" (func (result i32)))
|
|
|
+- (import "a" "ef2" (func (result i32)))
|
|
|
+- (import "a" "ef3" (func (result i32)))
|
|
|
+- (import "a" "ef4" (func (result i32))) ;; index 4
|
|
|
++ ;; aot mode does not support module linking
|
|
|
++ (func (result i32) (i32.const 0)) ;; index 0
|
|
|
++ (func (result i32) (i32.const 1))
|
|
|
++ (func (result i32) (i32.const 2))
|
|
|
++ (func (result i32) (i32.const 3))
|
|
|
++ (func (result i32) (i32.const 4)) ;; index 4
|
|
|
+ (table $t0 30 30 funcref)
|
|
|
+ (table $t1 30 30 funcref)
|
|
|
+ (elem (table $t0) (i32.const 2) func 3 1 4 1)
|
|
|
+@@ -130,11 +132,12 @@
|
|
|
+
|
|
|
+ (module
|
|
|
+ (type (func (result i32))) ;; type #0
|
|
|
+- (import "a" "ef0" (func (result i32))) ;; index 0
|
|
|
+- (import "a" "ef1" (func (result i32)))
|
|
|
+- (import "a" "ef2" (func (result i32)))
|
|
|
+- (import "a" "ef3" (func (result i32)))
|
|
|
+- (import "a" "ef4" (func (result i32))) ;; index 4
|
|
|
++ ;; aot mode does not support module linking
|
|
|
++ (func (result i32) (i32.const 0)) ;; index 0
|
|
|
++ (func (result i32) (i32.const 1))
|
|
|
++ (func (result i32) (i32.const 2))
|
|
|
++ (func (result i32) (i32.const 3))
|
|
|
++ (func (result i32) (i32.const 4)) ;; index 4
|
|
|
+ (table $t0 30 30 funcref)
|
|
|
+ (table $t1 30 30 funcref)
|
|
|
+ (elem (table $t0) (i32.const 2) func 3 1 4 1)
|
|
|
+@@ -196,11 +199,12 @@
|
|
|
+
|
|
|
+ (module
|
|
|
+ (type (func (result i32))) ;; type #0
|
|
|
+- (import "a" "ef0" (func (result i32))) ;; index 0
|
|
|
+- (import "a" "ef1" (func (result i32)))
|
|
|
+- (import "a" "ef2" (func (result i32)))
|
|
|
+- (import "a" "ef3" (func (result i32)))
|
|
|
+- (import "a" "ef4" (func (result i32))) ;; index 4
|
|
|
++ ;; aot mode does not support module linking
|
|
|
++ (func (result i32) (i32.const 0)) ;; index 0
|
|
|
++ (func (result i32) (i32.const 1))
|
|
|
++ (func (result i32) (i32.const 2))
|
|
|
++ (func (result i32) (i32.const 3))
|
|
|
++ (func (result i32) (i32.const 4)) ;; index 4
|
|
|
+ (table $t0 30 30 funcref)
|
|
|
+ (table $t1 30 30 funcref)
|
|
|
+ (elem (table $t1) (i32.const 2) func 3 1 4 1)
|
|
|
+@@ -254,11 +258,12 @@
|
|
|
+
|
|
|
+ (module
|
|
|
+ (type (func (result i32))) ;; type #0
|
|
|
+- (import "a" "ef0" (func (result i32))) ;; index 0
|
|
|
+- (import "a" "ef1" (func (result i32)))
|
|
|
+- (import "a" "ef2" (func (result i32)))
|
|
|
+- (import "a" "ef3" (func (result i32)))
|
|
|
+- (import "a" "ef4" (func (result i32))) ;; index 4
|
|
|
++ ;; aot mode does not support module linking
|
|
|
++ (func (result i32) (i32.const 0)) ;; index 0
|
|
|
++ (func (result i32) (i32.const 1))
|
|
|
++ (func (result i32) (i32.const 2))
|
|
|
++ (func (result i32) (i32.const 3))
|
|
|
++ (func (result i32) (i32.const 4)) ;; index 4
|
|
|
+ (table $t0 30 30 funcref)
|
|
|
+ (table $t1 30 30 funcref)
|
|
|
+ (elem (table $t1) (i32.const 2) func 3 1 4 1)
|
|
|
+@@ -312,11 +317,12 @@
|
|
|
+
|
|
|
+ (module
|
|
|
+ (type (func (result i32))) ;; type #0
|
|
|
+- (import "a" "ef0" (func (result i32))) ;; index 0
|
|
|
+- (import "a" "ef1" (func (result i32)))
|
|
|
+- (import "a" "ef2" (func (result i32)))
|
|
|
+- (import "a" "ef3" (func (result i32)))
|
|
|
+- (import "a" "ef4" (func (result i32))) ;; index 4
|
|
|
++ ;; aot mode does not support module linking
|
|
|
++ (func (result i32) (i32.const 0)) ;; index 0
|
|
|
++ (func (result i32) (i32.const 1))
|
|
|
++ (func (result i32) (i32.const 2))
|
|
|
++ (func (result i32) (i32.const 3))
|
|
|
++ (func (result i32) (i32.const 4)) ;; index 4
|
|
|
+ (table $t0 30 30 funcref)
|
|
|
+ (table $t1 30 30 funcref)
|
|
|
+ (elem (table $t1) (i32.const 2) func 3 1 4 1)
|
|
|
+diff --git a/test/core/unreached-valid.wast b/test/core/unreached-valid.wast
|
|
|
+index b7ebabf..4f2abfb 100644
|
|
|
+--- a/test/core/unreached-valid.wast
|
|
|
++++ b/test/core/unreached-valid.wast
|
|
|
+@@ -46,6 +46,7 @@
|
|
|
+
|
|
|
+ ;; Validation after unreachable
|
|
|
+
|
|
|
++(;
|
|
|
+ (module
|
|
|
+ (func (export "meet-bottom")
|
|
|
+ (block (result f64)
|
|
|
+@@ -61,3 +62,4 @@
|
|
|
+ )
|
|
|
+
|
|
|
+ (assert_trap (invoke "meet-bottom") "unreachable")
|
|
|
++;)
|