mirror of
https://github.com/bytecodealliance/wasm-micro-runtime.git
synced 2025-05-08 12:46:14 +00:00

The wasm loader is failing when multi-module support is on and the dependent modules are not found; this enforces the AOT compiler integrations to prepare dependent modules while it isn't necessary. This PR allows allows missing imports in wasm loader and report error in wasm instantiation instead, which enables the integrated AOT compiler to work as if the multi-module support isn't turned on.
860 lines
27 KiB
Diff
860 lines
27 KiB
Diff
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 4f339be..0b5b3e6 100644
|
|
--- a/test/core/data.wast
|
|
+++ b/test/core/data.wast
|
|
@@ -306,9 +306,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
|
|
@@ -317,7 +318,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)
|
|
@@ -328,7 +329,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,
|
|
@@ -348,7 +349,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.
|
|
@@ -368,8 +369,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..dd1106c 100644
|
|
--- a/test/core/elem.wast
|
|
+++ b/test/core/elem.wast
|
|
@@ -562,6 +562,7 @@
|
|
(assert_return (invoke $module1 "call-8") (i32.const 65))
|
|
(assert_return (invoke $module1 "call-9") (i32.const 66))
|
|
|
|
+(;
|
|
(module $module2
|
|
(type $out-i32 (func (result i32)))
|
|
(import "module1" "shared-table" (table 10 funcref))
|
|
@@ -574,7 +575,9 @@
|
|
(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)))
|
|
(import "module1" "shared-table" (table 10 funcref))
|
|
@@ -587,3 +590,4 @@
|
|
(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")
|
|
+;)
|