From 52f6c9420e3bac319607e653e875bff7a81a44a2 Mon Sep 17 00:00:00 2001 From: Congcong Cai Date: Thu, 11 Aug 2022 21:35:48 +0800 Subject: [PATCH 1/3] fix: fix error for 0.18.x compile --- game-of-life/package.json | 2 +- i64/package.json | 4 +- libm/package.json | 4 +- mandelbrot/package.json | 4 +- parse/build/index.wat | 1707 ++++++++++++++++++------------------- parse/package.json | 2 +- 6 files changed, 850 insertions(+), 873 deletions(-) diff --git a/game-of-life/package.json b/game-of-life/package.json index e567bf7..bed58e3 100644 --- a/game-of-life/package.json +++ b/game-of-life/package.json @@ -5,7 +5,7 @@ "private": true, "scripts": { "asbuild:untouched": "asc assembly/index.ts -b build/untouched.wasm -t build/untouched.wat --use Math=JSMath --runtime stub --importMemory --sourceMap --debug --measure", - "asbuild:optimized": "asc assembly/index.ts -b build/optimized.wasm -t build/optimized.wat -d build/optimized.d.ts --use Math=JSMath -O3 --runtime stub --importMemory --sourceMap --measure", + "asbuild:optimized": "asc assembly/index.ts -b build/optimized.wasm -t build/optimized.wat --use Math=JSMath -O3 --runtime stub --importMemory --sourceMap --measure", "asbuild": "npm run asbuild:untouched && npm run asbuild:optimized", "start": "npx serve" }, diff --git a/i64/package.json b/i64/package.json index ef38428..2e584d2 100644 --- a/i64/package.json +++ b/i64/package.json @@ -6,8 +6,8 @@ "types": "index.d.ts", "scripts": { "asbuild": "npm run asbuild:untouched && npm run asbuild:optimized", - "asbuild:untouched": "asc assembly/i64.ts -t build/untouched.wat -b build/untouched.wasm --runtime stub --sourceMap --debug --measure", - "asbuild:optimized": "asc assembly/i64.ts -b build/optimized.wasm -t build/optimized.wat -d build/optimized.d.ts -O3 --runtime stub --sourceMap --measure", + "asbuild:untouched": "asc assembly/i64.ts -t build/untouched.wat -o build/untouched.wasm --runtime stub --sourceMap --debug --measure", + "asbuild:optimized": "asc assembly/i64.ts -t build/optimized.wat -o build/optimized.wasm -O3 --runtime stub --sourceMap --measure", "test": "node tests" }, "files": [ diff --git a/libm/package.json b/libm/package.json index a8fcc56..d20866a 100644 --- a/libm/package.json +++ b/libm/package.json @@ -7,8 +7,8 @@ "types": "index.d.ts", "scripts": { "asbuild": "npm run asbuild:libm && npm run asbuild:libmf", - "asbuild:libm": "asc assembly/libm.ts -O3 -b build/libm.wasm -t build/libm.wat --runtime stub", - "asbuild:libmf": "asc assembly/libmf.ts -O3 -b build/libmf.wasm -t build/libmf.wat --runtime stub", + "asbuild:libm": "asc assembly/libm.ts -O3 -o build/libm.wasm -t build/libm.wat --runtime stub", + "asbuild:libmf": "asc assembly/libmf.ts -O3 -o build/libmf.wasm -t build/libmf.wat --runtime stub", "test": "node tests" }, "files": [ diff --git a/mandelbrot/package.json b/mandelbrot/package.json index 5b6c6b9..bc178d3 100644 --- a/mandelbrot/package.json +++ b/mandelbrot/package.json @@ -4,8 +4,8 @@ "license": "Apache-2.0", "private": true, "scripts": { - "asbuild:untouched": "asc assembly/index.ts -b build/untouched.wasm -t build/untouched.wat --use Math=JSMath --runtime stub --importMemory --sourceMap --debug --measure", - "asbuild:optimized": "asc assembly/index.ts -b build/optimized.wasm -t build/optimized.wat -d build/optimized.d.ts --use Math=JSMath --runtime stub -O3 --importMemory --sourceMap --measure", + "asbuild:untouched": "asc assembly/index.ts -o build/untouched.wasm -t build/untouched.wat --use Math=JSMath --runtime stub --importMemory --sourceMap --debug --measure", + "asbuild:optimized": "asc assembly/index.ts -o build/optimized.wasm -t build/optimized.wat --use Math=JSMath --runtime stub -O3 --importMemory --sourceMap --measure", "asbuild": "npm run asbuild:untouched && npm run asbuild:optimized", "start": "npx serve" }, diff --git a/parse/build/index.wat b/parse/build/index.wat index d7d2bab..beabf4f 100644 --- a/parse/build/index.wat +++ b/parse/build/index.wat @@ -43,8 +43,8 @@ (local $12 i32) (local $13 i32) (local $14 i32) - (local $15 i32) - (local $16 i64) + (local $15 i64) + (local $16 i32) (local $17 i64) (local $18 i64) (local $19 i32) @@ -75,77 +75,77 @@ unreachable end loop $while-continue|0 - local.get $1 global.get $assembly/index/off - i32.gt_u + local.get $1 + i32.lt_u if - i32.const 0 - local.set $3 i32.const 0 local.set $2 + i32.const 0 + local.set $4 global.get $assembly/index/off local.set $0 loop $do-loop|0 local.get $0 - local.tee $8 + local.tee $3 i32.const 1 i32.add local.set $0 - local.get $8 + local.get $2 + local.get $3 i32.load8_u - local.tee $8 + local.tee $3 i32.const 127 i32.and - local.get $2 + local.get $4 i32.shl - local.get $3 i32.or - local.set $3 - local.get $8 + local.set $2 + local.get $3 i32.const 128 i32.and if - local.get $2 + local.get $4 i32.const 7 i32.add - local.set $2 + local.set $4 br $do-loop|0 end end local.get $0 global.set $assembly/index/off - local.get $3 - local.set $2 + local.get $2 + local.set $10 i32.const 0 - local.set $3 + local.set $4 i32.const 0 - local.set $8 + local.set $3 global.get $assembly/index/off local.set $0 loop $do-loop|03 local.get $0 - local.tee $9 + local.tee $2 i32.const 1 i32.add local.set $0 - local.get $9 + local.get $4 + local.get $2 i32.load8_u - local.tee $9 + local.tee $2 i32.const 127 i32.and - local.get $8 - i32.shl local.get $3 + i32.shl i32.or - local.set $3 - local.get $9 + local.set $4 + local.get $2 i32.const 128 i32.and if - local.get $8 + local.get $3 i32.const 7 i32.add - local.set $8 + local.set $3 br $do-loop|03 end end @@ -154,10 +154,10 @@ i32.const 0 local.set $0 i32.const 0 - local.set $8 - local.get $2 + local.set $2 + local.get $10 if - local.get $2 + local.get $10 i32.const 11 i32.gt_u if @@ -165,57 +165,60 @@ end else i32.const 0 - local.set $19 + local.set $9 + i32.const 0 + local.set $13 global.get $assembly/index/off - local.tee $10 + local.tee $3 local.set $0 loop $do-loop|06 local.get $0 - local.tee $9 + local.tee $2 i32.const 1 i32.add local.set $0 local.get $9 + local.get $2 i32.load8_u - local.tee $9 + local.tee $2 i32.const 127 i32.and - local.get $19 + local.get $13 i32.shl - local.get $8 i32.or - local.set $8 - local.get $9 + local.set $9 + local.get $2 i32.const 128 i32.and if - local.get $19 + local.get $13 i32.const 7 i32.add - local.set $19 + local.set $13 br $do-loop|06 end end local.get $0 global.set $assembly/index/off - local.get $8 global.get $assembly/index/off local.tee $0 + local.get $9 + local.tee $2 i32.add global.set $assembly/index/off - local.get $3 + local.get $4 global.get $assembly/index/off - local.get $10 + local.get $3 i32.sub i32.sub - local.set $3 + local.set $4 end - local.get $2 + local.get $10 global.get $assembly/index/off - local.tee $10 - local.get $3 + local.tee $11 + local.get $4 local.get $0 - local.get $8 + local.get $2 call $assembly/options/onSection if block $break|1 @@ -230,99 +233,99 @@ block $case2|1 block $case1|1 block $case0|1 - local.get $2 + local.get $10 br_table $case8|1 $case0|1 $case1|1 $case2|1 $case3|1 $case4|1 $case5|1 $case6|1 $case7|1 $case9|1 $case9|1 $case9|1 $case12|1 end i32.const 0 - local.set $3 - i32.const 0 local.set $2 + i32.const 0 + local.set $4 global.get $assembly/index/off local.set $0 loop $do-loop|09 local.get $0 - local.tee $8 + local.tee $3 i32.const 1 i32.add local.set $0 - local.get $8 + local.get $2 + local.get $3 i32.load8_u - local.tee $8 + local.tee $3 i32.const 127 i32.and - local.get $2 + local.get $4 i32.shl - local.get $3 i32.or - local.set $3 - local.get $8 + local.set $2 + local.get $3 i32.const 128 i32.and if - local.get $2 + local.get $4 i32.const 7 i32.add - local.set $2 + local.set $4 br $do-loop|09 end end local.get $0 global.set $assembly/index/off - local.get $3 - local.set $9 + local.get $2 + local.set $10 i32.const 0 - local.set $3 + local.set $14 loop $for-loop|2 - local.get $3 - local.get $9 - i32.lt_u + local.get $10 + local.get $14 + i32.gt_u if i32.const 0 - local.set $8 + local.set $3 i32.const 0 - local.set $2 + local.set $4 global.get $assembly/index/off local.set $0 loop $do-loop|011 local.get $0 - local.tee $10 + local.tee $2 i32.const 1 i32.add local.set $0 - local.get $10 + local.get $3 + local.get $2 i32.load8_u - local.tee $10 + local.tee $2 i32.const 127 i32.and - local.get $2 + local.get $4 i32.shl - local.get $8 i32.or - local.set $8 - local.get $2 + local.set $3 + local.get $4 i32.const 7 i32.add - local.set $2 - local.get $10 + local.set $4 + local.get $2 i32.const 128 i32.and br_if $do-loop|011 end local.get $0 global.set $assembly/index/off + local.get $14 local.get $3 i32.const -1 - local.get $2 + local.get $4 i32.shl - local.get $8 i32.or - local.get $8 - local.get $10 + local.get $3 + local.get $2 i32.const 64 i32.and i32.const 0 i32.ne - local.get $2 + local.get $4 i32.const 7 i32.lt_u i32.and @@ -331,96 +334,94 @@ i32.and call $assembly/options/onType i32.const 0 - local.set $2 + local.set $4 i32.const 0 - local.set $8 + local.set $3 global.get $assembly/index/off local.set $0 loop $do-loop|014 local.get $0 - local.tee $10 + local.tee $2 i32.const 1 i32.add local.set $0 - local.get $10 + local.get $4 + local.get $2 i32.load8_u - local.tee $10 + local.tee $2 i32.const 127 i32.and - local.get $8 + local.get $3 i32.shl - local.get $2 i32.or - local.set $2 - local.get $10 + local.set $4 + local.get $2 i32.const 128 i32.and if - local.get $8 + local.get $3 i32.const 7 i32.add - local.set $8 + local.set $3 br $do-loop|014 end end local.get $0 global.set $assembly/index/off - local.get $2 - local.set $10 i32.const 0 - local.set $8 + local.set $3 loop $for-loop|3 - local.get $8 - local.get $10 + local.get $3 + local.get $4 i32.lt_u if i32.const 0 - local.set $19 + local.set $13 i32.const 0 - local.set $2 + local.set $9 global.get $assembly/index/off local.set $0 loop $do-loop|017 local.get $0 - local.tee $11 + local.tee $2 i32.const 1 i32.add local.set $0 - local.get $11 + local.get $13 + local.get $2 i32.load8_u - local.tee $11 + local.tee $2 i32.const 127 i32.and - local.get $2 + local.get $9 i32.shl - local.get $19 i32.or - local.set $19 - local.get $2 + local.set $13 + local.get $9 i32.const 7 i32.add - local.set $2 - local.get $11 + local.set $9 + local.get $2 i32.const 128 i32.and br_if $do-loop|017 end local.get $0 global.set $assembly/index/off + local.get $14 local.get $3 - local.get $8 + local.get $13 i32.const -1 - local.get $2 + local.get $9 i32.shl - local.get $19 i32.or - local.get $19 - local.get $11 + local.get $13 + local.get $2 i32.const 64 i32.and i32.const 0 i32.ne - local.get $2 + local.get $9 i32.const 7 i32.lt_u i32.and @@ -428,104 +429,102 @@ i32.const 127 i32.and call $assembly/options/onTypeParam - local.get $8 + local.get $3 i32.const 1 i32.add - local.set $8 + local.set $3 br $for-loop|3 end end i32.const 0 - local.set $2 + local.set $4 i32.const 0 - local.set $8 + local.set $3 global.get $assembly/index/off local.set $0 loop $do-loop|020 local.get $0 - local.tee $10 + local.tee $2 i32.const 1 i32.add local.set $0 - local.get $10 + local.get $4 + local.get $2 i32.load8_u - local.tee $10 + local.tee $2 i32.const 127 i32.and - local.get $8 + local.get $3 i32.shl - local.get $2 i32.or - local.set $2 - local.get $10 + local.set $4 + local.get $2 i32.const 128 i32.and if - local.get $8 + local.get $3 i32.const 7 i32.add - local.set $8 + local.set $3 br $do-loop|020 end end local.get $0 global.set $assembly/index/off - local.get $2 - local.set $10 i32.const 0 - local.set $8 + local.set $2 loop $for-loop|4 - local.get $8 - local.get $10 + local.get $2 + local.get $4 i32.lt_u if i32.const 0 - local.set $19 + local.set $13 i32.const 0 - local.set $2 + local.set $9 global.get $assembly/index/off local.set $0 loop $do-loop|023 local.get $0 - local.tee $11 + local.tee $3 i32.const 1 i32.add local.set $0 - local.get $11 + local.get $13 + local.get $3 i32.load8_u - local.tee $11 + local.tee $3 i32.const 127 i32.and - local.get $2 + local.get $9 i32.shl - local.get $19 i32.or - local.set $19 - local.get $2 + local.set $13 + local.get $9 i32.const 7 i32.add - local.set $2 - local.get $11 + local.set $9 + local.get $3 i32.const 128 i32.and br_if $do-loop|023 end local.get $0 global.set $assembly/index/off - local.get $3 - local.get $8 - i32.const -1 + local.get $14 local.get $2 + local.get $13 + i32.const -1 + local.get $9 i32.shl - local.get $19 i32.or - local.get $19 - local.get $11 + local.get $13 + local.get $3 i32.const 64 i32.and i32.const 0 i32.ne - local.get $2 + local.get $9 i32.const 7 i32.lt_u i32.and @@ -533,137 +532,136 @@ i32.const 127 i32.and call $assembly/options/onTypeReturn - local.get $8 + local.get $2 i32.const 1 i32.add - local.set $8 + local.set $2 br $for-loop|4 end end - local.get $3 + local.get $14 i32.const 1 i32.add - local.set $3 + local.set $14 br $for-loop|2 end end br $break|1 end i32.const 0 - local.set $3 - i32.const 0 local.set $2 + i32.const 0 + local.set $4 global.get $assembly/index/off local.set $0 loop $do-loop|026 local.get $0 - local.tee $8 + local.tee $3 i32.const 1 i32.add local.set $0 - local.get $8 + local.get $2 + local.get $3 i32.load8_u - local.tee $8 + local.tee $3 i32.const 127 i32.and - local.get $2 + local.get $4 i32.shl - local.get $3 i32.or - local.set $3 - local.get $8 + local.set $2 + local.get $3 i32.const 128 i32.and if - local.get $2 + local.get $4 i32.const 7 i32.add - local.set $2 + local.set $4 br $do-loop|026 end end local.get $0 global.set $assembly/index/off - local.get $3 - local.set $9 + local.get $2 + local.set $10 i32.const 0 - local.set $3 + local.set $14 loop $for-loop|5 - local.get $3 - local.get $9 - i32.lt_u + local.get $10 + local.get $14 + i32.gt_u if i32.const 0 - local.set $2 + local.set $4 i32.const 0 - local.set $8 + local.set $3 global.get $assembly/index/off local.set $0 loop $do-loop|029 local.get $0 - local.tee $10 + local.tee $2 i32.const 1 i32.add local.set $0 - local.get $10 + local.get $4 + local.get $2 i32.load8_u - local.tee $10 + local.tee $2 i32.const 127 i32.and - local.get $8 + local.get $3 i32.shl - local.get $2 i32.or - local.set $2 - local.get $10 + local.set $4 + local.get $2 i32.const 128 i32.and if - local.get $8 + local.get $3 i32.const 7 i32.add - local.set $8 + local.set $3 br $do-loop|029 end end local.get $0 global.set $assembly/index/off + local.get $4 global.get $assembly/index/off - local.tee $12 - local.get $2 - local.tee $10 + local.tee $3 i32.add global.set $assembly/index/off i32.const 0 - local.set $2 + local.set $9 i32.const 0 - local.set $8 + local.set $13 global.get $assembly/index/off local.set $0 loop $do-loop|032 local.get $0 - local.tee $11 + local.tee $2 i32.const 1 i32.add local.set $0 - local.get $11 + local.get $9 + local.get $2 i32.load8_u - local.tee $11 + local.tee $2 i32.const 127 i32.and - local.get $8 + local.get $13 i32.shl - local.get $2 i32.or - local.set $2 - local.get $11 + local.set $9 + local.get $2 i32.const 128 i32.and if - local.get $8 + local.get $13 i32.const 7 i32.add - local.set $8 + local.set $13 br $do-loop|032 end end @@ -671,23 +669,23 @@ global.set $assembly/index/off global.get $assembly/index/off local.tee $0 - local.get $2 + local.get $9 i32.add global.set $assembly/index/off global.get $assembly/index/off - local.tee $8 + local.tee $2 i32.load8_u local.set $11 - local.get $8 + local.get $2 i32.const 1 i32.add global.set $assembly/index/off - local.get $3 + local.get $14 local.get $11 - local.get $12 - local.get $10 + local.get $3 + local.get $4 local.get $0 - local.get $2 + local.get $9 call $assembly/options/onImport block $break|6 block $case4|6 @@ -698,346 +696,346 @@ local.get $11 br_table $case0|6 $case1|6 $case2|6 $case3|6 $case4|6 end - local.get $7 - local.tee $0 + local.get $6 + local.tee $2 i32.const 1 i32.add - local.set $7 - local.get $0 + local.set $6 i32.const 0 - local.set $2 + local.set $4 i32.const 0 - local.set $8 + local.set $3 global.get $assembly/index/off local.set $0 loop $do-loop|035 local.get $0 - local.tee $11 + local.tee $9 i32.const 1 i32.add local.set $0 - local.get $11 + local.get $4 + local.get $9 i32.load8_u - local.tee $11 + local.tee $9 i32.const 127 i32.and - local.get $8 + local.get $3 i32.shl - local.get $2 i32.or - local.set $2 - local.get $11 + local.set $4 + local.get $9 i32.const 128 i32.and if - local.get $8 + local.get $3 i32.const 7 i32.add - local.set $8 + local.set $3 br $do-loop|035 end end local.get $0 global.set $assembly/index/off local.get $2 + local.get $4 call $assembly/options/onFunctionImport br $break|6 end i32.const 0 - local.set $8 + local.set $3 i32.const 0 - local.set $2 + local.set $4 global.get $assembly/index/off local.set $0 loop $do-loop|038 local.get $0 - local.tee $10 + local.tee $2 i32.const 1 i32.add local.set $0 - local.get $10 + local.get $3 + local.get $2 i32.load8_u - local.tee $10 + local.tee $2 i32.const 127 i32.and - local.get $2 + local.get $4 i32.shl - local.get $8 i32.or - local.set $8 - local.get $2 + local.set $3 + local.get $4 i32.const 7 i32.add - local.set $2 - local.get $10 + local.set $4 + local.get $2 i32.const 128 i32.and br_if $do-loop|038 end local.get $0 global.set $assembly/index/off + local.get $3 i32.const -1 - local.get $2 + local.get $4 i32.shl - local.get $8 i32.or - local.get $8 - local.get $10 + local.get $3 + local.get $2 i32.const 64 i32.and i32.const 0 i32.ne - local.get $2 + local.get $4 i32.const 7 i32.lt_u i32.and select i32.const 127 i32.and - local.set $14 + local.set $13 i32.const 0 - local.set $2 + local.set $3 i32.const 0 - local.set $8 + local.set $9 global.get $assembly/index/off local.set $0 loop $do-loop|041 local.get $0 - local.tee $10 + local.tee $2 i32.const 1 i32.add local.set $0 - local.get $10 + local.get $3 + local.get $2 i32.load8_u - local.tee $10 + local.tee $2 i32.const 127 i32.and - local.get $8 + local.get $9 i32.shl - local.get $2 i32.or - local.set $2 - local.get $10 + local.set $3 + local.get $2 i32.const 128 i32.and if - local.get $8 + local.get $9 i32.const 7 i32.add - local.set $8 + local.set $9 br $do-loop|041 end end local.get $0 global.set $assembly/index/off - local.get $2 - local.set $10 - local.get $6 - local.tee $11 + local.get $3 + local.set $0 + local.get $7 + local.tee $4 i32.const 1 i32.add - local.set $6 + local.set $7 i32.const 0 - local.set $2 + local.set $3 i32.const 0 - local.set $8 + local.set $9 global.get $assembly/index/off - local.set $0 + local.set $2 loop $do-loop|044 - local.get $0 - local.tee $12 + local.get $2 + local.tee $11 i32.const 1 i32.add - local.set $0 - local.get $12 + local.set $2 + local.get $3 + local.get $11 i32.load8_u - local.tee $12 + local.tee $11 i32.const 127 i32.and - local.get $8 + local.get $9 i32.shl - local.get $2 i32.or - local.set $2 - local.get $12 + local.set $3 + local.get $11 i32.const 128 i32.and if - local.get $8 + local.get $9 i32.const 7 i32.add - local.set $8 + local.set $9 br $do-loop|044 end end - local.get $0 - global.set $assembly/index/off local.get $2 - local.set $12 - local.get $10 + global.set $assembly/index/off + local.get $3 + local.set $11 + local.get $0 i32.const 1 i32.and if i32.const 0 - local.set $2 + local.set $3 i32.const 0 - local.set $8 + local.set $9 global.get $assembly/index/off - local.set $0 + local.set $2 loop $do-loop|047 - local.get $0 - local.tee $13 + local.get $2 + local.tee $12 i32.const 1 i32.add - local.set $0 - local.get $13 + local.set $2 + local.get $3 + local.get $12 i32.load8_u - local.tee $13 + local.tee $12 i32.const 127 i32.and - local.get $8 + local.get $9 i32.shl - local.get $2 i32.or - local.set $2 - local.get $13 + local.set $3 + local.get $12 i32.const 128 i32.and if - local.get $8 + local.get $9 i32.const 7 i32.add - local.set $8 + local.set $9 br $do-loop|047 end end - local.get $0 + local.get $2 global.set $assembly/index/off else i32.const -1 - local.set $2 + local.set $3 end + local.get $4 + local.get $13 local.get $11 - local.get $14 - local.get $12 - local.get $2 - local.get $10 + local.get $3 + local.get $0 call $assembly/options/onTableImport br $break|6 end i32.const 0 - local.set $2 + local.set $4 i32.const 0 - local.set $8 + local.set $3 global.get $assembly/index/off local.set $0 loop $do-loop|050 local.get $0 - local.tee $10 + local.tee $2 i32.const 1 i32.add local.set $0 - local.get $10 + local.get $4 + local.get $2 i32.load8_u - local.tee $10 + local.tee $2 i32.const 127 i32.and - local.get $8 + local.get $3 i32.shl - local.get $2 i32.or - local.set $2 - local.get $10 + local.set $4 + local.get $2 i32.const 128 i32.and if - local.get $8 + local.get $3 i32.const 7 i32.add - local.set $8 + local.set $3 br $do-loop|050 end end local.get $0 global.set $assembly/index/off - local.get $2 - local.set $10 - local.get $5 - local.tee $11 + local.get $4 + local.set $2 + local.get $8 + local.tee $9 i32.const 1 i32.add - local.set $5 + local.set $8 i32.const 0 - local.set $2 + local.set $4 i32.const 0 - local.set $8 + local.set $3 global.get $assembly/index/off local.set $0 loop $do-loop|053 local.get $0 - local.tee $12 + local.tee $11 i32.const 1 i32.add local.set $0 - local.get $12 + local.get $4 + local.get $11 i32.load8_u - local.tee $12 + local.tee $11 i32.const 127 i32.and - local.get $8 + local.get $3 i32.shl - local.get $2 i32.or - local.set $2 - local.get $12 + local.set $4 + local.get $11 i32.const 128 i32.and if - local.get $8 + local.get $3 i32.const 7 i32.add - local.set $8 + local.set $3 br $do-loop|053 end end local.get $0 global.set $assembly/index/off + local.get $4 + local.set $11 local.get $2 - local.set $12 - local.get $10 i32.const 1 i32.and if i32.const 0 - local.set $2 + local.set $4 i32.const 0 - local.set $8 + local.set $3 global.get $assembly/index/off local.set $0 loop $do-loop|056 local.get $0 - local.tee $13 + local.tee $12 i32.const 1 i32.add local.set $0 - local.get $13 + local.get $4 + local.get $12 i32.load8_u - local.tee $13 + local.tee $12 i32.const 127 i32.and - local.get $8 + local.get $3 i32.shl - local.get $2 i32.or - local.set $2 - local.get $13 + local.set $4 + local.get $12 i32.const 128 i32.and if - local.get $8 + local.get $3 i32.const 7 i32.add - local.set $8 + local.set $3 br $do-loop|056 end end @@ -1045,347 +1043,343 @@ global.set $assembly/index/off else i32.const 65535 - local.set $2 + local.set $4 end + local.get $9 local.get $11 - local.get $12 + local.get $4 local.get $2 - local.get $10 call $assembly/options/onMemoryImport br $break|6 end - local.get $4 - local.tee $0 + local.get $5 + local.tee $2 i32.const 1 i32.add - local.set $4 - local.get $0 + local.set $5 i32.const 0 - local.set $8 + local.set $3 i32.const 0 - local.set $2 + local.set $4 global.get $assembly/index/off local.set $0 loop $do-loop|059 local.get $0 - local.tee $11 + local.tee $9 i32.const 1 i32.add local.set $0 - local.get $11 + local.get $3 + local.get $9 i32.load8_u - local.tee $11 + local.tee $9 i32.const 127 i32.and - local.get $2 + local.get $4 i32.shl - local.get $8 i32.or - local.set $8 - local.get $2 + local.set $3 + local.get $4 i32.const 7 i32.add - local.set $2 - local.get $11 + local.set $4 + local.get $9 i32.const 128 i32.and br_if $do-loop|059 end local.get $0 global.set $assembly/index/off + local.get $3 i32.const -1 - local.get $2 + local.get $4 i32.shl - local.get $8 i32.or - local.get $8 - local.get $11 + local.get $3 + local.get $9 i32.const 64 i32.and i32.const 0 i32.ne - local.get $2 + local.get $4 i32.const 7 i32.lt_u i32.and select i32.const 127 i32.and + local.set $11 i32.const 0 - local.set $2 + local.set $4 i32.const 0 - local.set $8 + local.set $3 global.get $assembly/index/off local.set $0 loop $do-loop|062 local.get $0 - local.tee $11 + local.tee $9 i32.const 1 i32.add local.set $0 - local.get $11 + local.get $4 + local.get $9 i32.load8_u - local.tee $11 + local.tee $9 i32.const 127 i32.and - local.get $8 + local.get $3 i32.shl - local.get $2 i32.or - local.set $2 - local.get $11 + local.set $4 + local.get $9 i32.const 128 i32.and if - local.get $8 + local.get $3 i32.const 7 i32.add - local.set $8 + local.set $3 br $do-loop|062 end end local.get $0 global.set $assembly/index/off local.get $2 + local.get $11 + local.get $4 call $assembly/options/onGlobalImport br $break|6 end unreachable end - local.get $3 + local.get $14 i32.const 1 i32.add - local.set $3 + local.set $14 br $for-loop|5 end end br $break|1 end i32.const 0 - local.set $3 - i32.const 0 local.set $2 + i32.const 0 + local.set $4 global.get $assembly/index/off local.set $0 loop $do-loop|065 local.get $0 - local.tee $8 + local.tee $3 i32.const 1 i32.add local.set $0 - local.get $8 + local.get $2 + local.get $3 i32.load8_u - local.tee $8 + local.tee $3 i32.const 127 i32.and - local.get $2 + local.get $4 i32.shl - local.get $3 i32.or - local.set $3 - local.get $8 + local.set $2 + local.get $3 i32.const 128 i32.and if - local.get $2 + local.get $4 i32.const 7 i32.add - local.set $2 + local.set $4 br $do-loop|065 end end local.get $0 global.set $assembly/index/off - local.get $3 - local.set $9 i32.const 0 - local.set $3 + local.set $14 loop $for-loop|7 - local.get $3 - local.get $9 - i32.lt_u + local.get $2 + local.get $14 + i32.gt_u if - local.get $7 - local.tee $0 + local.get $6 + local.tee $9 i32.const 1 i32.add - local.set $7 - local.get $0 + local.set $6 i32.const 0 - local.set $2 + local.set $4 i32.const 0 - local.set $8 + local.set $3 global.get $assembly/index/off local.set $0 loop $do-loop|068 local.get $0 - local.tee $11 + local.tee $10 i32.const 1 i32.add local.set $0 - local.get $11 + local.get $4 + local.get $10 i32.load8_u - local.tee $11 + local.tee $10 i32.const 127 i32.and - local.get $8 + local.get $3 i32.shl - local.get $2 i32.or - local.set $2 - local.get $11 + local.set $4 + local.get $10 i32.const 128 i32.and if - local.get $8 + local.get $3 i32.const 7 i32.add - local.set $8 + local.set $3 br $do-loop|068 end end local.get $0 global.set $assembly/index/off - local.get $2 + local.get $9 + local.get $4 call $assembly/options/onFunction - local.get $3 + local.get $14 i32.const 1 i32.add - local.set $3 + local.set $14 br $for-loop|7 end end br $break|1 end i32.const 0 - local.set $3 - i32.const 0 local.set $2 + i32.const 0 + local.set $4 global.get $assembly/index/off local.set $0 loop $do-loop|071 local.get $0 - local.tee $8 + local.tee $3 i32.const 1 i32.add local.set $0 - local.get $8 + local.get $2 + local.get $3 i32.load8_u - local.tee $8 + local.tee $3 i32.const 127 i32.and - local.get $2 + local.get $4 i32.shl - local.get $3 i32.or - local.set $3 - local.get $8 + local.set $2 + local.get $3 i32.const 128 i32.and if - local.get $2 + local.get $4 i32.const 7 i32.add - local.set $2 + local.set $4 br $do-loop|071 end end local.get $0 global.set $assembly/index/off - local.get $3 - local.set $9 + local.get $2 + local.set $10 i32.const 0 - local.set $3 + local.set $14 loop $for-loop|8 - local.get $3 - local.get $9 - i32.lt_u + local.get $10 + local.get $14 + i32.gt_u if i32.const 0 - local.set $2 + local.set $4 i32.const 0 - local.set $8 + local.set $3 global.get $assembly/index/off local.set $0 loop $do-loop|074 local.get $0 - local.tee $10 + local.tee $2 i32.const 1 i32.add local.set $0 - local.get $10 + local.get $4 + local.get $2 i32.load8_u - local.tee $10 + local.tee $2 i32.const 127 i32.and - local.get $8 + local.get $3 i32.shl - local.get $2 i32.or - local.set $2 - local.get $10 + local.set $4 + local.get $2 i32.const 128 i32.and if - local.get $8 + local.get $3 i32.const 7 i32.add - local.set $8 + local.set $3 br $do-loop|074 end end local.get $0 global.set $assembly/index/off - local.get $2 - i32.const 127 - i32.and - local.set $14 i32.const 0 - local.set $2 + local.set $3 i32.const 0 - local.set $8 + local.set $9 global.get $assembly/index/off - local.set $0 + local.set $2 loop $do-loop|077 - local.get $0 - local.tee $10 + local.get $2 + local.tee $0 i32.const 1 i32.add - local.set $0 - local.get $10 + local.set $2 + local.get $3 + local.get $0 i32.load8_u - local.tee $10 + local.tee $0 i32.const 127 i32.and - local.get $8 + local.get $9 i32.shl - local.get $2 i32.or - local.set $2 - local.get $10 + local.set $3 + local.get $0 i32.const 128 i32.and if - local.get $8 + local.get $9 i32.const 7 i32.add - local.set $8 + local.set $9 br $do-loop|077 end end - local.get $0 - global.set $assembly/index/off local.get $2 - local.set $10 - local.get $6 + global.set $assembly/index/off + local.get $3 + local.set $2 + local.get $7 local.tee $11 i32.const 1 i32.add - local.set $6 + local.set $7 i32.const 0 - local.set $2 + local.set $3 i32.const 0 - local.set $8 + local.set $9 global.get $assembly/index/off local.set $0 loop $do-loop|080 @@ -1394,39 +1388,39 @@ i32.const 1 i32.add local.set $0 + local.get $3 local.get $12 i32.load8_u local.tee $12 i32.const 127 i32.and - local.get $8 + local.get $9 i32.shl - local.get $2 i32.or - local.set $2 + local.set $3 local.get $12 i32.const 128 i32.and if - local.get $8 + local.get $9 i32.const 7 i32.add - local.set $8 + local.set $9 br $do-loop|080 end end local.get $0 global.set $assembly/index/off - local.get $2 + local.get $3 local.set $12 - local.get $10 + local.get $2 i32.const 1 i32.and if i32.const 0 - local.set $2 + local.set $3 i32.const 0 - local.set $8 + local.set $9 global.get $assembly/index/off local.set $0 loop $do-loop|083 @@ -1435,24 +1429,24 @@ i32.const 1 i32.add local.set $0 + local.get $3 local.get $13 i32.load8_u local.tee $13 i32.const 127 i32.and - local.get $8 + local.get $9 i32.shl - local.get $2 i32.or - local.set $2 + local.set $3 local.get $13 i32.const 128 i32.and if - local.get $8 + local.get $9 i32.const 7 i32.add - local.set $8 + local.set $9 br $do-loop|083 end end @@ -1460,180 +1454,178 @@ global.set $assembly/index/off else i32.const -1 - local.set $2 + local.set $3 end local.get $11 - local.get $14 + local.get $4 + i32.const 127 + i32.and local.get $12 + local.get $3 local.get $2 - local.get $10 call $assembly/options/onTable - local.get $3 + local.get $14 i32.const 1 i32.add - local.set $3 + local.set $14 br $for-loop|8 end end br $break|1 end i32.const 0 - local.set $3 - i32.const 0 local.set $2 + i32.const 0 + local.set $4 global.get $assembly/index/off local.set $0 loop $do-loop|086 local.get $0 - local.tee $8 + local.tee $3 i32.const 1 i32.add local.set $0 - local.get $8 + local.get $2 + local.get $3 i32.load8_u - local.tee $8 + local.tee $3 i32.const 127 i32.and - local.get $2 + local.get $4 i32.shl - local.get $3 i32.or - local.set $3 - local.get $8 + local.set $2 + local.get $3 i32.const 128 i32.and if - local.get $2 + local.get $4 i32.const 7 i32.add - local.set $2 + local.set $4 br $do-loop|086 end end local.get $0 global.set $assembly/index/off - local.get $3 - local.set $9 i32.const 0 - local.set $3 + local.set $14 loop $for-loop|9 - local.get $3 - local.get $9 - i32.lt_u + local.get $2 + local.get $14 + i32.gt_u if i32.const 0 - local.set $2 + local.set $4 i32.const 0 - local.set $8 + local.set $3 global.get $assembly/index/off local.set $0 loop $do-loop|089 local.get $0 - local.tee $10 + local.tee $9 i32.const 1 i32.add local.set $0 - local.get $10 + local.get $4 + local.get $9 i32.load8_u - local.tee $10 + local.tee $9 i32.const 127 i32.and - local.get $8 + local.get $3 i32.shl - local.get $2 i32.or - local.set $2 - local.get $10 + local.set $4 + local.get $9 i32.const 128 i32.and if - local.get $8 + local.get $3 i32.const 7 i32.add - local.set $8 + local.set $3 br $do-loop|089 end end local.get $0 global.set $assembly/index/off - local.get $2 - local.set $10 - local.get $5 - local.tee $11 + local.get $8 + local.tee $10 i32.const 1 i32.add - local.set $5 + local.set $8 i32.const 0 - local.set $2 + local.set $3 i32.const 0 - local.set $8 + local.set $9 global.get $assembly/index/off local.set $0 loop $do-loop|092 local.get $0 - local.tee $12 + local.tee $11 i32.const 1 i32.add local.set $0 - local.get $12 + local.get $3 + local.get $11 i32.load8_u - local.tee $12 + local.tee $11 i32.const 127 i32.and - local.get $8 + local.get $9 i32.shl - local.get $2 i32.or - local.set $2 - local.get $12 + local.set $3 + local.get $11 i32.const 128 i32.and if - local.get $8 + local.get $9 i32.const 7 i32.add - local.set $8 + local.set $9 br $do-loop|092 end end local.get $0 global.set $assembly/index/off - local.get $2 - local.set $12 - local.get $10 + local.get $3 + local.set $11 + local.get $4 i32.const 1 i32.and if i32.const 0 - local.set $2 + local.set $3 i32.const 0 - local.set $8 + local.set $9 global.get $assembly/index/off local.set $0 loop $do-loop|095 local.get $0 - local.tee $13 + local.tee $12 i32.const 1 i32.add local.set $0 - local.get $13 + local.get $3 + local.get $12 i32.load8_u - local.tee $13 + local.tee $12 i32.const 127 i32.and - local.get $8 + local.get $9 i32.shl - local.get $2 i32.or - local.set $2 - local.get $13 + local.set $3 + local.get $12 i32.const 128 i32.and if - local.get $8 + local.get $9 i32.const 7 i32.add - local.set $8 + local.set $9 br $do-loop|095 end end @@ -1641,169 +1633,163 @@ global.set $assembly/index/off else i32.const 65535 - local.set $2 + local.set $3 end - local.get $11 - local.get $12 - local.get $2 local.get $10 - call $assembly/options/onMemory + local.get $11 local.get $3 + local.get $4 + call $assembly/options/onMemory + local.get $14 i32.const 1 i32.add - local.set $3 + local.set $14 br $for-loop|9 end end br $break|1 end i32.const 0 - local.set $3 - i32.const 0 local.set $2 + i32.const 0 + local.set $4 global.get $assembly/index/off local.set $0 loop $do-loop|098 local.get $0 - local.tee $8 + local.tee $3 i32.const 1 i32.add local.set $0 - local.get $8 + local.get $2 + local.get $3 i32.load8_u - local.tee $8 + local.tee $3 i32.const 127 i32.and - local.get $2 + local.get $4 i32.shl - local.get $3 i32.or - local.set $3 - local.get $8 + local.set $2 + local.get $3 i32.const 128 i32.and if - local.get $2 + local.get $4 i32.const 7 i32.add - local.set $2 + local.set $4 br $do-loop|098 end end local.get $0 global.set $assembly/index/off - local.get $3 - local.set $9 i32.const 0 - local.set $3 + local.set $14 loop $for-loop|10 - local.get $3 - local.get $9 - i32.lt_u + local.get $2 + local.get $14 + i32.gt_u if i32.const 0 - local.set $8 + local.set $3 i32.const 0 - local.set $2 + local.set $4 global.get $assembly/index/off local.set $0 loop $do-loop|0101 local.get $0 - local.tee $10 + local.tee $9 i32.const 1 i32.add local.set $0 - local.get $10 + local.get $3 + local.get $9 i32.load8_u - local.tee $10 + local.tee $9 i32.const 127 i32.and - local.get $2 + local.get $4 i32.shl - local.get $8 i32.or - local.set $8 - local.get $2 + local.set $3 + local.get $4 i32.const 7 i32.add - local.set $2 - local.get $10 + local.set $4 + local.get $9 i32.const 128 i32.and br_if $do-loop|0101 end local.get $0 global.set $assembly/index/off + local.get $3 i32.const -1 - local.get $2 + local.get $4 i32.shl - local.get $8 i32.or - local.get $8 - local.get $10 + local.get $3 + local.get $9 i32.const 64 i32.and i32.const 0 i32.ne - local.get $2 + local.get $4 i32.const 7 i32.lt_u i32.and select i32.const 127 i32.and - local.set $13 + local.set $11 i32.const 0 - local.set $2 + local.set $3 i32.const 0 - local.set $8 + local.set $9 global.get $assembly/index/off local.set $0 loop $do-loop|0104 local.get $0 - local.tee $10 + local.tee $4 i32.const 1 i32.add local.set $0 - local.get $10 + local.get $3 + local.get $4 i32.load8_u - local.tee $10 + local.tee $4 i32.const 127 i32.and - local.get $8 + local.get $9 i32.shl - local.get $2 i32.or - local.set $2 - local.get $10 + local.set $3 + local.get $4 i32.const 128 i32.and if - local.get $8 + local.get $9 i32.const 7 i32.add - local.set $8 + local.set $9 br $do-loop|0104 end end local.get $0 global.set $assembly/index/off i32.const 0 - local.set $8 - i64.const 0 - local.set $18 - i32.const 0 - local.set $12 + local.set $4 i32.const 0 - local.set $11 + local.set $9 + i64.const 0 + local.set $15 i64.const 0 local.set $17 - i32.const 0 - local.set $10 global.get $assembly/index/off local.tee $0 i32.load8_u - local.set $14 + local.set $10 local.get $0 i32.const 1 i32.add @@ -1814,23 +1800,23 @@ block $case3|0 block $case2|0 block $case1|0 - local.get $14 + local.get $10 i32.const 65 i32.ne if - local.get $14 + local.get $10 i32.const 66 i32.eq br_if $case1|0 - local.get $14 + local.get $10 i32.const 67 i32.eq br_if $case2|0 - local.get $14 + local.get $10 i32.const 68 i32.eq br_if $case3|0 - local.get $14 + local.get $10 i32.const 35 i32.eq br_if $case4|0 @@ -1844,20 +1830,20 @@ i32.const 1 i32.add local.set $0 + local.get $9 local.get $10 i32.load8_u local.tee $10 i32.const 127 i32.and - local.get $8 + local.get $4 i32.shl - local.get $11 i32.or - local.set $11 - local.get $8 + local.set $9 + local.get $4 i32.const 7 i32.add - local.set $8 + local.set $4 local.get $10 i32.const 128 i32.and @@ -1871,25 +1857,25 @@ local.set $0 loop $do-loop|01 local.get $0 - local.tee $8 + local.tee $4 i32.const 1 i32.add local.set $0 - local.get $8 + local.get $17 + local.get $4 i64.load8_u - local.tee $16 + local.tee $18 i64.const 127 i64.and - local.get $18 + local.get $15 i64.shl - local.get $17 i64.or local.set $17 - local.get $18 + local.get $15 i64.const 7 i64.add - local.set $18 - local.get $16 + local.set $15 + local.get $18 i64.const 128 i64.and i64.const 0 @@ -1924,28 +1910,28 @@ local.set $0 loop $do-loop|031 local.get $0 - local.tee $8 + local.tee $10 i32.const 1 i32.add local.set $0 - local.get $8 + local.get $9 + local.get $10 i32.load8_u - local.tee $8 + local.tee $10 i32.const 127 i32.and - local.get $12 + local.get $4 i32.shl - local.get $10 i32.or - local.set $10 - local.get $8 + local.set $9 + local.get $10 i32.const 128 i32.and if - local.get $12 + local.get $4 i32.const 7 i32.add - local.set $12 + local.set $4 br $do-loop|031 end end @@ -1967,207 +1953,204 @@ if unreachable end - local.get $4 + local.get $5 local.tee $0 i32.const 1 i32.add - local.set $4 + local.set $5 local.get $0 - local.get $13 - local.get $2 - call $assembly/options/onGlobal + local.get $11 local.get $3 + call $assembly/options/onGlobal + local.get $14 i32.const 1 i32.add - local.set $3 + local.set $14 br $for-loop|10 end end br $break|1 end i32.const 0 - local.set $3 - i32.const 0 local.set $2 + i32.const 0 + local.set $4 global.get $assembly/index/off local.set $0 loop $do-loop|0107 local.get $0 - local.tee $8 + local.tee $3 i32.const 1 i32.add local.set $0 - local.get $8 + local.get $2 + local.get $3 i32.load8_u - local.tee $8 + local.tee $3 i32.const 127 i32.and - local.get $2 + local.get $4 i32.shl - local.get $3 i32.or - local.set $3 - local.get $8 + local.set $2 + local.get $3 i32.const 128 i32.and if - local.get $2 + local.get $4 i32.const 7 i32.add - local.set $2 + local.set $4 br $do-loop|0107 end end local.get $0 global.set $assembly/index/off - local.get $3 - local.set $9 i32.const 0 - local.set $3 + local.set $14 loop $for-loop|11 - local.get $3 - local.get $9 - i32.lt_u + local.get $2 + local.get $14 + i32.gt_u if i32.const 0 - local.set $2 + local.set $4 i32.const 0 - local.set $8 + local.set $3 global.get $assembly/index/off local.set $0 loop $do-loop|0110 local.get $0 - local.tee $10 + local.tee $9 i32.const 1 i32.add local.set $0 - local.get $10 + local.get $4 + local.get $9 i32.load8_u - local.tee $10 + local.tee $9 i32.const 127 i32.and - local.get $8 + local.get $3 i32.shl - local.get $2 i32.or - local.set $2 - local.get $10 + local.set $4 + local.get $9 i32.const 128 i32.and if - local.get $8 + local.get $3 i32.const 7 i32.add - local.set $8 + local.set $3 br $do-loop|0110 end end local.get $0 global.set $assembly/index/off + local.get $4 global.get $assembly/index/off - local.tee $12 - local.get $2 - local.tee $10 + local.tee $11 i32.add global.set $assembly/index/off global.get $assembly/index/off local.tee $0 i32.load8_u - local.set $13 + local.set $12 local.get $0 i32.const 1 i32.add global.set $assembly/index/off i32.const 0 - local.set $2 + local.set $3 i32.const 0 - local.set $8 + local.set $9 global.get $assembly/index/off local.set $0 loop $do-loop|0114 local.get $0 - local.tee $11 + local.tee $10 i32.const 1 i32.add local.set $0 - local.get $11 + local.get $3 + local.get $10 i32.load8_u - local.tee $11 + local.tee $10 i32.const 127 i32.and - local.get $8 + local.get $9 i32.shl - local.get $2 i32.or - local.set $2 - local.get $11 + local.set $3 + local.get $10 i32.const 128 i32.and if - local.get $8 + local.get $9 i32.const 7 i32.add - local.set $8 + local.set $9 br $do-loop|0114 end end local.get $0 global.set $assembly/index/off - local.get $3 - local.get $13 - local.get $2 + local.get $14 local.get $12 - local.get $10 - call $assembly/options/onExport local.get $3 + local.get $11 + local.get $4 + call $assembly/options/onExport + local.get $14 i32.const 1 i32.add - local.set $3 + local.set $14 br $for-loop|11 end end br $break|1 end i32.const 0 - local.set $3 - i32.const 0 local.set $2 + i32.const 0 + local.set $4 global.get $assembly/index/off local.set $0 loop $do-loop|0117 local.get $0 - local.tee $8 + local.tee $3 i32.const 1 i32.add local.set $0 - local.get $8 + local.get $2 + local.get $3 i32.load8_u - local.tee $8 + local.tee $3 i32.const 127 i32.and - local.get $2 + local.get $4 i32.shl - local.get $3 i32.or - local.set $3 - local.get $8 + local.set $2 + local.get $3 i32.const 128 i32.and if - local.get $2 + local.get $4 i32.const 7 i32.add - local.set $2 + local.set $4 br $do-loop|0117 end end local.get $0 global.set $assembly/index/off - local.get $3 + local.get $2 call $assembly/options/onStart br $break|1 end - local.get $8 + local.get $2 i32.const 4 i32.eq if (result i32) @@ -2179,47 +2162,45 @@ i32.const 0 end if - i32.const 0 - local.set $3 i32.const 0 local.set $2 + i32.const 0 + local.set $4 global.get $assembly/index/off local.set $0 loop $do-loop|0120 local.get $0 - local.tee $8 + local.tee $3 i32.const 1 i32.add local.set $0 - local.get $8 + local.get $2 + local.get $3 i32.load8_u - local.tee $8 + local.tee $3 i32.const 127 i32.and - local.get $2 + local.get $4 i32.shl - local.get $3 i32.or - local.set $3 - local.get $8 + local.set $2 + local.get $3 i32.const 128 i32.and if - local.get $2 + local.get $4 i32.const 7 i32.add - local.set $2 + local.set $4 br $do-loop|0120 end end local.get $0 global.set $assembly/index/off - local.get $3 - local.set $8 i32.const 0 - local.set $3 + local.set $4 i32.const 0 - local.set $2 + local.set $3 global.get $assembly/index/off local.set $0 loop $do-loop|0123 @@ -2228,429 +2209,425 @@ i32.const 1 i32.add local.set $0 + local.get $4 local.get $9 i32.load8_u local.tee $9 i32.const 127 i32.and - local.get $2 - i32.shl local.get $3 + i32.shl i32.or - local.set $3 + local.set $4 local.get $9 i32.const 128 i32.and if - local.get $2 + local.get $3 i32.const 7 i32.add - local.set $2 + local.set $3 br $do-loop|0123 end end local.get $0 global.set $assembly/index/off - local.get $3 + local.get $4 global.get $assembly/index/off block $break|12 block $case3|12 block $case2|12 block $case1|12 block $case0|12 - local.get $8 + local.get $2 br_table $case0|12 $case1|12 $case2|12 $case3|12 end i32.const 0 - local.set $3 - i32.const 0 local.set $2 + i32.const 0 + local.set $4 global.get $assembly/index/off local.set $0 loop $do-loop|0126 local.get $0 - local.tee $8 + local.tee $3 i32.const 1 i32.add local.set $0 - local.get $8 + local.get $2 + local.get $3 i32.load8_u - local.tee $8 + local.tee $3 i32.const 127 i32.and - local.get $2 + local.get $4 i32.shl - local.get $3 i32.or - local.set $3 - local.get $8 + local.set $2 + local.get $3 i32.const 128 i32.and if - local.get $2 + local.get $4 i32.const 7 i32.add - local.set $2 + local.set $4 br $do-loop|0126 end end local.get $0 global.set $assembly/index/off global.get $assembly/index/off - local.get $3 + local.get $2 call $assembly/options/onModuleName br $break|12 end i32.const 0 - local.set $3 - i32.const 0 local.set $2 + i32.const 0 + local.set $4 global.get $assembly/index/off local.set $0 loop $do-loop|0129 local.get $0 - local.tee $8 + local.tee $3 i32.const 1 i32.add local.set $0 - local.get $8 + local.get $2 + local.get $3 i32.load8_u - local.tee $8 + local.tee $3 i32.const 127 i32.and - local.get $2 + local.get $4 i32.shl - local.get $3 i32.or - local.set $3 - local.get $8 + local.set $2 + local.get $3 i32.const 128 i32.and if - local.get $2 + local.get $4 i32.const 7 i32.add - local.set $2 + local.set $4 br $do-loop|0129 end end local.get $0 global.set $assembly/index/off - local.get $3 - local.set $10 + local.get $2 + local.set $4 i32.const 0 - local.set $3 + local.set $0 loop $for-loop|13 - local.get $3 - local.get $10 + local.get $0 + local.get $4 i32.lt_u if i32.const 0 - local.set $2 + local.set $3 i32.const 0 - local.set $8 + local.set $9 global.get $assembly/index/off - local.set $0 + local.set $2 loop $do-loop|0132 - local.get $0 + local.get $2 local.tee $11 i32.const 1 i32.add - local.set $0 + local.set $2 + local.get $3 local.get $11 i32.load8_u local.tee $11 i32.const 127 i32.and - local.get $8 + local.get $9 i32.shl - local.get $2 i32.or - local.set $2 + local.set $3 local.get $11 i32.const 128 i32.and if - local.get $8 + local.get $9 i32.const 7 i32.add - local.set $8 + local.set $9 br $do-loop|0132 end end - local.get $0 - global.set $assembly/index/off local.get $2 + global.set $assembly/index/off + local.get $3 i32.const 0 - local.set $2 + local.set $3 i32.const 0 - local.set $8 + local.set $9 global.get $assembly/index/off - local.set $0 + local.set $2 loop $do-loop|0135 - local.get $0 + local.get $2 local.tee $12 i32.const 1 i32.add - local.set $0 + local.set $2 + local.get $3 local.get $12 i32.load8_u local.tee $12 i32.const 127 i32.and - local.get $8 + local.get $9 i32.shl - local.get $2 i32.or - local.set $2 + local.set $3 local.get $12 i32.const 128 i32.and if - local.get $8 + local.get $9 i32.const 7 i32.add - local.set $8 + local.set $9 br $do-loop|0135 end end - local.get $0 + local.get $2 global.set $assembly/index/off global.get $assembly/index/off - local.tee $0 - local.get $2 + local.tee $2 + local.get $3 i32.add global.set $assembly/index/off - local.get $0 local.get $2 - call $assembly/options/onFunctionName local.get $3 + call $assembly/options/onFunctionName + local.get $0 i32.const 1 i32.add - local.set $3 + local.set $0 br $for-loop|13 end end br $break|12 end i32.const 0 - local.set $3 - i32.const 0 local.set $2 + i32.const 0 + local.set $4 global.get $assembly/index/off local.set $0 loop $do-loop|0138 local.get $0 - local.tee $8 + local.tee $3 i32.const 1 i32.add local.set $0 - local.get $8 + local.get $2 + local.get $3 i32.load8_u - local.tee $8 + local.tee $3 i32.const 127 i32.and - local.get $2 + local.get $4 i32.shl - local.get $3 i32.or - local.set $3 - local.get $8 + local.set $2 + local.get $3 i32.const 128 i32.and if - local.get $2 + local.get $4 i32.const 7 i32.add - local.set $2 + local.set $4 br $do-loop|0138 end end local.get $0 global.set $assembly/index/off - local.get $3 - local.set $10 + local.get $2 + local.set $4 i32.const 0 - local.set $3 + local.set $0 loop $for-loop|14 - local.get $3 - local.get $10 + local.get $0 + local.get $4 i32.lt_u if i32.const 0 - local.set $2 + local.set $3 i32.const 0 - local.set $8 + local.set $9 global.get $assembly/index/off - local.set $0 + local.set $2 loop $do-loop|0141 - local.get $0 + local.get $2 local.tee $11 i32.const 1 i32.add - local.set $0 + local.set $2 + local.get $3 local.get $11 i32.load8_u local.tee $11 i32.const 127 i32.and - local.get $8 + local.get $9 i32.shl - local.get $2 i32.or - local.set $2 + local.set $3 local.get $11 i32.const 128 i32.and if - local.get $8 + local.get $9 i32.const 7 i32.add - local.set $8 + local.set $9 br $do-loop|0141 end end - local.get $0 - global.set $assembly/index/off local.get $2 + global.set $assembly/index/off + local.get $3 local.set $11 i32.const 0 - local.set $2 + local.set $3 i32.const 0 - local.set $8 + local.set $9 global.get $assembly/index/off - local.set $0 + local.set $2 loop $do-loop|0144 - local.get $0 + local.get $2 local.tee $12 i32.const 1 i32.add - local.set $0 + local.set $2 + local.get $3 local.get $12 i32.load8_u local.tee $12 i32.const 127 i32.and - local.get $8 + local.get $9 i32.shl - local.get $2 i32.or - local.set $2 + local.set $3 local.get $12 i32.const 128 i32.and if - local.get $8 + local.get $9 i32.const 7 i32.add - local.set $8 + local.set $9 br $do-loop|0144 end end - local.get $0 - global.set $assembly/index/off local.get $2 - local.set $12 + global.set $assembly/index/off i32.const 0 - local.set $2 + local.set $14 loop $for-loop|15 - local.get $2 - local.get $12 - i32.lt_u + local.get $3 + local.get $14 + i32.gt_u if i32.const 0 - local.set $8 + local.set $9 i32.const 0 - local.set $19 + local.set $13 global.get $assembly/index/off - local.set $0 + local.set $2 loop $do-loop|0147 - local.get $0 - local.tee $13 + local.get $2 + local.tee $12 i32.const 1 i32.add - local.set $0 - local.get $13 + local.set $2 + local.get $9 + local.get $12 i32.load8_u - local.tee $13 + local.tee $12 i32.const 127 i32.and - local.get $19 + local.get $13 i32.shl - local.get $8 i32.or - local.set $8 - local.get $13 + local.set $9 + local.get $12 i32.const 128 i32.and if - local.get $19 + local.get $13 i32.const 7 i32.add - local.set $19 + local.set $13 br $do-loop|0147 end end - local.get $0 + local.get $2 global.set $assembly/index/off - local.get $8 - local.set $13 i32.const 0 - local.set $8 + local.set $13 i32.const 0 - local.set $19 + local.set $16 global.get $assembly/index/off - local.set $0 + local.set $2 loop $do-loop|0150 - local.get $0 - local.tee $14 + local.get $2 + local.tee $12 i32.const 1 i32.add - local.set $0 - local.get $14 + local.set $2 + local.get $13 + local.get $12 i32.load8_u - local.tee $14 + local.tee $12 i32.const 127 i32.and - local.get $19 + local.get $16 i32.shl - local.get $8 i32.or - local.set $8 - local.get $14 + local.set $13 + local.get $12 i32.const 128 i32.and if - local.get $19 + local.get $16 i32.const 7 i32.add - local.set $19 + local.set $16 br $do-loop|0150 end end - local.get $0 + local.get $2 global.set $assembly/index/off global.get $assembly/index/off - local.tee $0 - local.get $8 + local.tee $2 + local.get $13 i32.add global.set $assembly/index/off local.get $11 + local.get $9 + local.get $2 local.get $13 - local.get $0 - local.get $8 call $assembly/options/onLocalName - local.get $2 + local.get $14 i32.const 1 i32.add - local.set $2 + local.set $14 br $for-loop|15 end end - local.get $3 + local.get $0 i32.const 1 i32.add - local.set $3 + local.set $0 br $for-loop|14 end end @@ -2662,7 +2639,7 @@ global.set $assembly/index/off br $break|1 else - local.get $8 + local.get $2 i32.const 16 i32.eq if (result i32) @@ -2685,33 +2662,33 @@ i32.const 0 local.set $2 i32.const 0 - local.set $8 + local.set $9 global.get $assembly/index/off local.set $0 loop $do-loop|0153 local.get $0 - local.tee $9 + local.tee $3 i32.const 1 i32.add local.set $0 - local.get $9 + local.get $2 + local.get $3 i32.load8_u - local.tee $9 + local.tee $3 i32.const 127 i32.and - local.get $8 + local.get $9 i32.shl - local.get $2 i32.or local.set $2 - local.get $9 + local.get $3 i32.const 128 i32.and if - local.get $8 + local.get $9 i32.const 7 i32.add - local.set $8 + local.set $9 br $do-loop|0153 end end @@ -2727,14 +2704,14 @@ call $assembly/options/onSourceMappingURL end end - local.get $3 - local.get $10 + local.get $4 + local.get $11 i32.add global.set $assembly/index/off br $break|1 end - local.get $3 global.get $assembly/index/off + local.get $4 i32.add global.set $assembly/index/off br $break|1 @@ -2742,16 +2719,16 @@ unreachable end else - local.get $3 global.get $assembly/index/off + local.get $4 i32.add global.set $assembly/index/off end br $while-continue|0 end end - local.get $1 global.get $assembly/index/off + local.get $1 i32.ne if unreachable diff --git a/parse/package.json b/parse/package.json index d638f18..dbc0eb2 100644 --- a/parse/package.json +++ b/parse/package.json @@ -6,7 +6,7 @@ "main": "index.js", "types": "index.d.ts", "scripts": { - "asbuild": "asc assembly/index.ts -O3 -b build/index.wasm -t build/index.wat --importMemory --runtime stub --sourceMap", + "asbuild": "asc assembly/index.ts -O3 -o build/index.wasm -t build/index.wat --importMemory --runtime stub --sourceMap", "build": "npm run asbuild && webpack --mode production", "test": "ts-node tests/" }, From b530997bd4face2685ddf816c91de46f6a04d39f Mon Sep 17 00:00:00 2001 From: Congcong Cai Date: Thu, 11 Aug 2022 21:52:31 +0800 Subject: [PATCH 2/3] fix: transform example --- transform/README.md | 4 --- transform/{mytransform.js => mytransform.mjs} | 16 +++++++----- transform/mytransform.ts | 25 ------------------- transform/package.json | 9 ++----- 4 files changed, 12 insertions(+), 42 deletions(-) rename transform/{mytransform.js => mytransform.mjs} (52%) delete mode 100644 transform/mytransform.ts diff --git a/transform/README.md b/transform/README.md index 5bbe90d..94926b2 100644 --- a/transform/README.md +++ b/transform/README.md @@ -9,10 +9,6 @@ Instructions * [JavaScript transform](./mytransform.js)
An ES6 JavaScript transform. Recommended. -* [TypeScript transform](./mytransform.ts)
- A transform written in TypeScript. This works currently because the compiler - utilizes ts-node anyway, so can as well transpile the transform to ES6. - See [package.json](./package.json) on how to utilize the transforms with `asc`. You may also run diff --git a/transform/mytransform.js b/transform/mytransform.mjs similarity index 52% rename from transform/mytransform.js rename to transform/mytransform.mjs index eedba57..f5007e3 100644 --- a/transform/mytransform.js +++ b/transform/mytransform.mjs @@ -1,17 +1,21 @@ -const { Transform } = require("assemblyscript/cli/transform"); -const { SourceKind, ElementKind } = require("assemblyscript"); -const binaryen = require("binaryen"); +import * as assemblyscript from "assemblyscript"; +import { Transform } from "assemblyscript/transform"; +import binaryen from "binaryen"; class MyTransform extends Transform { afterParse(parser) { this.log("[mytransform.js] afterParse called, baseDir = " + this.baseDir); var sources = this.program.sources; - sources.forEach(source => this.log(" " + source.internalPath + " [" + SourceKind[source.sourceKind] + "]")); + sources.forEach((source) => + this.log(" " + source.internalPath + " [" + assemblyscript.SourceKind[source.sourceKind] + "]") + ); } afterInitialize(program) { this.log("[mytransform.js] afterInitialize called"); var elements = program.elementsByName; - elements.forEach(element => this.log(" " + element.internalName + " [" + ElementKind[element.kind] + "]")); + elements.forEach((element) => + this.log(" " + element.internalName + " [" + assemblyscript.ElementKind[element.kind] + "]") + ); } afterCompile(asModule) { this.log("[mytransform.js] afterCompile called"); @@ -20,4 +24,4 @@ class MyTransform extends Transform { } } -module.exports = MyTransform; +export default MyTransform; diff --git a/transform/mytransform.ts b/transform/mytransform.ts deleted file mode 100644 index 5b5b14f..0000000 --- a/transform/mytransform.ts +++ /dev/null @@ -1,25 +0,0 @@ -import { Transform } from "assemblyscript/cli/transform"; -import { Parser, Module, SourceKind, ElementKind, Program } from "assemblyscript"; -import * as binaryen from "binaryen"; - -class MyTransform extends Transform { - afterParse(parser: Parser): void { - this.log("[mytransform.ts] afterParse called, baseDir = " + this.baseDir); - var sources = this.program.sources; - sources.forEach(source => this.log(" " + source.internalPath + " [" + SourceKind[source.sourceKind] + "]")); - } - afterInitialize(program: Program) { - this.log("[mytransform.ts] afterInitialize called"); - var elements = program.elementsByName; - elements.forEach(element => this.log(" " + element.internalName + " [" + ElementKind[element.kind] + "]")); - } - afterCompile(asModule: Module): void { - this.log("[mytransform.ts] afterCompile called"); - var module = binaryen.wrapModule(asModule.ref); - this.log(module.emitBinary()); - } -} - -console.log() - -export = MyTransform; diff --git a/transform/package.json b/transform/package.json index c46dca4..e5c2075 100644 --- a/transform/package.json +++ b/transform/package.json @@ -4,14 +4,9 @@ "license": "Apache-2.0", "private": true, "scripts": { - "test:js": "asc assembly/index.ts --runtime stub --transform ./mytransform.js", - "test:ts": "asc assembly/index.ts --runtime stub --transform ./mytransform.ts", - "test:multi": "asc assembly/index.ts --runtime stub --transform ./mytransform.js --transform ./mytransform.ts", - "test": "npm run test:js && npm run test:ts && npm run test:multi" + "test": "asc assembly/index.ts --runtime stub --transform ./mytransform.mjs" }, "devDependencies": { - "assemblyscript": "latest", - "ts-node": "^8.10.2", - "typescript": "^3.9.7" + "assemblyscript": "latest" } } From 4584033f15a9fb700b9d94aa83f0792fb8f316cd Mon Sep 17 00:00:00 2001 From: Congcong Cai Date: Thu, 11 Aug 2022 22:32:13 +0800 Subject: [PATCH 3/3] use asconfig in game-of-life --- game-of-life/asconfig.json | 26 ++++++++++++++++++++++++++ game-of-life/build/optimized.wasm | Bin 891 -> 852 bytes game-of-life/index.html | 4 ++-- game-of-life/package.json | 4 ++-- 4 files changed, 30 insertions(+), 4 deletions(-) create mode 100644 game-of-life/asconfig.json diff --git a/game-of-life/asconfig.json b/game-of-life/asconfig.json new file mode 100644 index 0000000..b5391b7 --- /dev/null +++ b/game-of-life/asconfig.json @@ -0,0 +1,26 @@ +{ + "targets": { + "options": { + "runtime": "stub", + "sourceMap": true, + "measure": true + }, + "debug": { + "outFile": "build/untouched.wasm", + "textFile": "build/untouched.wat", + "use": "Math=JSMath", + "importMemory": true, + "debug": true + }, + "release": { + "outFile": "build/optimized.wasm", + "textFile": "build/optimized.wat", + "use": "Math=JSMath", + "importMemory": true, + "optimizeLevel": 3, + "converge": false, + "shrinkLevel": 0, + "noAssert": false + } + } +} diff --git a/game-of-life/build/optimized.wasm b/game-of-life/build/optimized.wasm index 4fb95d066aa308932a2c390c42970a7ac093a616..5aa82bdc2f60fbe4118aa42ccd413c653d568bbc 100644 GIT binary patch literal 852 zcmZ`%O;6iE5S`gse_>Qb>IKP%j_n+J>ao|dD1;BSs)SGvy^sh(8{;I6u~3naoWDUY z{TYZ~m(DJtv4!x#+8Mt$^Y%T%_sb@1xjB|%M$26bL+21OQeROPmF!dz*zP@+GS)q*1HB$ zB?YjOA_ucxuY+ZdX0=-Vu6i)|b8nx=PZvq5bB`&fvS3vhRkQx6gl4cv)i%a4lRc6> z#t($sO|CO-@G4a~Wu85d+o}(>ESH)UW0Lwt6bV!Gs9}-@A_$xy&*H%1h#|=$_GQji znT2-wdnI3%BD+-;9Lg-|7t*I;lEoXO9dEfDwR<6VAQ1-^)PX>k5p@`8)KZXzqDUl1 z=FQTmp}6TWI=jHx6+U?@B6n_bbtQ07Z{RpFJ9Q;idR@F^;WCgfu_r_6#l+{7UUFrw z%kkA+l9u%;1s9yPKSdW@h1iJu60^A9lX%Zt_aJ+Z*4B395}S>eavSf4`1HRx170D< F{{X_?pY{L% literal 891 zcmZ`&O;6iE5S`sw+ewV7Nc4c@L)Ugx^_1RvEsH{05U5f_xe_Ze)W%I#eU9;eV>DQ|jdC{BV=A4vx+)CZEnIgJE`KreT_w-#7pYWWdcn z)=YuDd0DT7h_a{xCYDuL02h~0lF--(Wbc=O6~kJ>03{m;36doP1NSA9cr5l6xSRrz zoPs`#e*VzUpZ9Z7`=HkAwY4yOrdF%fU1_^Qa^H~XV-m-TS5my=gj6hc`3|#fiTa58 zX#YmGQ~Sc}D0b}{K6+h!Fq^@hkAmh?EDgyVx2K2{A&HVPc3hh{LBpx5>p<6;5*&|H z7nHrk6MFa?PB#l;-il)CMA?|K=GgJ9tvku}&RghM3TbVc#Z-dQPCVYu(T44iZy{W4 zG4M!=1yM%zVxjn0lP9^@qg?!-prqK|jnA(=B)arFcGO-~l9a}FJsHsGPB%8GuJB36 z2WOsQX+~q-v$M!8t&|Imaaw+tHO7^U)kr(|Nb2`#`I+9Ry+> .then(buffer => WebAssembly.instantiate(buffer, { env: { memory, - abort: function() {} + abort: function() {}, + "Math.random": Math.random }, config: { BGR_ALIVE : rgb2bgr(RGB_ALIVE) | 1, // little endian, LSB must be set BGR_DEAD : rgb2bgr(RGB_DEAD) & ~1, // little endian, LSB must not be set BIT_ROT }, - Math })) .then(module => { var exports = module.instance.exports; diff --git a/game-of-life/package.json b/game-of-life/package.json index bed58e3..d124931 100644 --- a/game-of-life/package.json +++ b/game-of-life/package.json @@ -4,8 +4,8 @@ "license": "Apache-2.0", "private": true, "scripts": { - "asbuild:untouched": "asc assembly/index.ts -b build/untouched.wasm -t build/untouched.wat --use Math=JSMath --runtime stub --importMemory --sourceMap --debug --measure", - "asbuild:optimized": "asc assembly/index.ts -b build/optimized.wasm -t build/optimized.wat --use Math=JSMath -O3 --runtime stub --importMemory --sourceMap --measure", + "asbuild:untouched": "asc assembly/index.ts --target debug", + "asbuild:optimized": "asc assembly/index.ts --target release", "asbuild": "npm run asbuild:untouched && npm run asbuild:optimized", "start": "npx serve" },