mirror of
https://github.com/bytecodealliance/wasm-micro-runtime.git
synced 2025-02-06 23:15:16 +00:00
![Wenyong Huang](/assets/img/avatar_default.png)
Implement multi-memory for classic-interpreter. Support core spec (and bulk memory) opcodes now, and will support atomic opcodes, and add multi-memory export APIs in the future. PS: Multi-memory spec test patched a lot for linking test to adapt for multi-module implementation.
1023 lines
34 KiB
Diff
1023 lines
34 KiB
Diff
diff --git a/test/core/elem.wast b/test/core/elem.wast
|
|
index 575ecef8..6eecab93 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/imports.wast b/test/core/imports.wast
|
|
index 94c1af5c..bb1704fc 100644
|
|
--- a/test/core/imports.wast
|
|
+++ b/test/core/imports.wast
|
|
@@ -86,7 +86,7 @@
|
|
(assert_return (invoke "print64" (i64.const 24)))
|
|
|
|
(assert_invalid
|
|
- (module
|
|
+ (module
|
|
(type (func (result i32)))
|
|
(import "test" "func" (func (type 1)))
|
|
)
|
|
@@ -559,6 +559,7 @@
|
|
(assert_return (invoke "grow" (i32.const 1)) (i32.const -1))
|
|
(assert_return (invoke "grow" (i32.const 0)) (i32.const 2))
|
|
|
|
+(;
|
|
(module $Mgm
|
|
(memory (export "memory") 1) ;; initial size is 1
|
|
(func (export "grow") (result i32) (memory.grow (i32.const 1)))
|
|
@@ -567,7 +568,7 @@
|
|
(assert_return (invoke $Mgm "grow") (i32.const 1)) ;; now size is 2
|
|
(module $Mgim1
|
|
;; imported memory limits should match, because external memory size is 2 now
|
|
- (memory (export "memory") (import "grown-memory" "memory") 2)
|
|
+ (memory (export "memory") (import "grown-memory" "memory") 2)
|
|
(func (export "grow") (result i32) (memory.grow (i32.const 1)))
|
|
)
|
|
(register "grown-imported-memory" $Mgim1)
|
|
@@ -578,7 +579,7 @@
|
|
(func (export "size") (result i32) (memory.size))
|
|
)
|
|
(assert_return (invoke $Mgim2 "size") (i32.const 3))
|
|
-
|
|
+;)
|
|
|
|
;; Syntax errors
|
|
|
|
@@ -650,6 +651,7 @@
|
|
"import after memory"
|
|
)
|
|
|
|
+(;
|
|
;; This module is required to validate, regardless of whether it can be
|
|
;; linked. Overloading is not possible in wasm itself, but it is possible
|
|
;; in modules from which wasm can import.
|
|
@@ -676,3 +678,4 @@
|
|
)
|
|
"unknown import"
|
|
)
|
|
+;)
|
|
\ No newline at end of file
|
|
diff --git a/test/core/linking.wast b/test/core/linking.wast
|
|
index 994e0f49..8fbcc021 100644
|
|
--- a/test/core/linking.wast
|
|
+++ b/test/core/linking.wast
|
|
@@ -19,11 +19,11 @@
|
|
(assert_return (invoke $Nf "call") (i32.const 3))
|
|
(assert_return (invoke $Nf "call Mf.call") (i32.const 2))
|
|
|
|
-(module
|
|
+(module $M1
|
|
(import "spectest" "print_i32" (func $f (param i32)))
|
|
(export "print" (func $f))
|
|
)
|
|
-(register "reexport_f")
|
|
+(register "reexport_f" $M1)
|
|
(assert_unlinkable
|
|
(module (import "reexport_f" "print" (func (param i64))))
|
|
"incompatible import type"
|
|
@@ -35,7 +35,6 @@
|
|
|
|
|
|
;; Globals
|
|
-
|
|
(module $Mg
|
|
(global $glob (export "glob") i32 (i32.const 42))
|
|
(func (export "get") (result i32) (global.get $glob))
|
|
@@ -47,6 +46,7 @@
|
|
)
|
|
(register "Mg" $Mg)
|
|
|
|
+(; only sharing initial values
|
|
(module $Ng
|
|
(global $x (import "Mg" "glob") i32)
|
|
(global $mut_glob (import "Mg" "mut_glob") (mut i32))
|
|
@@ -81,7 +81,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
|
|
(module (import "Mg" "mut_glob" (global i32)))
|
|
@@ -130,7 +130,7 @@
|
|
|
|
|
|
;; Tables
|
|
-
|
|
+(; no such support
|
|
(module $Mt
|
|
(type (func (result i32)))
|
|
(type (func))
|
|
@@ -307,10 +307,11 @@
|
|
(module (table (import "Mtable_ex" "t-extern") 1 funcref))
|
|
"incompatible import type"
|
|
)
|
|
+;)
|
|
|
|
|
|
;; Memories
|
|
-
|
|
+(; no such support
|
|
(module $Mm
|
|
(memory (export "mem") 1 5)
|
|
(data (i32.const 10) "\00\01\02\03\04\05\06\07\08\09")
|
|
@@ -451,3 +452,4 @@
|
|
|
|
(assert_return (invoke $Ms "get memory[0]") (i32.const 104)) ;; 'h'
|
|
(assert_return (invoke $Ms "get table[0]") (i32.const 0xdead))
|
|
+;)
|
|
\ No newline at end of file
|
|
diff --git a/test/core/load.wast b/test/core/load.wast
|
|
index 9fe48e2b..3e9c2f8c 100644
|
|
--- a/test/core/load.wast
|
|
+++ b/test/core/load.wast
|
|
@@ -29,6 +29,8 @@
|
|
(register "M")
|
|
|
|
(module
|
|
+ (func $readM1 (import "M" "read") (param i32) (result i32))
|
|
+ (export "readM1" (func $readM1))
|
|
(memory $mem1 (import "M" "mem") 2)
|
|
(memory $mem2 3)
|
|
|
|
@@ -43,11 +45,12 @@
|
|
)
|
|
)
|
|
|
|
-(assert_return (invoke $M "read" (i32.const 20)) (i32.const 1))
|
|
-(assert_return (invoke $M "read" (i32.const 21)) (i32.const 2))
|
|
-(assert_return (invoke $M "read" (i32.const 22)) (i32.const 3))
|
|
-(assert_return (invoke $M "read" (i32.const 23)) (i32.const 4))
|
|
-(assert_return (invoke $M "read" (i32.const 24)) (i32.const 5))
|
|
+;; To invoke the function in M as a submodule, not as an independent module
|
|
+(assert_return (invoke "readM1" (i32.const 20)) (i32.const 1))
|
|
+(assert_return (invoke "readM1" (i32.const 21)) (i32.const 2))
|
|
+(assert_return (invoke "readM1" (i32.const 22)) (i32.const 3))
|
|
+(assert_return (invoke "readM1" (i32.const 23)) (i32.const 4))
|
|
+(assert_return (invoke "readM1" (i32.const 24)) (i32.const 5))
|
|
|
|
(assert_return (invoke "read1" (i32.const 20)) (i32.const 1))
|
|
(assert_return (invoke "read1" (i32.const 21)) (i32.const 2))
|
|
diff --git a/test/core/memory_grow.wast b/test/core/memory_grow.wast
|
|
index 4b6dbc83..dc46c029 100644
|
|
--- a/test/core/memory_grow.wast
|
|
+++ b/test/core/memory_grow.wast
|
|
@@ -106,15 +106,15 @@
|
|
|
|
;; Multiple memories
|
|
|
|
-(module
|
|
+(module $MemroygrowM
|
|
(memory (export "mem1") 2 5)
|
|
(memory (export "mem2") 0)
|
|
)
|
|
-(register "M")
|
|
+(register "MemroygrowM" $MemorygrowM)
|
|
|
|
(module
|
|
- (memory $mem1 (import "M" "mem1") 1 6)
|
|
- (memory $mem2 (import "M" "mem2") 0)
|
|
+ (memory $mem1 (import "MemroygrowM" "mem1") 1 6)
|
|
+ (memory $mem2 (import "MemroygrowM" "mem2") 0)
|
|
(memory $mem3 3)
|
|
(memory $mem4 4 5)
|
|
|
|
diff --git a/test/core/memory_size.wast b/test/core/memory_size.wast
|
|
index a1d6ea2d..b58c75d0 100644
|
|
--- a/test/core/memory_size.wast
|
|
+++ b/test/core/memory_size.wast
|
|
@@ -65,15 +65,15 @@
|
|
|
|
;; Multiple memories
|
|
|
|
-(module
|
|
+(module $MemmorysizeM
|
|
(memory (export "mem1") 2 4)
|
|
(memory (export "mem2") 0)
|
|
)
|
|
-(register "M")
|
|
+(register "MemmorysizeM" $MemmorysizeM)
|
|
|
|
(module
|
|
- (memory $mem1 (import "M" "mem1") 1 5)
|
|
- (memory $mem2 (import "M" "mem2") 0)
|
|
+ (memory $mem1 (import "MemmorysizeM" "mem1") 1 5)
|
|
+ (memory $mem2 (import "MemmorysizeM" "mem2") 0)
|
|
(memory $mem3 3)
|
|
(memory $mem4 4 5)
|
|
|
|
diff --git a/test/core/multi-memory/imports2.wast b/test/core/multi-memory/imports2.wast
|
|
index 314bc131..e1060599 100644
|
|
--- a/test/core/multi-memory/imports2.wast
|
|
+++ b/test/core/multi-memory/imports2.wast
|
|
@@ -1,13 +1,13 @@
|
|
-(module
|
|
+(module $imports2test
|
|
(memory (export "z") 0 0)
|
|
(memory (export "memory-2-inf") 2)
|
|
(memory (export "memory-2-4") 2 4)
|
|
)
|
|
|
|
-(register "test")
|
|
+(register "imports2test" $imports2test)
|
|
|
|
(module
|
|
- (import "test" "z" (memory 0))
|
|
+ (import "imports2test" "z" (memory 0))
|
|
(memory $m (import "spectest" "memory") 1 2)
|
|
(data (memory 1) (i32.const 10) "\10")
|
|
|
|
@@ -31,9 +31,9 @@
|
|
(assert_trap (invoke "load" (i32.const 1000000)) "out of bounds memory access")
|
|
|
|
(module
|
|
- (import "test" "memory-2-inf" (memory 2))
|
|
- (import "test" "memory-2-inf" (memory 1))
|
|
- (import "test" "memory-2-inf" (memory 0))
|
|
+ (import "imports2test" "memory-2-inf" (memory 2))
|
|
+ (import "imports2test" "memory-2-inf" (memory 1))
|
|
+ (import "imports2test" "memory-2-inf" (memory 0))
|
|
)
|
|
|
|
(module
|
|
@@ -46,7 +46,7 @@
|
|
)
|
|
|
|
(assert_unlinkable
|
|
- (module (import "test" "unknown" (memory 1)))
|
|
+ (module (import "imports2test" "unknown" (memory 1)))
|
|
"unknown import"
|
|
)
|
|
(assert_unlinkable
|
|
@@ -55,11 +55,11 @@
|
|
)
|
|
|
|
(assert_unlinkable
|
|
- (module (import "test" "memory-2-inf" (memory 3)))
|
|
+ (module (import "imports2test" "memory-2-inf" (memory 3)))
|
|
"incompatible import type"
|
|
)
|
|
(assert_unlinkable
|
|
- (module (import "test" "memory-2-inf" (memory 2 3)))
|
|
+ (module (import "imports2test" "memory-2-inf" (memory 2 3)))
|
|
"incompatible import type"
|
|
)
|
|
(assert_unlinkable
|
|
diff --git a/test/core/multi-memory/imports4.wast b/test/core/multi-memory/imports4.wast
|
|
index 411b1c0f..0a819454 100644
|
|
--- a/test/core/multi-memory/imports4.wast
|
|
+++ b/test/core/multi-memory/imports4.wast
|
|
@@ -1,12 +1,12 @@
|
|
-(module
|
|
+(module $imports4test
|
|
(memory (export "memory-2-inf") 2)
|
|
(memory (export "memory-2-4") 2 4)
|
|
)
|
|
|
|
-(register "test")
|
|
+(register "imports4test")
|
|
|
|
(module
|
|
- (import "test" "memory-2-4" (memory 1))
|
|
+ (import "imports4test" "memory-2-4" (memory 1))
|
|
(memory $m (import "spectest" "memory") 0 3) ;; actual has max size 2
|
|
(func (export "grow") (param i32) (result i32) (memory.grow $m (local.get 0)))
|
|
)
|
|
@@ -16,6 +16,8 @@
|
|
(assert_return (invoke "grow" (i32.const 1)) (i32.const -1))
|
|
(assert_return (invoke "grow" (i32.const 0)) (i32.const 2))
|
|
|
|
+;; TODO: Current implementation call grow on one submodule instance can't really change its definition
|
|
+(;
|
|
(module $Mgm
|
|
(memory 0)
|
|
(memory 0)
|
|
@@ -45,3 +47,4 @@
|
|
(func (export "size") (result i32) (memory.size $m))
|
|
)
|
|
(assert_return (invoke $Mgim2 "size") (i32.const 3))
|
|
+;)
|
|
\ No newline at end of file
|
|
diff --git a/test/core/multi-memory/linking0.wast b/test/core/multi-memory/linking0.wast
|
|
index b09c69f6..d57d484e 100644
|
|
--- a/test/core/multi-memory/linking0.wast
|
|
+++ b/test/core/multi-memory/linking0.wast
|
|
@@ -24,8 +24,8 @@
|
|
)
|
|
"unknown import"
|
|
)
|
|
-(assert_trap (invoke $Mt "call" (i32.const 7)) "uninitialized element")
|
|
-
|
|
+;; can't call function in submodule when module can't be instantiated
|
|
+;; (assert_trap (invoke "call" (i32.const 7)) "uninitialized element")
|
|
|
|
(assert_trap
|
|
(module
|
|
@@ -39,4 +39,5 @@
|
|
)
|
|
"out of bounds memory access"
|
|
)
|
|
-(assert_return (invoke $Mt "call" (i32.const 7)) (i32.const 0))
|
|
+;; can't call function in submodule when module can't be instantiated
|
|
+;; (assert_return (invoke "call" (i32.const 7)) (i32.const 0))
|
|
diff --git a/test/core/multi-memory/linking1.wast b/test/core/multi-memory/linking1.wast
|
|
index 39eabb00..49c87ce8 100644
|
|
--- a/test/core/multi-memory/linking1.wast
|
|
+++ b/test/core/multi-memory/linking1.wast
|
|
@@ -1,4 +1,4 @@
|
|
-(module $Mm
|
|
+(module $linking1Mm
|
|
(memory $mem0 (export "mem0") 0 0)
|
|
(memory $mem1 (export "mem1") 1 5)
|
|
(memory $mem2 (export "mem2") 0 0)
|
|
@@ -9,11 +9,11 @@
|
|
(i32.load8_u $mem1 (local.get 0))
|
|
)
|
|
)
|
|
-(register "Mm" $Mm)
|
|
+(register "linking1Mm" $linking1Mm)
|
|
|
|
-(module $Nm
|
|
- (func $loadM (import "Mm" "load") (param i32) (result i32))
|
|
- (memory (import "Mm" "mem0") 0)
|
|
+(module $linking1Nm
|
|
+ (func $loadM (import "linking1Mm" "load") (param i32) (result i32))
|
|
+ (memory (import "linking1Mm" "mem0") 0)
|
|
|
|
(memory $m 1)
|
|
(data (memory 1) (i32.const 10) "\f0\f1\f2\f3\f4\f5")
|
|
@@ -24,12 +24,14 @@
|
|
)
|
|
)
|
|
|
|
-(assert_return (invoke $Mm "load" (i32.const 12)) (i32.const 2))
|
|
-(assert_return (invoke $Nm "Mm.load" (i32.const 12)) (i32.const 2))
|
|
-(assert_return (invoke $Nm "load" (i32.const 12)) (i32.const 0xf2))
|
|
+(assert_return (invoke $linking1Mm "load" (i32.const 12)) (i32.const 2))
|
|
+(assert_return (invoke $linking1Nm "Mm.load" (i32.const 12)) (i32.const 2))
|
|
+(assert_return (invoke $linking1Nm "load" (i32.const 12)) (i32.const 0xf2))
|
|
|
|
-(module $Om
|
|
- (memory (import "Mm" "mem1") 1)
|
|
+(module $linking1Om
|
|
+ (func $loadM (import "linking1Mm" "load") (param i32) (result i32))
|
|
+ (export "Mm.load" (func $loadM))
|
|
+ (memory (import "linking1Mm" "mem1") 1)
|
|
(data (i32.const 5) "\a0\a1\a2\a3\a4\a5\a6\a7")
|
|
|
|
(func (export "load") (param $a i32) (result i32)
|
|
@@ -37,19 +39,20 @@
|
|
)
|
|
)
|
|
|
|
-(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))
|
|
+;; To invoke the function in Mm as a submodule, not as an independent module
|
|
+(assert_return (invoke $linking1Om "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 $linking1Om "load" (i32.const 12)) (i32.const 0xa7))
|
|
|
|
(module
|
|
- (memory (import "Mm" "mem1") 0)
|
|
+ (memory (import "linking1Mm" "mem1") 0)
|
|
(data (i32.const 0xffff) "a")
|
|
)
|
|
|
|
(assert_trap
|
|
(module
|
|
- (memory (import "Mm" "mem0") 0)
|
|
+ (memory (import "linking1Mm" "mem0") 0)
|
|
(data (i32.const 0xffff) "a")
|
|
)
|
|
"out of bounds memory access"
|
|
@@ -57,7 +60,7 @@
|
|
|
|
(assert_trap
|
|
(module
|
|
- (memory (import "Mm" "mem1") 0)
|
|
+ (memory (import "linking1Mm" "mem1") 0)
|
|
(data (i32.const 0x10000) "a")
|
|
)
|
|
"out of bounds memory access"
|
|
diff --git a/test/core/multi-memory/linking2.wast b/test/core/multi-memory/linking2.wast
|
|
index 26bf3cca..5eae4643 100644
|
|
--- a/test/core/multi-memory/linking2.wast
|
|
+++ b/test/core/multi-memory/linking2.wast
|
|
@@ -1,4 +1,4 @@
|
|
-(module $Mm
|
|
+(module $linking2Mm
|
|
(memory $mem0 (export "mem0") 0 0)
|
|
(memory $mem1 (export "mem1") 1 5)
|
|
(memory $mem2 (export "mem2") 0 0)
|
|
@@ -9,22 +9,22 @@
|
|
(i32.load8_u $mem1 (local.get 0))
|
|
)
|
|
)
|
|
-(register "Mm" $Mm)
|
|
+(register "linking2Mm" $linking2Mm)
|
|
|
|
-(module $Pm
|
|
- (memory (import "Mm" "mem1") 1 8)
|
|
+(module
|
|
+ (memory (import "linking2Mm" "mem1") 1 8)
|
|
|
|
(func (export "grow") (param $a i32) (result i32)
|
|
(memory.grow (local.get 0))
|
|
)
|
|
)
|
|
|
|
-(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))
|
|
-(assert_return (invoke $Pm "grow" (i32.const 1)) (i32.const 3))
|
|
-(assert_return (invoke $Pm "grow" (i32.const 1)) (i32.const 4))
|
|
-(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_return (invoke "grow" (i32.const 0)) (i32.const 1))
|
|
+(assert_return (invoke "grow" (i32.const 2)) (i32.const 1))
|
|
+(assert_return (invoke "grow" (i32.const 0)) (i32.const 3))
|
|
+(assert_return (invoke "grow" (i32.const 1)) (i32.const 3))
|
|
+(assert_return (invoke "grow" (i32.const 1)) (i32.const 4))
|
|
+(assert_return (invoke "grow" (i32.const 0)) (i32.const 5))
|
|
+(assert_return (invoke "grow" (i32.const 1)) (i32.const -1))
|
|
+(assert_return (invoke "grow" (i32.const 0)) (i32.const 5))
|
|
|
|
diff --git a/test/core/multi-memory/linking3.wast b/test/core/multi-memory/linking3.wast
|
|
index e23fbe4e..d3efe95a 100644
|
|
--- a/test/core/multi-memory/linking3.wast
|
|
+++ b/test/core/multi-memory/linking3.wast
|
|
@@ -33,8 +33,9 @@
|
|
)
|
|
"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))
|
|
+;; can't call function in submodule when module can't be instantiated
|
|
+;; (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
|
|
@@ -46,7 +47,8 @@
|
|
)
|
|
"out of bounds table access"
|
|
)
|
|
-(assert_return (invoke $Mm "load" (i32.const 0)) (i32.const 97))
|
|
+;; can't call function in submodule when module can't be instantiated
|
|
+;; (assert_return (invoke $Mm "load" (i32.const 0)) (i32.const 97))
|
|
|
|
;; Store is modified if the start function traps.
|
|
(module $Ms
|
|
@@ -79,5 +81,6 @@
|
|
"unreachable"
|
|
)
|
|
|
|
-(assert_return (invoke $Ms "get memory[0]") (i32.const 104)) ;; 'h'
|
|
-(assert_return (invoke $Ms "get table[0]") (i32.const 0xdead))
|
|
+;; can't call function in submodule when module can't be instantiated
|
|
+;; (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/multi-memory/load1.wast b/test/core/multi-memory/load1.wast
|
|
index be309c39..6a0faf0d 100644
|
|
--- a/test/core/multi-memory/load1.wast
|
|
+++ b/test/core/multi-memory/load1.wast
|
|
@@ -8,6 +8,8 @@
|
|
(register "M")
|
|
|
|
(module
|
|
+ (func $readM1 (import "M" "read") (param i32) (result i32))
|
|
+ (export "readM1" (func $readM1))
|
|
(memory $mem1 (import "M" "mem") 2)
|
|
(memory $mem2 3)
|
|
|
|
@@ -22,11 +24,12 @@
|
|
)
|
|
)
|
|
|
|
-(assert_return (invoke $M "read" (i32.const 20)) (i32.const 1))
|
|
-(assert_return (invoke $M "read" (i32.const 21)) (i32.const 2))
|
|
-(assert_return (invoke $M "read" (i32.const 22)) (i32.const 3))
|
|
-(assert_return (invoke $M "read" (i32.const 23)) (i32.const 4))
|
|
-(assert_return (invoke $M "read" (i32.const 24)) (i32.const 5))
|
|
+;; To invoke the function in M as a submodule, not as an independent module
|
|
+(assert_return (invoke "readM1" (i32.const 20)) (i32.const 1))
|
|
+(assert_return (invoke "readM1" (i32.const 21)) (i32.const 2))
|
|
+(assert_return (invoke "readM1" (i32.const 22)) (i32.const 3))
|
|
+(assert_return (invoke "readM1" (i32.const 23)) (i32.const 4))
|
|
+(assert_return (invoke "readM1" (i32.const 24)) (i32.const 5))
|
|
|
|
(assert_return (invoke "read1" (i32.const 20)) (i32.const 1))
|
|
(assert_return (invoke "read1" (i32.const 21)) (i32.const 2))
|
|
diff --git a/test/core/multi-memory/store1.wast b/test/core/multi-memory/store1.wast
|
|
index 10cf2c42..eafe6cc9 100644
|
|
--- a/test/core/multi-memory/store1.wast
|
|
+++ b/test/core/multi-memory/store1.wast
|
|
@@ -10,6 +10,9 @@
|
|
)
|
|
(register "M1")
|
|
|
|
+(invoke "store" (i32.const 0) (i64.const 1))
|
|
+(assert_return (invoke "load" (i32.const 0)) (i64.const 1))
|
|
+
|
|
(module $M2
|
|
(memory (export "mem") 1)
|
|
|
|
@@ -22,10 +25,8 @@
|
|
)
|
|
(register "M2")
|
|
|
|
-(invoke $M1 "store" (i32.const 0) (i64.const 1))
|
|
-(invoke $M2 "store" (i32.const 0) (i64.const 2))
|
|
-(assert_return (invoke $M1 "load" (i32.const 0)) (i64.const 1))
|
|
-(assert_return (invoke $M2 "load" (i32.const 0)) (i64.const 2))
|
|
+(invoke "store" (i32.const 0) (i64.const 2))
|
|
+(assert_return (invoke "load" (i32.const 0)) (i64.const 2))
|
|
|
|
(module
|
|
(memory $mem1 (import "M1" "mem") 1)
|
|
diff --git a/test/core/ref_func.wast b/test/core/ref_func.wast
|
|
index adb5cb78..6396013b 100644
|
|
--- a/test/core/ref_func.wast
|
|
+++ b/test/core/ref_func.wast
|
|
@@ -4,7 +4,7 @@
|
|
(register "M")
|
|
|
|
(module
|
|
- (func $f (import "M" "f") (param i32) (result i32))
|
|
+ (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/store.wast b/test/core/store.wast
|
|
index 86f6263a..65a0d4ee 100644
|
|
--- a/test/core/store.wast
|
|
+++ b/test/core/store.wast
|
|
@@ -35,7 +35,10 @@
|
|
(i64.store (local.get 0) (local.get 1))
|
|
)
|
|
)
|
|
-(register "M1")
|
|
+(register "M1" $M1)
|
|
+
|
|
+(invoke "store" (i32.const 0) (i64.const 1))
|
|
+(assert_return (invoke "load" (i32.const 0)) (i64.const 1))
|
|
|
|
(module $M2
|
|
(memory (export "mem") 1)
|
|
@@ -47,12 +50,10 @@
|
|
(i64.store (local.get 0) (local.get 1))
|
|
)
|
|
)
|
|
-(register "M2")
|
|
+(register "M2" $M2)
|
|
|
|
-(invoke $M1 "store" (i32.const 0) (i64.const 1))
|
|
-(invoke $M2 "store" (i32.const 0) (i64.const 2))
|
|
-(assert_return (invoke $M1 "load" (i32.const 0)) (i64.const 1))
|
|
-(assert_return (invoke $M2 "load" (i32.const 0)) (i64.const 2))
|
|
+(invoke "store" (i32.const 0) (i64.const 2))
|
|
+(assert_return (invoke "load" (i32.const 0)) (i64.const 2))
|
|
|
|
(module
|
|
(memory $mem1 (import "M1" "mem") 1)
|
|
diff --git a/test/core/table_copy.wast b/test/core/table_copy.wast
|
|
index 380e84ee..59230cfb 100644
|
|
--- a/test/core/table_copy.wast
|
|
+++ b/test/core/table_copy.wast
|
|
@@ -14,11 +14,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)
|
|
@@ -106,11 +106,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)
|
|
@@ -198,11 +198,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 +290,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 +382,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 +474,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 +566,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 +658,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 +750,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 +842,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 +934,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 +1026,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 +1118,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 +1210,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 +1302,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 +1394,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 +1486,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 +1578,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 0b2d26f7..3c595e5b 100644
|
|
--- a/test/core/table_init.wast
|
|
+++ b/test/core/table_init.wast
|
|
@@ -14,11 +14,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)
|
|
@@ -72,11 +72,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)
|
|
@@ -130,11 +130,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)
|
|
@@ -196,11 +196,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)
|
|
@@ -254,11 +254,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)
|
|
@@ -312,11 +312,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)
|