diff --git a/package-lock.json b/package-lock.json index 87113a8375..cfd13bb3d0 100644 --- a/package-lock.json +++ b/package-lock.json @@ -717,6 +717,16 @@ "resolved": "https://registry.npmjs.org/binaryen/-/binaryen-98.0.0-nightly.20201109.tgz", "integrity": "sha512-iRarAqdH5lMWlMBzrDuJgLYJR2g4QXk93iYE2zpr6gEZkb/jCgDpPUXdhuN11Ge1zZ/6By4DwA1mmifcx7FWaw==" }, + "bindings": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/bindings/-/bindings-1.5.0.tgz", + "integrity": "sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==", + "dev": true, + "optional": true, + "requires": { + "file-uri-to-path": "1.0.0" + } + }, "bluebird": { "version": "3.7.2", "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz", @@ -1854,6 +1864,13 @@ "flat-cache": "^2.0.1" } }, + "file-uri-to-path": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz", + "integrity": "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==", + "dev": true, + "optional": true + }, "fill-range": { "version": "7.0.1", "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", @@ -2846,6 +2863,13 @@ "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", "dev": true }, + "nan": { + "version": "2.14.2", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.14.2.tgz", + "integrity": "sha512-M2ufzIiINKCuDfBSAUr1vWQ+vuVcA9kqx8JJUsbQi6yf1uGRyb7HfpdfUr5qLXf3B/t8dPvcjhKMmlfnP47EzQ==", + "dev": true, + "optional": true + }, "nanomatch": { "version": "1.2.13", "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.13.tgz", @@ -4368,7 +4392,11 @@ "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.13.tgz", "integrity": "sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw==", "dev": true, - "optional": true + "optional": true, + "requires": { + "bindings": "^1.5.0", + "nan": "^2.12.1" + } }, "glob-parent": { "version": "3.1.0", diff --git a/src/builtins.ts b/src/builtins.ts index afea0bdfbd..cbfd878cdf 100644 --- a/src/builtins.ts +++ b/src/builtins.ts @@ -88,6 +88,7 @@ import { } from "./program"; import { + findUsedLocals, FlowFlags, LocalFlags } from "./flow"; @@ -1185,7 +1186,7 @@ function builtin_rotl(ctx: BuiltinContext): ExpressionRef { case TypeKind.U16: { // (value << (shift & mask)) | (value >>> ((0 - shift) & mask)) let flow = compiler.currentFlow; - let temp1 = flow.getTempLocal(type); + let temp1 = flow.getTempLocal(type, findUsedLocals(arg1)); flow.setLocalFlag(temp1.index, LocalFlags.WRAPPED); let temp2 = flow.getTempLocal(type); flow.setLocalFlag(temp2.index, LocalFlags.WRAPPED); @@ -1266,7 +1267,7 @@ function builtin_rotr(ctx: BuiltinContext): ExpressionRef { case TypeKind.U16: { // (value >>> (shift & mask)) | (value << ((0 - shift) & mask)) let flow = compiler.currentFlow; - let temp1 = flow.getTempLocal(type); + let temp1 = flow.getTempLocal(type, findUsedLocals(arg1)); flow.setLocalFlag(temp1.index, LocalFlags.WRAPPED); let temp2 = flow.getTempLocal(type); flow.setLocalFlag(temp2.index, LocalFlags.WRAPPED); @@ -1484,7 +1485,7 @@ function builtin_max(ctx: BuiltinContext): ExpressionRef { if (op != -1) { let flow = compiler.currentFlow; let nativeType = type.toNativeType(); - let temp1 = flow.getTempLocal(type); + let temp1 = flow.getTempLocal(type, findUsedLocals(arg1)); flow.setLocalFlag(temp1.index, LocalFlags.WRAPPED); let temp2 = flow.getTempLocal(type); flow.setLocalFlag(temp2.index, LocalFlags.WRAPPED); @@ -1563,7 +1564,7 @@ function builtin_min(ctx: BuiltinContext): ExpressionRef { if (op != -1) { let flow = compiler.currentFlow; let nativeType = type.toNativeType(); - let temp1 = flow.getTempLocal(type); + let temp1 = flow.getTempLocal(type, findUsedLocals(arg1)); flow.setLocalFlag(temp1.index, LocalFlags.WRAPPED); let temp2 = flow.getTempLocal(type); flow.setLocalFlag(temp2.index, LocalFlags.WRAPPED); diff --git a/tests/compiler/builtins.ts b/tests/compiler/builtins.ts index f7b5442565..be82732a72 100644 --- a/tests/compiler/builtins.ts +++ b/tests/compiler/builtins.ts @@ -561,3 +561,25 @@ assert(isInteger i32>>()); assert(isInteger i32>>()); assert(isManaged C>>()); assert(isManaged C>>()); + +// Issue #1537: Make sure temp. locals are not confused + +function max3(a: i32, b: i32, c: i32): i32 { + return max(a, max(b, c)); +} +assert(max3(3, 2, 1) == 3); + +function min3(a: i32, b: i32, c: i32): i32 { + return min(a, min(b, c)); +} +assert(min3(1, 2, 3) == 1); + +function rotl3(a: i8, b: i8, c: i8): i32 { + return rotl(a, rotl(b, c)); +} +assert(rotl3(3, 2, 1) == 48); + +function rotr3(a: i8, b: i8, c: i8): i32 { + return rotr(a, rotr(b, c)); +} +assert(rotr3(48, 8, 1) == 3); diff --git a/tests/compiler/builtins.untouched.wat b/tests/compiler/builtins.untouched.wat index 3c3c009d39..9a51e23c25 100644 --- a/tests/compiler/builtins.untouched.wat +++ b/tests/compiler/builtins.untouched.wat @@ -2,6 +2,7 @@ (type $i32_=>_i32 (func (param i32) (result i32))) (type $none_=>_none (func)) (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) + (type $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) (type $i32_=>_none (func (param i32))) (type $i32_i32_f64_f64_f64_f64_f64_=>_none (func (param i32 i32 f64 f64 f64 f64 f64))) @@ -341,6 +342,138 @@ (func $start:builtins~anonymous|2 (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) nop ) + (func $builtins/max3 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $0 + local.tee $5 + local.get $1 + local.tee $3 + local.get $2 + local.tee $4 + local.get $3 + local.get $4 + i32.gt_s + select + local.tee $3 + local.get $5 + local.get $3 + i32.gt_s + select + ) + (func $builtins/min3 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $0 + local.tee $5 + local.get $1 + local.tee $3 + local.get $2 + local.tee $4 + local.get $3 + local.get $4 + i32.lt_s + select + local.tee $3 + local.get $5 + local.get $3 + i32.lt_s + select + ) + (func $builtins/rotl3 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $0 + i32.const 24 + i32.shl + i32.const 24 + i32.shr_s + local.tee $5 + local.get $1 + i32.const 24 + i32.shl + i32.const 24 + i32.shr_s + local.tee $3 + local.get $2 + local.tee $4 + i32.const 7 + i32.and + i32.shl + local.get $3 + i32.const 0 + local.get $4 + i32.sub + i32.const 7 + i32.and + i32.shr_u + i32.or + local.tee $3 + i32.const 7 + i32.and + i32.shl + local.get $5 + i32.const 0 + local.get $3 + i32.sub + i32.const 7 + i32.and + i32.shr_u + i32.or + i32.const 24 + i32.shl + i32.const 24 + i32.shr_s + ) + (func $builtins/rotr3 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $0 + i32.const 24 + i32.shl + i32.const 24 + i32.shr_s + local.tee $5 + local.get $1 + i32.const 24 + i32.shl + i32.const 24 + i32.shr_s + local.tee $3 + local.get $2 + local.tee $4 + i32.const 7 + i32.and + i32.shr_u + local.get $3 + i32.const 0 + local.get $4 + i32.sub + i32.const 7 + i32.and + i32.shl + i32.or + local.tee $3 + i32.const 7 + i32.and + i32.shr_u + local.get $5 + i32.const 0 + local.get $3 + i32.sub + i32.const 7 + i32.and + i32.shl + i32.or + i32.const 24 + i32.shl + i32.const 24 + i32.shr_s + ) (func $start:builtins (local $0 i32) (local $1 i32) @@ -552,15 +685,15 @@ unreachable end i32.const 170 - local.tee $0 - i32.const 1 local.tee $1 + i32.const 1 + local.tee $0 i32.const 7 i32.and i32.shr_u - local.get $0 - i32.const 0 local.get $1 + i32.const 0 + local.get $0 i32.sub i32.const 7 i32.and @@ -599,13 +732,13 @@ i32.rotr drop i32.const -42 - local.tee $0 + local.tee $1 i32.const 31 i32.shr_s - local.tee $1 - local.get $0 - i32.add + local.tee $0 local.get $1 + i32.add + local.get $0 i32.xor drop i32.const 1 @@ -618,11 +751,11 @@ select drop i32.const 1 - local.tee $0 - i32.const 2 local.tee $1 - local.get $0 + i32.const 2 + local.tee $0 local.get $1 + local.get $0 i32.lt_s select drop @@ -660,13 +793,13 @@ i32.rotr global.set $builtins/i i32.const -42 - local.tee $0 + local.tee $1 i32.const 31 i32.shr_s - local.tee $1 - local.get $0 - i32.add + local.tee $0 local.get $1 + i32.add + local.get $0 i32.xor global.set $builtins/i global.get $builtins/i @@ -703,11 +836,11 @@ unreachable end i32.const 1 - local.tee $0 - i32.const 2 local.tee $1 - local.get $0 + i32.const 2 + local.tee $0 local.get $1 + local.get $0 i32.lt_s select global.set $builtins/i @@ -854,11 +987,11 @@ unreachable end i64.const 1 - local.tee $2 - i64.const 2 local.tee $3 - local.get $2 + i64.const 2 + local.tee $2 local.get $3 + local.get $2 i64.gt_s select global.set $builtins/I @@ -1701,7 +1834,7 @@ end global.get $builtins/fn call $~lib/function/Function<%28i32%2Ci32%29=>i32>#get:name - local.tee $0 + local.tee $1 i32.const 32 call $~lib/string/String.__eq i32.eqz @@ -1741,7 +1874,7 @@ end global.get $builtins/fn call $~lib/function/Function<%28i32%2Ci32%29=>i32>#toString - local.tee $1 + local.tee $0 i32.const 176 call $~lib/string/String.__eq i32.eqz @@ -2756,6 +2889,66 @@ drop i32.const 1 drop + i32.const 3 + i32.const 2 + i32.const 1 + call $builtins/max3 + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 570 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 1 + i32.const 2 + i32.const 3 + call $builtins/min3 + i32.const 1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 575 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 3 + i32.const 2 + i32.const 1 + call $builtins/rotl3 + i32.const 48 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 580 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 48 + i32.const 8 + i32.const 1 + call $builtins/rotr3 + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 585 + i32.const 1 + call $~lib/builtins/abort + unreachable + end local.get $0 call $~lib/rt/stub/__release local.get $1 diff --git a/tests/compiler/empty.optimized.wat b/tests/compiler/empty.optimized.wat index e9410e2dbf..23da3862e2 100644 --- a/tests/compiler/empty.optimized.wat +++ b/tests/compiler/empty.optimized.wat @@ -1,386 +1,4 @@ (module - (type $none_=>_none (func)) - (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) - (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) - (type $i32_=>_i32 (func (param i32) (result i32))) - (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) - (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) - (memory $0 1) - (data (i32.const 1036) "\n\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\n\00\00\00h\00e\00l\00l\00o") - (data (i32.const 1072) "\01\00\00\00\00\00\00\00\01") - (data (i32.const 1100) "\10\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\10\00\00\00e\00m\00p\00t\00y\00.\00t\00s") - (global $~lib/rt/stub/offset (mut i32) (i32.const 0)) + (memory $0 0) (export "memory" (memory $0)) - (start $~start) - (func $~lib/rt/stub/__alloc (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $0 - i32.const 1073741820 - i32.gt_u - if - unreachable - end - global.get $~lib/rt/stub/offset - global.get $~lib/rt/stub/offset - i32.const 4 - i32.add - local.tee $4 - local.get $0 - i32.const 19 - i32.add - i32.const -16 - i32.and - i32.const 4 - i32.sub - local.tee $5 - i32.add - local.tee $0 - memory.size - local.tee $2 - i32.const 16 - i32.shl - i32.const 15 - i32.add - i32.const -16 - i32.and - local.tee $1 - i32.gt_u - if - local.get $2 - local.get $0 - local.get $1 - i32.sub - i32.const 65535 - i32.add - i32.const -65536 - i32.and - i32.const 16 - i32.shr_u - local.tee $1 - local.get $1 - local.get $2 - i32.lt_s - select - memory.grow - i32.const 0 - i32.lt_s - if - local.get $1 - memory.grow - i32.const 0 - i32.lt_s - if - unreachable - end - end - end - local.get $0 - global.set $~lib/rt/stub/offset - local.get $5 - i32.store - local.get $4 - ) - (func $~lib/rt/stub/__new (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - local.get $0 - i32.const 1073741804 - i32.gt_u - if - unreachable - end - local.get $0 - i32.const 16 - i32.add - call $~lib/rt/stub/__alloc - local.tee $3 - i32.const 4 - i32.sub - local.tee $2 - i32.const 0 - i32.store offset=4 - local.get $2 - i32.const 0 - i32.store offset=8 - local.get $2 - local.get $1 - i32.store offset=12 - local.get $2 - local.get $0 - i32.store offset=16 - local.get $3 - i32.const 16 - i32.add - ) - (func $~lib/memory/memory.copy (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - block $~lib/util/memory/memmove|inlined.0 - local.get $2 - local.set $4 - local.get $0 - local.get $1 - i32.eq - br_if $~lib/util/memory/memmove|inlined.0 - local.get $0 - local.get $1 - i32.lt_u - if - local.get $1 - i32.const 7 - i32.and - local.get $0 - i32.const 7 - i32.and - i32.eq - if - loop $while-continue|0 - local.get $0 - i32.const 7 - i32.and - if - local.get $4 - i32.eqz - br_if $~lib/util/memory/memmove|inlined.0 - local.get $4 - i32.const 1 - i32.sub - local.set $4 - local.get $0 - local.tee $2 - i32.const 1 - i32.add - local.set $0 - local.get $1 - local.tee $3 - i32.const 1 - i32.add - local.set $1 - local.get $2 - local.get $3 - i32.load8_u - i32.store8 - br $while-continue|0 - end - end - loop $while-continue|1 - local.get $4 - i32.const 8 - i32.ge_u - if - local.get $0 - local.get $1 - i64.load - i64.store - local.get $4 - i32.const 8 - i32.sub - local.set $4 - local.get $0 - i32.const 8 - i32.add - local.set $0 - local.get $1 - i32.const 8 - i32.add - local.set $1 - br $while-continue|1 - end - end - end - loop $while-continue|2 - local.get $4 - if - local.get $0 - local.tee $2 - i32.const 1 - i32.add - local.set $0 - local.get $1 - local.tee $3 - i32.const 1 - i32.add - local.set $1 - local.get $2 - local.get $3 - i32.load8_u - i32.store8 - local.get $4 - i32.const 1 - i32.sub - local.set $4 - br $while-continue|2 - end - end - else - local.get $1 - i32.const 7 - i32.and - local.get $0 - i32.const 7 - i32.and - i32.eq - if - loop $while-continue|3 - local.get $0 - local.get $4 - i32.add - i32.const 7 - i32.and - if - local.get $4 - i32.eqz - br_if $~lib/util/memory/memmove|inlined.0 - local.get $4 - i32.const 1 - i32.sub - local.tee $4 - local.get $0 - i32.add - local.get $1 - local.get $4 - i32.add - i32.load8_u - i32.store8 - br $while-continue|3 - end - end - loop $while-continue|4 - local.get $4 - i32.const 8 - i32.ge_u - if - local.get $4 - i32.const 8 - i32.sub - local.tee $4 - local.get $0 - i32.add - local.get $1 - local.get $4 - i32.add - i64.load - i64.store - br $while-continue|4 - end - end - end - loop $while-continue|5 - local.get $4 - if - local.get $4 - i32.const 1 - i32.sub - local.tee $4 - local.get $0 - i32.add - local.get $1 - local.get $4 - i32.add - i32.load8_u - i32.store8 - br $while-continue|5 - end - end - end - end - ) - (func $start:empty - (local $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - i32.const 1148 - global.set $~lib/rt/stub/offset - block $__inlined_func$~lib/string/String#substring - i32.const 2 - i32.const 1052 - i32.load - i32.const 1 - i32.shr_u - local.tee $0 - local.get $0 - i32.const 2 - i32.gt_s - select - local.tee $1 - local.get $0 - local.get $0 - local.get $1 - i32.lt_s - select - i32.const 1 - i32.shl - local.tee $3 - local.get $1 - local.get $0 - local.get $0 - local.get $1 - i32.gt_s - select - i32.const 1 - i32.shl - local.tee $1 - i32.sub - local.tee $2 - i32.eqz - if - i32.const 1088 - local.set $0 - br $__inlined_func$~lib/string/String#substring - end - i32.const 0 - local.get $3 - local.get $0 - i32.const 1 - i32.shl - i32.eq - local.get $1 - select - if - i32.const 1056 - local.set $0 - br $__inlined_func$~lib/string/String#substring - end - local.get $2 - i32.const 1 - call $~lib/rt/stub/__new - local.tee $0 - local.get $1 - i32.const 1056 - i32.add - local.get $2 - call $~lib/memory/memory.copy - end - local.get $0 - i32.const 20 - i32.sub - i32.load offset=16 - i32.const 1 - i32.shr_u - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1120 - i32.const 3 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - i32.const 3 - call $~lib/rt/stub/__new - drop - i32.const 0 - call $~lib/rt/stub/__alloc - drop - ) - (func $~start - call $start:empty - ) ) diff --git a/tests/compiler/empty.ts b/tests/compiler/empty.ts index 5e1df25c86..e69de29bb2 100644 --- a/tests/compiler/empty.ts +++ b/tests/compiler/empty.ts @@ -1,9 +0,0 @@ -var a = "hello"; - -assert(a.substring(2).length == 3); - -class A {} -new A(); - -@unmanaged class B {} -new B(); diff --git a/tests/compiler/empty.untouched.wat b/tests/compiler/empty.untouched.wat index 016d455d9d..bffe105a3d 100644 --- a/tests/compiler/empty.untouched.wat +++ b/tests/compiler/empty.untouched.wat @@ -1,1599 +1,5 @@ (module - (type $i32_=>_i32 (func (param i32) (result i32))) - (type $none_=>_none (func)) - (type $i32_=>_none (func (param i32))) - (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) - (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) - (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) - (type $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) - (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) - (memory $0 1) - (data (i32.const 12) "\n\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\n\00\00\00h\00e\00l\00l\00o\00") - (data (i32.const 44) "\00\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\00\00\00\00") - (data (i32.const 76) "\10\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\10\00\00\00e\00m\00p\00t\00y\00.\00t\00s\00") + (memory $0 0) (table $0 1 funcref) - (global $empty/a (mut i32) (i32.const 32)) - (global $~lib/rt/stub/startOffset (mut i32) (i32.const 0)) - (global $~lib/rt/stub/offset (mut i32) (i32.const 0)) - (global $~lib/ASC_SHRINK_LEVEL i32 (i32.const 0)) - (global $~lib/builtins/i32.MAX_VALUE i32 (i32.const 2147483647)) - (global $~lib/memory/__heap_base i32 (i32.const 112)) (export "memory" (memory $0)) - (start $~start) - (func $~lib/string/String#get:length (param $0 i32) (result i32) - local.get $0 - i32.const 20 - i32.sub - i32.load offset=16 - i32.const 1 - i32.shr_u - ) - (func $~lib/rt/stub/__retain (param $0 i32) (result i32) - local.get $0 - ) - (func $~lib/rt/stub/computeSize (param $0 i32) (result i32) - local.get $0 - i32.const 4 - i32.add - i32.const 15 - i32.add - i32.const 15 - i32.const -1 - i32.xor - i32.and - i32.const 4 - i32.sub - ) - (func $~lib/rt/stub/maybeGrowMemory (param $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - memory.size - local.set $1 - local.get $1 - i32.const 16 - i32.shl - i32.const 15 - i32.add - i32.const 15 - i32.const -1 - i32.xor - i32.and - local.set $2 - local.get $0 - local.get $2 - i32.gt_u - if - local.get $0 - local.get $2 - i32.sub - i32.const 65535 - i32.add - i32.const 65535 - i32.const -1 - i32.xor - i32.and - i32.const 16 - i32.shr_u - local.set $3 - local.get $1 - local.tee $4 - local.get $3 - local.tee $5 - local.get $4 - local.get $5 - i32.gt_s - select - local.set $4 - local.get $4 - memory.grow - i32.const 0 - i32.lt_s - if - local.get $3 - memory.grow - i32.const 0 - i32.lt_s - if - unreachable - end - end - end - local.get $0 - global.set $~lib/rt/stub/offset - ) - (func $~lib/rt/stub/__alloc (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - local.get $0 - i32.const 1073741820 - i32.gt_u - if - unreachable - end - global.get $~lib/rt/stub/offset - local.set $1 - global.get $~lib/rt/stub/offset - i32.const 4 - i32.add - local.set $2 - local.get $0 - call $~lib/rt/stub/computeSize - local.set $3 - local.get $2 - local.get $3 - i32.add - call $~lib/rt/stub/maybeGrowMemory - local.get $1 - local.get $3 - i32.store - local.get $2 - ) - (func $~lib/rt/stub/__new (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - local.get $0 - i32.const 1073741804 - i32.gt_u - if - unreachable - end - i32.const 16 - local.get $0 - i32.add - call $~lib/rt/stub/__alloc - local.set $2 - local.get $2 - i32.const 4 - i32.sub - local.set $3 - local.get $3 - i32.const 0 - i32.store offset=4 - local.get $3 - i32.const 0 - i32.store offset=8 - local.get $3 - local.get $1 - i32.store offset=12 - local.get $3 - local.get $0 - i32.store offset=16 - local.get $2 - i32.const 16 - i32.add - ) - (func $~lib/util/memory/memcpy (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - loop $while-continue|0 - local.get $2 - if (result i32) - local.get $1 - i32.const 3 - i32.and - else - i32.const 0 - end - local.set $5 - local.get $5 - if - local.get $0 - local.tee $6 - i32.const 1 - i32.add - local.set $0 - local.get $6 - local.get $1 - local.tee $6 - i32.const 1 - i32.add - local.set $1 - local.get $6 - i32.load8_u - i32.store8 - local.get $2 - i32.const 1 - i32.sub - local.set $2 - br $while-continue|0 - end - end - local.get $0 - i32.const 3 - i32.and - i32.const 0 - i32.eq - if - loop $while-continue|1 - local.get $2 - i32.const 16 - i32.ge_u - local.set $5 - local.get $5 - if - local.get $0 - local.get $1 - i32.load - i32.store - local.get $0 - i32.const 4 - i32.add - local.get $1 - i32.const 4 - i32.add - i32.load - i32.store - local.get $0 - i32.const 8 - i32.add - local.get $1 - i32.const 8 - i32.add - i32.load - i32.store - local.get $0 - i32.const 12 - i32.add - local.get $1 - i32.const 12 - i32.add - i32.load - i32.store - local.get $1 - i32.const 16 - i32.add - local.set $1 - local.get $0 - i32.const 16 - i32.add - local.set $0 - local.get $2 - i32.const 16 - i32.sub - local.set $2 - br $while-continue|1 - end - end - local.get $2 - i32.const 8 - i32.and - if - local.get $0 - local.get $1 - i32.load - i32.store - local.get $0 - i32.const 4 - i32.add - local.get $1 - i32.const 4 - i32.add - i32.load - i32.store - local.get $0 - i32.const 8 - i32.add - local.set $0 - local.get $1 - i32.const 8 - i32.add - local.set $1 - end - local.get $2 - i32.const 4 - i32.and - if - local.get $0 - local.get $1 - i32.load - i32.store - local.get $0 - i32.const 4 - i32.add - local.set $0 - local.get $1 - i32.const 4 - i32.add - local.set $1 - end - local.get $2 - i32.const 2 - i32.and - if - local.get $0 - local.get $1 - i32.load16_u - i32.store16 - local.get $0 - i32.const 2 - i32.add - local.set $0 - local.get $1 - i32.const 2 - i32.add - local.set $1 - end - local.get $2 - i32.const 1 - i32.and - if - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - end - return - end - local.get $2 - i32.const 32 - i32.ge_u - if - block $break|2 - block $case2|2 - block $case1|2 - block $case0|2 - local.get $0 - i32.const 3 - i32.and - local.set $5 - local.get $5 - i32.const 1 - i32.eq - br_if $case0|2 - local.get $5 - i32.const 2 - i32.eq - br_if $case1|2 - local.get $5 - i32.const 3 - i32.eq - br_if $case2|2 - br $break|2 - end - local.get $1 - i32.load - local.set $3 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $2 - i32.const 3 - i32.sub - local.set $2 - loop $while-continue|3 - local.get $2 - i32.const 17 - i32.ge_u - local.set $5 - local.get $5 - if - local.get $1 - i32.const 1 - i32.add - i32.load - local.set $4 - local.get $0 - local.get $3 - i32.const 24 - i32.shr_u - local.get $4 - i32.const 8 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 5 - i32.add - i32.load - local.set $3 - local.get $0 - i32.const 4 - i32.add - local.get $4 - i32.const 24 - i32.shr_u - local.get $3 - i32.const 8 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 9 - i32.add - i32.load - local.set $4 - local.get $0 - i32.const 8 - i32.add - local.get $3 - i32.const 24 - i32.shr_u - local.get $4 - i32.const 8 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 13 - i32.add - i32.load - local.set $3 - local.get $0 - i32.const 12 - i32.add - local.get $4 - i32.const 24 - i32.shr_u - local.get $3 - i32.const 8 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 16 - i32.add - local.set $1 - local.get $0 - i32.const 16 - i32.add - local.set $0 - local.get $2 - i32.const 16 - i32.sub - local.set $2 - br $while-continue|3 - end - end - br $break|2 - end - local.get $1 - i32.load - local.set $3 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $2 - i32.const 2 - i32.sub - local.set $2 - loop $while-continue|4 - local.get $2 - i32.const 18 - i32.ge_u - local.set $5 - local.get $5 - if - local.get $1 - i32.const 2 - i32.add - i32.load - local.set $4 - local.get $0 - local.get $3 - i32.const 16 - i32.shr_u - local.get $4 - i32.const 16 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 6 - i32.add - i32.load - local.set $3 - local.get $0 - i32.const 4 - i32.add - local.get $4 - i32.const 16 - i32.shr_u - local.get $3 - i32.const 16 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 10 - i32.add - i32.load - local.set $4 - local.get $0 - i32.const 8 - i32.add - local.get $3 - i32.const 16 - i32.shr_u - local.get $4 - i32.const 16 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 14 - i32.add - i32.load - local.set $3 - local.get $0 - i32.const 12 - i32.add - local.get $4 - i32.const 16 - i32.shr_u - local.get $3 - i32.const 16 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 16 - i32.add - local.set $1 - local.get $0 - i32.const 16 - i32.add - local.set $0 - local.get $2 - i32.const 16 - i32.sub - local.set $2 - br $while-continue|4 - end - end - br $break|2 - end - local.get $1 - i32.load - local.set $3 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $2 - i32.const 1 - i32.sub - local.set $2 - loop $while-continue|5 - local.get $2 - i32.const 19 - i32.ge_u - local.set $5 - local.get $5 - if - local.get $1 - i32.const 3 - i32.add - i32.load - local.set $4 - local.get $0 - local.get $3 - i32.const 8 - i32.shr_u - local.get $4 - i32.const 24 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 7 - i32.add - i32.load - local.set $3 - local.get $0 - i32.const 4 - i32.add - local.get $4 - i32.const 8 - i32.shr_u - local.get $3 - i32.const 24 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 11 - i32.add - i32.load - local.set $4 - local.get $0 - i32.const 8 - i32.add - local.get $3 - i32.const 8 - i32.shr_u - local.get $4 - i32.const 24 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 15 - i32.add - i32.load - local.set $3 - local.get $0 - i32.const 12 - i32.add - local.get $4 - i32.const 8 - i32.shr_u - local.get $3 - i32.const 24 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 16 - i32.add - local.set $1 - local.get $0 - i32.const 16 - i32.add - local.set $0 - local.get $2 - i32.const 16 - i32.sub - local.set $2 - br $while-continue|5 - end - end - br $break|2 - end - end - local.get $2 - i32.const 16 - i32.and - if - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - end - local.get $2 - i32.const 8 - i32.and - if - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - end - local.get $2 - i32.const 4 - i32.and - if - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - end - local.get $2 - i32.const 2 - i32.and - if - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - end - local.get $2 - i32.const 1 - i32.and - if - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - end - ) - (func $~lib/memory/memory.copy (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - block $~lib/util/memory/memmove|inlined.0 - local.get $0 - local.set $5 - local.get $1 - local.set $4 - local.get $2 - local.set $3 - local.get $5 - local.get $4 - i32.eq - if - br $~lib/util/memory/memmove|inlined.0 - end - i32.const 0 - i32.const 1 - i32.lt_s - drop - local.get $4 - local.get $5 - i32.sub - local.get $3 - i32.sub - i32.const 0 - local.get $3 - i32.const 1 - i32.shl - i32.sub - i32.le_u - if - local.get $5 - local.get $4 - local.get $3 - call $~lib/util/memory/memcpy - br $~lib/util/memory/memmove|inlined.0 - end - local.get $5 - local.get $4 - i32.lt_u - if - i32.const 0 - i32.const 2 - i32.lt_s - drop - local.get $4 - i32.const 7 - i32.and - local.get $5 - i32.const 7 - i32.and - i32.eq - if - loop $while-continue|0 - local.get $5 - i32.const 7 - i32.and - local.set $6 - local.get $6 - if - local.get $3 - i32.eqz - if - br $~lib/util/memory/memmove|inlined.0 - end - local.get $3 - i32.const 1 - i32.sub - local.set $3 - local.get $5 - local.tee $7 - i32.const 1 - i32.add - local.set $5 - local.get $7 - local.get $4 - local.tee $7 - i32.const 1 - i32.add - local.set $4 - local.get $7 - i32.load8_u - i32.store8 - br $while-continue|0 - end - end - loop $while-continue|1 - local.get $3 - i32.const 8 - i32.ge_u - local.set $6 - local.get $6 - if - local.get $5 - local.get $4 - i64.load - i64.store - local.get $3 - i32.const 8 - i32.sub - local.set $3 - local.get $5 - i32.const 8 - i32.add - local.set $5 - local.get $4 - i32.const 8 - i32.add - local.set $4 - br $while-continue|1 - end - end - end - loop $while-continue|2 - local.get $3 - local.set $6 - local.get $6 - if - local.get $5 - local.tee $7 - i32.const 1 - i32.add - local.set $5 - local.get $7 - local.get $4 - local.tee $7 - i32.const 1 - i32.add - local.set $4 - local.get $7 - i32.load8_u - i32.store8 - local.get $3 - i32.const 1 - i32.sub - local.set $3 - br $while-continue|2 - end - end - else - i32.const 0 - i32.const 2 - i32.lt_s - drop - local.get $4 - i32.const 7 - i32.and - local.get $5 - i32.const 7 - i32.and - i32.eq - if - loop $while-continue|3 - local.get $5 - local.get $3 - i32.add - i32.const 7 - i32.and - local.set $6 - local.get $6 - if - local.get $3 - i32.eqz - if - br $~lib/util/memory/memmove|inlined.0 - end - local.get $5 - local.get $3 - i32.const 1 - i32.sub - local.tee $3 - i32.add - local.get $4 - local.get $3 - i32.add - i32.load8_u - i32.store8 - br $while-continue|3 - end - end - loop $while-continue|4 - local.get $3 - i32.const 8 - i32.ge_u - local.set $6 - local.get $6 - if - local.get $3 - i32.const 8 - i32.sub - local.set $3 - local.get $5 - local.get $3 - i32.add - local.get $4 - local.get $3 - i32.add - i64.load - i64.store - br $while-continue|4 - end - end - end - loop $while-continue|5 - local.get $3 - local.set $6 - local.get $6 - if - local.get $5 - local.get $3 - i32.const 1 - i32.sub - local.tee $3 - i32.add - local.get $4 - local.get $3 - i32.add - i32.load8_u - i32.store8 - br $while-continue|5 - end - end - end - end - ) - (func $~lib/string/String#substring (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) - (local $10 i32) - (local $11 i32) - local.get $0 - call $~lib/string/String#get:length - local.set $3 - local.get $1 - local.tee $4 - i32.const 0 - local.tee $5 - local.get $4 - local.get $5 - i32.gt_s - select - local.tee $4 - local.get $3 - local.tee $5 - local.get $4 - local.get $5 - i32.lt_s - select - local.set $6 - local.get $2 - local.tee $4 - i32.const 0 - local.tee $5 - local.get $4 - local.get $5 - i32.gt_s - select - local.tee $4 - local.get $3 - local.tee $5 - local.get $4 - local.get $5 - i32.lt_s - select - local.set $7 - local.get $6 - local.tee $4 - local.get $7 - local.tee $5 - local.get $4 - local.get $5 - i32.lt_s - select - i32.const 1 - i32.shl - local.set $8 - local.get $6 - local.tee $4 - local.get $7 - local.tee $5 - local.get $4 - local.get $5 - i32.gt_s - select - i32.const 1 - i32.shl - local.set $9 - local.get $9 - local.get $8 - i32.sub - local.set $10 - local.get $10 - i32.eqz - if - i32.const 64 - call $~lib/rt/stub/__retain - return - end - local.get $8 - i32.eqz - if (result i32) - local.get $9 - local.get $3 - i32.const 1 - i32.shl - i32.eq - else - i32.const 0 - end - if - local.get $0 - call $~lib/rt/stub/__retain - return - end - local.get $10 - i32.const 1 - call $~lib/rt/stub/__new - local.set $11 - local.get $11 - local.get $0 - local.get $8 - i32.add - local.get $10 - call $~lib/memory/memory.copy - local.get $11 - call $~lib/rt/stub/__retain - ) - (func $empty/A#constructor (param $0 i32) (result i32) - local.get $0 - i32.eqz - if - i32.const 0 - i32.const 3 - call $~lib/rt/stub/__new - call $~lib/rt/stub/__retain - local.set $0 - end - local.get $0 - ) - (func $~lib/rt/stub/__release (param $0 i32) - nop - ) - (func $empty/B#constructor (param $0 i32) (result i32) - local.get $0 - i32.eqz - if - i32.const 0 - call $~lib/rt/stub/__alloc - local.set $0 - end - local.get $0 - ) - (func $start:empty - (local $0 i32) - global.get $~lib/memory/__heap_base - i32.const 4 - i32.add - i32.const 15 - i32.add - i32.const 15 - i32.const -1 - i32.xor - i32.and - i32.const 4 - i32.sub - global.set $~lib/rt/stub/startOffset - global.get $~lib/rt/stub/startOffset - global.set $~lib/rt/stub/offset - global.get $empty/a - i32.const 2 - global.get $~lib/builtins/i32.MAX_VALUE - call $~lib/string/String#substring - local.tee $0 - call $~lib/string/String#get:length - i32.const 3 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 96 - i32.const 3 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - call $empty/A#constructor - call $~lib/rt/stub/__release - i32.const 0 - call $empty/B#constructor - drop - local.get $0 - call $~lib/rt/stub/__release - ) - (func $~start - call $start:empty - ) ) diff --git a/tests/compiler/object-literal.untouched.wat b/tests/compiler/object-literal.untouched.wat index 8d6867cca9..7b020683c3 100644 --- a/tests/compiler/object-literal.untouched.wat +++ b/tests/compiler/object-literal.untouched.wat @@ -3038,11 +3038,11 @@ local.get $5 i32.gt_s select - local.tee $4 - local.get $3 local.tee $5 - local.get $4 + local.get $3 + local.tee $4 local.get $5 + local.get $4 i32.lt_s select local.set $6 @@ -3054,11 +3054,11 @@ local.get $5 i32.gt_s select - local.tee $4 - local.get $3 local.tee $5 - local.get $4 + local.get $3 + local.tee $4 local.get $5 + local.get $4 i32.lt_s select local.set $7 @@ -3074,11 +3074,11 @@ i32.shl local.set $8 local.get $6 - local.tee $4 - local.get $7 local.tee $5 - local.get $4 + local.get $7 + local.tee $4 local.get $5 + local.get $4 i32.gt_s select i32.const 1 diff --git a/tests/compiler/std/array-access.untouched.wat b/tests/compiler/std/array-access.untouched.wat index ee895479d5..763adf13f9 100644 --- a/tests/compiler/std/array-access.untouched.wat +++ b/tests/compiler/std/array-access.untouched.wat @@ -350,11 +350,11 @@ call $~lib/string/String#get:length local.set $5 local.get $2 - local.tee $3 - i32.const 0 local.tee $4 - local.get $3 + i32.const 0 + local.tee $3 local.get $4 + local.get $3 i32.gt_s select local.tee $3 diff --git a/tests/compiler/std/array.untouched.wat b/tests/compiler/std/array.untouched.wat index 66ff3a874f..c24473e3ae 100644 --- a/tests/compiler/std/array.untouched.wat +++ b/tests/compiler/std/array.untouched.wat @@ -3693,11 +3693,11 @@ select else local.get $2 - local.tee $6 - local.get $5 local.tee $7 - local.get $6 + local.get $5 + local.tee $6 local.get $7 + local.get $6 i32.lt_s select end @@ -3718,11 +3718,11 @@ select else local.get $3 - local.tee $6 - local.get $5 local.tee $7 - local.get $6 + local.get $5 + local.tee $6 local.get $7 + local.get $6 i32.lt_s select end @@ -3898,11 +3898,11 @@ select else local.get $2 - local.tee $6 - local.get $5 local.tee $7 - local.get $6 + local.get $5 + local.tee $6 local.get $7 + local.get $6 i32.lt_s select end @@ -3923,11 +3923,11 @@ select else local.get $3 - local.tee $6 - local.get $5 local.tee $7 - local.get $6 + local.get $5 + local.tee $6 local.get $7 + local.get $6 i32.lt_s select end @@ -3942,8 +3942,8 @@ local.get $2 local.get $3 i32.lt_s - local.set $6 - local.get $6 + local.set $7 + local.get $7 if local.get $4 local.get $2 @@ -4661,11 +4661,11 @@ local.get $5 local.get $1 i32.add - local.tee $6 - i32.const 0 local.tee $7 - local.get $6 + i32.const 0 + local.tee $6 local.get $7 + local.get $6 i32.gt_s select else @@ -4686,11 +4686,11 @@ local.get $5 local.get $2 i32.add - local.tee $6 - i32.const 0 local.tee $7 - local.get $6 + i32.const 0 + local.tee $6 local.get $7 + local.get $6 i32.gt_s select else @@ -4711,11 +4711,11 @@ local.get $5 local.get $3 i32.add - local.tee $6 - i32.const 0 local.tee $7 - local.get $6 + i32.const 0 + local.tee $6 local.get $7 + local.get $6 i32.gt_s select else @@ -4732,13 +4732,13 @@ local.get $10 local.get $9 i32.sub - local.tee $6 + local.tee $7 local.get $5 local.get $8 i32.sub - local.tee $7 - local.get $6 + local.tee $6 local.get $7 + local.get $6 i32.lt_s select local.set $11 @@ -5405,11 +5405,11 @@ select else local.get $1 - local.tee $4 - local.get $3 local.tee $5 - local.get $4 + local.get $3 + local.tee $4 local.get $5 + local.get $4 i32.lt_s select end @@ -5424,11 +5424,11 @@ local.get $5 i32.lt_s select - local.tee $4 - i32.const 0 local.tee $5 - local.get $4 + i32.const 0 + local.tee $4 local.get $5 + local.get $4 i32.gt_s select local.set $2 @@ -5513,11 +5513,11 @@ select else local.get $1 - local.tee $4 - local.get $3 local.tee $5 - local.get $4 + local.get $3 + local.tee $4 local.get $5 + local.get $4 i32.lt_s select end @@ -5532,11 +5532,11 @@ local.get $5 i32.lt_s select - local.tee $4 - i32.const 0 local.tee $5 - local.get $4 + i32.const 0 + local.tee $4 local.get $5 + local.get $4 i32.gt_s select local.set $2 @@ -5666,11 +5666,11 @@ select else local.get $1 - local.tee $4 - local.get $3 local.tee $5 - local.get $4 + local.get $3 + local.tee $4 local.get $5 + local.get $4 i32.lt_s select end @@ -5685,11 +5685,11 @@ local.get $5 i32.lt_s select - local.tee $4 - i32.const 0 local.tee $5 - local.get $4 + i32.const 0 + local.tee $4 local.get $5 + local.get $4 i32.gt_s select local.set $2 @@ -12944,11 +12944,11 @@ local.get $5 i32.gt_s select - local.tee $4 - local.get $3 local.tee $5 - local.get $4 + local.get $3 + local.tee $4 local.get $5 + local.get $4 i32.lt_s select local.set $6 @@ -12960,11 +12960,11 @@ local.get $5 i32.gt_s select - local.tee $4 - local.get $3 local.tee $5 - local.get $4 + local.get $3 + local.tee $4 local.get $5 + local.get $4 i32.lt_s select local.set $7 @@ -12980,11 +12980,11 @@ i32.shl local.set $8 local.get $6 - local.tee $4 - local.get $7 local.tee $5 - local.get $4 + local.get $7 + local.tee $4 local.get $5 + local.get $4 i32.gt_s select i32.const 1 @@ -26690,11 +26690,11 @@ local.get $5 local.get $1 i32.add - local.tee $6 - i32.const 0 local.tee $7 - local.get $6 + i32.const 0 + local.tee $6 local.get $7 + local.get $6 i32.gt_s select else @@ -26715,11 +26715,11 @@ local.get $5 local.get $2 i32.add - local.tee $6 - i32.const 0 local.tee $7 - local.get $6 + i32.const 0 + local.tee $6 local.get $7 + local.get $6 i32.gt_s select else @@ -26740,11 +26740,11 @@ local.get $5 local.get $3 i32.add - local.tee $6 - i32.const 0 local.tee $7 - local.get $6 + i32.const 0 + local.tee $6 local.get $7 + local.get $6 i32.gt_s select else @@ -26761,13 +26761,13 @@ local.get $10 local.get $9 i32.sub - local.tee $6 + local.tee $7 local.get $5 local.get $8 i32.sub - local.tee $7 - local.get $6 + local.tee $6 local.get $7 + local.get $6 i32.lt_s select local.set $11 @@ -27121,11 +27121,11 @@ select else local.get $1 - local.tee $4 - local.get $3 local.tee $5 - local.get $4 + local.get $3 + local.tee $4 local.get $5 + local.get $4 i32.lt_s select end @@ -27146,11 +27146,11 @@ select else local.get $2 - local.tee $4 - local.get $3 local.tee $5 - local.get $4 + local.get $3 + local.tee $4 local.get $5 + local.get $4 i32.lt_s select end @@ -27221,11 +27221,11 @@ select else local.get $1 - local.tee $4 - local.get $3 local.tee $5 - local.get $4 + local.get $3 + local.tee $4 local.get $5 + local.get $4 i32.lt_s select end @@ -27240,11 +27240,11 @@ local.get $5 i32.lt_s select - local.tee $4 - i32.const 0 local.tee $5 - local.get $4 + i32.const 0 + local.tee $4 local.get $5 + local.get $4 i32.gt_s select local.set $2 @@ -27992,11 +27992,11 @@ local.get $5 local.get $1 i32.add - local.tee $6 - i32.const 0 local.tee $7 - local.get $6 + i32.const 0 + local.tee $6 local.get $7 + local.get $6 i32.gt_s select else @@ -28017,11 +28017,11 @@ local.get $5 local.get $2 i32.add - local.tee $6 - i32.const 0 local.tee $7 - local.get $6 + i32.const 0 + local.tee $6 local.get $7 + local.get $6 i32.gt_s select else @@ -28042,11 +28042,11 @@ local.get $5 local.get $3 i32.add - local.tee $6 - i32.const 0 local.tee $7 - local.get $6 + i32.const 0 + local.tee $6 local.get $7 + local.get $6 i32.gt_s select else @@ -28063,13 +28063,13 @@ local.get $10 local.get $9 i32.sub - local.tee $6 + local.tee $7 local.get $5 local.get $8 i32.sub - local.tee $7 - local.get $6 + local.tee $6 local.get $7 + local.get $6 i32.lt_s select local.set $11 @@ -28423,11 +28423,11 @@ select else local.get $1 - local.tee $4 - local.get $3 local.tee $5 - local.get $4 + local.get $3 + local.tee $4 local.get $5 + local.get $4 i32.lt_s select end @@ -28448,11 +28448,11 @@ select else local.get $2 - local.tee $4 - local.get $3 local.tee $5 - local.get $4 + local.get $3 + local.tee $4 local.get $5 + local.get $4 i32.lt_s select end @@ -28523,11 +28523,11 @@ select else local.get $1 - local.tee $4 - local.get $3 local.tee $5 - local.get $4 + local.get $3 + local.tee $4 local.get $5 + local.get $4 i32.lt_s select end @@ -28542,11 +28542,11 @@ local.get $5 i32.lt_s select - local.tee $4 - i32.const 0 local.tee $5 - local.get $4 + i32.const 0 + local.tee $4 local.get $5 + local.get $4 i32.gt_s select local.set $2 @@ -29439,11 +29439,11 @@ select else local.get $2 - local.tee $6 - local.get $5 local.tee $7 - local.get $6 + local.get $5 + local.tee $6 local.get $7 + local.get $6 i32.lt_s select end @@ -29464,11 +29464,11 @@ select else local.get $3 - local.tee $6 - local.get $5 local.tee $7 - local.get $6 + local.get $5 + local.tee $6 local.get $7 + local.get $6 i32.lt_s select end @@ -29479,8 +29479,8 @@ local.get $2 local.get $3 i32.lt_s - local.set $6 - local.get $6 + local.set $7 + local.get $7 if local.get $4 local.get $2 @@ -29488,9 +29488,9 @@ i32.shl i32.add i32.load - local.set $7 + local.set $6 local.get $1 - local.get $7 + local.get $6 i32.ne if local.get $4 @@ -29501,7 +29501,7 @@ local.get $1 call $~lib/rt/pure/__retain i32.store - local.get $7 + local.get $6 call $~lib/rt/pure/__release end local.get $2 @@ -29513,10 +29513,10 @@ end local.get $0 call $~lib/rt/pure/__retain - local.set $6 + local.set $7 local.get $1 call $~lib/rt/pure/__release - local.get $6 + local.get $7 ) (func $~lib/array/Array<~lib/string/String>#indexOf (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) @@ -29907,11 +29907,11 @@ local.get $5 local.get $1 i32.add - local.tee $6 - i32.const 0 local.tee $7 - local.get $6 + i32.const 0 + local.tee $6 local.get $7 + local.get $6 i32.gt_s select else @@ -29932,11 +29932,11 @@ local.get $5 local.get $2 i32.add - local.tee $6 - i32.const 0 local.tee $7 - local.get $6 + i32.const 0 + local.tee $6 local.get $7 + local.get $6 i32.gt_s select else @@ -29957,11 +29957,11 @@ local.get $5 local.get $3 i32.add - local.tee $6 - i32.const 0 local.tee $7 - local.get $6 + i32.const 0 + local.tee $6 local.get $7 + local.get $6 i32.gt_s select else @@ -29978,13 +29978,13 @@ local.get $10 local.get $9 i32.sub - local.tee $6 + local.tee $7 local.get $5 local.get $8 i32.sub - local.tee $7 - local.get $6 + local.tee $6 local.get $7 + local.get $6 i32.lt_s select local.set $11 @@ -30017,8 +30017,8 @@ local.set $8 loop $while-continue|0 local.get $11 - local.set $6 - local.get $6 + local.set $7 + local.get $7 if local.get $4 local.get $8 @@ -30026,7 +30026,7 @@ i32.shl i32.add i32.load - local.set $7 + local.set $6 local.get $4 local.get $9 i32.const 2 @@ -30035,7 +30035,7 @@ i32.load local.set $12 local.get $12 - local.get $7 + local.get $6 i32.ne if local.get $4 @@ -30046,7 +30046,7 @@ local.get $12 call $~lib/rt/pure/__retain i32.store - local.get $7 + local.get $6 call $~lib/rt/pure/__release end local.get $9 @@ -30067,8 +30067,8 @@ else loop $while-continue|1 local.get $11 - local.set $6 - local.get $6 + local.set $7 + local.get $7 if local.get $4 local.get $8 @@ -30465,11 +30465,11 @@ select else local.get $1 - local.tee $4 - local.get $3 local.tee $5 - local.get $4 + local.get $3 + local.tee $4 local.get $5 + local.get $4 i32.lt_s select end @@ -30490,11 +30490,11 @@ select else local.get $2 - local.tee $4 - local.get $3 local.tee $5 - local.get $4 + local.get $3 + local.tee $4 local.get $5 + local.get $4 i32.lt_s select end @@ -30590,11 +30590,11 @@ select else local.get $1 - local.tee $4 - local.get $3 local.tee $5 - local.get $4 + local.get $3 + local.tee $4 local.get $5 + local.get $4 i32.lt_s select end @@ -30609,11 +30609,11 @@ local.get $5 i32.lt_s select - local.tee $4 - i32.const 0 local.tee $5 - local.get $4 + i32.const 0 + local.tee $4 local.get $5 + local.get $4 i32.gt_s select local.set $2 diff --git a/tests/compiler/std/arraybuffer.untouched.wat b/tests/compiler/std/arraybuffer.untouched.wat index 727d7e762f..ca298dad10 100644 --- a/tests/compiler/std/arraybuffer.untouched.wat +++ b/tests/compiler/std/arraybuffer.untouched.wat @@ -3031,11 +3031,11 @@ select else local.get $1 - local.tee $4 - local.get $3 local.tee $5 - local.get $4 + local.get $3 + local.tee $4 local.get $5 + local.get $4 i32.lt_s select end @@ -3056,11 +3056,11 @@ select else local.get $2 - local.tee $4 - local.get $3 local.tee $5 - local.get $4 + local.get $3 + local.tee $4 local.get $5 + local.get $4 i32.lt_s select end diff --git a/tests/compiler/std/math.untouched.wat b/tests/compiler/std/math.untouched.wat index 271d353465..2cddbb761f 100644 --- a/tests/compiler/std/math.untouched.wat +++ b/tests/compiler/std/math.untouched.wat @@ -222,11 +222,11 @@ i32.add i32.const 53 i32.sub - local.tee $3 - i32.const -1022 local.tee $4 - local.get $3 + i32.const -1022 + local.tee $3 local.get $4 + local.get $3 i32.gt_s select local.set $1 @@ -451,11 +451,11 @@ i32.add i32.const 24 i32.sub - local.tee $3 - i32.const -126 local.tee $4 - local.get $3 + i32.const -126 + local.tee $3 local.get $4 + local.get $3 i32.gt_s select local.set $1 diff --git a/tests/compiler/std/string-casemapping.untouched.wat b/tests/compiler/std/string-casemapping.untouched.wat index 79418362ac..023457d6ec 100644 --- a/tests/compiler/std/string-casemapping.untouched.wat +++ b/tests/compiler/std/string-casemapping.untouched.wat @@ -4301,20 +4301,20 @@ local.get $12 i32.const 30 i32.add - local.tee $14 + local.tee $16 local.get $8 - local.tee $15 + local.tee $14 + local.get $16 local.get $14 - local.get $15 i32.lt_s select - local.set $14 + local.set $16 loop $while-continue|2 local.get $12 - local.get $14 + local.get $16 i32.lt_s - local.set $15 - local.get $15 + local.set $14 + local.get $14 if local.get $10 local.get $12 @@ -4322,8 +4322,8 @@ i32.shl i32.add i32.load16_u - local.set $18 - local.get $18 + local.set $15 + local.get $15 i32.const 64512 i32.and i32.const 55296 @@ -4341,49 +4341,49 @@ i32.shl i32.add i32.load16_u offset=2 - local.set $16 - local.get $16 + local.set $18 + local.get $18 i32.const 64512 i32.and i32.const 56320 i32.eq if - local.get $18 + local.get $15 i32.const 55296 i32.sub i32.const 10 i32.shl - local.get $16 + local.get $18 i32.const 56320 i32.sub i32.add i32.const 65536 i32.add - local.set $18 + local.set $15 end end + local.get $15 + local.set $18 local.get $18 - local.set $16 - local.get $16 i32.const 918000 i32.lt_u if (result i32) i32.const 5954 - local.get $16 + local.get $18 call $~lib/util/string/stagedBinaryLookup else i32.const 0 end i32.eqz if + local.get $15 + local.set $18 local.get $18 - local.set $16 - local.get $16 i32.const 127370 i32.lt_u if (result i32) i32.const 8962 - local.get $16 + local.get $18 call $~lib/util/string/stagedBinaryLookup else i32.const 0 @@ -4392,7 +4392,7 @@ br $~lib/util/string/isFinalSigma|inlined.0 end local.get $12 - local.get $18 + local.get $15 i32.const 65536 i32.ge_u i32.const 1 @@ -4464,7 +4464,7 @@ i32.shr_u i32.const 55296 i32.or - local.set $14 + local.set $16 local.get $7 i32.const 1023 i32.and @@ -4476,7 +4476,7 @@ i32.const 1 i32.shl i32.add - local.get $14 + local.get $16 local.get $13 i32.const 16 i32.shl diff --git a/tests/compiler/std/string.optimized.wat b/tests/compiler/std/string.optimized.wat index ec1418b24c..1f5d59dcb8 100644 --- a/tests/compiler/std/string.optimized.wat +++ b/tests/compiler/std/string.optimized.wat @@ -3507,23 +3507,23 @@ block $folding-inner0 local.get $0 call $~lib/rt/pure/__retain - local.tee $4 + local.tee $6 i32.const 20 i32.sub i32.load offset=16 i32.const 1 i32.shr_u - local.tee $6 + local.tee $3 i32.eqz br_if $folding-inner0 - local.get $4 + local.get $6 local.tee $0 i32.load16_u local.set $8 f64.const 1 local.set $12 loop $while-continue|0 - local.get $6 + local.get $3 if (result i32) local.get $8 call $~lib/util/string/isSpace @@ -3537,24 +3537,24 @@ local.tee $0 i32.load16_u local.set $8 - local.get $6 + local.get $3 i32.const 1 i32.sub - local.set $6 + local.set $3 br $while-continue|0 end end - local.get $6 + local.get $3 i32.eqz br_if $folding-inner0 local.get $8 i32.const 45 i32.eq if (result i32) - local.get $6 + local.get $3 i32.const 1 i32.sub - local.tee $6 + local.tee $3 i32.eqz br_if $folding-inner0 f64.const -1 @@ -3569,10 +3569,10 @@ i32.const 43 i32.eq if (result i32) - local.get $6 + local.get $3 i32.const 1 i32.sub - local.tee $6 + local.tee $3 i32.eqz br_if $folding-inner0 local.get $0 @@ -3588,7 +3588,7 @@ i32.const 73 i32.eq i32.const 0 - local.get $6 + local.get $3 i32.const 8 i32.ge_s select @@ -3606,7 +3606,7 @@ i32.const 0 end if - local.get $4 + local.get $6 call $~lib/rt/pure/__release local.get $12 f64.const inf @@ -3627,7 +3627,7 @@ select br_if $folding-inner0 local.get $0 - local.set $2 + local.set $1 loop $while-continue|1 local.get $8 i32.const 48 @@ -3639,18 +3639,18 @@ local.tee $0 i32.load16_u local.set $8 - local.get $6 + local.get $3 i32.const 1 i32.sub - local.set $6 + local.set $3 br $while-continue|1 end end - local.get $6 + local.get $3 i32.const 0 i32.le_s if - local.get $4 + local.get $6 call $~lib/rt/pure/__release f64.const 0 return @@ -3660,19 +3660,19 @@ i32.eq if local.get $0 - local.get $2 + local.get $1 i32.eq - local.set $2 + local.set $1 local.get $0 i32.const 2 i32.add local.set $0 i32.const 0 - local.get $2 - local.get $6 + local.get $1 + local.get $3 i32.const 1 i32.sub - local.tee $6 + local.tee $3 select br_if $folding-inner0 i32.const 1 @@ -3684,14 +3684,14 @@ i32.const 48 i32.eq if - local.get $6 + local.get $3 i32.const 1 i32.sub - local.set $6 - local.get $5 + local.set $3 + local.get $4 i32.const 1 i32.sub - local.set $5 + local.set $4 local.get $0 i32.const 2 i32.add @@ -3699,11 +3699,11 @@ br $for-loop|2 end end - local.get $6 + local.get $3 i32.const 0 i32.le_s if - local.get $4 + local.get $6 call $~lib/rt/pure/__release f64.const 0 return @@ -3715,8 +3715,8 @@ i32.ge_u i32.const 0 i32.const 0 - local.get $2 - local.get $5 + local.get $1 + local.get $4 select select br_if $folding-inner0 @@ -3724,7 +3724,7 @@ local.get $8 i32.const 48 i32.sub - local.set $2 + local.set $1 loop $for-loop|3 i32.const 1 local.get $13 @@ -3734,47 +3734,47 @@ i32.const 46 i32.eq select - local.get $2 + local.get $1 i32.const 10 i32.lt_u select if block $for-break3 - local.get $2 + local.get $1 i32.const 10 i32.lt_u if - local.get $2 + local.get $1 i64.extend_i32_u local.get $7 i64.const 10 i64.mul i64.add local.get $7 - local.get $2 + local.get $1 i32.eqz i32.eqz i64.extend_i32_u i64.or - local.get $1 + local.get $2 i32.const 19 i32.lt_s select local.set $7 - local.get $1 + local.get $2 i32.const 1 i32.add - local.set $1 + local.set $2 else - local.get $1 - local.set $5 + local.get $2 + local.set $4 i32.const 1 local.set $13 end - local.get $6 + local.get $3 i32.const 1 i32.sub - local.tee $6 + local.tee $3 i32.eqz br_if $for-break3 local.get $0 @@ -3785,7 +3785,7 @@ local.tee $8 i32.const 48 i32.sub - local.set $2 + local.set $1 br $for-loop|3 end end @@ -3793,20 +3793,22 @@ block $~lib/util/string/scientific|inlined.0 (result f64) f64.const 0 i32.const 1 - local.get $5 - local.get $1 + local.get $4 + local.get $2 local.get $13 select i32.const 19 - local.get $1 - local.get $1 + local.get $2 + local.get $2 i32.const 19 i32.gt_s select i32.sub block $~lib/util/string/parseExp|inlined.0 (result i32) - i32.const 1 + local.get $3 local.set $1 + i32.const 1 + local.set $2 i32.const 0 local.get $0 i32.load16_u @@ -3819,115 +3821,115 @@ local.get $0 i32.const 2 i32.add - local.tee $2 - i32.load16_u local.tee $0 + i32.load16_u + local.tee $4 i32.const 45 i32.eq if (result i32) i32.const 0 - local.get $6 + local.get $1 i32.const 1 i32.sub - local.tee $6 + local.tee $1 i32.eqz br_if $~lib/util/string/parseExp|inlined.0 drop i32.const -1 - local.set $1 - local.get $2 + local.set $2 + local.get $0 i32.const 2 i32.add - local.tee $2 + local.tee $0 i32.load16_u else - local.get $0 + local.get $4 i32.const 43 i32.eq if (result i32) i32.const 0 - local.get $6 + local.get $1 i32.const 1 i32.sub - local.tee $6 + local.tee $1 i32.eqz br_if $~lib/util/string/parseExp|inlined.0 drop - local.get $2 + local.get $0 i32.const 2 i32.add - local.tee $2 + local.tee $0 i32.load16_u else - local.get $0 + local.get $4 end end - local.set $0 + local.set $4 loop $while-continue|4 - local.get $0 + local.get $4 i32.const 48 i32.eq if i32.const 0 - local.get $6 + local.get $1 i32.const 1 i32.sub - local.tee $6 + local.tee $1 i32.eqz br_if $~lib/util/string/parseExp|inlined.0 drop - local.get $2 + local.get $0 i32.const 2 i32.add - local.tee $2 + local.tee $0 i32.load16_u - local.set $0 + local.set $4 br $while-continue|4 end end - local.get $0 + local.get $4 i32.const 48 i32.sub - local.set $0 + local.set $4 loop $for-loop|5 - local.get $0 + local.get $4 i32.const 10 i32.lt_u i32.const 0 - local.get $6 + local.get $1 select if - local.get $1 + local.get $2 i32.const 3200 i32.mul - local.get $3 + local.get $5 i32.const 3200 i32.ge_s br_if $~lib/util/string/parseExp|inlined.0 drop - local.get $0 - local.get $3 + local.get $4 + local.get $5 i32.const 10 i32.mul i32.add - local.set $3 - local.get $6 + local.set $5 + local.get $1 i32.const 1 i32.sub - local.set $6 - local.get $2 + local.set $1 + local.get $0 i32.const 2 i32.add - local.tee $2 + local.tee $0 i32.load16_u i32.const 48 i32.sub - local.set $0 + local.set $4 br $for-loop|5 end end - local.get $1 - local.get $3 + local.get $2 + local.get $5 i32.mul end i32.add @@ -4027,13 +4029,13 @@ i64.shl local.set $7 local.get $0 - local.tee $1 + local.tee $2 i64.extend_i32_s local.get $9 i64.sub local.set $9 loop $for-loop|6 - local.get $1 + local.get $2 i32.const -14 i32.le_s if @@ -4063,16 +4065,16 @@ local.get $10 i64.sub local.set $9 - local.get $1 + local.get $2 i32.const 14 i32.add - local.set $1 + local.set $2 br $for-loop|6 end end local.get $7 i32.const 0 - local.get $1 + local.get $2 i32.sub call $~lib/math/ipow32 i64.extend_i32_s @@ -4114,12 +4116,12 @@ local.set $7 local.get $9 local.get $0 - local.tee $3 + local.tee $5 i64.extend_i32_s i64.add global.set $~lib/util/string/__fixmulShift loop $for-loop|7 - local.get $3 + local.get $5 i32.const 13 i32.ge_s if @@ -4170,14 +4172,14 @@ i64.or i64.add local.set $7 - local.get $3 + local.get $5 i32.const 13 i32.sub - local.set $3 + local.set $5 br $for-loop|7 end end - local.get $3 + local.get $5 call $~lib/math/ipow32 local.tee $0 i64.extend_i32_u @@ -4235,13 +4237,13 @@ end end end - local.get $4 + local.get $6 call $~lib/rt/pure/__release local.get $12 f64.copysign return end - local.get $4 + local.get $6 call $~lib/rt/pure/__release f64.const nan:0x8000000000000 ) diff --git a/tests/compiler/std/string.untouched.wat b/tests/compiler/std/string.untouched.wat index ae4eea4ee5..7f2679f338 100644 --- a/tests/compiler/std/string.untouched.wat +++ b/tests/compiler/std/string.untouched.wat @@ -2340,11 +2340,11 @@ call $~lib/string/String#get:length local.set $5 local.get $2 - local.tee $3 - i32.const 0 local.tee $4 - local.get $3 + i32.const 0 + local.tee $3 local.get $4 + local.get $3 i32.gt_s select local.tee $3 @@ -2410,12 +2410,12 @@ local.get $4 i32.gt_s select - local.tee $3 + local.tee $4 local.get $0 call $~lib/string/String#get:length - local.tee $4 - local.get $3 + local.tee $3 local.get $4 + local.get $3 i32.lt_s select local.set $2 @@ -2431,10 +2431,10 @@ i32.lt_s if i32.const 0 - local.set $3 + local.set $4 local.get $1 call $~lib/rt/pure/__release - local.get $3 + local.get $4 return end local.get $0 @@ -2444,10 +2444,10 @@ local.get $5 call $~lib/util/string/compareImpl i32.eqz - local.set $3 + local.set $4 local.get $1 call $~lib/rt/pure/__release - local.get $3 + local.get $4 ) (func $~lib/string/String#indexOf (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) @@ -2492,11 +2492,11 @@ local.get $6 i32.gt_s select - local.tee $4 - local.get $5 local.tee $6 - local.get $4 + local.get $5 + local.tee $4 local.get $6 + local.get $4 i32.lt_s select local.set $7 @@ -2508,8 +2508,8 @@ local.get $7 local.get $5 i32.le_s - local.set $4 - local.get $4 + local.set $6 + local.get $6 if local.get $0 local.get $7 @@ -2520,10 +2520,10 @@ i32.eqz if local.get $7 - local.set $6 + local.set $4 local.get $1 call $~lib/rt/pure/__release - local.get $6 + local.get $4 return end local.get $7 @@ -2534,10 +2534,10 @@ end end i32.const -1 - local.set $4 + local.set $6 local.get $1 call $~lib/rt/pure/__release - local.get $4 + local.get $6 ) (func $~lib/string/String#includes (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) @@ -4087,13 +4087,13 @@ local.get $6 i32.gt_s select - local.tee $4 + local.tee $6 local.get $5 local.get $3 i32.sub - local.tee $6 - local.get $4 + local.tee $4 local.get $6 + local.get $4 i32.lt_s select local.set $7 @@ -4101,8 +4101,8 @@ local.get $7 i32.const 0 i32.ge_s - local.set $4 - local.get $4 + local.set $6 + local.get $6 if local.get $0 local.get $7 @@ -4113,10 +4113,10 @@ i32.eqz if local.get $7 - local.set $6 + local.set $4 local.get $1 call $~lib/rt/pure/__release - local.get $6 + local.get $4 return end local.get $7 @@ -4127,10 +4127,10 @@ end end i32.const -1 - local.set $4 + local.set $6 local.get $1 call $~lib/rt/pure/__release - local.get $4 + local.get $6 ) (func $~lib/string/String#localeCompare (param $0 i32) (param $1 i32) (result i32) (local $2 i32) @@ -5839,11 +5839,11 @@ i32.add i32.const 53 i32.sub - local.tee $3 - i32.const -1022 local.tee $4 - local.get $3 + i32.const -1022 + local.tee $3 local.get $4 + local.get $3 i32.gt_s select local.set $1 @@ -6279,24 +6279,24 @@ local.set $18 local.get $10 i32.const 19 - local.tee $6 - local.get $9 local.tee $12 - local.get $6 + local.get $9 + local.tee $6 local.get $12 + local.get $6 i32.lt_s select i32.sub block $~lib/util/string/parseExp|inlined.0 (result i32) local.get $3 - local.set $6 - local.get $1 local.set $12 + local.get $1 + local.set $6 i32.const 1 local.set $13 i32.const 0 local.set $14 - local.get $6 + local.get $12 i32.load16_u local.set $15 local.get $15 @@ -6308,29 +6308,29 @@ i32.const 0 br $~lib/util/string/parseExp|inlined.0 end - local.get $6 + local.get $12 i32.const 2 i32.add - local.tee $6 + local.tee $12 i32.load16_u local.set $15 local.get $15 i32.const 45 i32.eq if - local.get $12 + local.get $6 i32.const 1 i32.sub - local.tee $12 + local.tee $6 i32.eqz if i32.const 0 br $~lib/util/string/parseExp|inlined.0 end - local.get $6 + local.get $12 i32.const 2 i32.add - local.tee $6 + local.tee $12 i32.load16_u local.set $15 i32.const -1 @@ -6340,19 +6340,19 @@ i32.const 43 i32.eq if - local.get $12 + local.get $6 i32.const 1 i32.sub - local.tee $12 + local.tee $6 i32.eqz if i32.const 0 br $~lib/util/string/parseExp|inlined.0 end - local.get $6 + local.get $12 i32.const 2 i32.add - local.tee $6 + local.tee $12 i32.load16_u local.set $15 end @@ -6364,19 +6364,19 @@ local.set $16 local.get $16 if - local.get $12 + local.get $6 i32.const 1 i32.sub - local.tee $12 + local.tee $6 i32.eqz if i32.const 0 br $~lib/util/string/parseExp|inlined.0 end - local.get $6 + local.get $12 i32.const 2 i32.add - local.tee $6 + local.tee $12 i32.load16_u local.set $15 br $while-continue|4 @@ -6387,7 +6387,7 @@ i32.sub local.set $16 loop $for-loop|5 - local.get $12 + local.get $6 if (result i32) local.get $16 i32.const 10 @@ -6413,16 +6413,16 @@ local.get $16 i32.add local.set $14 - local.get $6 + local.get $12 i32.const 2 i32.add - local.tee $6 + local.tee $12 i32.load16_u local.set $15 - local.get $12 + local.get $6 i32.const 1 i32.sub - local.set $12 + local.set $6 local.get $15 i32.const 48 i32.sub @@ -6521,9 +6521,9 @@ if local.get $2 local.get $17 - local.set $12 + local.set $6 i32.const 2824 - local.get $12 + local.get $6 i32.const 3 i32.shl i32.add @@ -6535,9 +6535,9 @@ i32.const 0 local.get $17 i32.sub - local.set $6 + local.set $12 i32.const 2824 - local.get $6 + local.get $12 i32.const 3 i32.shl i32.add @@ -6569,8 +6569,8 @@ local.get $13 i32.const -14 i32.le_s - local.set $6 - local.get $6 + local.set $12 + local.get $12 if local.get $19 i64.const 6103515625 @@ -6706,12 +6706,12 @@ i64.const 32 i64.shr_u i32.wrap_i64 - local.set $6 - local.get $6 - i32.clz local.set $12 - i64.const 32 local.get $12 + i32.clz + local.set $6 + i64.const 32 + local.get $6 i64.extend_i32_u i64.sub local.set $23 @@ -6720,7 +6720,7 @@ i64.add global.set $~lib/util/string/__fixmulShift local.get $22 - local.get $12 + local.get $6 i64.extend_i32_u i64.shl local.get $21 @@ -6730,7 +6730,7 @@ i64.shr_u i64.or local.get $21 - local.get $12 + local.get $6 i64.extend_i32_u i64.shl i64.const 31 @@ -6777,9 +6777,9 @@ local.set $13 local.get $13 i32.clz - local.set $12 + local.set $6 i64.const 32 - local.get $12 + local.get $6 i64.extend_i32_u i64.sub local.set $21 @@ -6788,7 +6788,7 @@ i64.add global.set $~lib/util/string/__fixmulShift local.get $22 - local.get $12 + local.get $6 i64.extend_i32_u i64.shl local.get $23 @@ -6798,7 +6798,7 @@ i64.shr_u i64.or local.get $23 - local.get $12 + local.get $6 i64.extend_i32_u i64.shl i64.const 31 @@ -7995,11 +7995,11 @@ select else local.get $1 - local.tee $4 - local.get $3 local.tee $5 - local.get $4 + local.get $3 + local.tee $4 local.get $5 + local.get $4 i32.lt_s select end @@ -8020,11 +8020,11 @@ select else local.get $2 - local.tee $4 - local.get $3 local.tee $5 - local.get $4 + local.get $3 + local.tee $4 local.get $5 + local.get $4 i32.lt_s select end @@ -8092,11 +8092,11 @@ local.set $3 end local.get $4 - local.tee $6 - i32.const 0 local.tee $7 - local.get $6 + i32.const 0 + local.tee $6 local.get $7 + local.get $6 i32.gt_s select local.tee $6 @@ -8155,11 +8155,11 @@ local.get $5 i32.gt_s select - local.tee $4 - local.get $3 local.tee $5 - local.get $4 + local.get $3 + local.tee $4 local.get $5 + local.get $4 i32.lt_s select local.set $6 @@ -8171,11 +8171,11 @@ local.get $5 i32.gt_s select - local.tee $4 - local.get $3 local.tee $5 - local.get $4 + local.get $3 + local.tee $4 local.get $5 + local.get $4 i32.lt_s select local.set $7 @@ -8191,11 +8191,11 @@ i32.shl local.set $8 local.get $6 - local.tee $4 - local.get $7 local.tee $5 - local.get $4 + local.get $7 + local.tee $4 local.get $5 + local.get $4 i32.gt_s select i32.const 1 @@ -8689,11 +8689,11 @@ return end local.get $5 - local.tee $4 - local.get $2 local.tee $3 - local.get $4 + local.get $2 + local.tee $4 local.get $3 + local.get $4 i32.lt_s select local.set $5 @@ -8703,10 +8703,10 @@ i32.const 0 call $~lib/rt/__newArray call $~lib/rt/pure/__retain - local.set $4 - local.get $4 - i32.load offset=4 local.set $3 + local.get $3 + i32.load offset=4 + local.set $4 i32.const 0 local.set $7 loop $for-loop|0 @@ -8728,7 +8728,7 @@ i32.add i32.load16_u i32.store16 - local.get $3 + local.get $4 local.get $7 i32.const 2 i32.shl @@ -8747,7 +8747,7 @@ br $for-loop|0 end end - local.get $4 + local.get $3 local.set $7 local.get $1 call $~lib/rt/pure/__release @@ -8763,16 +8763,16 @@ i32.const 0 call $~lib/rt/__newArray call $~lib/rt/pure/__retain - local.set $3 - local.get $3 + local.set $4 + local.get $4 i32.load offset=4 i32.const 304 i32.store - local.get $3 - local.set $4 + local.get $4 + local.set $3 local.get $1 call $~lib/rt/pure/__release - local.get $4 + local.get $3 return end end @@ -8797,18 +8797,18 @@ local.tee $11 i32.const -1 i32.xor - local.set $3 - local.get $3 + local.set $4 + local.get $4 if local.get $11 local.get $12 i32.sub - local.set $4 - local.get $4 + local.set $3 + local.get $3 i32.const 0 i32.gt_s if - local.get $4 + local.get $3 i32.const 1 i32.shl i32.const 1 @@ -8820,7 +8820,7 @@ i32.const 1 i32.shl i32.add - local.get $4 + local.get $3 i32.const 1 i32.shl call $~lib/memory/memory.copy @@ -8863,10 +8863,10 @@ call $~lib/array/Array<~lib/string/String>#push drop local.get $10 - local.set $3 + local.set $4 local.get $1 call $~lib/rt/pure/__release - local.get $3 + local.get $4 return end local.get $5 @@ -8882,8 +8882,8 @@ i32.shl i32.const 1 call $~lib/rt/pure/__new - local.set $3 - local.get $3 + local.set $4 + local.get $4 local.get $0 local.get $12 i32.const 1 @@ -8894,7 +8894,7 @@ i32.shl call $~lib/memory/memory.copy local.get $10 - local.get $3 + local.get $4 call $~lib/array/Array<~lib/string/String>#push drop else @@ -8904,10 +8904,10 @@ drop end local.get $10 - local.set $3 + local.set $4 local.get $1 call $~lib/rt/pure/__release - local.get $3 + local.get $4 ) (func $~lib/array/Array<~lib/string/String>#get:length (param $0 i32) (result i32) local.get $0 diff --git a/tests/compiler/std/typedarray.untouched.wat b/tests/compiler/std/typedarray.untouched.wat index 329b76adb2..3710d7c5e8 100644 --- a/tests/compiler/std/typedarray.untouched.wat +++ b/tests/compiler/std/typedarray.untouched.wat @@ -2971,11 +2971,11 @@ select else local.get $4 - local.tee $7 - local.get $6 local.tee $8 - local.get $7 + local.get $6 + local.tee $7 local.get $8 + local.get $7 i32.lt_s select end @@ -2996,11 +2996,11 @@ select else local.get $3 - local.tee $7 - local.get $6 local.tee $8 - local.get $7 + local.get $6 + local.tee $7 local.get $8 + local.get $7 i32.lt_s select end @@ -3102,11 +3102,11 @@ select else local.get $4 - local.tee $7 - local.get $6 local.tee $8 - local.get $7 + local.get $6 + local.tee $7 local.get $8 + local.get $7 i32.lt_s select end @@ -3127,11 +3127,11 @@ select else local.get $3 - local.tee $7 - local.get $6 local.tee $8 - local.get $7 + local.get $6 + local.tee $7 local.get $8 + local.get $7 i32.lt_s select end @@ -3943,11 +3943,11 @@ select else local.get $5 - local.tee $10 - local.get $9 local.tee $11 - local.get $10 + local.get $9 + local.tee $10 local.get $11 + local.get $10 i32.lt_s select end @@ -3968,11 +3968,11 @@ select else local.get $4 - local.tee $10 - local.get $9 local.tee $11 - local.get $10 + local.get $9 + local.tee $10 local.get $11 + local.get $10 i32.lt_s select end @@ -5453,11 +5453,11 @@ select else local.get $4 - local.tee $7 - local.get $6 local.tee $8 - local.get $7 + local.get $6 + local.tee $7 local.get $8 + local.get $7 i32.lt_s select end @@ -5478,11 +5478,11 @@ select else local.get $3 - local.tee $7 - local.get $6 local.tee $8 - local.get $7 + local.get $6 + local.tee $7 local.get $8 + local.get $7 i32.lt_s select end @@ -5567,11 +5567,11 @@ select else local.get $5 - local.tee $10 - local.get $9 local.tee $11 - local.get $10 + local.get $9 + local.tee $10 local.get $11 + local.get $10 i32.lt_s select end @@ -5592,11 +5592,11 @@ select else local.get $4 - local.tee $10 - local.get $9 local.tee $11 - local.get $10 + local.get $9 + local.tee $10 local.get $11 + local.get $10 i32.lt_s select end @@ -5609,8 +5609,8 @@ local.get $5 local.get $4 i32.lt_s - local.set $10 - local.get $10 + local.set $11 + local.get $11 if local.get $8 local.get $5 @@ -5767,11 +5767,11 @@ select else local.get $4 - local.tee $7 - local.get $6 local.tee $8 - local.get $7 + local.get $6 + local.tee $7 local.get $8 + local.get $7 i32.lt_s select end @@ -5792,11 +5792,11 @@ select else local.get $3 - local.tee $7 - local.get $6 local.tee $8 - local.get $7 + local.get $6 + local.tee $7 local.get $8 + local.get $7 i32.lt_s select end @@ -5881,11 +5881,11 @@ local.get $8 local.get $6 i32.add - local.tee $10 - i32.const 0 local.tee $11 - local.get $10 + i32.const 0 + local.tee $10 local.get $11 + local.get $10 i32.gt_s select else @@ -5915,15 +5915,15 @@ select else local.get $5 - local.tee $11 - local.get $8 local.tee $12 - local.get $11 + local.get $8 + local.tee $11 local.get $12 + local.get $11 i32.lt_s select end - local.set $11 + local.set $12 local.get $4 i32.const 0 i32.lt_s @@ -5931,48 +5931,48 @@ local.get $8 local.get $4 i32.add - local.tee $12 + local.tee $11 i32.const 0 local.tee $13 - local.get $12 + local.get $11 local.get $13 i32.gt_s select else local.get $4 - local.tee $12 - local.get $8 local.tee $13 - local.get $12 + local.get $8 + local.tee $11 local.get $13 + local.get $11 i32.lt_s select end - local.set $12 + local.set $13 + local.get $13 local.get $12 - local.get $11 i32.sub - local.tee $13 + local.tee $11 local.get $8 local.get $10 i32.sub local.tee $14 - local.get $13 + local.get $11 local.get $14 i32.lt_s select - local.set $13 + local.set $11 local.get $9 local.get $10 i32.const 2 i32.shl i32.add local.get $9 - local.get $11 + local.get $12 i32.const 2 i32.shl i32.add - local.get $13 + local.get $11 i32.const 2 i32.shl call $~lib/memory/memory.copy @@ -22059,11 +22059,11 @@ select else local.get $4 - local.tee $7 - local.get $6 local.tee $8 - local.get $7 + local.get $6 + local.tee $7 local.get $8 + local.get $7 i32.lt_s select end @@ -22084,11 +22084,11 @@ select else local.get $3 - local.tee $7 - local.get $6 local.tee $8 - local.get $7 + local.get $6 + local.tee $7 local.get $8 + local.get $7 i32.lt_s select end @@ -22409,11 +22409,11 @@ select else local.get $4 - local.tee $7 - local.get $6 local.tee $8 - local.get $7 + local.get $6 + local.tee $7 local.get $8 + local.get $7 i32.lt_s select end @@ -22434,11 +22434,11 @@ select else local.get $3 - local.tee $7 - local.get $6 local.tee $8 - local.get $7 + local.get $6 + local.tee $7 local.get $8 + local.get $7 i32.lt_s select end @@ -22759,11 +22759,11 @@ select else local.get $4 - local.tee $7 - local.get $6 local.tee $8 - local.get $7 + local.get $6 + local.tee $7 local.get $8 + local.get $7 i32.lt_s select end @@ -22784,11 +22784,11 @@ select else local.get $3 - local.tee $7 - local.get $6 local.tee $8 - local.get $7 + local.get $6 + local.tee $7 local.get $8 + local.get $7 i32.lt_s select end @@ -23115,11 +23115,11 @@ select else local.get $4 - local.tee $7 - local.get $6 local.tee $8 - local.get $7 + local.get $6 + local.tee $7 local.get $8 + local.get $7 i32.lt_s select end @@ -23140,11 +23140,11 @@ select else local.get $3 - local.tee $7 - local.get $6 local.tee $8 - local.get $7 + local.get $6 + local.tee $7 local.get $8 + local.get $7 i32.lt_s select end @@ -23702,11 +23702,11 @@ select else local.get $4 - local.tee $7 - local.get $6 local.tee $8 - local.get $7 + local.get $6 + local.tee $7 local.get $8 + local.get $7 i32.lt_s select end @@ -23727,11 +23727,11 @@ select else local.get $3 - local.tee $7 - local.get $6 local.tee $8 - local.get $7 + local.get $6 + local.tee $7 local.get $8 + local.get $7 i32.lt_s select end @@ -24046,11 +24046,11 @@ select else local.get $4 - local.tee $7 - local.get $6 local.tee $8 - local.get $7 + local.get $6 + local.tee $7 local.get $8 + local.get $7 i32.lt_s select end @@ -24071,11 +24071,11 @@ select else local.get $3 - local.tee $7 - local.get $6 local.tee $8 - local.get $7 + local.get $6 + local.tee $7 local.get $8 + local.get $7 i32.lt_s select end @@ -24393,11 +24393,11 @@ select else local.get $4 - local.tee $7 - local.get $6 local.tee $8 - local.get $7 + local.get $6 + local.tee $7 local.get $8 + local.get $7 i32.lt_s select end @@ -24418,11 +24418,11 @@ select else local.get $3 - local.tee $7 - local.get $6 local.tee $8 - local.get $7 + local.get $6 + local.tee $7 local.get $8 + local.get $7 i32.lt_s select end @@ -24740,11 +24740,11 @@ select else local.get $4 - local.tee $7 - local.get $6 local.tee $8 - local.get $7 + local.get $6 + local.tee $7 local.get $8 + local.get $7 i32.lt_s select end @@ -24765,11 +24765,11 @@ select else local.get $3 - local.tee $7 - local.get $6 local.tee $8 - local.get $7 + local.get $6 + local.tee $7 local.get $8 + local.get $7 i32.lt_s select end @@ -33703,11 +33703,11 @@ local.get $5 i32.gt_s select - local.tee $4 - local.get $3 local.tee $5 - local.get $4 + local.get $3 + local.tee $4 local.get $5 + local.get $4 i32.lt_s select local.set $6 @@ -33719,11 +33719,11 @@ local.get $5 i32.gt_s select - local.tee $4 - local.get $3 local.tee $5 - local.get $4 + local.get $3 + local.tee $4 local.get $5 + local.get $4 i32.lt_s select local.set $7 @@ -33739,11 +33739,11 @@ i32.shl local.set $8 local.get $6 - local.tee $4 - local.get $7 local.tee $5 - local.get $4 + local.get $7 + local.tee $4 local.get $5 + local.get $4 i32.gt_s select i32.const 1 @@ -39329,11 +39329,11 @@ select else local.get $1 - local.tee $4 - local.get $3 local.tee $5 - local.get $4 + local.get $3 + local.tee $4 local.get $5 + local.get $4 i32.lt_s select end @@ -39354,11 +39354,11 @@ select else local.get $2 - local.tee $4 - local.get $3 local.tee $5 - local.get $4 + local.get $3 + local.tee $4 local.get $5 + local.get $4 i32.lt_s select end