diff options
-rwxr-xr-x | scripts/test/generate_lld_tests.py | 5 | ||||
-rw-r--r-- | test/lld/em_asm.wast | 157 | ||||
-rw-r--r-- | test/lld/em_asm.wast.mem.mem | bin | 84 -> 90 bytes | |||
-rw-r--r-- | test/lld/em_asm.wast.mem.out | 170 | ||||
-rw-r--r-- | test/lld/em_asm.wast.out | 172 | ||||
-rw-r--r-- | test/lld/em_asm_shared.wast | 168 | ||||
-rw-r--r-- | test/lld/em_asm_shared.wast.out | 205 | ||||
-rw-r--r-- | test/lld/hello_world.wast | 8 | ||||
-rw-r--r-- | test/lld/hello_world.wast.mem.out | 7 | ||||
-rw-r--r-- | test/lld/hello_world.wast.out | 7 | ||||
-rw-r--r-- | test/lld/init.wast | 9 | ||||
-rw-r--r-- | test/lld/init.wast.out | 8 | ||||
-rw-r--r-- | test/lld/recursive.wast | 14 | ||||
-rw-r--r-- | test/lld/recursive.wast.out | 15 | ||||
-rw-r--r-- | test/lld/reserved_func_ptr.wast | 8 | ||||
-rw-r--r-- | test/lld/reserved_func_ptr.wast.out | 7 | ||||
-rw-r--r-- | test/lld/shared.wast | 17 | ||||
-rw-r--r-- | test/lld/shared.wast.out | 39 |
18 files changed, 185 insertions, 831 deletions
diff --git a/scripts/test/generate_lld_tests.py b/scripts/test/generate_lld_tests.py index c16415d7e..64fcff2ac 100755 --- a/scripts/test/generate_lld_tests.py +++ b/scripts/test/generate_lld_tests.py @@ -19,8 +19,8 @@ from __future__ import print_function import os import sys -from . import shared -from . import support +import shared +import support def files_with_extensions(path, extensions): @@ -67,6 +67,7 @@ def generate_wast_files(llvm_bin, emscripten_root): obj_path, '-o', wasm_path, '--allow-undefined', '--export', '__wasm_call_ctors', + '--export', '__data_end', '--global-base=568', ] if is_shared: diff --git a/test/lld/em_asm.wast b/test/lld/em_asm.wast index 83aa63582..84250b6ac 100644 --- a/test/lld/em_asm.wast +++ b/test/lld/em_asm.wast @@ -2,27 +2,21 @@ (type $0 (func (param i32 i32 i32) (result i32))) (type $1 (func)) (type $2 (func (result i32))) - (type $3 (func (param i32 i32 i32))) - (type $4 (func (param i32 i32))) - (type $5 (func (param i32) (result i32))) - (type $6 (func (param i32 i32) (result i32))) + (type $3 (func (param i32 i32) (result i32))) (import "env" "emscripten_asm_const_int" (func $emscripten_asm_const_int (param i32 i32 i32) (result i32))) (memory $0 2) - (data (i32.const 568) "{ Module.print(\"Hello world\"); }\00{ return $0 + $1; }\00{ Module.print(\"Got \" + $0); }\00") + (data (i32.const 568) "{ Module.print(\"Hello world\"); }\00\00{ return $0 + $1; }\00ii\00{ Module.print(\"Got \" + $0); }\00i\00") (table $0 1 1 funcref) - (global $global$0 (mut i32) (i32.const 66192)) - (global $global$1 i32 (i32.const 66192)) - (global $global$2 i32 (i32.const 652)) + (global $global$0 (mut i32) (i32.const 66208)) + (global $global$1 i32 (i32.const 658)) (export "memory" (memory $0)) (export "__wasm_call_ctors" (func $__wasm_call_ctors)) - (export "__heap_base" (global $global$1)) - (export "__data_end" (global $global$2)) (export "main" (func $main)) + (export "__data_end" (global $global$1)) (func $__wasm_call_ctors (; 1 ;) (type $1) ) (func $__original_main (; 2 ;) (type $2) (result i32) (local $0 i32) - (local $1 i32) (global.set $global$0 (local.tee $0 (i32.sub @@ -31,163 +25,46 @@ ) ) ) - (i32.store8 offset=24 - (local.get $0) - (call $__em_asm_sig_builder::inner<>\20const\20__em_asm_sig_builder::__em_asm_sig<>\28\29) - ) (drop (call $emscripten_asm_const_int (i32.const 568) - (i32.add - (local.get $0) - (i32.const 24) - ) + (i32.const 601) (i32.const 0) ) ) - (call $__em_asm_sig_builder::inner<int\2c\20int>\20const\20__em_asm_sig_builder::__em_asm_sig<int\2c\20int>\28int\2c\20int\29 - (i32.add - (local.get $0) - (i32.const 24) - ) - (i32.const 13) - (i32.const 27) - ) (i64.store offset=16 (local.get $0) (i64.const 115964117005) ) - (call $__em_asm_sig_builder::inner<int>\20const\20__em_asm_sig_builder::__em_asm_sig<int>\28int\29 - (i32.add - (local.get $0) - (i32.const 24) - ) - (local.tee $1 - (call $emscripten_asm_const_int - (i32.const 601) - (i32.add - (local.get $0) - (i32.const 24) - ) - (i32.add - (local.get $0) - (i32.const 16) - ) - ) - ) - ) (i32.store (local.get $0) - (local.get $1) - ) - (drop (call $emscripten_asm_const_int - (i32.const 621) + (i32.const 602) + (i32.const 622) (i32.add (local.get $0) - (i32.const 24) - ) - (local.get $0) - ) - ) - (global.set $global$0 - (i32.add - (local.get $0) - (i32.const 32) - ) - ) - (i32.const 0) - ) - (func $__em_asm_sig_builder::inner<>\20const\20__em_asm_sig_builder::__em_asm_sig<>\28\29 (; 3 ;) (type $2) (result i32) - (i32.const 0) - ) - (func $__em_asm_sig_builder::inner<int\2c\20int>\20const\20__em_asm_sig_builder::__em_asm_sig<int\2c\20int>\28int\2c\20int\29 (; 4 ;) (type $3) (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (global.set $global$0 - (local.tee $3 - (i32.sub - (global.get $global$0) (i32.const 16) ) ) ) - (i32.store8 offset=13 - (local.get $3) - (call $__em_asm_sig_builder::sig_char\28int\29 - (local.get $1) - ) - ) - (local.set $2 - (call $__em_asm_sig_builder::sig_char\28int\29 - (local.get $2) - ) - ) - (i32.store8 - (i32.add + (drop + (call $emscripten_asm_const_int + (i32.const 625) + (i32.const 656) (local.get $0) - (i32.const 2) - ) - (i32.const 0) - ) - (i32.store8 offset=14 - (local.get $3) - (local.get $2) - ) - (i32.store16 align=1 - (local.get $0) - (i32.load16_u offset=13 align=1 - (local.get $3) - ) - ) - (global.set $global$0 - (i32.add - (local.get $3) - (i32.const 16) - ) - ) - ) - (func $__em_asm_sig_builder::inner<int>\20const\20__em_asm_sig_builder::__em_asm_sig<int>\28int\29 (; 5 ;) (type $4) (param $0 i32) (param $1 i32) - (local $2 i32) - (global.set $global$0 - (local.tee $2 - (i32.sub - (global.get $global$0) - (i32.const 16) - ) - ) - ) - (local.set $1 - (call $__em_asm_sig_builder::sig_char\28int\29 - (local.get $1) - ) - ) - (i32.store8 offset=15 - (local.get $2) - (i32.const 0) - ) - (i32.store8 offset=14 - (local.get $2) - (local.get $1) - ) - (i32.store16 align=1 - (local.get $0) - (i32.load16_u offset=14 - (local.get $2) ) ) (global.set $global$0 (i32.add - (local.get $2) - (i32.const 16) + (local.get $0) + (i32.const 32) ) ) + (i32.const 0) ) - (func $__em_asm_sig_builder::sig_char\28int\29 (; 6 ;) (type $5) (param $0 i32) (result i32) - (i32.const 105) - ) - (func $main (; 7 ;) (type $6) (param $0 i32) (param $1 i32) (result i32) + (func $main (; 3 ;) (type $3) (param $0 i32) (param $1 i32) (result i32) (call $__original_main) ) - ;; custom section "producers", size 111 + ;; custom section "producers", size 112 ) diff --git a/test/lld/em_asm.wast.mem.mem b/test/lld/em_asm.wast.mem.mem Binary files differindex 9249eb195..e06dbba87 100644 --- a/test/lld/em_asm.wast.mem.mem +++ b/test/lld/em_asm.wast.mem.mem diff --git a/test/lld/em_asm.wast.mem.out b/test/lld/em_asm.wast.mem.out index ef098b2fb..6b6ad6c95 100644 --- a/test/lld/em_asm.wast.mem.out +++ b/test/lld/em_asm.wast.mem.out @@ -2,22 +2,17 @@ (type $0 (func (param i32 i32 i32) (result i32))) (type $1 (func)) (type $2 (func (result i32))) - (type $3 (func (param i32 i32 i32))) - (type $4 (func (param i32 i32))) - (type $5 (func (param i32) (result i32))) - (type $6 (func (param i32 i32) (result i32))) + (type $3 (func (param i32 i32) (result i32))) (type $FUNCSIG$iiii (func (param i32 i32 i32) (result i32))) (import "env" "emscripten_asm_const_iii" (func $emscripten_asm_const_iii (param i32 i32 i32) (result i32))) (memory $0 2) (table $0 1 1 funcref) - (global $global$0 (mut i32) (i32.const 66192)) - (global $global$1 i32 (i32.const 66192)) - (global $global$2 i32 (i32.const 652)) + (global $global$0 (mut i32) (i32.const 66208)) + (global $global$1 i32 (i32.const 658)) (export "memory" (memory $0)) (export "__wasm_call_ctors" (func $__wasm_call_ctors)) - (export "__heap_base" (global $global$1)) - (export "__data_end" (global $global$2)) (export "main" (func $main)) + (export "__data_end" (global $global$1)) (export "stackSave" (func $stackSave)) (export "stackAlloc" (func $stackAlloc)) (export "stackRestore" (func $stackRestore)) @@ -27,7 +22,6 @@ ) (func $__original_main (; 2 ;) (type $2) (result i32) (local $0 i32) - (local $1 i32) (global.set $global$0 (local.tee $0 (i32.sub @@ -36,167 +30,50 @@ ) ) ) - (i32.store8 offset=24 - (local.get $0) - (call $__em_asm_sig_builder::inner<>\20const\20__em_asm_sig_builder::__em_asm_sig<>\28\29) - ) (drop (call $emscripten_asm_const_iii (i32.const 568) - (i32.add - (local.get $0) - (i32.const 24) - ) + (i32.const 601) (i32.const 0) ) ) - (call $__em_asm_sig_builder::inner<int\2c\20int>\20const\20__em_asm_sig_builder::__em_asm_sig<int\2c\20int>\28int\2c\20int\29 - (i32.add - (local.get $0) - (i32.const 24) - ) - (i32.const 13) - (i32.const 27) - ) (i64.store offset=16 (local.get $0) (i64.const 115964117005) ) - (call $__em_asm_sig_builder::inner<int>\20const\20__em_asm_sig_builder::__em_asm_sig<int>\28int\29 - (i32.add - (local.get $0) - (i32.const 24) - ) - (local.tee $1 - (call $emscripten_asm_const_iii - (i32.const 601) - (i32.add - (local.get $0) - (i32.const 24) - ) - (i32.add - (local.get $0) - (i32.const 16) - ) - ) - ) - ) (i32.store (local.get $0) - (local.get $1) - ) - (drop (call $emscripten_asm_const_iii - (i32.const 621) + (i32.const 602) + (i32.const 622) (i32.add (local.get $0) - (i32.const 24) - ) - (local.get $0) - ) - ) - (global.set $global$0 - (i32.add - (local.get $0) - (i32.const 32) - ) - ) - (i32.const 0) - ) - (func $__em_asm_sig_builder::inner<>\20const\20__em_asm_sig_builder::__em_asm_sig<>\28\29 (; 3 ;) (type $2) (result i32) - (i32.const 0) - ) - (func $__em_asm_sig_builder::inner<int\2c\20int>\20const\20__em_asm_sig_builder::__em_asm_sig<int\2c\20int>\28int\2c\20int\29 (; 4 ;) (type $3) (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (global.set $global$0 - (local.tee $3 - (i32.sub - (global.get $global$0) (i32.const 16) ) ) ) - (i32.store8 offset=13 - (local.get $3) - (call $__em_asm_sig_builder::sig_char\28int\29 - (local.get $1) - ) - ) - (local.set $2 - (call $__em_asm_sig_builder::sig_char\28int\29 - (local.get $2) - ) - ) - (i32.store8 - (i32.add + (drop + (call $emscripten_asm_const_iii + (i32.const 625) + (i32.const 656) (local.get $0) - (i32.const 2) - ) - (i32.const 0) - ) - (i32.store8 offset=14 - (local.get $3) - (local.get $2) - ) - (i32.store16 align=1 - (local.get $0) - (i32.load16_u offset=13 align=1 - (local.get $3) ) ) (global.set $global$0 (i32.add - (local.get $3) - (i32.const 16) - ) - ) - ) - (func $__em_asm_sig_builder::inner<int>\20const\20__em_asm_sig_builder::__em_asm_sig<int>\28int\29 (; 5 ;) (type $4) (param $0 i32) (param $1 i32) - (local $2 i32) - (global.set $global$0 - (local.tee $2 - (i32.sub - (global.get $global$0) - (i32.const 16) - ) - ) - ) - (local.set $1 - (call $__em_asm_sig_builder::sig_char\28int\29 - (local.get $1) - ) - ) - (i32.store8 offset=15 - (local.get $2) - (i32.const 0) - ) - (i32.store8 offset=14 - (local.get $2) - (local.get $1) - ) - (i32.store16 align=1 - (local.get $0) - (i32.load16_u offset=14 - (local.get $2) - ) - ) - (global.set $global$0 - (i32.add - (local.get $2) - (i32.const 16) + (local.get $0) + (i32.const 32) ) ) + (i32.const 0) ) - (func $__em_asm_sig_builder::sig_char\28int\29 (; 6 ;) (type $5) (param $0 i32) (result i32) - (i32.const 105) - ) - (func $main (; 7 ;) (type $6) (param $0 i32) (param $1 i32) (result i32) + (func $main (; 3 ;) (type $3) (param $0 i32) (param $1 i32) (result i32) (call $__original_main) ) - (func $stackSave (; 8 ;) (result i32) + (func $stackSave (; 4 ;) (result i32) (global.get $global$0) ) - (func $stackAlloc (; 9 ;) (param $0 i32) (result i32) + (func $stackAlloc (; 5 ;) (param $0 i32) (result i32) (local $1 i32) (global.set $global$0 (local.tee $1 @@ -211,12 +88,12 @@ ) (local.get $1) ) - (func $stackRestore (; 10 ;) (param $0 i32) + (func $stackRestore (; 6 ;) (param $0 i32) (global.set $global$0 (local.get $0) ) ) - (func $__growWasmMemory (; 11 ;) (param $newSize i32) (result i32) + (func $__growWasmMemory (; 7 ;) (param $newSize i32) (result i32) (memory.grow (local.get $newSize) ) @@ -227,10 +104,10 @@ { "asmConsts": { "568": ["{ Module.print(\"Hello world\"); }", ["iii"], [""]], - "601": ["{ return $0 + $1; }", ["iii"], [""]], - "621": ["{ Module.print(\"Got \" + $0); }", ["iii"], [""]] + "602": ["{ return $0 + $1; }", ["iii"], [""]], + "625": ["{ Module.print(\"Got \" + $0); }", ["iii"], [""]] }, - "staticBump": 84, + "staticBump": 90, "tableSize": 1, "initializers": [ "__wasm_call_ctors" @@ -256,8 +133,7 @@ "__growWasmMemory" ], "namedGlobals": { - "__heap_base" : "66192", - "__data_end" : "652" + "__data_end" : "658" }, "invokeFuncs": [ ], diff --git a/test/lld/em_asm.wast.out b/test/lld/em_asm.wast.out index ed36f591b..c66cdc1cc 100644 --- a/test/lld/em_asm.wast.out +++ b/test/lld/em_asm.wast.out @@ -2,23 +2,18 @@ (type $0 (func (param i32 i32 i32) (result i32))) (type $1 (func)) (type $2 (func (result i32))) - (type $3 (func (param i32 i32 i32))) - (type $4 (func (param i32 i32))) - (type $5 (func (param i32) (result i32))) - (type $6 (func (param i32 i32) (result i32))) + (type $3 (func (param i32 i32) (result i32))) (type $FUNCSIG$iiii (func (param i32 i32 i32) (result i32))) (import "env" "emscripten_asm_const_iii" (func $emscripten_asm_const_iii (param i32 i32 i32) (result i32))) (memory $0 2) - (data (i32.const 568) "{ Module.print(\"Hello world\"); }\00{ return $0 + $1; }\00{ Module.print(\"Got \" + $0); }\00") + (data (i32.const 568) "{ Module.print(\"Hello world\"); }\00\00{ return $0 + $1; }\00ii\00{ Module.print(\"Got \" + $0); }\00i\00") (table $0 1 1 funcref) - (global $global$0 (mut i32) (i32.const 66192)) - (global $global$1 i32 (i32.const 66192)) - (global $global$2 i32 (i32.const 652)) + (global $global$0 (mut i32) (i32.const 66208)) + (global $global$1 i32 (i32.const 658)) (export "memory" (memory $0)) (export "__wasm_call_ctors" (func $__wasm_call_ctors)) - (export "__heap_base" (global $global$1)) - (export "__data_end" (global $global$2)) (export "main" (func $main)) + (export "__data_end" (global $global$1)) (export "stackSave" (func $stackSave)) (export "stackAlloc" (func $stackAlloc)) (export "stackRestore" (func $stackRestore)) @@ -28,7 +23,6 @@ ) (func $__original_main (; 2 ;) (type $2) (result i32) (local $0 i32) - (local $1 i32) (global.set $global$0 (local.tee $0 (i32.sub @@ -37,167 +31,50 @@ ) ) ) - (i32.store8 offset=24 - (local.get $0) - (call $__em_asm_sig_builder::inner<>\20const\20__em_asm_sig_builder::__em_asm_sig<>\28\29) - ) (drop (call $emscripten_asm_const_iii (i32.const 568) - (i32.add - (local.get $0) - (i32.const 24) - ) + (i32.const 601) (i32.const 0) ) ) - (call $__em_asm_sig_builder::inner<int\2c\20int>\20const\20__em_asm_sig_builder::__em_asm_sig<int\2c\20int>\28int\2c\20int\29 - (i32.add - (local.get $0) - (i32.const 24) - ) - (i32.const 13) - (i32.const 27) - ) (i64.store offset=16 (local.get $0) (i64.const 115964117005) ) - (call $__em_asm_sig_builder::inner<int>\20const\20__em_asm_sig_builder::__em_asm_sig<int>\28int\29 - (i32.add - (local.get $0) - (i32.const 24) - ) - (local.tee $1 - (call $emscripten_asm_const_iii - (i32.const 601) - (i32.add - (local.get $0) - (i32.const 24) - ) - (i32.add - (local.get $0) - (i32.const 16) - ) - ) - ) - ) (i32.store (local.get $0) - (local.get $1) - ) - (drop (call $emscripten_asm_const_iii - (i32.const 621) + (i32.const 602) + (i32.const 622) (i32.add (local.get $0) - (i32.const 24) - ) - (local.get $0) - ) - ) - (global.set $global$0 - (i32.add - (local.get $0) - (i32.const 32) - ) - ) - (i32.const 0) - ) - (func $__em_asm_sig_builder::inner<>\20const\20__em_asm_sig_builder::__em_asm_sig<>\28\29 (; 3 ;) (type $2) (result i32) - (i32.const 0) - ) - (func $__em_asm_sig_builder::inner<int\2c\20int>\20const\20__em_asm_sig_builder::__em_asm_sig<int\2c\20int>\28int\2c\20int\29 (; 4 ;) (type $3) (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (global.set $global$0 - (local.tee $3 - (i32.sub - (global.get $global$0) (i32.const 16) ) ) ) - (i32.store8 offset=13 - (local.get $3) - (call $__em_asm_sig_builder::sig_char\28int\29 - (local.get $1) - ) - ) - (local.set $2 - (call $__em_asm_sig_builder::sig_char\28int\29 - (local.get $2) - ) - ) - (i32.store8 - (i32.add + (drop + (call $emscripten_asm_const_iii + (i32.const 625) + (i32.const 656) (local.get $0) - (i32.const 2) - ) - (i32.const 0) - ) - (i32.store8 offset=14 - (local.get $3) - (local.get $2) - ) - (i32.store16 align=1 - (local.get $0) - (i32.load16_u offset=13 align=1 - (local.get $3) ) ) (global.set $global$0 (i32.add - (local.get $3) - (i32.const 16) - ) - ) - ) - (func $__em_asm_sig_builder::inner<int>\20const\20__em_asm_sig_builder::__em_asm_sig<int>\28int\29 (; 5 ;) (type $4) (param $0 i32) (param $1 i32) - (local $2 i32) - (global.set $global$0 - (local.tee $2 - (i32.sub - (global.get $global$0) - (i32.const 16) - ) - ) - ) - (local.set $1 - (call $__em_asm_sig_builder::sig_char\28int\29 - (local.get $1) - ) - ) - (i32.store8 offset=15 - (local.get $2) - (i32.const 0) - ) - (i32.store8 offset=14 - (local.get $2) - (local.get $1) - ) - (i32.store16 align=1 - (local.get $0) - (i32.load16_u offset=14 - (local.get $2) - ) - ) - (global.set $global$0 - (i32.add - (local.get $2) - (i32.const 16) + (local.get $0) + (i32.const 32) ) ) + (i32.const 0) ) - (func $__em_asm_sig_builder::sig_char\28int\29 (; 6 ;) (type $5) (param $0 i32) (result i32) - (i32.const 105) - ) - (func $main (; 7 ;) (type $6) (param $0 i32) (param $1 i32) (result i32) + (func $main (; 3 ;) (type $3) (param $0 i32) (param $1 i32) (result i32) (call $__original_main) ) - (func $stackSave (; 8 ;) (result i32) + (func $stackSave (; 4 ;) (result i32) (global.get $global$0) ) - (func $stackAlloc (; 9 ;) (param $0 i32) (result i32) + (func $stackAlloc (; 5 ;) (param $0 i32) (result i32) (local $1 i32) (global.set $global$0 (local.tee $1 @@ -212,12 +89,12 @@ ) (local.get $1) ) - (func $stackRestore (; 10 ;) (param $0 i32) + (func $stackRestore (; 6 ;) (param $0 i32) (global.set $global$0 (local.get $0) ) ) - (func $__growWasmMemory (; 11 ;) (param $newSize i32) (result i32) + (func $__growWasmMemory (; 7 ;) (param $newSize i32) (result i32) (memory.grow (local.get $newSize) ) @@ -228,10 +105,10 @@ { "asmConsts": { "568": ["{ Module.print(\"Hello world\"); }", ["iii"], [""]], - "601": ["{ return $0 + $1; }", ["iii"], [""]], - "621": ["{ Module.print(\"Got \" + $0); }", ["iii"], [""]] + "602": ["{ return $0 + $1; }", ["iii"], [""]], + "625": ["{ Module.print(\"Got \" + $0); }", ["iii"], [""]] }, - "staticBump": 84, + "staticBump": 90, "tableSize": 1, "initializers": [ "__wasm_call_ctors" @@ -257,8 +134,7 @@ "__growWasmMemory" ], "namedGlobals": { - "__heap_base" : "66192", - "__data_end" : "652" + "__data_end" : "658" }, "invokeFuncs": [ ], diff --git a/test/lld/em_asm_shared.wast b/test/lld/em_asm_shared.wast index 811fb189d..ba70886ec 100644 --- a/test/lld/em_asm_shared.wast +++ b/test/lld/em_asm_shared.wast @@ -2,23 +2,25 @@ (type $0 (func (param i32 i32 i32) (result i32))) (type $1 (func)) (type $2 (func (result i32))) - (type $3 (func (param i32 i32 i32))) - (type $4 (func (param i32 i32))) - (type $5 (func (param i32) (result i32))) - (type $6 (func (param i32 i32) (result i32))) + (type $3 (func (param i32 i32) (result i32))) (import "env" "memory" (memory $0 0)) - (data (global.get $gimport$3) "{ Module.print(\"Hello world\"); }\00{ return $0 + $1; }\00{ Module.print(\"Got \" + $0); }\00") + (data (global.get $gimport$3) "{ Module.print(\"Hello world\"); }\00\00{ return $0 + $1; }\00ii\00{ Module.print(\"Got \" + $0); }\00i\00") (import "env" "__indirect_function_table" (table $timport$1 0 funcref)) (import "env" "__stack_pointer" (global $gimport$2 (mut i32))) (import "env" "__memory_base" (global $gimport$3 i32)) (import "env" "__table_base" (global $gimport$4 i32)) + (import "GOT.mem" "_ZN20__em_asm_sig_builderI19__em_asm_type_tupleIJEEE6bufferE" (global $gimport$6 (mut i32))) + (import "GOT.mem" "_ZN20__em_asm_sig_builderI19__em_asm_type_tupleIJiiEEE6bufferE" (global $gimport$7 (mut i32))) + (import "GOT.mem" "_ZN20__em_asm_sig_builderI19__em_asm_type_tupleIJiEEE6bufferE" (global $gimport$8 (mut i32))) (import "env" "emscripten_asm_const_int" (func $emscripten_asm_const_int (param i32 i32 i32) (result i32))) + (global $global$0 i32 (i32.const 33)) + (global $global$1 i32 (i32.const 54)) + (global $global$2 i32 (i32.const 88)) (export "__wasm_call_ctors" (func $__wasm_call_ctors)) (export "__original_main" (func $__original_main)) - (export "_ZN20__em_asm_sig_builder12__em_asm_sigIJEEEKNS_5innerIJDpT_EEES3_" (func $__em_asm_sig_builder::inner<>\20const\20__em_asm_sig_builder::__em_asm_sig<>\28\29)) - (export "_ZN20__em_asm_sig_builder12__em_asm_sigIJiiEEEKNS_5innerIJDpT_EEES3_" (func $__em_asm_sig_builder::inner<int\2c\20int>\20const\20__em_asm_sig_builder::__em_asm_sig<int\2c\20int>\28int\2c\20int\29)) - (export "_ZN20__em_asm_sig_builder12__em_asm_sigIJiEEEKNS_5innerIJDpT_EEES3_" (func $__em_asm_sig_builder::inner<int>\20const\20__em_asm_sig_builder::__em_asm_sig<int>\28int\29)) - (export "_ZN20__em_asm_sig_builder8sig_charEi" (func $__em_asm_sig_builder::sig_char\28int\29)) + (export "_ZN20__em_asm_sig_builderI19__em_asm_type_tupleIJEEE6bufferE" (global $global$0)) + (export "_ZN20__em_asm_sig_builderI19__em_asm_type_tupleIJiiEEE6bufferE" (global $global$1)) + (export "_ZN20__em_asm_sig_builderI19__em_asm_type_tupleIJiEEE6bufferE" (global $global$2)) (export "main" (func $main)) (func $__wasm_call_ctors (; 1 ;) (type $1) (call $__wasm_apply_relocs) @@ -28,7 +30,6 @@ (func $__original_main (; 3 ;) (type $2) (result i32) (local $0 i32) (local $1 i32) - (local $2 i32) (global.set $gimport$2 (local.tee $0 (i32.sub @@ -37,10 +38,6 @@ ) ) ) - (i32.store8 offset=24 - (local.get $0) - (call $__em_asm_sig_builder::inner<>\20const\20__em_asm_sig_builder::__em_asm_sig<>\28\29) - ) (drop (call $emscripten_asm_const_int (i32.add @@ -49,163 +46,50 @@ ) (i32.const 0) ) - (i32.add - (local.get $0) - (i32.const 24) - ) + (global.get $gimport$6) (i32.const 0) ) ) - (call $__em_asm_sig_builder::inner<int\2c\20int>\20const\20__em_asm_sig_builder::__em_asm_sig<int\2c\20int>\28int\2c\20int\29 - (i32.add - (local.get $0) - (i32.const 24) - ) - (i32.const 13) - (i32.const 27) - ) (i64.store offset=16 (local.get $0) (i64.const 115964117005) ) - (call $__em_asm_sig_builder::inner<int>\20const\20__em_asm_sig_builder::__em_asm_sig<int>\28int\29 - (i32.add - (local.get $0) - (i32.const 24) - ) - (local.tee $2 - (call $emscripten_asm_const_int - (i32.add - (local.get $1) - (i32.const 33) - ) - (i32.add - (local.get $0) - (i32.const 24) - ) - (i32.add - (local.get $0) - (i32.const 16) - ) - ) - ) - ) (i32.store (local.get $0) - (local.get $2) - ) - (drop (call $emscripten_asm_const_int (i32.add (local.get $1) - (i32.const 53) + (i32.const 34) ) + (global.get $gimport$7) (i32.add (local.get $0) - (i32.const 24) - ) - (local.get $0) - ) - ) - (global.set $gimport$2 - (i32.add - (local.get $0) - (i32.const 32) - ) - ) - (i32.const 0) - ) - (func $__em_asm_sig_builder::inner<>\20const\20__em_asm_sig_builder::__em_asm_sig<>\28\29 (; 4 ;) (type $2) (result i32) - (i32.const 0) - ) - (func $__em_asm_sig_builder::inner<int\2c\20int>\20const\20__em_asm_sig_builder::__em_asm_sig<int\2c\20int>\28int\2c\20int\29 (; 5 ;) (type $3) (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (global.set $gimport$2 - (local.tee $3 - (i32.sub - (global.get $gimport$2) (i32.const 16) ) ) ) - (i32.store8 offset=13 - (local.get $3) - (call $__em_asm_sig_builder::sig_char\28int\29 - (local.get $1) - ) - ) - (local.set $2 - (call $__em_asm_sig_builder::sig_char\28int\29 - (local.get $2) - ) - ) - (i32.store8 - (i32.add - (local.get $0) - (i32.const 2) - ) - (i32.const 0) - ) - (i32.store8 offset=14 - (local.get $3) - (local.get $2) - ) - (i32.store16 align=1 - (local.get $0) - (i32.load16_u offset=13 align=1 - (local.get $3) - ) - ) - (global.set $gimport$2 - (i32.add - (local.get $3) - (i32.const 16) - ) - ) - ) - (func $__em_asm_sig_builder::inner<int>\20const\20__em_asm_sig_builder::__em_asm_sig<int>\28int\29 (; 6 ;) (type $4) (param $0 i32) (param $1 i32) - (local $2 i32) - (global.set $gimport$2 - (local.tee $2 - (i32.sub - (global.get $gimport$2) - (i32.const 16) + (drop + (call $emscripten_asm_const_int + (i32.add + (local.get $1) + (i32.const 57) ) - ) - ) - (local.set $1 - (call $__em_asm_sig_builder::sig_char\28int\29 - (local.get $1) - ) - ) - (i32.store8 offset=15 - (local.get $2) - (i32.const 0) - ) - (i32.store8 offset=14 - (local.get $2) - (local.get $1) - ) - (i32.store16 align=1 - (local.get $0) - (i32.load16_u offset=14 - (local.get $2) + (global.get $gimport$8) + (local.get $0) ) ) (global.set $gimport$2 (i32.add - (local.get $2) - (i32.const 16) + (local.get $0) + (i32.const 32) ) ) + (i32.const 0) ) - (func $__em_asm_sig_builder::sig_char\28int\29 (; 7 ;) (type $5) (param $0 i32) (result i32) - (i32.const 105) - ) - (func $main (; 8 ;) (type $6) (param $0 i32) (param $1 i32) (result i32) + (func $main (; 4 ;) (type $3) (param $0 i32) (param $1 i32) (result i32) (call $__original_main) ) ;; custom section "dylink", size 5 - ;; custom section "producers", size 111 + ;; custom section "producers", size 112 ) diff --git a/test/lld/em_asm_shared.wast.out b/test/lld/em_asm_shared.wast.out index 62b8d469e..f3b676f24 100644 --- a/test/lld/em_asm_shared.wast.out +++ b/test/lld/em_asm_shared.wast.out @@ -2,38 +2,42 @@ (type $0 (func (param i32 i32 i32) (result i32))) (type $1 (func)) (type $2 (func (result i32))) - (type $3 (func (param i32 i32 i32))) - (type $4 (func (param i32 i32))) - (type $5 (func (param i32) (result i32))) - (type $6 (func (param i32 i32) (result i32))) + (type $3 (func (param i32 i32) (result i32))) (type $FUNCSIG$i (func (result i32))) (type $FUNCSIG$vi (func (param i32))) (type $FUNCSIG$iiii (func (param i32 i32 i32) (result i32))) (import "env" "memory" (memory $0 0)) - (data (global.get $gimport$3) "{ Module.print(\"Hello world\"); }\00{ return $0 + $1; }\00{ Module.print(\"Got \" + $0); }\00") + (data (global.get $gimport$3) "{ Module.print(\"Hello world\"); }\00\00{ return $0 + $1; }\00ii\00{ Module.print(\"Got \" + $0); }\00i\00") (import "env" "table" (table $0 0 funcref)) (import "env" "__memory_base" (global $gimport$3 i32)) (import "env" "__table_base" (global $gimport$4 i32)) (import "env" "stackSave" (func $stackSave (result i32))) (import "env" "stackRestore" (func $stackRestore (param i32))) + (import "env" "g$_ZN20__em_asm_sig_builderI19__em_asm_type_tupleIJEEE6bufferE" (func $g$_ZN20__em_asm_sig_builderI19__em_asm_type_tupleIJEEE6bufferE (result i32))) + (import "env" "g$_ZN20__em_asm_sig_builderI19__em_asm_type_tupleIJiiEEE6bufferE" (func $g$_ZN20__em_asm_sig_builderI19__em_asm_type_tupleIJiiEEE6bufferE (result i32))) + (import "env" "g$_ZN20__em_asm_sig_builderI19__em_asm_type_tupleIJiEEE6bufferE" (func $g$_ZN20__em_asm_sig_builderI19__em_asm_type_tupleIJiEEE6bufferE (result i32))) (import "env" "emscripten_asm_const_iii" (func $emscripten_asm_const_iii (param i32 i32 i32) (result i32))) + (global $gimport$6 (mut i32) (i32.const 0)) + (global $gimport$7 (mut i32) (i32.const 0)) + (global $gimport$8 (mut i32) (i32.const 0)) + (global $global$0 i32 (i32.const 33)) + (global $global$1 i32 (i32.const 54)) + (global $global$2 i32 (i32.const 88)) (export "__original_main" (func $__original_main)) - (export "_ZN20__em_asm_sig_builder12__em_asm_sigIJEEEKNS_5innerIJDpT_EEES3_" (func $__em_asm_sig_builder::inner<>\20const\20__em_asm_sig_builder::__em_asm_sig<>\28\29)) - (export "_ZN20__em_asm_sig_builder12__em_asm_sigIJiiEEEKNS_5innerIJDpT_EEES3_" (func $__em_asm_sig_builder::inner<int\2c\20int>\20const\20__em_asm_sig_builder::__em_asm_sig<int\2c\20int>\28int\2c\20int\29)) - (export "_ZN20__em_asm_sig_builder12__em_asm_sigIJiEEEKNS_5innerIJDpT_EEES3_" (func $__em_asm_sig_builder::inner<int>\20const\20__em_asm_sig_builder::__em_asm_sig<int>\28int\29)) - (export "_ZN20__em_asm_sig_builder8sig_charEi" (func $__em_asm_sig_builder::sig_char\28int\29)) + (export "_ZN20__em_asm_sig_builderI19__em_asm_type_tupleIJEEE6bufferE" (global $global$0)) + (export "_ZN20__em_asm_sig_builderI19__em_asm_type_tupleIJiiEEE6bufferE" (global $global$1)) + (export "_ZN20__em_asm_sig_builderI19__em_asm_type_tupleIJiEEE6bufferE" (global $global$2)) (export "main" (func $main)) (export "__post_instantiate" (func $__post_instantiate)) - (func $__wasm_call_ctors (; 3 ;) (type $1) + (func $__wasm_call_ctors (; 6 ;) (type $1) (call $__wasm_apply_relocs) ) - (func $__wasm_apply_relocs (; 4 ;) (type $1) + (func $__wasm_apply_relocs (; 7 ;) (type $1) (nop) ) - (func $__original_main (; 5 ;) (type $2) (result i32) + (func $__original_main (; 8 ;) (type $2) (result i32) (local $0 i32) (local $1 i32) - (local $2 i32) (call $stackRestore (local.tee $0 (i32.sub @@ -42,10 +46,6 @@ ) ) ) - (i32.store8 offset=24 - (local.get $0) - (call $__em_asm_sig_builder::inner<>\20const\20__em_asm_sig_builder::__em_asm_sig<>\28\29) - ) (drop (call $emscripten_asm_const_iii (i32.add @@ -54,61 +54,35 @@ ) (i32.const 0) ) - (i32.add - (local.get $0) - (i32.const 24) - ) + (global.get $gimport$6) (i32.const 0) ) ) - (call $__em_asm_sig_builder::inner<int\2c\20int>\20const\20__em_asm_sig_builder::__em_asm_sig<int\2c\20int>\28int\2c\20int\29 - (i32.add - (local.get $0) - (i32.const 24) - ) - (i32.const 13) - (i32.const 27) - ) (i64.store offset=16 (local.get $0) (i64.const 115964117005) ) - (call $__em_asm_sig_builder::inner<int>\20const\20__em_asm_sig_builder::__em_asm_sig<int>\28int\29 - (i32.add - (local.get $0) - (i32.const 24) - ) - (local.tee $2 - (call $emscripten_asm_const_iii - (i32.add - (local.get $1) - (i32.const 33) - ) - (i32.add - (local.get $0) - (i32.const 24) - ) - (i32.add - (local.get $0) - (i32.const 16) - ) - ) - ) - ) (i32.store (local.get $0) - (local.get $2) - ) - (drop (call $emscripten_asm_const_iii (i32.add (local.get $1) - (i32.const 53) + (i32.const 34) ) + (global.get $gimport$7) (i32.add (local.get $0) - (i32.const 24) + (i32.const 16) + ) + ) + ) + (drop + (call $emscripten_asm_const_iii + (i32.add + (local.get $1) + (i32.const 57) ) + (global.get $gimport$8) (local.get $0) ) ) @@ -120,113 +94,41 @@ ) (i32.const 0) ) - (func $__em_asm_sig_builder::inner<>\20const\20__em_asm_sig_builder::__em_asm_sig<>\28\29 (; 6 ;) (type $2) (result i32) - (i32.const 0) + (func $main (; 9 ;) (type $3) (param $0 i32) (param $1 i32) (result i32) + (call $__original_main) ) - (func $__em_asm_sig_builder::inner<int\2c\20int>\20const\20__em_asm_sig_builder::__em_asm_sig<int\2c\20int>\28int\2c\20int\29 (; 7 ;) (type $3) (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (call $stackRestore - (local.tee $3 - (i32.sub - (call $stackSave) - (i32.const 16) - ) - ) - ) - (i32.store8 offset=13 - (local.get $3) - (call $__em_asm_sig_builder::sig_char\28int\29 - (local.get $1) - ) - ) - (local.set $2 - (call $__em_asm_sig_builder::sig_char\28int\29 - (local.get $2) - ) - ) - (i32.store8 - (i32.add - (local.get $0) - (i32.const 2) - ) - (i32.const 0) - ) - (i32.store8 offset=14 - (local.get $3) - (local.get $2) - ) - (i32.store16 align=1 - (local.get $0) - (i32.load16_u offset=13 align=1 - (local.get $3) - ) - ) - (call $stackRestore - (i32.add - (local.get $3) - (i32.const 16) - ) - ) + (func $__post_instantiate (; 10 ;) + (call $__assign_got_enties) + (call $__wasm_call_ctors) ) - (func $__em_asm_sig_builder::inner<int>\20const\20__em_asm_sig_builder::__em_asm_sig<int>\28int\29 (; 8 ;) (type $4) (param $0 i32) (param $1 i32) - (local $2 i32) - (call $stackRestore - (local.tee $2 - (i32.sub - (call $stackSave) - (i32.const 16) - ) - ) + (func $__assign_got_enties (; 11 ;) + (global.set $gimport$6 + (call $g$_ZN20__em_asm_sig_builderI19__em_asm_type_tupleIJEEE6bufferE) ) - (local.set $1 - (call $__em_asm_sig_builder::sig_char\28int\29 - (local.get $1) - ) - ) - (i32.store8 offset=15 - (local.get $2) - (i32.const 0) - ) - (i32.store8 offset=14 - (local.get $2) - (local.get $1) - ) - (i32.store16 align=1 - (local.get $0) - (i32.load16_u offset=14 - (local.get $2) - ) + (global.set $gimport$7 + (call $g$_ZN20__em_asm_sig_builderI19__em_asm_type_tupleIJiiEEE6bufferE) ) - (call $stackRestore - (i32.add - (local.get $2) - (i32.const 16) - ) + (global.set $gimport$8 + (call $g$_ZN20__em_asm_sig_builderI19__em_asm_type_tupleIJiEEE6bufferE) ) ) - (func $__em_asm_sig_builder::sig_char\28int\29 (; 9 ;) (type $5) (param $0 i32) (result i32) - (i32.const 105) - ) - (func $main (; 10 ;) (type $6) (param $0 i32) (param $1 i32) (result i32) - (call $__original_main) - ) - (func $__post_instantiate (; 11 ;) - (call $__wasm_call_ctors) - ) ) (; --BEGIN METADATA -- { "asmConsts": { "0": ["{ Module.print(\"Hello world\"); }", ["iii"], [""]], - "33": ["{ return $0 + $1; }", ["iii"], [""]], - "53": ["{ Module.print(\"Got \" + $0); }", ["iii"], [""]] + "34": ["{ return $0 + $1; }", ["iii"], [""]], + "57": ["{ Module.print(\"Got \" + $0); }", ["iii"], [""]] }, "staticBump": 0, "tableSize": 0, "declares": [ "stackSave", - "stackRestore" + "stackRestore", + "g$_ZN20__em_asm_sig_builderI19__em_asm_type_tupleIJEEE6bufferE", + "g$_ZN20__em_asm_sig_builderI19__em_asm_type_tupleIJiiEEE6bufferE", + "g$_ZN20__em_asm_sig_builderI19__em_asm_type_tupleIJiEEE6bufferE" ], "externs": [ "___memory_base", @@ -234,23 +136,18 @@ ], "implementedFunctions": [ "___original_main", - "__ZN20__em_asm_sig_builder12__em_asm_sigIJEEEKNS_5innerIJDpT_EEES3_", - "__ZN20__em_asm_sig_builder12__em_asm_sigIJiiEEEKNS_5innerIJDpT_EEES3_", - "__ZN20__em_asm_sig_builder12__em_asm_sigIJiEEEKNS_5innerIJDpT_EEES3_", - "__ZN20__em_asm_sig_builder8sig_charEi", "_main", "___post_instantiate" ], "exports": [ "__original_main", - "_ZN20__em_asm_sig_builder12__em_asm_sigIJEEEKNS_5innerIJDpT_EEES3_", - "_ZN20__em_asm_sig_builder12__em_asm_sigIJiiEEEKNS_5innerIJDpT_EEES3_", - "_ZN20__em_asm_sig_builder12__em_asm_sigIJiEEEKNS_5innerIJDpT_EEES3_", - "_ZN20__em_asm_sig_builder8sig_charEi", "main", "__post_instantiate" ], "namedGlobals": { + "_ZN20__em_asm_sig_builderI19__em_asm_type_tupleIJEEE6bufferE" : "33", + "_ZN20__em_asm_sig_builderI19__em_asm_type_tupleIJiiEEE6bufferE" : "54", + "_ZN20__em_asm_sig_builderI19__em_asm_type_tupleIJiEEE6bufferE" : "88" }, "invokeFuncs": [ ], diff --git a/test/lld/hello_world.wast b/test/lld/hello_world.wast index fed975e51..f4b32d0fe 100644 --- a/test/lld/hello_world.wast +++ b/test/lld/hello_world.wast @@ -8,13 +8,11 @@ (data (i32.const 568) "Hello, world\00") (table $0 1 1 funcref) (global $global$0 (mut i32) (i32.const 66128)) - (global $global$1 i32 (i32.const 66128)) - (global $global$2 i32 (i32.const 581)) + (global $global$1 i32 (i32.const 581)) (export "memory" (memory $0)) (export "__wasm_call_ctors" (func $__wasm_call_ctors)) - (export "__heap_base" (global $global$1)) - (export "__data_end" (global $global$2)) (export "main" (func $main)) + (export "__data_end" (global $global$1)) (func $__wasm_call_ctors (; 1 ;) (type $1) ) (func $__original_main (; 2 ;) (type $2) (result i32) @@ -28,6 +26,6 @@ (func $main (; 3 ;) (type $3) (param $0 i32) (param $1 i32) (result i32) (call $__original_main) ) - ;; custom section "producers", size 111 + ;; custom section "producers", size 112 ) diff --git a/test/lld/hello_world.wast.mem.out b/test/lld/hello_world.wast.mem.out index c8891f6d9..b81b73a1b 100644 --- a/test/lld/hello_world.wast.mem.out +++ b/test/lld/hello_world.wast.mem.out @@ -7,13 +7,11 @@ (memory $0 2) (table $0 1 1 funcref) (global $global$0 (mut i32) (i32.const 66128)) - (global $global$1 i32 (i32.const 66128)) - (global $global$2 i32 (i32.const 581)) + (global $global$1 i32 (i32.const 581)) (export "memory" (memory $0)) (export "__wasm_call_ctors" (func $__wasm_call_ctors)) - (export "__heap_base" (global $global$1)) - (export "__data_end" (global $global$2)) (export "main" (func $main)) + (export "__data_end" (global $global$1)) (export "stackSave" (func $stackSave)) (export "stackAlloc" (func $stackAlloc)) (export "stackRestore" (func $stackRestore)) @@ -91,7 +89,6 @@ "__growWasmMemory" ], "namedGlobals": { - "__heap_base" : "66128", "__data_end" : "581" }, "invokeFuncs": [ diff --git a/test/lld/hello_world.wast.out b/test/lld/hello_world.wast.out index 9e01def20..55bc3a89a 100644 --- a/test/lld/hello_world.wast.out +++ b/test/lld/hello_world.wast.out @@ -8,13 +8,11 @@ (data (i32.const 568) "Hello, world\00") (table $0 1 1 funcref) (global $global$0 (mut i32) (i32.const 66128)) - (global $global$1 i32 (i32.const 66128)) - (global $global$2 i32 (i32.const 581)) + (global $global$1 i32 (i32.const 581)) (export "memory" (memory $0)) (export "__wasm_call_ctors" (func $__wasm_call_ctors)) - (export "__heap_base" (global $global$1)) - (export "__data_end" (global $global$2)) (export "main" (func $main)) + (export "__data_end" (global $global$1)) (export "stackSave" (func $stackSave)) (export "stackAlloc" (func $stackAlloc)) (export "stackRestore" (func $stackRestore)) @@ -92,7 +90,6 @@ "__growWasmMemory" ], "namedGlobals": { - "__heap_base" : "66128", "__data_end" : "581" }, "invokeFuncs": [ diff --git a/test/lld/init.wast b/test/lld/init.wast index 2f06799c9..fe3e5b7b2 100644 --- a/test/lld/init.wast +++ b/test/lld/init.wast @@ -3,16 +3,13 @@ (type $1 (func (result i32))) (type $2 (func (param i32 i32) (result i32))) (memory $0 2) - (data (i32.const 568) "\00\00\00\00\00\00\00\00") (table $0 1 1 funcref) (global $global$0 (mut i32) (i32.const 66112)) - (global $global$1 i32 (i32.const 66112)) - (global $global$2 i32 (i32.const 576)) + (global $global$1 i32 (i32.const 576)) (export "memory" (memory $0)) (export "__wasm_call_ctors" (func $__wasm_call_ctors)) - (export "__heap_base" (global $global$1)) - (export "__data_end" (global $global$2)) (export "main" (func $main)) + (export "__data_end" (global $global$1)) (func $__wasm_call_ctors (; 0 ;) (type $0) (call $init_x) (call $init_y) @@ -42,6 +39,6 @@ (func $main (; 4 ;) (type $2) (param $0 i32) (param $1 i32) (result i32) (call $__original_main) ) - ;; custom section "producers", size 111 + ;; custom section "producers", size 112 ) diff --git a/test/lld/init.wast.out b/test/lld/init.wast.out index 273e0d6aa..52eb0dd51 100644 --- a/test/lld/init.wast.out +++ b/test/lld/init.wast.out @@ -3,16 +3,13 @@ (type $1 (func (result i32))) (type $2 (func (param i32 i32) (result i32))) (memory $0 2) - (data (i32.const 568) "\00\00\00\00\00\00\00\00") (table $0 1 1 funcref) (global $global$0 (mut i32) (i32.const 66112)) - (global $global$1 i32 (i32.const 66112)) - (global $global$2 i32 (i32.const 576)) + (global $global$1 i32 (i32.const 576)) (export "memory" (memory $0)) (export "__wasm_call_ctors" (func $__wasm_call_ctors)) - (export "__heap_base" (global $global$1)) - (export "__data_end" (global $global$2)) (export "main" (func $main)) + (export "__data_end" (global $global$1)) (export "stackSave" (func $stackSave)) (export "stackAlloc" (func $stackAlloc)) (export "stackRestore" (func $stackRestore)) @@ -104,7 +101,6 @@ "__growWasmMemory" ], "namedGlobals": { - "__heap_base" : "66112", "__data_end" : "576" }, "invokeFuncs": [ diff --git a/test/lld/recursive.wast b/test/lld/recursive.wast index 67f7f3914..cd6a4ae86 100644 --- a/test/lld/recursive.wast +++ b/test/lld/recursive.wast @@ -2,18 +2,16 @@ (type $0 (func (param i32 i32) (result i32))) (type $1 (func)) (type $2 (func (result i32))) - (import "env" "printf" (func $printf (param i32 i32) (result i32))) + (import "env" "iprintf" (func $iprintf (param i32 i32) (result i32))) (memory $0 2) (data (i32.const 568) "%d:%d\n\00Result: %d\n\00") (table $0 1 1 funcref) (global $global$0 (mut i32) (i32.const 66128)) - (global $global$1 i32 (i32.const 66128)) - (global $global$2 i32 (i32.const 587)) + (global $global$1 i32 (i32.const 587)) (export "memory" (memory $0)) (export "__wasm_call_ctors" (func $__wasm_call_ctors)) - (export "__heap_base" (global $global$1)) - (export "__data_end" (global $global$2)) (export "main" (func $main)) + (export "__data_end" (global $global$1)) (func $__wasm_call_ctors (; 1 ;) (type $1) ) (func $foo (; 2 ;) (type $0) (param $0 i32) (param $1 i32) (result i32) @@ -35,7 +33,7 @@ (local.get $0) ) (drop - (call $printf + (call $iprintf (i32.const 568) (local.get $2) ) @@ -69,7 +67,7 @@ ) ) (drop - (call $printf + (call $iprintf (i32.const 575) (local.get $0) ) @@ -85,6 +83,6 @@ (func $main (; 4 ;) (type $0) (param $0 i32) (param $1 i32) (result i32) (call $__original_main) ) - ;; custom section "producers", size 111 + ;; custom section "producers", size 112 ) diff --git a/test/lld/recursive.wast.out b/test/lld/recursive.wast.out index 24868211d..af4caef45 100644 --- a/test/lld/recursive.wast.out +++ b/test/lld/recursive.wast.out @@ -2,18 +2,16 @@ (type $0 (func (param i32 i32) (result i32))) (type $1 (func)) (type $2 (func (result i32))) - (import "env" "printf" (func $printf (param i32 i32) (result i32))) + (import "env" "iprintf" (func $iprintf (param i32 i32) (result i32))) (memory $0 2) (data (i32.const 568) "%d:%d\n\00Result: %d\n\00") (table $0 1 1 funcref) (global $global$0 (mut i32) (i32.const 66128)) - (global $global$1 i32 (i32.const 66128)) - (global $global$2 i32 (i32.const 587)) + (global $global$1 i32 (i32.const 587)) (export "memory" (memory $0)) (export "__wasm_call_ctors" (func $__wasm_call_ctors)) - (export "__heap_base" (global $global$1)) - (export "__data_end" (global $global$2)) (export "main" (func $main)) + (export "__data_end" (global $global$1)) (export "stackSave" (func $stackSave)) (export "stackAlloc" (func $stackAlloc)) (export "stackRestore" (func $stackRestore)) @@ -40,7 +38,7 @@ (local.get $0) ) (drop - (call $printf + (call $iprintf (i32.const 568) (local.get $2) ) @@ -74,7 +72,7 @@ ) ) (drop - (call $printf + (call $iprintf (i32.const 575) (local.get $0) ) @@ -128,7 +126,7 @@ "__wasm_call_ctors" ], "declares": [ - "printf" + "iprintf" ], "externs": [ ], @@ -149,7 +147,6 @@ "__growWasmMemory" ], "namedGlobals": { - "__heap_base" : "66128", "__data_end" : "587" }, "invokeFuncs": [ diff --git a/test/lld/reserved_func_ptr.wast b/test/lld/reserved_func_ptr.wast index a57f0d3af..f979bd2d8 100644 --- a/test/lld/reserved_func_ptr.wast +++ b/test/lld/reserved_func_ptr.wast @@ -11,13 +11,11 @@ (table $0 3 3 funcref) (elem (i32.const 1) $address_taken_func\28int\2c\20int\2c\20int\29 $address_taken_func2\28int\2c\20int\2c\20int\29) (global $global$0 (mut i32) (i32.const 66112)) - (global $global$1 i32 (i32.const 66112)) - (global $global$2 i32 (i32.const 568)) + (global $global$1 i32 (i32.const 568)) (export "memory" (memory $0)) (export "__wasm_call_ctors" (func $__wasm_call_ctors)) - (export "__heap_base" (global $global$1)) - (export "__data_end" (global $global$2)) (export "main" (func $main)) + (export "__data_end" (global $global$1)) (func $__wasm_call_ctors (; 1 ;) (type $0) ) (func $address_taken_func\28int\2c\20int\2c\20int\29 (; 2 ;) (type $5) (param $0 i32) (param $1 i32) (param $2 i32) @@ -108,6 +106,6 @@ ) (i32.const 0) ) - ;; custom section "producers", size 111 + ;; custom section "producers", size 112 ) diff --git a/test/lld/reserved_func_ptr.wast.out b/test/lld/reserved_func_ptr.wast.out index 613802f6a..fd0d1f4af 100644 --- a/test/lld/reserved_func_ptr.wast.out +++ b/test/lld/reserved_func_ptr.wast.out @@ -12,13 +12,11 @@ (table $0 3 3 funcref) (elem (i32.const 1) $address_taken_func\28int\2c\20int\2c\20int\29 $address_taken_func2\28int\2c\20int\2c\20int\29) (global $global$0 (mut i32) (i32.const 66112)) - (global $global$1 i32 (i32.const 66112)) - (global $global$2 i32 (i32.const 568)) + (global $global$1 i32 (i32.const 568)) (export "memory" (memory $0)) (export "__wasm_call_ctors" (func $__wasm_call_ctors)) - (export "__heap_base" (global $global$1)) - (export "__data_end" (global $global$2)) (export "main" (func $main)) + (export "__data_end" (global $global$1)) (export "stackSave" (func $stackSave)) (export "stackAlloc" (func $stackAlloc)) (export "stackRestore" (func $stackRestore)) @@ -186,7 +184,6 @@ "dynCall_viii" ], "namedGlobals": { - "__heap_base" : "66112", "__data_end" : "568" }, "invokeFuncs": [ diff --git a/test/lld/shared.wast b/test/lld/shared.wast index 019fc67fe..99b667e42 100644 --- a/test/lld/shared.wast +++ b/test/lld/shared.wast @@ -3,9 +3,8 @@ (type $1 (func)) (type $2 (func (result i32))) (import "env" "memory" (memory $0 0)) - (data (global.get $gimport$2) "Hello, world\00\00\00\00\00\00\00\00\01\00\00\00") - (import "env" "__indirect_function_table" (table $timport$1 2 funcref)) - (elem (global.get $gimport$3) $puts $print_message\28\29) + (data (global.get $gimport$2) "Hello, world\00\00\00\00\00\00\00\00\00\00\00\00") + (import "env" "__indirect_function_table" (table $timport$1 0 funcref)) (import "env" "__memory_base" (global $gimport$2 i32)) (import "env" "__table_base" (global $gimport$3 i32)) (import "GOT.mem" "external_var" (global $gimport$5 (mut i32))) @@ -27,20 +26,14 @@ (global.get $gimport$2) (i32.const 16) ) - (i32.add - (global.get $gimport$3) - (i32.const 0) - ) + (global.get $gimport$6) ) (i32.store (i32.add (global.get $gimport$2) (i32.const 20) ) - (i32.add - (global.get $gimport$3) - (i32.const 1) - ) + (global.get $gimport$7) ) ) (func $print_message\28\29 (; 3 ;) (type $2) (result i32) @@ -57,6 +50,6 @@ ) ) ;; custom section "dylink", size 5 - ;; custom section "producers", size 111 + ;; custom section "producers", size 112 ) diff --git a/test/lld/shared.wast.out b/test/lld/shared.wast.out index 4931092d6..d27672f3a 100644 --- a/test/lld/shared.wast.out +++ b/test/lld/shared.wast.out @@ -3,11 +3,9 @@ (type $1 (func)) (type $2 (func (result i32))) (type $FUNCSIG$i (func (result i32))) - (type $FUNCSIG$ii (func (param i32) (result i32))) (import "env" "memory" (memory $0 0)) - (data (global.get $gimport$2) "Hello, world\00\00\00\00\00\00\00\00\01\00\00\00") - (import "env" "table" (table $0 2 funcref)) - (elem (global.get $gimport$3) $puts $print_message\28\29) + (data (global.get $gimport$2) "Hello, world\00\00\00\00\00\00\00\00\00\00\00\00") + (import "env" "table" (table $0 0 funcref)) (import "env" "__memory_base" (global $gimport$2 i32)) (import "env" "__table_base" (global $gimport$3 i32)) (import "env" "puts" (func $puts (param i32) (result i32))) @@ -23,8 +21,6 @@ (export "ptr_puts" (global $global$0)) (export "ptr_local_func" (global $global$1)) (export "__post_instantiate" (func $__post_instantiate)) - (export "dynCall_ii" (func $dynCall_ii)) - (export "dynCall_i" (func $dynCall_i)) (func $__wasm_call_ctors (; 4 ;) (type $1) (call $__wasm_apply_relocs) ) @@ -34,20 +30,14 @@ (global.get $gimport$2) (i32.const 16) ) - (i32.add - (global.get $gimport$3) - (i32.const 0) - ) + (global.get $gimport$6) ) (i32.store (i32.add (global.get $gimport$2) (i32.const 20) ) - (i32.add - (global.get $gimport$3) - (i32.const 1) - ) + (global.get $gimport$7) ) ) (func $print_message\28\29 (; 6 ;) (type $2) (result i32) @@ -78,23 +68,12 @@ (call $fp$_Z13print_messagev$i) ) ) - (func $dynCall_ii (; 9 ;) (param $fptr i32) (param $0 i32) (result i32) - (call_indirect (type $FUNCSIG$ii) - (local.get $0) - (local.get $fptr) - ) - ) - (func $dynCall_i (; 10 ;) (param $fptr i32) (result i32) - (call_indirect (type $FUNCSIG$i) - (local.get $fptr) - ) - ) ) (; --BEGIN METADATA -- { "staticBump": 0, - "tableSize": 2, + "tableSize": 0, "declares": [ "puts", "g$external_var", @@ -107,15 +86,11 @@ ], "implementedFunctions": [ "__Z13print_messagev", - "___post_instantiate", - "_dynCall_ii", - "_dynCall_i" + "___post_instantiate" ], "exports": [ "_Z13print_messagev", - "__post_instantiate", - "dynCall_ii", - "dynCall_i" + "__post_instantiate" ], "namedGlobals": { "ptr_puts" : "16", |