From 1a07414c4be61c33abe1648f5daea6bfd89b7f0d Mon Sep 17 00:00:00 2001 From: dcode Date: Fri, 21 Feb 2020 14:01:14 +0100 Subject: [PATCH] Decouple Array from ArrayBufferView --- lib/loader/index.js | 4 +- lib/loader/tests/build/default.wasm | Bin 9212 -> 9214 bytes lib/loader/tests/build/legacy.wasm | Bin 9212 -> 9214 bytes src/builtins.ts | 5 +- src/program.ts | 5 +- std/assembly/array.ts | 23 +- tests/compiler/assert-nonnull.optimized.wat | 6 +- tests/compiler/assert-nonnull.untouched.wat | 6 +- tests/compiler/builtins.optimized.wat | 4 +- tests/compiler/builtins.untouched.wat | 4 +- .../extends-baseaggregate.optimized.wat | 52 +- .../extends-baseaggregate.untouched.wat | 67 +- tests/compiler/infer-array.optimized.wat | 4 +- tests/compiler/infer-array.untouched.wat | 18 +- tests/compiler/resolve-access.optimized.wat | 2 +- tests/compiler/resolve-access.untouched.wat | 2 +- tests/compiler/resolve-ternary.optimized.wat | 51 +- tests/compiler/resolve-ternary.untouched.wat | 76 +- .../retain-release-sanity.optimized.wat | 528 +++-- .../retain-release-sanity.untouched.wat | 437 ++-- tests/compiler/rt/flags.optimized.wat | 30 +- tests/compiler/rt/flags.ts | 26 +- tests/compiler/rt/flags.untouched.wat | 28 +- tests/compiler/std/array-access.optimized.wat | 6 +- tests/compiler/std/array-access.untouched.wat | 14 +- .../compiler/std/array-literal.optimized.wat | 72 +- .../compiler/std/array-literal.untouched.wat | 87 +- tests/compiler/std/array.optimized.wat | 1794 ++++++++-------- tests/compiler/std/array.ts | 6 + tests/compiler/std/array.untouched.wat | 1886 ++++++++++------- tests/compiler/std/arraybuffer.optimized.wat | 56 +- tests/compiler/std/arraybuffer.untouched.wat | 52 +- tests/compiler/std/map.optimized.wat | 1302 ++++++++---- tests/compiler/std/map.untouched.wat | 1561 +++++++++----- tests/compiler/std/set.optimized.wat | 1180 ++++++++--- tests/compiler/std/set.untouched.wat | 1343 ++++++++---- tests/compiler/std/static-array.optimized.wat | 8 +- tests/compiler/std/static-array.untouched.wat | 16 +- tests/compiler/std/string.optimized.wat | 46 +- tests/compiler/std/string.untouched.wat | 132 +- tests/compiler/std/typedarray.optimized.wat | 53 +- tests/compiler/std/typedarray.untouched.wat | 155 +- 42 files changed, 6981 insertions(+), 4166 deletions(-) diff --git a/lib/loader/index.js b/lib/loader/index.js index 7e5d56b42b..8a70db69d7 100644 --- a/lib/loader/index.js +++ b/lib/loader/index.js @@ -159,7 +159,7 @@ function postInstantiate(baseModule, instance) { /** Allocates a new array in the module's memory and returns its retained pointer. */ function __allocArray(id, values) { const info = getInfo(id); - if (!(info & (ARRAYBUFFERVIEW | ARRAY))) throw Error("not an array: " + id + " @ " + info); + if (!(info & (ARRAYBUFFERVIEW | ARRAY))) throw Error("not an array: " + id + ", flags= " + info); const align = getValueAlign(info); const length = values.length; const buf = alloc(length << align, ARRAYBUFFER_ID); @@ -185,7 +185,7 @@ function postInstantiate(baseModule, instance) { const U32 = new Uint32Array(memory.buffer); const id = U32[arr + ID_OFFSET >>> 2]; const info = getInfo(id); - if (!(info & ARRAYBUFFERVIEW)) throw Error("not an array: " + id); + if (!(info & (ARRAYBUFFERVIEW | ARRAY))) throw Error("not an array: " + id + ", flags=" + info); const align = getValueAlign(info); var buf = U32[arr + ARRAYBUFFERVIEW_DATASTART_OFFSET >>> 2]; const length = info & ARRAY diff --git a/lib/loader/tests/build/default.wasm b/lib/loader/tests/build/default.wasm index fa94a9755a4691c596ac10adea07ae6fdb1d528e..be768a17f9ec11c0e0f0d25d75dc05f53e54805c 100644 GIT binary patch delta 101 zcmez4{?C0wIWyz7%@xc>vI5);3Je-d3<`__7Tgt#jP;YZC>Tu^RFqa{;AY@vasWXE ekgO#?Pym9!!Z7w`9mNAo0+U!6z(4>(F#rGuZ4Va! delta 99 zcmez8{>OboIWyyy%@xc>vRupzjNEmMjP*vI5);3Je-d3<`__7Tgt#jP;YZC>Tu^RFqa{;AY@vasWXE ekgO#?Pym9!!Z7w`9mNAo0+U!6z(4>(F#rGuZ4Va! delta 99 zcmez8{>OboIWyyy%@xc>vRupzjNEmMjP*(array).byteLength; if (minSize > oldCapacity >>> alignLog2) { if (minSize > BLOCK_MAXSIZE >>> alignLog2) throw new RangeError(E_INVALIDLENGTH); @@ -24,12 +24,17 @@ function ensureSize(array: usize, minSize: usize, alignLog2: u32): void { } } -export class Array extends ArrayBufferView { +export class Array { [key: number]: T; - // Implementing ArrayBufferView isn't strictly necessary here but is done to allow glue code + // Mimicking ArrayBufferView isn't strictly necessary here but is done to allow glue code // to work with typed and normal arrays interchangeably. Technically, normal arrays do not need - // `dataStart` (equals `data`) and `dataLength` (equals computed `data.byteLength`). + // `dataStart` (equals `buffer`) and `byteLength` (equals computed `buffer.byteLength`), but the + // block is 16 bytes anyway so it's fine to have a couple extra fields in there. + + private buffer: ArrayBuffer; + private dataStart: usize; + private byteLength: i32; // Also note that Array with non-nullable T must guard against uninitialized null values // whenever an element is accessed. Otherwise, the compiler wouldn't be able to guarantee @@ -49,7 +54,13 @@ export class Array extends ArrayBufferView { } constructor(length: i32 = 0) { - super(length, alignof()); + if (length > BLOCK_MAXSIZE >>> alignof()) throw new RangeError(E_INVALIDLENGTH); + var bufferSize = length << alignof(); + var buffer = __alloc(bufferSize, idof()); + memory.fill(buffer, 0, bufferSize); + this.buffer = changetype(buffer); // retains + this.dataStart = buffer; + this.byteLength = bufferSize; this.length_ = length; } @@ -498,6 +509,6 @@ export class Array extends ArrayBufferView { cur += sizeof(); } } - // automatically visits ArrayBufferView (.buffer) next + __visit(changetype(this.buffer), cookie); } } diff --git a/tests/compiler/assert-nonnull.optimized.wat b/tests/compiler/assert-nonnull.optimized.wat index 041fbf0e86..fa00df2352 100644 --- a/tests/compiler/assert-nonnull.optimized.wat +++ b/tests/compiler/assert-nonnull.optimized.wat @@ -80,7 +80,7 @@ if i32.const 96 i32.const 160 - i32.const 93 + i32.const 104 i32.const 41 call $~lib/builtins/abort unreachable @@ -92,7 +92,7 @@ if i32.const 208 i32.const 160 - i32.const 97 + i32.const 108 i32.const 39 call $~lib/builtins/abort unreachable @@ -121,7 +121,7 @@ if i32.const 96 i32.const 160 - i32.const 93 + i32.const 104 i32.const 41 call $~lib/builtins/abort unreachable diff --git a/tests/compiler/assert-nonnull.untouched.wat b/tests/compiler/assert-nonnull.untouched.wat index fd2c4c4913..ebbf8954a2 100644 --- a/tests/compiler/assert-nonnull.untouched.wat +++ b/tests/compiler/assert-nonnull.untouched.wat @@ -122,7 +122,7 @@ if i32.const 96 i32.const 160 - i32.const 93 + i32.const 104 i32.const 41 call $~lib/builtins/abort unreachable @@ -138,7 +138,7 @@ call $~lib/rt/stub/__release i32.const 208 i32.const 160 - i32.const 97 + i32.const 108 i32.const 39 call $~lib/builtins/abort unreachable @@ -188,7 +188,7 @@ if i32.const 96 i32.const 160 - i32.const 93 + i32.const 104 i32.const 41 call $~lib/builtins/abort unreachable diff --git a/tests/compiler/builtins.optimized.wat b/tests/compiler/builtins.optimized.wat index 8f2cbd9da1..a3ac08a301 100644 --- a/tests/compiler/builtins.optimized.wat +++ b/tests/compiler/builtins.optimized.wat @@ -605,8 +605,8 @@ f64.const 0 f64.const 0 f64.const 12 - f64.const 23 - f64.const 23 + f64.const 24 + f64.const 24 call $~lib/builtins/trace i32.const 208 i32.const 208 diff --git a/tests/compiler/builtins.untouched.wat b/tests/compiler/builtins.untouched.wat index fc9bc709a1..9078460fbe 100644 --- a/tests/compiler/builtins.untouched.wat +++ b/tests/compiler/builtins.untouched.wat @@ -1563,9 +1563,9 @@ local.set $1 i32.const 12 local.set $6 - i32.const 23 + i32.const 24 local.set $7 - i32.const 23 + i32.const 24 local.set $8 i32.const 128 i32.const 5 diff --git a/tests/compiler/extends-baseaggregate.optimized.wat b/tests/compiler/extends-baseaggregate.optimized.wat index bfee7a0532..b143c987ff 100644 --- a/tests/compiler/extends-baseaggregate.optimized.wat +++ b/tests/compiler/extends-baseaggregate.optimized.wat @@ -22,7 +22,7 @@ (data (i32.const 368) "$\00\00\00\01\00\00\00\01\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e") (data (i32.const 432) "\14\00\00\00\01\00\00\00\01\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s") (data (i32.const 480) "\t\00\00\00\10\00\00\00\00\00\00\00\10\00\00\00\00\00\00\00\10\00\00\00\00\00\00\00\10\00\00\00\00\00\00\00\10") - (data (i32.const 536) "\04\00\00\00\93 \00\00\02\00\00\00\93 \00\00\02") + (data (i32.const 536) "\04\00\00\00\92 \00\00\00\00\00\00\92 ") (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) (global $~lib/rt/tlsf/collectLock (mut i32) (i32.const 0)) (global $~lib/rt/pure/ROOTS (mut i32) (i32.const 0)) @@ -2276,6 +2276,7 @@ (func $~lib/array/Array#__visit_impl (; 33 ;) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) + (local $4 i32) local.get $0 i32.load offset=4 local.tee $2 @@ -2284,17 +2285,17 @@ i32.const 2 i32.shl i32.add - local.set $0 + local.set $3 loop $while-continue|0 local.get $2 - local.get $0 + local.get $3 i32.lt_u if local.get $2 i32.load - local.tee $3 + local.tee $4 if - local.get $3 + local.get $4 local.get $1 call $~lib/rt/pure/__visit end @@ -2305,24 +2306,28 @@ br $while-continue|0 end end + local.get $0 + i32.load + local.get $1 + call $~lib/rt/pure/__visit ) (func $~lib/rt/__visit_members (; 34 ;) (param $0 i32) (param $1 i32) - block $block$4$break - block $switch$1$default - block $switch$1$case$10 - block $switch$1$case$9 - block $switch$1$case$6 + block $switch$1$default + block $switch$1$case$10 + block $switch$1$case$9 + block $switch$1$case$6 + block $switch$1$case$4 block $switch$1$case$2 local.get $0 i32.const 8 i32.sub i32.load - br_table $switch$1$case$2 $switch$1$case$2 $block$4$break $block$4$break $switch$1$case$6 $block$4$break $switch$1$case$6 $switch$1$case$9 $switch$1$case$10 $switch$1$default + br_table $switch$1$case$2 $switch$1$case$2 $switch$1$case$4 $switch$1$case$4 $switch$1$case$6 $switch$1$case$4 $switch$1$case$6 $switch$1$case$9 $switch$1$case$10 $switch$1$default end return end local.get $0 - i32.load offset=16 + i32.load local.tee $0 if local.get $0 @@ -2332,24 +2337,25 @@ return end local.get $0 - local.get $1 - call $~lib/array/Array#__visit_impl - br $block$4$break + i32.load offset=16 + local.tee $0 + if + local.get $0 + local.get $1 + call $~lib/rt/pure/__visit + end + return end local.get $0 local.get $1 call $~lib/array/Array#__visit_impl - br $block$4$break + return end - unreachable - end - local.get $0 - i32.load - local.tee $0 - if local.get $0 local.get $1 - call $~lib/rt/pure/__visit + call $~lib/array/Array#__visit_impl + return end + unreachable ) ) diff --git a/tests/compiler/extends-baseaggregate.untouched.wat b/tests/compiler/extends-baseaggregate.untouched.wat index d884895242..06c0ac7ef0 100644 --- a/tests/compiler/extends-baseaggregate.untouched.wat +++ b/tests/compiler/extends-baseaggregate.untouched.wat @@ -21,7 +21,7 @@ (data (i32.const 320) "\1a\00\00\00\01\00\00\00\01\00\00\00\1a\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00.\00t\00s\00") (data (i32.const 368) "$\00\00\00\01\00\00\00\01\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e\00") (data (i32.const 432) "\14\00\00\00\01\00\00\00\01\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s\00") - (data (i32.const 480) "\t\00\00\00\10\00\00\00\00\00\00\00\10\00\00\00\00\00\00\00\10\00\00\00\00\00\00\00\10\00\00\00\00\00\00\00\10\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\04\00\00\00\93 \00\00\02\00\00\00\93 \00\00\02\00\00\00") + (data (i32.const 480) "\t\00\00\00\10\00\00\00\00\00\00\00\10\00\00\00\00\00\00\00\10\00\00\00\00\00\00\00\10\00\00\00\00\00\00\00\10\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\04\00\00\00\92 \00\00\00\00\00\00\92 \00\00\00\00\00\00") (table $0 1 funcref) (global $extends-baseaggregate/poolB i32 (i32.const 48)) (global $extends-baseaggregate/poolA i32 (i32.const 96)) @@ -3941,6 +3941,10 @@ br $while-continue|0 end end + local.get $0 + i32.load + local.get $1 + call $~lib/rt/pure/__visit ) (func $~lib/array/Array#__visit_impl (; 39 ;) (param $0 i32) (param $1 i32) (local $2 i32) @@ -3980,28 +3984,29 @@ br $while-continue|0 end end + local.get $0 + i32.load + local.get $1 + call $~lib/rt/pure/__visit ) (func $~lib/rt/__visit_members (; 40 ;) (param $0 i32) (param $1 i32) (local $2 i32) - block $block$4$break - block $switch$1$default - block $switch$1$case$10 - block $switch$1$case$9 - block $switch$1$case$6 - block $switch$1$case$4 - block $switch$1$case$2 - local.get $0 - i32.const 8 - i32.sub - i32.load - br_table $switch$1$case$2 $switch$1$case$2 $switch$1$case$4 $switch$1$case$4 $switch$1$case$6 $switch$1$case$4 $switch$1$case$6 $switch$1$case$9 $switch$1$case$10 $switch$1$default - end - return + block $switch$1$default + block $switch$1$case$10 + block $switch$1$case$9 + block $switch$1$case$6 + block $switch$1$case$4 + block $switch$1$case$2 + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $switch$1$case$2 $switch$1$case$2 $switch$1$case$4 $switch$1$case$4 $switch$1$case$6 $switch$1$case$4 $switch$1$case$6 $switch$1$case$9 $switch$1$case$10 $switch$1$default end - br $block$4$break + return end local.get $0 - i32.load offset=16 + i32.load local.tee $2 if local.get $2 @@ -4011,25 +4016,25 @@ return end local.get $0 - local.get $1 - call $~lib/array/Array#__visit_impl - br $block$4$break + i32.load offset=16 + local.tee $2 + if + local.get $2 + local.get $1 + call $~lib/rt/pure/__visit + end + return end local.get $0 local.get $1 - call $~lib/array/Array#__visit_impl - br $block$4$break + call $~lib/array/Array#__visit_impl + return end - unreachable - end - local.get $0 - i32.load - local.tee $2 - if - local.get $2 + local.get $0 local.get $1 - call $~lib/rt/pure/__visit + call $~lib/array/Array#__visit_impl + return end - return + unreachable ) ) diff --git a/tests/compiler/infer-array.optimized.wat b/tests/compiler/infer-array.optimized.wat index c97244c34c..8d6de90b53 100644 --- a/tests/compiler/infer-array.optimized.wat +++ b/tests/compiler/infer-array.optimized.wat @@ -332,7 +332,7 @@ if i32.const 64 i32.const 128 - i32.const 93 + i32.const 104 i32.const 41 call $~lib/builtins/abort unreachable @@ -351,7 +351,7 @@ if i32.const 64 i32.const 128 - i32.const 93 + i32.const 104 i32.const 41 call $~lib/builtins/abort unreachable diff --git a/tests/compiler/infer-array.untouched.wat b/tests/compiler/infer-array.untouched.wat index 69a43d7834..fcbf775871 100644 --- a/tests/compiler/infer-array.untouched.wat +++ b/tests/compiler/infer-array.untouched.wat @@ -1444,7 +1444,7 @@ if i32.const 64 i32.const 128 - i32.const 93 + i32.const 104 i32.const 41 call $~lib/builtins/abort unreachable @@ -1476,7 +1476,7 @@ if i32.const 64 i32.const 128 - i32.const 93 + i32.const 104 i32.const 41 call $~lib/builtins/abort unreachable @@ -1505,7 +1505,7 @@ if i32.const 64 i32.const 128 - i32.const 93 + i32.const 104 i32.const 41 call $~lib/builtins/abort unreachable @@ -1534,7 +1534,7 @@ if i32.const 64 i32.const 128 - i32.const 93 + i32.const 104 i32.const 41 call $~lib/builtins/abort unreachable @@ -1576,7 +1576,7 @@ if i32.const 64 i32.const 128 - i32.const 93 + i32.const 104 i32.const 41 call $~lib/builtins/abort unreachable @@ -1606,7 +1606,7 @@ if i32.const 64 i32.const 128 - i32.const 93 + i32.const 104 i32.const 41 call $~lib/builtins/abort unreachable @@ -1635,7 +1635,7 @@ if i32.const 64 i32.const 128 - i32.const 93 + i32.const 104 i32.const 41 call $~lib/builtins/abort unreachable @@ -1665,7 +1665,7 @@ if i32.const 64 i32.const 128 - i32.const 93 + i32.const 104 i32.const 41 call $~lib/builtins/abort unreachable @@ -1681,7 +1681,7 @@ call $~lib/rt/stub/__release i32.const 640 i32.const 128 - i32.const 97 + i32.const 108 i32.const 39 call $~lib/builtins/abort unreachable diff --git a/tests/compiler/resolve-access.optimized.wat b/tests/compiler/resolve-access.optimized.wat index 7f447fd521..598fa503de 100644 --- a/tests/compiler/resolve-access.optimized.wat +++ b/tests/compiler/resolve-access.optimized.wat @@ -313,7 +313,7 @@ if i32.const 64 i32.const 128 - i32.const 93 + i32.const 104 i32.const 41 call $~lib/builtins/abort unreachable diff --git a/tests/compiler/resolve-access.untouched.wat b/tests/compiler/resolve-access.untouched.wat index 2489d8dbc8..8f20046f38 100644 --- a/tests/compiler/resolve-access.untouched.wat +++ b/tests/compiler/resolve-access.untouched.wat @@ -1439,7 +1439,7 @@ if i32.const 64 i32.const 128 - i32.const 93 + i32.const 104 i32.const 41 call $~lib/builtins/abort unreachable diff --git a/tests/compiler/resolve-ternary.optimized.wat b/tests/compiler/resolve-ternary.optimized.wat index a81d570c72..d5aa677e46 100644 --- a/tests/compiler/resolve-ternary.optimized.wat +++ b/tests/compiler/resolve-ternary.optimized.wat @@ -29,7 +29,7 @@ (data (i32.const 1488) "\10\00\00\00\01\00\00\00\05\00\00\00\10\00\00\00\a0\05\00\00\a0\05\00\00(\00\00\00\n") (data (i32.const 1524) "\01\00\00\00\01") (data (i32.const 1536) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\001\00.\000") - (data (i32.const 1568) "\06\00\00\00\10\00\00\00\00\00\00\00\10\00\00\00\00\00\00\00\10\00\00\00\00\00\00\00\13\01\00\00\02\00\00\00S\04\00\00\02\00\00\00\93\00\00\00\02") + (data (i32.const 1568) "\06\00\00\00\10\00\00\00\00\00\00\00\10\00\00\00\00\00\00\00\10\00\00\00\00\00\00\00\12\01\00\00\00\00\00\00R\04\00\00\00\00\00\00\92") (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) (global $~lib/rt/tlsf/collectLock (mut i32) (i32.const 0)) (global $~lib/util/number/_frc_plus (mut i64) (i64.const 0)) @@ -2615,15 +2615,37 @@ i32.store offset=4 end ) - (func $~lib/rt/__visit_members (; 35 ;) (param $0 i32) - block $block$4$break + (func $~lib/rt/pure/__visit (; 35 ;) (param $0 i32) + local.get $0 + i32.const 1620 + i32.lt_u + if + return + end + local.get $0 + i32.const 16 + i32.sub + call $~lib/rt/pure/decrement + ) + (func $~lib/rt/__visit_members (; 36 ;) (param $0 i32) + block $folding-inner0 block $switch$1$default - block $switch$1$case$2 + block $switch$1$case$4 + block $switch$1$case$2 + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $switch$1$case$2 $switch$1$case$2 $switch$1$case$4 $folding-inner0 $folding-inner0 $folding-inner0 $switch$1$default + end + return + end + local.get $0 + i32.load + local.tee $0 + if local.get $0 - i32.const 8 - i32.sub - i32.load - br_table $switch$1$case$2 $switch$1$case$2 $block$4$break $block$4$break $block$4$break $block$4$break $switch$1$default + call $~lib/rt/pure/__visit end return end @@ -2631,17 +2653,6 @@ end local.get $0 i32.load - local.tee $0 - if - local.get $0 - i32.const 1620 - i32.ge_u - if - local.get $0 - i32.const 16 - i32.sub - call $~lib/rt/pure/decrement - end - end + call $~lib/rt/pure/__visit ) ) diff --git a/tests/compiler/resolve-ternary.untouched.wat b/tests/compiler/resolve-ternary.untouched.wat index ac8b01b6de..88f227d5d2 100644 --- a/tests/compiler/resolve-ternary.untouched.wat +++ b/tests/compiler/resolve-ternary.untouched.wat @@ -36,7 +36,7 @@ (data (i32.const 1936) "\10\00\00\00\01\00\00\00\03\00\00\00\10\00\00\00`\07\00\00`\07\00\00(\00\00\00\n\00\00\00") (data (i32.const 1968) "\00\00\00\00\01\00\00\00\01\00\00\00\00\00\00\00") (data (i32.const 1984) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\001\00.\000\00") - (data (i32.const 2016) "\06\00\00\00\10\00\00\00\00\00\00\00\10\00\00\00\00\00\00\00\10\00\00\00\00\00\00\00\93\00\00\00\02\00\00\00\13\01\00\00\02\00\00\00S\04\00\00\02\00\00\00") + (data (i32.const 2016) "\06\00\00\00\10\00\00\00\00\00\00\00\10\00\00\00\00\00\00\00\10\00\00\00\00\00\00\00\92\00\00\00\00\00\00\00\12\01\00\00\00\00\00\00R\04\00\00\00\00\00\00") (table $0 5 funcref) (elem (i32.const 1) $start:resolve-ternary~anonymous|0 $start:resolve-ternary~anonymous|1 $resolve-ternary/g1 $resolve-ternary/g2) (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) @@ -4957,58 +4957,64 @@ call $~lib/rt/pure/decrement ) (func $~lib/array/Array#__visit_impl (; 45 ;) (param $0 i32) (param $1 i32) - nop + local.get $0 + i32.load + local.get $1 + call $~lib/rt/pure/__visit ) (func $~lib/array/Array#__visit_impl (; 46 ;) (param $0 i32) (param $1 i32) - nop + local.get $0 + i32.load + local.get $1 + call $~lib/rt/pure/__visit ) (func $~lib/array/Array#__visit_impl (; 47 ;) (param $0 i32) (param $1 i32) - nop + local.get $0 + i32.load + local.get $1 + call $~lib/rt/pure/__visit ) (func $~lib/rt/__visit_members (; 48 ;) (param $0 i32) (param $1 i32) (local $2 i32) - block $block$4$break - block $switch$1$default - block $switch$1$case$7 - block $switch$1$case$6 - block $switch$1$case$5 - block $switch$1$case$4 - block $switch$1$case$2 - local.get $0 - i32.const 8 - i32.sub - i32.load - br_table $switch$1$case$2 $switch$1$case$2 $switch$1$case$4 $switch$1$case$5 $switch$1$case$6 $switch$1$case$7 $switch$1$default - end - return + block $switch$1$default + block $switch$1$case$7 + block $switch$1$case$6 + block $switch$1$case$5 + block $switch$1$case$4 + block $switch$1$case$2 + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $switch$1$case$2 $switch$1$case$2 $switch$1$case$4 $switch$1$case$5 $switch$1$case$6 $switch$1$case$7 $switch$1$default end - br $block$4$break + return end local.get $0 - local.get $1 - call $~lib/array/Array#__visit_impl - br $block$4$break + i32.load + local.tee $2 + if + local.get $2 + local.get $1 + call $~lib/rt/pure/__visit + end + return end local.get $0 local.get $1 - call $~lib/array/Array#__visit_impl - br $block$4$break + call $~lib/array/Array#__visit_impl + return end local.get $0 local.get $1 - call $~lib/array/Array#__visit_impl - br $block$4$break + call $~lib/array/Array#__visit_impl + return end - unreachable - end - local.get $0 - i32.load - local.tee $2 - if - local.get $2 + local.get $0 local.get $1 - call $~lib/rt/pure/__visit + call $~lib/array/Array#__visit_impl + return end - return + unreachable ) ) diff --git a/tests/compiler/retain-release-sanity.optimized.wat b/tests/compiler/retain-release-sanity.optimized.wat index 5597a09b0e..f6e2042c11 100644 --- a/tests/compiler/retain-release-sanity.optimized.wat +++ b/tests/compiler/retain-release-sanity.optimized.wat @@ -2,12 +2,12 @@ (type $i32_=>_none (func (param i32))) (type $i32_i32_=>_none (func (param i32 i32))) (type $i32_=>_i32 (func (param i32) (result i32))) - (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) (type $none_=>_none (func)) + (type $none_=>_i32 (func (result i32))) + (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) (type $i32_i32_i32_=>_none (func (param i32 i32 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 $none_=>_i32 (func (result i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (import "rtrace" "onalloc" (func $~lib/rt/rtrace/onalloc (param i32))) (import "rtrace" "onincrement" (func $~lib/rt/rtrace/onincrement (param i32))) @@ -16,20 +16,19 @@ (import "rtrace" "ondecrement" (func $~lib/rt/rtrace/ondecrement (param i32))) (memory $0 1) (data (i32.const 16) "\1c\00\00\00\01\00\00\00\01\00\00\00\1c\00\00\00I\00n\00v\00a\00l\00i\00d\00 \00l\00e\00n\00g\00t\00h") - (data (i32.const 64) "&\00\00\00\01\00\00\00\01\00\00\00&\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00b\00u\00f\00f\00e\00r\00.\00t\00s") - (data (i32.const 128) "\1e\00\00\00\01\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s") - (data (i32.const 176) "(\00\00\00\01\00\00\00\01\00\00\00(\00\00\00a\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e") - (data (i32.const 240) "\1e\00\00\00\01\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00p\00u\00r\00e\00.\00t\00s") - (data (i32.const 288) "\1a\00\00\00\01\00\00\00\01\00\00\00\1a\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00.\00t\00s") - (data (i32.const 336) "\1c\00\00\00\01\00\00\00\01\00\00\00\1c\00\00\00A\00r\00r\00a\00y\00 \00i\00s\00 \00e\00m\00p\00t\00y") - (data (i32.const 388) "\01\00\00\00\01") - (data (i32.const 400) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00a") - (data (i32.const 432) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00b") - (data (i32.const 464) "\08\00\00\00\01\00\00\00\01\00\00\00\08\00\00\00n\00u\00l\00l") - (data (i32.const 496) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00d") - (data (i32.const 528) "$\00\00\00\01\00\00\00\01\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e") - (data (i32.const 592) "\14\00\00\00\01\00\00\00\01\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s") - (data (i32.const 640) "\08\00\00\00\10\00\00\00\00\00\00\00\10\00\00\00\00\00\00\00\10\00\00\00\00\00\00\00\93\04\00\00\02\00\00\00\93 \00\00\02\00\00\00\93 \00\00\02") + (data (i32.const 64) "\1a\00\00\00\01\00\00\00\01\00\00\00\1a\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00.\00t\00s") + (data (i32.const 112) "\1e\00\00\00\01\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s") + (data (i32.const 160) "(\00\00\00\01\00\00\00\01\00\00\00(\00\00\00a\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e") + (data (i32.const 224) "\1e\00\00\00\01\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00p\00u\00r\00e\00.\00t\00s") + (data (i32.const 272) "\1c\00\00\00\01\00\00\00\01\00\00\00\1c\00\00\00A\00r\00r\00a\00y\00 \00i\00s\00 \00e\00m\00p\00t\00y") + (data (i32.const 324) "\01\00\00\00\01") + (data (i32.const 336) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00a") + (data (i32.const 368) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00b") + (data (i32.const 400) "\08\00\00\00\01\00\00\00\01\00\00\00\08\00\00\00n\00u\00l\00l") + (data (i32.const 432) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00d") + (data (i32.const 464) "$\00\00\00\01\00\00\00\01\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e") + (data (i32.const 528) "\14\00\00\00\01\00\00\00\01\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s") + (data (i32.const 576) "\08\00\00\00\10\00\00\00\00\00\00\00\10\00\00\00\00\00\00\00\10\00\00\00\00\00\00\00\92\04\00\00\00\00\00\00\92 \00\00\00\00\00\00\92 ") (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) (global $~lib/rt/tlsf/collectLock (mut i32) (i32.const 0)) (global $~lib/rt/pure/ROOTS (mut i32) (i32.const 0)) @@ -50,7 +49,7 @@ i32.eqz if i32.const 0 - i32.const 144 + i32.const 128 i32.const 277 i32.const 13 call $~lib/builtins/abort @@ -72,7 +71,7 @@ i32.eqz if i32.const 0 - i32.const 144 + i32.const 128 i32.const 279 i32.const 13 call $~lib/builtins/abort @@ -117,7 +116,7 @@ i32.eqz if i32.const 0 - i32.const 144 + i32.const 128 i32.const 292 i32.const 13 call $~lib/builtins/abort @@ -214,7 +213,7 @@ i32.eqz if i32.const 0 - i32.const 144 + i32.const 128 i32.const 205 i32.const 13 call $~lib/builtins/abort @@ -228,7 +227,7 @@ i32.eqz if i32.const 0 - i32.const 144 + i32.const 128 i32.const 207 i32.const 13 call $~lib/builtins/abort @@ -301,7 +300,7 @@ i32.eqz if i32.const 0 - i32.const 144 + i32.const 128 i32.const 228 i32.const 15 call $~lib/builtins/abort @@ -356,7 +355,7 @@ i32.eqz if i32.const 0 - i32.const 144 + i32.const 128 i32.const 243 i32.const 13 call $~lib/builtins/abort @@ -371,7 +370,7 @@ i32.ne if i32.const 0 - i32.const 144 + i32.const 128 i32.const 244 i32.const 13 call $~lib/builtins/abort @@ -421,7 +420,7 @@ i32.eqz if i32.const 0 - i32.const 144 + i32.const 128 i32.const 260 i32.const 13 call $~lib/builtins/abort @@ -507,7 +506,7 @@ i32.eqz if i32.const 0 - i32.const 144 + i32.const 128 i32.const 386 i32.const 4 call $~lib/builtins/abort @@ -524,7 +523,7 @@ i32.lt_u if i32.const 0 - i32.const 144 + i32.const 128 i32.const 396 i32.const 15 call $~lib/builtins/abort @@ -552,7 +551,7 @@ i32.lt_u if i32.const 0 - i32.const 144 + i32.const 128 i32.const 408 i32.const 4 call $~lib/builtins/abort @@ -625,11 +624,11 @@ if unreachable end - i32.const 720 + i32.const 656 local.tee $0 i32.const 0 i32.store - i32.const 2288 + i32.const 2224 i32.const 0 i32.store loop $for-loop|0 @@ -640,7 +639,7 @@ local.get $1 i32.const 2 i32.shl - i32.const 720 + i32.const 656 i32.add i32.const 0 i32.store offset=4 @@ -658,7 +657,7 @@ i32.add i32.const 2 i32.shl - i32.const 720 + i32.const 656 i32.add i32.const 0 i32.store offset=96 @@ -676,13 +675,13 @@ br $for-loop|0 end end - i32.const 720 - i32.const 2304 + i32.const 656 + i32.const 2240 memory.size i32.const 16 i32.shl call $~lib/rt/tlsf/addMemory - i32.const 720 + i32.const 656 global.set $~lib/rt/tlsf/ROOT end local.get $0 @@ -692,8 +691,8 @@ i32.const 1073741808 i32.ge_u if - i32.const 192 - i32.const 144 + i32.const 176 + i32.const 128 i32.const 457 i32.const 29 call $~lib/builtins/abort @@ -768,7 +767,7 @@ i32.eqz if i32.const 0 - i32.const 144 + i32.const 128 i32.const 338 i32.const 13 call $~lib/builtins/abort @@ -820,7 +819,7 @@ i32.eqz if i32.const 0 - i32.const 144 + i32.const 128 i32.const 351 i32.const 17 call $~lib/builtins/abort @@ -915,7 +914,7 @@ i32.and if i32.const 0 - i32.const 144 + i32.const 128 i32.const 365 i32.const 13 call $~lib/builtins/abort @@ -986,7 +985,7 @@ global.get $~lib/rt/tlsf/collectLock if i32.const 0 - i32.const 144 + i32.const 128 i32.const 490 i32.const 13 call $~lib/builtins/abort @@ -1021,7 +1020,7 @@ i32.eqz if i32.const 0 - i32.const 144 + i32.const 128 i32.const 502 i32.const 19 call $~lib/builtins/abort @@ -1037,7 +1036,7 @@ i32.lt_u if i32.const 0 - i32.const 144 + i32.const 128 i32.const 510 i32.const 13 call $~lib/builtins/abort @@ -1297,7 +1296,7 @@ i32.ne if i32.const 0 - i32.const 256 + i32.const 240 i32.const 109 i32.const 2 call $~lib/builtins/abort @@ -1316,7 +1315,7 @@ i32.and if i32.const 0 - i32.const 256 + i32.const 240 i32.const 112 i32.const 13 call $~lib/builtins/abort @@ -1325,7 +1324,7 @@ ) (func $~lib/rt/pure/__retain (; 18 ;) (param $0 i32) (result i32) local.get $0 - i32.const 708 + i32.const 644 i32.gt_u if local.get $0 @@ -1337,7 +1336,7 @@ ) (func $~lib/rt/pure/__release (; 19 ;) (param $0 i32) local.get $0 - i32.const 708 + i32.const 644 i32.gt_u if local.get $0 @@ -1346,40 +1345,22 @@ call $~lib/rt/pure/decrement end ) - (func $~lib/arraybuffer/ArrayBufferView#constructor (; 20 ;) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array#constructor (; 20 ;) (result i32) + (local $0 i32) + (local $1 i32) (local $2 i32) (local $3 i32) - (local $4 i32) - local.get $1 - i32.const 268435452 - i32.gt_u - if - i32.const 32 - i32.const 80 - i32.const 23 - i32.const 56 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 2 - i32.shl - local.tee $2 + i32.const 12 i32.const 0 call $~lib/rt/tlsf/__alloc - local.tee $3 - local.get $2 + local.tee $1 + i32.const 12 call $~lib/memory/memory.fill - local.get $0 - i32.eqz - if - i32.const 12 - i32.const 2 - call $~lib/rt/tlsf/__alloc - call $~lib/rt/pure/__retain - local.set $0 - end - local.get $0 + i32.const 16 + i32.const 3 + call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__retain + local.tee $0 i32.const 0 i32.store local.get $0 @@ -1388,29 +1369,36 @@ local.get $0 i32.const 0 i32.store offset=8 - local.get $3 - local.tee $1 + local.get $0 + i32.const 0 + i32.store offset=12 + local.get $1 + local.set $2 + local.get $1 local.get $0 i32.load - local.tee $4 + local.tee $3 i32.ne if - local.get $1 + local.get $2 call $~lib/rt/pure/__retain - local.set $1 - local.get $4 + local.set $2 + local.get $3 call $~lib/rt/pure/__release end local.get $0 - local.get $1 + local.get $2 i32.store local.get $0 - local.get $3 + local.get $1 i32.store offset=4 local.get $0 - local.get $2 + i32.const 12 i32.store offset=8 local.get $0 + i32.const 3 + i32.store offset=12 + local.get $0 ) (func $~lib/rt/tlsf/checkUsedBlock (; 21 ;) (param $0 i32) (result i32) (local $1 i32) @@ -1446,7 +1434,7 @@ i32.eqz if i32.const 0 - i32.const 144 + i32.const 128 i32.const 570 i32.const 2 call $~lib/builtins/abort @@ -1731,7 +1719,7 @@ local.get $2 call $~lib/memory/memory.copy local.get $1 - i32.const 708 + i32.const 644 i32.ge_u if local.get $1 @@ -1760,7 +1748,7 @@ i32.gt_u if i32.const 32 - i32.const 304 + i32.const 80 i32.const 14 i32.const 47 call $~lib/builtins/abort @@ -1833,9 +1821,9 @@ i32.const 1 i32.lt_s if - i32.const 352 - i32.const 304 i32.const 288 + i32.const 80 + i32.const 299 i32.const 20 call $~lib/builtins/abort unreachable @@ -1855,7 +1843,117 @@ local.get $1 i32.store offset=12 ) - (func $~lib/array/Array<~lib/string/String>#push (; 28 ;) (param $0 i32) + (func $~lib/array/Array<~lib/array/Array<~lib/string/String>>#constructor (; 28 ;) (result i32) + (local $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + i32.const 0 + i32.const 0 + call $~lib/rt/tlsf/__alloc + local.tee $1 + i32.const 0 + call $~lib/memory/memory.fill + i32.const 16 + i32.const 5 + call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__retain + local.tee $0 + i32.const 0 + i32.store + local.get $0 + i32.const 0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=8 + local.get $0 + i32.const 0 + i32.store offset=12 + local.get $1 + local.set $2 + local.get $1 + local.get $0 + i32.load + local.tee $3 + i32.ne + if + local.get $2 + call $~lib/rt/pure/__retain + local.set $2 + local.get $3 + call $~lib/rt/pure/__release + end + local.get $0 + local.get $2 + i32.store + local.get $0 + local.get $1 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=8 + local.get $0 + i32.const 0 + i32.store offset=12 + local.get $0 + ) + (func $~lib/array/Array<~lib/string/String>#constructor (; 29 ;) (result i32) + (local $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + i32.const 0 + i32.const 0 + call $~lib/rt/tlsf/__alloc + local.tee $1 + i32.const 0 + call $~lib/memory/memory.fill + i32.const 16 + i32.const 4 + call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__retain + local.tee $0 + i32.const 0 + i32.store + local.get $0 + i32.const 0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=8 + local.get $0 + i32.const 0 + i32.store offset=12 + local.get $1 + local.set $2 + local.get $1 + local.get $0 + i32.load + local.tee $3 + i32.ne + if + local.get $2 + call $~lib/rt/pure/__retain + local.set $2 + local.get $3 + call $~lib/rt/pure/__release + end + local.get $0 + local.get $2 + i32.store + local.get $0 + local.get $1 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=8 + local.get $0 + i32.const 0 + i32.store offset=12 + local.get $0 + ) + (func $~lib/array/Array<~lib/string/String>#push (; 30 ;) (param $0 i32) (local $1 i32) (local $2 i32) local.get $0 @@ -1872,13 +1970,13 @@ i32.const 2 i32.shl i32.add - i32.const 400 + i32.const 336 i32.store local.get $0 local.get $2 i32.store offset=12 ) - (func $~lib/string/String#get:length (; 29 ;) (param $0 i32) (result i32) + (func $~lib/string/String#get:length (; 31 ;) (param $0 i32) (result i32) local.get $0 i32.const 16 i32.sub @@ -1886,7 +1984,7 @@ i32.const 1 i32.shr_u ) - (func $~lib/string/String#concat (; 30 ;) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/string/String#concat (; 32 ;) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -1895,16 +1993,16 @@ local.tee $1 i32.eqz if - i32.const 480 + i32.const 416 local.set $3 local.get $1 - i32.const 480 + i32.const 416 i32.ne if local.get $1 call $~lib/rt/pure/__release end - i32.const 480 + i32.const 416 local.set $1 end local.get $0 @@ -1923,7 +2021,7 @@ if local.get $1 call $~lib/rt/pure/__release - i32.const 400 + i32.const 336 local.tee $0 return end @@ -1945,82 +2043,50 @@ call $~lib/rt/pure/__release local.get $2 ) - (func $~lib/string/String.__concat (; 31 ;) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/string/String.__concat (; 33 ;) (param $0 i32) (param $1 i32) (result i32) local.get $0 - i32.const 480 + i32.const 416 local.get $0 select local.get $1 call $~lib/string/String#concat ) - (func $start:retain-release-sanity (; 32 ;) + (func $start:retain-release-sanity (; 34 ;) (local $0 i32) (local $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) - i32.const 16 - i32.const 3 - call $~lib/rt/tlsf/__alloc - call $~lib/rt/pure/__retain - i32.const 3 - call $~lib/arraybuffer/ArrayBufferView#constructor - local.tee $0 - i32.const 0 - i32.store offset=12 - local.get $0 - i32.const 3 - i32.store offset=12 - local.get $0 + call $~lib/array/Array#constructor + local.tee $1 call $~lib/array/Array#push - local.get $0 + local.get $1 call $~lib/array/Array#push - local.get $0 + local.get $1 call $~lib/array/Array#pop - local.get $0 + local.get $1 call $~lib/rt/pure/__release - i32.const 16 - i32.const 5 - call $~lib/rt/tlsf/__alloc - call $~lib/rt/pure/__retain - i32.const 0 - call $~lib/arraybuffer/ArrayBufferView#constructor - local.tee $0 - i32.const 0 - i32.store offset=12 - local.get $0 - i32.const 0 - i32.store offset=12 + call $~lib/array/Array<~lib/array/Array<~lib/string/String>>#constructor loop $for-loop|0 local.get $2 i32.const 10 i32.lt_s if - i32.const 16 - i32.const 4 - call $~lib/rt/tlsf/__alloc - call $~lib/rt/pure/__retain - i32.const 0 - call $~lib/arraybuffer/ArrayBufferView#constructor - local.tee $3 - i32.const 0 - i32.store offset=12 - local.get $3 - i32.const 0 - i32.store offset=12 + call $~lib/array/Array<~lib/string/String>#constructor + local.set $3 i32.const 0 - local.set $1 + local.set $0 loop $for-loop|1 - local.get $1 + local.get $0 i32.const 10 i32.lt_s if local.get $3 call $~lib/array/Array<~lib/string/String>#push - local.get $1 + local.get $0 i32.const 1 i32.add - local.set $1 + local.set $0 br $for-loop|1 end end @@ -2033,13 +2099,12 @@ br $for-loop|0 end end - local.get $0 call $~lib/rt/pure/__release - i32.const 416 - i32.const 448 + i32.const 352 + i32.const 384 call $~lib/string/String.__concat local.tee $3 - i32.const 512 + i32.const 448 call $~lib/string/String.__concat local.get $3 call $~lib/rt/pure/__release @@ -2048,10 +2113,10 @@ i32.const 6 call $~lib/rt/tlsf/__alloc call $~lib/rt/pure/__retain - local.tee $0 + local.tee $1 i32.const 0 i32.store - local.get $0 + local.get $1 i32.const 4 i32.const 7 call $~lib/rt/tlsf/__alloc @@ -2060,27 +2125,27 @@ i32.const 0 i32.store local.get $3 - local.set $1 + local.set $0 local.get $3 - local.get $0 + local.get $1 i32.load local.tee $2 i32.ne if - local.get $1 + local.get $0 call $~lib/rt/pure/__retain - local.set $1 + local.set $0 local.get $2 call $~lib/rt/pure/__release end - local.get $1 - i32.store local.get $0 - local.set $1 + i32.store + local.get $1 + local.set $0 local.get $3 local.set $2 local.get $3 - local.get $0 + local.get $1 i32.load local.tee $4 i32.ne @@ -2091,87 +2156,87 @@ local.get $4 call $~lib/rt/pure/__release end - local.get $1 + local.get $0 local.get $2 i32.store local.get $3 local.set $2 - local.get $0 + local.get $1 local.get $3 i32.load local.tee $4 i32.ne if - local.get $1 + local.get $0 call $~lib/rt/pure/__retain - local.set $1 + local.set $0 local.get $4 call $~lib/rt/pure/__release end local.get $2 - local.get $1 - i32.store - local.get $0 - local.set $1 local.get $0 + i32.store + local.get $1 + local.set $0 + local.get $1 local.get $2 i32.load local.tee $4 i32.ne if - local.get $1 + local.get $0 call $~lib/rt/pure/__retain - local.set $1 + local.set $0 local.get $4 call $~lib/rt/pure/__release end local.get $2 - local.get $1 + local.get $0 i32.store local.get $2 - local.set $1 - local.get $0 + local.set $0 + local.get $1 local.set $2 local.get $3 - local.get $0 + local.get $1 i32.load local.tee $4 i32.ne if - local.get $1 + local.get $0 call $~lib/rt/pure/__retain - local.set $1 + local.set $0 local.get $4 call $~lib/rt/pure/__release end local.get $2 - local.get $1 - i32.store local.get $0 + i32.store + local.get $1 local.get $3 i32.load - local.tee $1 + local.tee $0 i32.ne if local.get $2 call $~lib/rt/pure/__retain local.set $2 - local.get $1 + local.get $0 call $~lib/rt/pure/__release end local.get $3 local.get $2 i32.store - local.get $0 + local.get $1 call $~lib/rt/pure/__release local.get $3 call $~lib/rt/pure/__release call $~lib/rt/pure/__collect ) - (func $~start (; 33 ;) + (func $~start (; 35 ;) call $start:retain-release-sanity ) - (func $~lib/rt/pure/markGray (; 34 ;) (param $0 i32) + (func $~lib/rt/pure/markGray (; 36 ;) (param $0 i32) (local $1 i32) local.get $0 i32.load offset=4 @@ -2195,7 +2260,7 @@ call $~lib/rt/__visit_members end ) - (func $~lib/rt/pure/scanBlack (; 35 ;) (param $0 i32) + (func $~lib/rt/pure/scanBlack (; 37 ;) (param $0 i32) local.get $0 local.get $0 i32.load offset=4 @@ -2208,7 +2273,7 @@ i32.const 4 call $~lib/rt/__visit_members ) - (func $~lib/rt/pure/scan (; 36 ;) (param $0 i32) + (func $~lib/rt/pure/scan (; 38 ;) (param $0 i32) (local $1 i32) local.get $0 i32.load offset=4 @@ -2242,7 +2307,7 @@ end end ) - (func $~lib/rt/pure/collectWhite (; 37 ;) (param $0 i32) + (func $~lib/rt/pure/collectWhite (; 39 ;) (param $0 i32) (local $1 i32) local.get $0 i32.load offset=4 @@ -2275,7 +2340,7 @@ call $~lib/rt/tlsf/freeBlock end ) - (func $~lib/rt/pure/__collect (; 38 ;) + (func $~lib/rt/pure/__collect (; 40 ;) (local $0 i32) (local $1 i32) (local $2 i32) @@ -2396,14 +2461,14 @@ local.get $5 global.set $~lib/rt/pure/CUR ) - (func $~lib/rt/__typeinfo (; 39 ;) (param $0 i32) (result i32) + (func $~lib/rt/__typeinfo (; 41 ;) (param $0 i32) (result i32) local.get $0 - i32.const 640 + i32.const 576 i32.load i32.gt_u if + i32.const 480 i32.const 544 - i32.const 608 i32.const 22 i32.const 27 call $~lib/builtins/abort @@ -2412,11 +2477,11 @@ local.get $0 i32.const 3 i32.shl - i32.const 644 + i32.const 580 i32.add i32.load ) - (func $~lib/rt/pure/growRoots (; 40 ;) + (func $~lib/rt/pure/growRoots (; 42 ;) (local $0 i32) (local $1 i32) (local $2 i32) @@ -2467,7 +2532,7 @@ i32.add global.set $~lib/rt/pure/END ) - (func $~lib/rt/pure/appendRoot (; 41 ;) (param $0 i32) + (func $~lib/rt/pure/appendRoot (; 43 ;) (param $0 i32) (local $1 i32) global.get $~lib/rt/pure/CUR local.tee $1 @@ -2486,7 +2551,7 @@ i32.add global.set $~lib/rt/pure/CUR ) - (func $~lib/rt/pure/decrement (; 42 ;) (param $0 i32) + (func $~lib/rt/pure/decrement (; 44 ;) (param $0 i32) (local $1 i32) (local $2 i32) local.get $0 @@ -2503,7 +2568,7 @@ i32.and if i32.const 0 - i32.const 256 + i32.const 240 i32.const 122 i32.const 13 call $~lib/builtins/abort @@ -2536,7 +2601,7 @@ i32.le_u if i32.const 0 - i32.const 256 + i32.const 240 i32.const 136 i32.const 15 call $~lib/builtins/abort @@ -2576,9 +2641,9 @@ end end ) - (func $~lib/rt/pure/__visit (; 43 ;) (param $0 i32) (param $1 i32) + (func $~lib/rt/pure/__visit (; 45 ;) (param $0 i32) (param $1 i32) local.get $0 - i32.const 708 + i32.const 644 i32.lt_u if return @@ -2614,7 +2679,7 @@ i32.le_u if i32.const 0 - i32.const 256 + i32.const 240 i32.const 79 i32.const 19 call $~lib/builtins/abort @@ -2647,7 +2712,7 @@ i32.ne if i32.const 0 - i32.const 256 + i32.const 240 i32.const 90 i32.const 8 call $~lib/builtins/abort @@ -2672,16 +2737,17 @@ br $break|0 end i32.const 0 - i32.const 256 + i32.const 240 i32.const 101 i32.const 26 call $~lib/builtins/abort unreachable end ) - (func $~lib/array/Array<~lib/string/String>#__visit_impl (; 44 ;) (param $0 i32) (param $1 i32) + (func $~lib/array/Array<~lib/string/String>#__visit_impl (; 46 ;) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) + (local $4 i32) local.get $0 i32.load offset=4 local.tee $2 @@ -2690,17 +2756,17 @@ i32.const 2 i32.shl i32.add - local.set $0 + local.set $3 loop $while-continue|0 local.get $2 - local.get $0 + local.get $3 i32.lt_u if local.get $2 i32.load - local.tee $3 + local.tee $4 if - local.get $3 + local.get $4 local.get $1 call $~lib/rt/pure/__visit end @@ -2711,40 +2777,52 @@ br $while-continue|0 end end + local.get $0 + i32.load + local.get $1 + call $~lib/rt/pure/__visit ) - (func $~lib/rt/__visit_members (; 45 ;) (param $0 i32) (param $1 i32) - block $block$4$break - block $switch$1$default - block $switch$1$case$7 - block $switch$1$case$6 - block $switch$1$case$2 + (func $~lib/rt/__visit_members (; 47 ;) (param $0 i32) (param $1 i32) + block $switch$1$default + block $switch$1$case$7 + block $switch$1$case$6 + block $switch$1$case$5 + block $switch$1$case$4 + block $switch$1$case$2 + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $switch$1$case$2 $switch$1$case$2 $switch$1$case$4 $switch$1$case$5 $switch$1$case$6 $switch$1$case$7 $switch$1$case$4 $switch$1$case$4 $switch$1$default + end + return + end + local.get $0 + i32.load + local.tee $0 + if local.get $0 - i32.const 8 - i32.sub - i32.load - br_table $switch$1$case$2 $switch$1$case$2 $block$4$break $block$4$break $switch$1$case$6 $switch$1$case$7 $block$4$break $block$4$break $switch$1$default + local.get $1 + call $~lib/rt/pure/__visit end return end local.get $0 + i32.load local.get $1 - call $~lib/array/Array<~lib/string/String>#__visit_impl - br $block$4$break + call $~lib/rt/pure/__visit + return end local.get $0 local.get $1 call $~lib/array/Array<~lib/string/String>#__visit_impl - br $block$4$break + return end - unreachable - end - local.get $0 - i32.load - local.tee $0 - if local.get $0 local.get $1 - call $~lib/rt/pure/__visit + call $~lib/array/Array<~lib/string/String>#__visit_impl + return end + unreachable ) ) diff --git a/tests/compiler/retain-release-sanity.untouched.wat b/tests/compiler/retain-release-sanity.untouched.wat index 0bc41adb22..1da89f8b1e 100644 --- a/tests/compiler/retain-release-sanity.untouched.wat +++ b/tests/compiler/retain-release-sanity.untouched.wat @@ -16,20 +16,19 @@ (import "rtrace" "ondecrement" (func $~lib/rt/rtrace/ondecrement (param i32))) (memory $0 1) (data (i32.const 16) "\1c\00\00\00\01\00\00\00\01\00\00\00\1c\00\00\00I\00n\00v\00a\00l\00i\00d\00 \00l\00e\00n\00g\00t\00h\00") - (data (i32.const 64) "&\00\00\00\01\00\00\00\01\00\00\00&\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00b\00u\00f\00f\00e\00r\00.\00t\00s\00") - (data (i32.const 128) "\1e\00\00\00\01\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s\00") - (data (i32.const 176) "(\00\00\00\01\00\00\00\01\00\00\00(\00\00\00a\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e\00") - (data (i32.const 240) "\1e\00\00\00\01\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00p\00u\00r\00e\00.\00t\00s\00") - (data (i32.const 288) "\1a\00\00\00\01\00\00\00\01\00\00\00\1a\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00.\00t\00s\00") - (data (i32.const 336) "\1c\00\00\00\01\00\00\00\01\00\00\00\1c\00\00\00A\00r\00r\00a\00y\00 \00i\00s\00 \00e\00m\00p\00t\00y\00") - (data (i32.const 384) "\00\00\00\00\01\00\00\00\01\00\00\00\00\00\00\00") - (data (i32.const 400) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00a\00") - (data (i32.const 432) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00b\00") - (data (i32.const 464) "\08\00\00\00\01\00\00\00\01\00\00\00\08\00\00\00n\00u\00l\00l\00") - (data (i32.const 496) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00d\00") - (data (i32.const 528) "$\00\00\00\01\00\00\00\01\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e\00") - (data (i32.const 592) "\14\00\00\00\01\00\00\00\01\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s\00") - (data (i32.const 640) "\08\00\00\00\10\00\00\00\00\00\00\00\10\00\00\00\00\00\00\00\10\00\00\00\00\00\00\00\93\04\00\00\02\00\00\00\93 \00\00\02\00\00\00\93 \00\00\02\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 64) "\1a\00\00\00\01\00\00\00\01\00\00\00\1a\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00.\00t\00s\00") + (data (i32.const 112) "\1e\00\00\00\01\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s\00") + (data (i32.const 160) "(\00\00\00\01\00\00\00\01\00\00\00(\00\00\00a\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e\00") + (data (i32.const 224) "\1e\00\00\00\01\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00p\00u\00r\00e\00.\00t\00s\00") + (data (i32.const 272) "\1c\00\00\00\01\00\00\00\01\00\00\00\1c\00\00\00A\00r\00r\00a\00y\00 \00i\00s\00 \00e\00m\00p\00t\00y\00") + (data (i32.const 320) "\00\00\00\00\01\00\00\00\01\00\00\00\00\00\00\00") + (data (i32.const 336) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00a\00") + (data (i32.const 368) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00b\00") + (data (i32.const 400) "\08\00\00\00\01\00\00\00\01\00\00\00\08\00\00\00n\00u\00l\00l\00") + (data (i32.const 432) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00d\00") + (data (i32.const 464) "$\00\00\00\01\00\00\00\01\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e\00") + (data (i32.const 528) "\14\00\00\00\01\00\00\00\01\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s\00") + (data (i32.const 576) "\08\00\00\00\10\00\00\00\00\00\00\00\10\00\00\00\00\00\00\00\10\00\00\00\00\00\00\00\92\04\00\00\00\00\00\00\92 \00\00\00\00\00\00\92 \00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") (table $0 1 funcref) (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) (global $~lib/rt/tlsf/collectLock (mut i32) (i32.const 0)) @@ -38,8 +37,8 @@ (global $~lib/rt/pure/ROOTS (mut i32) (i32.const 0)) (global $~lib/rt/pure/CUR (mut i32) (i32.const 0)) (global $~lib/rt/pure/END (mut i32) (i32.const 0)) - (global $~lib/rt/__rtti_base i32 (i32.const 640)) - (global $~lib/heap/__heap_base i32 (i32.const 708)) + (global $~lib/rt/__rtti_base i32 (i32.const 576)) + (global $~lib/heap/__heap_base i32 (i32.const 644)) (export "memory" (memory $0)) (start $~start) (func $~lib/rt/tlsf/removeBlock (; 6 ;) (param $0 i32) (param $1 i32) @@ -62,7 +61,7 @@ i32.eqz if i32.const 0 - i32.const 144 + i32.const 128 i32.const 277 i32.const 13 call $~lib/builtins/abort @@ -87,7 +86,7 @@ i32.eqz if i32.const 0 - i32.const 144 + i32.const 128 i32.const 279 i32.const 13 call $~lib/builtins/abort @@ -139,7 +138,7 @@ i32.eqz if i32.const 0 - i32.const 144 + i32.const 128 i32.const 292 i32.const 13 call $~lib/builtins/abort @@ -269,7 +268,7 @@ i32.eqz if i32.const 0 - i32.const 144 + i32.const 128 i32.const 205 i32.const 13 call $~lib/builtins/abort @@ -284,7 +283,7 @@ i32.eqz if i32.const 0 - i32.const 144 + i32.const 128 i32.const 207 i32.const 13 call $~lib/builtins/abort @@ -377,7 +376,7 @@ i32.eqz if i32.const 0 - i32.const 144 + i32.const 128 i32.const 228 i32.const 15 call $~lib/builtins/abort @@ -440,7 +439,7 @@ i32.eqz if i32.const 0 - i32.const 144 + i32.const 128 i32.const 243 i32.const 13 call $~lib/builtins/abort @@ -456,7 +455,7 @@ i32.eqz if i32.const 0 - i32.const 144 + i32.const 128 i32.const 244 i32.const 13 call $~lib/builtins/abort @@ -513,7 +512,7 @@ i32.eqz if i32.const 0 - i32.const 144 + i32.const 128 i32.const 260 i32.const 13 call $~lib/builtins/abort @@ -632,7 +631,7 @@ i32.eqz if i32.const 0 - i32.const 144 + i32.const 128 i32.const 386 i32.const 4 call $~lib/builtins/abort @@ -655,7 +654,7 @@ i32.eqz if i32.const 0 - i32.const 144 + i32.const 128 i32.const 396 i32.const 15 call $~lib/builtins/abort @@ -686,7 +685,7 @@ i32.eqz if i32.const 0 - i32.const 144 + i32.const 128 i32.const 408 i32.const 4 call $~lib/builtins/abort @@ -907,8 +906,8 @@ i32.const 1073741808 i32.ge_u if - i32.const 192 - i32.const 144 + i32.const 176 + i32.const 128 i32.const 457 i32.const 29 call $~lib/builtins/abort @@ -1002,7 +1001,7 @@ i32.eqz if i32.const 0 - i32.const 144 + i32.const 128 i32.const 338 i32.const 13 call $~lib/builtins/abort @@ -1065,7 +1064,7 @@ i32.eqz if i32.const 0 - i32.const 144 + i32.const 128 i32.const 351 i32.const 17 call $~lib/builtins/abort @@ -1210,7 +1209,7 @@ i32.eqz if i32.const 0 - i32.const 144 + i32.const 128 i32.const 365 i32.const 13 call $~lib/builtins/abort @@ -1299,7 +1298,7 @@ i32.eqz if i32.const 0 - i32.const 144 + i32.const 128 i32.const 490 i32.const 13 call $~lib/builtins/abort @@ -1340,7 +1339,7 @@ i32.eqz if i32.const 0 - i32.const 144 + i32.const 128 i32.const 502 i32.const 19 call $~lib/builtins/abort @@ -1359,7 +1358,7 @@ i32.eqz if i32.const 0 - i32.const 144 + i32.const 128 i32.const 507 i32.const 17 call $~lib/builtins/abort @@ -1376,7 +1375,7 @@ i32.eqz if i32.const 0 - i32.const 144 + i32.const 128 i32.const 510 i32.const 13 call $~lib/builtins/abort @@ -1691,7 +1690,7 @@ i32.eqz if i32.const 0 - i32.const 256 + i32.const 240 i32.const 109 i32.const 2 call $~lib/builtins/abort @@ -1712,7 +1711,7 @@ i32.eqz if i32.const 0 - i32.const 256 + i32.const 240 i32.const 112 i32.const 13 call $~lib/builtins/abort @@ -1742,40 +1741,40 @@ call $~lib/rt/pure/decrement end ) - (func $~lib/arraybuffer/ArrayBufferView#constructor (; 20 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/array/Array#constructor (; 20 ;) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) (local $6 i32) local.get $1 - i32.const 1073741808 - local.get $2 - i32.shr_u + i32.const 268435452 i32.gt_u if i32.const 32 i32.const 80 - i32.const 23 - i32.const 56 + i32.const 57 + i32.const 59 call $~lib/builtins/abort unreachable end local.get $1 - local.get $2 + i32.const 2 i32.shl - local.tee $1 + local.set $2 + local.get $2 i32.const 0 call $~lib/rt/tlsf/__alloc local.set $3 local.get $3 i32.const 0 - local.get $1 + local.get $2 call $~lib/memory/memory.fill local.get $0 i32.eqz if - i32.const 12 - i32.const 2 + i32.const 16 + i32.const 3 call $~lib/rt/tlsf/__alloc call $~lib/rt/pure/__retain local.set $0 @@ -1790,6 +1789,9 @@ i32.const 0 i32.store offset=8 local.get $0 + i32.const 0 + i32.store offset=12 + local.get $0 local.tee $4 local.get $3 local.tee $5 @@ -1810,33 +1812,14 @@ local.get $3 i32.store offset=4 local.get $0 - local.get $1 + local.get $2 i32.store offset=8 local.get $0 - ) - (func $~lib/array/Array#constructor (; 21 ;) (param $0 i32) (param $1 i32) (result i32) - local.get $0 - if (result i32) - local.get $0 - else - i32.const 16 - i32.const 3 - call $~lib/rt/tlsf/__alloc - call $~lib/rt/pure/__retain - end - local.get $1 - i32.const 2 - call $~lib/arraybuffer/ArrayBufferView#constructor - local.set $0 - local.get $0 - i32.const 0 - i32.store offset=12 - local.get $0 local.get $1 i32.store offset=12 local.get $0 ) - (func $~lib/rt/tlsf/checkUsedBlock (; 22 ;) (param $0 i32) (result i32) + (func $~lib/rt/tlsf/checkUsedBlock (; 21 ;) (param $0 i32) (result i32) (local $1 i32) local.get $0 i32.const 16 @@ -1874,7 +1857,7 @@ i32.eqz if i32.const 0 - i32.const 144 + i32.const 128 i32.const 570 i32.const 2 call $~lib/builtins/abort @@ -1882,7 +1865,7 @@ end local.get $1 ) - (func $~lib/util/memory/memcpy (; 23 ;) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/util/memory/memcpy (; 22 ;) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -2906,7 +2889,7 @@ i32.store8 end ) - (func $~lib/memory/memory.copy (; 24 ;) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/memory/memory.copy (; 23 ;) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -3126,7 +3109,7 @@ end end ) - (func $~lib/rt/tlsf/freeBlock (; 25 ;) (param $0 i32) (param $1 i32) + (func $~lib/rt/tlsf/freeBlock (; 24 ;) (param $0 i32) (param $1 i32) (local $2 i32) local.get $1 i32.load @@ -3142,7 +3125,7 @@ local.get $1 call $~lib/rt/rtrace/onfree ) - (func $~lib/rt/tlsf/reallocateBlock (; 26 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/rt/tlsf/reallocateBlock (; 25 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -3261,7 +3244,7 @@ end local.get $8 ) - (func $~lib/rt/tlsf/__realloc (; 27 ;) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/rt/tlsf/__realloc (; 26 ;) (param $0 i32) (param $1 i32) (result i32) call $~lib/rt/tlsf/maybeInitialize local.get $0 call $~lib/rt/tlsf/checkUsedBlock @@ -3270,7 +3253,7 @@ i32.const 16 i32.add ) - (func $~lib/array/ensureSize (; 28 ;) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/array/ensureSize (; 27 ;) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -3291,7 +3274,7 @@ i32.gt_u if i32.const 32 - i32.const 304 + i32.const 80 i32.const 14 i32.const 47 call $~lib/builtins/abort @@ -3332,7 +3315,7 @@ i32.store offset=8 end ) - (func $~lib/array/Array#push (; 29 ;) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array#push (; 28 ;) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) local.get $0 @@ -3359,7 +3342,7 @@ i32.store offset=12 local.get $3 ) - (func $~lib/array/Array#pop (; 30 ;) (param $0 i32) (result i32) + (func $~lib/array/Array#pop (; 29 ;) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) local.get $0 @@ -3369,9 +3352,9 @@ i32.const 1 i32.lt_s if - i32.const 352 - i32.const 304 i32.const 288 + i32.const 80 + i32.const 299 i32.const 20 call $~lib/builtins/abort unreachable @@ -3392,51 +3375,163 @@ i32.store offset=12 local.get $2 ) - (func $~lib/array/Array<~lib/array/Array<~lib/string/String>>#constructor (; 31 ;) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array<~lib/array/Array<~lib/string/String>>#constructor (; 30 ;) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + local.get $1 + i32.const 268435452 + i32.gt_u + if + i32.const 32 + i32.const 80 + i32.const 57 + i32.const 59 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 2 + i32.shl + local.set $2 + local.get $2 + i32.const 0 + call $~lib/rt/tlsf/__alloc + local.set $3 + local.get $3 + i32.const 0 + local.get $2 + call $~lib/memory/memory.fill local.get $0 - if (result i32) - local.get $0 - else + i32.eqz + if i32.const 16 i32.const 5 call $~lib/rt/tlsf/__alloc call $~lib/rt/pure/__retain + local.set $0 end - local.get $1 - i32.const 2 - call $~lib/arraybuffer/ArrayBufferView#constructor - local.set $0 + local.get $0 + i32.const 0 + i32.store + local.get $0 + i32.const 0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=8 local.get $0 i32.const 0 i32.store offset=12 local.get $0 + local.tee $4 + local.get $3 + local.tee $5 + local.get $4 + i32.load + local.tee $6 + i32.ne + if + local.get $5 + call $~lib/rt/pure/__retain + local.set $5 + local.get $6 + call $~lib/rt/pure/__release + end + local.get $5 + i32.store + local.get $0 + local.get $3 + i32.store offset=4 + local.get $0 + local.get $2 + i32.store offset=8 + local.get $0 local.get $1 i32.store offset=12 local.get $0 ) - (func $~lib/array/Array<~lib/string/String>#constructor (; 32 ;) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array<~lib/string/String>#constructor (; 31 ;) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + local.get $1 + i32.const 268435452 + i32.gt_u + if + i32.const 32 + i32.const 80 + i32.const 57 + i32.const 59 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 2 + i32.shl + local.set $2 + local.get $2 + i32.const 0 + call $~lib/rt/tlsf/__alloc + local.set $3 + local.get $3 + i32.const 0 + local.get $2 + call $~lib/memory/memory.fill local.get $0 - if (result i32) - local.get $0 - else + i32.eqz + if i32.const 16 i32.const 4 call $~lib/rt/tlsf/__alloc call $~lib/rt/pure/__retain + local.set $0 end - local.get $1 - i32.const 2 - call $~lib/arraybuffer/ArrayBufferView#constructor - local.set $0 + local.get $0 + i32.const 0 + i32.store + local.get $0 + i32.const 0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=8 local.get $0 i32.const 0 i32.store offset=12 local.get $0 + local.tee $4 + local.get $3 + local.tee $5 + local.get $4 + i32.load + local.tee $6 + i32.ne + if + local.get $5 + call $~lib/rt/pure/__retain + local.set $5 + local.get $6 + call $~lib/rt/pure/__release + end + local.get $5 + i32.store + local.get $0 + local.get $3 + i32.store offset=4 + local.get $0 + local.get $2 + i32.store offset=8 + local.get $0 local.get $1 i32.store offset=12 local.get $0 ) - (func $~lib/array/Array<~lib/string/String>#push (; 33 ;) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array<~lib/string/String>#push (; 32 ;) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -3472,7 +3567,7 @@ call $~lib/rt/pure/__release local.get $4 ) - (func $~lib/string/String#get:length (; 34 ;) (param $0 i32) (result i32) + (func $~lib/string/String#get:length (; 33 ;) (param $0 i32) (result i32) local.get $0 i32.const 16 i32.sub @@ -3480,7 +3575,7 @@ i32.const 1 i32.shr_u ) - (func $~lib/string/String#concat (; 35 ;) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/string/String#concat (; 34 ;) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -3494,7 +3589,7 @@ i32.const 0 i32.eq if - i32.const 480 + i32.const 416 local.tee $2 local.get $1 local.tee $3 @@ -3527,7 +3622,7 @@ i32.const 0 i32.eq if - i32.const 400 + i32.const 336 call $~lib/rt/pure/__retain local.set $2 local.get $1 @@ -3556,7 +3651,7 @@ call $~lib/rt/pure/__release local.get $2 ) - (func $~lib/string/String.__concat (; 36 ;) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/string/String.__concat (; 35 ;) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) local.get $0 call $~lib/rt/pure/__retain @@ -3565,7 +3660,7 @@ call $~lib/rt/pure/__retain local.set $1 local.get $0 - i32.const 480 + i32.const 416 local.get $0 i32.const 0 i32.ne @@ -3579,7 +3674,7 @@ call $~lib/rt/pure/__release local.get $2 ) - (func $retain-release-sanity/A#constructor (; 37 ;) (param $0 i32) (result i32) + (func $retain-release-sanity/A#constructor (; 36 ;) (param $0 i32) (result i32) local.get $0 i32.eqz if @@ -3594,7 +3689,7 @@ i32.store local.get $0 ) - (func $retain-release-sanity/B#constructor (; 38 ;) (param $0 i32) (result i32) + (func $retain-release-sanity/B#constructor (; 37 ;) (param $0 i32) (result i32) local.get $0 i32.eqz if @@ -3609,7 +3704,7 @@ i32.store local.get $0 ) - (func $start:retain-release-sanity (; 39 ;) + (func $start:retain-release-sanity (; 38 ;) (local $0 i32) (local $1 i32) (local $2 i32) @@ -3660,7 +3755,7 @@ local.get $5 if local.get $3 - i32.const 400 + i32.const 336 call $~lib/array/Array<~lib/string/String>#push drop local.get $4 @@ -3681,16 +3776,16 @@ end local.get $0 call $~lib/rt/pure/__release - i32.const 416 + i32.const 352 local.set $0 local.get $0 - i32.const 448 + i32.const 384 call $~lib/string/String.__concat local.tee $1 call $~lib/rt/pure/__retain local.set $2 local.get $2 - i32.const 512 + i32.const 448 call $~lib/string/String.__concat local.tee $3 drop @@ -3816,10 +3911,10 @@ call $~lib/rt/pure/__release call $~lib/rt/pure/__collect ) - (func $~start (; 40 ;) + (func $~start (; 39 ;) call $start:retain-release-sanity ) - (func $~lib/rt/pure/markGray (; 41 ;) (param $0 i32) + (func $~lib/rt/pure/markGray (; 40 ;) (param $0 i32) (local $1 i32) local.get $0 i32.load offset=4 @@ -3846,7 +3941,7 @@ call $~lib/rt/__visit_members end ) - (func $~lib/rt/pure/scanBlack (; 42 ;) (param $0 i32) + (func $~lib/rt/pure/scanBlack (; 41 ;) (param $0 i32) local.get $0 local.get $0 i32.load offset=4 @@ -3863,7 +3958,7 @@ i32.const 4 call $~lib/rt/__visit_members ) - (func $~lib/rt/pure/scan (; 43 ;) (param $0 i32) + (func $~lib/rt/pure/scan (; 42 ;) (param $0 i32) (local $1 i32) local.get $0 i32.load offset=4 @@ -3900,7 +3995,7 @@ end end ) - (func $~lib/rt/pure/collectWhite (; 44 ;) (param $0 i32) + (func $~lib/rt/pure/collectWhite (; 43 ;) (param $0 i32) (local $1 i32) local.get $0 i32.load offset=4 @@ -3938,7 +4033,7 @@ call $~lib/rt/tlsf/freeBlock end ) - (func $~lib/rt/pure/__collect (; 45 ;) + (func $~lib/rt/pure/__collect (; 44 ;) (local $0 i32) (local $1 i32) (local $2 i32) @@ -4079,7 +4174,7 @@ local.get $0 global.set $~lib/rt/pure/CUR ) - (func $~lib/rt/__typeinfo (; 46 ;) (param $0 i32) (result i32) + (func $~lib/rt/__typeinfo (; 45 ;) (param $0 i32) (result i32) (local $1 i32) global.get $~lib/rt/__rtti_base local.set $1 @@ -4088,8 +4183,8 @@ i32.load i32.gt_u if + i32.const 480 i32.const 544 - i32.const 608 i32.const 22 i32.const 27 call $~lib/builtins/abort @@ -4104,13 +4199,13 @@ i32.add i32.load ) - (func $~lib/rt/tlsf/__free (; 47 ;) (param $0 i32) + (func $~lib/rt/tlsf/__free (; 46 ;) (param $0 i32) call $~lib/rt/tlsf/maybeInitialize local.get $0 call $~lib/rt/tlsf/checkUsedBlock call $~lib/rt/tlsf/freeBlock ) - (func $~lib/rt/pure/growRoots (; 48 ;) + (func $~lib/rt/pure/growRoots (; 47 ;) (local $0 i32) (local $1 i32) (local $2 i32) @@ -4168,7 +4263,7 @@ i32.add global.set $~lib/rt/pure/END ) - (func $~lib/rt/pure/appendRoot (; 49 ;) (param $0 i32) + (func $~lib/rt/pure/appendRoot (; 48 ;) (param $0 i32) (local $1 i32) global.get $~lib/rt/pure/CUR local.set $1 @@ -4188,7 +4283,7 @@ i32.add global.set $~lib/rt/pure/CUR ) - (func $~lib/rt/pure/decrement (; 50 ;) (param $0 i32) + (func $~lib/rt/pure/decrement (; 49 ;) (param $0 i32) (local $1 i32) (local $2 i32) local.get $0 @@ -4208,7 +4303,7 @@ i32.eqz if i32.const 0 - i32.const 256 + i32.const 240 i32.const 122 i32.const 13 call $~lib/builtins/abort @@ -4247,7 +4342,7 @@ i32.eqz if i32.const 0 - i32.const 256 + i32.const 240 i32.const 136 i32.const 15 call $~lib/builtins/abort @@ -4292,7 +4387,7 @@ end end ) - (func $~lib/rt/pure/__visit (; 51 ;) (param $0 i32) (param $1 i32) + (func $~lib/rt/pure/__visit (; 50 ;) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) local.get $0 @@ -4349,7 +4444,7 @@ i32.eqz if i32.const 0 - i32.const 256 + i32.const 240 i32.const 79 i32.const 19 call $~lib/builtins/abort @@ -4384,7 +4479,7 @@ i32.eqz if i32.const 0 - i32.const 256 + i32.const 240 i32.const 90 i32.const 8 call $~lib/builtins/abort @@ -4414,7 +4509,7 @@ i32.eqz if i32.const 0 - i32.const 256 + i32.const 240 i32.const 101 i32.const 26 call $~lib/builtins/abort @@ -4422,10 +4517,13 @@ end end ) - (func $~lib/array/Array#__visit_impl (; 52 ;) (param $0 i32) (param $1 i32) - nop + (func $~lib/array/Array#__visit_impl (; 51 ;) (param $0 i32) (param $1 i32) + local.get $0 + i32.load + local.get $1 + call $~lib/rt/pure/__visit ) - (func $~lib/array/Array<~lib/string/String>#__visit_impl (; 53 ;) (param $0 i32) (param $1 i32) + (func $~lib/array/Array<~lib/string/String>#__visit_impl (; 52 ;) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -4463,8 +4561,12 @@ br $while-continue|0 end end + local.get $0 + i32.load + local.get $1 + call $~lib/rt/pure/__visit ) - (func $~lib/array/Array<~lib/array/Array<~lib/string/String>>#__visit_impl (; 54 ;) (param $0 i32) (param $1 i32) + (func $~lib/array/Array<~lib/array/Array<~lib/string/String>>#__visit_impl (; 53 ;) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -4502,51 +4604,52 @@ br $while-continue|0 end end + local.get $0 + i32.load + local.get $1 + call $~lib/rt/pure/__visit ) - (func $~lib/rt/__visit_members (; 55 ;) (param $0 i32) (param $1 i32) + (func $~lib/rt/__visit_members (; 54 ;) (param $0 i32) (param $1 i32) (local $2 i32) - block $block$4$break - block $switch$1$default - block $switch$1$case$7 - block $switch$1$case$6 - block $switch$1$case$5 - block $switch$1$case$4 - block $switch$1$case$2 - local.get $0 - i32.const 8 - i32.sub - i32.load - br_table $switch$1$case$2 $switch$1$case$2 $switch$1$case$4 $switch$1$case$5 $switch$1$case$6 $switch$1$case$7 $switch$1$case$4 $switch$1$case$4 $switch$1$default - end - return + block $switch$1$default + block $switch$1$case$7 + block $switch$1$case$6 + block $switch$1$case$5 + block $switch$1$case$4 + block $switch$1$case$2 + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $switch$1$case$2 $switch$1$case$2 $switch$1$case$4 $switch$1$case$5 $switch$1$case$6 $switch$1$case$7 $switch$1$case$4 $switch$1$case$4 $switch$1$default end - br $block$4$break + return end local.get $0 - local.get $1 - call $~lib/array/Array#__visit_impl - br $block$4$break + i32.load + local.tee $2 + if + local.get $2 + local.get $1 + call $~lib/rt/pure/__visit + end + return end local.get $0 local.get $1 - call $~lib/array/Array<~lib/string/String>#__visit_impl - br $block$4$break + call $~lib/array/Array#__visit_impl + return end local.get $0 local.get $1 - call $~lib/array/Array<~lib/array/Array<~lib/string/String>>#__visit_impl - br $block$4$break + call $~lib/array/Array<~lib/string/String>#__visit_impl + return end - unreachable - end - local.get $0 - i32.load - local.tee $2 - if - local.get $2 + local.get $0 local.get $1 - call $~lib/rt/pure/__visit + call $~lib/array/Array<~lib/array/Array<~lib/string/String>>#__visit_impl + return end - return + unreachable ) ) diff --git a/tests/compiler/rt/flags.optimized.wat b/tests/compiler/rt/flags.optimized.wat index c734ebc185..229b2ef0d9 100644 --- a/tests/compiler/rt/flags.optimized.wat +++ b/tests/compiler/rt/flags.optimized.wat @@ -7,8 +7,8 @@ (data (i32.const 16) "$\00\00\00\01\00\00\00\01\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e") (data (i32.const 80) "\14\00\00\00\01\00\00\00\01\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s") (data (i32.const 128) "\16\00\00\00\01\00\00\00\01\00\00\00\16\00\00\00r\00t\00/\00f\00l\00a\00g\00s\00.\00t\00s") - (data (i32.const 176) "D\00\00\00\10\00\00\00\00\00\00\00\10\00\00\00\00\00\00\00\10\00\00\00\00\00\00\001\04\00\00\02\00\00\001\00\00\00\02\00\00\001\00\00\00\02\00\00\00Q\04\00\00\02\00\00\00Q\00\00\00\02\00\00\00\91\04\00\00\02\00\00\00\91\00\00\00\02\00\00\00\11\05\00\00\02\00\00\00\11\01\00\00\02\00\00\00\91\0c\00\00\02\00\00\00\11\0d\00\00\02\00\00\003\04\00\00\02\00\00\003\00\00\00\02\00\00\00S\04\00\00\02\00\00\00S\00\00\00\02\00\00\00\93\04\00\00\02\00\00\00\93\00\00\00\02\00\00\00\13\05\00\00\02\00\00\00\13\01\00\00\02\00\00\00\93\0c\00\00\02\00\00\00\13\0d\00\00\02\00\00\00\13\02\00\00\02\00\00\00\10\00\00\00\00\00\00\00\93 \00\00\02\00\00\00\930\00\00\02\00\00\004\04\00\00\00\00\00\004\00\00\00\00\00\00\00T\04\00\00\00\00\00\00T\00\00\00\00\00\00\00\94\04\00\00\00\00\00\00\94\00\00\00\00\00\00\00\14\05\00\00\00\00\00\00\14\01\00\00\00\00\00\00\94\0c\00\00\00\00\00\00\14\0d\00\00\00\00\00\00\14\02\00\00\00\00\00\00\94 \00\00\00\00\00\00\940\00\00\00\00\00\008\04\04\00\00\00\00\00X\04\n\00\00\00\00\00\98\04\t\00\00\00\00\00\18\85\08\00\00\00\00\00\18B\08\00\00\00\00\008\04A\00\00\00\00\008\04a\00\00\00\00\00\98`\08\00\00\00\00\00\98p\08\00\00\00\00\00\980a\00\00\00\00\00\98\04\19\00\00\00\00\00\10") - (data (i32.const 636) "\83 \00\00\02\00\00\00\10") + (data (i32.const 176) "D\00\00\00\10\00\00\00\00\00\00\00\10\00\00\00\00\00\00\00\10\00\00\00\00\00\00\001\04\00\00\02\00\00\001\00\00\00\02\00\00\001\00\00\00\02\00\00\00Q\04\00\00\02\00\00\00Q\00\00\00\02\00\00\00\91\04\00\00\02\00\00\00\91\00\00\00\02\00\00\00\11\05\00\00\02\00\00\00\11\01\00\00\02\00\00\00\91\0c\00\00\02\00\00\00\11\0d\00\00\02\00\00\002\04\00\00\00\00\00\002\00\00\00\00\00\00\00R\04\00\00\00\00\00\00R\00\00\00\00\00\00\00\92\04\00\00\00\00\00\00\92\00\00\00\00\00\00\00\12\05\00\00\00\00\00\00\12\01\00\00\00\00\00\00\92\0c\00\00\00\00\00\00\12\0d\00\00\00\00\00\00\12\02\00\00\00\00\00\00\10\00\00\00\00\00\00\00\92 \00\00\00\00\00\00\920\00\00\00\00\00\004\04\00\00\00\00\00\004\00\00\00\00\00\00\00T\04\00\00\00\00\00\00T\00\00\00\00\00\00\00\94\04\00\00\00\00\00\00\94\00\00\00\00\00\00\00\14\05\00\00\00\00\00\00\14\01\00\00\00\00\00\00\94\0c\00\00\00\00\00\00\14\0d\00\00\00\00\00\00\14\02\00\00\00\00\00\00\94 \00\00\00\00\00\00\940\00\00\00\00\00\008\04\04\00\00\00\00\00X\04\n\00\00\00\00\00\98\04\t\00\00\00\00\00\18\85\08\00\00\00\00\00\18B\08\00\00\00\00\008\04A\00\00\00\00\008\04a\00\00\00\00\00\98`\08\00\00\00\00\00\98p\08\00\00\00\00\00\980a\00\00\00\00\00\98\04\19\00\00\00\00\00\10") + (data (i32.const 636) "\82 \00\00\00\00\00\00\10") (data (i32.const 660) "\84 \00\00\00\00\00\00\10") (data (i32.const 684) "\88\04A") (data (i32.const 700) "\88 \t\00\00\00\00\00\10\00\00\00\00\00\00\00\10") @@ -93,67 +93,67 @@ br_if $folding-inner0 i32.const 14 call $~lib/rt/__typeinfo - i32.const 1075 + i32.const 1074 i32.ne br_if $folding-inner0 i32.const 15 call $~lib/rt/__typeinfo - i32.const 51 + i32.const 50 i32.ne br_if $folding-inner0 i32.const 16 call $~lib/rt/__typeinfo - i32.const 1107 + i32.const 1106 i32.ne br_if $folding-inner0 i32.const 17 call $~lib/rt/__typeinfo - i32.const 83 + i32.const 82 i32.ne br_if $folding-inner0 i32.const 18 call $~lib/rt/__typeinfo - i32.const 1171 + i32.const 1170 i32.ne br_if $folding-inner0 i32.const 19 call $~lib/rt/__typeinfo - i32.const 147 + i32.const 146 i32.ne br_if $folding-inner0 i32.const 20 call $~lib/rt/__typeinfo - i32.const 1299 + i32.const 1298 i32.ne br_if $folding-inner0 i32.const 21 call $~lib/rt/__typeinfo - i32.const 275 + i32.const 274 i32.ne br_if $folding-inner0 i32.const 22 call $~lib/rt/__typeinfo - i32.const 3219 + i32.const 3218 i32.ne br_if $folding-inner0 i32.const 23 call $~lib/rt/__typeinfo - i32.const 3347 + i32.const 3346 i32.ne br_if $folding-inner0 i32.const 24 call $~lib/rt/__typeinfo - i32.const 531 + i32.const 530 i32.ne br_if $folding-inner0 i32.const 26 call $~lib/rt/__typeinfo - i32.const 8339 + i32.const 8338 i32.ne br_if $folding-inner0 i32.const 27 call $~lib/rt/__typeinfo - i32.const 12435 + i32.const 12434 i32.ne br_if $folding-inner0 i32.const 28 diff --git a/tests/compiler/rt/flags.ts b/tests/compiler/rt/flags.ts index 8bb921b941..9777acf83d 100644 --- a/tests/compiler/rt/flags.ts +++ b/tests/compiler/rt/flags.ts @@ -29,19 +29,19 @@ class Ref {} const VALUE_ALIGN_REF = sizeof() == 4 ? TypeinfoFlags.VALUE_ALIGN_2 : TypeinfoFlags.VALUE_ALIGN_3; const KEY_ALIGN_REF = sizeof() == 4 ? TypeinfoFlags.KEY_ALIGN_2 : TypeinfoFlags.KEY_ALIGN_3; -test>(TypeinfoFlags.ARRAYBUFFERVIEW | TypeinfoFlags.ARRAY | TypeinfoFlags.ACYCLIC | TypeinfoFlags.VALUE_ALIGN_0 | TypeinfoFlags.VALUE_SIGNED); -test>(TypeinfoFlags.ARRAYBUFFERVIEW | TypeinfoFlags.ARRAY | TypeinfoFlags.ACYCLIC | TypeinfoFlags.VALUE_ALIGN_0); -test>(TypeinfoFlags.ARRAYBUFFERVIEW | TypeinfoFlags.ARRAY | TypeinfoFlags.ACYCLIC | TypeinfoFlags.VALUE_ALIGN_1 | TypeinfoFlags.VALUE_SIGNED); -test>(TypeinfoFlags.ARRAYBUFFERVIEW | TypeinfoFlags.ARRAY | TypeinfoFlags.ACYCLIC | TypeinfoFlags.VALUE_ALIGN_1); -test>(TypeinfoFlags.ARRAYBUFFERVIEW | TypeinfoFlags.ARRAY | TypeinfoFlags.ACYCLIC | TypeinfoFlags.VALUE_ALIGN_2 | TypeinfoFlags.VALUE_SIGNED); -test>(TypeinfoFlags.ARRAYBUFFERVIEW | TypeinfoFlags.ARRAY | TypeinfoFlags.ACYCLIC | TypeinfoFlags.VALUE_ALIGN_2); -test>(TypeinfoFlags.ARRAYBUFFERVIEW | TypeinfoFlags.ARRAY | TypeinfoFlags.ACYCLIC | TypeinfoFlags.VALUE_ALIGN_3 | TypeinfoFlags.VALUE_SIGNED); -test>(TypeinfoFlags.ARRAYBUFFERVIEW | TypeinfoFlags.ARRAY | TypeinfoFlags.ACYCLIC | TypeinfoFlags.VALUE_ALIGN_3); -test>(TypeinfoFlags.ARRAYBUFFERVIEW | TypeinfoFlags.ARRAY | TypeinfoFlags.ACYCLIC | TypeinfoFlags.VALUE_ALIGN_2 | TypeinfoFlags.VALUE_SIGNED | TypeinfoFlags.VALUE_FLOAT); -test>(TypeinfoFlags.ARRAYBUFFERVIEW | TypeinfoFlags.ARRAY | TypeinfoFlags.ACYCLIC | TypeinfoFlags.VALUE_ALIGN_3 | TypeinfoFlags.VALUE_SIGNED | TypeinfoFlags.VALUE_FLOAT); -test>(TypeinfoFlags.ARRAYBUFFERVIEW | TypeinfoFlags.ARRAY | TypeinfoFlags.ACYCLIC | TypeinfoFlags.VALUE_ALIGN_4); -test>(TypeinfoFlags.ARRAYBUFFERVIEW | TypeinfoFlags.ARRAY | TypeinfoFlags.ACYCLIC | VALUE_ALIGN_REF | TypeinfoFlags.VALUE_MANAGED); -test>(TypeinfoFlags.ARRAYBUFFERVIEW | TypeinfoFlags.ARRAY | TypeinfoFlags.ACYCLIC | VALUE_ALIGN_REF | TypeinfoFlags.VALUE_NULLABLE | TypeinfoFlags.VALUE_MANAGED); +test>(TypeinfoFlags.ARRAY | TypeinfoFlags.ACYCLIC | TypeinfoFlags.VALUE_ALIGN_0 | TypeinfoFlags.VALUE_SIGNED); +test>(TypeinfoFlags.ARRAY | TypeinfoFlags.ACYCLIC | TypeinfoFlags.VALUE_ALIGN_0); +test>(TypeinfoFlags.ARRAY | TypeinfoFlags.ACYCLIC | TypeinfoFlags.VALUE_ALIGN_1 | TypeinfoFlags.VALUE_SIGNED); +test>(TypeinfoFlags.ARRAY | TypeinfoFlags.ACYCLIC | TypeinfoFlags.VALUE_ALIGN_1); +test>(TypeinfoFlags.ARRAY | TypeinfoFlags.ACYCLIC | TypeinfoFlags.VALUE_ALIGN_2 | TypeinfoFlags.VALUE_SIGNED); +test>(TypeinfoFlags.ARRAY | TypeinfoFlags.ACYCLIC | TypeinfoFlags.VALUE_ALIGN_2); +test>(TypeinfoFlags.ARRAY | TypeinfoFlags.ACYCLIC | TypeinfoFlags.VALUE_ALIGN_3 | TypeinfoFlags.VALUE_SIGNED); +test>(TypeinfoFlags.ARRAY | TypeinfoFlags.ACYCLIC | TypeinfoFlags.VALUE_ALIGN_3); +test>(TypeinfoFlags.ARRAY | TypeinfoFlags.ACYCLIC | TypeinfoFlags.VALUE_ALIGN_2 | TypeinfoFlags.VALUE_SIGNED | TypeinfoFlags.VALUE_FLOAT); +test>(TypeinfoFlags.ARRAY | TypeinfoFlags.ACYCLIC | TypeinfoFlags.VALUE_ALIGN_3 | TypeinfoFlags.VALUE_SIGNED | TypeinfoFlags.VALUE_FLOAT); +test>(TypeinfoFlags.ARRAY | TypeinfoFlags.ACYCLIC | TypeinfoFlags.VALUE_ALIGN_4); +test>(TypeinfoFlags.ARRAY | TypeinfoFlags.ACYCLIC | VALUE_ALIGN_REF | TypeinfoFlags.VALUE_MANAGED); +test>(TypeinfoFlags.ARRAY | TypeinfoFlags.ACYCLIC | VALUE_ALIGN_REF | TypeinfoFlags.VALUE_NULLABLE | TypeinfoFlags.VALUE_MANAGED); test>(TypeinfoFlags.SET | TypeinfoFlags.ACYCLIC | TypeinfoFlags.VALUE_ALIGN_0 | TypeinfoFlags.VALUE_SIGNED); test>(TypeinfoFlags.SET | TypeinfoFlags.ACYCLIC | TypeinfoFlags.VALUE_ALIGN_0); diff --git a/tests/compiler/rt/flags.untouched.wat b/tests/compiler/rt/flags.untouched.wat index aa772e7d7b..dc5ba2a1f1 100644 --- a/tests/compiler/rt/flags.untouched.wat +++ b/tests/compiler/rt/flags.untouched.wat @@ -8,7 +8,7 @@ (data (i32.const 16) "$\00\00\00\01\00\00\00\01\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e\00") (data (i32.const 80) "\14\00\00\00\01\00\00\00\01\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s\00") (data (i32.const 128) "\16\00\00\00\01\00\00\00\01\00\00\00\16\00\00\00r\00t\00/\00f\00l\00a\00g\00s\00.\00t\00s\00") - (data (i32.const 176) "D\00\00\00\10\00\00\00\00\00\00\00\10\00\00\00\00\00\00\00\10\00\00\00\00\00\00\001\04\00\00\02\00\00\001\00\00\00\02\00\00\001\00\00\00\02\00\00\00Q\04\00\00\02\00\00\00Q\00\00\00\02\00\00\00\91\04\00\00\02\00\00\00\91\00\00\00\02\00\00\00\11\05\00\00\02\00\00\00\11\01\00\00\02\00\00\00\91\0c\00\00\02\00\00\00\11\0d\00\00\02\00\00\003\04\00\00\02\00\00\003\00\00\00\02\00\00\00S\04\00\00\02\00\00\00S\00\00\00\02\00\00\00\93\04\00\00\02\00\00\00\93\00\00\00\02\00\00\00\13\05\00\00\02\00\00\00\13\01\00\00\02\00\00\00\93\0c\00\00\02\00\00\00\13\0d\00\00\02\00\00\00\13\02\00\00\02\00\00\00\10\00\00\00\00\00\00\00\93 \00\00\02\00\00\00\930\00\00\02\00\00\004\04\00\00\00\00\00\004\00\00\00\00\00\00\00T\04\00\00\00\00\00\00T\00\00\00\00\00\00\00\94\04\00\00\00\00\00\00\94\00\00\00\00\00\00\00\14\05\00\00\00\00\00\00\14\01\00\00\00\00\00\00\94\0c\00\00\00\00\00\00\14\0d\00\00\00\00\00\00\14\02\00\00\00\00\00\00\94 \00\00\00\00\00\00\940\00\00\00\00\00\008\04\04\00\00\00\00\00X\04\n\00\00\00\00\00\98\04\t\00\00\00\00\00\18\85\08\00\00\00\00\00\18B\08\00\00\00\00\008\04A\00\00\00\00\008\04a\00\00\00\00\00\98`\08\00\00\00\00\00\98p\08\00\00\00\00\00\980a\00\00\00\00\00\98\04\19\00\00\00\00\00\10\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\83 \00\00\02\00\00\00\10\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\84 \00\00\00\00\00\00\10\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\88\04A\00\00\00\00\00\00\00\00\00\00\00\00\00\88 \t\00\00\00\00\00\10\00\00\00\00\00\00\00\10\00\00\00\00\00\00\00") + (data (i32.const 176) "D\00\00\00\10\00\00\00\00\00\00\00\10\00\00\00\00\00\00\00\10\00\00\00\00\00\00\001\04\00\00\02\00\00\001\00\00\00\02\00\00\001\00\00\00\02\00\00\00Q\04\00\00\02\00\00\00Q\00\00\00\02\00\00\00\91\04\00\00\02\00\00\00\91\00\00\00\02\00\00\00\11\05\00\00\02\00\00\00\11\01\00\00\02\00\00\00\91\0c\00\00\02\00\00\00\11\0d\00\00\02\00\00\002\04\00\00\00\00\00\002\00\00\00\00\00\00\00R\04\00\00\00\00\00\00R\00\00\00\00\00\00\00\92\04\00\00\00\00\00\00\92\00\00\00\00\00\00\00\12\05\00\00\00\00\00\00\12\01\00\00\00\00\00\00\92\0c\00\00\00\00\00\00\12\0d\00\00\00\00\00\00\12\02\00\00\00\00\00\00\10\00\00\00\00\00\00\00\92 \00\00\00\00\00\00\920\00\00\00\00\00\004\04\00\00\00\00\00\004\00\00\00\00\00\00\00T\04\00\00\00\00\00\00T\00\00\00\00\00\00\00\94\04\00\00\00\00\00\00\94\00\00\00\00\00\00\00\14\05\00\00\00\00\00\00\14\01\00\00\00\00\00\00\94\0c\00\00\00\00\00\00\14\0d\00\00\00\00\00\00\14\02\00\00\00\00\00\00\94 \00\00\00\00\00\00\940\00\00\00\00\00\008\04\04\00\00\00\00\00X\04\n\00\00\00\00\00\98\04\t\00\00\00\00\00\18\85\08\00\00\00\00\00\18B\08\00\00\00\00\008\04A\00\00\00\00\008\04a\00\00\00\00\00\98`\08\00\00\00\00\00\98p\08\00\00\00\00\00\980a\00\00\00\00\00\98\04\19\00\00\00\00\00\10\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\82 \00\00\00\00\00\00\10\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\84 \00\00\00\00\00\00\10\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\88\04A\00\00\00\00\00\00\00\00\00\00\00\00\00\88 \t\00\00\00\00\00\10\00\00\00\00\00\00\00\10\00\00\00\00\00\00\00") (table $0 1 funcref) (global $rt/flags/VALUE_ALIGN_REF i32 (i32.const 128)) (global $rt/flags/KEY_ALIGN_REF i32 (i32.const 65536)) @@ -1008,9 +1008,7 @@ i32.const 2048 i32.or call $rt/flags/test<~lib/typedarray/Float64Array> - i32.const 1 i32.const 2 - i32.or i32.const 16 i32.or i32.const 32 @@ -1018,17 +1016,13 @@ i32.const 1024 i32.or call $rt/flags/test<~lib/array/Array> - i32.const 1 i32.const 2 - i32.or i32.const 16 i32.or i32.const 32 i32.or call $rt/flags/test<~lib/array/Array> - i32.const 1 i32.const 2 - i32.or i32.const 16 i32.or i32.const 64 @@ -1036,17 +1030,13 @@ i32.const 1024 i32.or call $rt/flags/test<~lib/array/Array> - i32.const 1 i32.const 2 - i32.or i32.const 16 i32.or i32.const 64 i32.or call $rt/flags/test<~lib/array/Array> - i32.const 1 i32.const 2 - i32.or i32.const 16 i32.or i32.const 128 @@ -1054,17 +1044,13 @@ i32.const 1024 i32.or call $rt/flags/test<~lib/array/Array> - i32.const 1 i32.const 2 - i32.or i32.const 16 i32.or i32.const 128 i32.or call $rt/flags/test<~lib/array/Array> - i32.const 1 i32.const 2 - i32.or i32.const 16 i32.or i32.const 256 @@ -1072,17 +1058,13 @@ i32.const 1024 i32.or call $rt/flags/test<~lib/array/Array> - i32.const 1 i32.const 2 - i32.or i32.const 16 i32.or i32.const 256 i32.or call $rt/flags/test<~lib/array/Array> - i32.const 1 i32.const 2 - i32.or i32.const 16 i32.or i32.const 128 @@ -1092,9 +1074,7 @@ i32.const 2048 i32.or call $rt/flags/test<~lib/array/Array> - i32.const 1 i32.const 2 - i32.or i32.const 16 i32.or i32.const 256 @@ -1104,17 +1084,13 @@ i32.const 2048 i32.or call $rt/flags/test<~lib/array/Array> - i32.const 1 i32.const 2 - i32.or i32.const 16 i32.or i32.const 512 i32.or call $rt/flags/test<~lib/array/Array> - i32.const 1 i32.const 2 - i32.or i32.const 16 i32.or global.get $rt/flags/VALUE_ALIGN_REF @@ -1122,9 +1098,7 @@ i32.const 8192 i32.or call $rt/flags/test<~lib/array/Array> - i32.const 1 i32.const 2 - i32.or i32.const 16 i32.or global.get $rt/flags/VALUE_ALIGN_REF diff --git a/tests/compiler/std/array-access.optimized.wat b/tests/compiler/std/array-access.optimized.wat index 6aaa67dcd0..af515d8686 100644 --- a/tests/compiler/std/array-access.optimized.wat +++ b/tests/compiler/std/array-access.optimized.wat @@ -24,7 +24,7 @@ if i32.const 32 i32.const 96 - i32.const 93 + i32.const 104 i32.const 41 call $~lib/builtins/abort unreachable @@ -41,7 +41,7 @@ if i32.const 144 i32.const 96 - i32.const 97 + i32.const 108 i32.const 39 call $~lib/builtins/abort unreachable @@ -56,7 +56,7 @@ if i32.const 32 i32.const 96 - i32.const 93 + i32.const 104 i32.const 41 call $~lib/builtins/abort unreachable diff --git a/tests/compiler/std/array-access.untouched.wat b/tests/compiler/std/array-access.untouched.wat index 82898f2501..46a24625d4 100644 --- a/tests/compiler/std/array-access.untouched.wat +++ b/tests/compiler/std/array-access.untouched.wat @@ -45,7 +45,7 @@ if i32.const 32 i32.const 96 - i32.const 93 + i32.const 104 i32.const 41 call $~lib/builtins/abort unreachable @@ -61,7 +61,7 @@ call $~lib/rt/stub/__release i32.const 144 i32.const 96 - i32.const 97 + i32.const 108 i32.const 39 call $~lib/builtins/abort unreachable @@ -86,7 +86,7 @@ if i32.const 32 i32.const 96 - i32.const 93 + i32.const 104 i32.const 41 call $~lib/builtins/abort unreachable @@ -135,7 +135,7 @@ if i32.const 32 i32.const 96 - i32.const 93 + i32.const 104 i32.const 41 call $~lib/builtins/abort unreachable @@ -151,7 +151,7 @@ call $~lib/rt/stub/__release i32.const 144 i32.const 96 - i32.const 97 + i32.const 108 i32.const 39 call $~lib/builtins/abort unreachable @@ -420,7 +420,7 @@ if i32.const 32 i32.const 96 - i32.const 93 + i32.const 104 i32.const 41 call $~lib/builtins/abort unreachable @@ -436,7 +436,7 @@ call $~lib/rt/stub/__release i32.const 144 i32.const 96 - i32.const 97 + i32.const 108 i32.const 39 call $~lib/builtins/abort unreachable diff --git a/tests/compiler/std/array-literal.optimized.wat b/tests/compiler/std/array-literal.optimized.wat index 483763b972..e53d31dd0b 100644 --- a/tests/compiler/std/array-literal.optimized.wat +++ b/tests/compiler/std/array-literal.optimized.wat @@ -43,7 +43,7 @@ if i32.const 160 i32.const 224 - i32.const 93 + i32.const 104 i32.const 41 call $~lib/builtins/abort unreachable @@ -62,7 +62,7 @@ if i32.const 160 i32.const 224 - i32.const 93 + i32.const 104 i32.const 41 call $~lib/builtins/abort unreachable @@ -1678,9 +1678,15 @@ i32.sub call $~lib/rt/pure/decrement ) - (func $~lib/array/Array#__visit_impl (; 27 ;) (param $0 i32) + (func $~lib/array/Array#__visit_impl (; 27 ;) (param $0 i32) + local.get $0 + i32.load + call $~lib/rt/pure/__visit + ) + (func $~lib/array/Array#__visit_impl (; 28 ;) (param $0 i32) (local $1 i32) (local $2 i32) + (local $3 i32) local.get $0 i32.load offset=4 local.tee $1 @@ -1689,17 +1695,17 @@ i32.const 2 i32.shl i32.add - local.set $0 + local.set $2 loop $while-continue|0 local.get $1 - local.get $0 + local.get $2 i32.lt_u if local.get $1 i32.load - local.tee $2 + local.tee $3 if - local.get $2 + local.get $3 call $~lib/rt/pure/__visit end local.get $1 @@ -1709,37 +1715,51 @@ br $while-continue|0 end end + local.get $0 + i32.load + call $~lib/rt/pure/__visit ) - (func $~lib/rt/__visit_members (; 28 ;) (param $0 i32) - block $block$4$break - block $switch$1$default - block $switch$1$case$10 - block $switch$1$case$8 - block $switch$1$case$2 + (func $~lib/rt/__visit_members (; 29 ;) (param $0 i32) + block $switch$1$default + block $switch$1$case$10 + block $switch$1$case$8 + block $switch$1$case$6 + block $switch$1$case$5 + block $switch$1$case$4 + block $switch$1$case$2 + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $switch$1$case$2 $switch$1$case$2 $switch$1$case$4 $switch$1$case$5 $switch$1$case$6 $switch$1$case$2 $switch$1$case$8 $switch$1$case$2 $switch$1$case$10 $switch$1$default + end + return + end local.get $0 - i32.const 8 - i32.sub i32.load - br_table $switch$1$case$2 $switch$1$case$2 $block$4$break $block$4$break $block$4$break $switch$1$case$2 $switch$1$case$8 $switch$1$case$2 $switch$1$case$10 $switch$1$default + local.tee $0 + if + local.get $0 + call $~lib/rt/pure/__visit + end + return end + local.get $0 + call $~lib/array/Array#__visit_impl return end local.get $0 - call $~lib/array/Array#__visit_impl - br $block$4$break + call $~lib/array/Array#__visit_impl + return end local.get $0 call $~lib/array/Array#__visit_impl - br $block$4$break + return end - unreachable - end - local.get $0 - i32.load - local.tee $0 - if local.get $0 - call $~lib/rt/pure/__visit + call $~lib/array/Array#__visit_impl + return end + unreachable ) ) diff --git a/tests/compiler/std/array-literal.untouched.wat b/tests/compiler/std/array-literal.untouched.wat index a7c5ae6447..4d8e4350e3 100644 --- a/tests/compiler/std/array-literal.untouched.wat +++ b/tests/compiler/std/array-literal.untouched.wat @@ -65,7 +65,7 @@ if i32.const 160 i32.const 224 - i32.const 93 + i32.const 104 i32.const 41 call $~lib/builtins/abort unreachable @@ -98,7 +98,7 @@ if i32.const 160 i32.const 224 - i32.const 93 + i32.const 104 i32.const 41 call $~lib/builtins/abort unreachable @@ -3425,10 +3425,16 @@ call $~lib/rt/pure/decrement ) (func $~lib/array/Array#__visit_impl (; 38 ;) (param $0 i32) (param $1 i32) - nop + local.get $0 + i32.load + local.get $1 + call $~lib/rt/pure/__visit ) (func $~lib/array/Array#__visit_impl (; 39 ;) (param $0 i32) (param $1 i32) - nop + local.get $0 + i32.load + local.get $1 + call $~lib/rt/pure/__visit ) (func $~lib/array/Array#__visit_impl (; 40 ;) (param $0 i32) (param $1 i32) (local $2 i32) @@ -3468,6 +3474,10 @@ br $while-continue|0 end end + local.get $0 + i32.load + local.get $1 + call $~lib/rt/pure/__visit ) (func $~lib/array/Array#__visit_impl (; 41 ;) (param $0 i32) (param $1 i32) (local $2 i32) @@ -3507,57 +3517,58 @@ br $while-continue|0 end end + local.get $0 + i32.load + local.get $1 + call $~lib/rt/pure/__visit ) (func $~lib/rt/__visit_members (; 42 ;) (param $0 i32) (param $1 i32) (local $2 i32) - block $block$4$break - block $switch$1$default - block $switch$1$case$10 - block $switch$1$case$8 - block $switch$1$case$6 - block $switch$1$case$5 - block $switch$1$case$4 - block $switch$1$case$2 - local.get $0 - i32.const 8 - i32.sub - i32.load - br_table $switch$1$case$2 $switch$1$case$2 $switch$1$case$4 $switch$1$case$5 $switch$1$case$6 $switch$1$case$2 $switch$1$case$8 $switch$1$case$2 $switch$1$case$10 $switch$1$default - end - return + block $switch$1$default + block $switch$1$case$10 + block $switch$1$case$8 + block $switch$1$case$6 + block $switch$1$case$5 + block $switch$1$case$4 + block $switch$1$case$2 + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $switch$1$case$2 $switch$1$case$2 $switch$1$case$4 $switch$1$case$5 $switch$1$case$6 $switch$1$case$2 $switch$1$case$8 $switch$1$case$2 $switch$1$case$10 $switch$1$default end - br $block$4$break + return end local.get $0 - local.get $1 - call $~lib/array/Array#__visit_impl - br $block$4$break + i32.load + local.tee $2 + if + local.get $2 + local.get $1 + call $~lib/rt/pure/__visit + end + return end local.get $0 local.get $1 - call $~lib/array/Array#__visit_impl - br $block$4$break + call $~lib/array/Array#__visit_impl + return end local.get $0 local.get $1 - call $~lib/array/Array#__visit_impl - br $block$4$break + call $~lib/array/Array#__visit_impl + return end local.get $0 local.get $1 - call $~lib/array/Array#__visit_impl - br $block$4$break + call $~lib/array/Array#__visit_impl + return end - unreachable - end - local.get $0 - i32.load - local.tee $2 - if - local.get $2 + local.get $0 local.get $1 - call $~lib/rt/pure/__visit + call $~lib/array/Array#__visit_impl + return end - return + unreachable ) ) diff --git a/tests/compiler/std/array.optimized.wat b/tests/compiler/std/array.optimized.wat index 09b4f7e5cf..5429e623f9 100644 --- a/tests/compiler/std/array.optimized.wat +++ b/tests/compiler/std/array.optimized.wat @@ -33,16 +33,16 @@ (import "rtrace" "ondecrement" (func $~lib/rt/rtrace/ondecrement (param i32))) (memory $0 1) (data (i32.const 16) "\1c\00\00\00\01\00\00\00\01\00\00\00\1c\00\00\00I\00n\00v\00a\00l\00i\00d\00 \00l\00e\00n\00g\00t\00h") - (data (i32.const 64) "&\00\00\00\01\00\00\00\01\00\00\00&\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00b\00u\00f\00f\00e\00r\00.\00t\00s") - (data (i32.const 128) "\1e\00\00\00\01\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s") - (data (i32.const 176) "(\00\00\00\01\00\00\00\01\00\00\00(\00\00\00a\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e") - (data (i32.const 240) "\1e\00\00\00\01\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00p\00u\00r\00e\00.\00t\00s") - (data (i32.const 288) "\18\00\00\00\01\00\00\00\01\00\00\00\18\00\00\00s\00t\00d\00/\00a\00r\00r\00a\00y\00.\00t\00s") - (data (i32.const 336) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\00a\00b\00c") - (data (i32.const 368) "\05\00\00\00\01\00\00\00\00\00\00\00\05\00\00\00\01\02\03\04\05") - (data (i32.const 400) "\05\00\00\00\01\00\00\00\00\00\00\00\05\00\00\00\01\01\01\04\05") - (data (i32.const 432) "$\00\00\00\01\00\00\00\01\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e") - (data (i32.const 496) "\1a\00\00\00\01\00\00\00\01\00\00\00\1a\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00.\00t\00s") + (data (i32.const 64) "\1a\00\00\00\01\00\00\00\01\00\00\00\1a\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00.\00t\00s") + (data (i32.const 112) "\1e\00\00\00\01\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s") + (data (i32.const 160) "(\00\00\00\01\00\00\00\01\00\00\00(\00\00\00a\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e") + (data (i32.const 224) "\1e\00\00\00\01\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00p\00u\00r\00e\00.\00t\00s") + (data (i32.const 272) "\18\00\00\00\01\00\00\00\01\00\00\00\18\00\00\00s\00t\00d\00/\00a\00r\00r\00a\00y\00.\00t\00s") + (data (i32.const 320) "&\00\00\00\01\00\00\00\01\00\00\00&\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00b\00u\00f\00f\00e\00r\00.\00t\00s") + (data (i32.const 384) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\00a\00b\00c") + (data (i32.const 416) "\05\00\00\00\01\00\00\00\00\00\00\00\05\00\00\00\01\02\03\04\05") + (data (i32.const 448) "\05\00\00\00\01\00\00\00\00\00\00\00\05\00\00\00\01\01\01\04\05") + (data (i32.const 480) "$\00\00\00\01\00\00\00\01\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e") (data (i32.const 544) "\05\00\00\00\01\00\00\00\00\00\00\00\05") (data (i32.const 576) "\05\00\00\00\01\00\00\00\00\00\00\00\05\00\00\00\01\01") (data (i32.const 608) "\05\00\00\00\01\00\00\00\00\00\00\00\05\00\00\00\01\01\00\02\02") @@ -253,7 +253,7 @@ i32.eqz if i32.const 0 - i32.const 144 + i32.const 128 i32.const 277 i32.const 13 call $~lib/builtins/abort @@ -275,7 +275,7 @@ i32.eqz if i32.const 0 - i32.const 144 + i32.const 128 i32.const 279 i32.const 13 call $~lib/builtins/abort @@ -320,7 +320,7 @@ i32.eqz if i32.const 0 - i32.const 144 + i32.const 128 i32.const 292 i32.const 13 call $~lib/builtins/abort @@ -417,7 +417,7 @@ i32.eqz if i32.const 0 - i32.const 144 + i32.const 128 i32.const 205 i32.const 13 call $~lib/builtins/abort @@ -431,7 +431,7 @@ i32.eqz if i32.const 0 - i32.const 144 + i32.const 128 i32.const 207 i32.const 13 call $~lib/builtins/abort @@ -504,7 +504,7 @@ i32.eqz if i32.const 0 - i32.const 144 + i32.const 128 i32.const 228 i32.const 15 call $~lib/builtins/abort @@ -559,7 +559,7 @@ i32.eqz if i32.const 0 - i32.const 144 + i32.const 128 i32.const 243 i32.const 13 call $~lib/builtins/abort @@ -574,7 +574,7 @@ i32.ne if i32.const 0 - i32.const 144 + i32.const 128 i32.const 244 i32.const 13 call $~lib/builtins/abort @@ -624,7 +624,7 @@ i32.eqz if i32.const 0 - i32.const 144 + i32.const 128 i32.const 260 i32.const 13 call $~lib/builtins/abort @@ -710,7 +710,7 @@ i32.eqz if i32.const 0 - i32.const 144 + i32.const 128 i32.const 386 i32.const 4 call $~lib/builtins/abort @@ -727,7 +727,7 @@ i32.lt_u if i32.const 0 - i32.const 144 + i32.const 128 i32.const 396 i32.const 15 call $~lib/builtins/abort @@ -755,7 +755,7 @@ i32.lt_u if i32.const 0 - i32.const 144 + i32.const 128 i32.const 408 i32.const 4 call $~lib/builtins/abort @@ -895,8 +895,8 @@ i32.const 1073741808 i32.ge_u if - i32.const 192 - i32.const 144 + i32.const 176 + i32.const 128 i32.const 457 i32.const 29 call $~lib/builtins/abort @@ -971,7 +971,7 @@ i32.eqz if i32.const 0 - i32.const 144 + i32.const 128 i32.const 338 i32.const 13 call $~lib/builtins/abort @@ -1023,7 +1023,7 @@ i32.eqz if i32.const 0 - i32.const 144 + i32.const 128 i32.const 351 i32.const 17 call $~lib/builtins/abort @@ -1118,7 +1118,7 @@ i32.and if i32.const 0 - i32.const 144 + i32.const 128 i32.const 365 i32.const 13 call $~lib/builtins/abort @@ -1189,7 +1189,7 @@ global.get $~lib/rt/tlsf/collectLock if i32.const 0 - i32.const 144 + i32.const 128 i32.const 490 i32.const 13 call $~lib/builtins/abort @@ -1223,7 +1223,7 @@ i32.eqz if i32.const 0 - i32.const 144 + i32.const 128 i32.const 502 i32.const 19 call $~lib/builtins/abort @@ -1239,7 +1239,7 @@ i32.lt_u if i32.const 0 - i32.const 144 + i32.const 128 i32.const 510 i32.const 13 call $~lib/builtins/abort @@ -1513,7 +1513,7 @@ i32.ne if i32.const 0 - i32.const 256 + i32.const 240 i32.const 109 i32.const 2 call $~lib/builtins/abort @@ -1532,7 +1532,7 @@ i32.and if i32.const 0 - i32.const 256 + i32.const 240 i32.const 112 i32.const 13 call $~lib/builtins/abort @@ -1562,98 +1562,83 @@ call $~lib/rt/pure/decrement end ) - (func $~lib/arraybuffer/ArrayBufferView#constructor (; 21 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/array/Array#constructor (; 21 ;) (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) (local $3 i32) (local $4 i32) - local.get $1 - i32.const 1073741808 - local.get $2 - i32.shr_u + (local $5 i32) + local.get $0 + i32.const 268435452 i32.gt_u if i32.const 32 i32.const 80 - i32.const 23 - i32.const 56 + i32.const 57 + i32.const 59 call $~lib/builtins/abort unreachable end - local.get $1 - local.get $2 + local.get $0 + i32.const 2 i32.shl - local.tee $3 + local.tee $4 i32.const 0 call $~lib/rt/tlsf/__alloc local.tee $2 i32.const 0 - local.get $3 + local.get $4 call $~lib/memory/memory.fill - local.get $0 - i32.eqz - if - i32.const 12 - i32.const 2 - call $~lib/rt/tlsf/__alloc - call $~lib/rt/pure/__retain - local.set $0 - end - local.get $0 + i32.const 16 + i32.const 3 + call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__retain + local.tee $1 i32.const 0 i32.store - local.get $0 + local.get $1 i32.const 0 i32.store offset=4 - local.get $0 + local.get $1 i32.const 0 i32.store offset=8 + local.get $1 + i32.const 0 + i32.store offset=12 local.get $2 - local.set $1 + local.set $3 local.get $2 - local.get $0 + local.get $1 i32.load - local.tee $4 + local.tee $5 i32.ne if - local.get $1 + local.get $3 call $~lib/rt/pure/__retain - local.set $1 - local.get $4 + local.set $3 + local.get $5 call $~lib/rt/pure/__release end - local.get $0 local.get $1 + local.get $3 i32.store - local.get $0 + local.get $1 local.get $2 i32.store offset=4 - local.get $0 - local.get $3 + local.get $1 + local.get $4 i32.store offset=8 - local.get $0 - ) - (func $~lib/array/Array#constructor (; 22 ;) (param $0 i32) (result i32) - (local $1 i32) - i32.const 16 - i32.const 3 - call $~lib/rt/tlsf/__alloc - call $~lib/rt/pure/__retain - local.get $0 - i32.const 2 - call $~lib/arraybuffer/ArrayBufferView#constructor - local.tee $1 - i32.const 0 - i32.store offset=12 local.get $1 local.get $0 i32.store offset=12 local.get $1 ) - (func $~lib/array/Array.isArray<~lib/array/Array | null> (; 23 ;) (param $0 i32) (result i32) + (func $~lib/array/Array.isArray<~lib/array/Array | null> (; 22 ;) (param $0 i32) (result i32) local.get $0 i32.const 0 i32.ne ) - (func $std/array/Ref#constructor (; 24 ;) (param $0 i32) (result i32) + (func $std/array/Ref#constructor (; 23 ;) (param $0 i32) (result i32) (local $1 i32) i32.const 4 i32.const 4 @@ -1664,6 +1649,60 @@ i32.store local.get $1 ) + (func $~lib/arraybuffer/ArrayBufferView#constructor (; 24 ;) (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + i32.const 1 + i32.const 0 + call $~lib/rt/tlsf/__alloc + local.tee $1 + i32.const 0 + i32.const 1 + call $~lib/memory/memory.fill + local.get $0 + i32.eqz + if + i32.const 12 + i32.const 2 + call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__retain + local.set $0 + end + local.get $0 + i32.const 0 + i32.store + local.get $0 + i32.const 0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=8 + local.get $1 + local.set $2 + local.get $1 + local.get $0 + i32.load + local.tee $3 + i32.ne + if + local.get $2 + call $~lib/rt/pure/__retain + local.set $2 + local.get $3 + call $~lib/rt/pure/__release + end + local.get $0 + local.get $2 + i32.store + local.get $0 + local.get $1 + i32.store offset=4 + local.get $0 + i32.const 1 + i32.store offset=8 + local.get $0 + ) (func $~lib/memory/memory.copy (; 25 ;) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) @@ -1943,9 +1982,9 @@ i32.load offset=12 i32.ge_u if - i32.const 448 - i32.const 512 - i32.const 93 + i32.const 496 + i32.const 80 + i32.const 104 i32.const 41 call $~lib/builtins/abort unreachable @@ -2082,9 +2121,9 @@ i32.load offset=12 i32.ge_u if - i32.const 448 - i32.const 512 - i32.const 93 + i32.const 496 + i32.const 80 + i32.const 104 i32.const 41 call $~lib/builtins/abort unreachable @@ -2188,7 +2227,7 @@ i32.eqz if i32.const 0 - i32.const 144 + i32.const 128 i32.const 570 i32.const 2 call $~lib/builtins/abort @@ -2329,7 +2368,7 @@ i32.gt_u if i32.const 32 - i32.const 512 + i32.const 80 i32.const 14 i32.const 47 call $~lib/builtins/abort @@ -2405,8 +2444,8 @@ i32.lt_s if i32.const 976 - i32.const 512 - i32.const 288 + i32.const 80 + i32.const 299 i32.const 20 call $~lib/builtins/abort unreachable @@ -2483,8 +2522,8 @@ i32.gt_u if i32.const 32 - i32.const 512 - i32.const 218 + i32.const 80 + i32.const 229 i32.const 59 call $~lib/builtins/abort unreachable @@ -2661,8 +2700,8 @@ i32.lt_s if i32.const 976 - i32.const 512 - i32.const 349 + i32.const 80 + i32.const 360 i32.const 20 call $~lib/builtins/abort unreachable @@ -3209,9 +3248,9 @@ i32.load offset=12 i32.ge_u if - i32.const 448 - i32.const 512 - i32.const 93 + i32.const 496 + i32.const 80 + i32.const 104 i32.const 41 call $~lib/builtins/abort unreachable @@ -3225,8 +3264,8 @@ local.get $0 call $~lib/rt/pure/__release i32.const 3920 - i32.const 512 - i32.const 97 + i32.const 80 + i32.const 108 i32.const 39 call $~lib/builtins/abort unreachable @@ -3317,9 +3356,9 @@ i32.load offset=12 i32.ge_u if - i32.const 448 - i32.const 512 - i32.const 93 + i32.const 496 + i32.const 80 + i32.const 104 i32.const 41 call $~lib/builtins/abort unreachable @@ -3339,9 +3378,9 @@ i32.const 0 i32.lt_s if - i32.const 448 - i32.const 512 - i32.const 109 + i32.const 496 + i32.const 80 + i32.const 120 i32.const 21 call $~lib/builtins/abort unreachable @@ -3746,8 +3785,8 @@ i32.ne if i32.const 0 - i32.const 304 - i32.const 619 + i32.const 288 + i32.const 625 i32.const 6 call $~lib/builtins/abort unreachable @@ -3820,9 +3859,9 @@ i32.load offset=12 i32.ge_u if - i32.const 448 - i32.const 512 - i32.const 93 + i32.const 496 + i32.const 80 + i32.const 104 i32.const 41 call $~lib/builtins/abort unreachable @@ -5157,9 +5196,9 @@ i32.load offset=12 i32.ge_u if - i32.const 448 - i32.const 512 - i32.const 93 + i32.const 496 + i32.const 80 + i32.const 104 i32.const 41 call $~lib/builtins/abort unreachable @@ -5803,8 +5842,8 @@ i32.eqz if i32.const 0 - i32.const 304 - i32.const 881 + i32.const 288 + i32.const 887 i32.const 2 call $~lib/builtins/abort unreachable @@ -5822,7 +5861,63 @@ local.get $0 i32.sub ) - (func $~lib/array/Array<~lib/array/Array>#__unchecked_set (; 129 ;) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/array/Array<~lib/array/Array>#constructor (; 129 ;) (result i32) + (local $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + i32.const 8 + i32.const 0 + call $~lib/rt/tlsf/__alloc + local.tee $1 + i32.const 0 + i32.const 8 + call $~lib/memory/memory.fill + i32.const 16 + i32.const 12 + call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__retain + local.tee $0 + i32.const 0 + i32.store + local.get $0 + i32.const 0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=8 + local.get $0 + i32.const 0 + i32.store offset=12 + local.get $1 + local.set $2 + local.get $1 + local.get $0 + i32.load + local.tee $3 + i32.ne + if + local.get $2 + call $~lib/rt/pure/__retain + local.set $2 + local.get $3 + call $~lib/rt/pure/__release + end + local.get $0 + local.get $2 + i32.store + local.get $0 + local.get $1 + i32.store offset=4 + local.get $0 + i32.const 8 + i32.store offset=8 + local.get $0 + i32.const 2 + i32.store offset=12 + local.get $0 + ) + (func $~lib/array/Array<~lib/array/Array>#__unchecked_set (; 130 ;) (param $0 i32) (param $1 i32) (param $2 i32) local.get $0 i32.load offset=4 local.get $1 @@ -5843,7 +5938,7 @@ call $~lib/rt/pure/__release end ) - (func $~lib/array/Array<~lib/array/Array>#__set (; 130 ;) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/array/Array<~lib/array/Array>#__set (; 131 ;) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) local.get $1 local.get $0 @@ -5854,9 +5949,9 @@ i32.const 0 i32.lt_s if - i32.const 448 - i32.const 512 - i32.const 109 + i32.const 496 + i32.const 80 + i32.const 120 i32.const 21 call $~lib/builtins/abort unreachable @@ -5876,23 +5971,12 @@ local.get $2 call $~lib/array/Array<~lib/array/Array>#__unchecked_set ) - (func $std/array/createReverseOrderedNestedArray (; 131 ;) (result i32) + (func $std/array/createReverseOrderedNestedArray (; 132 ;) (result i32) (local $0 i32) (local $1 i32) (local $2 i32) - i32.const 16 - i32.const 12 - call $~lib/rt/tlsf/__alloc - call $~lib/rt/pure/__retain - i32.const 2 - i32.const 2 - call $~lib/arraybuffer/ArrayBufferView#constructor - local.tee $1 - i32.const 0 - i32.store offset=12 - local.get $1 - i32.const 2 - i32.store offset=12 + call $~lib/array/Array<~lib/array/Array>#constructor + local.set $1 loop $for-loop|0 local.get $0 i32.const 2 @@ -5921,7 +6005,7 @@ end local.get $1 ) - (func $start:std/array~anonymous|47 (; 132 ;) (param $0 i32) (param $1 i32) (result i32) + (func $start:std/array~anonymous|47 (; 133 ;) (param $0 i32) (param $1 i32) (result i32) local.get $0 i32.const 0 call $~lib/array/Array#__get @@ -5930,7 +6014,7 @@ call $~lib/array/Array#__get i32.sub ) - (func $~lib/array/Array<~lib/array/Array>#sort (; 133 ;) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array<~lib/array/Array>#sort (; 134 ;) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -5984,7 +6068,7 @@ local.get $0 call $~lib/rt/pure/__retain ) - (func $std/array/isSorted<~lib/array/Array> (; 134 ;) (param $0 i32) (param $1 i32) (result i32) + (func $std/array/isSorted<~lib/array/Array> (; 135 ;) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -6036,7 +6120,7 @@ end i32.const 1 ) - (func $std/array/assertSorted<~lib/array/Array> (; 135 ;) (param $0 i32) (param $1 i32) + (func $std/array/assertSorted<~lib/array/Array> (; 136 ;) (param $0 i32) (param $1 i32) local.get $0 local.get $1 call $~lib/array/Array<~lib/array/Array>#sort @@ -6046,8 +6130,8 @@ i32.eqz if i32.const 0 - i32.const 304 - i32.const 881 + i32.const 288 + i32.const 887 i32.const 2 call $~lib/builtins/abort unreachable @@ -6055,27 +6139,72 @@ local.get $0 call $~lib/rt/pure/__release ) - (func $std/array/createReverseOrderedElementsArray (; 136 ;) (result i32) + (func $~lib/array/Array>#constructor (; 137 ;) (result i32) (local $0 i32) (local $1 i32) (local $2 i32) + (local $3 i32) + i32.const 2048 + i32.const 0 + call $~lib/rt/tlsf/__alloc + local.tee $1 + i32.const 0 + i32.const 2048 + call $~lib/memory/memory.fill i32.const 16 i32.const 14 call $~lib/rt/tlsf/__alloc call $~lib/rt/pure/__retain - i32.const 512 - i32.const 2 - call $~lib/arraybuffer/ArrayBufferView#constructor - local.tee $1 + local.tee $0 i32.const 0 - i32.store offset=12 - local.get $1 - i32.const 512 - i32.store offset=12 - loop $for-loop|0 - local.get $0 - i32.const 512 - i32.lt_s + i32.store + local.get $0 + i32.const 0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=8 + local.get $0 + i32.const 0 + i32.store offset=12 + local.get $1 + local.set $2 + local.get $1 + local.get $0 + i32.load + local.tee $3 + i32.ne + if + local.get $2 + call $~lib/rt/pure/__retain + local.set $2 + local.get $3 + call $~lib/rt/pure/__release + end + local.get $0 + local.get $2 + i32.store + local.get $0 + local.get $1 + i32.store offset=4 + local.get $0 + i32.const 2048 + i32.store offset=8 + local.get $0 + i32.const 512 + i32.store offset=12 + local.get $0 + ) + (func $std/array/createReverseOrderedElementsArray (; 138 ;) (result i32) + (local $0 i32) + (local $1 i32) + (local $2 i32) + call $~lib/array/Array>#constructor + local.set $1 + loop $for-loop|0 + local.get $0 + i32.const 512 + i32.lt_s if i32.const 4 i32.const 13 @@ -6101,14 +6230,14 @@ end local.get $1 ) - (func $start:std/array~anonymous|48 (; 137 ;) (param $0 i32) (param $1 i32) (result i32) + (func $start:std/array~anonymous|48 (; 139 ;) (param $0 i32) (param $1 i32) (result i32) local.get $0 i32.load local.get $1 i32.load i32.sub ) - (func $std/array/isSorted<~lib/string/String | null> (; 138 ;) (param $0 i32) (result i32) + (func $std/array/isSorted<~lib/string/String | null> (; 140 ;) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -6159,7 +6288,7 @@ end i32.const 1 ) - (func $std/array/assertSorted<~lib/string/String | null> (; 139 ;) (param $0 i32) + (func $std/array/assertSorted<~lib/string/String | null> (; 141 ;) (param $0 i32) local.get $0 i32.const 55 call $~lib/array/Array<~lib/array/Array>#sort @@ -6168,8 +6297,8 @@ i32.eqz if i32.const 0 - i32.const 304 - i32.const 881 + i32.const 288 + i32.const 887 i32.const 2 call $~lib/builtins/abort unreachable @@ -6177,7 +6306,7 @@ local.get $0 call $~lib/rt/pure/__release ) - (func $~lib/string/String#get:length (; 140 ;) (param $0 i32) (result i32) + (func $~lib/string/String#get:length (; 142 ;) (param $0 i32) (result i32) local.get $0 i32.const 16 i32.sub @@ -6185,7 +6314,7 @@ i32.const 1 i32.shr_u ) - (func $~lib/util/string/compareImpl (; 141 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/util/string/compareImpl (; 143 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) local.get $0 @@ -6261,7 +6390,7 @@ end i32.const 0 ) - (func $~lib/util/sort/COMPARATOR<~lib/string/String | null>~anonymous|0 (; 142 ;) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/util/sort/COMPARATOR<~lib/string/String | null>~anonymous|0 (; 144 ;) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) i32.const 1 @@ -6315,7 +6444,7 @@ select call $~lib/util/string/compareImpl ) - (func $~lib/string/String.__eq (; 143 ;) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/string/String.__eq (; 145 ;) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) local.get $0 local.get $1 @@ -6349,7 +6478,7 @@ call $~lib/util/string/compareImpl i32.eqz ) - (func $std/array/isArraysEqual<~lib/string/String | null> (; 144 ;) (param $0 i32) (param $1 i32) (result i32) + (func $std/array/isArraysEqual<~lib/string/String | null> (; 146 ;) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -6407,7 +6536,63 @@ end i32.const 1 ) - (func $~lib/string/String#charAt (; 145 ;) (param $0 i32) (result i32) + (func $~lib/array/Array<~lib/string/String>#constructor (; 147 ;) (result i32) + (local $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + i32.const 1600 + i32.const 0 + call $~lib/rt/tlsf/__alloc + local.tee $1 + i32.const 0 + i32.const 1600 + call $~lib/memory/memory.fill + i32.const 16 + i32.const 16 + call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__retain + local.tee $0 + i32.const 0 + i32.store + local.get $0 + i32.const 0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=8 + local.get $0 + i32.const 0 + i32.store offset=12 + local.get $1 + local.set $2 + local.get $1 + local.get $0 + i32.load + local.tee $3 + i32.ne + if + local.get $2 + call $~lib/rt/pure/__retain + local.set $2 + local.get $3 + call $~lib/rt/pure/__release + end + local.get $0 + local.get $2 + i32.store + local.get $0 + local.get $1 + i32.store offset=4 + local.get $0 + i32.const 1600 + i32.store offset=8 + local.get $0 + i32.const 400 + i32.store offset=12 + local.get $0 + ) + (func $~lib/string/String#charAt (; 148 ;) (param $0 i32) (result i32) (local $1 i32) local.get $0 i32.const 4080 @@ -6431,7 +6616,7 @@ local.get $1 call $~lib/rt/pure/__retain ) - (func $~lib/string/String#concat (; 146 ;) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/string/String#concat (; 149 ;) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -6490,7 +6675,7 @@ call $~lib/rt/pure/__release local.get $2 ) - (func $~lib/string/String.__concat (; 147 ;) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/string/String.__concat (; 150 ;) (param $0 i32) (param $1 i32) (result i32) local.get $0 i32.const 5232 local.get $0 @@ -6498,7 +6683,7 @@ local.get $1 call $~lib/string/String#concat ) - (func $std/array/createRandomString (; 148 ;) (param $0 i32) (result i32) + (func $std/array/createRandomString (; 151 ;) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -6547,30 +6732,19 @@ end local.get $1 ) - (func $std/array/createRandomStringArray (; 149 ;) (result i32) + (func $std/array/createRandomStringArray (; 152 ;) (result i32) (local $0 i32) (local $1 i32) (local $2 i32) - i32.const 16 - i32.const 16 - call $~lib/rt/tlsf/__alloc - call $~lib/rt/pure/__retain - i32.const 400 - i32.const 2 - call $~lib/arraybuffer/ArrayBufferView#constructor - local.tee $0 - i32.const 0 - i32.store offset=12 - local.get $0 - i32.const 400 - i32.store offset=12 + call $~lib/array/Array<~lib/string/String>#constructor + local.set $1 loop $for-loop|0 - local.get $1 + local.get $0 i32.const 400 i32.lt_s if - local.get $0 local.get $1 + local.get $0 call $~lib/math/NativeMath.random f64.const 32 f64.mul @@ -6580,16 +6754,16 @@ call $~lib/array/Array<~lib/array/Array>#__set local.get $2 call $~lib/rt/pure/__release - local.get $1 + local.get $0 i32.const 1 i32.add - local.set $1 + local.set $0 br $for-loop|0 end end - local.get $0 + local.get $1 ) - (func $~lib/string/String#substring (; 150 ;) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/string/String#substring (; 153 ;) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -6663,7 +6837,7 @@ local.get $2 call $~lib/rt/pure/__retain ) - (func $~lib/util/string/joinBooleanArray (; 151 ;) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/util/string/joinBooleanArray (; 154 ;) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -6803,7 +6977,7 @@ end local.get $3 ) - (func $~lib/util/number/decimalCount32 (; 152 ;) (param $0 i32) (result i32) + (func $~lib/util/number/decimalCount32 (; 155 ;) (param $0 i32) (result i32) i32.const 1 i32.const 2 local.get $0 @@ -6851,7 +7025,7 @@ i32.lt_u select ) - (func $~lib/util/number/utoa_simple (; 153 ;) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/util/number/utoa_simple (; 156 ;) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) loop $do-continue|0 local.get $1 @@ -6875,7 +7049,7 @@ br_if $do-continue|0 end ) - (func $~lib/util/number/itoa32 (; 154 ;) (param $0 i32) (result i32) + (func $~lib/util/number/itoa32 (; 157 ;) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -6917,7 +7091,7 @@ local.get $2 call $~lib/rt/pure/__retain ) - (func $~lib/util/number/itoa_stream (; 155 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/util/number/itoa_stream (; 158 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $0 local.get $1 i32.const 1 @@ -6959,7 +7133,7 @@ end local.get $2 ) - (func $~lib/util/string/joinIntegerArray (; 156 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/util/string/joinIntegerArray (; 159 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -7066,7 +7240,7 @@ end local.get $3 ) - (func $~lib/array/Array#join (; 157 ;) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array#join (; 160 ;) (param $0 i32) (param $1 i32) (result i32) local.get $0 i32.load offset=4 local.get $0 @@ -7074,7 +7248,7 @@ local.get $1 call $~lib/util/string/joinIntegerArray ) - (func $~lib/util/number/utoa32 (; 158 ;) (param $0 i32) (result i32) + (func $~lib/util/number/utoa32 (; 161 ;) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) local.get $0 @@ -7097,7 +7271,7 @@ local.get $2 call $~lib/rt/pure/__retain ) - (func $~lib/util/number/itoa_stream (; 159 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/util/number/itoa_stream (; 162 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $0 local.get $1 i32.const 1 @@ -7121,7 +7295,7 @@ call $~lib/util/number/utoa_simple local.get $0 ) - (func $~lib/util/string/joinIntegerArray (; 160 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/util/string/joinIntegerArray (; 163 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -7228,7 +7402,7 @@ end local.get $3 ) - (func $~lib/array/Array#join (; 161 ;) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array#join (; 164 ;) (param $0 i32) (param $1 i32) (result i32) local.get $0 i32.load offset=4 local.get $0 @@ -7236,7 +7410,7 @@ local.get $1 call $~lib/util/string/joinIntegerArray ) - (func $~lib/util/number/genDigits (; 162 ;) (param $0 i32) (param $1 i64) (param $2 i32) (param $3 i64) (param $4 i32) (param $5 i64) (param $6 i32) (result i32) + (func $~lib/util/number/genDigits (; 165 ;) (param $0 i32) (param $1 i64) (param $2 i32) (param $3 i64) (param $4 i32) (param $5 i64) (param $6 i32) (result i32) (local $7 i32) (local $8 i32) (local $9 i64) @@ -7630,7 +7804,7 @@ local.get $6 end ) - (func $~lib/util/number/prettify (; 163 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/util/number/prettify (; 166 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) local.get $2 i32.eqz @@ -7875,7 +8049,7 @@ end end ) - (func $~lib/util/number/dtoa_core (; 164 ;) (param $0 i32) (param $1 f64) (result i32) + (func $~lib/util/number/dtoa_core (; 167 ;) (param $0 i32) (param $1 f64) (result i32) (local $2 i64) (local $3 i32) (local $4 i64) @@ -8163,7 +8337,7 @@ local.get $10 i32.add ) - (func $~lib/util/number/dtoa (; 165 ;) (param $0 f64) (result i32) + (func $~lib/util/number/dtoa (; 168 ;) (param $0 f64) (result i32) (local $1 i32) (local $2 i32) local.get $0 @@ -8215,7 +8389,7 @@ local.get $1 call $~lib/rt/tlsf/__free ) - (func $~lib/util/number/dtoa_stream (; 166 ;) (param $0 i32) (param $1 i32) (param $2 f64) (result i32) + (func $~lib/util/number/dtoa_stream (; 169 ;) (param $0 i32) (param $1 i32) (param $2 f64) (result i32) (local $3 i32) local.get $0 local.get $1 @@ -8286,7 +8460,7 @@ local.get $2 call $~lib/util/number/dtoa_core ) - (func $~lib/util/string/joinFloatArray (; 167 ;) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/util/string/joinFloatArray (; 170 ;) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -8393,7 +8567,7 @@ end local.get $2 ) - (func $~lib/util/string/joinReferenceArray<~lib/string/String | null> (; 168 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/util/string/joinReferenceArray<~lib/string/String | null> (; 171 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -8561,7 +8735,7 @@ call $~lib/rt/pure/__release local.get $1 ) - (func $~lib/array/Array<~lib/string/String | null>#join (; 169 ;) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array<~lib/string/String | null>#join (; 172 ;) (param $0 i32) (param $1 i32) (result i32) local.get $0 i32.load offset=4 local.get $0 @@ -8569,7 +8743,7 @@ local.get $1 call $~lib/util/string/joinReferenceArray<~lib/string/String | null> ) - (func $~lib/util/string/joinReferenceArray (; 170 ;) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/util/string/joinReferenceArray (; 173 ;) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -8721,19 +8895,19 @@ call $~lib/rt/pure/__release local.get $1 ) - (func $~lib/array/Array#join (; 171 ;) (param $0 i32) (result i32) + (func $~lib/array/Array#join (; 174 ;) (param $0 i32) (result i32) local.get $0 i32.load offset=4 local.get $0 i32.load offset=12 call $~lib/util/string/joinReferenceArray ) - (func $~lib/array/Array#toString (; 172 ;) (param $0 i32) (result i32) + (func $~lib/array/Array#toString (; 175 ;) (param $0 i32) (result i32) local.get $0 i32.const 5360 call $~lib/array/Array#join ) - (func $~lib/util/number/itoa_stream (; 173 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/util/number/itoa_stream (; 176 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) local.get $0 local.get $1 @@ -8788,7 +8962,7 @@ end local.get $2 ) - (func $~lib/util/string/joinIntegerArray (; 174 ;) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/util/string/joinIntegerArray (; 177 ;) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -8891,7 +9065,7 @@ end local.get $2 ) - (func $~lib/util/number/itoa_stream (; 175 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/util/number/itoa_stream (; 178 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $0 local.get $1 i32.const 1 @@ -8921,7 +9095,7 @@ call $~lib/util/number/utoa_simple local.get $1 ) - (func $~lib/util/string/joinIntegerArray (; 176 ;) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/util/string/joinIntegerArray (; 179 ;) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -9028,7 +9202,7 @@ end local.get $2 ) - (func $~lib/util/number/decimalCount64 (; 177 ;) (param $0 i64) (result i32) + (func $~lib/util/number/decimalCount64 (; 180 ;) (param $0 i64) (result i32) i32.const 10 i32.const 11 i32.const 12 @@ -9081,7 +9255,7 @@ i64.lt_u select ) - (func $~lib/util/number/utoa_simple (; 178 ;) (param $0 i32) (param $1 i64) (param $2 i32) + (func $~lib/util/number/utoa_simple (; 181 ;) (param $0 i32) (param $1 i64) (param $2 i32) (local $3 i64) loop $do-continue|0 local.get $1 @@ -9108,7 +9282,7 @@ br_if $do-continue|0 end ) - (func $~lib/util/number/utoa64 (; 179 ;) (param $0 i64) (result i32) + (func $~lib/util/number/utoa64 (; 182 ;) (param $0 i64) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -9151,7 +9325,7 @@ local.get $2 call $~lib/rt/pure/__retain ) - (func $~lib/util/number/itoa_stream (; 180 ;) (param $0 i32) (param $1 i32) (param $2 i64) (result i32) + (func $~lib/util/number/itoa_stream (; 183 ;) (param $0 i32) (param $1 i32) (param $2 i64) (result i32) (local $3 i32) local.get $0 local.get $1 @@ -9191,7 +9365,7 @@ end local.get $1 ) - (func $~lib/util/string/joinIntegerArray (; 181 ;) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/util/string/joinIntegerArray (; 184 ;) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -9298,7 +9472,7 @@ end local.get $2 ) - (func $~lib/util/number/itoa64 (; 182 ;) (param $0 i64) (result i32) + (func $~lib/util/number/itoa64 (; 185 ;) (param $0 i64) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -9362,7 +9536,7 @@ local.get $3 call $~lib/rt/pure/__retain ) - (func $~lib/util/number/itoa_stream (; 183 ;) (param $0 i32) (param $1 i32) (param $2 i64) (result i32) + (func $~lib/util/number/itoa_stream (; 186 ;) (param $0 i32) (param $1 i32) (param $2 i64) (result i32) (local $3 i32) (local $4 i32) local.get $0 @@ -9423,7 +9597,7 @@ end local.get $3 ) - (func $~lib/util/string/joinIntegerArray (; 184 ;) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/util/string/joinIntegerArray (; 187 ;) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -9530,12 +9704,12 @@ end local.get $2 ) - (func $~lib/array/Array<~lib/string/String | null>#toString (; 185 ;) (param $0 i32) (result i32) + (func $~lib/array/Array<~lib/string/String | null>#toString (; 188 ;) (param $0 i32) (result i32) local.get $0 i32.const 5360 call $~lib/array/Array<~lib/string/String | null>#join ) - (func $~lib/util/string/joinReferenceArray<~lib/array/Array> (; 186 ;) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/util/string/joinReferenceArray<~lib/array/Array> (; 189 ;) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -9699,7 +9873,7 @@ call $~lib/rt/pure/__release local.get $1 ) - (func $~lib/util/number/itoa_stream (; 187 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/util/number/itoa_stream (; 190 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $0 local.get $1 i32.const 1 @@ -9729,7 +9903,7 @@ call $~lib/util/number/utoa_simple local.get $1 ) - (func $~lib/util/string/joinIntegerArray (; 188 ;) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/util/string/joinIntegerArray (; 191 ;) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -9832,14 +10006,14 @@ end local.get $2 ) - (func $~lib/array/Array#toString (; 189 ;) (param $0 i32) (result i32) + (func $~lib/array/Array#toString (; 192 ;) (param $0 i32) (result i32) local.get $0 i32.load offset=4 local.get $0 i32.load offset=12 call $~lib/util/string/joinIntegerArray ) - (func $~lib/util/string/joinReferenceArray<~lib/array/Array> (; 190 ;) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/util/string/joinReferenceArray<~lib/array/Array> (; 193 ;) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -10003,12 +10177,12 @@ call $~lib/rt/pure/__release local.get $1 ) - (func $~lib/array/Array#toString (; 191 ;) (param $0 i32) (result i32) + (func $~lib/array/Array#toString (; 194 ;) (param $0 i32) (result i32) local.get $0 i32.const 5360 call $~lib/array/Array#join ) - (func $~lib/util/string/joinReferenceArray<~lib/array/Array> (; 192 ;) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/util/string/joinReferenceArray<~lib/array/Array> (; 195 ;) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -10172,14 +10346,14 @@ call $~lib/rt/pure/__release local.get $1 ) - (func $~lib/array/Array<~lib/array/Array>#toString (; 193 ;) (param $0 i32) (result i32) + (func $~lib/array/Array<~lib/array/Array>#toString (; 196 ;) (param $0 i32) (result i32) local.get $0 i32.load offset=4 local.get $0 i32.load offset=12 call $~lib/util/string/joinReferenceArray<~lib/array/Array> ) - (func $~lib/util/string/joinReferenceArray<~lib/array/Array<~lib/array/Array>> (; 194 ;) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/util/string/joinReferenceArray<~lib/array/Array<~lib/array/Array>> (; 197 ;) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -10343,7 +10517,7 @@ call $~lib/rt/pure/__release local.get $1 ) - (func $start:std/array (; 195 ;) + (func $start:std/array (; 198 ;) (local $0 i32) (local $1 i32) (local $2 i32) @@ -10414,8 +10588,8 @@ call $~lib/array/Array.isArray<~lib/array/Array | null> if i32.const 0 - i32.const 304 - i32.const 40 + i32.const 288 + i32.const 46 i32.const 2 call $~lib/builtins/abort unreachable @@ -10426,8 +10600,6 @@ i32.const 5 call $~lib/rt/tlsf/__alloc call $~lib/rt/pure/__retain - i32.const 1 - i32.const 0 call $~lib/arraybuffer/ArrayBufferView#constructor local.set $1 global.get $std/array/arr @@ -10435,8 +10607,8 @@ i32.eqz if i32.const 0 - i32.const 304 - i32.const 46 + i32.const 288 + i32.const 52 i32.const 2 call $~lib/builtins/abort unreachable @@ -10447,7 +10619,7 @@ i32.const 5 i32.const 0 i32.const 6 - i32.const 384 + i32.const 432 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain local.tee $0 @@ -10460,7 +10632,7 @@ i32.const 5 i32.const 0 i32.const 6 - i32.const 416 + i32.const 464 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain local.tee $1 @@ -10468,8 +10640,8 @@ i32.eqz if i32.const 0 - i32.const 304 - i32.const 54 + i32.const 288 + i32.const 60 i32.const 2 call $~lib/builtins/abort unreachable @@ -10492,8 +10664,8 @@ i32.eqz if i32.const 0 - i32.const 304 - i32.const 57 + i32.const 288 + i32.const 63 i32.const 2 call $~lib/builtins/abort unreachable @@ -10516,8 +10688,8 @@ i32.eqz if i32.const 0 - i32.const 304 - i32.const 60 + i32.const 288 + i32.const 66 i32.const 2 call $~lib/builtins/abort unreachable @@ -10540,8 +10712,8 @@ i32.eqz if i32.const 0 - i32.const 304 - i32.const 63 + i32.const 288 + i32.const 69 i32.const 2 call $~lib/builtins/abort unreachable @@ -10564,8 +10736,8 @@ i32.eqz if i32.const 0 - i32.const 304 - i32.const 66 + i32.const 288 + i32.const 72 i32.const 2 call $~lib/builtins/abort unreachable @@ -10607,8 +10779,8 @@ i32.eqz if i32.const 0 - i32.const 304 - i32.const 73 + i32.const 288 + i32.const 79 i32.const 2 call $~lib/builtins/abort unreachable @@ -10632,8 +10804,8 @@ i32.eqz if i32.const 0 - i32.const 304 - i32.const 76 + i32.const 288 + i32.const 82 i32.const 2 call $~lib/builtins/abort unreachable @@ -10657,8 +10829,8 @@ i32.eqz if i32.const 0 - i32.const 304 - i32.const 79 + i32.const 288 + i32.const 85 i32.const 2 call $~lib/builtins/abort unreachable @@ -10682,8 +10854,8 @@ i32.eqz if i32.const 0 - i32.const 304 - i32.const 82 + i32.const 288 + i32.const 88 i32.const 2 call $~lib/builtins/abort unreachable @@ -10707,8 +10879,8 @@ i32.eqz if i32.const 0 - i32.const 304 - i32.const 85 + i32.const 288 + i32.const 91 i32.const 2 call $~lib/builtins/abort unreachable @@ -10729,8 +10901,8 @@ i32.load offset=12 if i32.const 0 - i32.const 304 - i32.const 91 + i32.const 288 + i32.const 97 i32.const 2 call $~lib/builtins/abort unreachable @@ -10739,8 +10911,8 @@ call $std/array/internalCapacity if i32.const 0 - i32.const 304 - i32.const 92 + i32.const 288 + i32.const 98 i32.const 2 call $~lib/builtins/abort unreachable @@ -10755,8 +10927,8 @@ i32.ne if i32.const 0 - i32.const 304 - i32.const 96 + i32.const 288 + i32.const 102 i32.const 2 call $~lib/builtins/abort unreachable @@ -10767,8 +10939,8 @@ i32.ne if i32.const 0 - i32.const 304 - i32.const 97 + i32.const 288 + i32.const 103 i32.const 2 call $~lib/builtins/abort unreachable @@ -10779,8 +10951,8 @@ i32.ne if i32.const 0 - i32.const 304 - i32.const 98 + i32.const 288 + i32.const 104 i32.const 2 call $~lib/builtins/abort unreachable @@ -10791,8 +10963,8 @@ i32.ne if i32.const 0 - i32.const 304 - i32.const 102 + i32.const 288 + i32.const 108 i32.const 2 call $~lib/builtins/abort unreachable @@ -10801,8 +10973,8 @@ i32.load offset=12 if i32.const 0 - i32.const 304 - i32.const 103 + i32.const 288 + i32.const 109 i32.const 2 call $~lib/builtins/abort unreachable @@ -10813,8 +10985,8 @@ i32.ne if i32.const 0 - i32.const 304 - i32.const 104 + i32.const 288 + i32.const 110 i32.const 2 call $~lib/builtins/abort unreachable @@ -10828,8 +11000,8 @@ i32.ne if i32.const 0 - i32.const 304 - i32.const 108 + i32.const 288 + i32.const 114 i32.const 2 call $~lib/builtins/abort unreachable @@ -10840,8 +11012,8 @@ i32.ne if i32.const 0 - i32.const 304 - i32.const 109 + i32.const 288 + i32.const 115 i32.const 2 call $~lib/builtins/abort unreachable @@ -10853,8 +11025,8 @@ i32.ne if i32.const 0 - i32.const 304 - i32.const 110 + i32.const 288 + i32.const 116 i32.const 2 call $~lib/builtins/abort unreachable @@ -10868,8 +11040,8 @@ i32.ne if i32.const 0 - i32.const 304 - i32.const 114 + i32.const 288 + i32.const 120 i32.const 2 call $~lib/builtins/abort unreachable @@ -10880,8 +11052,8 @@ i32.ne if i32.const 0 - i32.const 304 - i32.const 115 + i32.const 288 + i32.const 121 i32.const 2 call $~lib/builtins/abort unreachable @@ -10893,8 +11065,8 @@ i32.ne if i32.const 0 - i32.const 304 - i32.const 116 + i32.const 288 + i32.const 122 i32.const 2 call $~lib/builtins/abort unreachable @@ -10906,8 +11078,8 @@ i32.ne if i32.const 0 - i32.const 304 - i32.const 117 + i32.const 288 + i32.const 123 i32.const 2 call $~lib/builtins/abort unreachable @@ -10921,8 +11093,8 @@ i32.ne if i32.const 0 - i32.const 304 - i32.const 121 + i32.const 288 + i32.const 127 i32.const 2 call $~lib/builtins/abort unreachable @@ -10933,8 +11105,8 @@ i32.ne if i32.const 0 - i32.const 304 - i32.const 122 + i32.const 288 + i32.const 128 i32.const 2 call $~lib/builtins/abort unreachable @@ -10946,8 +11118,8 @@ i32.ne if i32.const 0 - i32.const 304 - i32.const 123 + i32.const 288 + i32.const 129 i32.const 2 call $~lib/builtins/abort unreachable @@ -10959,8 +11131,8 @@ i32.ne if i32.const 0 - i32.const 304 - i32.const 124 + i32.const 288 + i32.const 130 i32.const 2 call $~lib/builtins/abort unreachable @@ -10972,8 +11144,8 @@ i32.ne if i32.const 0 - i32.const 304 - i32.const 125 + i32.const 288 + i32.const 131 i32.const 2 call $~lib/builtins/abort unreachable @@ -11004,8 +11176,8 @@ i32.load offset=12 if i32.const 0 - i32.const 304 - i32.const 133 + i32.const 288 + i32.const 139 i32.const 2 call $~lib/builtins/abort unreachable @@ -11029,8 +11201,8 @@ i32.ne if i32.const 0 - i32.const 304 - i32.const 142 + i32.const 288 + i32.const 148 i32.const 2 call $~lib/builtins/abort unreachable @@ -11041,8 +11213,8 @@ i32.ne if i32.const 0 - i32.const 304 - i32.const 143 + i32.const 288 + i32.const 149 i32.const 2 call $~lib/builtins/abort unreachable @@ -11053,8 +11225,8 @@ i32.ne if i32.const 0 - i32.const 304 - i32.const 144 + i32.const 288 + i32.const 150 i32.const 2 call $~lib/builtins/abort unreachable @@ -11075,8 +11247,8 @@ i32.ne if i32.const 0 - i32.const 304 - i32.const 147 + i32.const 288 + i32.const 153 i32.const 2 call $~lib/builtins/abort unreachable @@ -11088,8 +11260,8 @@ i32.ne if i32.const 0 - i32.const 304 - i32.const 149 + i32.const 288 + i32.const 155 i32.const 2 call $~lib/builtins/abort unreachable @@ -11101,8 +11273,8 @@ i32.ne if i32.const 0 - i32.const 304 - i32.const 150 + i32.const 288 + i32.const 156 i32.const 2 call $~lib/builtins/abort unreachable @@ -11114,8 +11286,8 @@ i32.ne if i32.const 0 - i32.const 304 - i32.const 151 + i32.const 288 + i32.const 157 i32.const 2 call $~lib/builtins/abort unreachable @@ -11138,9 +11310,9 @@ i32.ne if i32.const 0 - i32.const 304 - i32.const 158 - i32.const 2 + i32.const 288 + i32.const 164 + i32.const 2 call $~lib/builtins/abort unreachable end @@ -11150,8 +11322,8 @@ i32.ne if i32.const 0 - i32.const 304 - i32.const 159 + i32.const 288 + i32.const 165 i32.const 2 call $~lib/builtins/abort unreachable @@ -11162,8 +11334,8 @@ i32.ne if i32.const 0 - i32.const 304 - i32.const 160 + i32.const 288 + i32.const 166 i32.const 2 call $~lib/builtins/abort unreachable @@ -11175,8 +11347,8 @@ i32.ne if i32.const 0 - i32.const 304 - i32.const 161 + i32.const 288 + i32.const 167 i32.const 2 call $~lib/builtins/abort unreachable @@ -11188,8 +11360,8 @@ i32.ne if i32.const 0 - i32.const 304 - i32.const 162 + i32.const 288 + i32.const 168 i32.const 2 call $~lib/builtins/abort unreachable @@ -11201,8 +11373,8 @@ i32.ne if i32.const 0 - i32.const 304 - i32.const 163 + i32.const 288 + i32.const 169 i32.const 2 call $~lib/builtins/abort unreachable @@ -11214,8 +11386,8 @@ i32.ne if i32.const 0 - i32.const 304 - i32.const 164 + i32.const 288 + i32.const 170 i32.const 2 call $~lib/builtins/abort unreachable @@ -11227,8 +11399,8 @@ i32.ne if i32.const 0 - i32.const 304 - i32.const 165 + i32.const 288 + i32.const 171 i32.const 2 call $~lib/builtins/abort unreachable @@ -11242,8 +11414,8 @@ i32.ne if i32.const 0 - i32.const 304 - i32.const 168 + i32.const 288 + i32.const 174 i32.const 2 call $~lib/builtins/abort unreachable @@ -11258,8 +11430,8 @@ i32.load offset=12 if i32.const 0 - i32.const 304 - i32.const 176 + i32.const 288 + i32.const 182 i32.const 2 call $~lib/builtins/abort unreachable @@ -11276,8 +11448,8 @@ i32.ne if i32.const 0 - i32.const 304 - i32.const 178 + i32.const 288 + i32.const 184 i32.const 2 call $~lib/builtins/abort unreachable @@ -11286,8 +11458,8 @@ i32.load offset=12 if i32.const 0 - i32.const 304 - i32.const 179 + i32.const 288 + i32.const 185 i32.const 2 call $~lib/builtins/abort unreachable @@ -11324,8 +11496,8 @@ i32.eqz if i32.const 0 - i32.const 304 - i32.const 186 + i32.const 288 + i32.const 192 i32.const 2 call $~lib/builtins/abort unreachable @@ -11357,8 +11529,8 @@ i32.eqz if i32.const 0 - i32.const 304 - i32.const 188 + i32.const 288 + i32.const 194 i32.const 2 call $~lib/builtins/abort unreachable @@ -11389,8 +11561,8 @@ i32.eqz if i32.const 0 - i32.const 304 - i32.const 190 + i32.const 288 + i32.const 196 i32.const 2 call $~lib/builtins/abort unreachable @@ -11421,8 +11593,8 @@ i32.eqz if i32.const 0 - i32.const 304 - i32.const 192 + i32.const 288 + i32.const 198 i32.const 2 call $~lib/builtins/abort unreachable @@ -11453,8 +11625,8 @@ i32.eqz if i32.const 0 - i32.const 304 - i32.const 194 + i32.const 288 + i32.const 200 i32.const 2 call $~lib/builtins/abort unreachable @@ -11485,8 +11657,8 @@ i32.eqz if i32.const 0 - i32.const 304 - i32.const 196 + i32.const 288 + i32.const 202 i32.const 2 call $~lib/builtins/abort unreachable @@ -11517,8 +11689,8 @@ i32.eqz if i32.const 0 - i32.const 304 - i32.const 198 + i32.const 288 + i32.const 204 i32.const 2 call $~lib/builtins/abort unreachable @@ -11549,8 +11721,8 @@ i32.eqz if i32.const 0 - i32.const 304 - i32.const 200 + i32.const 288 + i32.const 206 i32.const 2 call $~lib/builtins/abort unreachable @@ -11581,8 +11753,8 @@ i32.eqz if i32.const 0 - i32.const 304 - i32.const 202 + i32.const 288 + i32.const 208 i32.const 2 call $~lib/builtins/abort unreachable @@ -11613,8 +11785,8 @@ i32.eqz if i32.const 0 - i32.const 304 - i32.const 204 + i32.const 288 + i32.const 210 i32.const 2 call $~lib/builtins/abort unreachable @@ -11645,8 +11817,8 @@ i32.eqz if i32.const 0 - i32.const 304 - i32.const 206 + i32.const 288 + i32.const 212 i32.const 2 call $~lib/builtins/abort unreachable @@ -11678,8 +11850,8 @@ i32.eqz if i32.const 0 - i32.const 304 - i32.const 208 + i32.const 288 + i32.const 214 i32.const 2 call $~lib/builtins/abort unreachable @@ -11743,8 +11915,8 @@ i32.ne if i32.const 0 - i32.const 304 - i32.const 216 + i32.const 288 + i32.const 222 i32.const 2 call $~lib/builtins/abort unreachable @@ -11755,8 +11927,8 @@ i32.ne if i32.const 0 - i32.const 304 - i32.const 217 + i32.const 288 + i32.const 223 i32.const 2 call $~lib/builtins/abort unreachable @@ -11768,8 +11940,8 @@ i32.ne if i32.const 0 - i32.const 304 - i32.const 218 + i32.const 288 + i32.const 224 i32.const 2 call $~lib/builtins/abort unreachable @@ -11781,8 +11953,8 @@ i32.ne if i32.const 0 - i32.const 304 - i32.const 219 + i32.const 288 + i32.const 225 i32.const 2 call $~lib/builtins/abort unreachable @@ -11794,8 +11966,8 @@ i32.ne if i32.const 0 - i32.const 304 - i32.const 220 + i32.const 288 + i32.const 226 i32.const 2 call $~lib/builtins/abort unreachable @@ -11807,8 +11979,8 @@ i32.ne if i32.const 0 - i32.const 304 - i32.const 221 + i32.const 288 + i32.const 227 i32.const 2 call $~lib/builtins/abort unreachable @@ -11822,8 +11994,8 @@ i32.ne if i32.const 0 - i32.const 304 - i32.const 225 + i32.const 288 + i32.const 231 i32.const 2 call $~lib/builtins/abort unreachable @@ -11834,8 +12006,8 @@ i32.ne if i32.const 0 - i32.const 304 - i32.const 226 + i32.const 288 + i32.const 232 i32.const 2 call $~lib/builtins/abort unreachable @@ -11847,8 +12019,8 @@ i32.ne if i32.const 0 - i32.const 304 - i32.const 227 + i32.const 288 + i32.const 233 i32.const 2 call $~lib/builtins/abort unreachable @@ -11860,8 +12032,8 @@ i32.ne if i32.const 0 - i32.const 304 - i32.const 228 + i32.const 288 + i32.const 234 i32.const 2 call $~lib/builtins/abort unreachable @@ -11873,8 +12045,8 @@ i32.ne if i32.const 0 - i32.const 304 - i32.const 229 + i32.const 288 + i32.const 235 i32.const 2 call $~lib/builtins/abort unreachable @@ -11886,8 +12058,8 @@ i32.ne if i32.const 0 - i32.const 304 - i32.const 230 + i32.const 288 + i32.const 236 i32.const 2 call $~lib/builtins/abort unreachable @@ -11899,8 +12071,8 @@ i32.ne if i32.const 0 - i32.const 304 - i32.const 231 + i32.const 288 + i32.const 237 i32.const 2 call $~lib/builtins/abort unreachable @@ -11913,8 +12085,8 @@ i32.ne if i32.const 0 - i32.const 304 - i32.const 240 + i32.const 288 + i32.const 246 i32.const 2 call $~lib/builtins/abort unreachable @@ -11925,8 +12097,8 @@ i32.ne if i32.const 0 - i32.const 304 - i32.const 241 + i32.const 288 + i32.const 247 i32.const 2 call $~lib/builtins/abort unreachable @@ -11937,8 +12109,8 @@ i32.ne if i32.const 0 - i32.const 304 - i32.const 242 + i32.const 288 + i32.const 248 i32.const 2 call $~lib/builtins/abort unreachable @@ -11950,8 +12122,8 @@ i32.ne if i32.const 0 - i32.const 304 - i32.const 243 + i32.const 288 + i32.const 249 i32.const 2 call $~lib/builtins/abort unreachable @@ -11963,8 +12135,8 @@ i32.ne if i32.const 0 - i32.const 304 - i32.const 244 + i32.const 288 + i32.const 250 i32.const 2 call $~lib/builtins/abort unreachable @@ -11976,8 +12148,8 @@ i32.ne if i32.const 0 - i32.const 304 - i32.const 245 + i32.const 288 + i32.const 251 i32.const 2 call $~lib/builtins/abort unreachable @@ -11989,8 +12161,8 @@ i32.ne if i32.const 0 - i32.const 304 - i32.const 246 + i32.const 288 + i32.const 252 i32.const 2 call $~lib/builtins/abort unreachable @@ -12003,8 +12175,8 @@ i32.ne if i32.const 0 - i32.const 304 - i32.const 250 + i32.const 288 + i32.const 256 i32.const 2 call $~lib/builtins/abort unreachable @@ -12015,8 +12187,8 @@ i32.ne if i32.const 0 - i32.const 304 - i32.const 251 + i32.const 288 + i32.const 257 i32.const 2 call $~lib/builtins/abort unreachable @@ -12027,8 +12199,8 @@ i32.ne if i32.const 0 - i32.const 304 - i32.const 252 + i32.const 288 + i32.const 258 i32.const 2 call $~lib/builtins/abort unreachable @@ -12040,8 +12212,8 @@ i32.ne if i32.const 0 - i32.const 304 - i32.const 253 + i32.const 288 + i32.const 259 i32.const 2 call $~lib/builtins/abort unreachable @@ -12053,8 +12225,8 @@ i32.ne if i32.const 0 - i32.const 304 - i32.const 254 + i32.const 288 + i32.const 260 i32.const 2 call $~lib/builtins/abort unreachable @@ -12066,8 +12238,8 @@ i32.ne if i32.const 0 - i32.const 304 - i32.const 255 + i32.const 288 + i32.const 261 i32.const 2 call $~lib/builtins/abort unreachable @@ -12081,8 +12253,8 @@ i32.ne if i32.const 0 - i32.const 304 - i32.const 263 + i32.const 288 + i32.const 269 i32.const 2 call $~lib/builtins/abort unreachable @@ -12093,8 +12265,8 @@ i32.ne if i32.const 0 - i32.const 304 - i32.const 264 + i32.const 288 + i32.const 270 i32.const 2 call $~lib/builtins/abort unreachable @@ -12106,8 +12278,8 @@ i32.ne if i32.const 0 - i32.const 304 - i32.const 265 + i32.const 288 + i32.const 271 i32.const 2 call $~lib/builtins/abort unreachable @@ -12119,8 +12291,8 @@ i32.ne if i32.const 0 - i32.const 304 - i32.const 266 + i32.const 288 + i32.const 272 i32.const 2 call $~lib/builtins/abort unreachable @@ -12132,8 +12304,8 @@ i32.ne if i32.const 0 - i32.const 304 - i32.const 267 + i32.const 288 + i32.const 273 i32.const 2 call $~lib/builtins/abort unreachable @@ -12152,8 +12324,8 @@ global.get $std/array/i if i32.const 0 - i32.const 304 - i32.const 277 + i32.const 288 + i32.const 283 i32.const 2 call $~lib/builtins/abort unreachable @@ -12168,8 +12340,8 @@ i32.ne if i32.const 0 - i32.const 304 - i32.const 280 + i32.const 288 + i32.const 286 i32.const 2 call $~lib/builtins/abort unreachable @@ -12184,8 +12356,8 @@ i32.ne if i32.const 0 - i32.const 304 - i32.const 283 + i32.const 288 + i32.const 289 i32.const 2 call $~lib/builtins/abort unreachable @@ -12200,8 +12372,8 @@ i32.ne if i32.const 0 - i32.const 304 - i32.const 286 + i32.const 288 + i32.const 292 i32.const 2 call $~lib/builtins/abort unreachable @@ -12216,8 +12388,8 @@ i32.ne if i32.const 0 - i32.const 304 - i32.const 289 + i32.const 288 + i32.const 295 i32.const 2 call $~lib/builtins/abort unreachable @@ -12232,8 +12404,8 @@ i32.ne if i32.const 0 - i32.const 304 - i32.const 292 + i32.const 288 + i32.const 298 i32.const 2 call $~lib/builtins/abort unreachable @@ -12248,8 +12420,8 @@ i32.ne if i32.const 0 - i32.const 304 - i32.const 295 + i32.const 288 + i32.const 301 i32.const 2 call $~lib/builtins/abort unreachable @@ -12264,8 +12436,8 @@ i32.ne if i32.const 0 + i32.const 288 i32.const 304 - i32.const 298 i32.const 2 call $~lib/builtins/abort unreachable @@ -12280,8 +12452,8 @@ i32.ne if i32.const 0 - i32.const 304 - i32.const 301 + i32.const 288 + i32.const 307 i32.const 2 call $~lib/builtins/abort unreachable @@ -12296,8 +12468,8 @@ i32.ne if i32.const 0 - i32.const 304 - i32.const 304 + i32.const 288 + i32.const 310 i32.const 2 call $~lib/builtins/abort unreachable @@ -12314,8 +12486,8 @@ i32.ne if i32.const 0 - i32.const 304 - i32.const 306 + i32.const 288 + i32.const 312 i32.const 2 call $~lib/builtins/abort unreachable @@ -12332,8 +12504,8 @@ i32.ne if i32.const 0 - i32.const 304 - i32.const 307 + i32.const 288 + i32.const 313 i32.const 2 call $~lib/builtins/abort unreachable @@ -12350,8 +12522,8 @@ i32.ne if i32.const 0 - i32.const 304 - i32.const 314 + i32.const 288 + i32.const 320 i32.const 2 call $~lib/builtins/abort unreachable @@ -12364,8 +12536,8 @@ i32.ne if i32.const 0 - i32.const 304 - i32.const 317 + i32.const 288 + i32.const 323 i32.const 2 call $~lib/builtins/abort unreachable @@ -12376,8 +12548,8 @@ call $~lib/array/Array#includes if i32.const 0 - i32.const 304 - i32.const 320 + i32.const 288 + i32.const 326 i32.const 2 call $~lib/builtins/abort unreachable @@ -12388,8 +12560,8 @@ call $~lib/array/Array#includes if i32.const 0 - i32.const 304 - i32.const 323 + i32.const 288 + i32.const 329 i32.const 2 call $~lib/builtins/abort unreachable @@ -12402,8 +12574,8 @@ i32.ne if i32.const 0 - i32.const 304 - i32.const 326 + i32.const 288 + i32.const 332 i32.const 2 call $~lib/builtins/abort unreachable @@ -12416,8 +12588,8 @@ i32.ne if i32.const 0 - i32.const 304 - i32.const 329 + i32.const 288 + i32.const 335 i32.const 2 call $~lib/builtins/abort unreachable @@ -12430,8 +12602,8 @@ i32.ne if i32.const 0 - i32.const 304 - i32.const 332 + i32.const 288 + i32.const 338 i32.const 2 call $~lib/builtins/abort unreachable @@ -12444,8 +12616,8 @@ i32.ne if i32.const 0 - i32.const 304 - i32.const 335 + i32.const 288 + i32.const 341 i32.const 2 call $~lib/builtins/abort unreachable @@ -12458,8 +12630,8 @@ i32.ne if i32.const 0 - i32.const 304 - i32.const 338 + i32.const 288 + i32.const 344 i32.const 2 call $~lib/builtins/abort unreachable @@ -12472,8 +12644,8 @@ i32.ne if i32.const 0 - i32.const 304 - i32.const 341 + i32.const 288 + i32.const 347 i32.const 2 call $~lib/builtins/abort unreachable @@ -12489,8 +12661,8 @@ i32.eqz if i32.const 0 - i32.const 304 - i32.const 343 + i32.const 288 + i32.const 349 i32.const 2 call $~lib/builtins/abort unreachable @@ -12506,8 +12678,8 @@ i32.eqz if i32.const 0 - i32.const 304 - i32.const 344 + i32.const 288 + i32.const 350 i32.const 2 call $~lib/builtins/abort unreachable @@ -12523,8 +12695,8 @@ i32.ne if i32.const 0 - i32.const 304 - i32.const 348 + i32.const 288 + i32.const 354 i32.const 2 call $~lib/builtins/abort unreachable @@ -12535,8 +12707,8 @@ i32.ne if i32.const 0 - i32.const 304 - i32.const 349 + i32.const 288 + i32.const 355 i32.const 2 call $~lib/builtins/abort unreachable @@ -12548,8 +12720,8 @@ i32.ne if i32.const 0 - i32.const 304 - i32.const 350 + i32.const 288 + i32.const 356 i32.const 2 call $~lib/builtins/abort unreachable @@ -12561,8 +12733,8 @@ i32.ne if i32.const 0 - i32.const 304 - i32.const 351 + i32.const 288 + i32.const 357 i32.const 2 call $~lib/builtins/abort unreachable @@ -12594,8 +12766,8 @@ i32.eqz if i32.const 0 - i32.const 304 - i32.const 358 + i32.const 288 + i32.const 364 i32.const 2 call $~lib/builtins/abort unreachable @@ -12613,8 +12785,8 @@ i32.eqz if i32.const 0 - i32.const 304 - i32.const 359 + i32.const 288 + i32.const 365 i32.const 2 call $~lib/builtins/abort unreachable @@ -12645,8 +12817,8 @@ i32.eqz if i32.const 0 - i32.const 304 - i32.const 362 + i32.const 288 + i32.const 368 i32.const 2 call $~lib/builtins/abort unreachable @@ -12664,8 +12836,8 @@ i32.eqz if i32.const 0 - i32.const 304 - i32.const 363 + i32.const 288 + i32.const 369 i32.const 2 call $~lib/builtins/abort unreachable @@ -12696,8 +12868,8 @@ i32.eqz if i32.const 0 - i32.const 304 - i32.const 366 + i32.const 288 + i32.const 372 i32.const 2 call $~lib/builtins/abort unreachable @@ -12715,8 +12887,8 @@ i32.eqz if i32.const 0 - i32.const 304 - i32.const 367 + i32.const 288 + i32.const 373 i32.const 2 call $~lib/builtins/abort unreachable @@ -12746,8 +12918,8 @@ i32.eqz if i32.const 0 - i32.const 304 - i32.const 370 + i32.const 288 + i32.const 376 i32.const 2 call $~lib/builtins/abort unreachable @@ -12765,8 +12937,8 @@ i32.eqz if i32.const 0 - i32.const 304 - i32.const 371 + i32.const 288 + i32.const 377 i32.const 2 call $~lib/builtins/abort unreachable @@ -12796,8 +12968,8 @@ i32.eqz if i32.const 0 - i32.const 304 - i32.const 374 + i32.const 288 + i32.const 380 i32.const 2 call $~lib/builtins/abort unreachable @@ -12815,8 +12987,8 @@ i32.eqz if i32.const 0 - i32.const 304 - i32.const 375 + i32.const 288 + i32.const 381 i32.const 2 call $~lib/builtins/abort unreachable @@ -12846,8 +13018,8 @@ i32.eqz if i32.const 0 - i32.const 304 - i32.const 378 + i32.const 288 + i32.const 384 i32.const 2 call $~lib/builtins/abort unreachable @@ -12865,8 +13037,8 @@ i32.eqz if i32.const 0 - i32.const 304 - i32.const 379 + i32.const 288 + i32.const 385 i32.const 2 call $~lib/builtins/abort unreachable @@ -12896,8 +13068,8 @@ i32.eqz if i32.const 0 - i32.const 304 - i32.const 382 + i32.const 288 + i32.const 388 i32.const 2 call $~lib/builtins/abort unreachable @@ -12915,8 +13087,8 @@ i32.eqz if i32.const 0 - i32.const 304 - i32.const 383 + i32.const 288 + i32.const 389 i32.const 2 call $~lib/builtins/abort unreachable @@ -12946,8 +13118,8 @@ i32.eqz if i32.const 0 - i32.const 304 - i32.const 386 + i32.const 288 + i32.const 392 i32.const 2 call $~lib/builtins/abort unreachable @@ -12965,8 +13137,8 @@ i32.eqz if i32.const 0 - i32.const 304 - i32.const 387 + i32.const 288 + i32.const 393 i32.const 2 call $~lib/builtins/abort unreachable @@ -12996,8 +13168,8 @@ i32.eqz if i32.const 0 - i32.const 304 - i32.const 390 + i32.const 288 + i32.const 396 i32.const 2 call $~lib/builtins/abort unreachable @@ -13015,8 +13187,8 @@ i32.eqz if i32.const 0 - i32.const 304 - i32.const 391 + i32.const 288 + i32.const 397 i32.const 2 call $~lib/builtins/abort unreachable @@ -13046,8 +13218,8 @@ i32.eqz if i32.const 0 - i32.const 304 - i32.const 394 + i32.const 288 + i32.const 400 i32.const 2 call $~lib/builtins/abort unreachable @@ -13065,8 +13237,8 @@ i32.eqz if i32.const 0 - i32.const 304 - i32.const 395 + i32.const 288 + i32.const 401 i32.const 2 call $~lib/builtins/abort unreachable @@ -13096,8 +13268,8 @@ i32.eqz if i32.const 0 - i32.const 304 - i32.const 398 + i32.const 288 + i32.const 404 i32.const 2 call $~lib/builtins/abort unreachable @@ -13115,8 +13287,8 @@ i32.eqz if i32.const 0 - i32.const 304 - i32.const 399 + i32.const 288 + i32.const 405 i32.const 2 call $~lib/builtins/abort unreachable @@ -13146,8 +13318,8 @@ i32.eqz if i32.const 0 - i32.const 304 - i32.const 402 + i32.const 288 + i32.const 408 i32.const 2 call $~lib/builtins/abort unreachable @@ -13165,8 +13337,8 @@ i32.eqz if i32.const 0 - i32.const 304 - i32.const 403 + i32.const 288 + i32.const 409 i32.const 2 call $~lib/builtins/abort unreachable @@ -13197,8 +13369,8 @@ i32.eqz if i32.const 0 - i32.const 304 - i32.const 406 + i32.const 288 + i32.const 412 i32.const 2 call $~lib/builtins/abort unreachable @@ -13216,8 +13388,8 @@ i32.eqz if i32.const 0 - i32.const 304 - i32.const 407 + i32.const 288 + i32.const 413 i32.const 2 call $~lib/builtins/abort unreachable @@ -13248,8 +13420,8 @@ i32.eqz if i32.const 0 - i32.const 304 - i32.const 410 + i32.const 288 + i32.const 416 i32.const 2 call $~lib/builtins/abort unreachable @@ -13267,8 +13439,8 @@ i32.eqz if i32.const 0 - i32.const 304 - i32.const 411 + i32.const 288 + i32.const 417 i32.const 2 call $~lib/builtins/abort unreachable @@ -13286,8 +13458,8 @@ i32.load offset=12 if i32.const 0 - i32.const 304 - i32.const 415 + i32.const 288 + i32.const 421 i32.const 2 call $~lib/builtins/abort unreachable @@ -13296,8 +13468,8 @@ i32.load offset=12 if i32.const 0 - i32.const 304 - i32.const 416 + i32.const 288 + i32.const 422 i32.const 2 call $~lib/builtins/abort unreachable @@ -13354,8 +13526,8 @@ i32.ne if i32.const 0 - i32.const 304 - i32.const 421 + i32.const 288 + i32.const 427 i32.const 2 call $~lib/builtins/abort unreachable @@ -13369,8 +13541,8 @@ i32.ne if i32.const 0 - i32.const 304 - i32.const 422 + i32.const 288 + i32.const 428 i32.const 2 call $~lib/builtins/abort unreachable @@ -13384,8 +13556,8 @@ i32.ne if i32.const 0 - i32.const 304 - i32.const 423 + i32.const 288 + i32.const 429 i32.const 2 call $~lib/builtins/abort unreachable @@ -13396,8 +13568,8 @@ i32.ne if i32.const 0 - i32.const 304 - i32.const 425 + i32.const 288 + i32.const 431 i32.const 2 call $~lib/builtins/abort unreachable @@ -13411,8 +13583,8 @@ i32.ne if i32.const 0 - i32.const 304 - i32.const 426 + i32.const 288 + i32.const 432 i32.const 2 call $~lib/builtins/abort unreachable @@ -13426,8 +13598,8 @@ i32.ne if i32.const 0 - i32.const 304 - i32.const 427 + i32.const 288 + i32.const 433 i32.const 2 call $~lib/builtins/abort unreachable @@ -13441,8 +13613,8 @@ i32.ne if i32.const 0 - i32.const 304 - i32.const 428 + i32.const 288 + i32.const 434 i32.const 2 call $~lib/builtins/abort unreachable @@ -13478,8 +13650,8 @@ i32.ne if i32.const 0 - i32.const 304 - i32.const 433 + i32.const 288 + i32.const 439 i32.const 2 call $~lib/builtins/abort unreachable @@ -13492,8 +13664,8 @@ i32.eqz if i32.const 0 - i32.const 304 - i32.const 434 + i32.const 288 + i32.const 440 i32.const 9 call $~lib/builtins/abort unreachable @@ -13503,8 +13675,8 @@ i32.ne if i32.const 0 - i32.const 304 - i32.const 434 + i32.const 288 + i32.const 440 i32.const 2 call $~lib/builtins/abort unreachable @@ -13515,8 +13687,8 @@ i32.ne if i32.const 0 - i32.const 304 - i32.const 436 + i32.const 288 + i32.const 442 i32.const 2 call $~lib/builtins/abort unreachable @@ -13527,8 +13699,8 @@ local.tee $61 if i32.const 0 - i32.const 304 - i32.const 437 + i32.const 288 + i32.const 443 i32.const 2 call $~lib/builtins/abort unreachable @@ -13541,8 +13713,8 @@ i32.eqz if i32.const 0 - i32.const 304 - i32.const 438 + i32.const 288 + i32.const 444 i32.const 9 call $~lib/builtins/abort unreachable @@ -13552,8 +13724,8 @@ i32.ne if i32.const 0 - i32.const 304 - i32.const 438 + i32.const 288 + i32.const 444 i32.const 2 call $~lib/builtins/abort unreachable @@ -13697,8 +13869,8 @@ global.get $std/array/i if i32.const 0 - i32.const 304 - i32.const 451 + i32.const 288 + i32.const 457 i32.const 2 call $~lib/builtins/abort unreachable @@ -13712,8 +13884,8 @@ i32.ne if i32.const 0 - i32.const 304 - i32.const 454 + i32.const 288 + i32.const 460 i32.const 2 call $~lib/builtins/abort unreachable @@ -13727,8 +13899,8 @@ i32.ne if i32.const 0 - i32.const 304 - i32.const 457 + i32.const 288 + i32.const 463 i32.const 2 call $~lib/builtins/abort unreachable @@ -13742,8 +13914,8 @@ i32.ne if i32.const 0 - i32.const 304 - i32.const 465 + i32.const 288 + i32.const 471 i32.const 2 call $~lib/builtins/abort unreachable @@ -13754,8 +13926,8 @@ i32.ne if i32.const 0 - i32.const 304 - i32.const 466 + i32.const 288 + i32.const 472 i32.const 2 call $~lib/builtins/abort unreachable @@ -13769,8 +13941,8 @@ i32.eq if i32.const 0 - i32.const 304 - i32.const 468 + i32.const 288 + i32.const 474 i32.const 2 call $~lib/builtins/abort unreachable @@ -13796,8 +13968,8 @@ i32.ne if i32.const 0 - i32.const 304 - i32.const 481 + i32.const 288 + i32.const 487 i32.const 2 call $~lib/builtins/abort unreachable @@ -13808,8 +13980,8 @@ i32.ne if i32.const 0 - i32.const 304 - i32.const 482 + i32.const 288 + i32.const 488 i32.const 2 call $~lib/builtins/abort unreachable @@ -13827,8 +13999,8 @@ i32.ne if i32.const 0 - i32.const 304 - i32.const 492 + i32.const 288 + i32.const 498 i32.const 2 call $~lib/builtins/abort unreachable @@ -13838,8 +14010,8 @@ call $~lib/array/Array#every if i32.const 0 - i32.const 304 - i32.const 495 + i32.const 288 + i32.const 501 i32.const 2 call $~lib/builtins/abort unreachable @@ -13851,8 +14023,8 @@ i32.ne if i32.const 0 - i32.const 304 - i32.const 503 + i32.const 288 + i32.const 509 i32.const 2 call $~lib/builtins/abort unreachable @@ -13863,8 +14035,8 @@ i32.ne if i32.const 0 - i32.const 304 - i32.const 504 + i32.const 288 + i32.const 510 i32.const 2 call $~lib/builtins/abort unreachable @@ -13874,8 +14046,8 @@ call $~lib/array/Array#every if i32.const 0 - i32.const 304 - i32.const 506 + i32.const 288 + i32.const 512 i32.const 2 call $~lib/builtins/abort unreachable @@ -13899,8 +14071,8 @@ i32.ne if i32.const 0 - i32.const 304 - i32.const 519 + i32.const 288 + i32.const 525 i32.const 2 call $~lib/builtins/abort unreachable @@ -13911,8 +14083,8 @@ i32.ne if i32.const 0 - i32.const 304 - i32.const 520 + i32.const 288 + i32.const 526 i32.const 2 call $~lib/builtins/abort unreachable @@ -13930,8 +14102,8 @@ i32.ne if i32.const 0 - i32.const 304 - i32.const 530 + i32.const 288 + i32.const 536 i32.const 2 call $~lib/builtins/abort unreachable @@ -13941,8 +14113,8 @@ call $~lib/array/Array#some if i32.const 0 - i32.const 304 - i32.const 533 + i32.const 288 + i32.const 539 i32.const 2 call $~lib/builtins/abort unreachable @@ -13952,8 +14124,8 @@ call $~lib/array/Array#some if i32.const 0 - i32.const 304 - i32.const 541 + i32.const 288 + i32.const 547 i32.const 2 call $~lib/builtins/abort unreachable @@ -13964,8 +14136,8 @@ i32.ne if i32.const 0 - i32.const 304 - i32.const 542 + i32.const 288 + i32.const 548 i32.const 2 call $~lib/builtins/abort unreachable @@ -13977,8 +14149,8 @@ i32.ne if i32.const 0 - i32.const 304 - i32.const 544 + i32.const 288 + i32.const 550 i32.const 2 call $~lib/builtins/abort unreachable @@ -14000,8 +14172,8 @@ call $~lib/array/Array#some if i32.const 0 - i32.const 304 - i32.const 557 + i32.const 288 + i32.const 563 i32.const 2 call $~lib/builtins/abort unreachable @@ -14012,8 +14184,8 @@ i32.ne if i32.const 0 - i32.const 304 - i32.const 558 + i32.const 288 + i32.const 564 i32.const 2 call $~lib/builtins/abort unreachable @@ -14034,8 +14206,8 @@ i32.ne if i32.const 0 - i32.const 304 - i32.const 569 + i32.const 288 + i32.const 575 i32.const 2 call $~lib/builtins/abort unreachable @@ -14050,8 +14222,8 @@ i32.ne if i32.const 0 - i32.const 304 - i32.const 578 + i32.const 288 + i32.const 584 i32.const 2 call $~lib/builtins/abort unreachable @@ -14062,8 +14234,8 @@ i32.ne if i32.const 0 - i32.const 304 - i32.const 579 + i32.const 288 + i32.const 585 i32.const 2 call $~lib/builtins/abort unreachable @@ -14078,8 +14250,8 @@ i32.ne if i32.const 0 - i32.const 304 - i32.const 582 + i32.const 288 + i32.const 588 i32.const 2 call $~lib/builtins/abort unreachable @@ -14106,8 +14278,8 @@ i32.ne if i32.const 0 - i32.const 304 - i32.const 596 + i32.const 288 + i32.const 602 i32.const 2 call $~lib/builtins/abort unreachable @@ -14118,8 +14290,8 @@ i32.ne if i32.const 0 - i32.const 304 - i32.const 597 + i32.const 288 + i32.const 603 i32.const 2 call $~lib/builtins/abort unreachable @@ -14139,8 +14311,8 @@ i32.ne if i32.const 0 - i32.const 304 - i32.const 622 + i32.const 288 + i32.const 628 i32.const 2 call $~lib/builtins/abort unreachable @@ -14182,8 +14354,8 @@ i32.ne if i32.const 0 - i32.const 304 - i32.const 636 + i32.const 288 + i32.const 642 i32.const 2 call $~lib/builtins/abort unreachable @@ -14198,8 +14370,8 @@ f32.ne if i32.const 0 - i32.const 304 - i32.const 637 + i32.const 288 + i32.const 643 i32.const 2 call $~lib/builtins/abort unreachable @@ -14215,8 +14387,8 @@ i32.ne if i32.const 0 - i32.const 304 - i32.const 646 + i32.const 288 + i32.const 652 i32.const 2 call $~lib/builtins/abort unreachable @@ -14227,8 +14399,8 @@ i32.ne if i32.const 0 - i32.const 304 - i32.const 647 + i32.const 288 + i32.const 653 i32.const 2 call $~lib/builtins/abort unreachable @@ -14244,8 +14416,8 @@ i32.ne if i32.const 0 - i32.const 304 - i32.const 654 + i32.const 288 + i32.const 660 i32.const 2 call $~lib/builtins/abort unreachable @@ -14273,8 +14445,8 @@ i32.ne if i32.const 0 - i32.const 304 - i32.const 669 + i32.const 288 + i32.const 675 i32.const 2 call $~lib/builtins/abort unreachable @@ -14285,8 +14457,8 @@ i32.ne if i32.const 0 - i32.const 304 - i32.const 670 + i32.const 288 + i32.const 676 i32.const 2 call $~lib/builtins/abort unreachable @@ -14308,8 +14480,8 @@ i32.ne if i32.const 0 - i32.const 304 - i32.const 680 + i32.const 288 + i32.const 686 i32.const 2 call $~lib/builtins/abort unreachable @@ -14325,8 +14497,8 @@ i32.ne if i32.const 0 - i32.const 304 - i32.const 689 + i32.const 288 + i32.const 695 i32.const 2 call $~lib/builtins/abort unreachable @@ -14337,8 +14509,8 @@ i32.ne if i32.const 0 - i32.const 304 - i32.const 690 + i32.const 288 + i32.const 696 i32.const 2 call $~lib/builtins/abort unreachable @@ -14354,8 +14526,8 @@ i32.ne if i32.const 0 - i32.const 304 - i32.const 697 + i32.const 288 + i32.const 703 i32.const 2 call $~lib/builtins/abort unreachable @@ -14383,8 +14555,8 @@ i32.ne if i32.const 0 - i32.const 304 - i32.const 712 + i32.const 288 + i32.const 718 i32.const 2 call $~lib/builtins/abort unreachable @@ -14395,8 +14567,8 @@ i32.ne if i32.const 0 - i32.const 304 - i32.const 713 + i32.const 288 + i32.const 719 i32.const 2 call $~lib/builtins/abort unreachable @@ -14419,8 +14591,8 @@ i32.ne if i32.const 0 - i32.const 304 - i32.const 723 + i32.const 288 + i32.const 729 i32.const 2 call $~lib/builtins/abort unreachable @@ -14435,8 +14607,8 @@ i32.ne if i32.const 0 - i32.const 304 - i32.const 727 + i32.const 288 + i32.const 733 i32.const 2 call $~lib/builtins/abort unreachable @@ -14451,8 +14623,8 @@ i32.ne if i32.const 0 - i32.const 304 - i32.const 730 + i32.const 288 + i32.const 736 i32.const 2 call $~lib/builtins/abort unreachable @@ -14463,8 +14635,8 @@ call $~lib/array/Array#reduce if i32.const 0 - i32.const 304 - i32.const 733 + i32.const 288 + i32.const 739 i32.const 2 call $~lib/builtins/abort unreachable @@ -14479,8 +14651,8 @@ i32.ne if i32.const 0 - i32.const 304 - i32.const 741 + i32.const 288 + i32.const 747 i32.const 2 call $~lib/builtins/abort unreachable @@ -14491,8 +14663,8 @@ i32.ne if i32.const 0 - i32.const 304 - i32.const 742 + i32.const 288 + i32.const 748 i32.const 2 call $~lib/builtins/abort unreachable @@ -14507,8 +14679,8 @@ i32.ne if i32.const 0 - i32.const 304 - i32.const 744 + i32.const 288 + i32.const 750 i32.const 2 call $~lib/builtins/abort unreachable @@ -14535,8 +14707,8 @@ i32.ne if i32.const 0 - i32.const 304 - i32.const 757 + i32.const 288 + i32.const 763 i32.const 2 call $~lib/builtins/abort unreachable @@ -14547,8 +14719,8 @@ i32.ne if i32.const 0 - i32.const 304 - i32.const 758 + i32.const 288 + i32.const 764 i32.const 2 call $~lib/builtins/abort unreachable @@ -14569,8 +14741,8 @@ i32.ne if i32.const 0 - i32.const 304 - i32.const 768 + i32.const 288 + i32.const 774 i32.const 2 call $~lib/builtins/abort unreachable @@ -14585,8 +14757,8 @@ i32.ne if i32.const 0 - i32.const 304 - i32.const 772 + i32.const 288 + i32.const 778 i32.const 2 call $~lib/builtins/abort unreachable @@ -14601,8 +14773,8 @@ i32.ne if i32.const 0 - i32.const 304 - i32.const 775 + i32.const 288 + i32.const 781 i32.const 2 call $~lib/builtins/abort unreachable @@ -14613,8 +14785,8 @@ call $~lib/array/Array#reduceRight if i32.const 0 - i32.const 304 - i32.const 778 + i32.const 288 + i32.const 784 i32.const 2 call $~lib/builtins/abort unreachable @@ -14629,8 +14801,8 @@ i32.ne if i32.const 0 - i32.const 304 - i32.const 786 + i32.const 288 + i32.const 792 i32.const 2 call $~lib/builtins/abort unreachable @@ -14641,8 +14813,8 @@ i32.ne if i32.const 0 - i32.const 304 - i32.const 787 + i32.const 288 + i32.const 793 i32.const 2 call $~lib/builtins/abort unreachable @@ -14657,8 +14829,8 @@ i32.ne if i32.const 0 - i32.const 304 - i32.const 789 + i32.const 288 + i32.const 795 i32.const 2 call $~lib/builtins/abort unreachable @@ -14685,8 +14857,8 @@ i32.ne if i32.const 0 - i32.const 304 - i32.const 802 + i32.const 288 + i32.const 808 i32.const 2 call $~lib/builtins/abort unreachable @@ -14695,8 +14867,8 @@ i32.load offset=12 if i32.const 0 - i32.const 304 - i32.const 803 + i32.const 288 + i32.const 809 i32.const 2 call $~lib/builtins/abort unreachable @@ -14740,8 +14912,8 @@ i32.eqz if i32.const 0 - i32.const 304 - i32.const 892 + i32.const 288 + i32.const 898 i32.const 2 call $~lib/builtins/abort unreachable @@ -14770,8 +14942,8 @@ i32.eqz if i32.const 0 - i32.const 304 - i32.const 896 + i32.const 288 + i32.const 902 i32.const 2 call $~lib/builtins/abort unreachable @@ -14802,8 +14974,8 @@ i32.eqz if i32.const 0 - i32.const 304 - i32.const 900 + i32.const 288 + i32.const 906 i32.const 2 call $~lib/builtins/abort unreachable @@ -14834,8 +15006,8 @@ i32.eqz if i32.const 0 - i32.const 304 - i32.const 904 + i32.const 288 + i32.const 910 i32.const 2 call $~lib/builtins/abort unreachable @@ -14907,8 +15079,8 @@ i32.eqz if i32.const 0 - i32.const 304 - i32.const 924 + i32.const 288 + i32.const 930 i32.const 2 call $~lib/builtins/abort unreachable @@ -14928,8 +15100,8 @@ i32.eqz if i32.const 0 - i32.const 304 - i32.const 927 + i32.const 288 + i32.const 933 i32.const 2 call $~lib/builtins/abort unreachable @@ -14943,8 +15115,8 @@ i32.eqz if i32.const 0 - i32.const 304 - i32.const 930 + i32.const 288 + i32.const 936 i32.const 2 call $~lib/builtins/abort unreachable @@ -14958,8 +15130,8 @@ i32.eqz if i32.const 0 - i32.const 304 - i32.const 933 + i32.const 288 + i32.const 939 i32.const 2 call $~lib/builtins/abort unreachable @@ -14973,8 +15145,8 @@ i32.eqz if i32.const 0 - i32.const 304 - i32.const 936 + i32.const 288 + i32.const 942 i32.const 2 call $~lib/builtins/abort unreachable @@ -14988,8 +15160,8 @@ i32.eqz if i32.const 0 - i32.const 304 - i32.const 939 + i32.const 288 + i32.const 945 i32.const 2 call $~lib/builtins/abort unreachable @@ -15003,8 +15175,8 @@ i32.eqz if i32.const 0 - i32.const 304 - i32.const 942 + i32.const 288 + i32.const 948 i32.const 2 call $~lib/builtins/abort unreachable @@ -15109,8 +15281,8 @@ i32.eqz if i32.const 0 - i32.const 304 - i32.const 979 + i32.const 288 + i32.const 985 i32.const 2 call $~lib/builtins/abort unreachable @@ -15146,8 +15318,8 @@ i32.eqz if i32.const 0 - i32.const 304 - i32.const 988 + i32.const 288 + i32.const 994 i32.const 2 call $~lib/builtins/abort unreachable @@ -15167,8 +15339,8 @@ i32.eqz if i32.const 0 - i32.const 304 - i32.const 989 + i32.const 288 + i32.const 995 i32.const 2 call $~lib/builtins/abort unreachable @@ -15188,8 +15360,8 @@ i32.eqz if i32.const 0 - i32.const 304 - i32.const 990 + i32.const 288 + i32.const 996 i32.const 2 call $~lib/builtins/abort unreachable @@ -15209,8 +15381,8 @@ i32.eqz if i32.const 0 - i32.const 304 - i32.const 991 + i32.const 288 + i32.const 997 i32.const 2 call $~lib/builtins/abort unreachable @@ -15234,8 +15406,8 @@ i32.eqz if i32.const 0 - i32.const 304 - i32.const 992 + i32.const 288 + i32.const 998 i32.const 2 call $~lib/builtins/abort unreachable @@ -15255,8 +15427,8 @@ i32.eqz if i32.const 0 - i32.const 304 - i32.const 993 + i32.const 288 + i32.const 999 i32.const 2 call $~lib/builtins/abort unreachable @@ -15292,8 +15464,8 @@ i32.eqz if i32.const 0 - i32.const 304 - i32.const 995 + i32.const 288 + i32.const 1001 i32.const 2 call $~lib/builtins/abort unreachable @@ -15326,8 +15498,8 @@ i32.eqz if i32.const 0 - i32.const 304 - i32.const 998 + i32.const 288 + i32.const 1004 i32.const 2 call $~lib/builtins/abort unreachable @@ -15407,8 +15579,8 @@ i32.eqz if i32.const 0 - i32.const 304 - i32.const 1008 + i32.const 288 + i32.const 1014 i32.const 2 call $~lib/builtins/abort unreachable @@ -15421,8 +15593,8 @@ i32.eqz if i32.const 0 - i32.const 304 - i32.const 1009 + i32.const 288 + i32.const 1015 i32.const 2 call $~lib/builtins/abort unreachable @@ -15435,8 +15607,8 @@ i32.eqz if i32.const 0 - i32.const 304 - i32.const 1010 + i32.const 288 + i32.const 1016 i32.const 2 call $~lib/builtins/abort unreachable @@ -15449,8 +15621,8 @@ i32.eqz if i32.const 0 - i32.const 304 - i32.const 1011 + i32.const 288 + i32.const 1017 i32.const 2 call $~lib/builtins/abort unreachable @@ -15473,8 +15645,8 @@ i32.eqz if i32.const 0 - i32.const 304 - i32.const 1013 + i32.const 288 + i32.const 1019 i32.const 2 call $~lib/builtins/abort unreachable @@ -15498,8 +15670,8 @@ i32.eqz if i32.const 0 - i32.const 304 - i32.const 1014 + i32.const 288 + i32.const 1020 i32.const 2 call $~lib/builtins/abort unreachable @@ -15523,8 +15695,8 @@ i32.eqz if i32.const 0 - i32.const 304 - i32.const 1015 + i32.const 288 + i32.const 1021 i32.const 2 call $~lib/builtins/abort unreachable @@ -15548,8 +15720,8 @@ i32.eqz if i32.const 0 - i32.const 304 - i32.const 1016 + i32.const 288 + i32.const 1022 i32.const 2 call $~lib/builtins/abort unreachable @@ -15568,8 +15740,8 @@ i32.eqz if i32.const 0 - i32.const 304 - i32.const 1020 + i32.const 288 + i32.const 1026 i32.const 2 call $~lib/builtins/abort unreachable @@ -15588,8 +15760,8 @@ i32.eqz if i32.const 0 - i32.const 304 - i32.const 1021 + i32.const 288 + i32.const 1027 i32.const 2 call $~lib/builtins/abort unreachable @@ -15635,8 +15807,8 @@ i32.eqz if i32.const 0 - i32.const 304 - i32.const 1024 + i32.const 288 + i32.const 1030 i32.const 2 call $~lib/builtins/abort unreachable @@ -15682,8 +15854,8 @@ i32.eqz if i32.const 0 - i32.const 304 - i32.const 1027 + i32.const 288 + i32.const 1033 i32.const 2 call $~lib/builtins/abort unreachable @@ -15729,8 +15901,8 @@ i32.eqz if i32.const 0 - i32.const 304 - i32.const 1030 + i32.const 288 + i32.const 1036 i32.const 2 call $~lib/builtins/abort unreachable @@ -15809,7 +15981,7 @@ local.get $3 call $~lib/rt/pure/__release ) - (func $~start (; 196 ;) + (func $~start (; 199 ;) global.get $~started if return @@ -15819,7 +15991,7 @@ end call $start:std/array ) - (func $~lib/rt/pure/decrement (; 197 ;) (param $0 i32) + (func $~lib/rt/pure/decrement (; 200 ;) (param $0 i32) (local $1 i32) (local $2 i32) local.get $0 @@ -15836,7 +16008,7 @@ i32.and if i32.const 0 - i32.const 256 + i32.const 240 i32.const 122 i32.const 13 call $~lib/builtins/abort @@ -15855,7 +16027,7 @@ i32.and if i32.const 0 - i32.const 256 + i32.const 240 i32.const 126 i32.const 17 call $~lib/builtins/abort @@ -15870,7 +16042,7 @@ i32.le_u if i32.const 0 - i32.const 256 + i32.const 240 i32.const 136 i32.const 15 call $~lib/builtins/abort @@ -15887,7 +16059,7 @@ i32.store offset=4 end ) - (func $~lib/rt/pure/__visit (; 198 ;) (param $0 i32) + (func $~lib/rt/pure/__visit (; 201 ;) (param $0 i32) local.get $0 i32.const 8388 i32.lt_u @@ -15899,9 +16071,10 @@ i32.sub call $~lib/rt/pure/decrement ) - (func $~lib/array/Array#__visit_impl (; 199 ;) (param $0 i32) + (func $~lib/array/Array#__visit_impl (; 202 ;) (param $0 i32) (local $1 i32) (local $2 i32) + (local $3 i32) local.get $0 i32.load offset=4 local.tee $1 @@ -15910,17 +16083,17 @@ i32.const 2 i32.shl i32.add - local.set $0 + local.set $2 loop $while-continue|0 local.get $1 - local.get $0 + local.get $2 i32.lt_u if local.get $1 i32.load - local.tee $2 + local.tee $3 if - local.get $2 + local.get $3 call $~lib/rt/pure/__visit end local.get $1 @@ -15930,72 +16103,41 @@ br $while-continue|0 end end - ) - (func $~lib/rt/__visit_members (; 200 ;) (param $0 i32) - block $block$4$break - block $switch$1$default - block $switch$1$case$27 - block $switch$1$case$26 - block $switch$1$case$25 - block $switch$1$case$18 - block $switch$1$case$17 - block $switch$1$case$16 - block $switch$1$case$14 - block $switch$1$case$13 - block $switch$1$case$10 - block $switch$1$case$2 - local.get $0 - i32.const 8 - i32.sub - i32.load - br_table $switch$1$case$2 $switch$1$case$2 $block$4$break $block$4$break $switch$1$case$2 $block$4$break $block$4$break $block$4$break $switch$1$case$10 $block$4$break $block$4$break $switch$1$case$13 $switch$1$case$14 $switch$1$case$2 $switch$1$case$16 $switch$1$case$17 $switch$1$case$18 $block$4$break $block$4$break $block$4$break $block$4$break $block$4$break $block$4$break $switch$1$case$25 $switch$1$case$26 $switch$1$case$27 $switch$1$default - end - return - end - local.get $0 - call $~lib/array/Array#__visit_impl - br $block$4$break - end - local.get $0 - call $~lib/array/Array#__visit_impl - br $block$4$break - end - local.get $0 - call $~lib/array/Array#__visit_impl - br $block$4$break - end - local.get $0 - call $~lib/array/Array#__visit_impl - br $block$4$break - end - local.get $0 - call $~lib/array/Array#__visit_impl - br $block$4$break - end + local.get $0 + i32.load + call $~lib/rt/pure/__visit + ) + (func $~lib/rt/__visit_members (; 203 ;) (param $0 i32) + block $folding-inner1 + block $folding-inner0 + block $switch$1$default + block $switch$1$case$4 + block $switch$1$case$2 local.get $0 - call $~lib/array/Array#__visit_impl - br $block$4$break + i32.const 8 + i32.sub + i32.load + br_table $switch$1$case$2 $switch$1$case$2 $switch$1$case$4 $folding-inner0 $switch$1$case$2 $switch$1$case$4 $folding-inner0 $folding-inner0 $folding-inner1 $folding-inner0 $folding-inner0 $folding-inner1 $folding-inner1 $switch$1$case$2 $folding-inner1 $folding-inner1 $folding-inner1 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner1 $folding-inner1 $folding-inner1 $switch$1$default end - local.get $0 - call $~lib/array/Array#__visit_impl - br $block$4$break + return end local.get $0 - call $~lib/array/Array#__visit_impl - br $block$4$break + i32.load + local.tee $0 + if + local.get $0 + call $~lib/rt/pure/__visit + end + return end - local.get $0 - call $~lib/array/Array#__visit_impl - br $block$4$break + unreachable end - unreachable - end - local.get $0 - i32.load - local.tee $0 - if local.get $0 + i32.load call $~lib/rt/pure/__visit + return end + local.get $0 + call $~lib/array/Array#__visit_impl ) ) diff --git a/tests/compiler/std/array.ts b/tests/compiler/std/array.ts index 7113b7c741..8cda8d36f1 100644 --- a/tests/compiler/std/array.ts +++ b/tests/compiler/std/array.ts @@ -1,6 +1,12 @@ import { Array } from "array"; +import { ArrayBufferView } from "arraybuffer"; import { COMPARATOR } from "util/sort"; +// Array has the same layout as ArrayBufferView +assert(offsetof("buffer") == offsetof("buffer")); +assert(offsetof("dataStart") == offsetof("dataStart")); +assert(offsetof("byteLength") == offsetof("byteLength")); + // Obtains the internal capacity of an array from its backing buffer. function internalCapacity(array: Array): i32 { // the memory region used by the backing buffer might still be larger in that the ArrayBuffer diff --git a/tests/compiler/std/array.untouched.wat b/tests/compiler/std/array.untouched.wat index f3babfe343..5d3df08b16 100644 --- a/tests/compiler/std/array.untouched.wat +++ b/tests/compiler/std/array.untouched.wat @@ -37,16 +37,16 @@ (import "rtrace" "ondecrement" (func $~lib/rt/rtrace/ondecrement (param i32))) (memory $0 1) (data (i32.const 16) "\1c\00\00\00\01\00\00\00\01\00\00\00\1c\00\00\00I\00n\00v\00a\00l\00i\00d\00 \00l\00e\00n\00g\00t\00h\00") - (data (i32.const 64) "&\00\00\00\01\00\00\00\01\00\00\00&\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00b\00u\00f\00f\00e\00r\00.\00t\00s\00") - (data (i32.const 128) "\1e\00\00\00\01\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s\00") - (data (i32.const 176) "(\00\00\00\01\00\00\00\01\00\00\00(\00\00\00a\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e\00") - (data (i32.const 240) "\1e\00\00\00\01\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00p\00u\00r\00e\00.\00t\00s\00") - (data (i32.const 288) "\18\00\00\00\01\00\00\00\01\00\00\00\18\00\00\00s\00t\00d\00/\00a\00r\00r\00a\00y\00.\00t\00s\00") - (data (i32.const 336) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\00a\00b\00c\00") - (data (i32.const 368) "\05\00\00\00\01\00\00\00\00\00\00\00\05\00\00\00\01\02\03\04\05") - (data (i32.const 400) "\05\00\00\00\01\00\00\00\00\00\00\00\05\00\00\00\01\01\01\04\05") - (data (i32.const 432) "$\00\00\00\01\00\00\00\01\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e\00") - (data (i32.const 496) "\1a\00\00\00\01\00\00\00\01\00\00\00\1a\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00.\00t\00s\00") + (data (i32.const 64) "\1a\00\00\00\01\00\00\00\01\00\00\00\1a\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00.\00t\00s\00") + (data (i32.const 112) "\1e\00\00\00\01\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s\00") + (data (i32.const 160) "(\00\00\00\01\00\00\00\01\00\00\00(\00\00\00a\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e\00") + (data (i32.const 224) "\1e\00\00\00\01\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00p\00u\00r\00e\00.\00t\00s\00") + (data (i32.const 272) "\18\00\00\00\01\00\00\00\01\00\00\00\18\00\00\00s\00t\00d\00/\00a\00r\00r\00a\00y\00.\00t\00s\00") + (data (i32.const 320) "&\00\00\00\01\00\00\00\01\00\00\00&\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00b\00u\00f\00f\00e\00r\00.\00t\00s\00") + (data (i32.const 384) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\00a\00b\00c\00") + (data (i32.const 416) "\05\00\00\00\01\00\00\00\00\00\00\00\05\00\00\00\01\02\03\04\05") + (data (i32.const 448) "\05\00\00\00\01\00\00\00\00\00\00\00\05\00\00\00\01\01\01\04\05") + (data (i32.const 480) "$\00\00\00\01\00\00\00\01\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e\00") (data (i32.const 544) "\05\00\00\00\01\00\00\00\00\00\00\00\05\00\00\00\00\00\00\00\00") (data (i32.const 576) "\05\00\00\00\01\00\00\00\00\00\00\00\05\00\00\00\01\01\00\00\00") (data (i32.const 608) "\05\00\00\00\01\00\00\00\00\00\00\00\05\00\00\00\01\01\00\02\02") @@ -267,7 +267,7 @@ i32.eqz if i32.const 0 - i32.const 144 + i32.const 128 i32.const 277 i32.const 13 call $~lib/builtins/abort @@ -292,7 +292,7 @@ i32.eqz if i32.const 0 - i32.const 144 + i32.const 128 i32.const 279 i32.const 13 call $~lib/builtins/abort @@ -344,7 +344,7 @@ i32.eqz if i32.const 0 - i32.const 144 + i32.const 128 i32.const 292 i32.const 13 call $~lib/builtins/abort @@ -474,7 +474,7 @@ i32.eqz if i32.const 0 - i32.const 144 + i32.const 128 i32.const 205 i32.const 13 call $~lib/builtins/abort @@ -489,7 +489,7 @@ i32.eqz if i32.const 0 - i32.const 144 + i32.const 128 i32.const 207 i32.const 13 call $~lib/builtins/abort @@ -582,7 +582,7 @@ i32.eqz if i32.const 0 - i32.const 144 + i32.const 128 i32.const 228 i32.const 15 call $~lib/builtins/abort @@ -645,7 +645,7 @@ i32.eqz if i32.const 0 - i32.const 144 + i32.const 128 i32.const 243 i32.const 13 call $~lib/builtins/abort @@ -661,7 +661,7 @@ i32.eqz if i32.const 0 - i32.const 144 + i32.const 128 i32.const 244 i32.const 13 call $~lib/builtins/abort @@ -718,7 +718,7 @@ i32.eqz if i32.const 0 - i32.const 144 + i32.const 128 i32.const 260 i32.const 13 call $~lib/builtins/abort @@ -837,7 +837,7 @@ i32.eqz if i32.const 0 - i32.const 144 + i32.const 128 i32.const 386 i32.const 4 call $~lib/builtins/abort @@ -860,7 +860,7 @@ i32.eqz if i32.const 0 - i32.const 144 + i32.const 128 i32.const 396 i32.const 15 call $~lib/builtins/abort @@ -891,7 +891,7 @@ i32.eqz if i32.const 0 - i32.const 144 + i32.const 128 i32.const 408 i32.const 4 call $~lib/builtins/abort @@ -1112,8 +1112,8 @@ i32.const 1073741808 i32.ge_u if - i32.const 192 - i32.const 144 + i32.const 176 + i32.const 128 i32.const 457 i32.const 29 call $~lib/builtins/abort @@ -1207,7 +1207,7 @@ i32.eqz if i32.const 0 - i32.const 144 + i32.const 128 i32.const 338 i32.const 13 call $~lib/builtins/abort @@ -1270,7 +1270,7 @@ i32.eqz if i32.const 0 - i32.const 144 + i32.const 128 i32.const 351 i32.const 17 call $~lib/builtins/abort @@ -1415,7 +1415,7 @@ i32.eqz if i32.const 0 - i32.const 144 + i32.const 128 i32.const 365 i32.const 13 call $~lib/builtins/abort @@ -1504,7 +1504,7 @@ i32.eqz if i32.const 0 - i32.const 144 + i32.const 128 i32.const 490 i32.const 13 call $~lib/builtins/abort @@ -1545,7 +1545,7 @@ i32.eqz if i32.const 0 - i32.const 144 + i32.const 128 i32.const 502 i32.const 19 call $~lib/builtins/abort @@ -1564,7 +1564,7 @@ i32.eqz if i32.const 0 - i32.const 144 + i32.const 128 i32.const 507 i32.const 17 call $~lib/builtins/abort @@ -1581,7 +1581,7 @@ i32.eqz if i32.const 0 - i32.const 144 + i32.const 128 i32.const 510 i32.const 13 call $~lib/builtins/abort @@ -1896,7 +1896,7 @@ i32.eqz if i32.const 0 - i32.const 256 + i32.const 240 i32.const 109 i32.const 2 call $~lib/builtins/abort @@ -1917,7 +1917,7 @@ i32.eqz if i32.const 0 - i32.const 256 + i32.const 240 i32.const 112 i32.const 13 call $~lib/builtins/abort @@ -1947,40 +1947,40 @@ call $~lib/rt/pure/decrement end ) - (func $~lib/arraybuffer/ArrayBufferView#constructor (; 21 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/array/Array#constructor (; 21 ;) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) (local $6 i32) local.get $1 - i32.const 1073741808 - local.get $2 - i32.shr_u + i32.const 268435452 i32.gt_u if i32.const 32 i32.const 80 - i32.const 23 - i32.const 56 + i32.const 57 + i32.const 59 call $~lib/builtins/abort unreachable end local.get $1 - local.get $2 + i32.const 2 i32.shl - local.tee $1 + local.set $2 + local.get $2 i32.const 0 call $~lib/rt/tlsf/__alloc local.set $3 local.get $3 i32.const 0 - local.get $1 + local.get $2 call $~lib/memory/memory.fill local.get $0 i32.eqz if - i32.const 12 - i32.const 2 + i32.const 16 + i32.const 3 call $~lib/rt/tlsf/__alloc call $~lib/rt/pure/__retain local.set $0 @@ -1995,6 +1995,9 @@ i32.const 0 i32.store offset=8 local.get $0 + i32.const 0 + i32.store offset=12 + local.get $0 local.tee $4 local.get $3 local.tee $5 @@ -2015,33 +2018,14 @@ local.get $3 i32.store offset=4 local.get $0 - local.get $1 + local.get $2 i32.store offset=8 local.get $0 - ) - (func $~lib/array/Array#constructor (; 22 ;) (param $0 i32) (param $1 i32) (result i32) - local.get $0 - if (result i32) - local.get $0 - else - i32.const 16 - i32.const 3 - call $~lib/rt/tlsf/__alloc - call $~lib/rt/pure/__retain - end - local.get $1 - i32.const 2 - call $~lib/arraybuffer/ArrayBufferView#constructor - local.set $0 - local.get $0 - i32.const 0 - i32.store offset=12 - local.get $0 local.get $1 i32.store offset=12 local.get $0 ) - (func $~lib/array/Array.isArray<~lib/array/Array | null> (; 23 ;) (param $0 i32) (result i32) + (func $~lib/array/Array.isArray<~lib/array/Array | null> (; 22 ;) (param $0 i32) (result i32) (local $1 i32) local.get $0 call $~lib/rt/pure/__retain @@ -2059,7 +2043,7 @@ call $~lib/rt/pure/__release local.get $1 ) - (func $std/array/Ref#constructor (; 24 ;) (param $0 i32) (param $1 i32) (result i32) + (func $std/array/Ref#constructor (; 23 ;) (param $0 i32) (param $1 i32) (result i32) local.get $0 i32.eqz if @@ -2074,7 +2058,7 @@ i32.store local.get $0 ) - (func $~lib/array/Array.isArray (; 25 ;) (param $0 i32) (result i32) + (func $~lib/array/Array.isArray (; 24 ;) (param $0 i32) (result i32) (local $1 i32) local.get $0 call $~lib/rt/pure/__retain @@ -2092,6 +2076,78 @@ call $~lib/rt/pure/__release local.get $1 ) + (func $~lib/arraybuffer/ArrayBufferView#constructor (; 25 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + local.get $1 + i32.const 1073741808 + local.get $2 + i32.shr_u + i32.gt_u + if + i32.const 32 + i32.const 336 + i32.const 23 + i32.const 56 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.get $2 + i32.shl + local.tee $1 + i32.const 0 + call $~lib/rt/tlsf/__alloc + local.set $3 + local.get $3 + i32.const 0 + local.get $1 + call $~lib/memory/memory.fill + local.get $0 + i32.eqz + if + i32.const 12 + i32.const 2 + call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__retain + local.set $0 + end + local.get $0 + i32.const 0 + i32.store + local.get $0 + i32.const 0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=8 + local.get $0 + local.tee $4 + local.get $3 + local.tee $5 + local.get $4 + i32.load + local.tee $6 + i32.ne + if + local.get $5 + call $~lib/rt/pure/__retain + local.set $5 + local.get $6 + call $~lib/rt/pure/__release + end + local.get $5 + i32.store + local.get $0 + local.get $3 + i32.store offset=4 + local.get $0 + local.get $1 + i32.store offset=8 + local.get $0 + ) (func $~lib/typedarray/Uint8Array#constructor (; 26 ;) (param $0 i32) (param $1 i32) (result i32) local.get $0 if (result i32) @@ -3544,9 +3600,9 @@ i32.load offset=12 i32.ge_u if - i32.const 448 - i32.const 512 - i32.const 93 + i32.const 496 + i32.const 80 + i32.const 104 i32.const 41 call $~lib/builtins/abort unreachable @@ -3747,9 +3803,9 @@ i32.load offset=12 i32.ge_u if - i32.const 448 - i32.const 512 - i32.const 93 + i32.const 496 + i32.const 80 + i32.const 104 i32.const 41 call $~lib/builtins/abort unreachable @@ -3914,7 +3970,7 @@ i32.eqz if i32.const 0 - i32.const 144 + i32.const 128 i32.const 570 i32.const 2 call $~lib/builtins/abort @@ -4087,7 +4143,7 @@ i32.gt_u if i32.const 32 - i32.const 512 + i32.const 80 i32.const 14 i32.const 47 call $~lib/builtins/abort @@ -4171,9 +4227,9 @@ i32.load offset=12 i32.ge_u if - i32.const 448 - i32.const 512 - i32.const 93 + i32.const 496 + i32.const 80 + i32.const 104 i32.const 41 call $~lib/builtins/abort unreachable @@ -4195,8 +4251,8 @@ i32.lt_s if i32.const 976 - i32.const 512 - i32.const 288 + i32.const 80 + i32.const 299 i32.const 20 call $~lib/builtins/abort unreachable @@ -4306,8 +4362,8 @@ local.get $1 call $~lib/rt/pure/__release i32.const 32 - i32.const 512 - i32.const 218 + i32.const 80 + i32.const 229 i32.const 59 call $~lib/builtins/abort unreachable @@ -4606,8 +4662,8 @@ i32.lt_s if i32.const 976 - i32.const 512 - i32.const 349 + i32.const 80 + i32.const 360 i32.const 20 call $~lib/builtins/abort unreachable @@ -5312,9 +5368,9 @@ i32.load offset=12 i32.ge_u if - i32.const 448 - i32.const 512 - i32.const 93 + i32.const 496 + i32.const 80 + i32.const 104 i32.const 41 call $~lib/builtins/abort unreachable @@ -5329,8 +5385,8 @@ local.get $2 call $~lib/rt/pure/__release i32.const 3920 - i32.const 512 - i32.const 97 + i32.const 80 + i32.const 108 i32.const 39 call $~lib/builtins/abort unreachable @@ -5466,9 +5522,9 @@ i32.load offset=12 i32.ge_u if - i32.const 448 - i32.const 512 - i32.const 93 + i32.const 496 + i32.const 80 + i32.const 104 i32.const 41 call $~lib/builtins/abort unreachable @@ -5499,9 +5555,9 @@ i32.const 0 i32.lt_s if - i32.const 448 - i32.const 512 - i32.const 109 + i32.const 496 + i32.const 80 + i32.const 120 i32.const 21 call $~lib/builtins/abort unreachable @@ -6110,8 +6166,8 @@ i32.eqz if i32.const 0 - i32.const 304 - i32.const 619 + i32.const 288 + i32.const 625 i32.const 6 call $~lib/builtins/abort unreachable @@ -6220,9 +6276,9 @@ i32.load offset=12 i32.ge_u if - i32.const 448 - i32.const 512 - i32.const 93 + i32.const 496 + i32.const 80 + i32.const 104 i32.const 41 call $~lib/builtins/abort unreachable @@ -8151,9 +8207,9 @@ i32.load offset=12 i32.ge_u if - i32.const 448 - i32.const 512 - i32.const 93 + i32.const 496 + i32.const 80 + i32.const 104 i32.const 41 call $~lib/builtins/abort unreachable @@ -9424,8 +9480,8 @@ i32.eqz if i32.const 0 - i32.const 304 - i32.const 881 + i32.const 288 + i32.const 887 i32.const 2 call $~lib/builtins/abort unreachable @@ -9469,23 +9525,79 @@ i32.sub ) (func $~lib/array/Array<~lib/array/Array>#constructor (; 178 ;) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + local.get $1 + i32.const 268435452 + i32.gt_u + if + i32.const 32 + i32.const 80 + i32.const 57 + i32.const 59 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 2 + i32.shl + local.set $2 + local.get $2 + i32.const 0 + call $~lib/rt/tlsf/__alloc + local.set $3 + local.get $3 + i32.const 0 + local.get $2 + call $~lib/memory/memory.fill local.get $0 - if (result i32) - local.get $0 - else + i32.eqz + if i32.const 16 i32.const 12 call $~lib/rt/tlsf/__alloc call $~lib/rt/pure/__retain + local.set $0 end - local.get $1 - i32.const 2 - call $~lib/arraybuffer/ArrayBufferView#constructor - local.set $0 + local.get $0 + i32.const 0 + i32.store + local.get $0 + i32.const 0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=8 local.get $0 i32.const 0 i32.store offset=12 local.get $0 + local.tee $4 + local.get $3 + local.tee $5 + local.get $4 + i32.load + local.tee $6 + i32.ne + if + local.get $5 + call $~lib/rt/pure/__retain + local.set $5 + local.get $6 + call $~lib/rt/pure/__release + end + local.get $5 + i32.store + local.get $0 + local.get $3 + i32.store offset=4 + local.get $0 + local.get $2 + i32.store offset=8 + local.get $0 local.get $1 i32.store offset=12 local.get $0 @@ -9535,9 +9647,9 @@ if local.get $2 call $~lib/rt/pure/__release - i32.const 448 - i32.const 512 - i32.const 109 + i32.const 496 + i32.const 80 + i32.const 120 i32.const 21 call $~lib/builtins/abort unreachable @@ -9818,9 +9930,9 @@ i32.load offset=12 i32.ge_u if - i32.const 448 - i32.const 512 - i32.const 93 + i32.const 496 + i32.const 80 + i32.const 104 i32.const 41 call $~lib/builtins/abort unreachable @@ -9835,8 +9947,8 @@ local.get $2 call $~lib/rt/pure/__release i32.const 3920 - i32.const 512 - i32.const 97 + i32.const 80 + i32.const 108 i32.const 39 call $~lib/builtins/abort unreachable @@ -9924,8 +10036,8 @@ i32.eqz if i32.const 0 - i32.const 304 - i32.const 881 + i32.const 288 + i32.const 887 i32.const 2 call $~lib/builtins/abort unreachable @@ -9936,23 +10048,79 @@ call $~lib/rt/pure/__release ) (func $~lib/array/Array>#constructor (; 190 ;) (param $0 i32) (param $1 i32) (result i32) - local.get $0 - if (result i32) - local.get $0 - else - i32.const 16 - i32.const 14 - call $~lib/rt/tlsf/__alloc - call $~lib/rt/pure/__retain - end - local.get $1 - i32.const 2 - call $~lib/arraybuffer/ArrayBufferView#constructor - local.set $0 - local.get $0 - i32.const 0 - i32.store offset=12 - local.get $0 + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + local.get $1 + i32.const 268435452 + i32.gt_u + if + i32.const 32 + i32.const 80 + i32.const 57 + i32.const 59 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 2 + i32.shl + local.set $2 + local.get $2 + i32.const 0 + call $~lib/rt/tlsf/__alloc + local.set $3 + local.get $3 + i32.const 0 + local.get $2 + call $~lib/memory/memory.fill + local.get $0 + i32.eqz + if + i32.const 16 + i32.const 14 + call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__retain + local.set $0 + end + local.get $0 + i32.const 0 + i32.store + local.get $0 + i32.const 0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=8 + local.get $0 + i32.const 0 + i32.store offset=12 + local.get $0 + local.tee $4 + local.get $3 + local.tee $5 + local.get $4 + i32.load + local.tee $6 + i32.ne + if + local.get $5 + call $~lib/rt/pure/__retain + local.set $5 + local.get $6 + call $~lib/rt/pure/__release + end + local.get $5 + i32.store + local.get $0 + local.get $3 + i32.store offset=4 + local.get $0 + local.get $2 + i32.store offset=8 + local.get $0 local.get $1 i32.store offset=12 local.get $0 @@ -10017,9 +10185,9 @@ if local.get $2 call $~lib/rt/pure/__release - i32.const 448 - i32.const 512 - i32.const 109 + i32.const 496 + i32.const 80 + i32.const 120 i32.const 21 call $~lib/builtins/abort unreachable @@ -10293,9 +10461,9 @@ i32.load offset=12 i32.ge_u if - i32.const 448 - i32.const 512 - i32.const 93 + i32.const 496 + i32.const 80 + i32.const 104 i32.const 41 call $~lib/builtins/abort unreachable @@ -10310,8 +10478,8 @@ local.get $2 call $~lib/rt/pure/__release i32.const 3920 - i32.const 512 - i32.const 97 + i32.const 80 + i32.const 108 i32.const 39 call $~lib/builtins/abort unreachable @@ -10399,8 +10567,8 @@ i32.eqz if i32.const 0 - i32.const 304 - i32.const 881 + i32.const 288 + i32.const 887 i32.const 2 call $~lib/builtins/abort unreachable @@ -10600,9 +10768,9 @@ i32.load offset=12 i32.ge_u if - i32.const 448 - i32.const 512 - i32.const 93 + i32.const 496 + i32.const 80 + i32.const 104 i32.const 41 call $~lib/builtins/abort unreachable @@ -10694,8 +10862,8 @@ i32.eqz if i32.const 0 - i32.const 304 - i32.const 881 + i32.const 288 + i32.const 887 i32.const 2 call $~lib/builtins/abort unreachable @@ -11152,23 +11320,79 @@ local.get $3 ) (func $~lib/array/Array<~lib/string/String>#constructor (; 217 ;) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + local.get $1 + i32.const 268435452 + i32.gt_u + if + i32.const 32 + i32.const 80 + i32.const 57 + i32.const 59 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 2 + i32.shl + local.set $2 + local.get $2 + i32.const 0 + call $~lib/rt/tlsf/__alloc + local.set $3 + local.get $3 + i32.const 0 + local.get $2 + call $~lib/memory/memory.fill local.get $0 - if (result i32) - local.get $0 - else + i32.eqz + if i32.const 16 i32.const 16 call $~lib/rt/tlsf/__alloc call $~lib/rt/pure/__retain + local.set $0 end - local.get $1 - i32.const 2 - call $~lib/arraybuffer/ArrayBufferView#constructor - local.set $0 + local.get $0 + i32.const 0 + i32.store + local.get $0 + i32.const 0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=8 local.get $0 i32.const 0 i32.store offset=12 local.get $0 + local.tee $4 + local.get $3 + local.tee $5 + local.get $4 + i32.load + local.tee $6 + i32.ne + if + local.get $5 + call $~lib/rt/pure/__retain + local.set $5 + local.get $6 + call $~lib/rt/pure/__release + end + local.get $5 + i32.store + local.get $0 + local.get $3 + i32.store offset=4 + local.get $0 + local.get $2 + i32.store offset=8 + local.get $0 local.get $1 i32.store offset=12 local.get $0 @@ -11404,9 +11628,9 @@ if local.get $2 call $~lib/rt/pure/__release - i32.const 448 - i32.const 512 - i32.const 109 + i32.const 496 + i32.const 80 + i32.const 120 i32.const 21 call $~lib/builtins/abort unreachable @@ -11658,9 +11882,9 @@ i32.load offset=12 i32.ge_u if - i32.const 448 - i32.const 512 - i32.const 93 + i32.const 496 + i32.const 80 + i32.const 104 i32.const 41 call $~lib/builtins/abort unreachable @@ -11675,8 +11899,8 @@ local.get $2 call $~lib/rt/pure/__release i32.const 3920 - i32.const 512 - i32.const 97 + i32.const 80 + i32.const 108 i32.const 39 call $~lib/builtins/abort unreachable @@ -11764,8 +11988,8 @@ i32.eqz if i32.const 0 - i32.const 304 - i32.const 881 + i32.const 288 + i32.const 887 i32.const 2 call $~lib/builtins/abort unreachable @@ -17826,8 +18050,8 @@ i32.eqz if i32.const 0 - i32.const 304 - i32.const 40 + i32.const 288 + i32.const 46 i32.const 2 call $~lib/builtins/abort unreachable @@ -17841,8 +18065,8 @@ i32.eqz if i32.const 0 - i32.const 304 - i32.const 41 + i32.const 288 + i32.const 47 i32.const 2 call $~lib/builtins/abort unreachable @@ -17856,8 +18080,8 @@ i32.eqz if i32.const 0 - i32.const 304 - i32.const 42 + i32.const 288 + i32.const 48 i32.const 2 call $~lib/builtins/abort unreachable @@ -17868,20 +18092,20 @@ i32.eqz if i32.const 0 - i32.const 304 - i32.const 43 + i32.const 288 + i32.const 49 i32.const 2 call $~lib/builtins/abort unreachable end - i32.const 352 + i32.const 400 call $~lib/array/Array.isArray<~lib/string/String> i32.eqz i32.eqz if i32.const 0 - i32.const 304 - i32.const 44 + i32.const 288 + i32.const 50 i32.const 2 call $~lib/builtins/abort unreachable @@ -17891,8 +18115,8 @@ i32.eqz if i32.const 0 - i32.const 304 - i32.const 46 + i32.const 288 + i32.const 52 i32.const 2 call $~lib/builtins/abort unreachable @@ -17904,7 +18128,7 @@ i32.const 5 i32.const 0 i32.const 6 - i32.const 384 + i32.const 432 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain local.set $0 @@ -17918,7 +18142,7 @@ i32.const 5 i32.const 0 i32.const 6 - i32.const 416 + i32.const 464 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain local.tee $2 @@ -17927,8 +18151,8 @@ i32.eqz if i32.const 0 - i32.const 304 - i32.const 54 + i32.const 288 + i32.const 60 i32.const 2 call $~lib/builtins/abort unreachable @@ -17952,8 +18176,8 @@ i32.eqz if i32.const 0 - i32.const 304 - i32.const 57 + i32.const 288 + i32.const 63 i32.const 2 call $~lib/builtins/abort unreachable @@ -17977,8 +18201,8 @@ i32.eqz if i32.const 0 - i32.const 304 - i32.const 60 + i32.const 288 + i32.const 66 i32.const 2 call $~lib/builtins/abort unreachable @@ -18002,8 +18226,8 @@ i32.eqz if i32.const 0 - i32.const 304 - i32.const 63 + i32.const 288 + i32.const 69 i32.const 2 call $~lib/builtins/abort unreachable @@ -18027,8 +18251,8 @@ i32.eqz if i32.const 0 - i32.const 304 - i32.const 66 + i32.const 288 + i32.const 72 i32.const 2 call $~lib/builtins/abort unreachable @@ -18071,8 +18295,8 @@ i32.eqz if i32.const 0 - i32.const 304 - i32.const 73 + i32.const 288 + i32.const 79 i32.const 2 call $~lib/builtins/abort unreachable @@ -18096,8 +18320,8 @@ i32.eqz if i32.const 0 - i32.const 304 - i32.const 76 + i32.const 288 + i32.const 82 i32.const 2 call $~lib/builtins/abort unreachable @@ -18121,8 +18345,8 @@ i32.eqz if i32.const 0 - i32.const 304 - i32.const 79 + i32.const 288 + i32.const 85 i32.const 2 call $~lib/builtins/abort unreachable @@ -18146,8 +18370,8 @@ i32.eqz if i32.const 0 - i32.const 304 - i32.const 82 + i32.const 288 + i32.const 88 i32.const 2 call $~lib/builtins/abort unreachable @@ -18171,8 +18395,8 @@ i32.eqz if i32.const 0 - i32.const 304 - i32.const 85 + i32.const 288 + i32.const 91 i32.const 2 call $~lib/builtins/abort unreachable @@ -18196,8 +18420,8 @@ i32.eqz if i32.const 0 - i32.const 304 - i32.const 91 + i32.const 288 + i32.const 97 i32.const 2 call $~lib/builtins/abort unreachable @@ -18209,8 +18433,8 @@ i32.eqz if i32.const 0 - i32.const 304 - i32.const 92 + i32.const 288 + i32.const 98 i32.const 2 call $~lib/builtins/abort unreachable @@ -18227,8 +18451,8 @@ i32.eqz if i32.const 0 - i32.const 304 - i32.const 96 + i32.const 288 + i32.const 102 i32.const 2 call $~lib/builtins/abort unreachable @@ -18240,8 +18464,8 @@ i32.eqz if i32.const 0 - i32.const 304 - i32.const 97 + i32.const 288 + i32.const 103 i32.const 2 call $~lib/builtins/abort unreachable @@ -18253,8 +18477,8 @@ i32.eqz if i32.const 0 - i32.const 304 - i32.const 98 + i32.const 288 + i32.const 104 i32.const 2 call $~lib/builtins/abort unreachable @@ -18268,8 +18492,8 @@ i32.eqz if i32.const 0 - i32.const 304 - i32.const 102 + i32.const 288 + i32.const 108 i32.const 2 call $~lib/builtins/abort unreachable @@ -18281,8 +18505,8 @@ i32.eqz if i32.const 0 - i32.const 304 - i32.const 103 + i32.const 288 + i32.const 109 i32.const 2 call $~lib/builtins/abort unreachable @@ -18294,8 +18518,8 @@ i32.eqz if i32.const 0 - i32.const 304 - i32.const 104 + i32.const 288 + i32.const 110 i32.const 2 call $~lib/builtins/abort unreachable @@ -18311,8 +18535,8 @@ i32.eqz if i32.const 0 - i32.const 304 - i32.const 108 + i32.const 288 + i32.const 114 i32.const 2 call $~lib/builtins/abort unreachable @@ -18324,8 +18548,8 @@ i32.eqz if i32.const 0 - i32.const 304 - i32.const 109 + i32.const 288 + i32.const 115 i32.const 2 call $~lib/builtins/abort unreachable @@ -18338,8 +18562,8 @@ i32.eqz if i32.const 0 - i32.const 304 - i32.const 110 + i32.const 288 + i32.const 116 i32.const 2 call $~lib/builtins/abort unreachable @@ -18355,8 +18579,8 @@ i32.eqz if i32.const 0 - i32.const 304 - i32.const 114 + i32.const 288 + i32.const 120 i32.const 2 call $~lib/builtins/abort unreachable @@ -18368,8 +18592,8 @@ i32.eqz if i32.const 0 - i32.const 304 - i32.const 115 + i32.const 288 + i32.const 121 i32.const 2 call $~lib/builtins/abort unreachable @@ -18382,8 +18606,8 @@ i32.eqz if i32.const 0 - i32.const 304 - i32.const 116 + i32.const 288 + i32.const 122 i32.const 2 call $~lib/builtins/abort unreachable @@ -18396,8 +18620,8 @@ i32.eqz if i32.const 0 - i32.const 304 - i32.const 117 + i32.const 288 + i32.const 123 i32.const 2 call $~lib/builtins/abort unreachable @@ -18413,8 +18637,8 @@ i32.eqz if i32.const 0 - i32.const 304 - i32.const 121 + i32.const 288 + i32.const 127 i32.const 2 call $~lib/builtins/abort unreachable @@ -18426,8 +18650,8 @@ i32.eqz if i32.const 0 - i32.const 304 - i32.const 122 + i32.const 288 + i32.const 128 i32.const 2 call $~lib/builtins/abort unreachable @@ -18440,8 +18664,8 @@ i32.eqz if i32.const 0 - i32.const 304 - i32.const 123 + i32.const 288 + i32.const 129 i32.const 2 call $~lib/builtins/abort unreachable @@ -18454,8 +18678,8 @@ i32.eqz if i32.const 0 - i32.const 304 - i32.const 124 + i32.const 288 + i32.const 130 i32.const 2 call $~lib/builtins/abort unreachable @@ -18468,8 +18692,8 @@ i32.eqz if i32.const 0 - i32.const 304 - i32.const 125 + i32.const 288 + i32.const 131 i32.const 2 call $~lib/builtins/abort unreachable @@ -18510,8 +18734,8 @@ i32.eqz if i32.const 0 - i32.const 304 - i32.const 133 + i32.const 288 + i32.const 139 i32.const 2 call $~lib/builtins/abort unreachable @@ -18537,8 +18761,8 @@ i32.eqz if i32.const 0 - i32.const 304 - i32.const 142 + i32.const 288 + i32.const 148 i32.const 2 call $~lib/builtins/abort unreachable @@ -18550,8 +18774,8 @@ i32.eqz if i32.const 0 - i32.const 304 - i32.const 143 + i32.const 288 + i32.const 149 i32.const 2 call $~lib/builtins/abort unreachable @@ -18563,8 +18787,8 @@ i32.eqz if i32.const 0 - i32.const 304 - i32.const 144 + i32.const 288 + i32.const 150 i32.const 2 call $~lib/builtins/abort unreachable @@ -18586,8 +18810,8 @@ i32.eqz if i32.const 0 - i32.const 304 - i32.const 147 + i32.const 288 + i32.const 153 i32.const 2 call $~lib/builtins/abort unreachable @@ -18600,8 +18824,8 @@ i32.eqz if i32.const 0 - i32.const 304 - i32.const 149 + i32.const 288 + i32.const 155 i32.const 2 call $~lib/builtins/abort unreachable @@ -18614,8 +18838,8 @@ i32.eqz if i32.const 0 - i32.const 304 - i32.const 150 + i32.const 288 + i32.const 156 i32.const 2 call $~lib/builtins/abort unreachable @@ -18628,8 +18852,8 @@ i32.eqz if i32.const 0 - i32.const 304 - i32.const 151 + i32.const 288 + i32.const 157 i32.const 2 call $~lib/builtins/abort unreachable @@ -18657,8 +18881,8 @@ i32.eqz if i32.const 0 - i32.const 304 - i32.const 158 + i32.const 288 + i32.const 164 i32.const 2 call $~lib/builtins/abort unreachable @@ -18670,8 +18894,8 @@ i32.eqz if i32.const 0 - i32.const 304 - i32.const 159 + i32.const 288 + i32.const 165 i32.const 2 call $~lib/builtins/abort unreachable @@ -18683,8 +18907,8 @@ i32.eqz if i32.const 0 - i32.const 304 - i32.const 160 + i32.const 288 + i32.const 166 i32.const 2 call $~lib/builtins/abort unreachable @@ -18697,8 +18921,8 @@ i32.eqz if i32.const 0 - i32.const 304 - i32.const 161 + i32.const 288 + i32.const 167 i32.const 2 call $~lib/builtins/abort unreachable @@ -18711,8 +18935,8 @@ i32.eqz if i32.const 0 - i32.const 304 - i32.const 162 + i32.const 288 + i32.const 168 i32.const 2 call $~lib/builtins/abort unreachable @@ -18725,8 +18949,8 @@ i32.eqz if i32.const 0 - i32.const 304 - i32.const 163 + i32.const 288 + i32.const 169 i32.const 2 call $~lib/builtins/abort unreachable @@ -18739,8 +18963,8 @@ i32.eqz if i32.const 0 - i32.const 304 - i32.const 164 + i32.const 288 + i32.const 170 i32.const 2 call $~lib/builtins/abort unreachable @@ -18753,8 +18977,8 @@ i32.eqz if i32.const 0 - i32.const 304 - i32.const 165 + i32.const 288 + i32.const 171 i32.const 2 call $~lib/builtins/abort unreachable @@ -18769,8 +18993,8 @@ i32.eqz if i32.const 0 - i32.const 304 - i32.const 168 + i32.const 288 + i32.const 174 i32.const 2 call $~lib/builtins/abort unreachable @@ -18789,8 +19013,8 @@ i32.eqz if i32.const 0 - i32.const 304 - i32.const 176 + i32.const 288 + i32.const 182 i32.const 2 call $~lib/builtins/abort unreachable @@ -18810,8 +19034,8 @@ i32.eqz if i32.const 0 - i32.const 304 - i32.const 178 + i32.const 288 + i32.const 184 i32.const 2 call $~lib/builtins/abort unreachable @@ -18823,8 +19047,8 @@ i32.eqz if i32.const 0 - i32.const 304 - i32.const 179 + i32.const 288 + i32.const 185 i32.const 2 call $~lib/builtins/abort unreachable @@ -18862,8 +19086,8 @@ i32.eqz if i32.const 0 - i32.const 304 - i32.const 186 + i32.const 288 + i32.const 192 i32.const 2 call $~lib/builtins/abort unreachable @@ -18897,8 +19121,8 @@ i32.eqz if i32.const 0 - i32.const 304 - i32.const 188 + i32.const 288 + i32.const 194 i32.const 2 call $~lib/builtins/abort unreachable @@ -18932,8 +19156,8 @@ i32.eqz if i32.const 0 - i32.const 304 - i32.const 190 + i32.const 288 + i32.const 196 i32.const 2 call $~lib/builtins/abort unreachable @@ -18967,8 +19191,8 @@ i32.eqz if i32.const 0 - i32.const 304 - i32.const 192 + i32.const 288 + i32.const 198 i32.const 2 call $~lib/builtins/abort unreachable @@ -19002,8 +19226,8 @@ i32.eqz if i32.const 0 - i32.const 304 - i32.const 194 + i32.const 288 + i32.const 200 i32.const 2 call $~lib/builtins/abort unreachable @@ -19037,8 +19261,8 @@ i32.eqz if i32.const 0 - i32.const 304 - i32.const 196 + i32.const 288 + i32.const 202 i32.const 2 call $~lib/builtins/abort unreachable @@ -19072,8 +19296,8 @@ i32.eqz if i32.const 0 - i32.const 304 - i32.const 198 + i32.const 288 + i32.const 204 i32.const 2 call $~lib/builtins/abort unreachable @@ -19107,8 +19331,8 @@ i32.eqz if i32.const 0 - i32.const 304 - i32.const 200 + i32.const 288 + i32.const 206 i32.const 2 call $~lib/builtins/abort unreachable @@ -19142,8 +19366,8 @@ i32.eqz if i32.const 0 - i32.const 304 - i32.const 202 + i32.const 288 + i32.const 208 i32.const 2 call $~lib/builtins/abort unreachable @@ -19177,8 +19401,8 @@ i32.eqz if i32.const 0 - i32.const 304 - i32.const 204 + i32.const 288 + i32.const 210 i32.const 2 call $~lib/builtins/abort unreachable @@ -19212,8 +19436,8 @@ i32.eqz if i32.const 0 - i32.const 304 - i32.const 206 + i32.const 288 + i32.const 212 i32.const 2 call $~lib/builtins/abort unreachable @@ -19247,8 +19471,8 @@ i32.eqz if i32.const 0 - i32.const 304 - i32.const 208 + i32.const 288 + i32.const 214 i32.const 2 call $~lib/builtins/abort unreachable @@ -19314,8 +19538,8 @@ i32.eqz if i32.const 0 - i32.const 304 - i32.const 216 + i32.const 288 + i32.const 222 i32.const 2 call $~lib/builtins/abort unreachable @@ -19327,8 +19551,8 @@ i32.eqz if i32.const 0 - i32.const 304 - i32.const 217 + i32.const 288 + i32.const 223 i32.const 2 call $~lib/builtins/abort unreachable @@ -19341,8 +19565,8 @@ i32.eqz if i32.const 0 - i32.const 304 - i32.const 218 + i32.const 288 + i32.const 224 i32.const 2 call $~lib/builtins/abort unreachable @@ -19355,8 +19579,8 @@ i32.eqz if i32.const 0 - i32.const 304 - i32.const 219 + i32.const 288 + i32.const 225 i32.const 2 call $~lib/builtins/abort unreachable @@ -19369,8 +19593,8 @@ i32.eqz if i32.const 0 - i32.const 304 - i32.const 220 + i32.const 288 + i32.const 226 i32.const 2 call $~lib/builtins/abort unreachable @@ -19383,8 +19607,8 @@ i32.eqz if i32.const 0 - i32.const 304 - i32.const 221 + i32.const 288 + i32.const 227 i32.const 2 call $~lib/builtins/abort unreachable @@ -19400,8 +19624,8 @@ i32.eqz if i32.const 0 - i32.const 304 - i32.const 225 + i32.const 288 + i32.const 231 i32.const 2 call $~lib/builtins/abort unreachable @@ -19413,8 +19637,8 @@ i32.eqz if i32.const 0 - i32.const 304 - i32.const 226 + i32.const 288 + i32.const 232 i32.const 2 call $~lib/builtins/abort unreachable @@ -19427,8 +19651,8 @@ i32.eqz if i32.const 0 - i32.const 304 - i32.const 227 + i32.const 288 + i32.const 233 i32.const 2 call $~lib/builtins/abort unreachable @@ -19441,8 +19665,8 @@ i32.eqz if i32.const 0 - i32.const 304 - i32.const 228 + i32.const 288 + i32.const 234 i32.const 2 call $~lib/builtins/abort unreachable @@ -19455,8 +19679,8 @@ i32.eqz if i32.const 0 - i32.const 304 - i32.const 229 + i32.const 288 + i32.const 235 i32.const 2 call $~lib/builtins/abort unreachable @@ -19469,8 +19693,8 @@ i32.eqz if i32.const 0 - i32.const 304 - i32.const 230 + i32.const 288 + i32.const 236 i32.const 2 call $~lib/builtins/abort unreachable @@ -19483,8 +19707,8 @@ i32.eqz if i32.const 0 - i32.const 304 - i32.const 231 + i32.const 288 + i32.const 237 i32.const 2 call $~lib/builtins/abort unreachable @@ -19498,8 +19722,8 @@ i32.eqz if i32.const 0 - i32.const 304 - i32.const 240 + i32.const 288 + i32.const 246 i32.const 2 call $~lib/builtins/abort unreachable @@ -19511,8 +19735,8 @@ i32.eqz if i32.const 0 - i32.const 304 - i32.const 241 + i32.const 288 + i32.const 247 i32.const 2 call $~lib/builtins/abort unreachable @@ -19524,8 +19748,8 @@ i32.eqz if i32.const 0 - i32.const 304 - i32.const 242 + i32.const 288 + i32.const 248 i32.const 2 call $~lib/builtins/abort unreachable @@ -19538,8 +19762,8 @@ i32.eqz if i32.const 0 - i32.const 304 - i32.const 243 + i32.const 288 + i32.const 249 i32.const 2 call $~lib/builtins/abort unreachable @@ -19552,8 +19776,8 @@ i32.eqz if i32.const 0 - i32.const 304 - i32.const 244 + i32.const 288 + i32.const 250 i32.const 2 call $~lib/builtins/abort unreachable @@ -19566,8 +19790,8 @@ i32.eqz if i32.const 0 - i32.const 304 - i32.const 245 + i32.const 288 + i32.const 251 i32.const 2 call $~lib/builtins/abort unreachable @@ -19580,8 +19804,8 @@ i32.eqz if i32.const 0 - i32.const 304 - i32.const 246 + i32.const 288 + i32.const 252 i32.const 2 call $~lib/builtins/abort unreachable @@ -19595,8 +19819,8 @@ i32.eqz if i32.const 0 - i32.const 304 - i32.const 250 + i32.const 288 + i32.const 256 i32.const 2 call $~lib/builtins/abort unreachable @@ -19608,8 +19832,8 @@ i32.eqz if i32.const 0 - i32.const 304 - i32.const 251 + i32.const 288 + i32.const 257 i32.const 2 call $~lib/builtins/abort unreachable @@ -19621,8 +19845,8 @@ i32.eqz if i32.const 0 - i32.const 304 - i32.const 252 + i32.const 288 + i32.const 258 i32.const 2 call $~lib/builtins/abort unreachable @@ -19635,8 +19859,8 @@ i32.eqz if i32.const 0 - i32.const 304 - i32.const 253 + i32.const 288 + i32.const 259 i32.const 2 call $~lib/builtins/abort unreachable @@ -19649,8 +19873,8 @@ i32.eqz if i32.const 0 - i32.const 304 - i32.const 254 + i32.const 288 + i32.const 260 i32.const 2 call $~lib/builtins/abort unreachable @@ -19663,8 +19887,8 @@ i32.eqz if i32.const 0 - i32.const 304 - i32.const 255 + i32.const 288 + i32.const 261 i32.const 2 call $~lib/builtins/abort unreachable @@ -19679,8 +19903,8 @@ i32.eqz if i32.const 0 - i32.const 304 - i32.const 263 + i32.const 288 + i32.const 269 i32.const 2 call $~lib/builtins/abort unreachable @@ -19692,8 +19916,8 @@ i32.eqz if i32.const 0 - i32.const 304 - i32.const 264 + i32.const 288 + i32.const 270 i32.const 2 call $~lib/builtins/abort unreachable @@ -19706,8 +19930,8 @@ i32.eqz if i32.const 0 - i32.const 304 - i32.const 265 + i32.const 288 + i32.const 271 i32.const 2 call $~lib/builtins/abort unreachable @@ -19720,8 +19944,8 @@ i32.eqz if i32.const 0 - i32.const 304 - i32.const 266 + i32.const 288 + i32.const 272 i32.const 2 call $~lib/builtins/abort unreachable @@ -19734,8 +19958,8 @@ i32.eqz if i32.const 0 - i32.const 304 - i32.const 267 + i32.const 288 + i32.const 273 i32.const 2 call $~lib/builtins/abort unreachable @@ -19759,8 +19983,8 @@ i32.eqz if i32.const 0 - i32.const 304 - i32.const 277 + i32.const 288 + i32.const 283 i32.const 2 call $~lib/builtins/abort unreachable @@ -19776,8 +20000,8 @@ i32.eqz if i32.const 0 - i32.const 304 - i32.const 280 + i32.const 288 + i32.const 286 i32.const 2 call $~lib/builtins/abort unreachable @@ -19793,8 +20017,8 @@ i32.eqz if i32.const 0 - i32.const 304 - i32.const 283 + i32.const 288 + i32.const 289 i32.const 2 call $~lib/builtins/abort unreachable @@ -19810,8 +20034,8 @@ i32.eqz if i32.const 0 - i32.const 304 - i32.const 286 + i32.const 288 + i32.const 292 i32.const 2 call $~lib/builtins/abort unreachable @@ -19827,8 +20051,8 @@ i32.eqz if i32.const 0 - i32.const 304 - i32.const 289 + i32.const 288 + i32.const 295 i32.const 2 call $~lib/builtins/abort unreachable @@ -19844,8 +20068,8 @@ i32.eqz if i32.const 0 - i32.const 304 - i32.const 292 + i32.const 288 + i32.const 298 i32.const 2 call $~lib/builtins/abort unreachable @@ -19861,8 +20085,8 @@ i32.eqz if i32.const 0 - i32.const 304 - i32.const 295 + i32.const 288 + i32.const 301 i32.const 2 call $~lib/builtins/abort unreachable @@ -19878,8 +20102,8 @@ i32.eqz if i32.const 0 + i32.const 288 i32.const 304 - i32.const 298 i32.const 2 call $~lib/builtins/abort unreachable @@ -19895,8 +20119,8 @@ i32.eqz if i32.const 0 - i32.const 304 - i32.const 301 + i32.const 288 + i32.const 307 i32.const 2 call $~lib/builtins/abort unreachable @@ -19912,8 +20136,8 @@ i32.eqz if i32.const 0 - i32.const 304 - i32.const 304 + i32.const 288 + i32.const 310 i32.const 2 call $~lib/builtins/abort unreachable @@ -19933,8 +20157,8 @@ i32.eqz if i32.const 0 - i32.const 304 - i32.const 306 + i32.const 288 + i32.const 312 i32.const 2 call $~lib/builtins/abort unreachable @@ -19954,8 +20178,8 @@ i32.eqz if i32.const 0 - i32.const 304 - i32.const 307 + i32.const 288 + i32.const 313 i32.const 2 call $~lib/builtins/abort unreachable @@ -19975,8 +20199,8 @@ i32.eqz if i32.const 0 - i32.const 304 - i32.const 314 + i32.const 288 + i32.const 320 i32.const 2 call $~lib/builtins/abort unreachable @@ -19992,8 +20216,8 @@ i32.eqz if i32.const 0 - i32.const 304 - i32.const 317 + i32.const 288 + i32.const 323 i32.const 2 call $~lib/builtins/abort unreachable @@ -20009,8 +20233,8 @@ i32.eqz if i32.const 0 - i32.const 304 - i32.const 320 + i32.const 288 + i32.const 326 i32.const 2 call $~lib/builtins/abort unreachable @@ -20026,8 +20250,8 @@ i32.eqz if i32.const 0 - i32.const 304 - i32.const 323 + i32.const 288 + i32.const 329 i32.const 2 call $~lib/builtins/abort unreachable @@ -20043,8 +20267,8 @@ i32.eqz if i32.const 0 - i32.const 304 - i32.const 326 + i32.const 288 + i32.const 332 i32.const 2 call $~lib/builtins/abort unreachable @@ -20060,8 +20284,8 @@ i32.eqz if i32.const 0 - i32.const 304 - i32.const 329 + i32.const 288 + i32.const 335 i32.const 2 call $~lib/builtins/abort unreachable @@ -20077,8 +20301,8 @@ i32.eqz if i32.const 0 - i32.const 304 - i32.const 332 + i32.const 288 + i32.const 338 i32.const 2 call $~lib/builtins/abort unreachable @@ -20094,8 +20318,8 @@ i32.eqz if i32.const 0 - i32.const 304 - i32.const 335 + i32.const 288 + i32.const 341 i32.const 2 call $~lib/builtins/abort unreachable @@ -20111,8 +20335,8 @@ i32.eqz if i32.const 0 - i32.const 304 - i32.const 338 + i32.const 288 + i32.const 344 i32.const 2 call $~lib/builtins/abort unreachable @@ -20128,8 +20352,8 @@ i32.eqz if i32.const 0 - i32.const 304 - i32.const 341 + i32.const 288 + i32.const 347 i32.const 2 call $~lib/builtins/abort unreachable @@ -20147,8 +20371,8 @@ i32.eqz if i32.const 0 - i32.const 304 - i32.const 343 + i32.const 288 + i32.const 349 i32.const 2 call $~lib/builtins/abort unreachable @@ -20166,8 +20390,8 @@ i32.eqz if i32.const 0 - i32.const 304 - i32.const 344 + i32.const 288 + i32.const 350 i32.const 2 call $~lib/builtins/abort unreachable @@ -20184,8 +20408,8 @@ i32.eqz if i32.const 0 - i32.const 304 - i32.const 348 + i32.const 288 + i32.const 354 i32.const 2 call $~lib/builtins/abort unreachable @@ -20197,8 +20421,8 @@ i32.eqz if i32.const 0 - i32.const 304 - i32.const 349 + i32.const 288 + i32.const 355 i32.const 2 call $~lib/builtins/abort unreachable @@ -20211,8 +20435,8 @@ i32.eqz if i32.const 0 - i32.const 304 - i32.const 350 + i32.const 288 + i32.const 356 i32.const 2 call $~lib/builtins/abort unreachable @@ -20225,8 +20449,8 @@ i32.eqz if i32.const 0 - i32.const 304 - i32.const 351 + i32.const 288 + i32.const 357 i32.const 2 call $~lib/builtins/abort unreachable @@ -20259,8 +20483,8 @@ i32.eqz if i32.const 0 - i32.const 304 - i32.const 358 + i32.const 288 + i32.const 364 i32.const 2 call $~lib/builtins/abort unreachable @@ -20278,8 +20502,8 @@ i32.eqz if i32.const 0 - i32.const 304 - i32.const 359 + i32.const 288 + i32.const 365 i32.const 2 call $~lib/builtins/abort unreachable @@ -20312,8 +20536,8 @@ i32.eqz if i32.const 0 - i32.const 304 - i32.const 362 + i32.const 288 + i32.const 368 i32.const 2 call $~lib/builtins/abort unreachable @@ -20331,8 +20555,8 @@ i32.eqz if i32.const 0 - i32.const 304 - i32.const 363 + i32.const 288 + i32.const 369 i32.const 2 call $~lib/builtins/abort unreachable @@ -20365,8 +20589,8 @@ i32.eqz if i32.const 0 - i32.const 304 - i32.const 366 + i32.const 288 + i32.const 372 i32.const 2 call $~lib/builtins/abort unreachable @@ -20384,8 +20608,8 @@ i32.eqz if i32.const 0 - i32.const 304 - i32.const 367 + i32.const 288 + i32.const 373 i32.const 2 call $~lib/builtins/abort unreachable @@ -20418,8 +20642,8 @@ i32.eqz if i32.const 0 - i32.const 304 - i32.const 370 + i32.const 288 + i32.const 376 i32.const 2 call $~lib/builtins/abort unreachable @@ -20437,8 +20661,8 @@ i32.eqz if i32.const 0 - i32.const 304 - i32.const 371 + i32.const 288 + i32.const 377 i32.const 2 call $~lib/builtins/abort unreachable @@ -20471,8 +20695,8 @@ i32.eqz if i32.const 0 - i32.const 304 - i32.const 374 + i32.const 288 + i32.const 380 i32.const 2 call $~lib/builtins/abort unreachable @@ -20490,8 +20714,8 @@ i32.eqz if i32.const 0 - i32.const 304 - i32.const 375 + i32.const 288 + i32.const 381 i32.const 2 call $~lib/builtins/abort unreachable @@ -20524,8 +20748,8 @@ i32.eqz if i32.const 0 - i32.const 304 - i32.const 378 + i32.const 288 + i32.const 384 i32.const 2 call $~lib/builtins/abort unreachable @@ -20543,8 +20767,8 @@ i32.eqz if i32.const 0 - i32.const 304 - i32.const 379 + i32.const 288 + i32.const 385 i32.const 2 call $~lib/builtins/abort unreachable @@ -20577,8 +20801,8 @@ i32.eqz if i32.const 0 - i32.const 304 - i32.const 382 + i32.const 288 + i32.const 388 i32.const 2 call $~lib/builtins/abort unreachable @@ -20596,8 +20820,8 @@ i32.eqz if i32.const 0 - i32.const 304 - i32.const 383 + i32.const 288 + i32.const 389 i32.const 2 call $~lib/builtins/abort unreachable @@ -20630,8 +20854,8 @@ i32.eqz if i32.const 0 - i32.const 304 - i32.const 386 + i32.const 288 + i32.const 392 i32.const 2 call $~lib/builtins/abort unreachable @@ -20649,8 +20873,8 @@ i32.eqz if i32.const 0 - i32.const 304 - i32.const 387 + i32.const 288 + i32.const 393 i32.const 2 call $~lib/builtins/abort unreachable @@ -20683,8 +20907,8 @@ i32.eqz if i32.const 0 - i32.const 304 - i32.const 390 + i32.const 288 + i32.const 396 i32.const 2 call $~lib/builtins/abort unreachable @@ -20702,8 +20926,8 @@ i32.eqz if i32.const 0 - i32.const 304 - i32.const 391 + i32.const 288 + i32.const 397 i32.const 2 call $~lib/builtins/abort unreachable @@ -20736,8 +20960,8 @@ i32.eqz if i32.const 0 - i32.const 304 - i32.const 394 + i32.const 288 + i32.const 400 i32.const 2 call $~lib/builtins/abort unreachable @@ -20755,8 +20979,8 @@ i32.eqz if i32.const 0 - i32.const 304 - i32.const 395 + i32.const 288 + i32.const 401 i32.const 2 call $~lib/builtins/abort unreachable @@ -20789,8 +21013,8 @@ i32.eqz if i32.const 0 - i32.const 304 - i32.const 398 + i32.const 288 + i32.const 404 i32.const 2 call $~lib/builtins/abort unreachable @@ -20808,8 +21032,8 @@ i32.eqz if i32.const 0 - i32.const 304 - i32.const 399 + i32.const 288 + i32.const 405 i32.const 2 call $~lib/builtins/abort unreachable @@ -20842,8 +21066,8 @@ i32.eqz if i32.const 0 - i32.const 304 - i32.const 402 + i32.const 288 + i32.const 408 i32.const 2 call $~lib/builtins/abort unreachable @@ -20861,8 +21085,8 @@ i32.eqz if i32.const 0 - i32.const 304 - i32.const 403 + i32.const 288 + i32.const 409 i32.const 2 call $~lib/builtins/abort unreachable @@ -20895,8 +21119,8 @@ i32.eqz if i32.const 0 - i32.const 304 - i32.const 406 + i32.const 288 + i32.const 412 i32.const 2 call $~lib/builtins/abort unreachable @@ -20914,8 +21138,8 @@ i32.eqz if i32.const 0 - i32.const 304 - i32.const 407 + i32.const 288 + i32.const 413 i32.const 2 call $~lib/builtins/abort unreachable @@ -20948,8 +21172,8 @@ i32.eqz if i32.const 0 - i32.const 304 - i32.const 410 + i32.const 288 + i32.const 416 i32.const 2 call $~lib/builtins/abort unreachable @@ -20967,8 +21191,8 @@ i32.eqz if i32.const 0 - i32.const 304 - i32.const 411 + i32.const 288 + i32.const 417 i32.const 2 call $~lib/builtins/abort unreachable @@ -20992,8 +21216,8 @@ i32.eqz if i32.const 0 - i32.const 304 - i32.const 415 + i32.const 288 + i32.const 421 i32.const 2 call $~lib/builtins/abort unreachable @@ -21005,8 +21229,8 @@ i32.eqz if i32.const 0 - i32.const 304 - i32.const 416 + i32.const 288 + i32.const 422 i32.const 2 call $~lib/builtins/abort unreachable @@ -21078,8 +21302,8 @@ i32.eqz if i32.const 0 - i32.const 304 - i32.const 421 + i32.const 288 + i32.const 427 i32.const 2 call $~lib/builtins/abort unreachable @@ -21094,8 +21318,8 @@ i32.eqz if i32.const 0 - i32.const 304 - i32.const 422 + i32.const 288 + i32.const 428 i32.const 2 call $~lib/builtins/abort unreachable @@ -21110,8 +21334,8 @@ i32.eqz if i32.const 0 - i32.const 304 - i32.const 423 + i32.const 288 + i32.const 429 i32.const 2 call $~lib/builtins/abort unreachable @@ -21123,8 +21347,8 @@ i32.eqz if i32.const 0 - i32.const 304 - i32.const 425 + i32.const 288 + i32.const 431 i32.const 2 call $~lib/builtins/abort unreachable @@ -21139,8 +21363,8 @@ i32.eqz if i32.const 0 - i32.const 304 - i32.const 426 + i32.const 288 + i32.const 432 i32.const 2 call $~lib/builtins/abort unreachable @@ -21155,8 +21379,8 @@ i32.eqz if i32.const 0 - i32.const 304 - i32.const 427 + i32.const 288 + i32.const 433 i32.const 2 call $~lib/builtins/abort unreachable @@ -21171,8 +21395,8 @@ i32.eqz if i32.const 0 - i32.const 304 - i32.const 428 + i32.const 288 + i32.const 434 i32.const 2 call $~lib/builtins/abort unreachable @@ -21219,8 +21443,8 @@ i32.eqz if i32.const 0 - i32.const 304 - i32.const 433 + i32.const 288 + i32.const 439 i32.const 2 call $~lib/builtins/abort unreachable @@ -21234,8 +21458,8 @@ local.get $55 else i32.const 0 - i32.const 304 - i32.const 434 + i32.const 288 + i32.const 440 i32.const 9 call $~lib/builtins/abort unreachable @@ -21246,8 +21470,8 @@ i32.eqz if i32.const 0 - i32.const 304 - i32.const 434 + i32.const 288 + i32.const 440 i32.const 2 call $~lib/builtins/abort unreachable @@ -21259,8 +21483,8 @@ i32.eqz if i32.const 0 - i32.const 304 - i32.const 436 + i32.const 288 + i32.const 442 i32.const 2 call $~lib/builtins/abort unreachable @@ -21274,8 +21498,8 @@ i32.eqz if i32.const 0 - i32.const 304 - i32.const 437 + i32.const 288 + i32.const 443 i32.const 2 call $~lib/builtins/abort unreachable @@ -21289,8 +21513,8 @@ local.get $62 else i32.const 0 - i32.const 304 - i32.const 438 + i32.const 288 + i32.const 444 i32.const 9 call $~lib/builtins/abort unreachable @@ -21301,8 +21525,8 @@ i32.eqz if i32.const 0 - i32.const 304 - i32.const 438 + i32.const 288 + i32.const 444 i32.const 2 call $~lib/builtins/abort unreachable @@ -21449,8 +21673,8 @@ i32.eqz if i32.const 0 - i32.const 304 - i32.const 451 + i32.const 288 + i32.const 457 i32.const 2 call $~lib/builtins/abort unreachable @@ -21465,8 +21689,8 @@ i32.eqz if i32.const 0 - i32.const 304 - i32.const 454 + i32.const 288 + i32.const 460 i32.const 2 call $~lib/builtins/abort unreachable @@ -21481,8 +21705,8 @@ i32.eqz if i32.const 0 - i32.const 304 - i32.const 457 + i32.const 288 + i32.const 463 i32.const 2 call $~lib/builtins/abort unreachable @@ -21497,8 +21721,8 @@ i32.eqz if i32.const 0 - i32.const 304 - i32.const 465 + i32.const 288 + i32.const 471 i32.const 2 call $~lib/builtins/abort unreachable @@ -21510,8 +21734,8 @@ i32.eqz if i32.const 0 - i32.const 304 - i32.const 466 + i32.const 288 + i32.const 472 i32.const 2 call $~lib/builtins/abort unreachable @@ -21526,8 +21750,8 @@ i32.eqz if i32.const 0 - i32.const 304 - i32.const 468 + i32.const 288 + i32.const 474 i32.const 2 call $~lib/builtins/abort unreachable @@ -21554,8 +21778,8 @@ i32.eqz if i32.const 0 - i32.const 304 - i32.const 481 + i32.const 288 + i32.const 487 i32.const 2 call $~lib/builtins/abort unreachable @@ -21567,8 +21791,8 @@ i32.eqz if i32.const 0 - i32.const 304 - i32.const 482 + i32.const 288 + i32.const 488 i32.const 2 call $~lib/builtins/abort unreachable @@ -21591,8 +21815,8 @@ i32.eqz if i32.const 0 - i32.const 304 - i32.const 492 + i32.const 288 + i32.const 498 i32.const 2 call $~lib/builtins/abort unreachable @@ -21607,8 +21831,8 @@ i32.eqz if i32.const 0 - i32.const 304 - i32.const 495 + i32.const 288 + i32.const 501 i32.const 2 call $~lib/builtins/abort unreachable @@ -21623,8 +21847,8 @@ i32.eqz if i32.const 0 - i32.const 304 - i32.const 503 + i32.const 288 + i32.const 509 i32.const 2 call $~lib/builtins/abort unreachable @@ -21636,8 +21860,8 @@ i32.eqz if i32.const 0 - i32.const 304 - i32.const 504 + i32.const 288 + i32.const 510 i32.const 2 call $~lib/builtins/abort unreachable @@ -21652,8 +21876,8 @@ i32.eqz if i32.const 0 - i32.const 304 - i32.const 506 + i32.const 288 + i32.const 512 i32.const 2 call $~lib/builtins/abort unreachable @@ -21680,8 +21904,8 @@ i32.eqz if i32.const 0 - i32.const 304 - i32.const 519 + i32.const 288 + i32.const 525 i32.const 2 call $~lib/builtins/abort unreachable @@ -21693,8 +21917,8 @@ i32.eqz if i32.const 0 - i32.const 304 - i32.const 520 + i32.const 288 + i32.const 526 i32.const 2 call $~lib/builtins/abort unreachable @@ -21717,8 +21941,8 @@ i32.eqz if i32.const 0 - i32.const 304 - i32.const 530 + i32.const 288 + i32.const 536 i32.const 2 call $~lib/builtins/abort unreachable @@ -21733,8 +21957,8 @@ i32.eqz if i32.const 0 - i32.const 304 - i32.const 533 + i32.const 288 + i32.const 539 i32.const 2 call $~lib/builtins/abort unreachable @@ -21749,8 +21973,8 @@ i32.eqz if i32.const 0 - i32.const 304 - i32.const 541 + i32.const 288 + i32.const 547 i32.const 2 call $~lib/builtins/abort unreachable @@ -21762,8 +21986,8 @@ i32.eqz if i32.const 0 - i32.const 304 - i32.const 542 + i32.const 288 + i32.const 548 i32.const 2 call $~lib/builtins/abort unreachable @@ -21778,8 +22002,8 @@ i32.eqz if i32.const 0 - i32.const 304 - i32.const 544 + i32.const 288 + i32.const 550 i32.const 2 call $~lib/builtins/abort unreachable @@ -21806,8 +22030,8 @@ i32.eqz if i32.const 0 - i32.const 304 - i32.const 557 + i32.const 288 + i32.const 563 i32.const 2 call $~lib/builtins/abort unreachable @@ -21819,8 +22043,8 @@ i32.eqz if i32.const 0 - i32.const 304 - i32.const 558 + i32.const 288 + i32.const 564 i32.const 2 call $~lib/builtins/abort unreachable @@ -21844,8 +22068,8 @@ i32.eqz if i32.const 0 - i32.const 304 - i32.const 569 + i32.const 288 + i32.const 575 i32.const 2 call $~lib/builtins/abort unreachable @@ -21861,8 +22085,8 @@ i32.eqz if i32.const 0 - i32.const 304 - i32.const 578 + i32.const 288 + i32.const 584 i32.const 2 call $~lib/builtins/abort unreachable @@ -21874,8 +22098,8 @@ i32.eqz if i32.const 0 - i32.const 304 - i32.const 579 + i32.const 288 + i32.const 585 i32.const 2 call $~lib/builtins/abort unreachable @@ -21891,8 +22115,8 @@ i32.eqz if i32.const 0 - i32.const 304 - i32.const 582 + i32.const 288 + i32.const 588 i32.const 2 call $~lib/builtins/abort unreachable @@ -21920,8 +22144,8 @@ i32.eqz if i32.const 0 - i32.const 304 - i32.const 596 + i32.const 288 + i32.const 602 i32.const 2 call $~lib/builtins/abort unreachable @@ -21933,8 +22157,8 @@ i32.eqz if i32.const 0 - i32.const 304 - i32.const 597 + i32.const 288 + i32.const 603 i32.const 2 call $~lib/builtins/abort unreachable @@ -21957,8 +22181,8 @@ i32.eqz if i32.const 0 - i32.const 304 - i32.const 622 + i32.const 288 + i32.const 628 i32.const 2 call $~lib/builtins/abort unreachable @@ -22009,8 +22233,8 @@ i32.eqz if i32.const 0 - i32.const 304 - i32.const 636 + i32.const 288 + i32.const 642 i32.const 2 call $~lib/builtins/abort unreachable @@ -22026,8 +22250,8 @@ i32.eqz if i32.const 0 - i32.const 304 - i32.const 637 + i32.const 288 + i32.const 643 i32.const 2 call $~lib/builtins/abort unreachable @@ -22044,8 +22268,8 @@ i32.eqz if i32.const 0 - i32.const 304 - i32.const 646 + i32.const 288 + i32.const 652 i32.const 2 call $~lib/builtins/abort unreachable @@ -22057,8 +22281,8 @@ i32.eqz if i32.const 0 - i32.const 304 - i32.const 647 + i32.const 288 + i32.const 653 i32.const 2 call $~lib/builtins/abort unreachable @@ -22075,8 +22299,8 @@ i32.eqz if i32.const 0 - i32.const 304 - i32.const 654 + i32.const 288 + i32.const 660 i32.const 2 call $~lib/builtins/abort unreachable @@ -22105,8 +22329,8 @@ i32.eqz if i32.const 0 - i32.const 304 - i32.const 669 + i32.const 288 + i32.const 675 i32.const 2 call $~lib/builtins/abort unreachable @@ -22118,8 +22342,8 @@ i32.eqz if i32.const 0 - i32.const 304 - i32.const 670 + i32.const 288 + i32.const 676 i32.const 2 call $~lib/builtins/abort unreachable @@ -22145,8 +22369,8 @@ i32.eqz if i32.const 0 - i32.const 304 - i32.const 680 + i32.const 288 + i32.const 686 i32.const 2 call $~lib/builtins/abort unreachable @@ -22163,8 +22387,8 @@ i32.eqz if i32.const 0 - i32.const 304 - i32.const 689 + i32.const 288 + i32.const 695 i32.const 2 call $~lib/builtins/abort unreachable @@ -22176,8 +22400,8 @@ i32.eqz if i32.const 0 - i32.const 304 - i32.const 690 + i32.const 288 + i32.const 696 i32.const 2 call $~lib/builtins/abort unreachable @@ -22194,8 +22418,8 @@ i32.eqz if i32.const 0 - i32.const 304 - i32.const 697 + i32.const 288 + i32.const 703 i32.const 2 call $~lib/builtins/abort unreachable @@ -22224,8 +22448,8 @@ i32.eqz if i32.const 0 - i32.const 304 - i32.const 712 + i32.const 288 + i32.const 718 i32.const 2 call $~lib/builtins/abort unreachable @@ -22237,8 +22461,8 @@ i32.eqz if i32.const 0 - i32.const 304 - i32.const 713 + i32.const 288 + i32.const 719 i32.const 2 call $~lib/builtins/abort unreachable @@ -22264,8 +22488,8 @@ i32.eqz if i32.const 0 - i32.const 304 - i32.const 723 + i32.const 288 + i32.const 729 i32.const 2 call $~lib/builtins/abort unreachable @@ -22281,8 +22505,8 @@ i32.eqz if i32.const 0 - i32.const 304 - i32.const 727 + i32.const 288 + i32.const 733 i32.const 2 call $~lib/builtins/abort unreachable @@ -22300,8 +22524,8 @@ i32.eqz if i32.const 0 - i32.const 304 - i32.const 730 + i32.const 288 + i32.const 736 i32.const 2 call $~lib/builtins/abort unreachable @@ -22319,8 +22543,8 @@ i32.eqz if i32.const 0 - i32.const 304 - i32.const 733 + i32.const 288 + i32.const 739 i32.const 2 call $~lib/builtins/abort unreachable @@ -22336,8 +22560,8 @@ i32.eqz if i32.const 0 - i32.const 304 - i32.const 741 + i32.const 288 + i32.const 747 i32.const 2 call $~lib/builtins/abort unreachable @@ -22349,8 +22573,8 @@ i32.eqz if i32.const 0 - i32.const 304 - i32.const 742 + i32.const 288 + i32.const 748 i32.const 2 call $~lib/builtins/abort unreachable @@ -22366,8 +22590,8 @@ i32.eqz if i32.const 0 - i32.const 304 - i32.const 744 + i32.const 288 + i32.const 750 i32.const 2 call $~lib/builtins/abort unreachable @@ -22395,8 +22619,8 @@ i32.eqz if i32.const 0 - i32.const 304 - i32.const 757 + i32.const 288 + i32.const 763 i32.const 2 call $~lib/builtins/abort unreachable @@ -22408,8 +22632,8 @@ i32.eqz if i32.const 0 - i32.const 304 - i32.const 758 + i32.const 288 + i32.const 764 i32.const 2 call $~lib/builtins/abort unreachable @@ -22433,8 +22657,8 @@ i32.eqz if i32.const 0 - i32.const 304 - i32.const 768 + i32.const 288 + i32.const 774 i32.const 2 call $~lib/builtins/abort unreachable @@ -22450,8 +22674,8 @@ i32.eqz if i32.const 0 - i32.const 304 - i32.const 772 + i32.const 288 + i32.const 778 i32.const 2 call $~lib/builtins/abort unreachable @@ -22469,8 +22693,8 @@ i32.eqz if i32.const 0 - i32.const 304 - i32.const 775 + i32.const 288 + i32.const 781 i32.const 2 call $~lib/builtins/abort unreachable @@ -22488,8 +22712,8 @@ i32.eqz if i32.const 0 - i32.const 304 - i32.const 778 + i32.const 288 + i32.const 784 i32.const 2 call $~lib/builtins/abort unreachable @@ -22505,8 +22729,8 @@ i32.eqz if i32.const 0 - i32.const 304 - i32.const 786 + i32.const 288 + i32.const 792 i32.const 2 call $~lib/builtins/abort unreachable @@ -22518,8 +22742,8 @@ i32.eqz if i32.const 0 - i32.const 304 - i32.const 787 + i32.const 288 + i32.const 793 i32.const 2 call $~lib/builtins/abort unreachable @@ -22535,8 +22759,8 @@ i32.eqz if i32.const 0 - i32.const 304 - i32.const 789 + i32.const 288 + i32.const 795 i32.const 2 call $~lib/builtins/abort unreachable @@ -22564,8 +22788,8 @@ i32.eqz if i32.const 0 - i32.const 304 - i32.const 802 + i32.const 288 + i32.const 808 i32.const 2 call $~lib/builtins/abort unreachable @@ -22577,8 +22801,8 @@ i32.eqz if i32.const 0 - i32.const 304 - i32.const 803 + i32.const 288 + i32.const 809 i32.const 2 call $~lib/builtins/abort unreachable @@ -22628,8 +22852,8 @@ i32.eqz if i32.const 0 - i32.const 304 - i32.const 892 + i32.const 288 + i32.const 898 i32.const 2 call $~lib/builtins/abort unreachable @@ -22660,8 +22884,8 @@ i32.eqz if i32.const 0 - i32.const 304 - i32.const 896 + i32.const 288 + i32.const 902 i32.const 2 call $~lib/builtins/abort unreachable @@ -22692,8 +22916,8 @@ i32.eqz if i32.const 0 - i32.const 304 - i32.const 900 + i32.const 288 + i32.const 906 i32.const 2 call $~lib/builtins/abort unreachable @@ -22724,8 +22948,8 @@ i32.eqz if i32.const 0 - i32.const 304 - i32.const 904 + i32.const 288 + i32.const 910 i32.const 2 call $~lib/builtins/abort unreachable @@ -22797,8 +23021,8 @@ i32.eqz if i32.const 0 - i32.const 304 - i32.const 924 + i32.const 288 + i32.const 930 i32.const 2 call $~lib/builtins/abort unreachable @@ -22818,8 +23042,8 @@ i32.eqz if i32.const 0 - i32.const 304 - i32.const 927 + i32.const 288 + i32.const 933 i32.const 2 call $~lib/builtins/abort unreachable @@ -22833,8 +23057,8 @@ i32.eqz if i32.const 0 - i32.const 304 - i32.const 930 + i32.const 288 + i32.const 936 i32.const 2 call $~lib/builtins/abort unreachable @@ -22848,8 +23072,8 @@ i32.eqz if i32.const 0 - i32.const 304 - i32.const 933 + i32.const 288 + i32.const 939 i32.const 2 call $~lib/builtins/abort unreachable @@ -22863,8 +23087,8 @@ i32.eqz if i32.const 0 - i32.const 304 - i32.const 936 + i32.const 288 + i32.const 942 i32.const 2 call $~lib/builtins/abort unreachable @@ -22878,8 +23102,8 @@ i32.eqz if i32.const 0 - i32.const 304 - i32.const 939 + i32.const 288 + i32.const 945 i32.const 2 call $~lib/builtins/abort unreachable @@ -22893,8 +23117,8 @@ i32.eqz if i32.const 0 - i32.const 304 - i32.const 942 + i32.const 288 + i32.const 948 i32.const 2 call $~lib/builtins/abort unreachable @@ -23005,8 +23229,8 @@ i32.eqz if i32.const 0 - i32.const 304 - i32.const 979 + i32.const 288 + i32.const 985 i32.const 2 call $~lib/builtins/abort unreachable @@ -23040,8 +23264,8 @@ i32.eqz if i32.const 0 - i32.const 304 - i32.const 988 + i32.const 288 + i32.const 994 i32.const 2 call $~lib/builtins/abort unreachable @@ -23061,8 +23285,8 @@ i32.eqz if i32.const 0 - i32.const 304 - i32.const 989 + i32.const 288 + i32.const 995 i32.const 2 call $~lib/builtins/abort unreachable @@ -23082,8 +23306,8 @@ i32.eqz if i32.const 0 - i32.const 304 - i32.const 990 + i32.const 288 + i32.const 996 i32.const 2 call $~lib/builtins/abort unreachable @@ -23103,8 +23327,8 @@ i32.eqz if i32.const 0 - i32.const 304 - i32.const 991 + i32.const 288 + i32.const 997 i32.const 2 call $~lib/builtins/abort unreachable @@ -23124,8 +23348,8 @@ i32.eqz if i32.const 0 - i32.const 304 - i32.const 992 + i32.const 288 + i32.const 998 i32.const 2 call $~lib/builtins/abort unreachable @@ -23145,8 +23369,8 @@ i32.eqz if i32.const 0 - i32.const 304 - i32.const 993 + i32.const 288 + i32.const 999 i32.const 2 call $~lib/builtins/abort unreachable @@ -23190,8 +23414,8 @@ i32.eqz if i32.const 0 - i32.const 304 - i32.const 995 + i32.const 288 + i32.const 1001 i32.const 2 call $~lib/builtins/abort unreachable @@ -23231,8 +23455,8 @@ i32.eqz if i32.const 0 - i32.const 304 - i32.const 998 + i32.const 288 + i32.const 1004 i32.const 2 call $~lib/builtins/abort unreachable @@ -23313,8 +23537,8 @@ i32.eqz if i32.const 0 - i32.const 304 - i32.const 1008 + i32.const 288 + i32.const 1014 i32.const 2 call $~lib/builtins/abort unreachable @@ -23327,8 +23551,8 @@ i32.eqz if i32.const 0 - i32.const 304 - i32.const 1009 + i32.const 288 + i32.const 1015 i32.const 2 call $~lib/builtins/abort unreachable @@ -23341,8 +23565,8 @@ i32.eqz if i32.const 0 - i32.const 304 - i32.const 1010 + i32.const 288 + i32.const 1016 i32.const 2 call $~lib/builtins/abort unreachable @@ -23355,8 +23579,8 @@ i32.eqz if i32.const 0 - i32.const 304 - i32.const 1011 + i32.const 288 + i32.const 1017 i32.const 2 call $~lib/builtins/abort unreachable @@ -23375,8 +23599,8 @@ i32.eqz if i32.const 0 - i32.const 304 - i32.const 1013 + i32.const 288 + i32.const 1019 i32.const 2 call $~lib/builtins/abort unreachable @@ -23395,8 +23619,8 @@ i32.eqz if i32.const 0 - i32.const 304 - i32.const 1014 + i32.const 288 + i32.const 1020 i32.const 2 call $~lib/builtins/abort unreachable @@ -23415,8 +23639,8 @@ i32.eqz if i32.const 0 - i32.const 304 - i32.const 1015 + i32.const 288 + i32.const 1021 i32.const 2 call $~lib/builtins/abort unreachable @@ -23435,8 +23659,8 @@ i32.eqz if i32.const 0 - i32.const 304 - i32.const 1016 + i32.const 288 + i32.const 1022 i32.const 2 call $~lib/builtins/abort unreachable @@ -23456,8 +23680,8 @@ i32.eqz if i32.const 0 - i32.const 304 - i32.const 1020 + i32.const 288 + i32.const 1026 i32.const 2 call $~lib/builtins/abort unreachable @@ -23476,8 +23700,8 @@ i32.eqz if i32.const 0 - i32.const 304 - i32.const 1021 + i32.const 288 + i32.const 1027 i32.const 2 call $~lib/builtins/abort unreachable @@ -23522,8 +23746,8 @@ i32.eqz if i32.const 0 - i32.const 304 - i32.const 1024 + i32.const 288 + i32.const 1030 i32.const 2 call $~lib/builtins/abort unreachable @@ -23568,8 +23792,8 @@ i32.eqz if i32.const 0 - i32.const 304 - i32.const 1027 + i32.const 288 + i32.const 1033 i32.const 2 call $~lib/builtins/abort unreachable @@ -23619,8 +23843,8 @@ i32.eqz if i32.const 0 - i32.const 304 - i32.const 1030 + i32.const 288 + i32.const 1036 i32.const 2 call $~lib/builtins/abort unreachable @@ -23733,7 +23957,7 @@ i32.eqz if i32.const 0 - i32.const 256 + i32.const 240 i32.const 122 i32.const 13 call $~lib/builtins/abort @@ -23755,7 +23979,7 @@ i32.eqz if i32.const 0 - i32.const 256 + i32.const 240 i32.const 126 i32.const 17 call $~lib/builtins/abort @@ -23771,7 +23995,7 @@ i32.eqz if i32.const 0 - i32.const 256 + i32.const 240 i32.const 136 i32.const 15 call $~lib/builtins/abort @@ -23803,7 +24027,7 @@ i32.eqz if i32.const 0 - i32.const 256 + i32.const 240 i32.const 69 i32.const 15 call $~lib/builtins/abort @@ -23815,13 +24039,22 @@ call $~lib/rt/pure/decrement ) (func $~lib/array/Array#__visit_impl (; 314 ;) (param $0 i32) (param $1 i32) - nop + local.get $0 + i32.load + local.get $1 + call $~lib/rt/pure/__visit ) (func $~lib/array/Array#__visit_impl (; 315 ;) (param $0 i32) (param $1 i32) - nop + local.get $0 + i32.load + local.get $1 + call $~lib/rt/pure/__visit ) (func $~lib/array/Array#__visit_impl (; 316 ;) (param $0 i32) (param $1 i32) - nop + local.get $0 + i32.load + local.get $1 + call $~lib/rt/pure/__visit ) (func $~lib/array/Array#__visit_impl (; 317 ;) (param $0 i32) (param $1 i32) (local $2 i32) @@ -23861,12 +24094,22 @@ br $while-continue|0 end end + local.get $0 + i32.load + local.get $1 + call $~lib/rt/pure/__visit ) (func $~lib/array/Array#__visit_impl (; 318 ;) (param $0 i32) (param $1 i32) - nop + local.get $0 + i32.load + local.get $1 + call $~lib/rt/pure/__visit ) (func $~lib/array/Array#__visit_impl (; 319 ;) (param $0 i32) (param $1 i32) - nop + local.get $0 + i32.load + local.get $1 + call $~lib/rt/pure/__visit ) (func $~lib/array/Array#__visit_impl (; 320 ;) (param $0 i32) (param $1 i32) (local $2 i32) @@ -23906,6 +24149,10 @@ br $while-continue|0 end end + local.get $0 + i32.load + local.get $1 + call $~lib/rt/pure/__visit ) (func $~lib/array/Array<~lib/array/Array>#__visit_impl (; 321 ;) (param $0 i32) (param $1 i32) (local $2 i32) @@ -23945,6 +24192,10 @@ br $while-continue|0 end end + local.get $0 + i32.load + local.get $1 + call $~lib/rt/pure/__visit ) (func $~lib/array/Array>#__visit_impl (; 322 ;) (param $0 i32) (param $1 i32) (local $2 i32) @@ -23984,6 +24235,10 @@ br $while-continue|0 end end + local.get $0 + i32.load + local.get $1 + call $~lib/rt/pure/__visit ) (func $~lib/array/Array<~lib/string/String | null>#__visit_impl (; 323 ;) (param $0 i32) (param $1 i32) (local $2 i32) @@ -24023,6 +24278,10 @@ br $while-continue|0 end end + local.get $0 + i32.load + local.get $1 + call $~lib/rt/pure/__visit ) (func $~lib/array/Array<~lib/string/String>#__visit_impl (; 324 ;) (param $0 i32) (param $1 i32) (local $2 i32) @@ -24062,24 +24321,46 @@ br $while-continue|0 end end + local.get $0 + i32.load + local.get $1 + call $~lib/rt/pure/__visit ) (func $~lib/array/Array#__visit_impl (; 325 ;) (param $0 i32) (param $1 i32) - nop + local.get $0 + i32.load + local.get $1 + call $~lib/rt/pure/__visit ) (func $~lib/array/Array#__visit_impl (; 326 ;) (param $0 i32) (param $1 i32) - nop + local.get $0 + i32.load + local.get $1 + call $~lib/rt/pure/__visit ) (func $~lib/array/Array#__visit_impl (; 327 ;) (param $0 i32) (param $1 i32) - nop + local.get $0 + i32.load + local.get $1 + call $~lib/rt/pure/__visit ) (func $~lib/array/Array#__visit_impl (; 328 ;) (param $0 i32) (param $1 i32) - nop + local.get $0 + i32.load + local.get $1 + call $~lib/rt/pure/__visit ) (func $~lib/array/Array#__visit_impl (; 329 ;) (param $0 i32) (param $1 i32) - nop + local.get $0 + i32.load + local.get $1 + call $~lib/rt/pure/__visit ) (func $~lib/array/Array#__visit_impl (; 330 ;) (param $0 i32) (param $1 i32) - nop + local.get $0 + i32.load + local.get $1 + call $~lib/rt/pure/__visit ) (func $~lib/array/Array<~lib/array/Array>#__visit_impl (; 331 ;) (param $0 i32) (param $1 i32) (local $2 i32) @@ -24119,6 +24400,10 @@ br $while-continue|0 end end + local.get $0 + i32.load + local.get $1 + call $~lib/rt/pure/__visit ) (func $~lib/array/Array<~lib/array/Array>#__visit_impl (; 332 ;) (param $0 i32) (param $1 i32) (local $2 i32) @@ -24158,6 +24443,10 @@ br $while-continue|0 end end + local.get $0 + i32.load + local.get $1 + call $~lib/rt/pure/__visit ) (func $~lib/array/Array<~lib/array/Array<~lib/array/Array>>#__visit_impl (; 333 ;) (param $0 i32) (param $1 i32) (local $2 i32) @@ -24197,153 +24486,154 @@ br $while-continue|0 end end + local.get $0 + i32.load + local.get $1 + call $~lib/rt/pure/__visit ) (func $~lib/rt/__visit_members (; 334 ;) (param $0 i32) (param $1 i32) (local $2 i32) - block $block$4$break - block $switch$1$default - block $switch$1$case$27 - block $switch$1$case$26 - block $switch$1$case$25 - block $switch$1$case$24 - block $switch$1$case$23 - block $switch$1$case$22 - block $switch$1$case$21 - block $switch$1$case$20 - block $switch$1$case$19 - block $switch$1$case$18 - block $switch$1$case$17 - block $switch$1$case$16 - block $switch$1$case$14 - block $switch$1$case$13 - block $switch$1$case$12 - block $switch$1$case$11 - block $switch$1$case$10 - block $switch$1$case$9 - block $switch$1$case$8 - block $switch$1$case$5 - block $switch$1$case$4 - block $switch$1$case$2 - local.get $0 - i32.const 8 - i32.sub - i32.load - br_table $switch$1$case$2 $switch$1$case$2 $switch$1$case$4 $switch$1$case$5 $switch$1$case$2 $switch$1$case$4 $switch$1$case$8 $switch$1$case$9 $switch$1$case$10 $switch$1$case$11 $switch$1$case$12 $switch$1$case$13 $switch$1$case$14 $switch$1$case$2 $switch$1$case$16 $switch$1$case$17 $switch$1$case$18 $switch$1$case$19 $switch$1$case$20 $switch$1$case$21 $switch$1$case$22 $switch$1$case$23 $switch$1$case$24 $switch$1$case$25 $switch$1$case$26 $switch$1$case$27 $switch$1$default - end - return + block $switch$1$default + block $switch$1$case$27 + block $switch$1$case$26 + block $switch$1$case$25 + block $switch$1$case$24 + block $switch$1$case$23 + block $switch$1$case$22 + block $switch$1$case$21 + block $switch$1$case$20 + block $switch$1$case$19 + block $switch$1$case$18 + block $switch$1$case$17 + block $switch$1$case$16 + block $switch$1$case$14 + block $switch$1$case$13 + block $switch$1$case$12 + block $switch$1$case$11 + block $switch$1$case$10 + block $switch$1$case$9 + block $switch$1$case$8 + block $switch$1$case$5 + block $switch$1$case$4 + block $switch$1$case$2 + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $switch$1$case$2 $switch$1$case$2 $switch$1$case$4 $switch$1$case$5 $switch$1$case$2 $switch$1$case$4 $switch$1$case$8 $switch$1$case$9 $switch$1$case$10 $switch$1$case$11 $switch$1$case$12 $switch$1$case$13 $switch$1$case$14 $switch$1$case$2 $switch$1$case$16 $switch$1$case$17 $switch$1$case$18 $switch$1$case$19 $switch$1$case$20 $switch$1$case$21 $switch$1$case$22 $switch$1$case$23 $switch$1$case$24 $switch$1$case$25 $switch$1$case$26 $switch$1$case$27 $switch$1$default end - br $block$4$break + return end local.get $0 - local.get $1 - call $~lib/array/Array#__visit_impl - br $block$4$break + i32.load + local.tee $2 + if + local.get $2 + local.get $1 + call $~lib/rt/pure/__visit + end + return end local.get $0 local.get $1 - call $~lib/array/Array#__visit_impl - br $block$4$break + call $~lib/array/Array#__visit_impl + return end local.get $0 local.get $1 - call $~lib/array/Array#__visit_impl - br $block$4$break + call $~lib/array/Array#__visit_impl + return end local.get $0 local.get $1 - call $~lib/array/Array#__visit_impl - br $block$4$break + call $~lib/array/Array#__visit_impl + return end local.get $0 local.get $1 - call $~lib/array/Array#__visit_impl - br $block$4$break + call $~lib/array/Array#__visit_impl + return end local.get $0 local.get $1 - call $~lib/array/Array#__visit_impl - br $block$4$break + call $~lib/array/Array#__visit_impl + return end local.get $0 local.get $1 - call $~lib/array/Array#__visit_impl - br $block$4$break + call $~lib/array/Array#__visit_impl + return end local.get $0 local.get $1 - call $~lib/array/Array<~lib/array/Array>#__visit_impl - br $block$4$break + call $~lib/array/Array#__visit_impl + return end local.get $0 local.get $1 - call $~lib/array/Array>#__visit_impl - br $block$4$break + call $~lib/array/Array<~lib/array/Array>#__visit_impl + return end local.get $0 local.get $1 - call $~lib/array/Array<~lib/string/String | null>#__visit_impl - br $block$4$break + call $~lib/array/Array>#__visit_impl + return end local.get $0 local.get $1 - call $~lib/array/Array<~lib/string/String>#__visit_impl - br $block$4$break + call $~lib/array/Array<~lib/string/String | null>#__visit_impl + return end local.get $0 local.get $1 - call $~lib/array/Array#__visit_impl - br $block$4$break + call $~lib/array/Array<~lib/string/String>#__visit_impl + return end local.get $0 local.get $1 - call $~lib/array/Array#__visit_impl - br $block$4$break + call $~lib/array/Array#__visit_impl + return end local.get $0 local.get $1 - call $~lib/array/Array#__visit_impl - br $block$4$break + call $~lib/array/Array#__visit_impl + return end local.get $0 local.get $1 - call $~lib/array/Array#__visit_impl - br $block$4$break + call $~lib/array/Array#__visit_impl + return end local.get $0 local.get $1 - call $~lib/array/Array#__visit_impl - br $block$4$break + call $~lib/array/Array#__visit_impl + return end local.get $0 local.get $1 - call $~lib/array/Array#__visit_impl - br $block$4$break + call $~lib/array/Array#__visit_impl + return end local.get $0 local.get $1 - call $~lib/array/Array<~lib/array/Array>#__visit_impl - br $block$4$break + call $~lib/array/Array#__visit_impl + return end local.get $0 local.get $1 - call $~lib/array/Array<~lib/array/Array>#__visit_impl - br $block$4$break + call $~lib/array/Array<~lib/array/Array>#__visit_impl + return end local.get $0 local.get $1 - call $~lib/array/Array<~lib/array/Array<~lib/array/Array>>#__visit_impl - br $block$4$break + call $~lib/array/Array<~lib/array/Array>#__visit_impl + return end - unreachable - end - local.get $0 - i32.load - local.tee $2 - if - local.get $2 + local.get $0 local.get $1 - call $~lib/rt/pure/__visit + call $~lib/array/Array<~lib/array/Array<~lib/array/Array>>#__visit_impl + return end - return + unreachable ) ) diff --git a/tests/compiler/std/arraybuffer.optimized.wat b/tests/compiler/std/arraybuffer.optimized.wat index 9878ce32ec..49328befe4 100644 --- a/tests/compiler/std/arraybuffer.optimized.wat +++ b/tests/compiler/std/arraybuffer.optimized.wat @@ -2050,33 +2050,45 @@ i32.store offset=4 end ) - (func $~lib/rt/__visit_members (; 29 ;) (param $0 i32) - block $block$4$break - block $switch$1$default - block $switch$1$case$2 + (func $~lib/rt/pure/__visit (; 29 ;) (param $0 i32) + local.get $0 + i32.const 432 + i32.lt_u + if + return + end + local.get $0 + i32.const 16 + i32.sub + call $~lib/rt/pure/decrement + ) + (func $~lib/rt/__visit_members (; 30 ;) (param $0 i32) + block $switch$1$default + block $switch$1$case$5 + block $switch$1$case$4 + block $switch$1$case$2 + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $switch$1$case$2 $switch$1$case$2 $switch$1$case$4 $switch$1$case$5 $switch$1$case$4 $switch$1$case$4 $switch$1$case$4 $switch$1$case$4 $switch$1$case$4 $switch$1$case$4 $switch$1$case$4 $switch$1$case$4 $switch$1$case$4 $switch$1$case$4 $switch$1$case$4 $switch$1$case$4 $switch$1$default + end + return + end + local.get $0 + i32.load + local.tee $0 + if local.get $0 - i32.const 8 - i32.sub - i32.load - br_table $switch$1$case$2 $switch$1$case$2 $block$4$break $block$4$break $block$4$break $block$4$break $block$4$break $block$4$break $block$4$break $block$4$break $block$4$break $block$4$break $block$4$break $block$4$break $block$4$break $block$4$break $switch$1$default + call $~lib/rt/pure/__visit end return end - unreachable - end - local.get $0 - i32.load - local.tee $0 - if local.get $0 - i32.const 432 - i32.ge_u - if - local.get $0 - i32.const 16 - i32.sub - call $~lib/rt/pure/decrement - end + i32.load + call $~lib/rt/pure/__visit + return end + unreachable ) ) diff --git a/tests/compiler/std/arraybuffer.untouched.wat b/tests/compiler/std/arraybuffer.untouched.wat index 8b41a1e88f..cd9617c049 100644 --- a/tests/compiler/std/arraybuffer.untouched.wat +++ b/tests/compiler/std/arraybuffer.untouched.wat @@ -3974,40 +3974,40 @@ call $~lib/rt/pure/decrement ) (func $~lib/array/Array#__visit_impl (; 46 ;) (param $0 i32) (param $1 i32) - nop + local.get $0 + i32.load + local.get $1 + call $~lib/rt/pure/__visit ) (func $~lib/rt/__visit_members (; 47 ;) (param $0 i32) (param $1 i32) (local $2 i32) - block $block$4$break - block $switch$1$default - block $switch$1$case$5 - block $switch$1$case$4 - block $switch$1$case$2 - local.get $0 - i32.const 8 - i32.sub - i32.load - br_table $switch$1$case$2 $switch$1$case$2 $switch$1$case$4 $switch$1$case$5 $switch$1$case$4 $switch$1$case$4 $switch$1$case$4 $switch$1$case$4 $switch$1$case$4 $switch$1$case$4 $switch$1$case$4 $switch$1$case$4 $switch$1$case$4 $switch$1$case$4 $switch$1$case$4 $switch$1$case$4 $switch$1$default - end - return + block $switch$1$default + block $switch$1$case$5 + block $switch$1$case$4 + block $switch$1$case$2 + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $switch$1$case$2 $switch$1$case$2 $switch$1$case$4 $switch$1$case$5 $switch$1$case$4 $switch$1$case$4 $switch$1$case$4 $switch$1$case$4 $switch$1$case$4 $switch$1$case$4 $switch$1$case$4 $switch$1$case$4 $switch$1$case$4 $switch$1$case$4 $switch$1$case$4 $switch$1$case$4 $switch$1$default end - br $block$4$break + return end local.get $0 - local.get $1 - call $~lib/array/Array#__visit_impl - br $block$4$break + i32.load + local.tee $2 + if + local.get $2 + local.get $1 + call $~lib/rt/pure/__visit + end + return end - unreachable - end - local.get $0 - i32.load - local.tee $2 - if - local.get $2 + local.get $0 local.get $1 - call $~lib/rt/pure/__visit + call $~lib/array/Array#__visit_impl + return end - return + unreachable ) ) diff --git a/tests/compiler/std/map.optimized.wat b/tests/compiler/std/map.optimized.wat index 41c95dca5e..c41a0414b0 100644 --- a/tests/compiler/std/map.optimized.wat +++ b/tests/compiler/std/map.optimized.wat @@ -1,7 +1,7 @@ (module (type $i32_i32_=>_none (func (param i32 i32))) - (type $none_=>_i32 (func (result i32))) (type $i32_=>_i32 (func (param i32) (result i32))) + (type $none_=>_i32 (func (result i32))) (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) (type $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) (type $i32_=>_none (func (param i32))) @@ -42,8 +42,8 @@ (data (i32.const 288) "\14\00\00\00\01\00\00\00\01\00\00\00\14\00\00\00s\00t\00d\00/\00m\00a\00p\00.\00t\00s") (data (i32.const 336) "$\00\00\00\01\00\00\00\01\00\00\00$\00\00\00K\00e\00y\00 \00d\00o\00e\00s\00 \00n\00o\00t\00 \00e\00x\00i\00s\00t") (data (i32.const 400) "\16\00\00\00\01\00\00\00\01\00\00\00\16\00\00\00~\00l\00i\00b\00/\00m\00a\00p\00.\00t\00s") - (data (i32.const 448) "$\00\00\00\01\00\00\00\01\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e") - (data (i32.const 512) "\1a\00\00\00\01\00\00\00\01\00\00\00\1a\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00.\00t\00s") + (data (i32.const 448) "\1a\00\00\00\01\00\00\00\01\00\00\00\1a\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00.\00t\00s") + (data (i32.const 496) "$\00\00\00\01\00\00\00\01\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e") (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) (global $~lib/rt/tlsf/collectLock (mut i32) (i32.const 0)) (export "memory" (memory $0)) @@ -1124,7 +1124,7 @@ ) (func $~lib/rt/pure/__retain (; 17 ;) (param $0 i32) (result i32) local.get $0 - i32.const 556 + i32.const 548 i32.gt_u if local.get $0 @@ -1369,7 +1369,7 @@ ) (func $~lib/rt/pure/__release (; 20 ;) (param $0 i32) local.get $0 - i32.const 556 + i32.const 548 i32.gt_u if local.get $0 @@ -1750,73 +1750,71 @@ local.get $0 i32.load offset=4 ) - (func $~lib/arraybuffer/ArrayBufferView#constructor (; 29 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/array/Array#constructor (; 29 ;) (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) (local $3 i32) (local $4 i32) - local.get $1 + local.get $0 i32.const 1073741808 - local.get $2 - i32.shr_u i32.gt_u if i32.const 192 - i32.const 240 - i32.const 23 - i32.const 56 + i32.const 464 + i32.const 57 + i32.const 59 call $~lib/builtins/abort unreachable end - local.get $1 - local.get $2 - i32.shl - local.tee $3 + local.get $0 i32.const 0 call $~lib/rt/tlsf/__alloc local.tee $2 - local.get $3 - call $~lib/memory/memory.fill - local.get $0 - i32.eqz - if - i32.const 12 - i32.const 2 - call $~lib/rt/tlsf/__alloc - call $~lib/rt/pure/__retain - local.set $0 - end local.get $0 + call $~lib/memory/memory.fill + i32.const 16 + i32.const 4 + call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__retain + local.tee $1 i32.const 0 i32.store - local.get $0 + local.get $1 i32.const 0 i32.store offset=4 - local.get $0 + local.get $1 i32.const 0 i32.store offset=8 + local.get $1 + i32.const 0 + i32.store offset=12 local.get $2 - local.set $1 + local.set $3 local.get $2 - local.get $0 + local.get $1 i32.load local.tee $4 i32.ne if - local.get $1 + local.get $3 call $~lib/rt/pure/__retain - local.set $1 + local.set $3 local.get $4 call $~lib/rt/pure/__release end - local.get $0 local.get $1 + local.get $3 i32.store - local.get $0 + local.get $1 local.get $2 i32.store offset=4 + local.get $1 local.get $0 - local.get $3 i32.store offset=8 + local.get $1 local.get $0 + i32.store offset=12 + local.get $1 ) (func $~lib/rt/tlsf/checkUsedBlock (; 30 ;) (param $0 i32) (result i32) (local $1 i32) @@ -2137,7 +2135,7 @@ local.get $2 call $~lib/memory/memory.copy local.get $1 - i32.const 556 + i32.const 548 i32.ge_u if local.get $1 @@ -2167,7 +2165,7 @@ i32.gt_u if i32.const 192 - i32.const 528 + i32.const 464 i32.const 14 i32.const 47 call $~lib/builtins/abort @@ -2220,9 +2218,9 @@ i32.const 0 i32.lt_s if + i32.const 512 i32.const 464 - i32.const 528 - i32.const 109 + i32.const 120 i32.const 21 call $~lib/builtins/abort unreachable @@ -2266,32 +2264,21 @@ (local $6 i32) local.get $0 i32.load offset=8 - local.set $4 + local.set $3 local.get $0 i32.load offset=16 - local.set $2 - i32.const 16 - i32.const 4 - call $~lib/rt/tlsf/__alloc - call $~lib/rt/pure/__retain - local.get $2 - i32.const 0 - call $~lib/arraybuffer/ArrayBufferView#constructor - local.tee $1 - i32.const 0 - i32.store offset=12 - local.get $1 - local.get $2 - i32.store offset=12 + local.tee $4 + call $~lib/array/Array#constructor + local.set $1 i32.const 0 local.set $0 loop $for-loop|0 - local.get $3 local.get $2 + local.get $4 i32.lt_s if - local.get $4 local.get $3 + local.get $2 i32.const 12 i32.mul i32.add @@ -2312,10 +2299,10 @@ i32.load8_s call $~lib/array/Array#__set end - local.get $3 + local.get $2 i32.const 1 i32.add - local.set $3 + local.set $2 br $for-loop|0 end end @@ -2326,16 +2313,69 @@ ) (func $~lib/array/Array#constructor (; 38 ;) (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 268435452 + i32.gt_u + if + i32.const 192 + i32.const 464 + i32.const 57 + i32.const 59 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 2 + i32.shl + local.tee $4 + i32.const 0 + call $~lib/rt/tlsf/__alloc + local.tee $2 + local.get $4 + call $~lib/memory/memory.fill i32.const 16 i32.const 5 call $~lib/rt/tlsf/__alloc call $~lib/rt/pure/__retain - local.get $0 - i32.const 2 - call $~lib/arraybuffer/ArrayBufferView#constructor local.tee $1 i32.const 0 + i32.store + local.get $1 + i32.const 0 + i32.store offset=4 + local.get $1 + i32.const 0 + i32.store offset=8 + local.get $1 + i32.const 0 i32.store offset=12 + local.get $2 + local.set $3 + local.get $2 + local.get $1 + i32.load + local.tee $5 + i32.ne + if + local.get $3 + call $~lib/rt/pure/__retain + local.set $3 + local.get $5 + call $~lib/rt/pure/__release + end + local.get $1 + local.get $3 + i32.store + local.get $1 + local.get $2 + i32.store offset=4 + local.get $1 + local.get $4 + i32.store offset=8 local.get $1 local.get $0 i32.store offset=12 @@ -2352,9 +2392,9 @@ i32.const 0 i32.lt_s if + i32.const 512 i32.const 464 - i32.const 528 - i32.const 109 + i32.const 120 i32.const 21 call $~lib/builtins/abort unreachable @@ -2542,9 +2582,9 @@ i32.load offset=12 i32.ge_u if + i32.const 512 i32.const 464 - i32.const 528 - i32.const 93 + i32.const 104 i32.const 41 call $~lib/builtins/abort unreachable @@ -2561,9 +2601,9 @@ i32.load offset=12 i32.ge_u if + i32.const 512 i32.const 464 - i32.const 528 - i32.const 93 + i32.const 104 i32.const 41 call $~lib/builtins/abort unreachable @@ -3950,41 +3990,96 @@ local.get $0 i32.load offset=4 ) - (func $~lib/map/Map#keys (; 61 ;) (param $0 i32) (result i32) + (func $~lib/array/Array#constructor (; 61 ;) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) - (local $5 i32) - (local $6 i32) local.get $0 - i32.load offset=8 - local.set $4 + i32.const 1073741808 + i32.gt_u + if + i32.const 192 + i32.const 464 + i32.const 57 + i32.const 59 + call $~lib/builtins/abort + unreachable + end local.get $0 - i32.load offset=16 - local.set $2 + i32.const 0 + call $~lib/rt/tlsf/__alloc + local.tee $2 + local.get $0 + call $~lib/memory/memory.fill i32.const 16 i32.const 9 call $~lib/rt/tlsf/__alloc call $~lib/rt/pure/__retain - local.get $2 - i32.const 0 - call $~lib/arraybuffer/ArrayBufferView#constructor local.tee $1 i32.const 0 + i32.store + local.get $1 + i32.const 0 + i32.store offset=4 + local.get $1 + i32.const 0 + i32.store offset=8 + local.get $1 + i32.const 0 i32.store offset=12 + local.get $2 + local.set $3 + local.get $2 + local.get $1 + i32.load + local.tee $4 + i32.ne + if + local.get $3 + call $~lib/rt/pure/__retain + local.set $3 + local.get $4 + call $~lib/rt/pure/__release + end + local.get $1 + local.get $3 + i32.store local.get $1 local.get $2 + i32.store offset=4 + local.get $1 + local.get $0 + i32.store offset=8 + local.get $1 + local.get $0 i32.store offset=12 + local.get $1 + ) + (func $~lib/map/Map#keys (; 62 ;) (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + local.get $0 + i32.load offset=8 + local.set $3 + local.get $0 + i32.load offset=16 + local.tee $4 + call $~lib/array/Array#constructor + local.set $1 i32.const 0 local.set $0 loop $for-loop|0 - local.get $3 local.get $2 + local.get $4 i32.lt_s if - local.get $4 local.get $3 + local.get $2 i32.const 12 i32.mul i32.add @@ -4005,10 +4100,10 @@ i32.load8_u call $~lib/array/Array#__set end - local.get $3 + local.get $2 i32.const 1 i32.add - local.set $3 + local.set $2 br $for-loop|0 end end @@ -4017,7 +4112,7 @@ call $~lib/array/Array#set:length local.get $1 ) - (func $~lib/map/Map#constructor (; 62 ;) (result i32) + (func $~lib/map/Map#constructor (; 63 ;) (result i32) (local $0 i32) i32.const 24 i32.const 10 @@ -4045,15 +4140,15 @@ call $~lib/map/Map#clear local.get $0 ) - (func $~lib/array/Array#__get (; 63 ;) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array#__get (; 64 ;) (param $0 i32) (param $1 i32) (result i32) local.get $1 local.get $0 i32.load offset=12 i32.ge_u if + i32.const 512 i32.const 464 - i32.const 528 - i32.const 93 + i32.const 104 i32.const 41 call $~lib/builtins/abort unreachable @@ -4064,7 +4159,7 @@ i32.add i32.load8_u ) - (func $~lib/map/Map#rehash (; 64 ;) (param $0 i32) (param $1 i32) + (func $~lib/map/Map#rehash (; 65 ;) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -4195,7 +4290,7 @@ local.get $4 call $~lib/rt/pure/__release ) - (func $~lib/map/Map#set (; 65 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/map/Map#set (; 66 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -4287,7 +4382,7 @@ local.get $0 call $~lib/rt/pure/__retain ) - (func $~lib/map/Map#delete (; 66 ;) (param $0 i32) (param $1 i32) + (func $~lib/map/Map#delete (; 67 ;) (param $0 i32) (param $1 i32) (local $2 i32) local.get $0 local.get $1 @@ -4348,7 +4443,7 @@ call $~lib/map/Map#rehash end ) - (func $std/map/testNumeric (; 67 ;) + (func $std/map/testNumeric (; 68 ;) (local $0 i32) (local $1 i32) (local $2 i32) @@ -4793,7 +4888,7 @@ local.get $1 call $~lib/rt/pure/__release ) - (func $~lib/map/Map#constructor (; 68 ;) (result i32) + (func $~lib/map/Map#constructor (; 69 ;) (result i32) (local $0 i32) i32.const 24 i32.const 11 @@ -4821,7 +4916,7 @@ call $~lib/map/Map#clear local.get $0 ) - (func $~lib/util/hash/hash16 (; 69 ;) (param $0 i32) (result i32) + (func $~lib/util/hash/hash16 (; 70 ;) (param $0 i32) (result i32) local.get $0 i32.const 255 i32.and @@ -4836,7 +4931,7 @@ i32.const 16777619 i32.mul ) - (func $~lib/map/Map#find (; 70 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/map/Map#find (; 71 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $0 i32.load local.get $2 @@ -4879,7 +4974,7 @@ end i32.const 0 ) - (func $~lib/map/Map#has (; 71 ;) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/map/Map#has (; 72 ;) (param $0 i32) (param $1 i32) (result i32) local.get $0 local.get $1 local.get $1 @@ -4892,7 +4987,7 @@ i32.const 0 i32.ne ) - (func $~lib/map/Map#rehash (; 72 ;) (param $0 i32) (param $1 i32) + (func $~lib/map/Map#rehash (; 73 ;) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -5023,7 +5118,7 @@ local.get $4 call $~lib/rt/pure/__release ) - (func $~lib/map/Map#set (; 73 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/map/Map#set (; 74 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -5117,7 +5212,7 @@ local.get $0 call $~lib/rt/pure/__retain ) - (func $~lib/map/Map#get (; 74 ;) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/map/Map#get (; 75 ;) (param $0 i32) (param $1 i32) (result i32) local.get $0 local.get $1 local.get $1 @@ -5140,57 +5235,127 @@ local.get $0 i32.load offset=4 ) - (func $~lib/array/Array#__set (; 75 ;) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/array/Array#constructor (; 76 ;) (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) (local $3 i32) - local.get $1 + (local $4 i32) + (local $5 i32) local.get $0 - i32.load offset=12 - i32.ge_u + i32.const 536870904 + i32.gt_u if - local.get $1 - i32.const 0 - i32.lt_s - if - i32.const 464 - i32.const 528 - i32.const 109 - i32.const 21 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - i32.const 1 - i32.add - local.tee $3 - i32.const 1 - call $~lib/array/ensureSize - local.get $0 - local.get $3 - i32.store offset=12 + i32.const 192 + i32.const 464 + i32.const 57 + i32.const 59 + call $~lib/builtins/abort + unreachable end local.get $0 - i32.load offset=4 - local.get $1 i32.const 1 i32.shl - i32.add - local.get $2 - i32.store16 - ) - (func $~lib/array/Array#set:length (; 76 ;) (param $0 i32) (param $1 i32) - local.get $0 - i32.load offset=12 - drop - local.get $0 - local.get $1 + local.tee $4 + i32.const 0 + call $~lib/rt/tlsf/__alloc + local.tee $2 + local.get $4 + call $~lib/memory/memory.fill + i32.const 16 + i32.const 12 + call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__retain + local.tee $1 + i32.const 0 + i32.store + local.get $1 + i32.const 0 + i32.store offset=4 + local.get $1 + i32.const 0 + i32.store offset=8 + local.get $1 + i32.const 0 + i32.store offset=12 + local.get $2 + local.set $3 + local.get $2 + local.get $1 + i32.load + local.tee $5 + i32.ne + if + local.get $3 + call $~lib/rt/pure/__retain + local.set $3 + local.get $5 + call $~lib/rt/pure/__release + end + local.get $1 + local.get $3 + i32.store + local.get $1 + local.get $2 + i32.store offset=4 + local.get $1 + local.get $4 + i32.store offset=8 + local.get $1 + local.get $0 + i32.store offset=12 + local.get $1 + ) + (func $~lib/array/Array#__set (; 77 ;) (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + local.get $1 + local.get $0 + i32.load offset=12 + i32.ge_u + if + local.get $1 + i32.const 0 + i32.lt_s + if + i32.const 512 + i32.const 464 + i32.const 120 + i32.const 21 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + i32.const 1 + i32.add + local.tee $3 + i32.const 1 + call $~lib/array/ensureSize + local.get $0 + local.get $3 + i32.store offset=12 + end + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 1 + i32.shl + i32.add + local.get $2 + i32.store16 + ) + (func $~lib/array/Array#set:length (; 78 ;) (param $0 i32) (param $1 i32) + local.get $0 + i32.load offset=12 + drop + local.get $0 + local.get $1 i32.const 1 call $~lib/array/ensureSize local.get $0 local.get $1 i32.store offset=12 ) - (func $~lib/map/Map#keys (; 77 ;) (param $0 i32) (result i32) + (func $~lib/map/Map#keys (; 79 ;) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -5199,32 +5364,21 @@ (local $6 i32) local.get $0 i32.load offset=8 - local.set $4 + local.set $3 local.get $0 i32.load offset=16 - local.set $2 - i32.const 16 - i32.const 12 - call $~lib/rt/tlsf/__alloc - call $~lib/rt/pure/__retain - local.get $2 - i32.const 1 - call $~lib/arraybuffer/ArrayBufferView#constructor - local.tee $1 - i32.const 0 - i32.store offset=12 - local.get $1 - local.get $2 - i32.store offset=12 + local.tee $4 + call $~lib/array/Array#constructor + local.set $1 i32.const 0 local.set $0 loop $for-loop|0 - local.get $3 local.get $2 + local.get $4 i32.lt_s if - local.get $4 local.get $3 + local.get $2 i32.const 12 i32.mul i32.add @@ -5245,10 +5399,10 @@ i32.load16_s call $~lib/array/Array#__set end - local.get $3 + local.get $2 i32.const 1 i32.add - local.set $3 + local.set $2 br $for-loop|0 end end @@ -5257,7 +5411,7 @@ call $~lib/array/Array#set:length local.get $1 ) - (func $~lib/map/Map#constructor (; 78 ;) (result i32) + (func $~lib/map/Map#constructor (; 80 ;) (result i32) (local $0 i32) i32.const 24 i32.const 13 @@ -5285,15 +5439,15 @@ call $~lib/map/Map#clear local.get $0 ) - (func $~lib/array/Array#__get (; 79 ;) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array#__get (; 81 ;) (param $0 i32) (param $1 i32) (result i32) local.get $1 local.get $0 i32.load offset=12 i32.ge_u if + i32.const 512 i32.const 464 - i32.const 528 - i32.const 93 + i32.const 104 i32.const 41 call $~lib/builtins/abort unreachable @@ -5306,7 +5460,7 @@ i32.add i32.load16_s ) - (func $~lib/map/Map#find (; 80 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/map/Map#find (; 82 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $0 i32.load local.get $2 @@ -5349,7 +5503,7 @@ end i32.const 0 ) - (func $~lib/map/Map#rehash (; 81 ;) (param $0 i32) (param $1 i32) + (func $~lib/map/Map#rehash (; 83 ;) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -5480,7 +5634,7 @@ local.get $4 call $~lib/rt/pure/__release ) - (func $~lib/map/Map#set (; 82 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/map/Map#set (; 84 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -5574,7 +5728,7 @@ local.get $0 call $~lib/rt/pure/__retain ) - (func $~lib/map/Map#delete (; 83 ;) (param $0 i32) (param $1 i32) + (func $~lib/map/Map#delete (; 85 ;) (param $0 i32) (param $1 i32) (local $2 i32) local.get $0 local.get $1 @@ -5637,7 +5791,7 @@ call $~lib/map/Map#rehash end ) - (func $std/map/testNumeric (; 84 ;) + (func $std/map/testNumeric (; 86 ;) (local $0 i32) (local $1 i32) (local $2 i32) @@ -6104,7 +6258,7 @@ local.get $1 call $~lib/rt/pure/__release ) - (func $~lib/map/Map#constructor (; 85 ;) (result i32) + (func $~lib/map/Map#constructor (; 87 ;) (result i32) (local $0 i32) i32.const 24 i32.const 14 @@ -6132,7 +6286,7 @@ call $~lib/map/Map#clear local.get $0 ) - (func $~lib/map/Map#has (; 86 ;) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/map/Map#has (; 88 ;) (param $0 i32) (param $1 i32) (result i32) local.get $0 local.get $1 local.get $1 @@ -6143,7 +6297,7 @@ i32.const 0 i32.ne ) - (func $~lib/map/Map#rehash (; 87 ;) (param $0 i32) (param $1 i32) + (func $~lib/map/Map#rehash (; 89 ;) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -6274,7 +6428,7 @@ local.get $4 call $~lib/rt/pure/__release ) - (func $~lib/map/Map#set (; 88 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/map/Map#set (; 90 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -6366,7 +6520,7 @@ local.get $0 call $~lib/rt/pure/__retain ) - (func $~lib/map/Map#get (; 89 ;) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/map/Map#get (; 91 ;) (param $0 i32) (param $1 i32) (result i32) local.get $0 local.get $1 local.get $1 @@ -6387,41 +6541,100 @@ local.get $0 i32.load offset=4 ) - (func $~lib/map/Map#keys (; 90 ;) (param $0 i32) (result i32) + (func $~lib/array/Array#constructor (; 92 ;) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) - (local $6 i32) local.get $0 - i32.load offset=8 - local.set $4 + i32.const 536870904 + i32.gt_u + if + i32.const 192 + i32.const 464 + i32.const 57 + i32.const 59 + call $~lib/builtins/abort + unreachable + end local.get $0 - i32.load offset=16 - local.set $2 + i32.const 1 + i32.shl + local.tee $4 + i32.const 0 + call $~lib/rt/tlsf/__alloc + local.tee $2 + local.get $4 + call $~lib/memory/memory.fill i32.const 16 i32.const 15 call $~lib/rt/tlsf/__alloc call $~lib/rt/pure/__retain - local.get $2 - i32.const 1 - call $~lib/arraybuffer/ArrayBufferView#constructor local.tee $1 i32.const 0 + i32.store + local.get $1 + i32.const 0 + i32.store offset=4 + local.get $1 + i32.const 0 + i32.store offset=8 + local.get $1 + i32.const 0 i32.store offset=12 + local.get $2 + local.set $3 + local.get $2 + local.get $1 + i32.load + local.tee $5 + i32.ne + if + local.get $3 + call $~lib/rt/pure/__retain + local.set $3 + local.get $5 + call $~lib/rt/pure/__release + end + local.get $1 + local.get $3 + i32.store local.get $1 local.get $2 + i32.store offset=4 + local.get $1 + local.get $4 + i32.store offset=8 + local.get $1 + local.get $0 i32.store offset=12 + local.get $1 + ) + (func $~lib/map/Map#keys (; 93 ;) (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + local.get $0 + i32.load offset=8 + local.set $3 + local.get $0 + i32.load offset=16 + local.tee $4 + call $~lib/array/Array#constructor + local.set $1 i32.const 0 local.set $0 loop $for-loop|0 - local.get $3 local.get $2 + local.get $4 i32.lt_s if - local.get $4 local.get $3 + local.get $2 i32.const 12 i32.mul i32.add @@ -6442,10 +6655,10 @@ i32.load16_u call $~lib/array/Array#__set end - local.get $3 + local.get $2 i32.const 1 i32.add - local.set $3 + local.set $2 br $for-loop|0 end end @@ -6454,7 +6667,7 @@ call $~lib/array/Array#set:length local.get $1 ) - (func $~lib/map/Map#constructor (; 91 ;) (result i32) + (func $~lib/map/Map#constructor (; 94 ;) (result i32) (local $0 i32) i32.const 24 i32.const 16 @@ -6482,15 +6695,15 @@ call $~lib/map/Map#clear local.get $0 ) - (func $~lib/array/Array#__get (; 92 ;) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array#__get (; 95 ;) (param $0 i32) (param $1 i32) (result i32) local.get $1 local.get $0 i32.load offset=12 i32.ge_u if + i32.const 512 i32.const 464 - i32.const 528 - i32.const 93 + i32.const 104 i32.const 41 call $~lib/builtins/abort unreachable @@ -6503,7 +6716,7 @@ i32.add i32.load16_u ) - (func $~lib/map/Map#rehash (; 93 ;) (param $0 i32) (param $1 i32) + (func $~lib/map/Map#rehash (; 96 ;) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -6634,7 +6847,7 @@ local.get $4 call $~lib/rt/pure/__release ) - (func $~lib/map/Map#set (; 94 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/map/Map#set (; 97 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -6726,7 +6939,7 @@ local.get $0 call $~lib/rt/pure/__retain ) - (func $~lib/map/Map#delete (; 95 ;) (param $0 i32) (param $1 i32) + (func $~lib/map/Map#delete (; 98 ;) (param $0 i32) (param $1 i32) (local $2 i32) local.get $0 local.get $1 @@ -6787,7 +7000,7 @@ call $~lib/map/Map#rehash end ) - (func $std/map/testNumeric (; 96 ;) + (func $std/map/testNumeric (; 99 ;) (local $0 i32) (local $1 i32) (local $2 i32) @@ -7232,7 +7445,7 @@ local.get $1 call $~lib/rt/pure/__release ) - (func $~lib/map/Map#has (; 97 ;) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/map/Map#has (; 100 ;) (param $0 i32) (param $1 i32) (result i32) local.get $0 local.get $1 local.get $1 @@ -7241,7 +7454,7 @@ i32.const 0 i32.ne ) - (func $~lib/map/Map#get (; 98 ;) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/map/Map#get (; 101 ;) (param $0 i32) (param $1 i32) (result i32) local.get $0 local.get $1 local.get $1 @@ -7260,7 +7473,7 @@ local.get $0 i32.load offset=4 ) - (func $~lib/map/Map#keys (; 99 ;) (param $0 i32) (result i32) + (func $~lib/map/Map#keys (; 102 ;) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -7316,7 +7529,7 @@ call $~lib/array/Array#set:length local.get $1 ) - (func $~lib/map/Map#delete (; 100 ;) (param $0 i32) (param $1 i32) + (func $~lib/map/Map#delete (; 103 ;) (param $0 i32) (param $1 i32) (local $2 i32) local.get $0 local.get $1 @@ -7375,7 +7588,7 @@ call $~lib/map/Map#rehash end ) - (func $std/map/testNumeric (; 101 ;) + (func $std/map/testNumeric (; 104 ;) (local $0 i32) (local $1 i32) (local $2 i32) @@ -7798,7 +8011,7 @@ local.get $1 call $~lib/rt/pure/__release ) - (func $~lib/map/Map#constructor (; 102 ;) (result i32) + (func $~lib/map/Map#constructor (; 105 ;) (result i32) (local $0 i32) i32.const 24 i32.const 17 @@ -7826,41 +8039,100 @@ call $~lib/map/Map#clear local.get $0 ) - (func $~lib/map/Map#keys (; 103 ;) (param $0 i32) (result i32) + (func $~lib/array/Array#constructor (; 106 ;) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) - (local $6 i32) local.get $0 - i32.load offset=8 - local.set $4 + i32.const 268435452 + i32.gt_u + if + i32.const 192 + i32.const 464 + i32.const 57 + i32.const 59 + call $~lib/builtins/abort + unreachable + end local.get $0 - i32.load offset=16 - local.set $2 + i32.const 2 + i32.shl + local.tee $4 + i32.const 0 + call $~lib/rt/tlsf/__alloc + local.tee $2 + local.get $4 + call $~lib/memory/memory.fill i32.const 16 i32.const 18 call $~lib/rt/tlsf/__alloc call $~lib/rt/pure/__retain - local.get $2 - i32.const 2 - call $~lib/arraybuffer/ArrayBufferView#constructor local.tee $1 i32.const 0 + i32.store + local.get $1 + i32.const 0 + i32.store offset=4 + local.get $1 + i32.const 0 + i32.store offset=8 + local.get $1 + i32.const 0 i32.store offset=12 + local.get $2 + local.set $3 + local.get $2 + local.get $1 + i32.load + local.tee $5 + i32.ne + if + local.get $3 + call $~lib/rt/pure/__retain + local.set $3 + local.get $5 + call $~lib/rt/pure/__release + end + local.get $1 + local.get $3 + i32.store local.get $1 local.get $2 + i32.store offset=4 + local.get $1 + local.get $4 + i32.store offset=8 + local.get $1 + local.get $0 i32.store offset=12 + local.get $1 + ) + (func $~lib/map/Map#keys (; 107 ;) (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + local.get $0 + i32.load offset=8 + local.set $3 + local.get $0 + i32.load offset=16 + local.tee $4 + call $~lib/array/Array#constructor + local.set $1 i32.const 0 local.set $0 loop $for-loop|0 - local.get $3 local.get $2 + local.get $4 i32.lt_s if - local.get $4 local.get $3 + local.get $2 i32.const 12 i32.mul i32.add @@ -7881,10 +8153,10 @@ i32.load call $~lib/array/Array#__set end - local.get $3 + local.get $2 i32.const 1 i32.add - local.set $3 + local.set $2 br $for-loop|0 end end @@ -7893,7 +8165,7 @@ call $~lib/array/Array#set:length local.get $1 ) - (func $~lib/map/Map#constructor (; 104 ;) (result i32) + (func $~lib/map/Map#constructor (; 108 ;) (result i32) (local $0 i32) i32.const 24 i32.const 19 @@ -7921,7 +8193,7 @@ call $~lib/map/Map#clear local.get $0 ) - (func $std/map/testNumeric (; 105 ;) + (func $std/map/testNumeric (; 109 ;) (local $0 i32) (local $1 i32) (local $2 i32) @@ -8344,7 +8616,7 @@ local.get $1 call $~lib/rt/pure/__release ) - (func $~lib/map/Map#clear (; 106 ;) (param $0 i32) + (func $~lib/map/Map#clear (; 110 ;) (param $0 i32) (local $1 i32) i32.const 16 call $~lib/arraybuffer/ArrayBuffer#constructor @@ -8377,7 +8649,7 @@ i32.const 0 i32.store offset=20 ) - (func $~lib/map/Map#constructor (; 107 ;) (result i32) + (func $~lib/map/Map#constructor (; 111 ;) (result i32) (local $0 i32) i32.const 24 i32.const 20 @@ -8405,7 +8677,7 @@ call $~lib/map/Map#clear local.get $0 ) - (func $~lib/util/hash/hash64 (; 108 ;) (param $0 i64) (result i32) + (func $~lib/util/hash/hash64 (; 112 ;) (param $0 i64) (result i32) (local $1 i32) local.get $0 i32.wrap_i64 @@ -8471,7 +8743,7 @@ i32.const 16777619 i32.mul ) - (func $~lib/map/Map#find (; 109 ;) (param $0 i32) (param $1 i64) (param $2 i32) (result i32) + (func $~lib/map/Map#find (; 113 ;) (param $0 i32) (param $1 i64) (param $2 i32) (result i32) local.get $0 i32.load local.get $2 @@ -8512,7 +8784,7 @@ end i32.const 0 ) - (func $~lib/map/Map#has (; 110 ;) (param $0 i32) (param $1 i64) (result i32) + (func $~lib/map/Map#has (; 114 ;) (param $0 i32) (param $1 i64) (result i32) local.get $0 local.get $1 local.get $1 @@ -8521,7 +8793,7 @@ i32.const 0 i32.ne ) - (func $~lib/map/Map#rehash (; 111 ;) (param $0 i32) (param $1 i32) + (func $~lib/map/Map#rehash (; 115 ;) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -8652,7 +8924,7 @@ local.get $4 call $~lib/rt/pure/__release ) - (func $~lib/map/Map#set (; 112 ;) (param $0 i32) (param $1 i64) (param $2 i32) (result i32) + (func $~lib/map/Map#set (; 116 ;) (param $0 i32) (param $1 i64) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -8742,7 +9014,7 @@ local.get $0 call $~lib/rt/pure/__retain ) - (func $~lib/map/Map#get (; 113 ;) (param $0 i32) (param $1 i64) (result i32) + (func $~lib/map/Map#get (; 117 ;) (param $0 i32) (param $1 i64) (result i32) local.get $0 local.get $1 local.get $1 @@ -8761,7 +9033,77 @@ local.get $0 i32.load offset=8 ) - (func $~lib/array/Array#__set (; 114 ;) (param $0 i32) (param $1 i32) (param $2 i64) + (func $~lib/array/Array#constructor (; 118 ;) (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 134217726 + i32.gt_u + if + i32.const 192 + i32.const 464 + i32.const 57 + i32.const 59 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 3 + i32.shl + local.tee $4 + i32.const 0 + call $~lib/rt/tlsf/__alloc + local.tee $2 + local.get $4 + call $~lib/memory/memory.fill + i32.const 16 + i32.const 21 + call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__retain + local.tee $1 + i32.const 0 + i32.store + local.get $1 + i32.const 0 + i32.store offset=4 + local.get $1 + i32.const 0 + i32.store offset=8 + local.get $1 + i32.const 0 + i32.store offset=12 + local.get $2 + local.set $3 + local.get $2 + local.get $1 + i32.load + local.tee $5 + i32.ne + if + local.get $3 + call $~lib/rt/pure/__retain + local.set $3 + local.get $5 + call $~lib/rt/pure/__release + end + local.get $1 + local.get $3 + i32.store + local.get $1 + local.get $2 + i32.store offset=4 + local.get $1 + local.get $4 + i32.store offset=8 + local.get $1 + local.get $0 + i32.store offset=12 + local.get $1 + ) + (func $~lib/array/Array#__set (; 119 ;) (param $0 i32) (param $1 i32) (param $2 i64) (local $3 i32) local.get $1 local.get $0 @@ -8772,9 +9114,9 @@ i32.const 0 i32.lt_s if + i32.const 512 i32.const 464 - i32.const 528 - i32.const 109 + i32.const 120 i32.const 21 call $~lib/builtins/abort unreachable @@ -8799,7 +9141,7 @@ local.get $2 i64.store ) - (func $~lib/array/Array#set:length (; 115 ;) (param $0 i32) (param $1 i32) + (func $~lib/array/Array#set:length (; 120 ;) (param $0 i32) (param $1 i32) local.get $0 i32.load offset=12 drop @@ -8811,7 +9153,7 @@ local.get $1 i32.store offset=12 ) - (func $~lib/map/Map#keys (; 116 ;) (param $0 i32) (result i32) + (func $~lib/map/Map#keys (; 121 ;) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -8820,32 +9162,21 @@ (local $6 i32) local.get $0 i32.load offset=8 - local.set $4 + local.set $3 local.get $0 i32.load offset=16 - local.set $2 - i32.const 16 - i32.const 21 - call $~lib/rt/tlsf/__alloc - call $~lib/rt/pure/__retain - local.get $2 - i32.const 3 - call $~lib/arraybuffer/ArrayBufferView#constructor - local.tee $1 - i32.const 0 - i32.store offset=12 - local.get $1 - local.get $2 - i32.store offset=12 + local.tee $4 + call $~lib/array/Array#constructor + local.set $1 i32.const 0 local.set $0 loop $for-loop|0 - local.get $3 local.get $2 + local.get $4 i32.lt_s if - local.get $4 local.get $3 + local.get $2 i32.const 4 i32.shl i32.add @@ -8866,10 +9197,10 @@ i64.load call $~lib/array/Array#__set end - local.get $3 + local.get $2 i32.const 1 i32.add - local.set $3 + local.set $2 br $for-loop|0 end end @@ -8878,7 +9209,7 @@ call $~lib/array/Array#set:length local.get $1 ) - (func $~lib/map/Map#values (; 117 ;) (param $0 i32) (result i32) + (func $~lib/map/Map#values (; 122 ;) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -8934,7 +9265,7 @@ call $~lib/array/Array#set:length local.get $1 ) - (func $~lib/map/Map#clear (; 118 ;) (param $0 i32) + (func $~lib/map/Map#clear (; 123 ;) (param $0 i32) (local $1 i32) i32.const 16 call $~lib/arraybuffer/ArrayBuffer#constructor @@ -8967,7 +9298,7 @@ i32.const 0 i32.store offset=20 ) - (func $~lib/map/Map#constructor (; 119 ;) (result i32) + (func $~lib/map/Map#constructor (; 124 ;) (result i32) (local $0 i32) i32.const 24 i32.const 22 @@ -8995,15 +9326,15 @@ call $~lib/map/Map#clear local.get $0 ) - (func $~lib/array/Array#__get (; 120 ;) (param $0 i32) (param $1 i32) (result i64) + (func $~lib/array/Array#__get (; 125 ;) (param $0 i32) (param $1 i32) (result i64) local.get $1 local.get $0 i32.load offset=12 i32.ge_u if + i32.const 512 i32.const 464 - i32.const 528 - i32.const 93 + i32.const 104 i32.const 41 call $~lib/builtins/abort unreachable @@ -9016,7 +9347,7 @@ i32.add i64.load ) - (func $~lib/map/Map#find (; 121 ;) (param $0 i32) (param $1 i64) (param $2 i32) (result i32) + (func $~lib/map/Map#find (; 126 ;) (param $0 i32) (param $1 i64) (param $2 i32) (result i32) local.get $0 i32.load local.get $2 @@ -9057,7 +9388,7 @@ end i32.const 0 ) - (func $~lib/map/Map#rehash (; 122 ;) (param $0 i32) (param $1 i32) + (func $~lib/map/Map#rehash (; 127 ;) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -9188,7 +9519,7 @@ local.get $4 call $~lib/rt/pure/__release ) - (func $~lib/map/Map#set (; 123 ;) (param $0 i32) (param $1 i64) (param $2 i64) (result i32) + (func $~lib/map/Map#set (; 128 ;) (param $0 i32) (param $1 i64) (param $2 i64) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -9278,7 +9609,7 @@ local.get $0 call $~lib/rt/pure/__retain ) - (func $~lib/map/Map#delete (; 124 ;) (param $0 i32) (param $1 i64) + (func $~lib/map/Map#delete (; 129 ;) (param $0 i32) (param $1 i64) (local $2 i32) (local $3 i32) local.get $0 @@ -9338,7 +9669,7 @@ call $~lib/map/Map#rehash end ) - (func $std/map/testNumeric (; 125 ;) + (func $std/map/testNumeric (; 130 ;) (local $0 i64) (local $1 i32) (local $2 i32) @@ -9765,37 +10096,107 @@ local.get $6 call $~lib/rt/pure/__release local.get $1 - call $~lib/rt/pure/__release - ) - (func $~lib/map/Map#constructor (; 126 ;) (result i32) - (local $0 i32) - i32.const 24 - i32.const 23 - call $~lib/rt/tlsf/__alloc - call $~lib/rt/pure/__retain - local.tee $0 - i32.const 0 + call $~lib/rt/pure/__release + ) + (func $~lib/map/Map#constructor (; 131 ;) (result i32) + (local $0 i32) + i32.const 24 + i32.const 23 + call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__retain + local.tee $0 + i32.const 0 + i32.store + local.get $0 + i32.const 0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=8 + local.get $0 + i32.const 0 + i32.store offset=12 + local.get $0 + i32.const 0 + i32.store offset=16 + local.get $0 + i32.const 0 + i32.store offset=20 + local.get $0 + call $~lib/map/Map#clear + local.get $0 + ) + (func $~lib/array/Array#constructor (; 132 ;) (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 134217726 + i32.gt_u + if + i32.const 192 + i32.const 464 + i32.const 57 + i32.const 59 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 3 + i32.shl + local.tee $4 + i32.const 0 + call $~lib/rt/tlsf/__alloc + local.tee $2 + local.get $4 + call $~lib/memory/memory.fill + i32.const 16 + i32.const 24 + call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__retain + local.tee $1 + i32.const 0 + i32.store + local.get $1 + i32.const 0 + i32.store offset=4 + local.get $1 + i32.const 0 + i32.store offset=8 + local.get $1 + i32.const 0 + i32.store offset=12 + local.get $2 + local.set $3 + local.get $2 + local.get $1 + i32.load + local.tee $5 + i32.ne + if + local.get $3 + call $~lib/rt/pure/__retain + local.set $3 + local.get $5 + call $~lib/rt/pure/__release + end + local.get $1 + local.get $3 i32.store - local.get $0 - i32.const 0 + local.get $1 + local.get $2 i32.store offset=4 - local.get $0 - i32.const 0 + local.get $1 + local.get $4 i32.store offset=8 + local.get $1 local.get $0 - i32.const 0 i32.store offset=12 - local.get $0 - i32.const 0 - i32.store offset=16 - local.get $0 - i32.const 0 - i32.store offset=20 - local.get $0 - call $~lib/map/Map#clear - local.get $0 + local.get $1 ) - (func $~lib/map/Map#keys (; 127 ;) (param $0 i32) (result i32) + (func $~lib/map/Map#keys (; 133 ;) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -9804,32 +10205,21 @@ (local $6 i32) local.get $0 i32.load offset=8 - local.set $4 + local.set $3 local.get $0 i32.load offset=16 - local.set $2 - i32.const 16 - i32.const 24 - call $~lib/rt/tlsf/__alloc - call $~lib/rt/pure/__retain - local.get $2 - i32.const 3 - call $~lib/arraybuffer/ArrayBufferView#constructor - local.tee $1 - i32.const 0 - i32.store offset=12 - local.get $1 - local.get $2 - i32.store offset=12 + local.tee $4 + call $~lib/array/Array#constructor + local.set $1 i32.const 0 local.set $0 loop $for-loop|0 - local.get $3 local.get $2 + local.get $4 i32.lt_s if - local.get $4 local.get $3 + local.get $2 i32.const 4 i32.shl i32.add @@ -9850,10 +10240,10 @@ i64.load call $~lib/array/Array#__set end - local.get $3 + local.get $2 i32.const 1 i32.add - local.set $3 + local.set $2 br $for-loop|0 end end @@ -9862,7 +10252,7 @@ call $~lib/array/Array#set:length local.get $1 ) - (func $~lib/map/Map#constructor (; 128 ;) (result i32) + (func $~lib/map/Map#constructor (; 134 ;) (result i32) (local $0 i32) i32.const 24 i32.const 25 @@ -9890,7 +10280,7 @@ call $~lib/map/Map#clear local.get $0 ) - (func $std/map/testNumeric (; 129 ;) + (func $std/map/testNumeric (; 135 ;) (local $0 i64) (local $1 i32) (local $2 i32) @@ -10319,7 +10709,7 @@ local.get $1 call $~lib/rt/pure/__release ) - (func $~lib/map/Map#constructor (; 130 ;) (result i32) + (func $~lib/map/Map#constructor (; 136 ;) (result i32) (local $0 i32) i32.const 24 i32.const 26 @@ -10347,7 +10737,7 @@ call $~lib/map/Map#clear local.get $0 ) - (func $~lib/map/Map#find (; 131 ;) (param $0 i32) (param $1 f32) (param $2 i32) (result i32) + (func $~lib/map/Map#find (; 137 ;) (param $0 i32) (param $1 f32) (param $2 i32) (result i32) local.get $0 i32.load local.get $2 @@ -10388,7 +10778,7 @@ end i32.const 0 ) - (func $~lib/map/Map#has (; 132 ;) (param $0 i32) (param $1 f32) (result i32) + (func $~lib/map/Map#has (; 138 ;) (param $0 i32) (param $1 f32) (result i32) local.get $0 local.get $1 local.get $1 @@ -10398,7 +10788,7 @@ i32.const 0 i32.ne ) - (func $~lib/map/Map#rehash (; 133 ;) (param $0 i32) (param $1 i32) + (func $~lib/map/Map#rehash (; 139 ;) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -10530,7 +10920,7 @@ local.get $4 call $~lib/rt/pure/__release ) - (func $~lib/map/Map#set (; 134 ;) (param $0 i32) (param $1 f32) (param $2 i32) (result i32) + (func $~lib/map/Map#set (; 140 ;) (param $0 i32) (param $1 f32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -10621,7 +11011,7 @@ local.get $0 call $~lib/rt/pure/__retain ) - (func $~lib/map/Map#get (; 135 ;) (param $0 i32) (param $1 f32) (result i32) + (func $~lib/map/Map#get (; 141 ;) (param $0 i32) (param $1 f32) (result i32) local.get $0 local.get $1 local.get $1 @@ -10641,7 +11031,77 @@ local.get $0 i32.load offset=4 ) - (func $~lib/array/Array#__set (; 136 ;) (param $0 i32) (param $1 i32) (param $2 f32) + (func $~lib/array/Array#constructor (; 142 ;) (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 268435452 + i32.gt_u + if + i32.const 192 + i32.const 464 + i32.const 57 + i32.const 59 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 2 + i32.shl + local.tee $4 + i32.const 0 + call $~lib/rt/tlsf/__alloc + local.tee $2 + local.get $4 + call $~lib/memory/memory.fill + i32.const 16 + i32.const 27 + call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__retain + local.tee $1 + i32.const 0 + i32.store + local.get $1 + i32.const 0 + i32.store offset=4 + local.get $1 + i32.const 0 + i32.store offset=8 + local.get $1 + i32.const 0 + i32.store offset=12 + local.get $2 + local.set $3 + local.get $2 + local.get $1 + i32.load + local.tee $5 + i32.ne + if + local.get $3 + call $~lib/rt/pure/__retain + local.set $3 + local.get $5 + call $~lib/rt/pure/__release + end + local.get $1 + local.get $3 + i32.store + local.get $1 + local.get $2 + i32.store offset=4 + local.get $1 + local.get $4 + i32.store offset=8 + local.get $1 + local.get $0 + i32.store offset=12 + local.get $1 + ) + (func $~lib/array/Array#__set (; 143 ;) (param $0 i32) (param $1 i32) (param $2 f32) (local $3 i32) local.get $1 local.get $0 @@ -10652,9 +11112,9 @@ i32.const 0 i32.lt_s if + i32.const 512 i32.const 464 - i32.const 528 - i32.const 109 + i32.const 120 i32.const 21 call $~lib/builtins/abort unreachable @@ -10679,7 +11139,7 @@ local.get $2 f32.store ) - (func $~lib/map/Map#keys (; 137 ;) (param $0 i32) (result i32) + (func $~lib/map/Map#keys (; 144 ;) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -10688,32 +11148,21 @@ (local $6 i32) local.get $0 i32.load offset=8 - local.set $4 + local.set $3 local.get $0 i32.load offset=16 - local.set $2 - i32.const 16 - i32.const 27 - call $~lib/rt/tlsf/__alloc - call $~lib/rt/pure/__retain - local.get $2 - i32.const 2 - call $~lib/arraybuffer/ArrayBufferView#constructor - local.tee $1 - i32.const 0 - i32.store offset=12 - local.get $1 - local.get $2 - i32.store offset=12 + local.tee $4 + call $~lib/array/Array#constructor + local.set $1 i32.const 0 local.set $0 loop $for-loop|0 - local.get $3 local.get $2 + local.get $4 i32.lt_s if - local.get $4 local.get $3 + local.get $2 i32.const 12 i32.mul i32.add @@ -10734,10 +11183,10 @@ f32.load call $~lib/array/Array#__set end - local.get $3 + local.get $2 i32.const 1 i32.add - local.set $3 + local.set $2 br $for-loop|0 end end @@ -10746,7 +11195,7 @@ call $~lib/array/Array#set:length local.get $1 ) - (func $~lib/map/Map#constructor (; 138 ;) (result i32) + (func $~lib/map/Map#constructor (; 145 ;) (result i32) (local $0 i32) i32.const 24 i32.const 28 @@ -10774,15 +11223,15 @@ call $~lib/map/Map#clear local.get $0 ) - (func $~lib/array/Array#__get (; 139 ;) (param $0 i32) (param $1 i32) (result f32) + (func $~lib/array/Array#__get (; 146 ;) (param $0 i32) (param $1 i32) (result f32) local.get $1 local.get $0 i32.load offset=12 i32.ge_u if + i32.const 512 i32.const 464 - i32.const 528 - i32.const 93 + i32.const 104 i32.const 41 call $~lib/builtins/abort unreachable @@ -10795,7 +11244,7 @@ i32.add f32.load ) - (func $~lib/map/Map#rehash (; 140 ;) (param $0 i32) (param $1 i32) + (func $~lib/map/Map#rehash (; 147 ;) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -10927,7 +11376,7 @@ local.get $4 call $~lib/rt/pure/__release ) - (func $~lib/map/Map#set (; 141 ;) (param $0 i32) (param $1 f32) (param $2 f32) (result i32) + (func $~lib/map/Map#set (; 148 ;) (param $0 i32) (param $1 f32) (param $2 f32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -11018,7 +11467,7 @@ local.get $0 call $~lib/rt/pure/__retain ) - (func $~lib/map/Map#delete (; 142 ;) (param $0 i32) (param $1 f32) + (func $~lib/map/Map#delete (; 149 ;) (param $0 i32) (param $1 f32) (local $2 i32) (local $3 i32) local.get $0 @@ -11079,7 +11528,7 @@ call $~lib/map/Map#rehash end ) - (func $std/map/testNumeric (; 143 ;) + (func $std/map/testNumeric (; 150 ;) (local $0 f32) (local $1 i32) (local $2 i32) @@ -11508,7 +11957,7 @@ local.get $1 call $~lib/rt/pure/__release ) - (func $~lib/map/Map#constructor (; 144 ;) (result i32) + (func $~lib/map/Map#constructor (; 151 ;) (result i32) (local $0 i32) i32.const 24 i32.const 29 @@ -11536,7 +11985,7 @@ call $~lib/map/Map#clear local.get $0 ) - (func $~lib/map/Map#find (; 145 ;) (param $0 i32) (param $1 f64) (param $2 i32) (result i32) + (func $~lib/map/Map#find (; 152 ;) (param $0 i32) (param $1 f64) (param $2 i32) (result i32) local.get $0 i32.load local.get $2 @@ -11577,7 +12026,7 @@ end i32.const 0 ) - (func $~lib/map/Map#has (; 146 ;) (param $0 i32) (param $1 f64) (result i32) + (func $~lib/map/Map#has (; 153 ;) (param $0 i32) (param $1 f64) (result i32) local.get $0 local.get $1 local.get $1 @@ -11587,7 +12036,7 @@ i32.const 0 i32.ne ) - (func $~lib/map/Map#rehash (; 147 ;) (param $0 i32) (param $1 i32) + (func $~lib/map/Map#rehash (; 154 ;) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -11719,7 +12168,7 @@ local.get $4 call $~lib/rt/pure/__release ) - (func $~lib/map/Map#set (; 148 ;) (param $0 i32) (param $1 f64) (param $2 i32) (result i32) + (func $~lib/map/Map#set (; 155 ;) (param $0 i32) (param $1 f64) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -11810,7 +12259,7 @@ local.get $0 call $~lib/rt/pure/__retain ) - (func $~lib/map/Map#get (; 149 ;) (param $0 i32) (param $1 f64) (result i32) + (func $~lib/map/Map#get (; 156 ;) (param $0 i32) (param $1 f64) (result i32) local.get $0 local.get $1 local.get $1 @@ -11830,7 +12279,77 @@ local.get $0 i32.load offset=8 ) - (func $~lib/array/Array#__set (; 150 ;) (param $0 i32) (param $1 i32) (param $2 f64) + (func $~lib/array/Array#constructor (; 157 ;) (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 134217726 + i32.gt_u + if + i32.const 192 + i32.const 464 + i32.const 57 + i32.const 59 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 3 + i32.shl + local.tee $4 + i32.const 0 + call $~lib/rt/tlsf/__alloc + local.tee $2 + local.get $4 + call $~lib/memory/memory.fill + i32.const 16 + i32.const 30 + call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__retain + local.tee $1 + i32.const 0 + i32.store + local.get $1 + i32.const 0 + i32.store offset=4 + local.get $1 + i32.const 0 + i32.store offset=8 + local.get $1 + i32.const 0 + i32.store offset=12 + local.get $2 + local.set $3 + local.get $2 + local.get $1 + i32.load + local.tee $5 + i32.ne + if + local.get $3 + call $~lib/rt/pure/__retain + local.set $3 + local.get $5 + call $~lib/rt/pure/__release + end + local.get $1 + local.get $3 + i32.store + local.get $1 + local.get $2 + i32.store offset=4 + local.get $1 + local.get $4 + i32.store offset=8 + local.get $1 + local.get $0 + i32.store offset=12 + local.get $1 + ) + (func $~lib/array/Array#__set (; 158 ;) (param $0 i32) (param $1 i32) (param $2 f64) (local $3 i32) local.get $1 local.get $0 @@ -11841,9 +12360,9 @@ i32.const 0 i32.lt_s if + i32.const 512 i32.const 464 - i32.const 528 - i32.const 109 + i32.const 120 i32.const 21 call $~lib/builtins/abort unreachable @@ -11868,7 +12387,7 @@ local.get $2 f64.store ) - (func $~lib/map/Map#keys (; 151 ;) (param $0 i32) (result i32) + (func $~lib/map/Map#keys (; 159 ;) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -11877,32 +12396,21 @@ (local $6 i32) local.get $0 i32.load offset=8 - local.set $4 + local.set $3 local.get $0 i32.load offset=16 - local.set $2 - i32.const 16 - i32.const 30 - call $~lib/rt/tlsf/__alloc - call $~lib/rt/pure/__retain - local.get $2 - i32.const 3 - call $~lib/arraybuffer/ArrayBufferView#constructor - local.tee $1 - i32.const 0 - i32.store offset=12 - local.get $1 - local.get $2 - i32.store offset=12 + local.tee $4 + call $~lib/array/Array#constructor + local.set $1 i32.const 0 local.set $0 loop $for-loop|0 - local.get $3 local.get $2 + local.get $4 i32.lt_s if - local.get $4 local.get $3 + local.get $2 i32.const 4 i32.shl i32.add @@ -11923,10 +12431,10 @@ f64.load call $~lib/array/Array#__set end - local.get $3 + local.get $2 i32.const 1 i32.add - local.set $3 + local.set $2 br $for-loop|0 end end @@ -11935,7 +12443,7 @@ call $~lib/array/Array#set:length local.get $1 ) - (func $~lib/map/Map#constructor (; 152 ;) (result i32) + (func $~lib/map/Map#constructor (; 160 ;) (result i32) (local $0 i32) i32.const 24 i32.const 31 @@ -11963,15 +12471,15 @@ call $~lib/map/Map#clear local.get $0 ) - (func $~lib/array/Array#__get (; 153 ;) (param $0 i32) (param $1 i32) (result f64) + (func $~lib/array/Array#__get (; 161 ;) (param $0 i32) (param $1 i32) (result f64) local.get $1 local.get $0 i32.load offset=12 i32.ge_u if + i32.const 512 i32.const 464 - i32.const 528 - i32.const 93 + i32.const 104 i32.const 41 call $~lib/builtins/abort unreachable @@ -11984,7 +12492,7 @@ i32.add f64.load ) - (func $~lib/map/Map#find (; 154 ;) (param $0 i32) (param $1 f64) (param $2 i32) (result i32) + (func $~lib/map/Map#find (; 162 ;) (param $0 i32) (param $1 f64) (param $2 i32) (result i32) local.get $0 i32.load local.get $2 @@ -12025,7 +12533,7 @@ end i32.const 0 ) - (func $~lib/map/Map#rehash (; 155 ;) (param $0 i32) (param $1 i32) + (func $~lib/map/Map#rehash (; 163 ;) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -12157,7 +12665,7 @@ local.get $4 call $~lib/rt/pure/__release ) - (func $~lib/map/Map#set (; 156 ;) (param $0 i32) (param $1 f64) (param $2 f64) (result i32) + (func $~lib/map/Map#set (; 164 ;) (param $0 i32) (param $1 f64) (param $2 f64) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -12248,7 +12756,7 @@ local.get $0 call $~lib/rt/pure/__retain ) - (func $~lib/map/Map#delete (; 157 ;) (param $0 i32) (param $1 f64) + (func $~lib/map/Map#delete (; 165 ;) (param $0 i32) (param $1 f64) (local $2 i32) (local $3 i32) local.get $0 @@ -12309,7 +12817,7 @@ call $~lib/map/Map#rehash end ) - (func $std/map/testNumeric (; 158 ;) + (func $std/map/testNumeric (; 166 ;) (local $0 f64) (local $1 i32) (local $2 i32) @@ -12738,7 +13246,7 @@ local.get $1 call $~lib/rt/pure/__release ) - (func $~start (; 159 ;) + (func $~start (; 167 ;) call $std/map/testNumeric call $std/map/testNumeric call $std/map/testNumeric @@ -12750,7 +13258,7 @@ call $std/map/testNumeric call $std/map/testNumeric ) - (func $~lib/rt/pure/decrement (; 160 ;) (param $0 i32) + (func $~lib/rt/pure/decrement (; 168 ;) (param $0 i32) (local $1 i32) (local $2 i32) local.get $0 @@ -12818,9 +13326,9 @@ i32.store offset=4 end ) - (func $~lib/rt/pure/__visit (; 161 ;) (param $0 i32) + (func $~lib/rt/pure/__visit (; 169 ;) (param $0 i32) local.get $0 - i32.const 556 + i32.const 548 i32.lt_u if return @@ -12830,16 +13338,26 @@ i32.sub call $~lib/rt/pure/decrement ) - (func $~lib/rt/__visit_members (; 162 ;) (param $0 i32) - block $folding-inner0 - block $block$4$break + (func $~lib/rt/__visit_members (; 170 ;) (param $0 i32) + block $folding-inner1 + block $folding-inner0 block $switch$1$default - block $switch$1$case$2 + block $switch$1$case$4 + block $switch$1$case$2 + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $switch$1$case$2 $switch$1$case$2 $switch$1$case$4 $folding-inner0 $folding-inner1 $folding-inner1 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner1 $folding-inner0 $folding-inner0 $folding-inner1 $folding-inner0 $folding-inner0 $folding-inner1 $folding-inner0 $folding-inner0 $folding-inner1 $folding-inner0 $folding-inner0 $folding-inner1 $folding-inner0 $folding-inner0 $folding-inner1 $folding-inner0 $folding-inner0 $folding-inner1 $folding-inner0 $folding-inner0 $folding-inner1 $folding-inner0 $switch$1$default + end + return + end + local.get $0 + i32.load + local.tee $0 + if local.get $0 - i32.const 8 - i32.sub - i32.load - br_table $switch$1$case$2 $switch$1$case$2 $block$4$break $folding-inner0 $block$4$break $block$4$break $folding-inner0 $folding-inner0 $folding-inner0 $block$4$break $folding-inner0 $folding-inner0 $block$4$break $folding-inner0 $folding-inner0 $block$4$break $folding-inner0 $folding-inner0 $block$4$break $folding-inner0 $folding-inner0 $block$4$break $folding-inner0 $folding-inner0 $block$4$break $folding-inner0 $folding-inner0 $block$4$break $folding-inner0 $folding-inner0 $block$4$break $folding-inner0 $switch$1$default + call $~lib/rt/pure/__visit end return end @@ -12847,18 +13365,14 @@ end local.get $0 i32.load - local.tee $0 - if - local.get $0 - call $~lib/rt/pure/__visit - end + call $~lib/rt/pure/__visit + local.get $0 + i32.load offset=8 + call $~lib/rt/pure/__visit return end local.get $0 i32.load call $~lib/rt/pure/__visit - local.get $0 - i32.load offset=8 - call $~lib/rt/pure/__visit ) ) diff --git a/tests/compiler/std/map.untouched.wat b/tests/compiler/std/map.untouched.wat index 39a7e482ff..c747533a63 100644 --- a/tests/compiler/std/map.untouched.wat +++ b/tests/compiler/std/map.untouched.wat @@ -39,14 +39,14 @@ (data (i32.const 288) "\14\00\00\00\01\00\00\00\01\00\00\00\14\00\00\00s\00t\00d\00/\00m\00a\00p\00.\00t\00s\00") (data (i32.const 336) "$\00\00\00\01\00\00\00\01\00\00\00$\00\00\00K\00e\00y\00 \00d\00o\00e\00s\00 \00n\00o\00t\00 \00e\00x\00i\00s\00t\00") (data (i32.const 400) "\16\00\00\00\01\00\00\00\01\00\00\00\16\00\00\00~\00l\00i\00b\00/\00m\00a\00p\00.\00t\00s\00") - (data (i32.const 448) "$\00\00\00\01\00\00\00\01\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e\00") - (data (i32.const 512) "\1a\00\00\00\01\00\00\00\01\00\00\00\1a\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00.\00t\00s\00") + (data (i32.const 448) "\1a\00\00\00\01\00\00\00\01\00\00\00\1a\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00.\00t\00s\00") + (data (i32.const 496) "$\00\00\00\01\00\00\00\01\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e\00") (table $0 1 funcref) (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) (global $~lib/rt/tlsf/collectLock (mut i32) (i32.const 0)) (global $~lib/gc/gc.auto (mut i32) (i32.const 1)) (global $~lib/ASC_SHRINK_LEVEL i32 (i32.const 0)) - (global $~lib/heap/__heap_base i32 (i32.const 556)) + (global $~lib/heap/__heap_base i32 (i32.const 548)) (export "memory" (memory $0)) (start $~start) (func $~lib/rt/tlsf/removeBlock (; 6 ;) (param $0 i32) (param $1 i32) @@ -2224,40 +2224,40 @@ local.get $0 i32.load offset=20 ) - (func $~lib/arraybuffer/ArrayBufferView#constructor (; 30 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/array/Array#constructor (; 30 ;) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) (local $6 i32) local.get $1 i32.const 1073741808 - local.get $2 - i32.shr_u i32.gt_u if i32.const 192 - i32.const 240 - i32.const 23 - i32.const 56 + i32.const 464 + i32.const 57 + i32.const 59 call $~lib/builtins/abort unreachable end local.get $1 - local.get $2 + i32.const 0 i32.shl - local.tee $1 + local.set $2 + local.get $2 i32.const 0 call $~lib/rt/tlsf/__alloc local.set $3 local.get $3 i32.const 0 - local.get $1 + local.get $2 call $~lib/memory/memory.fill local.get $0 i32.eqz if - i32.const 12 - i32.const 2 + i32.const 16 + i32.const 4 call $~lib/rt/tlsf/__alloc call $~lib/rt/pure/__retain local.set $0 @@ -2272,6 +2272,9 @@ i32.const 0 i32.store offset=8 local.get $0 + i32.const 0 + i32.store offset=12 + local.get $0 local.tee $4 local.get $3 local.tee $5 @@ -2292,33 +2295,14 @@ local.get $3 i32.store offset=4 local.get $0 - local.get $1 + local.get $2 i32.store offset=8 local.get $0 - ) - (func $~lib/array/Array#constructor (; 31 ;) (param $0 i32) (param $1 i32) (result i32) - local.get $0 - if (result i32) - local.get $0 - else - i32.const 16 - i32.const 4 - call $~lib/rt/tlsf/__alloc - call $~lib/rt/pure/__retain - end - local.get $1 - i32.const 0 - call $~lib/arraybuffer/ArrayBufferView#constructor - local.set $0 - local.get $0 - i32.const 0 - i32.store offset=12 - local.get $0 local.get $1 i32.store offset=12 local.get $0 ) - (func $~lib/rt/tlsf/checkUsedBlock (; 32 ;) (param $0 i32) (result i32) + (func $~lib/rt/tlsf/checkUsedBlock (; 31 ;) (param $0 i32) (result i32) (local $1 i32) local.get $0 i32.const 16 @@ -2364,7 +2348,7 @@ end local.get $1 ) - (func $~lib/util/memory/memcpy (; 33 ;) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/util/memory/memcpy (; 32 ;) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -3388,7 +3372,7 @@ i32.store8 end ) - (func $~lib/memory/memory.copy (; 34 ;) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/memory/memory.copy (; 33 ;) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -3608,7 +3592,7 @@ end end ) - (func $~lib/rt/tlsf/freeBlock (; 35 ;) (param $0 i32) (param $1 i32) + (func $~lib/rt/tlsf/freeBlock (; 34 ;) (param $0 i32) (param $1 i32) (local $2 i32) local.get $1 i32.load @@ -3624,7 +3608,7 @@ local.get $1 call $~lib/rt/rtrace/onfree ) - (func $~lib/rt/tlsf/reallocateBlock (; 36 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/rt/tlsf/reallocateBlock (; 35 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -3743,7 +3727,7 @@ end local.get $8 ) - (func $~lib/rt/tlsf/__realloc (; 37 ;) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/rt/tlsf/__realloc (; 36 ;) (param $0 i32) (param $1 i32) (result i32) call $~lib/rt/tlsf/maybeInitialize local.get $0 call $~lib/rt/tlsf/checkUsedBlock @@ -3752,7 +3736,7 @@ i32.const 16 i32.add ) - (func $~lib/array/ensureSize (; 38 ;) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/array/ensureSize (; 37 ;) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -3773,7 +3757,7 @@ i32.gt_u if i32.const 192 - i32.const 528 + i32.const 464 i32.const 14 i32.const 47 call $~lib/builtins/abort @@ -3814,7 +3798,7 @@ i32.store offset=8 end ) - (func $~lib/array/Array#__unchecked_set (; 39 ;) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/array/Array#__unchecked_set (; 38 ;) (param $0 i32) (param $1 i32) (param $2 i32) local.get $0 i32.load offset=4 local.get $1 @@ -3824,7 +3808,7 @@ local.get $2 i32.store8 ) - (func $~lib/array/Array#__set (; 40 ;) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/array/Array#__set (; 39 ;) (param $0 i32) (param $1 i32) (param $2 i32) local.get $1 local.get $0 i32.load offset=12 @@ -3834,9 +3818,9 @@ i32.const 0 i32.lt_s if + i32.const 512 i32.const 464 - i32.const 528 - i32.const 109 + i32.const 120 i32.const 21 call $~lib/builtins/abort unreachable @@ -3858,7 +3842,7 @@ local.get $2 call $~lib/array/Array#__unchecked_set ) - (func $~lib/array/Array#set:length (; 41 ;) (param $0 i32) (param $1 i32) + (func $~lib/array/Array#set:length (; 40 ;) (param $0 i32) (param $1 i32) (local $2 i32) local.get $0 i32.load offset=12 @@ -3871,7 +3855,7 @@ local.get $1 i32.store offset=12 ) - (func $~lib/map/Map#keys (; 42 ;) (param $0 i32) (result i32) + (func $~lib/map/Map#keys (; 41 ;) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -3936,29 +3920,85 @@ call $~lib/array/Array#set:length local.get $3 ) - (func $~lib/array/Array#constructor (; 43 ;) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array#constructor (; 42 ;) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + local.get $1 + i32.const 268435452 + i32.gt_u + if + i32.const 192 + i32.const 464 + i32.const 57 + i32.const 59 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 2 + i32.shl + local.set $2 + local.get $2 + i32.const 0 + call $~lib/rt/tlsf/__alloc + local.set $3 + local.get $3 + i32.const 0 + local.get $2 + call $~lib/memory/memory.fill local.get $0 - if (result i32) - local.get $0 - else + i32.eqz + if i32.const 16 i32.const 5 call $~lib/rt/tlsf/__alloc call $~lib/rt/pure/__retain + local.set $0 end - local.get $1 - i32.const 2 - call $~lib/arraybuffer/ArrayBufferView#constructor - local.set $0 + local.get $0 + i32.const 0 + i32.store + local.get $0 + i32.const 0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=8 local.get $0 i32.const 0 i32.store offset=12 local.get $0 + local.tee $4 + local.get $3 + local.tee $5 + local.get $4 + i32.load + local.tee $6 + i32.ne + if + local.get $5 + call $~lib/rt/pure/__retain + local.set $5 + local.get $6 + call $~lib/rt/pure/__release + end + local.get $5 + i32.store + local.get $0 + local.get $3 + i32.store offset=4 + local.get $0 + local.get $2 + i32.store offset=8 + local.get $0 local.get $1 i32.store offset=12 local.get $0 ) - (func $~lib/array/Array#__unchecked_set (; 44 ;) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/array/Array#__unchecked_set (; 43 ;) (param $0 i32) (param $1 i32) (param $2 i32) local.get $0 i32.load offset=4 local.get $1 @@ -3968,7 +4008,7 @@ local.get $2 i32.store ) - (func $~lib/array/Array#__set (; 45 ;) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/array/Array#__set (; 44 ;) (param $0 i32) (param $1 i32) (param $2 i32) local.get $1 local.get $0 i32.load offset=12 @@ -3978,9 +4018,9 @@ i32.const 0 i32.lt_s if + i32.const 512 i32.const 464 - i32.const 528 - i32.const 109 + i32.const 120 i32.const 21 call $~lib/builtins/abort unreachable @@ -4002,7 +4042,7 @@ local.get $2 call $~lib/array/Array#__unchecked_set ) - (func $~lib/array/Array#set:length (; 46 ;) (param $0 i32) (param $1 i32) + (func $~lib/array/Array#set:length (; 45 ;) (param $0 i32) (param $1 i32) (local $2 i32) local.get $0 i32.load offset=12 @@ -4015,7 +4055,7 @@ local.get $1 i32.store offset=12 ) - (func $~lib/map/Map#values (; 47 ;) (param $0 i32) (result i32) + (func $~lib/map/Map#values (; 46 ;) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -4080,7 +4120,7 @@ call $~lib/array/Array#set:length local.get $3 ) - (func $~lib/map/Map#clear (; 48 ;) (param $0 i32) + (func $~lib/map/Map#clear (; 47 ;) (param $0 i32) (local $1 i32) (local $2 i32) local.get $0 @@ -4120,7 +4160,7 @@ i32.const 0 i32.store offset=20 ) - (func $~lib/map/Map#constructor (; 49 ;) (param $0 i32) (result i32) + (func $~lib/map/Map#constructor (; 48 ;) (param $0 i32) (result i32) local.get $0 i32.eqz if @@ -4152,7 +4192,7 @@ call $~lib/map/Map#clear local.get $0 ) - (func $~lib/map/Map#clear (; 50 ;) (param $0 i32) + (func $~lib/map/Map#clear (; 49 ;) (param $0 i32) (local $1 i32) (local $2 i32) local.get $0 @@ -4192,7 +4232,7 @@ i32.const 0 i32.store offset=20 ) - (func $~lib/map/Map#constructor (; 51 ;) (param $0 i32) (result i32) + (func $~lib/map/Map#constructor (; 50 ;) (param $0 i32) (result i32) local.get $0 i32.eqz if @@ -4224,11 +4264,11 @@ call $~lib/map/Map#clear local.get $0 ) - (func $~lib/array/Array#get:length (; 52 ;) (param $0 i32) (result i32) + (func $~lib/array/Array#get:length (; 51 ;) (param $0 i32) (result i32) local.get $0 i32.load offset=12 ) - (func $~lib/array/Array#__unchecked_get (; 53 ;) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array#__unchecked_get (; 52 ;) (param $0 i32) (param $1 i32) (result i32) local.get $0 i32.load offset=4 local.get $1 @@ -4237,16 +4277,16 @@ i32.add i32.load8_s ) - (func $~lib/array/Array#__get (; 54 ;) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array#__get (; 53 ;) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) local.get $1 local.get $0 i32.load offset=12 i32.ge_u if + i32.const 512 i32.const 464 - i32.const 528 - i32.const 93 + i32.const 104 i32.const 41 call $~lib/builtins/abort unreachable @@ -4257,7 +4297,7 @@ local.set $2 local.get $2 ) - (func $~lib/array/Array#__unchecked_get (; 55 ;) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array#__unchecked_get (; 54 ;) (param $0 i32) (param $1 i32) (result i32) local.get $0 i32.load offset=4 local.get $1 @@ -4266,16 +4306,16 @@ i32.add i32.load ) - (func $~lib/array/Array#__get (; 56 ;) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array#__get (; 55 ;) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) local.get $1 local.get $0 i32.load offset=12 i32.ge_u if + i32.const 512 i32.const 464 - i32.const 528 - i32.const 93 + i32.const 104 i32.const 41 call $~lib/builtins/abort unreachable @@ -4286,7 +4326,7 @@ local.set $2 local.get $2 ) - (func $~lib/map/Map#find (; 57 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/map/Map#find (; 56 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) local.get $0 @@ -4338,7 +4378,7 @@ end i32.const 0 ) - (func $~lib/map/Map#rehash (; 58 ;) (param $0 i32) (param $1 i32) + (func $~lib/map/Map#rehash (; 57 ;) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -4495,7 +4535,7 @@ local.get $5 call $~lib/rt/pure/__release ) - (func $~lib/map/Map#set (; 59 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/map/Map#set (; 58 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -4604,7 +4644,7 @@ local.get $0 call $~lib/rt/pure/__retain ) - (func $~lib/util/hash/hash32 (; 60 ;) (param $0 i32) (result i32) + (func $~lib/util/hash/hash32 (; 59 ;) (param $0 i32) (result i32) (local $1 i32) i32.const -2128831035 local.set $1 @@ -4646,7 +4686,7 @@ local.set $1 local.get $1 ) - (func $~lib/map/Map#find (; 61 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/map/Map#find (; 60 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) local.get $0 @@ -4694,7 +4734,7 @@ end i32.const 0 ) - (func $~lib/map/Map#rehash (; 62 ;) (param $0 i32) (param $1 i32) + (func $~lib/map/Map#rehash (; 61 ;) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -4851,7 +4891,7 @@ local.get $5 call $~lib/rt/pure/__release ) - (func $~lib/map/Map#set (; 63 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/map/Map#set (; 62 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -4956,15 +4996,15 @@ local.get $0 call $~lib/rt/pure/__retain ) - (func $~lib/map/Map#get:size (; 64 ;) (param $0 i32) (result i32) + (func $~lib/map/Map#get:size (; 63 ;) (param $0 i32) (result i32) local.get $0 i32.load offset=20 ) - (func $~lib/map/Map#get:size (; 65 ;) (param $0 i32) (result i32) + (func $~lib/map/Map#get:size (; 64 ;) (param $0 i32) (result i32) local.get $0 i32.load offset=20 ) - (func $~lib/map/Map#delete (; 66 ;) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/map/Map#delete (; 65 ;) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -5040,7 +5080,7 @@ end i32.const 1 ) - (func $std/map/testNumeric (; 67 ;) + (func $std/map/testNumeric (; 66 ;) (local $0 i32) (local $1 i32) (local $2 i32) @@ -5549,7 +5589,7 @@ local.get $0 call $~lib/rt/pure/__release ) - (func $~lib/map/Map#clear (; 68 ;) (param $0 i32) + (func $~lib/map/Map#clear (; 67 ;) (param $0 i32) (local $1 i32) (local $2 i32) local.get $0 @@ -5589,7 +5629,7 @@ i32.const 0 i32.store offset=20 ) - (func $~lib/map/Map#constructor (; 69 ;) (param $0 i32) (result i32) + (func $~lib/map/Map#constructor (; 68 ;) (param $0 i32) (result i32) local.get $0 i32.eqz if @@ -5621,7 +5661,7 @@ call $~lib/map/Map#clear local.get $0 ) - (func $~lib/map/Map#find (; 70 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/map/Map#find (; 69 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) local.get $0 @@ -5671,7 +5711,7 @@ end i32.const 0 ) - (func $~lib/map/Map#has (; 71 ;) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/map/Map#has (; 70 ;) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) local.get $0 local.get $1 @@ -5688,7 +5728,7 @@ i32.const 0 i32.ne ) - (func $~lib/map/Map#rehash (; 72 ;) (param $0 i32) (param $1 i32) + (func $~lib/map/Map#rehash (; 71 ;) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -5845,7 +5885,7 @@ local.get $5 call $~lib/rt/pure/__release ) - (func $~lib/map/Map#set (; 73 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/map/Map#set (; 72 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -5952,7 +5992,7 @@ local.get $0 call $~lib/rt/pure/__retain ) - (func $~lib/map/Map#get (; 74 ;) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/map/Map#get (; 73 ;) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) local.get $0 @@ -5981,33 +6021,89 @@ local.get $3 i32.load offset=4 ) - (func $~lib/map/Map#get:size (; 75 ;) (param $0 i32) (result i32) + (func $~lib/map/Map#get:size (; 74 ;) (param $0 i32) (result i32) local.get $0 i32.load offset=20 ) - (func $~lib/array/Array#constructor (; 76 ;) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array#constructor (; 75 ;) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + local.get $1 + i32.const 1073741808 + i32.gt_u + if + i32.const 192 + i32.const 464 + i32.const 57 + i32.const 59 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 0 + i32.shl + local.set $2 + local.get $2 + i32.const 0 + call $~lib/rt/tlsf/__alloc + local.set $3 + local.get $3 + i32.const 0 + local.get $2 + call $~lib/memory/memory.fill local.get $0 - if (result i32) - local.get $0 - else + i32.eqz + if i32.const 16 i32.const 9 call $~lib/rt/tlsf/__alloc call $~lib/rt/pure/__retain + local.set $0 end - local.get $1 + local.get $0 i32.const 0 - call $~lib/arraybuffer/ArrayBufferView#constructor - local.set $0 + i32.store + local.get $0 + i32.const 0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=8 local.get $0 i32.const 0 i32.store offset=12 local.get $0 + local.tee $4 + local.get $3 + local.tee $5 + local.get $4 + i32.load + local.tee $6 + i32.ne + if + local.get $5 + call $~lib/rt/pure/__retain + local.set $5 + local.get $6 + call $~lib/rt/pure/__release + end + local.get $5 + i32.store + local.get $0 + local.get $3 + i32.store offset=4 + local.get $0 + local.get $2 + i32.store offset=8 + local.get $0 local.get $1 i32.store offset=12 local.get $0 ) - (func $~lib/array/Array#__unchecked_set (; 77 ;) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/array/Array#__unchecked_set (; 76 ;) (param $0 i32) (param $1 i32) (param $2 i32) local.get $0 i32.load offset=4 local.get $1 @@ -6017,7 +6113,7 @@ local.get $2 i32.store8 ) - (func $~lib/array/Array#__set (; 78 ;) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/array/Array#__set (; 77 ;) (param $0 i32) (param $1 i32) (param $2 i32) local.get $1 local.get $0 i32.load offset=12 @@ -6027,9 +6123,9 @@ i32.const 0 i32.lt_s if + i32.const 512 i32.const 464 - i32.const 528 - i32.const 109 + i32.const 120 i32.const 21 call $~lib/builtins/abort unreachable @@ -6051,7 +6147,7 @@ local.get $2 call $~lib/array/Array#__unchecked_set ) - (func $~lib/array/Array#set:length (; 79 ;) (param $0 i32) (param $1 i32) + (func $~lib/array/Array#set:length (; 78 ;) (param $0 i32) (param $1 i32) (local $2 i32) local.get $0 i32.load offset=12 @@ -6064,7 +6160,7 @@ local.get $1 i32.store offset=12 ) - (func $~lib/map/Map#keys (; 80 ;) (param $0 i32) (result i32) + (func $~lib/map/Map#keys (; 79 ;) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -6129,7 +6225,7 @@ call $~lib/array/Array#set:length local.get $3 ) - (func $~lib/map/Map#values (; 81 ;) (param $0 i32) (result i32) + (func $~lib/map/Map#values (; 80 ;) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -6194,7 +6290,7 @@ call $~lib/array/Array#set:length local.get $3 ) - (func $~lib/map/Map#clear (; 82 ;) (param $0 i32) + (func $~lib/map/Map#clear (; 81 ;) (param $0 i32) (local $1 i32) (local $2 i32) local.get $0 @@ -6234,7 +6330,7 @@ i32.const 0 i32.store offset=20 ) - (func $~lib/map/Map#constructor (; 83 ;) (param $0 i32) (result i32) + (func $~lib/map/Map#constructor (; 82 ;) (param $0 i32) (result i32) local.get $0 i32.eqz if @@ -6266,11 +6362,11 @@ call $~lib/map/Map#clear local.get $0 ) - (func $~lib/array/Array#get:length (; 84 ;) (param $0 i32) (result i32) + (func $~lib/array/Array#get:length (; 83 ;) (param $0 i32) (result i32) local.get $0 i32.load offset=12 ) - (func $~lib/array/Array#__unchecked_get (; 85 ;) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array#__unchecked_get (; 84 ;) (param $0 i32) (param $1 i32) (result i32) local.get $0 i32.load offset=4 local.get $1 @@ -6279,16 +6375,16 @@ i32.add i32.load8_u ) - (func $~lib/array/Array#__get (; 86 ;) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array#__get (; 85 ;) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) local.get $1 local.get $0 i32.load offset=12 i32.ge_u if + i32.const 512 i32.const 464 - i32.const 528 - i32.const 93 + i32.const 104 i32.const 41 call $~lib/builtins/abort unreachable @@ -6299,7 +6395,7 @@ local.set $2 local.get $2 ) - (func $~lib/map/Map#find (; 87 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/map/Map#find (; 86 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) local.get $0 @@ -6349,7 +6445,7 @@ end i32.const 0 ) - (func $~lib/map/Map#rehash (; 88 ;) (param $0 i32) (param $1 i32) + (func $~lib/map/Map#rehash (; 87 ;) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -6506,7 +6602,7 @@ local.get $5 call $~lib/rt/pure/__release ) - (func $~lib/map/Map#set (; 89 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/map/Map#set (; 88 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -6613,11 +6709,11 @@ local.get $0 call $~lib/rt/pure/__retain ) - (func $~lib/map/Map#get:size (; 90 ;) (param $0 i32) (result i32) + (func $~lib/map/Map#get:size (; 89 ;) (param $0 i32) (result i32) local.get $0 i32.load offset=20 ) - (func $~lib/map/Map#delete (; 91 ;) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/map/Map#delete (; 90 ;) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -6691,7 +6787,7 @@ end i32.const 1 ) - (func $std/map/testNumeric (; 92 ;) + (func $std/map/testNumeric (; 91 ;) (local $0 i32) (local $1 i32) (local $2 i32) @@ -7178,7 +7274,7 @@ local.get $0 call $~lib/rt/pure/__release ) - (func $~lib/map/Map#clear (; 93 ;) (param $0 i32) + (func $~lib/map/Map#clear (; 92 ;) (param $0 i32) (local $1 i32) (local $2 i32) local.get $0 @@ -7218,7 +7314,7 @@ i32.const 0 i32.store offset=20 ) - (func $~lib/map/Map#constructor (; 94 ;) (param $0 i32) (result i32) + (func $~lib/map/Map#constructor (; 93 ;) (param $0 i32) (result i32) local.get $0 i32.eqz if @@ -7250,7 +7346,7 @@ call $~lib/map/Map#clear local.get $0 ) - (func $~lib/util/hash/hash16 (; 95 ;) (param $0 i32) (result i32) + (func $~lib/util/hash/hash16 (; 94 ;) (param $0 i32) (result i32) (local $1 i32) i32.const -2128831035 local.set $1 @@ -7272,7 +7368,7 @@ local.set $1 local.get $1 ) - (func $~lib/map/Map#find (; 96 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/map/Map#find (; 95 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) local.get $0 @@ -7324,7 +7420,7 @@ end i32.const 0 ) - (func $~lib/map/Map#has (; 97 ;) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/map/Map#has (; 96 ;) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) local.get $0 local.get $1 @@ -7343,7 +7439,7 @@ i32.const 0 i32.ne ) - (func $~lib/map/Map#rehash (; 98 ;) (param $0 i32) (param $1 i32) + (func $~lib/map/Map#rehash (; 97 ;) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -7500,7 +7596,7 @@ local.get $5 call $~lib/rt/pure/__release ) - (func $~lib/map/Map#set (; 99 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/map/Map#set (; 98 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -7609,7 +7705,7 @@ local.get $0 call $~lib/rt/pure/__retain ) - (func $~lib/map/Map#get (; 100 ;) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/map/Map#get (; 99 ;) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) local.get $0 @@ -7640,33 +7736,89 @@ local.get $3 i32.load offset=4 ) - (func $~lib/map/Map#get:size (; 101 ;) (param $0 i32) (result i32) + (func $~lib/map/Map#get:size (; 100 ;) (param $0 i32) (result i32) local.get $0 i32.load offset=20 ) - (func $~lib/array/Array#constructor (; 102 ;) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array#constructor (; 101 ;) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + local.get $1 + i32.const 536870904 + i32.gt_u + if + i32.const 192 + i32.const 464 + i32.const 57 + i32.const 59 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 1 + i32.shl + local.set $2 + local.get $2 + i32.const 0 + call $~lib/rt/tlsf/__alloc + local.set $3 + local.get $3 + i32.const 0 + local.get $2 + call $~lib/memory/memory.fill local.get $0 - if (result i32) - local.get $0 - else + i32.eqz + if i32.const 16 i32.const 12 call $~lib/rt/tlsf/__alloc call $~lib/rt/pure/__retain + local.set $0 end - local.get $1 - i32.const 1 - call $~lib/arraybuffer/ArrayBufferView#constructor - local.set $0 + local.get $0 + i32.const 0 + i32.store + local.get $0 + i32.const 0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=8 local.get $0 i32.const 0 i32.store offset=12 local.get $0 + local.tee $4 + local.get $3 + local.tee $5 + local.get $4 + i32.load + local.tee $6 + i32.ne + if + local.get $5 + call $~lib/rt/pure/__retain + local.set $5 + local.get $6 + call $~lib/rt/pure/__release + end + local.get $5 + i32.store + local.get $0 + local.get $3 + i32.store offset=4 + local.get $0 + local.get $2 + i32.store offset=8 + local.get $0 local.get $1 i32.store offset=12 local.get $0 ) - (func $~lib/array/Array#__unchecked_set (; 103 ;) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/array/Array#__unchecked_set (; 102 ;) (param $0 i32) (param $1 i32) (param $2 i32) local.get $0 i32.load offset=4 local.get $1 @@ -7676,7 +7828,7 @@ local.get $2 i32.store16 ) - (func $~lib/array/Array#__set (; 104 ;) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/array/Array#__set (; 103 ;) (param $0 i32) (param $1 i32) (param $2 i32) local.get $1 local.get $0 i32.load offset=12 @@ -7686,9 +7838,9 @@ i32.const 0 i32.lt_s if + i32.const 512 i32.const 464 - i32.const 528 - i32.const 109 + i32.const 120 i32.const 21 call $~lib/builtins/abort unreachable @@ -7710,7 +7862,7 @@ local.get $2 call $~lib/array/Array#__unchecked_set ) - (func $~lib/array/Array#set:length (; 105 ;) (param $0 i32) (param $1 i32) + (func $~lib/array/Array#set:length (; 104 ;) (param $0 i32) (param $1 i32) (local $2 i32) local.get $0 i32.load offset=12 @@ -7723,7 +7875,7 @@ local.get $1 i32.store offset=12 ) - (func $~lib/map/Map#keys (; 106 ;) (param $0 i32) (result i32) + (func $~lib/map/Map#keys (; 105 ;) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -7788,7 +7940,7 @@ call $~lib/array/Array#set:length local.get $3 ) - (func $~lib/map/Map#values (; 107 ;) (param $0 i32) (result i32) + (func $~lib/map/Map#values (; 106 ;) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -7853,7 +8005,7 @@ call $~lib/array/Array#set:length local.get $3 ) - (func $~lib/map/Map#clear (; 108 ;) (param $0 i32) + (func $~lib/map/Map#clear (; 107 ;) (param $0 i32) (local $1 i32) (local $2 i32) local.get $0 @@ -7893,7 +8045,7 @@ i32.const 0 i32.store offset=20 ) - (func $~lib/map/Map#constructor (; 109 ;) (param $0 i32) (result i32) + (func $~lib/map/Map#constructor (; 108 ;) (param $0 i32) (result i32) local.get $0 i32.eqz if @@ -7925,11 +8077,11 @@ call $~lib/map/Map#clear local.get $0 ) - (func $~lib/array/Array#get:length (; 110 ;) (param $0 i32) (result i32) + (func $~lib/array/Array#get:length (; 109 ;) (param $0 i32) (result i32) local.get $0 i32.load offset=12 ) - (func $~lib/array/Array#__unchecked_get (; 111 ;) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array#__unchecked_get (; 110 ;) (param $0 i32) (param $1 i32) (result i32) local.get $0 i32.load offset=4 local.get $1 @@ -7938,16 +8090,16 @@ i32.add i32.load16_s ) - (func $~lib/array/Array#__get (; 112 ;) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array#__get (; 111 ;) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) local.get $1 local.get $0 i32.load offset=12 i32.ge_u if + i32.const 512 i32.const 464 - i32.const 528 - i32.const 93 + i32.const 104 i32.const 41 call $~lib/builtins/abort unreachable @@ -7958,7 +8110,7 @@ local.set $2 local.get $2 ) - (func $~lib/map/Map#find (; 113 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/map/Map#find (; 112 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) local.get $0 @@ -8010,7 +8162,7 @@ end i32.const 0 ) - (func $~lib/map/Map#rehash (; 114 ;) (param $0 i32) (param $1 i32) + (func $~lib/map/Map#rehash (; 113 ;) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -8167,7 +8319,7 @@ local.get $5 call $~lib/rt/pure/__release ) - (func $~lib/map/Map#set (; 115 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/map/Map#set (; 114 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -8276,11 +8428,11 @@ local.get $0 call $~lib/rt/pure/__retain ) - (func $~lib/map/Map#get:size (; 116 ;) (param $0 i32) (result i32) + (func $~lib/map/Map#get:size (; 115 ;) (param $0 i32) (result i32) local.get $0 i32.load offset=20 ) - (func $~lib/map/Map#delete (; 117 ;) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/map/Map#delete (; 116 ;) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -8356,7 +8508,7 @@ end i32.const 1 ) - (func $std/map/testNumeric (; 118 ;) + (func $std/map/testNumeric (; 117 ;) (local $0 i32) (local $1 i32) (local $2 i32) @@ -8865,7 +9017,7 @@ local.get $0 call $~lib/rt/pure/__release ) - (func $~lib/map/Map#clear (; 119 ;) (param $0 i32) + (func $~lib/map/Map#clear (; 118 ;) (param $0 i32) (local $1 i32) (local $2 i32) local.get $0 @@ -8905,7 +9057,7 @@ i32.const 0 i32.store offset=20 ) - (func $~lib/map/Map#constructor (; 120 ;) (param $0 i32) (result i32) + (func $~lib/map/Map#constructor (; 119 ;) (param $0 i32) (result i32) local.get $0 i32.eqz if @@ -8937,7 +9089,7 @@ call $~lib/map/Map#clear local.get $0 ) - (func $~lib/map/Map#find (; 121 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/map/Map#find (; 120 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) local.get $0 @@ -8987,7 +9139,7 @@ end i32.const 0 ) - (func $~lib/map/Map#has (; 122 ;) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/map/Map#has (; 121 ;) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) local.get $0 local.get $1 @@ -9004,7 +9156,7 @@ i32.const 0 i32.ne ) - (func $~lib/map/Map#rehash (; 123 ;) (param $0 i32) (param $1 i32) + (func $~lib/map/Map#rehash (; 122 ;) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -9161,7 +9313,7 @@ local.get $5 call $~lib/rt/pure/__release ) - (func $~lib/map/Map#set (; 124 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/map/Map#set (; 123 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -9268,7 +9420,7 @@ local.get $0 call $~lib/rt/pure/__retain ) - (func $~lib/map/Map#get (; 125 ;) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/map/Map#get (; 124 ;) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) local.get $0 @@ -9297,33 +9449,89 @@ local.get $3 i32.load offset=4 ) - (func $~lib/map/Map#get:size (; 126 ;) (param $0 i32) (result i32) + (func $~lib/map/Map#get:size (; 125 ;) (param $0 i32) (result i32) local.get $0 i32.load offset=20 ) - (func $~lib/array/Array#constructor (; 127 ;) (param $0 i32) (param $1 i32) (result i32) - local.get $0 - if (result i32) - local.get $0 - else - i32.const 16 - i32.const 15 - call $~lib/rt/tlsf/__alloc - call $~lib/rt/pure/__retain - end + (func $~lib/array/Array#constructor (; 126 ;) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) local.get $1 - i32.const 1 - call $~lib/arraybuffer/ArrayBufferView#constructor - local.set $0 - local.get $0 + i32.const 536870904 + i32.gt_u + if + i32.const 192 + i32.const 464 + i32.const 57 + i32.const 59 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 1 + i32.shl + local.set $2 + local.get $2 + i32.const 0 + call $~lib/rt/tlsf/__alloc + local.set $3 + local.get $3 + i32.const 0 + local.get $2 + call $~lib/memory/memory.fill + local.get $0 + i32.eqz + if + i32.const 16 + i32.const 15 + call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__retain + local.set $0 + end + local.get $0 + i32.const 0 + i32.store + local.get $0 + i32.const 0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=8 + local.get $0 i32.const 0 i32.store offset=12 local.get $0 + local.tee $4 + local.get $3 + local.tee $5 + local.get $4 + i32.load + local.tee $6 + i32.ne + if + local.get $5 + call $~lib/rt/pure/__retain + local.set $5 + local.get $6 + call $~lib/rt/pure/__release + end + local.get $5 + i32.store + local.get $0 + local.get $3 + i32.store offset=4 + local.get $0 + local.get $2 + i32.store offset=8 + local.get $0 local.get $1 i32.store offset=12 local.get $0 ) - (func $~lib/array/Array#__unchecked_set (; 128 ;) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/array/Array#__unchecked_set (; 127 ;) (param $0 i32) (param $1 i32) (param $2 i32) local.get $0 i32.load offset=4 local.get $1 @@ -9333,7 +9541,7 @@ local.get $2 i32.store16 ) - (func $~lib/array/Array#__set (; 129 ;) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/array/Array#__set (; 128 ;) (param $0 i32) (param $1 i32) (param $2 i32) local.get $1 local.get $0 i32.load offset=12 @@ -9343,9 +9551,9 @@ i32.const 0 i32.lt_s if + i32.const 512 i32.const 464 - i32.const 528 - i32.const 109 + i32.const 120 i32.const 21 call $~lib/builtins/abort unreachable @@ -9367,7 +9575,7 @@ local.get $2 call $~lib/array/Array#__unchecked_set ) - (func $~lib/array/Array#set:length (; 130 ;) (param $0 i32) (param $1 i32) + (func $~lib/array/Array#set:length (; 129 ;) (param $0 i32) (param $1 i32) (local $2 i32) local.get $0 i32.load offset=12 @@ -9380,7 +9588,7 @@ local.get $1 i32.store offset=12 ) - (func $~lib/map/Map#keys (; 131 ;) (param $0 i32) (result i32) + (func $~lib/map/Map#keys (; 130 ;) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -9445,7 +9653,7 @@ call $~lib/array/Array#set:length local.get $3 ) - (func $~lib/map/Map#values (; 132 ;) (param $0 i32) (result i32) + (func $~lib/map/Map#values (; 131 ;) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -9510,7 +9718,7 @@ call $~lib/array/Array#set:length local.get $3 ) - (func $~lib/map/Map#clear (; 133 ;) (param $0 i32) + (func $~lib/map/Map#clear (; 132 ;) (param $0 i32) (local $1 i32) (local $2 i32) local.get $0 @@ -9550,7 +9758,7 @@ i32.const 0 i32.store offset=20 ) - (func $~lib/map/Map#constructor (; 134 ;) (param $0 i32) (result i32) + (func $~lib/map/Map#constructor (; 133 ;) (param $0 i32) (result i32) local.get $0 i32.eqz if @@ -9582,11 +9790,11 @@ call $~lib/map/Map#clear local.get $0 ) - (func $~lib/array/Array#get:length (; 135 ;) (param $0 i32) (result i32) + (func $~lib/array/Array#get:length (; 134 ;) (param $0 i32) (result i32) local.get $0 i32.load offset=12 ) - (func $~lib/array/Array#__unchecked_get (; 136 ;) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array#__unchecked_get (; 135 ;) (param $0 i32) (param $1 i32) (result i32) local.get $0 i32.load offset=4 local.get $1 @@ -9595,16 +9803,16 @@ i32.add i32.load16_u ) - (func $~lib/array/Array#__get (; 137 ;) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array#__get (; 136 ;) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) local.get $1 local.get $0 i32.load offset=12 i32.ge_u if + i32.const 512 i32.const 464 - i32.const 528 - i32.const 93 + i32.const 104 i32.const 41 call $~lib/builtins/abort unreachable @@ -9615,7 +9823,7 @@ local.set $2 local.get $2 ) - (func $~lib/map/Map#find (; 138 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/map/Map#find (; 137 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) local.get $0 @@ -9665,7 +9873,7 @@ end i32.const 0 ) - (func $~lib/map/Map#rehash (; 139 ;) (param $0 i32) (param $1 i32) + (func $~lib/map/Map#rehash (; 138 ;) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -9822,7 +10030,7 @@ local.get $5 call $~lib/rt/pure/__release ) - (func $~lib/map/Map#set (; 140 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/map/Map#set (; 139 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -9929,11 +10137,11 @@ local.get $0 call $~lib/rt/pure/__retain ) - (func $~lib/map/Map#get:size (; 141 ;) (param $0 i32) (result i32) + (func $~lib/map/Map#get:size (; 140 ;) (param $0 i32) (result i32) local.get $0 i32.load offset=20 ) - (func $~lib/map/Map#delete (; 142 ;) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/map/Map#delete (; 141 ;) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -10007,7 +10215,7 @@ end i32.const 1 ) - (func $std/map/testNumeric (; 143 ;) + (func $std/map/testNumeric (; 142 ;) (local $0 i32) (local $1 i32) (local $2 i32) @@ -10494,7 +10702,7 @@ local.get $0 call $~lib/rt/pure/__release ) - (func $~lib/map/Map#has (; 144 ;) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/map/Map#has (; 143 ;) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) local.get $0 local.get $1 @@ -10509,7 +10717,7 @@ i32.const 0 i32.ne ) - (func $~lib/map/Map#get (; 145 ;) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/map/Map#get (; 144 ;) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) local.get $0 @@ -10536,7 +10744,7 @@ local.get $3 i32.load offset=4 ) - (func $~lib/map/Map#keys (; 146 ;) (param $0 i32) (result i32) + (func $~lib/map/Map#keys (; 145 ;) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -10601,7 +10809,7 @@ call $~lib/array/Array#set:length local.get $3 ) - (func $~lib/map/Map#values (; 147 ;) (param $0 i32) (result i32) + (func $~lib/map/Map#values (; 146 ;) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -10666,11 +10874,11 @@ call $~lib/array/Array#set:length local.get $3 ) - (func $~lib/array/Array#get:length (; 148 ;) (param $0 i32) (result i32) + (func $~lib/array/Array#get:length (; 147 ;) (param $0 i32) (result i32) local.get $0 i32.load offset=12 ) - (func $~lib/map/Map#delete (; 149 ;) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/map/Map#delete (; 148 ;) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -10742,7 +10950,7 @@ end i32.const 1 ) - (func $std/map/testNumeric (; 150 ;) + (func $std/map/testNumeric (; 149 ;) (local $0 i32) (local $1 i32) (local $2 i32) @@ -11205,7 +11413,7 @@ local.get $0 call $~lib/rt/pure/__release ) - (func $~lib/map/Map#clear (; 151 ;) (param $0 i32) + (func $~lib/map/Map#clear (; 150 ;) (param $0 i32) (local $1 i32) (local $2 i32) local.get $0 @@ -11245,7 +11453,7 @@ i32.const 0 i32.store offset=20 ) - (func $~lib/map/Map#constructor (; 152 ;) (param $0 i32) (result i32) + (func $~lib/map/Map#constructor (; 151 ;) (param $0 i32) (result i32) local.get $0 i32.eqz if @@ -11277,7 +11485,7 @@ call $~lib/map/Map#clear local.get $0 ) - (func $~lib/map/Map#find (; 153 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/map/Map#find (; 152 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) local.get $0 @@ -11325,7 +11533,7 @@ end i32.const 0 ) - (func $~lib/map/Map#has (; 154 ;) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/map/Map#has (; 153 ;) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) local.get $0 local.get $1 @@ -11340,7 +11548,7 @@ i32.const 0 i32.ne ) - (func $~lib/map/Map#rehash (; 155 ;) (param $0 i32) (param $1 i32) + (func $~lib/map/Map#rehash (; 154 ;) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -11497,7 +11705,7 @@ local.get $5 call $~lib/rt/pure/__release ) - (func $~lib/map/Map#set (; 156 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/map/Map#set (; 155 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -11602,7 +11810,7 @@ local.get $0 call $~lib/rt/pure/__retain ) - (func $~lib/map/Map#get (; 157 ;) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/map/Map#get (; 156 ;) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) local.get $0 @@ -11629,33 +11837,89 @@ local.get $3 i32.load offset=4 ) - (func $~lib/map/Map#get:size (; 158 ;) (param $0 i32) (result i32) + (func $~lib/map/Map#get:size (; 157 ;) (param $0 i32) (result i32) local.get $0 i32.load offset=20 ) - (func $~lib/array/Array#constructor (; 159 ;) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array#constructor (; 158 ;) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + local.get $1 + i32.const 268435452 + i32.gt_u + if + i32.const 192 + i32.const 464 + i32.const 57 + i32.const 59 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 2 + i32.shl + local.set $2 + local.get $2 + i32.const 0 + call $~lib/rt/tlsf/__alloc + local.set $3 + local.get $3 + i32.const 0 + local.get $2 + call $~lib/memory/memory.fill local.get $0 - if (result i32) - local.get $0 - else + i32.eqz + if i32.const 16 i32.const 18 call $~lib/rt/tlsf/__alloc call $~lib/rt/pure/__retain + local.set $0 end - local.get $1 - i32.const 2 - call $~lib/arraybuffer/ArrayBufferView#constructor - local.set $0 + local.get $0 + i32.const 0 + i32.store + local.get $0 + i32.const 0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=8 local.get $0 i32.const 0 i32.store offset=12 local.get $0 + local.tee $4 + local.get $3 + local.tee $5 + local.get $4 + i32.load + local.tee $6 + i32.ne + if + local.get $5 + call $~lib/rt/pure/__retain + local.set $5 + local.get $6 + call $~lib/rt/pure/__release + end + local.get $5 + i32.store + local.get $0 + local.get $3 + i32.store offset=4 + local.get $0 + local.get $2 + i32.store offset=8 + local.get $0 local.get $1 i32.store offset=12 local.get $0 ) - (func $~lib/array/Array#__unchecked_set (; 160 ;) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/array/Array#__unchecked_set (; 159 ;) (param $0 i32) (param $1 i32) (param $2 i32) local.get $0 i32.load offset=4 local.get $1 @@ -11665,7 +11929,7 @@ local.get $2 i32.store ) - (func $~lib/array/Array#__set (; 161 ;) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/array/Array#__set (; 160 ;) (param $0 i32) (param $1 i32) (param $2 i32) local.get $1 local.get $0 i32.load offset=12 @@ -11675,9 +11939,9 @@ i32.const 0 i32.lt_s if + i32.const 512 i32.const 464 - i32.const 528 - i32.const 109 + i32.const 120 i32.const 21 call $~lib/builtins/abort unreachable @@ -11699,7 +11963,7 @@ local.get $2 call $~lib/array/Array#__unchecked_set ) - (func $~lib/array/Array#set:length (; 162 ;) (param $0 i32) (param $1 i32) + (func $~lib/array/Array#set:length (; 161 ;) (param $0 i32) (param $1 i32) (local $2 i32) local.get $0 i32.load offset=12 @@ -11712,7 +11976,7 @@ local.get $1 i32.store offset=12 ) - (func $~lib/map/Map#keys (; 163 ;) (param $0 i32) (result i32) + (func $~lib/map/Map#keys (; 162 ;) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -11777,7 +12041,7 @@ call $~lib/array/Array#set:length local.get $3 ) - (func $~lib/map/Map#values (; 164 ;) (param $0 i32) (result i32) + (func $~lib/map/Map#values (; 163 ;) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -11842,7 +12106,7 @@ call $~lib/array/Array#set:length local.get $3 ) - (func $~lib/map/Map#clear (; 165 ;) (param $0 i32) + (func $~lib/map/Map#clear (; 164 ;) (param $0 i32) (local $1 i32) (local $2 i32) local.get $0 @@ -11882,7 +12146,7 @@ i32.const 0 i32.store offset=20 ) - (func $~lib/map/Map#constructor (; 166 ;) (param $0 i32) (result i32) + (func $~lib/map/Map#constructor (; 165 ;) (param $0 i32) (result i32) local.get $0 i32.eqz if @@ -11914,11 +12178,11 @@ call $~lib/map/Map#clear local.get $0 ) - (func $~lib/array/Array#get:length (; 167 ;) (param $0 i32) (result i32) + (func $~lib/array/Array#get:length (; 166 ;) (param $0 i32) (result i32) local.get $0 i32.load offset=12 ) - (func $~lib/array/Array#__unchecked_get (; 168 ;) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array#__unchecked_get (; 167 ;) (param $0 i32) (param $1 i32) (result i32) local.get $0 i32.load offset=4 local.get $1 @@ -11927,16 +12191,16 @@ i32.add i32.load ) - (func $~lib/array/Array#__get (; 169 ;) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array#__get (; 168 ;) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) local.get $1 local.get $0 i32.load offset=12 i32.ge_u if + i32.const 512 i32.const 464 - i32.const 528 - i32.const 93 + i32.const 104 i32.const 41 call $~lib/builtins/abort unreachable @@ -11947,7 +12211,7 @@ local.set $2 local.get $2 ) - (func $~lib/map/Map#find (; 170 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/map/Map#find (; 169 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) local.get $0 @@ -11995,7 +12259,7 @@ end i32.const 0 ) - (func $~lib/map/Map#rehash (; 171 ;) (param $0 i32) (param $1 i32) + (func $~lib/map/Map#rehash (; 170 ;) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -12152,7 +12416,7 @@ local.get $5 call $~lib/rt/pure/__release ) - (func $~lib/map/Map#set (; 172 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/map/Map#set (; 171 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -12257,11 +12521,11 @@ local.get $0 call $~lib/rt/pure/__retain ) - (func $~lib/map/Map#get:size (; 173 ;) (param $0 i32) (result i32) + (func $~lib/map/Map#get:size (; 172 ;) (param $0 i32) (result i32) local.get $0 i32.load offset=20 ) - (func $~lib/map/Map#delete (; 174 ;) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/map/Map#delete (; 173 ;) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -12333,7 +12597,7 @@ end i32.const 1 ) - (func $std/map/testNumeric (; 175 ;) + (func $std/map/testNumeric (; 174 ;) (local $0 i32) (local $1 i32) (local $2 i32) @@ -12796,7 +13060,7 @@ local.get $0 call $~lib/rt/pure/__release ) - (func $~lib/map/Map#clear (; 176 ;) (param $0 i32) + (func $~lib/map/Map#clear (; 175 ;) (param $0 i32) (local $1 i32) (local $2 i32) local.get $0 @@ -12836,7 +13100,7 @@ i32.const 0 i32.store offset=20 ) - (func $~lib/map/Map#constructor (; 177 ;) (param $0 i32) (result i32) + (func $~lib/map/Map#constructor (; 176 ;) (param $0 i32) (result i32) local.get $0 i32.eqz if @@ -12868,7 +13132,7 @@ call $~lib/map/Map#clear local.get $0 ) - (func $~lib/util/hash/hash64 (; 178 ;) (param $0 i64) (result i32) + (func $~lib/util/hash/hash64 (; 177 ;) (param $0 i64) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -12956,7 +13220,7 @@ local.set $3 local.get $3 ) - (func $~lib/map/Map#find (; 179 ;) (param $0 i32) (param $1 i64) (param $2 i32) (result i32) + (func $~lib/map/Map#find (; 178 ;) (param $0 i32) (param $1 i64) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) local.get $0 @@ -13004,7 +13268,7 @@ end i32.const 0 ) - (func $~lib/map/Map#has (; 180 ;) (param $0 i32) (param $1 i64) (result i32) + (func $~lib/map/Map#has (; 179 ;) (param $0 i32) (param $1 i64) (result i32) (local $2 i64) local.get $0 local.get $1 @@ -13019,7 +13283,7 @@ i32.const 0 i32.ne ) - (func $~lib/map/Map#rehash (; 181 ;) (param $0 i32) (param $1 i32) + (func $~lib/map/Map#rehash (; 180 ;) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -13177,7 +13441,7 @@ local.get $5 call $~lib/rt/pure/__release ) - (func $~lib/map/Map#set (; 182 ;) (param $0 i32) (param $1 i64) (param $2 i32) (result i32) + (func $~lib/map/Map#set (; 181 ;) (param $0 i32) (param $1 i64) (param $2 i32) (result i32) (local $3 i64) (local $4 i32) (local $5 i32) @@ -13283,7 +13547,7 @@ local.get $0 call $~lib/rt/pure/__retain ) - (func $~lib/map/Map#get (; 183 ;) (param $0 i32) (param $1 i64) (result i32) + (func $~lib/map/Map#get (; 182 ;) (param $0 i32) (param $1 i64) (result i32) (local $2 i64) (local $3 i32) local.get $0 @@ -13310,33 +13574,89 @@ local.get $3 i32.load offset=8 ) - (func $~lib/map/Map#get:size (; 184 ;) (param $0 i32) (result i32) + (func $~lib/map/Map#get:size (; 183 ;) (param $0 i32) (result i32) local.get $0 i32.load offset=20 ) - (func $~lib/array/Array#constructor (; 185 ;) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array#constructor (; 184 ;) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + local.get $1 + i32.const 134217726 + i32.gt_u + if + i32.const 192 + i32.const 464 + i32.const 57 + i32.const 59 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 3 + i32.shl + local.set $2 + local.get $2 + i32.const 0 + call $~lib/rt/tlsf/__alloc + local.set $3 + local.get $3 + i32.const 0 + local.get $2 + call $~lib/memory/memory.fill local.get $0 - if (result i32) - local.get $0 - else + i32.eqz + if i32.const 16 i32.const 21 call $~lib/rt/tlsf/__alloc call $~lib/rt/pure/__retain + local.set $0 end - local.get $1 - i32.const 3 - call $~lib/arraybuffer/ArrayBufferView#constructor - local.set $0 + local.get $0 + i32.const 0 + i32.store + local.get $0 + i32.const 0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=8 local.get $0 i32.const 0 i32.store offset=12 local.get $0 + local.tee $4 + local.get $3 + local.tee $5 + local.get $4 + i32.load + local.tee $6 + i32.ne + if + local.get $5 + call $~lib/rt/pure/__retain + local.set $5 + local.get $6 + call $~lib/rt/pure/__release + end + local.get $5 + i32.store + local.get $0 + local.get $3 + i32.store offset=4 + local.get $0 + local.get $2 + i32.store offset=8 + local.get $0 local.get $1 i32.store offset=12 local.get $0 ) - (func $~lib/array/Array#__unchecked_set (; 186 ;) (param $0 i32) (param $1 i32) (param $2 i64) + (func $~lib/array/Array#__unchecked_set (; 185 ;) (param $0 i32) (param $1 i32) (param $2 i64) local.get $0 i32.load offset=4 local.get $1 @@ -13346,7 +13666,7 @@ local.get $2 i64.store ) - (func $~lib/array/Array#__set (; 187 ;) (param $0 i32) (param $1 i32) (param $2 i64) + (func $~lib/array/Array#__set (; 186 ;) (param $0 i32) (param $1 i32) (param $2 i64) local.get $1 local.get $0 i32.load offset=12 @@ -13356,9 +13676,9 @@ i32.const 0 i32.lt_s if + i32.const 512 i32.const 464 - i32.const 528 - i32.const 109 + i32.const 120 i32.const 21 call $~lib/builtins/abort unreachable @@ -13380,7 +13700,7 @@ local.get $2 call $~lib/array/Array#__unchecked_set ) - (func $~lib/array/Array#set:length (; 188 ;) (param $0 i32) (param $1 i32) + (func $~lib/array/Array#set:length (; 187 ;) (param $0 i32) (param $1 i32) (local $2 i32) local.get $0 i32.load offset=12 @@ -13393,7 +13713,7 @@ local.get $1 i32.store offset=12 ) - (func $~lib/map/Map#keys (; 189 ;) (param $0 i32) (result i32) + (func $~lib/map/Map#keys (; 188 ;) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -13458,7 +13778,7 @@ call $~lib/array/Array#set:length local.get $3 ) - (func $~lib/map/Map#values (; 190 ;) (param $0 i32) (result i32) + (func $~lib/map/Map#values (; 189 ;) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -13523,7 +13843,7 @@ call $~lib/array/Array#set:length local.get $3 ) - (func $~lib/map/Map#clear (; 191 ;) (param $0 i32) + (func $~lib/map/Map#clear (; 190 ;) (param $0 i32) (local $1 i32) (local $2 i32) local.get $0 @@ -13563,7 +13883,7 @@ i32.const 0 i32.store offset=20 ) - (func $~lib/map/Map#constructor (; 192 ;) (param $0 i32) (result i32) + (func $~lib/map/Map#constructor (; 191 ;) (param $0 i32) (result i32) local.get $0 i32.eqz if @@ -13595,11 +13915,11 @@ call $~lib/map/Map#clear local.get $0 ) - (func $~lib/array/Array#get:length (; 193 ;) (param $0 i32) (result i32) + (func $~lib/array/Array#get:length (; 192 ;) (param $0 i32) (result i32) local.get $0 i32.load offset=12 ) - (func $~lib/array/Array#__unchecked_get (; 194 ;) (param $0 i32) (param $1 i32) (result i64) + (func $~lib/array/Array#__unchecked_get (; 193 ;) (param $0 i32) (param $1 i32) (result i64) local.get $0 i32.load offset=4 local.get $1 @@ -13608,16 +13928,16 @@ i32.add i64.load ) - (func $~lib/array/Array#__get (; 195 ;) (param $0 i32) (param $1 i32) (result i64) + (func $~lib/array/Array#__get (; 194 ;) (param $0 i32) (param $1 i32) (result i64) (local $2 i64) local.get $1 local.get $0 i32.load offset=12 i32.ge_u if + i32.const 512 i32.const 464 - i32.const 528 - i32.const 93 + i32.const 104 i32.const 41 call $~lib/builtins/abort unreachable @@ -13628,7 +13948,7 @@ local.set $2 local.get $2 ) - (func $~lib/map/Map#find (; 196 ;) (param $0 i32) (param $1 i64) (param $2 i32) (result i32) + (func $~lib/map/Map#find (; 195 ;) (param $0 i32) (param $1 i64) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) local.get $0 @@ -13676,7 +13996,7 @@ end i32.const 0 ) - (func $~lib/map/Map#rehash (; 197 ;) (param $0 i32) (param $1 i32) + (func $~lib/map/Map#rehash (; 196 ;) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -13834,7 +14154,7 @@ local.get $5 call $~lib/rt/pure/__release ) - (func $~lib/map/Map#set (; 198 ;) (param $0 i32) (param $1 i64) (param $2 i64) (result i32) + (func $~lib/map/Map#set (; 197 ;) (param $0 i32) (param $1 i64) (param $2 i64) (result i32) (local $3 i64) (local $4 i32) (local $5 i32) @@ -13940,11 +14260,11 @@ local.get $0 call $~lib/rt/pure/__retain ) - (func $~lib/map/Map#get:size (; 199 ;) (param $0 i32) (result i32) + (func $~lib/map/Map#get:size (; 198 ;) (param $0 i32) (result i32) local.get $0 i32.load offset=20 ) - (func $~lib/map/Map#delete (; 200 ;) (param $0 i32) (param $1 i64) (result i32) + (func $~lib/map/Map#delete (; 199 ;) (param $0 i32) (param $1 i64) (result i32) (local $2 i64) (local $3 i32) (local $4 i32) @@ -14017,7 +14337,7 @@ end i32.const 1 ) - (func $std/map/testNumeric (; 201 ;) + (func $std/map/testNumeric (; 200 ;) (local $0 i32) (local $1 i64) (local $2 i32) @@ -14488,7 +14808,7 @@ local.get $0 call $~lib/rt/pure/__release ) - (func $~lib/map/Map#clear (; 202 ;) (param $0 i32) + (func $~lib/map/Map#clear (; 201 ;) (param $0 i32) (local $1 i32) (local $2 i32) local.get $0 @@ -14528,7 +14848,7 @@ i32.const 0 i32.store offset=20 ) - (func $~lib/map/Map#constructor (; 203 ;) (param $0 i32) (result i32) + (func $~lib/map/Map#constructor (; 202 ;) (param $0 i32) (result i32) local.get $0 i32.eqz if @@ -14560,7 +14880,7 @@ call $~lib/map/Map#clear local.get $0 ) - (func $~lib/map/Map#find (; 204 ;) (param $0 i32) (param $1 i64) (param $2 i32) (result i32) + (func $~lib/map/Map#find (; 203 ;) (param $0 i32) (param $1 i64) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) local.get $0 @@ -14608,7 +14928,7 @@ end i32.const 0 ) - (func $~lib/map/Map#has (; 205 ;) (param $0 i32) (param $1 i64) (result i32) + (func $~lib/map/Map#has (; 204 ;) (param $0 i32) (param $1 i64) (result i32) (local $2 i64) local.get $0 local.get $1 @@ -14623,7 +14943,7 @@ i32.const 0 i32.ne ) - (func $~lib/map/Map#rehash (; 206 ;) (param $0 i32) (param $1 i32) + (func $~lib/map/Map#rehash (; 205 ;) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -14781,7 +15101,7 @@ local.get $5 call $~lib/rt/pure/__release ) - (func $~lib/map/Map#set (; 207 ;) (param $0 i32) (param $1 i64) (param $2 i32) (result i32) + (func $~lib/map/Map#set (; 206 ;) (param $0 i32) (param $1 i64) (param $2 i32) (result i32) (local $3 i64) (local $4 i32) (local $5 i32) @@ -14887,7 +15207,7 @@ local.get $0 call $~lib/rt/pure/__retain ) - (func $~lib/map/Map#get (; 208 ;) (param $0 i32) (param $1 i64) (result i32) + (func $~lib/map/Map#get (; 207 ;) (param $0 i32) (param $1 i64) (result i32) (local $2 i64) (local $3 i32) local.get $0 @@ -14914,33 +15234,89 @@ local.get $3 i32.load offset=8 ) - (func $~lib/map/Map#get:size (; 209 ;) (param $0 i32) (result i32) + (func $~lib/map/Map#get:size (; 208 ;) (param $0 i32) (result i32) local.get $0 i32.load offset=20 ) - (func $~lib/array/Array#constructor (; 210 ;) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array#constructor (; 209 ;) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + local.get $1 + i32.const 134217726 + i32.gt_u + if + i32.const 192 + i32.const 464 + i32.const 57 + i32.const 59 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 3 + i32.shl + local.set $2 + local.get $2 + i32.const 0 + call $~lib/rt/tlsf/__alloc + local.set $3 + local.get $3 + i32.const 0 + local.get $2 + call $~lib/memory/memory.fill local.get $0 - if (result i32) - local.get $0 - else + i32.eqz + if i32.const 16 i32.const 24 call $~lib/rt/tlsf/__alloc call $~lib/rt/pure/__retain + local.set $0 end - local.get $1 - i32.const 3 - call $~lib/arraybuffer/ArrayBufferView#constructor - local.set $0 + local.get $0 + i32.const 0 + i32.store + local.get $0 + i32.const 0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=8 local.get $0 i32.const 0 i32.store offset=12 local.get $0 + local.tee $4 + local.get $3 + local.tee $5 + local.get $4 + i32.load + local.tee $6 + i32.ne + if + local.get $5 + call $~lib/rt/pure/__retain + local.set $5 + local.get $6 + call $~lib/rt/pure/__release + end + local.get $5 + i32.store + local.get $0 + local.get $3 + i32.store offset=4 + local.get $0 + local.get $2 + i32.store offset=8 + local.get $0 local.get $1 i32.store offset=12 local.get $0 ) - (func $~lib/array/Array#__unchecked_set (; 211 ;) (param $0 i32) (param $1 i32) (param $2 i64) + (func $~lib/array/Array#__unchecked_set (; 210 ;) (param $0 i32) (param $1 i32) (param $2 i64) local.get $0 i32.load offset=4 local.get $1 @@ -14950,7 +15326,7 @@ local.get $2 i64.store ) - (func $~lib/array/Array#__set (; 212 ;) (param $0 i32) (param $1 i32) (param $2 i64) + (func $~lib/array/Array#__set (; 211 ;) (param $0 i32) (param $1 i32) (param $2 i64) local.get $1 local.get $0 i32.load offset=12 @@ -14960,9 +15336,9 @@ i32.const 0 i32.lt_s if + i32.const 512 i32.const 464 - i32.const 528 - i32.const 109 + i32.const 120 i32.const 21 call $~lib/builtins/abort unreachable @@ -14984,7 +15360,7 @@ local.get $2 call $~lib/array/Array#__unchecked_set ) - (func $~lib/array/Array#set:length (; 213 ;) (param $0 i32) (param $1 i32) + (func $~lib/array/Array#set:length (; 212 ;) (param $0 i32) (param $1 i32) (local $2 i32) local.get $0 i32.load offset=12 @@ -14997,7 +15373,7 @@ local.get $1 i32.store offset=12 ) - (func $~lib/map/Map#keys (; 214 ;) (param $0 i32) (result i32) + (func $~lib/map/Map#keys (; 213 ;) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -15062,7 +15438,7 @@ call $~lib/array/Array#set:length local.get $3 ) - (func $~lib/map/Map#values (; 215 ;) (param $0 i32) (result i32) + (func $~lib/map/Map#values (; 214 ;) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -15127,7 +15503,7 @@ call $~lib/array/Array#set:length local.get $3 ) - (func $~lib/map/Map#clear (; 216 ;) (param $0 i32) + (func $~lib/map/Map#clear (; 215 ;) (param $0 i32) (local $1 i32) (local $2 i32) local.get $0 @@ -15167,7 +15543,7 @@ i32.const 0 i32.store offset=20 ) - (func $~lib/map/Map#constructor (; 217 ;) (param $0 i32) (result i32) + (func $~lib/map/Map#constructor (; 216 ;) (param $0 i32) (result i32) local.get $0 i32.eqz if @@ -15199,11 +15575,11 @@ call $~lib/map/Map#clear local.get $0 ) - (func $~lib/array/Array#get:length (; 218 ;) (param $0 i32) (result i32) + (func $~lib/array/Array#get:length (; 217 ;) (param $0 i32) (result i32) local.get $0 i32.load offset=12 ) - (func $~lib/array/Array#__unchecked_get (; 219 ;) (param $0 i32) (param $1 i32) (result i64) + (func $~lib/array/Array#__unchecked_get (; 218 ;) (param $0 i32) (param $1 i32) (result i64) local.get $0 i32.load offset=4 local.get $1 @@ -15212,16 +15588,16 @@ i32.add i64.load ) - (func $~lib/array/Array#__get (; 220 ;) (param $0 i32) (param $1 i32) (result i64) + (func $~lib/array/Array#__get (; 219 ;) (param $0 i32) (param $1 i32) (result i64) (local $2 i64) local.get $1 local.get $0 i32.load offset=12 i32.ge_u if + i32.const 512 i32.const 464 - i32.const 528 - i32.const 93 + i32.const 104 i32.const 41 call $~lib/builtins/abort unreachable @@ -15232,7 +15608,7 @@ local.set $2 local.get $2 ) - (func $~lib/map/Map#find (; 221 ;) (param $0 i32) (param $1 i64) (param $2 i32) (result i32) + (func $~lib/map/Map#find (; 220 ;) (param $0 i32) (param $1 i64) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) local.get $0 @@ -15280,7 +15656,7 @@ end i32.const 0 ) - (func $~lib/map/Map#rehash (; 222 ;) (param $0 i32) (param $1 i32) + (func $~lib/map/Map#rehash (; 221 ;) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -15438,7 +15814,7 @@ local.get $5 call $~lib/rt/pure/__release ) - (func $~lib/map/Map#set (; 223 ;) (param $0 i32) (param $1 i64) (param $2 i64) (result i32) + (func $~lib/map/Map#set (; 222 ;) (param $0 i32) (param $1 i64) (param $2 i64) (result i32) (local $3 i64) (local $4 i32) (local $5 i32) @@ -15544,11 +15920,11 @@ local.get $0 call $~lib/rt/pure/__retain ) - (func $~lib/map/Map#get:size (; 224 ;) (param $0 i32) (result i32) + (func $~lib/map/Map#get:size (; 223 ;) (param $0 i32) (result i32) local.get $0 i32.load offset=20 ) - (func $~lib/map/Map#delete (; 225 ;) (param $0 i32) (param $1 i64) (result i32) + (func $~lib/map/Map#delete (; 224 ;) (param $0 i32) (param $1 i64) (result i32) (local $2 i64) (local $3 i32) (local $4 i32) @@ -15621,7 +15997,7 @@ end i32.const 1 ) - (func $std/map/testNumeric (; 226 ;) + (func $std/map/testNumeric (; 225 ;) (local $0 i32) (local $1 i64) (local $2 i32) @@ -16092,7 +16468,7 @@ local.get $0 call $~lib/rt/pure/__release ) - (func $~lib/map/Map#clear (; 227 ;) (param $0 i32) + (func $~lib/map/Map#clear (; 226 ;) (param $0 i32) (local $1 i32) (local $2 i32) local.get $0 @@ -16132,7 +16508,7 @@ i32.const 0 i32.store offset=20 ) - (func $~lib/map/Map#constructor (; 228 ;) (param $0 i32) (result i32) + (func $~lib/map/Map#constructor (; 227 ;) (param $0 i32) (result i32) local.get $0 i32.eqz if @@ -16164,7 +16540,7 @@ call $~lib/map/Map#clear local.get $0 ) - (func $~lib/map/Map#find (; 229 ;) (param $0 i32) (param $1 f32) (param $2 i32) (result i32) + (func $~lib/map/Map#find (; 228 ;) (param $0 i32) (param $1 f32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) local.get $0 @@ -16212,7 +16588,7 @@ end i32.const 0 ) - (func $~lib/map/Map#has (; 230 ;) (param $0 i32) (param $1 f32) (result i32) + (func $~lib/map/Map#has (; 229 ;) (param $0 i32) (param $1 f32) (result i32) (local $2 f32) local.get $0 local.get $1 @@ -16228,7 +16604,7 @@ i32.const 0 i32.ne ) - (func $~lib/map/Map#rehash (; 231 ;) (param $0 i32) (param $1 i32) + (func $~lib/map/Map#rehash (; 230 ;) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -16387,7 +16763,7 @@ local.get $5 call $~lib/rt/pure/__release ) - (func $~lib/map/Map#set (; 232 ;) (param $0 i32) (param $1 f32) (param $2 i32) (result i32) + (func $~lib/map/Map#set (; 231 ;) (param $0 i32) (param $1 f32) (param $2 i32) (result i32) (local $3 f32) (local $4 i32) (local $5 i32) @@ -16494,7 +16870,7 @@ local.get $0 call $~lib/rt/pure/__retain ) - (func $~lib/map/Map#get (; 233 ;) (param $0 i32) (param $1 f32) (result i32) + (func $~lib/map/Map#get (; 232 ;) (param $0 i32) (param $1 f32) (result i32) (local $2 f32) (local $3 i32) local.get $0 @@ -16522,33 +16898,89 @@ local.get $3 i32.load offset=4 ) - (func $~lib/map/Map#get:size (; 234 ;) (param $0 i32) (result i32) + (func $~lib/map/Map#get:size (; 233 ;) (param $0 i32) (result i32) local.get $0 i32.load offset=20 ) - (func $~lib/array/Array#constructor (; 235 ;) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array#constructor (; 234 ;) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + local.get $1 + i32.const 268435452 + i32.gt_u + if + i32.const 192 + i32.const 464 + i32.const 57 + i32.const 59 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 2 + i32.shl + local.set $2 + local.get $2 + i32.const 0 + call $~lib/rt/tlsf/__alloc + local.set $3 + local.get $3 + i32.const 0 + local.get $2 + call $~lib/memory/memory.fill local.get $0 - if (result i32) - local.get $0 - else + i32.eqz + if i32.const 16 i32.const 27 call $~lib/rt/tlsf/__alloc call $~lib/rt/pure/__retain + local.set $0 end - local.get $1 - i32.const 2 - call $~lib/arraybuffer/ArrayBufferView#constructor - local.set $0 + local.get $0 + i32.const 0 + i32.store + local.get $0 + i32.const 0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=8 local.get $0 i32.const 0 i32.store offset=12 local.get $0 + local.tee $4 + local.get $3 + local.tee $5 + local.get $4 + i32.load + local.tee $6 + i32.ne + if + local.get $5 + call $~lib/rt/pure/__retain + local.set $5 + local.get $6 + call $~lib/rt/pure/__release + end + local.get $5 + i32.store + local.get $0 + local.get $3 + i32.store offset=4 + local.get $0 + local.get $2 + i32.store offset=8 + local.get $0 local.get $1 i32.store offset=12 local.get $0 ) - (func $~lib/array/Array#__unchecked_set (; 236 ;) (param $0 i32) (param $1 i32) (param $2 f32) + (func $~lib/array/Array#__unchecked_set (; 235 ;) (param $0 i32) (param $1 i32) (param $2 f32) local.get $0 i32.load offset=4 local.get $1 @@ -16558,7 +16990,7 @@ local.get $2 f32.store ) - (func $~lib/array/Array#__set (; 237 ;) (param $0 i32) (param $1 i32) (param $2 f32) + (func $~lib/array/Array#__set (; 236 ;) (param $0 i32) (param $1 i32) (param $2 f32) local.get $1 local.get $0 i32.load offset=12 @@ -16568,9 +17000,9 @@ i32.const 0 i32.lt_s if + i32.const 512 i32.const 464 - i32.const 528 - i32.const 109 + i32.const 120 i32.const 21 call $~lib/builtins/abort unreachable @@ -16592,7 +17024,7 @@ local.get $2 call $~lib/array/Array#__unchecked_set ) - (func $~lib/array/Array#set:length (; 238 ;) (param $0 i32) (param $1 i32) + (func $~lib/array/Array#set:length (; 237 ;) (param $0 i32) (param $1 i32) (local $2 i32) local.get $0 i32.load offset=12 @@ -16605,7 +17037,7 @@ local.get $1 i32.store offset=12 ) - (func $~lib/map/Map#keys (; 239 ;) (param $0 i32) (result i32) + (func $~lib/map/Map#keys (; 238 ;) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -16670,7 +17102,7 @@ call $~lib/array/Array#set:length local.get $3 ) - (func $~lib/map/Map#values (; 240 ;) (param $0 i32) (result i32) + (func $~lib/map/Map#values (; 239 ;) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -16735,7 +17167,7 @@ call $~lib/array/Array#set:length local.get $3 ) - (func $~lib/map/Map#clear (; 241 ;) (param $0 i32) + (func $~lib/map/Map#clear (; 240 ;) (param $0 i32) (local $1 i32) (local $2 i32) local.get $0 @@ -16775,7 +17207,7 @@ i32.const 0 i32.store offset=20 ) - (func $~lib/map/Map#constructor (; 242 ;) (param $0 i32) (result i32) + (func $~lib/map/Map#constructor (; 241 ;) (param $0 i32) (result i32) local.get $0 i32.eqz if @@ -16807,11 +17239,11 @@ call $~lib/map/Map#clear local.get $0 ) - (func $~lib/array/Array#get:length (; 243 ;) (param $0 i32) (result i32) + (func $~lib/array/Array#get:length (; 242 ;) (param $0 i32) (result i32) local.get $0 i32.load offset=12 ) - (func $~lib/array/Array#__unchecked_get (; 244 ;) (param $0 i32) (param $1 i32) (result f32) + (func $~lib/array/Array#__unchecked_get (; 243 ;) (param $0 i32) (param $1 i32) (result f32) local.get $0 i32.load offset=4 local.get $1 @@ -16820,16 +17252,16 @@ i32.add f32.load ) - (func $~lib/array/Array#__get (; 245 ;) (param $0 i32) (param $1 i32) (result f32) + (func $~lib/array/Array#__get (; 244 ;) (param $0 i32) (param $1 i32) (result f32) (local $2 f32) local.get $1 local.get $0 i32.load offset=12 i32.ge_u if + i32.const 512 i32.const 464 - i32.const 528 - i32.const 93 + i32.const 104 i32.const 41 call $~lib/builtins/abort unreachable @@ -16840,7 +17272,7 @@ local.set $2 local.get $2 ) - (func $~lib/map/Map#find (; 246 ;) (param $0 i32) (param $1 f32) (param $2 i32) (result i32) + (func $~lib/map/Map#find (; 245 ;) (param $0 i32) (param $1 f32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) local.get $0 @@ -16888,7 +17320,7 @@ end i32.const 0 ) - (func $~lib/map/Map#rehash (; 247 ;) (param $0 i32) (param $1 i32) + (func $~lib/map/Map#rehash (; 246 ;) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -17047,7 +17479,7 @@ local.get $5 call $~lib/rt/pure/__release ) - (func $~lib/map/Map#set (; 248 ;) (param $0 i32) (param $1 f32) (param $2 f32) (result i32) + (func $~lib/map/Map#set (; 247 ;) (param $0 i32) (param $1 f32) (param $2 f32) (result i32) (local $3 f32) (local $4 i32) (local $5 i32) @@ -17154,11 +17586,11 @@ local.get $0 call $~lib/rt/pure/__retain ) - (func $~lib/map/Map#get:size (; 249 ;) (param $0 i32) (result i32) + (func $~lib/map/Map#get:size (; 248 ;) (param $0 i32) (result i32) local.get $0 i32.load offset=20 ) - (func $~lib/map/Map#delete (; 250 ;) (param $0 i32) (param $1 f32) (result i32) + (func $~lib/map/Map#delete (; 249 ;) (param $0 i32) (param $1 f32) (result i32) (local $2 f32) (local $3 i32) (local $4 i32) @@ -17232,7 +17664,7 @@ end i32.const 1 ) - (func $std/map/testNumeric (; 251 ;) + (func $std/map/testNumeric (; 250 ;) (local $0 i32) (local $1 f32) (local $2 i32) @@ -17703,7 +18135,7 @@ local.get $0 call $~lib/rt/pure/__release ) - (func $~lib/map/Map#clear (; 252 ;) (param $0 i32) + (func $~lib/map/Map#clear (; 251 ;) (param $0 i32) (local $1 i32) (local $2 i32) local.get $0 @@ -17743,7 +18175,7 @@ i32.const 0 i32.store offset=20 ) - (func $~lib/map/Map#constructor (; 253 ;) (param $0 i32) (result i32) + (func $~lib/map/Map#constructor (; 252 ;) (param $0 i32) (result i32) local.get $0 i32.eqz if @@ -17775,7 +18207,7 @@ call $~lib/map/Map#clear local.get $0 ) - (func $~lib/map/Map#find (; 254 ;) (param $0 i32) (param $1 f64) (param $2 i32) (result i32) + (func $~lib/map/Map#find (; 253 ;) (param $0 i32) (param $1 f64) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) local.get $0 @@ -17823,7 +18255,7 @@ end i32.const 0 ) - (func $~lib/map/Map#has (; 255 ;) (param $0 i32) (param $1 f64) (result i32) + (func $~lib/map/Map#has (; 254 ;) (param $0 i32) (param $1 f64) (result i32) (local $2 f64) local.get $0 local.get $1 @@ -17839,7 +18271,7 @@ i32.const 0 i32.ne ) - (func $~lib/map/Map#rehash (; 256 ;) (param $0 i32) (param $1 i32) + (func $~lib/map/Map#rehash (; 255 ;) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -17998,7 +18430,7 @@ local.get $5 call $~lib/rt/pure/__release ) - (func $~lib/map/Map#set (; 257 ;) (param $0 i32) (param $1 f64) (param $2 i32) (result i32) + (func $~lib/map/Map#set (; 256 ;) (param $0 i32) (param $1 f64) (param $2 i32) (result i32) (local $3 f64) (local $4 i32) (local $5 i32) @@ -18105,7 +18537,7 @@ local.get $0 call $~lib/rt/pure/__retain ) - (func $~lib/map/Map#get (; 258 ;) (param $0 i32) (param $1 f64) (result i32) + (func $~lib/map/Map#get (; 257 ;) (param $0 i32) (param $1 f64) (result i32) (local $2 f64) (local $3 i32) local.get $0 @@ -18133,33 +18565,89 @@ local.get $3 i32.load offset=8 ) - (func $~lib/map/Map#get:size (; 259 ;) (param $0 i32) (result i32) + (func $~lib/map/Map#get:size (; 258 ;) (param $0 i32) (result i32) local.get $0 i32.load offset=20 ) - (func $~lib/array/Array#constructor (; 260 ;) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array#constructor (; 259 ;) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + local.get $1 + i32.const 134217726 + i32.gt_u + if + i32.const 192 + i32.const 464 + i32.const 57 + i32.const 59 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 3 + i32.shl + local.set $2 + local.get $2 + i32.const 0 + call $~lib/rt/tlsf/__alloc + local.set $3 + local.get $3 + i32.const 0 + local.get $2 + call $~lib/memory/memory.fill local.get $0 - if (result i32) - local.get $0 - else + i32.eqz + if i32.const 16 i32.const 30 call $~lib/rt/tlsf/__alloc call $~lib/rt/pure/__retain + local.set $0 end - local.get $1 - i32.const 3 - call $~lib/arraybuffer/ArrayBufferView#constructor - local.set $0 + local.get $0 + i32.const 0 + i32.store + local.get $0 + i32.const 0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=8 local.get $0 i32.const 0 i32.store offset=12 local.get $0 + local.tee $4 + local.get $3 + local.tee $5 + local.get $4 + i32.load + local.tee $6 + i32.ne + if + local.get $5 + call $~lib/rt/pure/__retain + local.set $5 + local.get $6 + call $~lib/rt/pure/__release + end + local.get $5 + i32.store + local.get $0 + local.get $3 + i32.store offset=4 + local.get $0 + local.get $2 + i32.store offset=8 + local.get $0 local.get $1 i32.store offset=12 local.get $0 ) - (func $~lib/array/Array#__unchecked_set (; 261 ;) (param $0 i32) (param $1 i32) (param $2 f64) + (func $~lib/array/Array#__unchecked_set (; 260 ;) (param $0 i32) (param $1 i32) (param $2 f64) local.get $0 i32.load offset=4 local.get $1 @@ -18169,7 +18657,7 @@ local.get $2 f64.store ) - (func $~lib/array/Array#__set (; 262 ;) (param $0 i32) (param $1 i32) (param $2 f64) + (func $~lib/array/Array#__set (; 261 ;) (param $0 i32) (param $1 i32) (param $2 f64) local.get $1 local.get $0 i32.load offset=12 @@ -18179,9 +18667,9 @@ i32.const 0 i32.lt_s if + i32.const 512 i32.const 464 - i32.const 528 - i32.const 109 + i32.const 120 i32.const 21 call $~lib/builtins/abort unreachable @@ -18203,7 +18691,7 @@ local.get $2 call $~lib/array/Array#__unchecked_set ) - (func $~lib/array/Array#set:length (; 263 ;) (param $0 i32) (param $1 i32) + (func $~lib/array/Array#set:length (; 262 ;) (param $0 i32) (param $1 i32) (local $2 i32) local.get $0 i32.load offset=12 @@ -18216,7 +18704,7 @@ local.get $1 i32.store offset=12 ) - (func $~lib/map/Map#keys (; 264 ;) (param $0 i32) (result i32) + (func $~lib/map/Map#keys (; 263 ;) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -18281,7 +18769,7 @@ call $~lib/array/Array#set:length local.get $3 ) - (func $~lib/map/Map#values (; 265 ;) (param $0 i32) (result i32) + (func $~lib/map/Map#values (; 264 ;) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -18346,7 +18834,7 @@ call $~lib/array/Array#set:length local.get $3 ) - (func $~lib/map/Map#clear (; 266 ;) (param $0 i32) + (func $~lib/map/Map#clear (; 265 ;) (param $0 i32) (local $1 i32) (local $2 i32) local.get $0 @@ -18386,7 +18874,7 @@ i32.const 0 i32.store offset=20 ) - (func $~lib/map/Map#constructor (; 267 ;) (param $0 i32) (result i32) + (func $~lib/map/Map#constructor (; 266 ;) (param $0 i32) (result i32) local.get $0 i32.eqz if @@ -18418,11 +18906,11 @@ call $~lib/map/Map#clear local.get $0 ) - (func $~lib/array/Array#get:length (; 268 ;) (param $0 i32) (result i32) + (func $~lib/array/Array#get:length (; 267 ;) (param $0 i32) (result i32) local.get $0 i32.load offset=12 ) - (func $~lib/array/Array#__unchecked_get (; 269 ;) (param $0 i32) (param $1 i32) (result f64) + (func $~lib/array/Array#__unchecked_get (; 268 ;) (param $0 i32) (param $1 i32) (result f64) local.get $0 i32.load offset=4 local.get $1 @@ -18431,16 +18919,16 @@ i32.add f64.load ) - (func $~lib/array/Array#__get (; 270 ;) (param $0 i32) (param $1 i32) (result f64) + (func $~lib/array/Array#__get (; 269 ;) (param $0 i32) (param $1 i32) (result f64) (local $2 f64) local.get $1 local.get $0 i32.load offset=12 i32.ge_u if + i32.const 512 i32.const 464 - i32.const 528 - i32.const 93 + i32.const 104 i32.const 41 call $~lib/builtins/abort unreachable @@ -18451,7 +18939,7 @@ local.set $2 local.get $2 ) - (func $~lib/map/Map#find (; 271 ;) (param $0 i32) (param $1 f64) (param $2 i32) (result i32) + (func $~lib/map/Map#find (; 270 ;) (param $0 i32) (param $1 f64) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) local.get $0 @@ -18499,7 +18987,7 @@ end i32.const 0 ) - (func $~lib/map/Map#rehash (; 272 ;) (param $0 i32) (param $1 i32) + (func $~lib/map/Map#rehash (; 271 ;) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -18658,7 +19146,7 @@ local.get $5 call $~lib/rt/pure/__release ) - (func $~lib/map/Map#set (; 273 ;) (param $0 i32) (param $1 f64) (param $2 f64) (result i32) + (func $~lib/map/Map#set (; 272 ;) (param $0 i32) (param $1 f64) (param $2 f64) (result i32) (local $3 f64) (local $4 i32) (local $5 i32) @@ -18765,11 +19253,11 @@ local.get $0 call $~lib/rt/pure/__retain ) - (func $~lib/map/Map#get:size (; 274 ;) (param $0 i32) (result i32) + (func $~lib/map/Map#get:size (; 273 ;) (param $0 i32) (result i32) local.get $0 i32.load offset=20 ) - (func $~lib/map/Map#delete (; 275 ;) (param $0 i32) (param $1 f64) (result i32) + (func $~lib/map/Map#delete (; 274 ;) (param $0 i32) (param $1 f64) (result i32) (local $2 f64) (local $3 i32) (local $4 i32) @@ -18843,7 +19331,7 @@ end i32.const 1 ) - (func $std/map/testNumeric (; 276 ;) + (func $std/map/testNumeric (; 275 ;) (local $0 i32) (local $1 f64) (local $2 i32) @@ -19314,7 +19802,7 @@ local.get $0 call $~lib/rt/pure/__release ) - (func $start:std/map (; 277 ;) + (func $start:std/map (; 276 ;) call $std/map/testNumeric call $std/map/testNumeric call $std/map/testNumeric @@ -19326,13 +19814,13 @@ call $std/map/testNumeric call $std/map/testNumeric ) - (func $~start (; 278 ;) + (func $~start (; 277 ;) call $start:std/map ) - (func $~lib/rt/pure/__collect (; 279 ;) + (func $~lib/rt/pure/__collect (; 278 ;) return ) - (func $~lib/rt/pure/decrement (; 280 ;) (param $0 i32) + (func $~lib/rt/pure/decrement (; 279 ;) (param $0 i32) (local $1 i32) (local $2 i32) local.get $0 @@ -19409,7 +19897,7 @@ i32.store offset=4 end ) - (func $~lib/rt/pure/__visit (; 281 ;) (param $0 i32) (param $1 i32) + (func $~lib/rt/pure/__visit (; 280 ;) (param $0 i32) (param $1 i32) local.get $0 global.get $~lib/heap/__heap_base i32.lt_u @@ -19433,7 +19921,7 @@ i32.sub call $~lib/rt/pure/decrement ) - (func $~lib/map/Map#__visit_impl (; 282 ;) (param $0 i32) (param $1 i32) + (func $~lib/map/Map#__visit_impl (; 281 ;) (param $0 i32) (param $1 i32) (local $2 i32) local.get $0 i32.load @@ -19446,13 +19934,19 @@ local.get $1 call $~lib/rt/pure/__visit ) - (func $~lib/array/Array#__visit_impl (; 283 ;) (param $0 i32) (param $1 i32) - nop + (func $~lib/array/Array#__visit_impl (; 282 ;) (param $0 i32) (param $1 i32) + local.get $0 + i32.load + local.get $1 + call $~lib/rt/pure/__visit ) - (func $~lib/array/Array#__visit_impl (; 284 ;) (param $0 i32) (param $1 i32) - nop + (func $~lib/array/Array#__visit_impl (; 283 ;) (param $0 i32) (param $1 i32) + local.get $0 + i32.load + local.get $1 + call $~lib/rt/pure/__visit ) - (func $~lib/map/Map#__visit_impl (; 285 ;) (param $0 i32) (param $1 i32) + (func $~lib/map/Map#__visit_impl (; 284 ;) (param $0 i32) (param $1 i32) (local $2 i32) local.get $0 i32.load @@ -19465,7 +19959,7 @@ local.get $1 call $~lib/rt/pure/__visit ) - (func $~lib/map/Map#__visit_impl (; 286 ;) (param $0 i32) (param $1 i32) + (func $~lib/map/Map#__visit_impl (; 285 ;) (param $0 i32) (param $1 i32) (local $2 i32) local.get $0 i32.load @@ -19478,7 +19972,7 @@ local.get $1 call $~lib/rt/pure/__visit ) - (func $~lib/map/Map#__visit_impl (; 287 ;) (param $0 i32) (param $1 i32) + (func $~lib/map/Map#__visit_impl (; 286 ;) (param $0 i32) (param $1 i32) (local $2 i32) local.get $0 i32.load @@ -19491,10 +19985,13 @@ local.get $1 call $~lib/rt/pure/__visit ) - (func $~lib/array/Array#__visit_impl (; 288 ;) (param $0 i32) (param $1 i32) - nop + (func $~lib/array/Array#__visit_impl (; 287 ;) (param $0 i32) (param $1 i32) + local.get $0 + i32.load + local.get $1 + call $~lib/rt/pure/__visit ) - (func $~lib/map/Map#__visit_impl (; 289 ;) (param $0 i32) (param $1 i32) + (func $~lib/map/Map#__visit_impl (; 288 ;) (param $0 i32) (param $1 i32) (local $2 i32) local.get $0 i32.load @@ -19507,7 +20004,7 @@ local.get $1 call $~lib/rt/pure/__visit ) - (func $~lib/map/Map#__visit_impl (; 290 ;) (param $0 i32) (param $1 i32) + (func $~lib/map/Map#__visit_impl (; 289 ;) (param $0 i32) (param $1 i32) (local $2 i32) local.get $0 i32.load @@ -19520,10 +20017,13 @@ local.get $1 call $~lib/rt/pure/__visit ) - (func $~lib/array/Array#__visit_impl (; 291 ;) (param $0 i32) (param $1 i32) - nop + (func $~lib/array/Array#__visit_impl (; 290 ;) (param $0 i32) (param $1 i32) + local.get $0 + i32.load + local.get $1 + call $~lib/rt/pure/__visit ) - (func $~lib/map/Map#__visit_impl (; 292 ;) (param $0 i32) (param $1 i32) + (func $~lib/map/Map#__visit_impl (; 291 ;) (param $0 i32) (param $1 i32) (local $2 i32) local.get $0 i32.load @@ -19536,7 +20036,7 @@ local.get $1 call $~lib/rt/pure/__visit ) - (func $~lib/map/Map#__visit_impl (; 293 ;) (param $0 i32) (param $1 i32) + (func $~lib/map/Map#__visit_impl (; 292 ;) (param $0 i32) (param $1 i32) (local $2 i32) local.get $0 i32.load @@ -19549,10 +20049,13 @@ local.get $1 call $~lib/rt/pure/__visit ) - (func $~lib/array/Array#__visit_impl (; 294 ;) (param $0 i32) (param $1 i32) - nop + (func $~lib/array/Array#__visit_impl (; 293 ;) (param $0 i32) (param $1 i32) + local.get $0 + i32.load + local.get $1 + call $~lib/rt/pure/__visit ) - (func $~lib/map/Map#__visit_impl (; 295 ;) (param $0 i32) (param $1 i32) + (func $~lib/map/Map#__visit_impl (; 294 ;) (param $0 i32) (param $1 i32) (local $2 i32) local.get $0 i32.load @@ -19565,7 +20068,7 @@ local.get $1 call $~lib/rt/pure/__visit ) - (func $~lib/map/Map#__visit_impl (; 296 ;) (param $0 i32) (param $1 i32) + (func $~lib/map/Map#__visit_impl (; 295 ;) (param $0 i32) (param $1 i32) (local $2 i32) local.get $0 i32.load @@ -19578,10 +20081,13 @@ local.get $1 call $~lib/rt/pure/__visit ) - (func $~lib/array/Array#__visit_impl (; 297 ;) (param $0 i32) (param $1 i32) - nop + (func $~lib/array/Array#__visit_impl (; 296 ;) (param $0 i32) (param $1 i32) + local.get $0 + i32.load + local.get $1 + call $~lib/rt/pure/__visit ) - (func $~lib/map/Map#__visit_impl (; 298 ;) (param $0 i32) (param $1 i32) + (func $~lib/map/Map#__visit_impl (; 297 ;) (param $0 i32) (param $1 i32) (local $2 i32) local.get $0 i32.load @@ -19594,7 +20100,7 @@ local.get $1 call $~lib/rt/pure/__visit ) - (func $~lib/map/Map#__visit_impl (; 299 ;) (param $0 i32) (param $1 i32) + (func $~lib/map/Map#__visit_impl (; 298 ;) (param $0 i32) (param $1 i32) (local $2 i32) local.get $0 i32.load @@ -19607,10 +20113,13 @@ local.get $1 call $~lib/rt/pure/__visit ) - (func $~lib/array/Array#__visit_impl (; 300 ;) (param $0 i32) (param $1 i32) - nop + (func $~lib/array/Array#__visit_impl (; 299 ;) (param $0 i32) (param $1 i32) + local.get $0 + i32.load + local.get $1 + call $~lib/rt/pure/__visit ) - (func $~lib/map/Map#__visit_impl (; 301 ;) (param $0 i32) (param $1 i32) + (func $~lib/map/Map#__visit_impl (; 300 ;) (param $0 i32) (param $1 i32) (local $2 i32) local.get $0 i32.load @@ -19623,7 +20132,7 @@ local.get $1 call $~lib/rt/pure/__visit ) - (func $~lib/map/Map#__visit_impl (; 302 ;) (param $0 i32) (param $1 i32) + (func $~lib/map/Map#__visit_impl (; 301 ;) (param $0 i32) (param $1 i32) (local $2 i32) local.get $0 i32.load @@ -19636,10 +20145,13 @@ local.get $1 call $~lib/rt/pure/__visit ) - (func $~lib/array/Array#__visit_impl (; 303 ;) (param $0 i32) (param $1 i32) - nop + (func $~lib/array/Array#__visit_impl (; 302 ;) (param $0 i32) (param $1 i32) + local.get $0 + i32.load + local.get $1 + call $~lib/rt/pure/__visit ) - (func $~lib/map/Map#__visit_impl (; 304 ;) (param $0 i32) (param $1 i32) + (func $~lib/map/Map#__visit_impl (; 303 ;) (param $0 i32) (param $1 i32) (local $2 i32) local.get $0 i32.load @@ -19652,7 +20164,7 @@ local.get $1 call $~lib/rt/pure/__visit ) - (func $~lib/map/Map#__visit_impl (; 305 ;) (param $0 i32) (param $1 i32) + (func $~lib/map/Map#__visit_impl (; 304 ;) (param $0 i32) (param $1 i32) (local $2 i32) local.get $0 i32.load @@ -19665,10 +20177,13 @@ local.get $1 call $~lib/rt/pure/__visit ) - (func $~lib/array/Array#__visit_impl (; 306 ;) (param $0 i32) (param $1 i32) - nop + (func $~lib/array/Array#__visit_impl (; 305 ;) (param $0 i32) (param $1 i32) + local.get $0 + i32.load + local.get $1 + call $~lib/rt/pure/__visit ) - (func $~lib/map/Map#__visit_impl (; 307 ;) (param $0 i32) (param $1 i32) + (func $~lib/map/Map#__visit_impl (; 306 ;) (param $0 i32) (param $1 i32) (local $2 i32) local.get $0 i32.load @@ -19681,7 +20196,7 @@ local.get $1 call $~lib/rt/pure/__visit ) - (func $~lib/map/Map#__visit_impl (; 308 ;) (param $0 i32) (param $1 i32) + (func $~lib/map/Map#__visit_impl (; 307 ;) (param $0 i32) (param $1 i32) (local $2 i32) local.get $0 i32.load @@ -19694,10 +20209,13 @@ local.get $1 call $~lib/rt/pure/__visit ) - (func $~lib/array/Array#__visit_impl (; 309 ;) (param $0 i32) (param $1 i32) - nop + (func $~lib/array/Array#__visit_impl (; 308 ;) (param $0 i32) (param $1 i32) + local.get $0 + i32.load + local.get $1 + call $~lib/rt/pure/__visit ) - (func $~lib/map/Map#__visit_impl (; 310 ;) (param $0 i32) (param $1 i32) + (func $~lib/map/Map#__visit_impl (; 309 ;) (param $0 i32) (param $1 i32) (local $2 i32) local.get $0 i32.load @@ -19710,206 +20228,203 @@ local.get $1 call $~lib/rt/pure/__visit ) - (func $~lib/rt/__visit_members (; 311 ;) (param $0 i32) (param $1 i32) + (func $~lib/rt/__visit_members (; 310 ;) (param $0 i32) (param $1 i32) (local $2 i32) - block $block$4$break - block $switch$1$default - block $switch$1$case$33 - block $switch$1$case$32 - block $switch$1$case$31 - block $switch$1$case$30 - block $switch$1$case$29 - block $switch$1$case$28 - block $switch$1$case$27 - block $switch$1$case$26 - block $switch$1$case$25 - block $switch$1$case$24 - block $switch$1$case$23 - block $switch$1$case$22 - block $switch$1$case$21 - block $switch$1$case$20 - block $switch$1$case$19 - block $switch$1$case$18 - block $switch$1$case$17 - block $switch$1$case$16 - block $switch$1$case$15 - block $switch$1$case$14 - block $switch$1$case$13 - block $switch$1$case$12 - block $switch$1$case$11 - block $switch$1$case$10 - block $switch$1$case$9 - block $switch$1$case$8 - block $switch$1$case$7 - block $switch$1$case$6 - block $switch$1$case$5 - block $switch$1$case$4 - block $switch$1$case$2 - local.get $0 - i32.const 8 - i32.sub - i32.load - br_table $switch$1$case$2 $switch$1$case$2 $switch$1$case$4 $switch$1$case$5 $switch$1$case$6 $switch$1$case$7 $switch$1$case$8 $switch$1$case$9 $switch$1$case$10 $switch$1$case$11 $switch$1$case$12 $switch$1$case$13 $switch$1$case$14 $switch$1$case$15 $switch$1$case$16 $switch$1$case$17 $switch$1$case$18 $switch$1$case$19 $switch$1$case$20 $switch$1$case$21 $switch$1$case$22 $switch$1$case$23 $switch$1$case$24 $switch$1$case$25 $switch$1$case$26 $switch$1$case$27 $switch$1$case$28 $switch$1$case$29 $switch$1$case$30 $switch$1$case$31 $switch$1$case$32 $switch$1$case$33 $switch$1$default - end - return + block $switch$1$default + block $switch$1$case$33 + block $switch$1$case$32 + block $switch$1$case$31 + block $switch$1$case$30 + block $switch$1$case$29 + block $switch$1$case$28 + block $switch$1$case$27 + block $switch$1$case$26 + block $switch$1$case$25 + block $switch$1$case$24 + block $switch$1$case$23 + block $switch$1$case$22 + block $switch$1$case$21 + block $switch$1$case$20 + block $switch$1$case$19 + block $switch$1$case$18 + block $switch$1$case$17 + block $switch$1$case$16 + block $switch$1$case$15 + block $switch$1$case$14 + block $switch$1$case$13 + block $switch$1$case$12 + block $switch$1$case$11 + block $switch$1$case$10 + block $switch$1$case$9 + block $switch$1$case$8 + block $switch$1$case$7 + block $switch$1$case$6 + block $switch$1$case$5 + block $switch$1$case$4 + block $switch$1$case$2 + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $switch$1$case$2 $switch$1$case$2 $switch$1$case$4 $switch$1$case$5 $switch$1$case$6 $switch$1$case$7 $switch$1$case$8 $switch$1$case$9 $switch$1$case$10 $switch$1$case$11 $switch$1$case$12 $switch$1$case$13 $switch$1$case$14 $switch$1$case$15 $switch$1$case$16 $switch$1$case$17 $switch$1$case$18 $switch$1$case$19 $switch$1$case$20 $switch$1$case$21 $switch$1$case$22 $switch$1$case$23 $switch$1$case$24 $switch$1$case$25 $switch$1$case$26 $switch$1$case$27 $switch$1$case$28 $switch$1$case$29 $switch$1$case$30 $switch$1$case$31 $switch$1$case$32 $switch$1$case$33 $switch$1$default end - br $block$4$break + return end local.get $0 - local.get $1 - call $~lib/map/Map#__visit_impl + i32.load + local.tee $2 + if + local.get $2 + local.get $1 + call $~lib/rt/pure/__visit + end return end local.get $0 local.get $1 - call $~lib/array/Array#__visit_impl - br $block$4$break + call $~lib/map/Map#__visit_impl + return end local.get $0 local.get $1 - call $~lib/array/Array#__visit_impl - br $block$4$break + call $~lib/array/Array#__visit_impl + return end local.get $0 local.get $1 - call $~lib/map/Map#__visit_impl + call $~lib/array/Array#__visit_impl return end local.get $0 local.get $1 - call $~lib/map/Map#__visit_impl + call $~lib/map/Map#__visit_impl return end local.get $0 local.get $1 - call $~lib/map/Map#__visit_impl + call $~lib/map/Map#__visit_impl return end local.get $0 local.get $1 - call $~lib/array/Array#__visit_impl - br $block$4$break + call $~lib/map/Map#__visit_impl + return end local.get $0 local.get $1 - call $~lib/map/Map#__visit_impl + call $~lib/array/Array#__visit_impl return end local.get $0 local.get $1 - call $~lib/map/Map#__visit_impl + call $~lib/map/Map#__visit_impl return end local.get $0 local.get $1 - call $~lib/array/Array#__visit_impl - br $block$4$break + call $~lib/map/Map#__visit_impl + return end local.get $0 local.get $1 - call $~lib/map/Map#__visit_impl + call $~lib/array/Array#__visit_impl return end local.get $0 local.get $1 - call $~lib/map/Map#__visit_impl + call $~lib/map/Map#__visit_impl return end local.get $0 local.get $1 - call $~lib/array/Array#__visit_impl - br $block$4$break + call $~lib/map/Map#__visit_impl + return end local.get $0 local.get $1 - call $~lib/map/Map#__visit_impl + call $~lib/array/Array#__visit_impl return end local.get $0 local.get $1 - call $~lib/map/Map#__visit_impl + call $~lib/map/Map#__visit_impl return end local.get $0 local.get $1 - call $~lib/array/Array#__visit_impl - br $block$4$break + call $~lib/map/Map#__visit_impl + return end local.get $0 local.get $1 - call $~lib/map/Map#__visit_impl + call $~lib/array/Array#__visit_impl return end local.get $0 local.get $1 - call $~lib/map/Map#__visit_impl + call $~lib/map/Map#__visit_impl return end local.get $0 local.get $1 - call $~lib/array/Array#__visit_impl - br $block$4$break + call $~lib/map/Map#__visit_impl + return end local.get $0 local.get $1 - call $~lib/map/Map#__visit_impl + call $~lib/array/Array#__visit_impl return end local.get $0 local.get $1 - call $~lib/map/Map#__visit_impl + call $~lib/map/Map#__visit_impl return end local.get $0 local.get $1 - call $~lib/array/Array#__visit_impl - br $block$4$break + call $~lib/map/Map#__visit_impl + return end local.get $0 local.get $1 - call $~lib/map/Map#__visit_impl + call $~lib/array/Array#__visit_impl return end local.get $0 local.get $1 - call $~lib/map/Map#__visit_impl + call $~lib/map/Map#__visit_impl return end local.get $0 local.get $1 - call $~lib/array/Array#__visit_impl - br $block$4$break + call $~lib/map/Map#__visit_impl + return end local.get $0 local.get $1 - call $~lib/map/Map#__visit_impl + call $~lib/array/Array#__visit_impl return end local.get $0 local.get $1 - call $~lib/map/Map#__visit_impl + call $~lib/map/Map#__visit_impl return end local.get $0 local.get $1 - call $~lib/array/Array#__visit_impl - br $block$4$break + call $~lib/map/Map#__visit_impl + return end local.get $0 local.get $1 - call $~lib/map/Map#__visit_impl + call $~lib/array/Array#__visit_impl return end - unreachable - end - local.get $0 - i32.load - local.tee $2 - if - local.get $2 + local.get $0 local.get $1 - call $~lib/rt/pure/__visit + call $~lib/map/Map#__visit_impl + return end - return + unreachable ) ) diff --git a/tests/compiler/std/set.optimized.wat b/tests/compiler/std/set.optimized.wat index 733734f5a0..197bb342f1 100644 --- a/tests/compiler/std/set.optimized.wat +++ b/tests/compiler/std/set.optimized.wat @@ -1,6 +1,6 @@ (module - (type $i32_i32_=>_none (func (param i32 i32))) (type $i32_=>_i32 (func (param i32) (result i32))) + (type $i32_i32_=>_none (func (param i32 i32))) (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) (type $none_=>_none (func)) (type $i32_=>_none (func (param i32))) @@ -37,8 +37,8 @@ (data (i32.const 176) "\1c\00\00\00\01\00\00\00\01\00\00\00\1c\00\00\00I\00n\00v\00a\00l\00i\00d\00 \00l\00e\00n\00g\00t\00h") (data (i32.const 224) "&\00\00\00\01\00\00\00\01\00\00\00&\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00b\00u\00f\00f\00e\00r\00.\00t\00s") (data (i32.const 288) "\14\00\00\00\01\00\00\00\01\00\00\00\14\00\00\00s\00t\00d\00/\00s\00e\00t\00.\00t\00s") - (data (i32.const 336) "$\00\00\00\01\00\00\00\01\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e") - (data (i32.const 400) "\1a\00\00\00\01\00\00\00\01\00\00\00\1a\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00.\00t\00s") + (data (i32.const 336) "\1a\00\00\00\01\00\00\00\01\00\00\00\1a\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00.\00t\00s") + (data (i32.const 384) "$\00\00\00\01\00\00\00\01\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e") (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) (global $~lib/rt/tlsf/collectLock (mut i32) (i32.const 0)) (export "memory" (memory $0)) @@ -1119,7 +1119,7 @@ ) (func $~lib/rt/pure/__retain (; 17 ;) (param $0 i32) (result i32) local.get $0 - i32.const 444 + i32.const 436 i32.gt_u if local.get $0 @@ -1364,7 +1364,7 @@ ) (func $~lib/rt/pure/__release (; 20 ;) (param $0 i32) local.get $0 - i32.const 444 + i32.const 436 i32.gt_u if local.get $0 @@ -1711,73 +1711,71 @@ local.get $0 call $~lib/rt/pure/__retain ) - (func $~lib/arraybuffer/ArrayBufferView#constructor (; 28 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/array/Array#constructor (; 28 ;) (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) (local $3 i32) (local $4 i32) - local.get $1 + local.get $0 i32.const 1073741808 - local.get $2 - i32.shr_u i32.gt_u if i32.const 192 - i32.const 240 - i32.const 23 - i32.const 56 + i32.const 352 + i32.const 57 + i32.const 59 call $~lib/builtins/abort unreachable end - local.get $1 - local.get $2 - i32.shl - local.tee $3 + local.get $0 i32.const 0 call $~lib/rt/tlsf/__alloc local.tee $2 - local.get $3 - call $~lib/memory/memory.fill - local.get $0 - i32.eqz - if - i32.const 12 - i32.const 2 - call $~lib/rt/tlsf/__alloc - call $~lib/rt/pure/__retain - local.set $0 - end local.get $0 + call $~lib/memory/memory.fill + i32.const 16 + i32.const 4 + call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__retain + local.tee $1 i32.const 0 i32.store - local.get $0 + local.get $1 i32.const 0 i32.store offset=4 - local.get $0 + local.get $1 i32.const 0 i32.store offset=8 + local.get $1 + i32.const 0 + i32.store offset=12 local.get $2 - local.set $1 + local.set $3 local.get $2 - local.get $0 + local.get $1 i32.load local.tee $4 i32.ne if - local.get $1 + local.get $3 call $~lib/rt/pure/__retain - local.set $1 + local.set $3 local.get $4 call $~lib/rt/pure/__release end - local.get $0 local.get $1 + local.get $3 i32.store - local.get $0 + local.get $1 local.get $2 i32.store offset=4 + local.get $1 local.get $0 - local.get $3 i32.store offset=8 + local.get $1 local.get $0 + i32.store offset=12 + local.get $1 ) (func $~lib/rt/tlsf/checkUsedBlock (; 29 ;) (param $0 i32) (result i32) (local $1 i32) @@ -2098,7 +2096,7 @@ local.get $2 call $~lib/memory/memory.copy local.get $1 - i32.const 444 + i32.const 436 i32.ge_u if local.get $1 @@ -2128,7 +2126,7 @@ i32.gt_u if i32.const 192 - i32.const 416 + i32.const 352 i32.const 14 i32.const 47 call $~lib/builtins/abort @@ -2181,9 +2179,9 @@ i32.const 0 i32.lt_s if + i32.const 400 i32.const 352 - i32.const 416 - i32.const 109 + i32.const 120 i32.const 21 call $~lib/builtins/abort unreachable @@ -2215,32 +2213,21 @@ (local $6 i32) local.get $0 i32.load offset=8 - local.set $4 + local.set $3 local.get $0 i32.load offset=16 - local.set $1 - i32.const 16 - i32.const 4 - call $~lib/rt/tlsf/__alloc - call $~lib/rt/pure/__retain - local.get $1 - i32.const 0 - call $~lib/arraybuffer/ArrayBufferView#constructor - local.tee $2 - i32.const 0 - i32.store offset=12 - local.get $2 - local.get $1 - i32.store offset=12 + local.tee $4 + call $~lib/array/Array#constructor + local.set $2 i32.const 0 local.set $0 loop $for-loop|0 - local.get $3 local.get $1 + local.get $4 i32.lt_s if - local.get $4 local.get $3 + local.get $1 i32.const 3 i32.shl i32.add @@ -2261,10 +2248,10 @@ i32.load8_s call $~lib/array/Array#__set end - local.get $3 + local.get $1 i32.const 1 i32.add - local.set $3 + local.set $1 br $for-loop|0 end end @@ -2276,9 +2263,9 @@ i32.load offset=12 i32.ge_u if + i32.const 400 i32.const 352 - i32.const 416 - i32.const 93 + i32.const 104 i32.const 41 call $~lib/builtins/abort unreachable @@ -2922,41 +2909,96 @@ local.get $0 call $~lib/rt/pure/__retain ) - (func $~lib/set/Set#values (; 43 ;) (param $0 i32) (result i32) + (func $~lib/array/Array#constructor (; 43 ;) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) - (local $5 i32) - (local $6 i32) local.get $0 - i32.load offset=8 - local.set $4 + i32.const 1073741808 + i32.gt_u + if + i32.const 192 + i32.const 352 + i32.const 57 + i32.const 59 + call $~lib/builtins/abort + unreachable + end local.get $0 - i32.load offset=16 - local.set $1 + i32.const 0 + call $~lib/rt/tlsf/__alloc + local.tee $2 + local.get $0 + call $~lib/memory/memory.fill i32.const 16 i32.const 6 call $~lib/rt/tlsf/__alloc call $~lib/rt/pure/__retain + local.tee $1 + i32.const 0 + i32.store local.get $1 i32.const 0 - call $~lib/arraybuffer/ArrayBufferView#constructor - local.tee $2 + i32.store offset=4 + local.get $1 + i32.const 0 + i32.store offset=8 + local.get $1 i32.const 0 i32.store offset=12 local.get $2 + local.set $3 + local.get $2 + local.get $1 + i32.load + local.tee $4 + i32.ne + if + local.get $3 + call $~lib/rt/pure/__retain + local.set $3 + local.get $4 + call $~lib/rt/pure/__release + end + local.get $1 + local.get $3 + i32.store + local.get $1 + local.get $2 + i32.store offset=4 local.get $1 + local.get $0 + i32.store offset=8 + local.get $1 + local.get $0 i32.store offset=12 + local.get $1 + ) + (func $~lib/set/Set#values (; 44 ;) (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + local.get $0 + i32.load offset=8 + local.set $3 + local.get $0 + i32.load offset=16 + local.tee $4 + call $~lib/array/Array#constructor + local.set $2 i32.const 0 local.set $0 loop $for-loop|0 - local.get $3 local.get $1 + local.get $4 i32.lt_s if - local.get $4 local.get $3 + local.get $1 i32.const 3 i32.shl i32.add @@ -2977,24 +3019,24 @@ i32.load8_u call $~lib/array/Array#__set end - local.get $3 + local.get $1 i32.const 1 i32.add - local.set $3 + local.set $1 br $for-loop|0 end end local.get $2 ) - (func $~lib/array/Array#__get (; 44 ;) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array#__get (; 45 ;) (param $0 i32) (param $1 i32) (result i32) local.get $1 local.get $0 i32.load offset=12 i32.ge_u if + i32.const 400 i32.const 352 - i32.const 416 - i32.const 93 + i32.const 104 i32.const 41 call $~lib/builtins/abort unreachable @@ -3005,7 +3047,7 @@ i32.add i32.load8_u ) - (func $~lib/set/Set#delete (; 45 ;) (param $0 i32) (param $1 i32) + (func $~lib/set/Set#delete (; 46 ;) (param $0 i32) (param $1 i32) (local $2 i32) local.get $0 local.get $1 @@ -3066,7 +3108,7 @@ call $~lib/set/Set#rehash end ) - (func $std/set/testNumeric (; 46 ;) + (func $std/set/testNumeric (; 47 ;) (local $0 i32) (local $1 i32) (local $2 i32) @@ -3377,7 +3419,7 @@ local.get $1 call $~lib/rt/pure/__release ) - (func $~lib/set/Set#constructor (; 47 ;) (result i32) + (func $~lib/set/Set#constructor (; 48 ;) (result i32) (local $0 i32) i32.const 24 i32.const 7 @@ -3405,7 +3447,7 @@ call $~lib/set/Set#clear local.get $0 ) - (func $~lib/util/hash/hash16 (; 48 ;) (param $0 i32) (result i32) + (func $~lib/util/hash/hash16 (; 49 ;) (param $0 i32) (result i32) local.get $0 i32.const 255 i32.and @@ -3420,7 +3462,7 @@ i32.const 16777619 i32.mul ) - (func $~lib/set/Set#find (; 49 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/set/Set#find (; 50 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $0 i32.load local.get $2 @@ -3463,7 +3505,7 @@ end i32.const 0 ) - (func $~lib/set/Set#has (; 50 ;) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/set/Set#has (; 51 ;) (param $0 i32) (param $1 i32) (result i32) local.get $0 local.get $1 local.get $1 @@ -3476,7 +3518,7 @@ i32.const 0 i32.ne ) - (func $~lib/set/Set#rehash (; 51 ;) (param $0 i32) (param $1 i32) + (func $~lib/set/Set#rehash (; 52 ;) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -3603,7 +3645,7 @@ local.get $4 call $~lib/rt/pure/__release ) - (func $~lib/set/Set#add (; 52 ;) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/set/Set#add (; 53 ;) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -3690,7 +3732,77 @@ local.get $0 call $~lib/rt/pure/__retain ) - (func $~lib/array/Array#__set (; 53 ;) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/array/Array#constructor (; 54 ;) (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 536870904 + i32.gt_u + if + i32.const 192 + i32.const 352 + i32.const 57 + i32.const 59 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 1 + i32.shl + local.tee $4 + i32.const 0 + call $~lib/rt/tlsf/__alloc + local.tee $2 + local.get $4 + call $~lib/memory/memory.fill + i32.const 16 + i32.const 8 + call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__retain + local.tee $1 + i32.const 0 + i32.store + local.get $1 + i32.const 0 + i32.store offset=4 + local.get $1 + i32.const 0 + i32.store offset=8 + local.get $1 + i32.const 0 + i32.store offset=12 + local.get $2 + local.set $3 + local.get $2 + local.get $1 + i32.load + local.tee $5 + i32.ne + if + local.get $3 + call $~lib/rt/pure/__retain + local.set $3 + local.get $5 + call $~lib/rt/pure/__release + end + local.get $1 + local.get $3 + i32.store + local.get $1 + local.get $2 + i32.store offset=4 + local.get $1 + local.get $4 + i32.store offset=8 + local.get $1 + local.get $0 + i32.store offset=12 + local.get $1 + ) + (func $~lib/array/Array#__set (; 55 ;) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) local.get $1 local.get $0 @@ -3701,9 +3813,9 @@ i32.const 0 i32.lt_s if + i32.const 400 i32.const 352 - i32.const 416 - i32.const 109 + i32.const 120 i32.const 21 call $~lib/builtins/abort unreachable @@ -3728,7 +3840,7 @@ local.get $2 i32.store16 ) - (func $~lib/set/Set#values (; 54 ;) (param $0 i32) (result i32) + (func $~lib/set/Set#values (; 56 ;) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -3737,32 +3849,21 @@ (local $6 i32) local.get $0 i32.load offset=8 - local.set $4 + local.set $3 local.get $0 i32.load offset=16 - local.set $1 - i32.const 16 - i32.const 8 - call $~lib/rt/tlsf/__alloc - call $~lib/rt/pure/__retain - local.get $1 - i32.const 1 - call $~lib/arraybuffer/ArrayBufferView#constructor - local.tee $2 - i32.const 0 - i32.store offset=12 - local.get $2 - local.get $1 - i32.store offset=12 + local.tee $4 + call $~lib/array/Array#constructor + local.set $2 i32.const 0 local.set $0 loop $for-loop|0 - local.get $3 local.get $1 + local.get $4 i32.lt_s if - local.get $4 local.get $3 + local.get $1 i32.const 3 i32.shl i32.add @@ -3783,24 +3884,24 @@ i32.load16_s call $~lib/array/Array#__set end - local.get $3 + local.get $1 i32.const 1 i32.add - local.set $3 + local.set $1 br $for-loop|0 end end local.get $2 ) - (func $~lib/array/Array#__get (; 55 ;) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array#__get (; 57 ;) (param $0 i32) (param $1 i32) (result i32) local.get $1 local.get $0 i32.load offset=12 i32.ge_u if + i32.const 400 i32.const 352 - i32.const 416 - i32.const 93 + i32.const 104 i32.const 41 call $~lib/builtins/abort unreachable @@ -3813,7 +3914,7 @@ i32.add i32.load16_s ) - (func $~lib/set/Set#delete (; 56 ;) (param $0 i32) (param $1 i32) + (func $~lib/set/Set#delete (; 58 ;) (param $0 i32) (param $1 i32) (local $2 i32) local.get $0 local.get $1 @@ -3876,7 +3977,7 @@ call $~lib/set/Set#rehash end ) - (func $std/set/testNumeric (; 57 ;) + (func $std/set/testNumeric (; 59 ;) (local $0 i32) (local $1 i32) (local $2 i32) @@ -4195,7 +4296,7 @@ local.get $1 call $~lib/rt/pure/__release ) - (func $~lib/set/Set#constructor (; 58 ;) (result i32) + (func $~lib/set/Set#constructor (; 60 ;) (result i32) (local $0 i32) i32.const 24 i32.const 9 @@ -4223,7 +4324,7 @@ call $~lib/set/Set#clear local.get $0 ) - (func $~lib/set/Set#has (; 59 ;) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/set/Set#has (; 61 ;) (param $0 i32) (param $1 i32) (result i32) local.get $0 local.get $1 local.get $1 @@ -4234,7 +4335,7 @@ i32.const 0 i32.ne ) - (func $~lib/set/Set#rehash (; 60 ;) (param $0 i32) (param $1 i32) + (func $~lib/set/Set#rehash (; 62 ;) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -4361,7 +4462,7 @@ local.get $4 call $~lib/rt/pure/__release ) - (func $~lib/set/Set#add (; 61 ;) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/set/Set#add (; 63 ;) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -4446,41 +4547,100 @@ local.get $0 call $~lib/rt/pure/__retain ) - (func $~lib/set/Set#values (; 62 ;) (param $0 i32) (result i32) + (func $~lib/array/Array#constructor (; 64 ;) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) - (local $6 i32) local.get $0 - i32.load offset=8 - local.set $4 - local.get $0 - i32.load offset=16 - local.set $1 - i32.const 16 - i32.const 10 - call $~lib/rt/tlsf/__alloc - call $~lib/rt/pure/__retain - local.get $1 + i32.const 536870904 + i32.gt_u + if + i32.const 192 + i32.const 352 + i32.const 57 + i32.const 59 + call $~lib/builtins/abort + unreachable + end + local.get $0 i32.const 1 - call $~lib/arraybuffer/ArrayBufferView#constructor + i32.shl + local.tee $4 + i32.const 0 + call $~lib/rt/tlsf/__alloc local.tee $2 + local.get $4 + call $~lib/memory/memory.fill + i32.const 16 + i32.const 10 + call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__retain + local.tee $1 + i32.const 0 + i32.store + local.get $1 + i32.const 0 + i32.store offset=4 + local.get $1 + i32.const 0 + i32.store offset=8 + local.get $1 i32.const 0 i32.store offset=12 local.get $2 + local.set $3 + local.get $2 + local.get $1 + i32.load + local.tee $5 + i32.ne + if + local.get $3 + call $~lib/rt/pure/__retain + local.set $3 + local.get $5 + call $~lib/rt/pure/__release + end + local.get $1 + local.get $3 + i32.store + local.get $1 + local.get $2 + i32.store offset=4 + local.get $1 + local.get $4 + i32.store offset=8 local.get $1 + local.get $0 i32.store offset=12 + local.get $1 + ) + (func $~lib/set/Set#values (; 65 ;) (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + local.get $0 + i32.load offset=8 + local.set $3 + local.get $0 + i32.load offset=16 + local.tee $4 + call $~lib/array/Array#constructor + local.set $2 i32.const 0 local.set $0 loop $for-loop|0 - local.get $3 local.get $1 + local.get $4 i32.lt_s if - local.get $4 local.get $3 + local.get $1 i32.const 3 i32.shl i32.add @@ -4501,24 +4661,24 @@ i32.load16_u call $~lib/array/Array#__set end - local.get $3 + local.get $1 i32.const 1 i32.add - local.set $3 + local.set $1 br $for-loop|0 end end local.get $2 ) - (func $~lib/array/Array#__get (; 63 ;) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array#__get (; 66 ;) (param $0 i32) (param $1 i32) (result i32) local.get $1 local.get $0 i32.load offset=12 i32.ge_u if + i32.const 400 i32.const 352 - i32.const 416 - i32.const 93 + i32.const 104 i32.const 41 call $~lib/builtins/abort unreachable @@ -4531,7 +4691,7 @@ i32.add i32.load16_u ) - (func $~lib/set/Set#delete (; 64 ;) (param $0 i32) (param $1 i32) + (func $~lib/set/Set#delete (; 67 ;) (param $0 i32) (param $1 i32) (local $2 i32) local.get $0 local.get $1 @@ -4592,7 +4752,7 @@ call $~lib/set/Set#rehash end ) - (func $std/set/testNumeric (; 65 ;) + (func $std/set/testNumeric (; 68 ;) (local $0 i32) (local $1 i32) (local $2 i32) @@ -4903,7 +5063,7 @@ local.get $1 call $~lib/rt/pure/__release ) - (func $~lib/set/Set#constructor (; 66 ;) (result i32) + (func $~lib/set/Set#constructor (; 69 ;) (result i32) (local $0 i32) i32.const 24 i32.const 11 @@ -4931,7 +5091,7 @@ call $~lib/set/Set#clear local.get $0 ) - (func $~lib/util/hash/hash32 (; 67 ;) (param $0 i32) (result i32) + (func $~lib/util/hash/hash32 (; 70 ;) (param $0 i32) (result i32) local.get $0 i32.const 255 i32.and @@ -4962,7 +5122,7 @@ i32.const 16777619 i32.mul ) - (func $~lib/set/Set#find (; 68 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/set/Set#find (; 71 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $0 i32.load local.get $2 @@ -5003,7 +5163,7 @@ end i32.const 0 ) - (func $~lib/set/Set#has (; 69 ;) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/set/Set#has (; 72 ;) (param $0 i32) (param $1 i32) (result i32) local.get $0 local.get $1 local.get $1 @@ -5012,7 +5172,7 @@ i32.const 0 i32.ne ) - (func $~lib/set/Set#rehash (; 70 ;) (param $0 i32) (param $1 i32) + (func $~lib/set/Set#rehash (; 73 ;) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -5139,7 +5299,7 @@ local.get $4 call $~lib/rt/pure/__release ) - (func $~lib/set/Set#add (; 71 ;) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/set/Set#add (; 74 ;) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -5222,7 +5382,77 @@ local.get $0 call $~lib/rt/pure/__retain ) - (func $~lib/array/Array#__set (; 72 ;) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/array/Array#constructor (; 75 ;) (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 268435452 + i32.gt_u + if + i32.const 192 + i32.const 352 + i32.const 57 + i32.const 59 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 2 + i32.shl + local.tee $4 + i32.const 0 + call $~lib/rt/tlsf/__alloc + local.tee $2 + local.get $4 + call $~lib/memory/memory.fill + i32.const 16 + i32.const 12 + call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__retain + local.tee $1 + i32.const 0 + i32.store + local.get $1 + i32.const 0 + i32.store offset=4 + local.get $1 + i32.const 0 + i32.store offset=8 + local.get $1 + i32.const 0 + i32.store offset=12 + local.get $2 + local.set $3 + local.get $2 + local.get $1 + i32.load + local.tee $5 + i32.ne + if + local.get $3 + call $~lib/rt/pure/__retain + local.set $3 + local.get $5 + call $~lib/rt/pure/__release + end + local.get $1 + local.get $3 + i32.store + local.get $1 + local.get $2 + i32.store offset=4 + local.get $1 + local.get $4 + i32.store offset=8 + local.get $1 + local.get $0 + i32.store offset=12 + local.get $1 + ) + (func $~lib/array/Array#__set (; 76 ;) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) local.get $1 local.get $0 @@ -5233,9 +5463,9 @@ i32.const 0 i32.lt_s if + i32.const 400 i32.const 352 - i32.const 416 - i32.const 109 + i32.const 120 i32.const 21 call $~lib/builtins/abort unreachable @@ -5260,7 +5490,7 @@ local.get $2 i32.store ) - (func $~lib/set/Set#values (; 73 ;) (param $0 i32) (result i32) + (func $~lib/set/Set#values (; 77 ;) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -5269,32 +5499,21 @@ (local $6 i32) local.get $0 i32.load offset=8 - local.set $4 + local.set $3 local.get $0 i32.load offset=16 - local.set $1 - i32.const 16 - i32.const 12 - call $~lib/rt/tlsf/__alloc - call $~lib/rt/pure/__retain - local.get $1 - i32.const 2 - call $~lib/arraybuffer/ArrayBufferView#constructor - local.tee $2 - i32.const 0 - i32.store offset=12 - local.get $2 - local.get $1 - i32.store offset=12 + local.tee $4 + call $~lib/array/Array#constructor + local.set $2 i32.const 0 local.set $0 loop $for-loop|0 - local.get $3 local.get $1 + local.get $4 i32.lt_s if - local.get $4 local.get $3 + local.get $1 i32.const 3 i32.shl i32.add @@ -5315,24 +5534,24 @@ i32.load call $~lib/array/Array#__set end - local.get $3 + local.get $1 i32.const 1 i32.add - local.set $3 + local.set $1 br $for-loop|0 end end local.get $2 ) - (func $~lib/array/Array#__get (; 74 ;) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array#__get (; 78 ;) (param $0 i32) (param $1 i32) (result i32) local.get $1 local.get $0 i32.load offset=12 i32.ge_u if + i32.const 400 i32.const 352 - i32.const 416 - i32.const 93 + i32.const 104 i32.const 41 call $~lib/builtins/abort unreachable @@ -5345,7 +5564,7 @@ i32.add i32.load ) - (func $~lib/set/Set#delete (; 75 ;) (param $0 i32) (param $1 i32) + (func $~lib/set/Set#delete (; 79 ;) (param $0 i32) (param $1 i32) (local $2 i32) local.get $0 local.get $1 @@ -5404,7 +5623,7 @@ call $~lib/set/Set#rehash end ) - (func $std/set/testNumeric (; 76 ;) + (func $std/set/testNumeric (; 80 ;) (local $0 i32) (local $1 i32) (local $2 i32) @@ -5707,7 +5926,7 @@ local.get $1 call $~lib/rt/pure/__release ) - (func $~lib/set/Set#constructor (; 77 ;) (result i32) + (func $~lib/set/Set#constructor (; 81 ;) (result i32) (local $0 i32) i32.const 24 i32.const 13 @@ -5735,41 +5954,100 @@ call $~lib/set/Set#clear local.get $0 ) - (func $~lib/set/Set#values (; 78 ;) (param $0 i32) (result i32) + (func $~lib/array/Array#constructor (; 82 ;) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) - (local $6 i32) local.get $0 - i32.load offset=8 - local.set $4 + i32.const 268435452 + i32.gt_u + if + i32.const 192 + i32.const 352 + i32.const 57 + i32.const 59 + call $~lib/builtins/abort + unreachable + end local.get $0 - i32.load offset=16 - local.set $1 + i32.const 2 + i32.shl + local.tee $4 + i32.const 0 + call $~lib/rt/tlsf/__alloc + local.tee $2 + local.get $4 + call $~lib/memory/memory.fill i32.const 16 i32.const 14 call $~lib/rt/tlsf/__alloc call $~lib/rt/pure/__retain + local.tee $1 + i32.const 0 + i32.store + local.get $1 + i32.const 0 + i32.store offset=4 + local.get $1 + i32.const 0 + i32.store offset=8 local.get $1 - i32.const 2 - call $~lib/arraybuffer/ArrayBufferView#constructor - local.tee $2 i32.const 0 i32.store offset=12 local.get $2 + local.set $3 + local.get $2 + local.get $1 + i32.load + local.tee $5 + i32.ne + if + local.get $3 + call $~lib/rt/pure/__retain + local.set $3 + local.get $5 + call $~lib/rt/pure/__release + end + local.get $1 + local.get $3 + i32.store + local.get $1 + local.get $2 + i32.store offset=4 + local.get $1 + local.get $4 + i32.store offset=8 local.get $1 + local.get $0 i32.store offset=12 + local.get $1 + ) + (func $~lib/set/Set#values (; 83 ;) (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + local.get $0 + i32.load offset=8 + local.set $3 + local.get $0 + i32.load offset=16 + local.tee $4 + call $~lib/array/Array#constructor + local.set $2 i32.const 0 local.set $0 loop $for-loop|0 - local.get $3 local.get $1 + local.get $4 i32.lt_s if - local.get $4 local.get $3 + local.get $1 i32.const 3 i32.shl i32.add @@ -5790,16 +6068,16 @@ i32.load call $~lib/array/Array#__set end - local.get $3 + local.get $1 i32.const 1 i32.add - local.set $3 + local.set $1 br $for-loop|0 end end local.get $2 ) - (func $std/set/testNumeric (; 79 ;) + (func $std/set/testNumeric (; 84 ;) (local $0 i32) (local $1 i32) (local $2 i32) @@ -6102,7 +6380,7 @@ local.get $1 call $~lib/rt/pure/__release ) - (func $~lib/set/Set#clear (; 80 ;) (param $0 i32) + (func $~lib/set/Set#clear (; 85 ;) (param $0 i32) (local $1 i32) i32.const 16 call $~lib/arraybuffer/ArrayBuffer#constructor @@ -6135,7 +6413,7 @@ i32.const 0 i32.store offset=20 ) - (func $~lib/set/Set#constructor (; 81 ;) (result i32) + (func $~lib/set/Set#constructor (; 86 ;) (result i32) (local $0 i32) i32.const 24 i32.const 15 @@ -6163,7 +6441,7 @@ call $~lib/set/Set#clear local.get $0 ) - (func $~lib/util/hash/hash64 (; 82 ;) (param $0 i64) (result i32) + (func $~lib/util/hash/hash64 (; 87 ;) (param $0 i64) (result i32) (local $1 i32) local.get $0 i32.wrap_i64 @@ -6229,7 +6507,7 @@ i32.const 16777619 i32.mul ) - (func $~lib/set/Set#find (; 83 ;) (param $0 i32) (param $1 i64) (param $2 i32) (result i32) + (func $~lib/set/Set#find (; 88 ;) (param $0 i32) (param $1 i64) (param $2 i32) (result i32) local.get $0 i32.load local.get $2 @@ -6270,7 +6548,7 @@ end i32.const 0 ) - (func $~lib/set/Set#has (; 84 ;) (param $0 i32) (param $1 i64) (result i32) + (func $~lib/set/Set#has (; 89 ;) (param $0 i32) (param $1 i64) (result i32) local.get $0 local.get $1 local.get $1 @@ -6279,7 +6557,7 @@ i32.const 0 i32.ne ) - (func $~lib/set/Set#rehash (; 85 ;) (param $0 i32) (param $1 i32) + (func $~lib/set/Set#rehash (; 90 ;) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -6406,7 +6684,7 @@ local.get $4 call $~lib/rt/pure/__release ) - (func $~lib/set/Set#add (; 86 ;) (param $0 i32) (param $1 i64) (result i32) + (func $~lib/set/Set#add (; 91 ;) (param $0 i32) (param $1 i64) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -6489,20 +6767,90 @@ local.get $0 call $~lib/rt/pure/__retain ) - (func $~lib/array/Array#__set (; 87 ;) (param $0 i32) (param $1 i32) (param $2 i64) + (func $~lib/array/Array#constructor (; 92 ;) (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) (local $3 i32) - local.get $1 + (local $4 i32) + (local $5 i32) local.get $0 - i32.load offset=12 - i32.ge_u + i32.const 134217726 + i32.gt_u if - local.get $1 - i32.const 0 - i32.lt_s + i32.const 192 + i32.const 352 + i32.const 57 + i32.const 59 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 3 + i32.shl + local.tee $4 + i32.const 0 + call $~lib/rt/tlsf/__alloc + local.tee $2 + local.get $4 + call $~lib/memory/memory.fill + i32.const 16 + i32.const 16 + call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__retain + local.tee $1 + i32.const 0 + i32.store + local.get $1 + i32.const 0 + i32.store offset=4 + local.get $1 + i32.const 0 + i32.store offset=8 + local.get $1 + i32.const 0 + i32.store offset=12 + local.get $2 + local.set $3 + local.get $2 + local.get $1 + i32.load + local.tee $5 + i32.ne + if + local.get $3 + call $~lib/rt/pure/__retain + local.set $3 + local.get $5 + call $~lib/rt/pure/__release + end + local.get $1 + local.get $3 + i32.store + local.get $1 + local.get $2 + i32.store offset=4 + local.get $1 + local.get $4 + i32.store offset=8 + local.get $1 + local.get $0 + i32.store offset=12 + local.get $1 + ) + (func $~lib/array/Array#__set (; 93 ;) (param $0 i32) (param $1 i32) (param $2 i64) + (local $3 i32) + local.get $1 + local.get $0 + i32.load offset=12 + i32.ge_u + if + local.get $1 + i32.const 0 + i32.lt_s if + i32.const 400 i32.const 352 - i32.const 416 - i32.const 109 + i32.const 120 i32.const 21 call $~lib/builtins/abort unreachable @@ -6527,7 +6875,7 @@ local.get $2 i64.store ) - (func $~lib/set/Set#values (; 88 ;) (param $0 i32) (result i32) + (func $~lib/set/Set#values (; 94 ;) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -6536,32 +6884,21 @@ (local $6 i32) local.get $0 i32.load offset=8 - local.set $4 + local.set $3 local.get $0 i32.load offset=16 - local.set $1 - i32.const 16 - i32.const 16 - call $~lib/rt/tlsf/__alloc - call $~lib/rt/pure/__retain - local.get $1 - i32.const 3 - call $~lib/arraybuffer/ArrayBufferView#constructor - local.tee $2 - i32.const 0 - i32.store offset=12 - local.get $2 - local.get $1 - i32.store offset=12 + local.tee $4 + call $~lib/array/Array#constructor + local.set $2 i32.const 0 local.set $0 loop $for-loop|0 - local.get $3 local.get $1 + local.get $4 i32.lt_s if - local.get $4 local.get $3 + local.get $1 i32.const 4 i32.shl i32.add @@ -6582,24 +6919,24 @@ i64.load call $~lib/array/Array#__set end - local.get $3 + local.get $1 i32.const 1 i32.add - local.set $3 + local.set $1 br $for-loop|0 end end local.get $2 ) - (func $~lib/array/Array#__get (; 89 ;) (param $0 i32) (param $1 i32) (result i64) + (func $~lib/array/Array#__get (; 95 ;) (param $0 i32) (param $1 i32) (result i64) local.get $1 local.get $0 i32.load offset=12 i32.ge_u if + i32.const 400 i32.const 352 - i32.const 416 - i32.const 93 + i32.const 104 i32.const 41 call $~lib/builtins/abort unreachable @@ -6612,7 +6949,7 @@ i32.add i64.load ) - (func $~lib/set/Set#delete (; 90 ;) (param $0 i32) (param $1 i64) + (func $~lib/set/Set#delete (; 96 ;) (param $0 i32) (param $1 i64) (local $2 i32) (local $3 i32) local.get $0 @@ -6672,7 +7009,7 @@ call $~lib/set/Set#rehash end ) - (func $std/set/testNumeric (; 91 ;) + (func $std/set/testNumeric (; 97 ;) (local $0 i64) (local $1 i32) (local $2 i32) @@ -6974,7 +7311,7 @@ local.get $1 call $~lib/rt/pure/__release ) - (func $~lib/set/Set#constructor (; 92 ;) (result i32) + (func $~lib/set/Set#constructor (; 98 ;) (result i32) (local $0 i32) i32.const 24 i32.const 17 @@ -7002,41 +7339,100 @@ call $~lib/set/Set#clear local.get $0 ) - (func $~lib/set/Set#values (; 93 ;) (param $0 i32) (result i32) + (func $~lib/array/Array#constructor (; 99 ;) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) - (local $6 i32) local.get $0 - i32.load offset=8 - local.set $4 + i32.const 134217726 + i32.gt_u + if + i32.const 192 + i32.const 352 + i32.const 57 + i32.const 59 + call $~lib/builtins/abort + unreachable + end local.get $0 - i32.load offset=16 - local.set $1 + i32.const 3 + i32.shl + local.tee $4 + i32.const 0 + call $~lib/rt/tlsf/__alloc + local.tee $2 + local.get $4 + call $~lib/memory/memory.fill i32.const 16 i32.const 18 call $~lib/rt/tlsf/__alloc call $~lib/rt/pure/__retain + local.tee $1 + i32.const 0 + i32.store + local.get $1 + i32.const 0 + i32.store offset=4 + local.get $1 + i32.const 0 + i32.store offset=8 local.get $1 - i32.const 3 - call $~lib/arraybuffer/ArrayBufferView#constructor - local.tee $2 i32.const 0 i32.store offset=12 local.get $2 + local.set $3 + local.get $2 + local.get $1 + i32.load + local.tee $5 + i32.ne + if + local.get $3 + call $~lib/rt/pure/__retain + local.set $3 + local.get $5 + call $~lib/rt/pure/__release + end + local.get $1 + local.get $3 + i32.store + local.get $1 + local.get $2 + i32.store offset=4 + local.get $1 + local.get $4 + i32.store offset=8 local.get $1 + local.get $0 i32.store offset=12 + local.get $1 + ) + (func $~lib/set/Set#values (; 100 ;) (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + local.get $0 + i32.load offset=8 + local.set $3 + local.get $0 + i32.load offset=16 + local.tee $4 + call $~lib/array/Array#constructor + local.set $2 i32.const 0 local.set $0 loop $for-loop|0 - local.get $3 local.get $1 + local.get $4 i32.lt_s if - local.get $4 local.get $3 + local.get $1 i32.const 4 i32.shl i32.add @@ -7057,16 +7453,16 @@ i64.load call $~lib/array/Array#__set end - local.get $3 + local.get $1 i32.const 1 i32.add - local.set $3 + local.set $1 br $for-loop|0 end end local.get $2 ) - (func $std/set/testNumeric (; 94 ;) + (func $std/set/testNumeric (; 101 ;) (local $0 i64) (local $1 i32) (local $2 i32) @@ -7368,7 +7764,7 @@ local.get $1 call $~lib/rt/pure/__release ) - (func $~lib/set/Set#constructor (; 95 ;) (result i32) + (func $~lib/set/Set#constructor (; 102 ;) (result i32) (local $0 i32) i32.const 24 i32.const 19 @@ -7396,7 +7792,7 @@ call $~lib/set/Set#clear local.get $0 ) - (func $~lib/set/Set#find (; 96 ;) (param $0 i32) (param $1 f32) (param $2 i32) (result i32) + (func $~lib/set/Set#find (; 103 ;) (param $0 i32) (param $1 f32) (param $2 i32) (result i32) local.get $0 i32.load local.get $2 @@ -7437,7 +7833,7 @@ end i32.const 0 ) - (func $~lib/set/Set#has (; 97 ;) (param $0 i32) (param $1 f32) (result i32) + (func $~lib/set/Set#has (; 104 ;) (param $0 i32) (param $1 f32) (result i32) local.get $0 local.get $1 local.get $1 @@ -7447,7 +7843,7 @@ i32.const 0 i32.ne ) - (func $~lib/set/Set#rehash (; 98 ;) (param $0 i32) (param $1 i32) + (func $~lib/set/Set#rehash (; 105 ;) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -7575,7 +7971,7 @@ local.get $4 call $~lib/rt/pure/__release ) - (func $~lib/set/Set#add (; 99 ;) (param $0 i32) (param $1 f32) (result i32) + (func $~lib/set/Set#add (; 106 ;) (param $0 i32) (param $1 f32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -7659,7 +8055,77 @@ local.get $0 call $~lib/rt/pure/__retain ) - (func $~lib/array/Array#__set (; 100 ;) (param $0 i32) (param $1 i32) (param $2 f32) + (func $~lib/array/Array#constructor (; 107 ;) (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 268435452 + i32.gt_u + if + i32.const 192 + i32.const 352 + i32.const 57 + i32.const 59 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 2 + i32.shl + local.tee $4 + i32.const 0 + call $~lib/rt/tlsf/__alloc + local.tee $2 + local.get $4 + call $~lib/memory/memory.fill + i32.const 16 + i32.const 20 + call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__retain + local.tee $1 + i32.const 0 + i32.store + local.get $1 + i32.const 0 + i32.store offset=4 + local.get $1 + i32.const 0 + i32.store offset=8 + local.get $1 + i32.const 0 + i32.store offset=12 + local.get $2 + local.set $3 + local.get $2 + local.get $1 + i32.load + local.tee $5 + i32.ne + if + local.get $3 + call $~lib/rt/pure/__retain + local.set $3 + local.get $5 + call $~lib/rt/pure/__release + end + local.get $1 + local.get $3 + i32.store + local.get $1 + local.get $2 + i32.store offset=4 + local.get $1 + local.get $4 + i32.store offset=8 + local.get $1 + local.get $0 + i32.store offset=12 + local.get $1 + ) + (func $~lib/array/Array#__set (; 108 ;) (param $0 i32) (param $1 i32) (param $2 f32) (local $3 i32) local.get $1 local.get $0 @@ -7670,9 +8136,9 @@ i32.const 0 i32.lt_s if + i32.const 400 i32.const 352 - i32.const 416 - i32.const 109 + i32.const 120 i32.const 21 call $~lib/builtins/abort unreachable @@ -7697,7 +8163,7 @@ local.get $2 f32.store ) - (func $~lib/set/Set#values (; 101 ;) (param $0 i32) (result i32) + (func $~lib/set/Set#values (; 109 ;) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -7706,32 +8172,21 @@ (local $6 i32) local.get $0 i32.load offset=8 - local.set $4 + local.set $3 local.get $0 i32.load offset=16 - local.set $1 - i32.const 16 - i32.const 20 - call $~lib/rt/tlsf/__alloc - call $~lib/rt/pure/__retain - local.get $1 - i32.const 2 - call $~lib/arraybuffer/ArrayBufferView#constructor - local.tee $2 - i32.const 0 - i32.store offset=12 - local.get $2 - local.get $1 - i32.store offset=12 + local.tee $4 + call $~lib/array/Array#constructor + local.set $2 i32.const 0 local.set $0 loop $for-loop|0 - local.get $3 local.get $1 + local.get $4 i32.lt_s if - local.get $4 local.get $3 + local.get $1 i32.const 3 i32.shl i32.add @@ -7752,24 +8207,24 @@ f32.load call $~lib/array/Array#__set end - local.get $3 + local.get $1 i32.const 1 i32.add - local.set $3 + local.set $1 br $for-loop|0 end end local.get $2 ) - (func $~lib/array/Array#__get (; 102 ;) (param $0 i32) (param $1 i32) (result f32) + (func $~lib/array/Array#__get (; 110 ;) (param $0 i32) (param $1 i32) (result f32) local.get $1 local.get $0 i32.load offset=12 i32.ge_u if + i32.const 400 i32.const 352 - i32.const 416 - i32.const 93 + i32.const 104 i32.const 41 call $~lib/builtins/abort unreachable @@ -7782,7 +8237,7 @@ i32.add f32.load ) - (func $~lib/set/Set#delete (; 103 ;) (param $0 i32) (param $1 f32) + (func $~lib/set/Set#delete (; 111 ;) (param $0 i32) (param $1 f32) (local $2 i32) (local $3 i32) local.get $0 @@ -7843,7 +8298,7 @@ call $~lib/set/Set#rehash end ) - (func $std/set/testNumeric (; 104 ;) + (func $std/set/testNumeric (; 112 ;) (local $0 f32) (local $1 i32) (local $2 i32) @@ -8145,7 +8600,7 @@ local.get $1 call $~lib/rt/pure/__release ) - (func $~lib/set/Set#constructor (; 105 ;) (result i32) + (func $~lib/set/Set#constructor (; 113 ;) (result i32) (local $0 i32) i32.const 24 i32.const 21 @@ -8173,7 +8628,7 @@ call $~lib/set/Set#clear local.get $0 ) - (func $~lib/set/Set#find (; 106 ;) (param $0 i32) (param $1 f64) (param $2 i32) (result i32) + (func $~lib/set/Set#find (; 114 ;) (param $0 i32) (param $1 f64) (param $2 i32) (result i32) local.get $0 i32.load local.get $2 @@ -8214,7 +8669,7 @@ end i32.const 0 ) - (func $~lib/set/Set#has (; 107 ;) (param $0 i32) (param $1 f64) (result i32) + (func $~lib/set/Set#has (; 115 ;) (param $0 i32) (param $1 f64) (result i32) local.get $0 local.get $1 local.get $1 @@ -8224,7 +8679,7 @@ i32.const 0 i32.ne ) - (func $~lib/set/Set#rehash (; 108 ;) (param $0 i32) (param $1 i32) + (func $~lib/set/Set#rehash (; 116 ;) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -8352,7 +8807,7 @@ local.get $4 call $~lib/rt/pure/__release ) - (func $~lib/set/Set#add (; 109 ;) (param $0 i32) (param $1 f64) (result i32) + (func $~lib/set/Set#add (; 117 ;) (param $0 i32) (param $1 f64) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -8436,7 +8891,77 @@ local.get $0 call $~lib/rt/pure/__retain ) - (func $~lib/array/Array#__set (; 110 ;) (param $0 i32) (param $1 i32) (param $2 f64) + (func $~lib/array/Array#constructor (; 118 ;) (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 134217726 + i32.gt_u + if + i32.const 192 + i32.const 352 + i32.const 57 + i32.const 59 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 3 + i32.shl + local.tee $4 + i32.const 0 + call $~lib/rt/tlsf/__alloc + local.tee $2 + local.get $4 + call $~lib/memory/memory.fill + i32.const 16 + i32.const 22 + call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__retain + local.tee $1 + i32.const 0 + i32.store + local.get $1 + i32.const 0 + i32.store offset=4 + local.get $1 + i32.const 0 + i32.store offset=8 + local.get $1 + i32.const 0 + i32.store offset=12 + local.get $2 + local.set $3 + local.get $2 + local.get $1 + i32.load + local.tee $5 + i32.ne + if + local.get $3 + call $~lib/rt/pure/__retain + local.set $3 + local.get $5 + call $~lib/rt/pure/__release + end + local.get $1 + local.get $3 + i32.store + local.get $1 + local.get $2 + i32.store offset=4 + local.get $1 + local.get $4 + i32.store offset=8 + local.get $1 + local.get $0 + i32.store offset=12 + local.get $1 + ) + (func $~lib/array/Array#__set (; 119 ;) (param $0 i32) (param $1 i32) (param $2 f64) (local $3 i32) local.get $1 local.get $0 @@ -8447,9 +8972,9 @@ i32.const 0 i32.lt_s if + i32.const 400 i32.const 352 - i32.const 416 - i32.const 109 + i32.const 120 i32.const 21 call $~lib/builtins/abort unreachable @@ -8474,7 +8999,7 @@ local.get $2 f64.store ) - (func $~lib/set/Set#values (; 111 ;) (param $0 i32) (result i32) + (func $~lib/set/Set#values (; 120 ;) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -8483,32 +9008,21 @@ (local $6 i32) local.get $0 i32.load offset=8 - local.set $4 + local.set $3 local.get $0 i32.load offset=16 - local.set $1 - i32.const 16 - i32.const 22 - call $~lib/rt/tlsf/__alloc - call $~lib/rt/pure/__retain - local.get $1 - i32.const 3 - call $~lib/arraybuffer/ArrayBufferView#constructor - local.tee $2 - i32.const 0 - i32.store offset=12 - local.get $2 - local.get $1 - i32.store offset=12 + local.tee $4 + call $~lib/array/Array#constructor + local.set $2 i32.const 0 local.set $0 loop $for-loop|0 - local.get $3 local.get $1 + local.get $4 i32.lt_s if - local.get $4 local.get $3 + local.get $1 i32.const 4 i32.shl i32.add @@ -8529,24 +9043,24 @@ f64.load call $~lib/array/Array#__set end - local.get $3 + local.get $1 i32.const 1 i32.add - local.set $3 + local.set $1 br $for-loop|0 end end local.get $2 ) - (func $~lib/array/Array#__get (; 112 ;) (param $0 i32) (param $1 i32) (result f64) + (func $~lib/array/Array#__get (; 121 ;) (param $0 i32) (param $1 i32) (result f64) local.get $1 local.get $0 i32.load offset=12 i32.ge_u if + i32.const 400 i32.const 352 - i32.const 416 - i32.const 93 + i32.const 104 i32.const 41 call $~lib/builtins/abort unreachable @@ -8559,7 +9073,7 @@ i32.add f64.load ) - (func $~lib/set/Set#delete (; 113 ;) (param $0 i32) (param $1 f64) + (func $~lib/set/Set#delete (; 122 ;) (param $0 i32) (param $1 f64) (local $2 i32) (local $3 i32) local.get $0 @@ -8620,7 +9134,7 @@ call $~lib/set/Set#rehash end ) - (func $std/set/testNumeric (; 114 ;) + (func $std/set/testNumeric (; 123 ;) (local $0 f64) (local $1 i32) (local $2 i32) @@ -8922,7 +9436,7 @@ local.get $1 call $~lib/rt/pure/__release ) - (func $~start (; 115 ;) + (func $~start (; 124 ;) call $std/set/testNumeric call $std/set/testNumeric call $std/set/testNumeric @@ -8934,7 +9448,7 @@ call $std/set/testNumeric call $std/set/testNumeric ) - (func $~lib/rt/pure/decrement (; 116 ;) (param $0 i32) + (func $~lib/rt/pure/decrement (; 125 ;) (param $0 i32) (local $1 i32) (local $2 i32) local.get $0 @@ -9002,9 +9516,9 @@ i32.store offset=4 end ) - (func $~lib/rt/pure/__visit (; 117 ;) (param $0 i32) + (func $~lib/rt/pure/__visit (; 126 ;) (param $0 i32) local.get $0 - i32.const 444 + i32.const 436 i32.lt_u if return @@ -9014,16 +9528,26 @@ i32.sub call $~lib/rt/pure/decrement ) - (func $~lib/rt/__visit_members (; 118 ;) (param $0 i32) - block $folding-inner0 - block $block$4$break + (func $~lib/rt/__visit_members (; 127 ;) (param $0 i32) + block $folding-inner1 + block $folding-inner0 block $switch$1$default - block $switch$1$case$2 + block $switch$1$case$4 + block $switch$1$case$2 + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $switch$1$case$2 $switch$1$case$2 $switch$1$case$4 $folding-inner0 $folding-inner1 $folding-inner0 $folding-inner1 $folding-inner0 $folding-inner1 $folding-inner0 $folding-inner1 $folding-inner0 $folding-inner1 $folding-inner0 $folding-inner1 $folding-inner0 $folding-inner1 $folding-inner0 $folding-inner1 $folding-inner0 $folding-inner1 $folding-inner0 $folding-inner1 $switch$1$default + end + return + end + local.get $0 + i32.load + local.tee $0 + if local.get $0 - i32.const 8 - i32.sub - i32.load - br_table $switch$1$case$2 $switch$1$case$2 $block$4$break $folding-inner0 $block$4$break $folding-inner0 $block$4$break $folding-inner0 $block$4$break $folding-inner0 $block$4$break $folding-inner0 $block$4$break $folding-inner0 $block$4$break $folding-inner0 $block$4$break $folding-inner0 $block$4$break $folding-inner0 $block$4$break $folding-inner0 $block$4$break $switch$1$default + call $~lib/rt/pure/__visit end return end @@ -9031,18 +9555,14 @@ end local.get $0 i32.load - local.tee $0 - if - local.get $0 - call $~lib/rt/pure/__visit - end + call $~lib/rt/pure/__visit + local.get $0 + i32.load offset=8 + call $~lib/rt/pure/__visit return end local.get $0 i32.load call $~lib/rt/pure/__visit - local.get $0 - i32.load offset=8 - call $~lib/rt/pure/__visit ) ) diff --git a/tests/compiler/std/set.untouched.wat b/tests/compiler/std/set.untouched.wat index 53d2732bd0..38cf1c3114 100644 --- a/tests/compiler/std/set.untouched.wat +++ b/tests/compiler/std/set.untouched.wat @@ -34,14 +34,14 @@ (data (i32.const 176) "\1c\00\00\00\01\00\00\00\01\00\00\00\1c\00\00\00I\00n\00v\00a\00l\00i\00d\00 \00l\00e\00n\00g\00t\00h\00") (data (i32.const 224) "&\00\00\00\01\00\00\00\01\00\00\00&\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00b\00u\00f\00f\00e\00r\00.\00t\00s\00") (data (i32.const 288) "\14\00\00\00\01\00\00\00\01\00\00\00\14\00\00\00s\00t\00d\00/\00s\00e\00t\00.\00t\00s\00") - (data (i32.const 336) "$\00\00\00\01\00\00\00\01\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e\00") - (data (i32.const 400) "\1a\00\00\00\01\00\00\00\01\00\00\00\1a\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00.\00t\00s\00") + (data (i32.const 336) "\1a\00\00\00\01\00\00\00\01\00\00\00\1a\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00.\00t\00s\00") + (data (i32.const 384) "$\00\00\00\01\00\00\00\01\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e\00") (table $0 1 funcref) (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) (global $~lib/rt/tlsf/collectLock (mut i32) (i32.const 0)) (global $~lib/gc/gc.auto (mut i32) (i32.const 1)) (global $~lib/ASC_SHRINK_LEVEL i32 (i32.const 0)) - (global $~lib/heap/__heap_base i32 (i32.const 444)) + (global $~lib/heap/__heap_base i32 (i32.const 436)) (export "memory" (memory $0)) (start $~start) (func $~lib/rt/tlsf/removeBlock (; 6 ;) (param $0 i32) (param $1 i32) @@ -2172,40 +2172,40 @@ local.get $0 i32.load offset=20 ) - (func $~lib/arraybuffer/ArrayBufferView#constructor (; 29 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/array/Array#constructor (; 29 ;) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) (local $6 i32) local.get $1 i32.const 1073741808 - local.get $2 - i32.shr_u i32.gt_u if i32.const 192 - i32.const 240 - i32.const 23 - i32.const 56 + i32.const 352 + i32.const 57 + i32.const 59 call $~lib/builtins/abort unreachable end local.get $1 - local.get $2 + i32.const 0 i32.shl - local.tee $1 + local.set $2 + local.get $2 i32.const 0 call $~lib/rt/tlsf/__alloc local.set $3 local.get $3 i32.const 0 - local.get $1 + local.get $2 call $~lib/memory/memory.fill local.get $0 i32.eqz if - i32.const 12 - i32.const 2 + i32.const 16 + i32.const 4 call $~lib/rt/tlsf/__alloc call $~lib/rt/pure/__retain local.set $0 @@ -2220,6 +2220,9 @@ i32.const 0 i32.store offset=8 local.get $0 + i32.const 0 + i32.store offset=12 + local.get $0 local.tee $4 local.get $3 local.tee $5 @@ -2240,33 +2243,14 @@ local.get $3 i32.store offset=4 local.get $0 - local.get $1 + local.get $2 i32.store offset=8 local.get $0 - ) - (func $~lib/array/Array#constructor (; 30 ;) (param $0 i32) (param $1 i32) (result i32) - local.get $0 - if (result i32) - local.get $0 - else - i32.const 16 - i32.const 4 - call $~lib/rt/tlsf/__alloc - call $~lib/rt/pure/__retain - end - local.get $1 - i32.const 0 - call $~lib/arraybuffer/ArrayBufferView#constructor - local.set $0 - local.get $0 - i32.const 0 - i32.store offset=12 - local.get $0 local.get $1 i32.store offset=12 local.get $0 ) - (func $~lib/rt/tlsf/checkUsedBlock (; 31 ;) (param $0 i32) (result i32) + (func $~lib/rt/tlsf/checkUsedBlock (; 30 ;) (param $0 i32) (result i32) (local $1 i32) local.get $0 i32.const 16 @@ -2312,7 +2296,7 @@ end local.get $1 ) - (func $~lib/util/memory/memcpy (; 32 ;) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/util/memory/memcpy (; 31 ;) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -3336,7 +3320,7 @@ i32.store8 end ) - (func $~lib/memory/memory.copy (; 33 ;) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/memory/memory.copy (; 32 ;) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -3556,7 +3540,7 @@ end end ) - (func $~lib/rt/tlsf/freeBlock (; 34 ;) (param $0 i32) (param $1 i32) + (func $~lib/rt/tlsf/freeBlock (; 33 ;) (param $0 i32) (param $1 i32) (local $2 i32) local.get $1 i32.load @@ -3572,7 +3556,7 @@ local.get $1 call $~lib/rt/rtrace/onfree ) - (func $~lib/rt/tlsf/reallocateBlock (; 35 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/rt/tlsf/reallocateBlock (; 34 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -3691,7 +3675,7 @@ end local.get $8 ) - (func $~lib/rt/tlsf/__realloc (; 36 ;) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/rt/tlsf/__realloc (; 35 ;) (param $0 i32) (param $1 i32) (result i32) call $~lib/rt/tlsf/maybeInitialize local.get $0 call $~lib/rt/tlsf/checkUsedBlock @@ -3700,7 +3684,7 @@ i32.const 16 i32.add ) - (func $~lib/array/ensureSize (; 37 ;) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/array/ensureSize (; 36 ;) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -3721,7 +3705,7 @@ i32.gt_u if i32.const 192 - i32.const 416 + i32.const 352 i32.const 14 i32.const 47 call $~lib/builtins/abort @@ -3762,7 +3746,7 @@ i32.store offset=8 end ) - (func $~lib/array/Array#__unchecked_set (; 38 ;) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/array/Array#__unchecked_set (; 37 ;) (param $0 i32) (param $1 i32) (param $2 i32) local.get $0 i32.load offset=4 local.get $1 @@ -3772,7 +3756,7 @@ local.get $2 i32.store8 ) - (func $~lib/array/Array#__set (; 39 ;) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/array/Array#__set (; 38 ;) (param $0 i32) (param $1 i32) (param $2 i32) local.get $1 local.get $0 i32.load offset=12 @@ -3782,9 +3766,9 @@ i32.const 0 i32.lt_s if + i32.const 400 i32.const 352 - i32.const 416 - i32.const 109 + i32.const 120 i32.const 21 call $~lib/builtins/abort unreachable @@ -3806,7 +3790,7 @@ local.get $2 call $~lib/array/Array#__unchecked_set ) - (func $~lib/set/Set#values (; 40 ;) (param $0 i32) (result i32) + (func $~lib/set/Set#values (; 39 ;) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -3868,11 +3852,11 @@ end local.get $3 ) - (func $~lib/array/Array#get:length (; 41 ;) (param $0 i32) (result i32) + (func $~lib/array/Array#get:length (; 40 ;) (param $0 i32) (result i32) local.get $0 i32.load offset=12 ) - (func $~lib/array/Array#__unchecked_get (; 42 ;) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array#__unchecked_get (; 41 ;) (param $0 i32) (param $1 i32) (result i32) local.get $0 i32.load offset=4 local.get $1 @@ -3881,16 +3865,16 @@ i32.add i32.load8_s ) - (func $~lib/array/Array#__get (; 43 ;) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array#__get (; 42 ;) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) local.get $1 local.get $0 i32.load offset=12 i32.ge_u if + i32.const 400 i32.const 352 - i32.const 416 - i32.const 93 + i32.const 104 i32.const 41 call $~lib/builtins/abort unreachable @@ -3901,7 +3885,7 @@ local.set $2 local.get $2 ) - (func $~lib/set/Set#delete (; 44 ;) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/set/Set#delete (; 43 ;) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -3977,7 +3961,7 @@ end i32.const 1 ) - (func $std/set/testNumeric (; 45 ;) + (func $std/set/testNumeric (; 44 ;) (local $0 i32) (local $1 i32) (local $2 i32) @@ -4333,7 +4317,7 @@ local.get $0 call $~lib/rt/pure/__release ) - (func $~lib/set/Set#clear (; 46 ;) (param $0 i32) + (func $~lib/set/Set#clear (; 45 ;) (param $0 i32) (local $1 i32) (local $2 i32) local.get $0 @@ -4373,7 +4357,7 @@ i32.const 0 i32.store offset=20 ) - (func $~lib/set/Set#constructor (; 47 ;) (param $0 i32) (result i32) + (func $~lib/set/Set#constructor (; 46 ;) (param $0 i32) (result i32) local.get $0 i32.eqz if @@ -4405,7 +4389,7 @@ call $~lib/set/Set#clear local.get $0 ) - (func $~lib/set/Set#find (; 48 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/set/Set#find (; 47 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) local.get $0 @@ -4455,7 +4439,7 @@ end i32.const 0 ) - (func $~lib/set/Set#has (; 49 ;) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/set/Set#has (; 48 ;) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) local.get $0 local.get $1 @@ -4472,7 +4456,7 @@ i32.const 0 i32.ne ) - (func $~lib/set/Set#rehash (; 50 ;) (param $0 i32) (param $1 i32) + (func $~lib/set/Set#rehash (; 49 ;) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -4625,7 +4609,7 @@ local.get $5 call $~lib/rt/pure/__release ) - (func $~lib/set/Set#add (; 51 ;) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/set/Set#add (; 50 ;) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -4720,33 +4704,89 @@ local.get $0 call $~lib/rt/pure/__retain ) - (func $~lib/set/Set#get:size (; 52 ;) (param $0 i32) (result i32) + (func $~lib/set/Set#get:size (; 51 ;) (param $0 i32) (result i32) local.get $0 i32.load offset=20 ) - (func $~lib/array/Array#constructor (; 53 ;) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array#constructor (; 52 ;) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + local.get $1 + i32.const 1073741808 + i32.gt_u + if + i32.const 192 + i32.const 352 + i32.const 57 + i32.const 59 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 0 + i32.shl + local.set $2 + local.get $2 + i32.const 0 + call $~lib/rt/tlsf/__alloc + local.set $3 + local.get $3 + i32.const 0 + local.get $2 + call $~lib/memory/memory.fill local.get $0 - if (result i32) - local.get $0 - else + i32.eqz + if i32.const 16 i32.const 6 call $~lib/rt/tlsf/__alloc call $~lib/rt/pure/__retain + local.set $0 end - local.get $1 + local.get $0 i32.const 0 - call $~lib/arraybuffer/ArrayBufferView#constructor - local.set $0 + i32.store + local.get $0 + i32.const 0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=8 local.get $0 i32.const 0 i32.store offset=12 local.get $0 + local.tee $4 + local.get $3 + local.tee $5 + local.get $4 + i32.load + local.tee $6 + i32.ne + if + local.get $5 + call $~lib/rt/pure/__retain + local.set $5 + local.get $6 + call $~lib/rt/pure/__release + end + local.get $5 + i32.store + local.get $0 + local.get $3 + i32.store offset=4 + local.get $0 + local.get $2 + i32.store offset=8 + local.get $0 local.get $1 i32.store offset=12 local.get $0 ) - (func $~lib/array/Array#__unchecked_set (; 54 ;) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/array/Array#__unchecked_set (; 53 ;) (param $0 i32) (param $1 i32) (param $2 i32) local.get $0 i32.load offset=4 local.get $1 @@ -4756,7 +4796,7 @@ local.get $2 i32.store8 ) - (func $~lib/array/Array#__set (; 55 ;) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/array/Array#__set (; 54 ;) (param $0 i32) (param $1 i32) (param $2 i32) local.get $1 local.get $0 i32.load offset=12 @@ -4766,9 +4806,9 @@ i32.const 0 i32.lt_s if + i32.const 400 i32.const 352 - i32.const 416 - i32.const 109 + i32.const 120 i32.const 21 call $~lib/builtins/abort unreachable @@ -4790,7 +4830,7 @@ local.get $2 call $~lib/array/Array#__unchecked_set ) - (func $~lib/set/Set#values (; 56 ;) (param $0 i32) (result i32) + (func $~lib/set/Set#values (; 55 ;) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -4852,11 +4892,11 @@ end local.get $3 ) - (func $~lib/array/Array#get:length (; 57 ;) (param $0 i32) (result i32) + (func $~lib/array/Array#get:length (; 56 ;) (param $0 i32) (result i32) local.get $0 i32.load offset=12 ) - (func $~lib/array/Array#__unchecked_get (; 58 ;) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array#__unchecked_get (; 57 ;) (param $0 i32) (param $1 i32) (result i32) local.get $0 i32.load offset=4 local.get $1 @@ -4865,16 +4905,16 @@ i32.add i32.load8_u ) - (func $~lib/array/Array#__get (; 59 ;) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array#__get (; 58 ;) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) local.get $1 local.get $0 i32.load offset=12 i32.ge_u if + i32.const 400 i32.const 352 - i32.const 416 - i32.const 93 + i32.const 104 i32.const 41 call $~lib/builtins/abort unreachable @@ -4885,7 +4925,7 @@ local.set $2 local.get $2 ) - (func $~lib/set/Set#delete (; 60 ;) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/set/Set#delete (; 59 ;) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -4959,7 +4999,7 @@ end i32.const 1 ) - (func $std/set/testNumeric (; 61 ;) + (func $std/set/testNumeric (; 60 ;) (local $0 i32) (local $1 i32) (local $2 i32) @@ -5307,7 +5347,7 @@ local.get $0 call $~lib/rt/pure/__release ) - (func $~lib/set/Set#clear (; 62 ;) (param $0 i32) + (func $~lib/set/Set#clear (; 61 ;) (param $0 i32) (local $1 i32) (local $2 i32) local.get $0 @@ -5347,7 +5387,7 @@ i32.const 0 i32.store offset=20 ) - (func $~lib/set/Set#constructor (; 63 ;) (param $0 i32) (result i32) + (func $~lib/set/Set#constructor (; 62 ;) (param $0 i32) (result i32) local.get $0 i32.eqz if @@ -5379,7 +5419,7 @@ call $~lib/set/Set#clear local.get $0 ) - (func $~lib/util/hash/hash16 (; 64 ;) (param $0 i32) (result i32) + (func $~lib/util/hash/hash16 (; 63 ;) (param $0 i32) (result i32) (local $1 i32) i32.const -2128831035 local.set $1 @@ -5401,7 +5441,7 @@ local.set $1 local.get $1 ) - (func $~lib/set/Set#find (; 65 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/set/Set#find (; 64 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) local.get $0 @@ -5453,7 +5493,7 @@ end i32.const 0 ) - (func $~lib/set/Set#has (; 66 ;) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/set/Set#has (; 65 ;) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) local.get $0 local.get $1 @@ -5472,7 +5512,7 @@ i32.const 0 i32.ne ) - (func $~lib/set/Set#rehash (; 67 ;) (param $0 i32) (param $1 i32) + (func $~lib/set/Set#rehash (; 66 ;) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -5625,7 +5665,7 @@ local.get $5 call $~lib/rt/pure/__release ) - (func $~lib/set/Set#add (; 68 ;) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/set/Set#add (; 67 ;) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -5722,33 +5762,89 @@ local.get $0 call $~lib/rt/pure/__retain ) - (func $~lib/set/Set#get:size (; 69 ;) (param $0 i32) (result i32) + (func $~lib/set/Set#get:size (; 68 ;) (param $0 i32) (result i32) local.get $0 i32.load offset=20 ) - (func $~lib/array/Array#constructor (; 70 ;) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array#constructor (; 69 ;) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + local.get $1 + i32.const 536870904 + i32.gt_u + if + i32.const 192 + i32.const 352 + i32.const 57 + i32.const 59 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 1 + i32.shl + local.set $2 + local.get $2 + i32.const 0 + call $~lib/rt/tlsf/__alloc + local.set $3 + local.get $3 + i32.const 0 + local.get $2 + call $~lib/memory/memory.fill local.get $0 - if (result i32) - local.get $0 - else + i32.eqz + if i32.const 16 i32.const 8 call $~lib/rt/tlsf/__alloc call $~lib/rt/pure/__retain + local.set $0 end - local.get $1 - i32.const 1 - call $~lib/arraybuffer/ArrayBufferView#constructor - local.set $0 + local.get $0 + i32.const 0 + i32.store + local.get $0 + i32.const 0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=8 local.get $0 i32.const 0 i32.store offset=12 local.get $0 + local.tee $4 + local.get $3 + local.tee $5 + local.get $4 + i32.load + local.tee $6 + i32.ne + if + local.get $5 + call $~lib/rt/pure/__retain + local.set $5 + local.get $6 + call $~lib/rt/pure/__release + end + local.get $5 + i32.store + local.get $0 + local.get $3 + i32.store offset=4 + local.get $0 + local.get $2 + i32.store offset=8 + local.get $0 local.get $1 i32.store offset=12 local.get $0 ) - (func $~lib/array/Array#__unchecked_set (; 71 ;) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/array/Array#__unchecked_set (; 70 ;) (param $0 i32) (param $1 i32) (param $2 i32) local.get $0 i32.load offset=4 local.get $1 @@ -5758,7 +5854,7 @@ local.get $2 i32.store16 ) - (func $~lib/array/Array#__set (; 72 ;) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/array/Array#__set (; 71 ;) (param $0 i32) (param $1 i32) (param $2 i32) local.get $1 local.get $0 i32.load offset=12 @@ -5768,9 +5864,9 @@ i32.const 0 i32.lt_s if + i32.const 400 i32.const 352 - i32.const 416 - i32.const 109 + i32.const 120 i32.const 21 call $~lib/builtins/abort unreachable @@ -5792,7 +5888,7 @@ local.get $2 call $~lib/array/Array#__unchecked_set ) - (func $~lib/set/Set#values (; 73 ;) (param $0 i32) (result i32) + (func $~lib/set/Set#values (; 72 ;) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -5854,11 +5950,11 @@ end local.get $3 ) - (func $~lib/array/Array#get:length (; 74 ;) (param $0 i32) (result i32) + (func $~lib/array/Array#get:length (; 73 ;) (param $0 i32) (result i32) local.get $0 i32.load offset=12 ) - (func $~lib/array/Array#__unchecked_get (; 75 ;) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array#__unchecked_get (; 74 ;) (param $0 i32) (param $1 i32) (result i32) local.get $0 i32.load offset=4 local.get $1 @@ -5867,16 +5963,16 @@ i32.add i32.load16_s ) - (func $~lib/array/Array#__get (; 76 ;) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array#__get (; 75 ;) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) local.get $1 local.get $0 i32.load offset=12 i32.ge_u if + i32.const 400 i32.const 352 - i32.const 416 - i32.const 93 + i32.const 104 i32.const 41 call $~lib/builtins/abort unreachable @@ -5887,7 +5983,7 @@ local.set $2 local.get $2 ) - (func $~lib/set/Set#delete (; 77 ;) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/set/Set#delete (; 76 ;) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -5963,7 +6059,7 @@ end i32.const 1 ) - (func $std/set/testNumeric (; 78 ;) + (func $std/set/testNumeric (; 77 ;) (local $0 i32) (local $1 i32) (local $2 i32) @@ -6319,7 +6415,7 @@ local.get $0 call $~lib/rt/pure/__release ) - (func $~lib/set/Set#clear (; 79 ;) (param $0 i32) + (func $~lib/set/Set#clear (; 78 ;) (param $0 i32) (local $1 i32) (local $2 i32) local.get $0 @@ -6359,7 +6455,7 @@ i32.const 0 i32.store offset=20 ) - (func $~lib/set/Set#constructor (; 80 ;) (param $0 i32) (result i32) + (func $~lib/set/Set#constructor (; 79 ;) (param $0 i32) (result i32) local.get $0 i32.eqz if @@ -6391,7 +6487,7 @@ call $~lib/set/Set#clear local.get $0 ) - (func $~lib/set/Set#find (; 81 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/set/Set#find (; 80 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) local.get $0 @@ -6441,7 +6537,7 @@ end i32.const 0 ) - (func $~lib/set/Set#has (; 82 ;) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/set/Set#has (; 81 ;) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) local.get $0 local.get $1 @@ -6458,7 +6554,7 @@ i32.const 0 i32.ne ) - (func $~lib/set/Set#rehash (; 83 ;) (param $0 i32) (param $1 i32) + (func $~lib/set/Set#rehash (; 82 ;) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -6611,7 +6707,7 @@ local.get $5 call $~lib/rt/pure/__release ) - (func $~lib/set/Set#add (; 84 ;) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/set/Set#add (; 83 ;) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -6706,33 +6802,89 @@ local.get $0 call $~lib/rt/pure/__retain ) - (func $~lib/set/Set#get:size (; 85 ;) (param $0 i32) (result i32) + (func $~lib/set/Set#get:size (; 84 ;) (param $0 i32) (result i32) local.get $0 i32.load offset=20 ) - (func $~lib/array/Array#constructor (; 86 ;) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array#constructor (; 85 ;) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + local.get $1 + i32.const 536870904 + i32.gt_u + if + i32.const 192 + i32.const 352 + i32.const 57 + i32.const 59 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 1 + i32.shl + local.set $2 + local.get $2 + i32.const 0 + call $~lib/rt/tlsf/__alloc + local.set $3 + local.get $3 + i32.const 0 + local.get $2 + call $~lib/memory/memory.fill local.get $0 - if (result i32) - local.get $0 - else + i32.eqz + if i32.const 16 i32.const 10 call $~lib/rt/tlsf/__alloc call $~lib/rt/pure/__retain + local.set $0 end - local.get $1 - i32.const 1 - call $~lib/arraybuffer/ArrayBufferView#constructor - local.set $0 + local.get $0 + i32.const 0 + i32.store + local.get $0 + i32.const 0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=8 local.get $0 i32.const 0 i32.store offset=12 local.get $0 + local.tee $4 + local.get $3 + local.tee $5 + local.get $4 + i32.load + local.tee $6 + i32.ne + if + local.get $5 + call $~lib/rt/pure/__retain + local.set $5 + local.get $6 + call $~lib/rt/pure/__release + end + local.get $5 + i32.store + local.get $0 + local.get $3 + i32.store offset=4 + local.get $0 + local.get $2 + i32.store offset=8 + local.get $0 local.get $1 i32.store offset=12 local.get $0 ) - (func $~lib/array/Array#__unchecked_set (; 87 ;) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/array/Array#__unchecked_set (; 86 ;) (param $0 i32) (param $1 i32) (param $2 i32) local.get $0 i32.load offset=4 local.get $1 @@ -6742,7 +6894,7 @@ local.get $2 i32.store16 ) - (func $~lib/array/Array#__set (; 88 ;) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/array/Array#__set (; 87 ;) (param $0 i32) (param $1 i32) (param $2 i32) local.get $1 local.get $0 i32.load offset=12 @@ -6752,9 +6904,9 @@ i32.const 0 i32.lt_s if + i32.const 400 i32.const 352 - i32.const 416 - i32.const 109 + i32.const 120 i32.const 21 call $~lib/builtins/abort unreachable @@ -6776,7 +6928,7 @@ local.get $2 call $~lib/array/Array#__unchecked_set ) - (func $~lib/set/Set#values (; 89 ;) (param $0 i32) (result i32) + (func $~lib/set/Set#values (; 88 ;) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -6838,11 +6990,11 @@ end local.get $3 ) - (func $~lib/array/Array#get:length (; 90 ;) (param $0 i32) (result i32) + (func $~lib/array/Array#get:length (; 89 ;) (param $0 i32) (result i32) local.get $0 i32.load offset=12 ) - (func $~lib/array/Array#__unchecked_get (; 91 ;) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array#__unchecked_get (; 90 ;) (param $0 i32) (param $1 i32) (result i32) local.get $0 i32.load offset=4 local.get $1 @@ -6851,16 +7003,16 @@ i32.add i32.load16_u ) - (func $~lib/array/Array#__get (; 92 ;) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array#__get (; 91 ;) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) local.get $1 local.get $0 i32.load offset=12 i32.ge_u if + i32.const 400 i32.const 352 - i32.const 416 - i32.const 93 + i32.const 104 i32.const 41 call $~lib/builtins/abort unreachable @@ -6871,7 +7023,7 @@ local.set $2 local.get $2 ) - (func $~lib/set/Set#delete (; 93 ;) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/set/Set#delete (; 92 ;) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -6945,7 +7097,7 @@ end i32.const 1 ) - (func $std/set/testNumeric (; 94 ;) + (func $std/set/testNumeric (; 93 ;) (local $0 i32) (local $1 i32) (local $2 i32) @@ -7293,7 +7445,7 @@ local.get $0 call $~lib/rt/pure/__release ) - (func $~lib/set/Set#clear (; 95 ;) (param $0 i32) + (func $~lib/set/Set#clear (; 94 ;) (param $0 i32) (local $1 i32) (local $2 i32) local.get $0 @@ -7333,7 +7485,7 @@ i32.const 0 i32.store offset=20 ) - (func $~lib/set/Set#constructor (; 96 ;) (param $0 i32) (result i32) + (func $~lib/set/Set#constructor (; 95 ;) (param $0 i32) (result i32) local.get $0 i32.eqz if @@ -7365,7 +7517,7 @@ call $~lib/set/Set#clear local.get $0 ) - (func $~lib/util/hash/hash32 (; 97 ;) (param $0 i32) (result i32) + (func $~lib/util/hash/hash32 (; 96 ;) (param $0 i32) (result i32) (local $1 i32) i32.const -2128831035 local.set $1 @@ -7407,7 +7559,7 @@ local.set $1 local.get $1 ) - (func $~lib/set/Set#find (; 98 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/set/Set#find (; 97 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) local.get $0 @@ -7455,7 +7607,7 @@ end i32.const 0 ) - (func $~lib/set/Set#has (; 99 ;) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/set/Set#has (; 98 ;) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) local.get $0 local.get $1 @@ -7470,7 +7622,7 @@ i32.const 0 i32.ne ) - (func $~lib/set/Set#rehash (; 100 ;) (param $0 i32) (param $1 i32) + (func $~lib/set/Set#rehash (; 99 ;) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -7623,7 +7775,7 @@ local.get $5 call $~lib/rt/pure/__release ) - (func $~lib/set/Set#add (; 101 ;) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/set/Set#add (; 100 ;) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -7716,33 +7868,89 @@ local.get $0 call $~lib/rt/pure/__retain ) - (func $~lib/set/Set#get:size (; 102 ;) (param $0 i32) (result i32) + (func $~lib/set/Set#get:size (; 101 ;) (param $0 i32) (result i32) local.get $0 i32.load offset=20 ) - (func $~lib/array/Array#constructor (; 103 ;) (param $0 i32) (param $1 i32) (result i32) - local.get $0 - if (result i32) - local.get $0 - else - i32.const 16 - i32.const 12 - call $~lib/rt/tlsf/__alloc - call $~lib/rt/pure/__retain - end + (func $~lib/array/Array#constructor (; 102 ;) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) local.get $1 - i32.const 2 - call $~lib/arraybuffer/ArrayBufferView#constructor - local.set $0 - local.get $0 - i32.const 0 + i32.const 268435452 + i32.gt_u + if + i32.const 192 + i32.const 352 + i32.const 57 + i32.const 59 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 2 + i32.shl + local.set $2 + local.get $2 + i32.const 0 + call $~lib/rt/tlsf/__alloc + local.set $3 + local.get $3 + i32.const 0 + local.get $2 + call $~lib/memory/memory.fill + local.get $0 + i32.eqz + if + i32.const 16 + i32.const 12 + call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__retain + local.set $0 + end + local.get $0 + i32.const 0 + i32.store + local.get $0 + i32.const 0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=8 + local.get $0 + i32.const 0 i32.store offset=12 local.get $0 + local.tee $4 + local.get $3 + local.tee $5 + local.get $4 + i32.load + local.tee $6 + i32.ne + if + local.get $5 + call $~lib/rt/pure/__retain + local.set $5 + local.get $6 + call $~lib/rt/pure/__release + end + local.get $5 + i32.store + local.get $0 + local.get $3 + i32.store offset=4 + local.get $0 + local.get $2 + i32.store offset=8 + local.get $0 local.get $1 i32.store offset=12 local.get $0 ) - (func $~lib/array/Array#__unchecked_set (; 104 ;) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/array/Array#__unchecked_set (; 103 ;) (param $0 i32) (param $1 i32) (param $2 i32) local.get $0 i32.load offset=4 local.get $1 @@ -7752,7 +7960,7 @@ local.get $2 i32.store ) - (func $~lib/array/Array#__set (; 105 ;) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/array/Array#__set (; 104 ;) (param $0 i32) (param $1 i32) (param $2 i32) local.get $1 local.get $0 i32.load offset=12 @@ -7762,9 +7970,9 @@ i32.const 0 i32.lt_s if + i32.const 400 i32.const 352 - i32.const 416 - i32.const 109 + i32.const 120 i32.const 21 call $~lib/builtins/abort unreachable @@ -7786,7 +7994,7 @@ local.get $2 call $~lib/array/Array#__unchecked_set ) - (func $~lib/set/Set#values (; 106 ;) (param $0 i32) (result i32) + (func $~lib/set/Set#values (; 105 ;) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -7848,11 +8056,11 @@ end local.get $3 ) - (func $~lib/array/Array#get:length (; 107 ;) (param $0 i32) (result i32) + (func $~lib/array/Array#get:length (; 106 ;) (param $0 i32) (result i32) local.get $0 i32.load offset=12 ) - (func $~lib/array/Array#__unchecked_get (; 108 ;) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array#__unchecked_get (; 107 ;) (param $0 i32) (param $1 i32) (result i32) local.get $0 i32.load offset=4 local.get $1 @@ -7861,16 +8069,16 @@ i32.add i32.load ) - (func $~lib/array/Array#__get (; 109 ;) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array#__get (; 108 ;) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) local.get $1 local.get $0 i32.load offset=12 i32.ge_u if + i32.const 400 i32.const 352 - i32.const 416 - i32.const 93 + i32.const 104 i32.const 41 call $~lib/builtins/abort unreachable @@ -7881,7 +8089,7 @@ local.set $2 local.get $2 ) - (func $~lib/set/Set#delete (; 110 ;) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/set/Set#delete (; 109 ;) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -7953,7 +8161,7 @@ end i32.const 1 ) - (func $std/set/testNumeric (; 111 ;) + (func $std/set/testNumeric (; 110 ;) (local $0 i32) (local $1 i32) (local $2 i32) @@ -8289,7 +8497,7 @@ local.get $0 call $~lib/rt/pure/__release ) - (func $~lib/set/Set#clear (; 112 ;) (param $0 i32) + (func $~lib/set/Set#clear (; 111 ;) (param $0 i32) (local $1 i32) (local $2 i32) local.get $0 @@ -8329,7 +8537,7 @@ i32.const 0 i32.store offset=20 ) - (func $~lib/set/Set#constructor (; 113 ;) (param $0 i32) (result i32) + (func $~lib/set/Set#constructor (; 112 ;) (param $0 i32) (result i32) local.get $0 i32.eqz if @@ -8361,7 +8569,7 @@ call $~lib/set/Set#clear local.get $0 ) - (func $~lib/set/Set#find (; 114 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/set/Set#find (; 113 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) local.get $0 @@ -8409,7 +8617,7 @@ end i32.const 0 ) - (func $~lib/set/Set#has (; 115 ;) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/set/Set#has (; 114 ;) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) local.get $0 local.get $1 @@ -8424,7 +8632,7 @@ i32.const 0 i32.ne ) - (func $~lib/set/Set#rehash (; 116 ;) (param $0 i32) (param $1 i32) + (func $~lib/set/Set#rehash (; 115 ;) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -8577,7 +8785,7 @@ local.get $5 call $~lib/rt/pure/__release ) - (func $~lib/set/Set#add (; 117 ;) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/set/Set#add (; 116 ;) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -8670,33 +8878,89 @@ local.get $0 call $~lib/rt/pure/__retain ) - (func $~lib/set/Set#get:size (; 118 ;) (param $0 i32) (result i32) + (func $~lib/set/Set#get:size (; 117 ;) (param $0 i32) (result i32) local.get $0 i32.load offset=20 ) - (func $~lib/array/Array#constructor (; 119 ;) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array#constructor (; 118 ;) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + local.get $1 + i32.const 268435452 + i32.gt_u + if + i32.const 192 + i32.const 352 + i32.const 57 + i32.const 59 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 2 + i32.shl + local.set $2 + local.get $2 + i32.const 0 + call $~lib/rt/tlsf/__alloc + local.set $3 + local.get $3 + i32.const 0 + local.get $2 + call $~lib/memory/memory.fill local.get $0 - if (result i32) - local.get $0 - else + i32.eqz + if i32.const 16 i32.const 14 call $~lib/rt/tlsf/__alloc call $~lib/rt/pure/__retain + local.set $0 end - local.get $1 - i32.const 2 - call $~lib/arraybuffer/ArrayBufferView#constructor - local.set $0 + local.get $0 + i32.const 0 + i32.store + local.get $0 + i32.const 0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=8 local.get $0 i32.const 0 i32.store offset=12 local.get $0 + local.tee $4 + local.get $3 + local.tee $5 + local.get $4 + i32.load + local.tee $6 + i32.ne + if + local.get $5 + call $~lib/rt/pure/__retain + local.set $5 + local.get $6 + call $~lib/rt/pure/__release + end + local.get $5 + i32.store + local.get $0 + local.get $3 + i32.store offset=4 + local.get $0 + local.get $2 + i32.store offset=8 + local.get $0 local.get $1 i32.store offset=12 local.get $0 ) - (func $~lib/array/Array#__unchecked_set (; 120 ;) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/array/Array#__unchecked_set (; 119 ;) (param $0 i32) (param $1 i32) (param $2 i32) local.get $0 i32.load offset=4 local.get $1 @@ -8706,7 +8970,7 @@ local.get $2 i32.store ) - (func $~lib/array/Array#__set (; 121 ;) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/array/Array#__set (; 120 ;) (param $0 i32) (param $1 i32) (param $2 i32) local.get $1 local.get $0 i32.load offset=12 @@ -8716,9 +8980,9 @@ i32.const 0 i32.lt_s if + i32.const 400 i32.const 352 - i32.const 416 - i32.const 109 + i32.const 120 i32.const 21 call $~lib/builtins/abort unreachable @@ -8740,7 +9004,7 @@ local.get $2 call $~lib/array/Array#__unchecked_set ) - (func $~lib/set/Set#values (; 122 ;) (param $0 i32) (result i32) + (func $~lib/set/Set#values (; 121 ;) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -8802,11 +9066,11 @@ end local.get $3 ) - (func $~lib/array/Array#get:length (; 123 ;) (param $0 i32) (result i32) + (func $~lib/array/Array#get:length (; 122 ;) (param $0 i32) (result i32) local.get $0 i32.load offset=12 ) - (func $~lib/array/Array#__unchecked_get (; 124 ;) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array#__unchecked_get (; 123 ;) (param $0 i32) (param $1 i32) (result i32) local.get $0 i32.load offset=4 local.get $1 @@ -8815,16 +9079,16 @@ i32.add i32.load ) - (func $~lib/array/Array#__get (; 125 ;) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array#__get (; 124 ;) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) local.get $1 local.get $0 i32.load offset=12 i32.ge_u if + i32.const 400 i32.const 352 - i32.const 416 - i32.const 93 + i32.const 104 i32.const 41 call $~lib/builtins/abort unreachable @@ -8835,7 +9099,7 @@ local.set $2 local.get $2 ) - (func $~lib/set/Set#delete (; 126 ;) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/set/Set#delete (; 125 ;) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -8907,7 +9171,7 @@ end i32.const 1 ) - (func $std/set/testNumeric (; 127 ;) + (func $std/set/testNumeric (; 126 ;) (local $0 i32) (local $1 i32) (local $2 i32) @@ -9243,7 +9507,7 @@ local.get $0 call $~lib/rt/pure/__release ) - (func $~lib/set/Set#clear (; 128 ;) (param $0 i32) + (func $~lib/set/Set#clear (; 127 ;) (param $0 i32) (local $1 i32) (local $2 i32) local.get $0 @@ -9283,7 +9547,7 @@ i32.const 0 i32.store offset=20 ) - (func $~lib/set/Set#constructor (; 129 ;) (param $0 i32) (result i32) + (func $~lib/set/Set#constructor (; 128 ;) (param $0 i32) (result i32) local.get $0 i32.eqz if @@ -9315,7 +9579,7 @@ call $~lib/set/Set#clear local.get $0 ) - (func $~lib/util/hash/hash64 (; 130 ;) (param $0 i64) (result i32) + (func $~lib/util/hash/hash64 (; 129 ;) (param $0 i64) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -9403,7 +9667,7 @@ local.set $3 local.get $3 ) - (func $~lib/set/Set#find (; 131 ;) (param $0 i32) (param $1 i64) (param $2 i32) (result i32) + (func $~lib/set/Set#find (; 130 ;) (param $0 i32) (param $1 i64) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) local.get $0 @@ -9451,7 +9715,7 @@ end i32.const 0 ) - (func $~lib/set/Set#has (; 132 ;) (param $0 i32) (param $1 i64) (result i32) + (func $~lib/set/Set#has (; 131 ;) (param $0 i32) (param $1 i64) (result i32) (local $2 i64) local.get $0 local.get $1 @@ -9466,7 +9730,7 @@ i32.const 0 i32.ne ) - (func $~lib/set/Set#rehash (; 133 ;) (param $0 i32) (param $1 i32) + (func $~lib/set/Set#rehash (; 132 ;) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -9620,7 +9884,7 @@ local.get $5 call $~lib/rt/pure/__release ) - (func $~lib/set/Set#add (; 134 ;) (param $0 i32) (param $1 i64) (result i32) + (func $~lib/set/Set#add (; 133 ;) (param $0 i32) (param $1 i64) (result i32) (local $2 i64) (local $3 i32) (local $4 i32) @@ -9714,33 +9978,89 @@ local.get $0 call $~lib/rt/pure/__retain ) - (func $~lib/set/Set#get:size (; 135 ;) (param $0 i32) (result i32) + (func $~lib/set/Set#get:size (; 134 ;) (param $0 i32) (result i32) local.get $0 i32.load offset=20 ) - (func $~lib/array/Array#constructor (; 136 ;) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array#constructor (; 135 ;) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + local.get $1 + i32.const 134217726 + i32.gt_u + if + i32.const 192 + i32.const 352 + i32.const 57 + i32.const 59 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 3 + i32.shl + local.set $2 + local.get $2 + i32.const 0 + call $~lib/rt/tlsf/__alloc + local.set $3 + local.get $3 + i32.const 0 + local.get $2 + call $~lib/memory/memory.fill local.get $0 - if (result i32) - local.get $0 - else + i32.eqz + if i32.const 16 i32.const 16 call $~lib/rt/tlsf/__alloc call $~lib/rt/pure/__retain + local.set $0 end - local.get $1 - i32.const 3 - call $~lib/arraybuffer/ArrayBufferView#constructor - local.set $0 + local.get $0 + i32.const 0 + i32.store + local.get $0 + i32.const 0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=8 local.get $0 i32.const 0 i32.store offset=12 local.get $0 + local.tee $4 + local.get $3 + local.tee $5 + local.get $4 + i32.load + local.tee $6 + i32.ne + if + local.get $5 + call $~lib/rt/pure/__retain + local.set $5 + local.get $6 + call $~lib/rt/pure/__release + end + local.get $5 + i32.store + local.get $0 + local.get $3 + i32.store offset=4 + local.get $0 + local.get $2 + i32.store offset=8 + local.get $0 local.get $1 i32.store offset=12 local.get $0 ) - (func $~lib/array/Array#__unchecked_set (; 137 ;) (param $0 i32) (param $1 i32) (param $2 i64) + (func $~lib/array/Array#__unchecked_set (; 136 ;) (param $0 i32) (param $1 i32) (param $2 i64) local.get $0 i32.load offset=4 local.get $1 @@ -9750,7 +10070,7 @@ local.get $2 i64.store ) - (func $~lib/array/Array#__set (; 138 ;) (param $0 i32) (param $1 i32) (param $2 i64) + (func $~lib/array/Array#__set (; 137 ;) (param $0 i32) (param $1 i32) (param $2 i64) local.get $1 local.get $0 i32.load offset=12 @@ -9760,9 +10080,9 @@ i32.const 0 i32.lt_s if + i32.const 400 i32.const 352 - i32.const 416 - i32.const 109 + i32.const 120 i32.const 21 call $~lib/builtins/abort unreachable @@ -9784,7 +10104,7 @@ local.get $2 call $~lib/array/Array#__unchecked_set ) - (func $~lib/set/Set#values (; 139 ;) (param $0 i32) (result i32) + (func $~lib/set/Set#values (; 138 ;) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -9846,11 +10166,11 @@ end local.get $3 ) - (func $~lib/array/Array#get:length (; 140 ;) (param $0 i32) (result i32) + (func $~lib/array/Array#get:length (; 139 ;) (param $0 i32) (result i32) local.get $0 i32.load offset=12 ) - (func $~lib/array/Array#__unchecked_get (; 141 ;) (param $0 i32) (param $1 i32) (result i64) + (func $~lib/array/Array#__unchecked_get (; 140 ;) (param $0 i32) (param $1 i32) (result i64) local.get $0 i32.load offset=4 local.get $1 @@ -9859,16 +10179,16 @@ i32.add i64.load ) - (func $~lib/array/Array#__get (; 142 ;) (param $0 i32) (param $1 i32) (result i64) + (func $~lib/array/Array#__get (; 141 ;) (param $0 i32) (param $1 i32) (result i64) (local $2 i64) local.get $1 local.get $0 i32.load offset=12 i32.ge_u if + i32.const 400 i32.const 352 - i32.const 416 - i32.const 93 + i32.const 104 i32.const 41 call $~lib/builtins/abort unreachable @@ -9879,7 +10199,7 @@ local.set $2 local.get $2 ) - (func $~lib/set/Set#delete (; 143 ;) (param $0 i32) (param $1 i64) (result i32) + (func $~lib/set/Set#delete (; 142 ;) (param $0 i32) (param $1 i64) (result i32) (local $2 i64) (local $3 i32) (local $4 i32) @@ -9952,7 +10272,7 @@ end i32.const 1 ) - (func $std/set/testNumeric (; 144 ;) + (func $std/set/testNumeric (; 143 ;) (local $0 i32) (local $1 i64) (local $2 i32) @@ -10289,7 +10609,7 @@ local.get $0 call $~lib/rt/pure/__release ) - (func $~lib/set/Set#clear (; 145 ;) (param $0 i32) + (func $~lib/set/Set#clear (; 144 ;) (param $0 i32) (local $1 i32) (local $2 i32) local.get $0 @@ -10329,7 +10649,7 @@ i32.const 0 i32.store offset=20 ) - (func $~lib/set/Set#constructor (; 146 ;) (param $0 i32) (result i32) + (func $~lib/set/Set#constructor (; 145 ;) (param $0 i32) (result i32) local.get $0 i32.eqz if @@ -10361,7 +10681,7 @@ call $~lib/set/Set#clear local.get $0 ) - (func $~lib/set/Set#find (; 147 ;) (param $0 i32) (param $1 i64) (param $2 i32) (result i32) + (func $~lib/set/Set#find (; 146 ;) (param $0 i32) (param $1 i64) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) local.get $0 @@ -10409,7 +10729,7 @@ end i32.const 0 ) - (func $~lib/set/Set#has (; 148 ;) (param $0 i32) (param $1 i64) (result i32) + (func $~lib/set/Set#has (; 147 ;) (param $0 i32) (param $1 i64) (result i32) (local $2 i64) local.get $0 local.get $1 @@ -10424,7 +10744,7 @@ i32.const 0 i32.ne ) - (func $~lib/set/Set#rehash (; 149 ;) (param $0 i32) (param $1 i32) + (func $~lib/set/Set#rehash (; 148 ;) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -10578,7 +10898,7 @@ local.get $5 call $~lib/rt/pure/__release ) - (func $~lib/set/Set#add (; 150 ;) (param $0 i32) (param $1 i64) (result i32) + (func $~lib/set/Set#add (; 149 ;) (param $0 i32) (param $1 i64) (result i32) (local $2 i64) (local $3 i32) (local $4 i32) @@ -10672,33 +10992,89 @@ local.get $0 call $~lib/rt/pure/__retain ) - (func $~lib/set/Set#get:size (; 151 ;) (param $0 i32) (result i32) + (func $~lib/set/Set#get:size (; 150 ;) (param $0 i32) (result i32) local.get $0 i32.load offset=20 ) - (func $~lib/array/Array#constructor (; 152 ;) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array#constructor (; 151 ;) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + local.get $1 + i32.const 134217726 + i32.gt_u + if + i32.const 192 + i32.const 352 + i32.const 57 + i32.const 59 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 3 + i32.shl + local.set $2 + local.get $2 + i32.const 0 + call $~lib/rt/tlsf/__alloc + local.set $3 + local.get $3 + i32.const 0 + local.get $2 + call $~lib/memory/memory.fill local.get $0 - if (result i32) - local.get $0 - else + i32.eqz + if i32.const 16 i32.const 18 call $~lib/rt/tlsf/__alloc call $~lib/rt/pure/__retain + local.set $0 end - local.get $1 - i32.const 3 - call $~lib/arraybuffer/ArrayBufferView#constructor - local.set $0 + local.get $0 + i32.const 0 + i32.store + local.get $0 + i32.const 0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=8 local.get $0 i32.const 0 i32.store offset=12 local.get $0 + local.tee $4 + local.get $3 + local.tee $5 + local.get $4 + i32.load + local.tee $6 + i32.ne + if + local.get $5 + call $~lib/rt/pure/__retain + local.set $5 + local.get $6 + call $~lib/rt/pure/__release + end + local.get $5 + i32.store + local.get $0 + local.get $3 + i32.store offset=4 + local.get $0 + local.get $2 + i32.store offset=8 + local.get $0 local.get $1 i32.store offset=12 local.get $0 ) - (func $~lib/array/Array#__unchecked_set (; 153 ;) (param $0 i32) (param $1 i32) (param $2 i64) + (func $~lib/array/Array#__unchecked_set (; 152 ;) (param $0 i32) (param $1 i32) (param $2 i64) local.get $0 i32.load offset=4 local.get $1 @@ -10708,7 +11084,7 @@ local.get $2 i64.store ) - (func $~lib/array/Array#__set (; 154 ;) (param $0 i32) (param $1 i32) (param $2 i64) + (func $~lib/array/Array#__set (; 153 ;) (param $0 i32) (param $1 i32) (param $2 i64) local.get $1 local.get $0 i32.load offset=12 @@ -10718,9 +11094,9 @@ i32.const 0 i32.lt_s if + i32.const 400 i32.const 352 - i32.const 416 - i32.const 109 + i32.const 120 i32.const 21 call $~lib/builtins/abort unreachable @@ -10742,7 +11118,7 @@ local.get $2 call $~lib/array/Array#__unchecked_set ) - (func $~lib/set/Set#values (; 155 ;) (param $0 i32) (result i32) + (func $~lib/set/Set#values (; 154 ;) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -10804,11 +11180,11 @@ end local.get $3 ) - (func $~lib/array/Array#get:length (; 156 ;) (param $0 i32) (result i32) + (func $~lib/array/Array#get:length (; 155 ;) (param $0 i32) (result i32) local.get $0 i32.load offset=12 ) - (func $~lib/array/Array#__unchecked_get (; 157 ;) (param $0 i32) (param $1 i32) (result i64) + (func $~lib/array/Array#__unchecked_get (; 156 ;) (param $0 i32) (param $1 i32) (result i64) local.get $0 i32.load offset=4 local.get $1 @@ -10817,16 +11193,16 @@ i32.add i64.load ) - (func $~lib/array/Array#__get (; 158 ;) (param $0 i32) (param $1 i32) (result i64) + (func $~lib/array/Array#__get (; 157 ;) (param $0 i32) (param $1 i32) (result i64) (local $2 i64) local.get $1 local.get $0 i32.load offset=12 i32.ge_u if + i32.const 400 i32.const 352 - i32.const 416 - i32.const 93 + i32.const 104 i32.const 41 call $~lib/builtins/abort unreachable @@ -10837,7 +11213,7 @@ local.set $2 local.get $2 ) - (func $~lib/set/Set#delete (; 159 ;) (param $0 i32) (param $1 i64) (result i32) + (func $~lib/set/Set#delete (; 158 ;) (param $0 i32) (param $1 i64) (result i32) (local $2 i64) (local $3 i32) (local $4 i32) @@ -10910,7 +11286,7 @@ end i32.const 1 ) - (func $std/set/testNumeric (; 160 ;) + (func $std/set/testNumeric (; 159 ;) (local $0 i32) (local $1 i64) (local $2 i32) @@ -11247,7 +11623,7 @@ local.get $0 call $~lib/rt/pure/__release ) - (func $~lib/set/Set#clear (; 161 ;) (param $0 i32) + (func $~lib/set/Set#clear (; 160 ;) (param $0 i32) (local $1 i32) (local $2 i32) local.get $0 @@ -11287,7 +11663,7 @@ i32.const 0 i32.store offset=20 ) - (func $~lib/set/Set#constructor (; 162 ;) (param $0 i32) (result i32) + (func $~lib/set/Set#constructor (; 161 ;) (param $0 i32) (result i32) local.get $0 i32.eqz if @@ -11319,7 +11695,7 @@ call $~lib/set/Set#clear local.get $0 ) - (func $~lib/set/Set#find (; 163 ;) (param $0 i32) (param $1 f32) (param $2 i32) (result i32) + (func $~lib/set/Set#find (; 162 ;) (param $0 i32) (param $1 f32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) local.get $0 @@ -11367,7 +11743,7 @@ end i32.const 0 ) - (func $~lib/set/Set#has (; 164 ;) (param $0 i32) (param $1 f32) (result i32) + (func $~lib/set/Set#has (; 163 ;) (param $0 i32) (param $1 f32) (result i32) (local $2 f32) local.get $0 local.get $1 @@ -11383,7 +11759,7 @@ i32.const 0 i32.ne ) - (func $~lib/set/Set#rehash (; 165 ;) (param $0 i32) (param $1 i32) + (func $~lib/set/Set#rehash (; 164 ;) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -11538,7 +11914,7 @@ local.get $5 call $~lib/rt/pure/__release ) - (func $~lib/set/Set#add (; 166 ;) (param $0 i32) (param $1 f32) (result i32) + (func $~lib/set/Set#add (; 165 ;) (param $0 i32) (param $1 f32) (result i32) (local $2 f32) (local $3 i32) (local $4 i32) @@ -11633,33 +12009,89 @@ local.get $0 call $~lib/rt/pure/__retain ) - (func $~lib/set/Set#get:size (; 167 ;) (param $0 i32) (result i32) + (func $~lib/set/Set#get:size (; 166 ;) (param $0 i32) (result i32) local.get $0 i32.load offset=20 ) - (func $~lib/array/Array#constructor (; 168 ;) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array#constructor (; 167 ;) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + local.get $1 + i32.const 268435452 + i32.gt_u + if + i32.const 192 + i32.const 352 + i32.const 57 + i32.const 59 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 2 + i32.shl + local.set $2 + local.get $2 + i32.const 0 + call $~lib/rt/tlsf/__alloc + local.set $3 + local.get $3 + i32.const 0 + local.get $2 + call $~lib/memory/memory.fill local.get $0 - if (result i32) - local.get $0 - else + i32.eqz + if i32.const 16 i32.const 20 call $~lib/rt/tlsf/__alloc call $~lib/rt/pure/__retain + local.set $0 end - local.get $1 - i32.const 2 - call $~lib/arraybuffer/ArrayBufferView#constructor - local.set $0 + local.get $0 + i32.const 0 + i32.store + local.get $0 + i32.const 0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=8 local.get $0 i32.const 0 i32.store offset=12 local.get $0 + local.tee $4 + local.get $3 + local.tee $5 + local.get $4 + i32.load + local.tee $6 + i32.ne + if + local.get $5 + call $~lib/rt/pure/__retain + local.set $5 + local.get $6 + call $~lib/rt/pure/__release + end + local.get $5 + i32.store + local.get $0 + local.get $3 + i32.store offset=4 + local.get $0 + local.get $2 + i32.store offset=8 + local.get $0 local.get $1 i32.store offset=12 local.get $0 ) - (func $~lib/array/Array#__unchecked_set (; 169 ;) (param $0 i32) (param $1 i32) (param $2 f32) + (func $~lib/array/Array#__unchecked_set (; 168 ;) (param $0 i32) (param $1 i32) (param $2 f32) local.get $0 i32.load offset=4 local.get $1 @@ -11669,7 +12101,7 @@ local.get $2 f32.store ) - (func $~lib/array/Array#__set (; 170 ;) (param $0 i32) (param $1 i32) (param $2 f32) + (func $~lib/array/Array#__set (; 169 ;) (param $0 i32) (param $1 i32) (param $2 f32) local.get $1 local.get $0 i32.load offset=12 @@ -11679,9 +12111,9 @@ i32.const 0 i32.lt_s if + i32.const 400 i32.const 352 - i32.const 416 - i32.const 109 + i32.const 120 i32.const 21 call $~lib/builtins/abort unreachable @@ -11703,7 +12135,7 @@ local.get $2 call $~lib/array/Array#__unchecked_set ) - (func $~lib/set/Set#values (; 171 ;) (param $0 i32) (result i32) + (func $~lib/set/Set#values (; 170 ;) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -11765,11 +12197,11 @@ end local.get $3 ) - (func $~lib/array/Array#get:length (; 172 ;) (param $0 i32) (result i32) + (func $~lib/array/Array#get:length (; 171 ;) (param $0 i32) (result i32) local.get $0 i32.load offset=12 ) - (func $~lib/array/Array#__unchecked_get (; 173 ;) (param $0 i32) (param $1 i32) (result f32) + (func $~lib/array/Array#__unchecked_get (; 172 ;) (param $0 i32) (param $1 i32) (result f32) local.get $0 i32.load offset=4 local.get $1 @@ -11778,16 +12210,16 @@ i32.add f32.load ) - (func $~lib/array/Array#__get (; 174 ;) (param $0 i32) (param $1 i32) (result f32) + (func $~lib/array/Array#__get (; 173 ;) (param $0 i32) (param $1 i32) (result f32) (local $2 f32) local.get $1 local.get $0 i32.load offset=12 i32.ge_u if + i32.const 400 i32.const 352 - i32.const 416 - i32.const 93 + i32.const 104 i32.const 41 call $~lib/builtins/abort unreachable @@ -11798,7 +12230,7 @@ local.set $2 local.get $2 ) - (func $~lib/set/Set#delete (; 175 ;) (param $0 i32) (param $1 f32) (result i32) + (func $~lib/set/Set#delete (; 174 ;) (param $0 i32) (param $1 f32) (result i32) (local $2 f32) (local $3 i32) (local $4 i32) @@ -11872,7 +12304,7 @@ end i32.const 1 ) - (func $std/set/testNumeric (; 176 ;) + (func $std/set/testNumeric (; 175 ;) (local $0 i32) (local $1 f32) (local $2 i32) @@ -12209,7 +12641,7 @@ local.get $0 call $~lib/rt/pure/__release ) - (func $~lib/set/Set#clear (; 177 ;) (param $0 i32) + (func $~lib/set/Set#clear (; 176 ;) (param $0 i32) (local $1 i32) (local $2 i32) local.get $0 @@ -12249,7 +12681,7 @@ i32.const 0 i32.store offset=20 ) - (func $~lib/set/Set#constructor (; 178 ;) (param $0 i32) (result i32) + (func $~lib/set/Set#constructor (; 177 ;) (param $0 i32) (result i32) local.get $0 i32.eqz if @@ -12281,7 +12713,7 @@ call $~lib/set/Set#clear local.get $0 ) - (func $~lib/set/Set#find (; 179 ;) (param $0 i32) (param $1 f64) (param $2 i32) (result i32) + (func $~lib/set/Set#find (; 178 ;) (param $0 i32) (param $1 f64) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) local.get $0 @@ -12329,7 +12761,7 @@ end i32.const 0 ) - (func $~lib/set/Set#has (; 180 ;) (param $0 i32) (param $1 f64) (result i32) + (func $~lib/set/Set#has (; 179 ;) (param $0 i32) (param $1 f64) (result i32) (local $2 f64) local.get $0 local.get $1 @@ -12345,7 +12777,7 @@ i32.const 0 i32.ne ) - (func $~lib/set/Set#rehash (; 181 ;) (param $0 i32) (param $1 i32) + (func $~lib/set/Set#rehash (; 180 ;) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -12500,7 +12932,7 @@ local.get $5 call $~lib/rt/pure/__release ) - (func $~lib/set/Set#add (; 182 ;) (param $0 i32) (param $1 f64) (result i32) + (func $~lib/set/Set#add (; 181 ;) (param $0 i32) (param $1 f64) (result i32) (local $2 f64) (local $3 i32) (local $4 i32) @@ -12595,33 +13027,89 @@ local.get $0 call $~lib/rt/pure/__retain ) - (func $~lib/set/Set#get:size (; 183 ;) (param $0 i32) (result i32) + (func $~lib/set/Set#get:size (; 182 ;) (param $0 i32) (result i32) local.get $0 i32.load offset=20 ) - (func $~lib/array/Array#constructor (; 184 ;) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array#constructor (; 183 ;) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + local.get $1 + i32.const 134217726 + i32.gt_u + if + i32.const 192 + i32.const 352 + i32.const 57 + i32.const 59 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 3 + i32.shl + local.set $2 + local.get $2 + i32.const 0 + call $~lib/rt/tlsf/__alloc + local.set $3 + local.get $3 + i32.const 0 + local.get $2 + call $~lib/memory/memory.fill local.get $0 - if (result i32) - local.get $0 - else + i32.eqz + if i32.const 16 i32.const 22 call $~lib/rt/tlsf/__alloc call $~lib/rt/pure/__retain + local.set $0 end - local.get $1 - i32.const 3 - call $~lib/arraybuffer/ArrayBufferView#constructor - local.set $0 + local.get $0 + i32.const 0 + i32.store + local.get $0 + i32.const 0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=8 local.get $0 i32.const 0 i32.store offset=12 local.get $0 + local.tee $4 + local.get $3 + local.tee $5 + local.get $4 + i32.load + local.tee $6 + i32.ne + if + local.get $5 + call $~lib/rt/pure/__retain + local.set $5 + local.get $6 + call $~lib/rt/pure/__release + end + local.get $5 + i32.store + local.get $0 + local.get $3 + i32.store offset=4 + local.get $0 + local.get $2 + i32.store offset=8 + local.get $0 local.get $1 i32.store offset=12 local.get $0 ) - (func $~lib/array/Array#__unchecked_set (; 185 ;) (param $0 i32) (param $1 i32) (param $2 f64) + (func $~lib/array/Array#__unchecked_set (; 184 ;) (param $0 i32) (param $1 i32) (param $2 f64) local.get $0 i32.load offset=4 local.get $1 @@ -12631,7 +13119,7 @@ local.get $2 f64.store ) - (func $~lib/array/Array#__set (; 186 ;) (param $0 i32) (param $1 i32) (param $2 f64) + (func $~lib/array/Array#__set (; 185 ;) (param $0 i32) (param $1 i32) (param $2 f64) local.get $1 local.get $0 i32.load offset=12 @@ -12641,9 +13129,9 @@ i32.const 0 i32.lt_s if + i32.const 400 i32.const 352 - i32.const 416 - i32.const 109 + i32.const 120 i32.const 21 call $~lib/builtins/abort unreachable @@ -12665,7 +13153,7 @@ local.get $2 call $~lib/array/Array#__unchecked_set ) - (func $~lib/set/Set#values (; 187 ;) (param $0 i32) (result i32) + (func $~lib/set/Set#values (; 186 ;) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -12727,11 +13215,11 @@ end local.get $3 ) - (func $~lib/array/Array#get:length (; 188 ;) (param $0 i32) (result i32) + (func $~lib/array/Array#get:length (; 187 ;) (param $0 i32) (result i32) local.get $0 i32.load offset=12 ) - (func $~lib/array/Array#__unchecked_get (; 189 ;) (param $0 i32) (param $1 i32) (result f64) + (func $~lib/array/Array#__unchecked_get (; 188 ;) (param $0 i32) (param $1 i32) (result f64) local.get $0 i32.load offset=4 local.get $1 @@ -12740,16 +13228,16 @@ i32.add f64.load ) - (func $~lib/array/Array#__get (; 190 ;) (param $0 i32) (param $1 i32) (result f64) + (func $~lib/array/Array#__get (; 189 ;) (param $0 i32) (param $1 i32) (result f64) (local $2 f64) local.get $1 local.get $0 i32.load offset=12 i32.ge_u if + i32.const 400 i32.const 352 - i32.const 416 - i32.const 93 + i32.const 104 i32.const 41 call $~lib/builtins/abort unreachable @@ -12760,7 +13248,7 @@ local.set $2 local.get $2 ) - (func $~lib/set/Set#delete (; 191 ;) (param $0 i32) (param $1 f64) (result i32) + (func $~lib/set/Set#delete (; 190 ;) (param $0 i32) (param $1 f64) (result i32) (local $2 f64) (local $3 i32) (local $4 i32) @@ -12834,7 +13322,7 @@ end i32.const 1 ) - (func $std/set/testNumeric (; 192 ;) + (func $std/set/testNumeric (; 191 ;) (local $0 i32) (local $1 f64) (local $2 i32) @@ -13171,7 +13659,7 @@ local.get $0 call $~lib/rt/pure/__release ) - (func $start:std/set (; 193 ;) + (func $start:std/set (; 192 ;) call $std/set/testNumeric call $std/set/testNumeric call $std/set/testNumeric @@ -13183,13 +13671,13 @@ call $std/set/testNumeric call $std/set/testNumeric ) - (func $~start (; 194 ;) + (func $~start (; 193 ;) call $start:std/set ) - (func $~lib/rt/pure/__collect (; 195 ;) + (func $~lib/rt/pure/__collect (; 194 ;) return ) - (func $~lib/rt/pure/decrement (; 196 ;) (param $0 i32) + (func $~lib/rt/pure/decrement (; 195 ;) (param $0 i32) (local $1 i32) (local $2 i32) local.get $0 @@ -13266,7 +13754,7 @@ i32.store offset=4 end ) - (func $~lib/rt/pure/__visit (; 197 ;) (param $0 i32) (param $1 i32) + (func $~lib/rt/pure/__visit (; 196 ;) (param $0 i32) (param $1 i32) local.get $0 global.get $~lib/heap/__heap_base i32.lt_u @@ -13290,7 +13778,7 @@ i32.sub call $~lib/rt/pure/decrement ) - (func $~lib/set/Set#__visit_impl (; 198 ;) (param $0 i32) (param $1 i32) + (func $~lib/set/Set#__visit_impl (; 197 ;) (param $0 i32) (param $1 i32) (local $2 i32) local.get $0 i32.load @@ -13303,10 +13791,13 @@ local.get $1 call $~lib/rt/pure/__visit ) - (func $~lib/array/Array#__visit_impl (; 199 ;) (param $0 i32) (param $1 i32) - nop + (func $~lib/array/Array#__visit_impl (; 198 ;) (param $0 i32) (param $1 i32) + local.get $0 + i32.load + local.get $1 + call $~lib/rt/pure/__visit ) - (func $~lib/set/Set#__visit_impl (; 200 ;) (param $0 i32) (param $1 i32) + (func $~lib/set/Set#__visit_impl (; 199 ;) (param $0 i32) (param $1 i32) (local $2 i32) local.get $0 i32.load @@ -13319,10 +13810,13 @@ local.get $1 call $~lib/rt/pure/__visit ) - (func $~lib/array/Array#__visit_impl (; 201 ;) (param $0 i32) (param $1 i32) - nop + (func $~lib/array/Array#__visit_impl (; 200 ;) (param $0 i32) (param $1 i32) + local.get $0 + i32.load + local.get $1 + call $~lib/rt/pure/__visit ) - (func $~lib/set/Set#__visit_impl (; 202 ;) (param $0 i32) (param $1 i32) + (func $~lib/set/Set#__visit_impl (; 201 ;) (param $0 i32) (param $1 i32) (local $2 i32) local.get $0 i32.load @@ -13335,10 +13829,13 @@ local.get $1 call $~lib/rt/pure/__visit ) - (func $~lib/array/Array#__visit_impl (; 203 ;) (param $0 i32) (param $1 i32) - nop + (func $~lib/array/Array#__visit_impl (; 202 ;) (param $0 i32) (param $1 i32) + local.get $0 + i32.load + local.get $1 + call $~lib/rt/pure/__visit ) - (func $~lib/set/Set#__visit_impl (; 204 ;) (param $0 i32) (param $1 i32) + (func $~lib/set/Set#__visit_impl (; 203 ;) (param $0 i32) (param $1 i32) (local $2 i32) local.get $0 i32.load @@ -13351,10 +13848,13 @@ local.get $1 call $~lib/rt/pure/__visit ) - (func $~lib/array/Array#__visit_impl (; 205 ;) (param $0 i32) (param $1 i32) - nop + (func $~lib/array/Array#__visit_impl (; 204 ;) (param $0 i32) (param $1 i32) + local.get $0 + i32.load + local.get $1 + call $~lib/rt/pure/__visit ) - (func $~lib/set/Set#__visit_impl (; 206 ;) (param $0 i32) (param $1 i32) + (func $~lib/set/Set#__visit_impl (; 205 ;) (param $0 i32) (param $1 i32) (local $2 i32) local.get $0 i32.load @@ -13367,10 +13867,13 @@ local.get $1 call $~lib/rt/pure/__visit ) - (func $~lib/array/Array#__visit_impl (; 207 ;) (param $0 i32) (param $1 i32) - nop + (func $~lib/array/Array#__visit_impl (; 206 ;) (param $0 i32) (param $1 i32) + local.get $0 + i32.load + local.get $1 + call $~lib/rt/pure/__visit ) - (func $~lib/set/Set#__visit_impl (; 208 ;) (param $0 i32) (param $1 i32) + (func $~lib/set/Set#__visit_impl (; 207 ;) (param $0 i32) (param $1 i32) (local $2 i32) local.get $0 i32.load @@ -13383,10 +13886,13 @@ local.get $1 call $~lib/rt/pure/__visit ) - (func $~lib/array/Array#__visit_impl (; 209 ;) (param $0 i32) (param $1 i32) - nop + (func $~lib/array/Array#__visit_impl (; 208 ;) (param $0 i32) (param $1 i32) + local.get $0 + i32.load + local.get $1 + call $~lib/rt/pure/__visit ) - (func $~lib/set/Set#__visit_impl (; 210 ;) (param $0 i32) (param $1 i32) + (func $~lib/set/Set#__visit_impl (; 209 ;) (param $0 i32) (param $1 i32) (local $2 i32) local.get $0 i32.load @@ -13399,10 +13905,13 @@ local.get $1 call $~lib/rt/pure/__visit ) - (func $~lib/array/Array#__visit_impl (; 211 ;) (param $0 i32) (param $1 i32) - nop + (func $~lib/array/Array#__visit_impl (; 210 ;) (param $0 i32) (param $1 i32) + local.get $0 + i32.load + local.get $1 + call $~lib/rt/pure/__visit ) - (func $~lib/set/Set#__visit_impl (; 212 ;) (param $0 i32) (param $1 i32) + (func $~lib/set/Set#__visit_impl (; 211 ;) (param $0 i32) (param $1 i32) (local $2 i32) local.get $0 i32.load @@ -13415,10 +13924,13 @@ local.get $1 call $~lib/rt/pure/__visit ) - (func $~lib/array/Array#__visit_impl (; 213 ;) (param $0 i32) (param $1 i32) - nop + (func $~lib/array/Array#__visit_impl (; 212 ;) (param $0 i32) (param $1 i32) + local.get $0 + i32.load + local.get $1 + call $~lib/rt/pure/__visit ) - (func $~lib/set/Set#__visit_impl (; 214 ;) (param $0 i32) (param $1 i32) + (func $~lib/set/Set#__visit_impl (; 213 ;) (param $0 i32) (param $1 i32) (local $2 i32) local.get $0 i32.load @@ -13431,10 +13943,13 @@ local.get $1 call $~lib/rt/pure/__visit ) - (func $~lib/array/Array#__visit_impl (; 215 ;) (param $0 i32) (param $1 i32) - nop + (func $~lib/array/Array#__visit_impl (; 214 ;) (param $0 i32) (param $1 i32) + local.get $0 + i32.load + local.get $1 + call $~lib/rt/pure/__visit ) - (func $~lib/set/Set#__visit_impl (; 216 ;) (param $0 i32) (param $1 i32) + (func $~lib/set/Set#__visit_impl (; 215 ;) (param $0 i32) (param $1 i32) (local $2 i32) local.get $0 i32.load @@ -13447,155 +13962,155 @@ local.get $1 call $~lib/rt/pure/__visit ) - (func $~lib/array/Array#__visit_impl (; 217 ;) (param $0 i32) (param $1 i32) - nop + (func $~lib/array/Array#__visit_impl (; 216 ;) (param $0 i32) (param $1 i32) + local.get $0 + i32.load + local.get $1 + call $~lib/rt/pure/__visit ) - (func $~lib/rt/__visit_members (; 218 ;) (param $0 i32) (param $1 i32) + (func $~lib/rt/__visit_members (; 217 ;) (param $0 i32) (param $1 i32) (local $2 i32) - block $block$4$break - block $switch$1$default - block $switch$1$case$24 - block $switch$1$case$23 - block $switch$1$case$22 - block $switch$1$case$21 - block $switch$1$case$20 - block $switch$1$case$19 - block $switch$1$case$18 - block $switch$1$case$17 - block $switch$1$case$16 - block $switch$1$case$15 - block $switch$1$case$14 - block $switch$1$case$13 - block $switch$1$case$12 - block $switch$1$case$11 - block $switch$1$case$10 - block $switch$1$case$9 - block $switch$1$case$8 - block $switch$1$case$7 - block $switch$1$case$6 - block $switch$1$case$5 - block $switch$1$case$4 - block $switch$1$case$2 - local.get $0 - i32.const 8 - i32.sub - i32.load - br_table $switch$1$case$2 $switch$1$case$2 $switch$1$case$4 $switch$1$case$5 $switch$1$case$6 $switch$1$case$7 $switch$1$case$8 $switch$1$case$9 $switch$1$case$10 $switch$1$case$11 $switch$1$case$12 $switch$1$case$13 $switch$1$case$14 $switch$1$case$15 $switch$1$case$16 $switch$1$case$17 $switch$1$case$18 $switch$1$case$19 $switch$1$case$20 $switch$1$case$21 $switch$1$case$22 $switch$1$case$23 $switch$1$case$24 $switch$1$default - end - return + block $switch$1$default + block $switch$1$case$24 + block $switch$1$case$23 + block $switch$1$case$22 + block $switch$1$case$21 + block $switch$1$case$20 + block $switch$1$case$19 + block $switch$1$case$18 + block $switch$1$case$17 + block $switch$1$case$16 + block $switch$1$case$15 + block $switch$1$case$14 + block $switch$1$case$13 + block $switch$1$case$12 + block $switch$1$case$11 + block $switch$1$case$10 + block $switch$1$case$9 + block $switch$1$case$8 + block $switch$1$case$7 + block $switch$1$case$6 + block $switch$1$case$5 + block $switch$1$case$4 + block $switch$1$case$2 + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $switch$1$case$2 $switch$1$case$2 $switch$1$case$4 $switch$1$case$5 $switch$1$case$6 $switch$1$case$7 $switch$1$case$8 $switch$1$case$9 $switch$1$case$10 $switch$1$case$11 $switch$1$case$12 $switch$1$case$13 $switch$1$case$14 $switch$1$case$15 $switch$1$case$16 $switch$1$case$17 $switch$1$case$18 $switch$1$case$19 $switch$1$case$20 $switch$1$case$21 $switch$1$case$22 $switch$1$case$23 $switch$1$case$24 $switch$1$default end - br $block$4$break + return end local.get $0 - local.get $1 - call $~lib/set/Set#__visit_impl + i32.load + local.tee $2 + if + local.get $2 + local.get $1 + call $~lib/rt/pure/__visit + end return end local.get $0 local.get $1 - call $~lib/array/Array#__visit_impl - br $block$4$break + call $~lib/set/Set#__visit_impl + return end local.get $0 local.get $1 - call $~lib/set/Set#__visit_impl + call $~lib/array/Array#__visit_impl return end local.get $0 local.get $1 - call $~lib/array/Array#__visit_impl - br $block$4$break + call $~lib/set/Set#__visit_impl + return end local.get $0 local.get $1 - call $~lib/set/Set#__visit_impl + call $~lib/array/Array#__visit_impl return end local.get $0 local.get $1 - call $~lib/array/Array#__visit_impl - br $block$4$break + call $~lib/set/Set#__visit_impl + return end local.get $0 local.get $1 - call $~lib/set/Set#__visit_impl + call $~lib/array/Array#__visit_impl return end local.get $0 local.get $1 - call $~lib/array/Array#__visit_impl - br $block$4$break + call $~lib/set/Set#__visit_impl + return end local.get $0 local.get $1 - call $~lib/set/Set#__visit_impl + call $~lib/array/Array#__visit_impl return end local.get $0 local.get $1 - call $~lib/array/Array#__visit_impl - br $block$4$break + call $~lib/set/Set#__visit_impl + return end local.get $0 local.get $1 - call $~lib/set/Set#__visit_impl + call $~lib/array/Array#__visit_impl return end local.get $0 local.get $1 - call $~lib/array/Array#__visit_impl - br $block$4$break + call $~lib/set/Set#__visit_impl + return end local.get $0 local.get $1 - call $~lib/set/Set#__visit_impl + call $~lib/array/Array#__visit_impl return end local.get $0 local.get $1 - call $~lib/array/Array#__visit_impl - br $block$4$break + call $~lib/set/Set#__visit_impl + return end local.get $0 local.get $1 - call $~lib/set/Set#__visit_impl + call $~lib/array/Array#__visit_impl return end local.get $0 local.get $1 - call $~lib/array/Array#__visit_impl - br $block$4$break + call $~lib/set/Set#__visit_impl + return end local.get $0 local.get $1 - call $~lib/set/Set#__visit_impl + call $~lib/array/Array#__visit_impl return end local.get $0 local.get $1 - call $~lib/array/Array#__visit_impl - br $block$4$break + call $~lib/set/Set#__visit_impl + return end local.get $0 local.get $1 - call $~lib/set/Set#__visit_impl + call $~lib/array/Array#__visit_impl return end local.get $0 local.get $1 - call $~lib/array/Array#__visit_impl - br $block$4$break + call $~lib/set/Set#__visit_impl + return end - unreachable - end - local.get $0 - i32.load - local.tee $2 - if - local.get $2 + local.get $0 local.get $1 - call $~lib/rt/pure/__visit + call $~lib/array/Array#__visit_impl + return end - return + unreachable ) ) diff --git a/tests/compiler/std/static-array.optimized.wat b/tests/compiler/std/static-array.optimized.wat index 916f5a9d87..f467c5133c 100644 --- a/tests/compiler/std/static-array.optimized.wat +++ b/tests/compiler/std/static-array.optimized.wat @@ -37,7 +37,7 @@ if i32.const 352 i32.const 416 - i32.const 93 + i32.const 104 i32.const 41 call $~lib/builtins/abort unreachable @@ -714,7 +714,7 @@ if i32.const 352 i32.const 416 - i32.const 93 + i32.const 104 i32.const 41 call $~lib/builtins/abort unreachable @@ -753,7 +753,7 @@ if i32.const 352 i32.const 416 - i32.const 93 + i32.const 104 i32.const 41 call $~lib/builtins/abort unreachable @@ -792,7 +792,7 @@ if i32.const 352 i32.const 416 - i32.const 93 + i32.const 104 i32.const 41 call $~lib/builtins/abort unreachable diff --git a/tests/compiler/std/static-array.untouched.wat b/tests/compiler/std/static-array.untouched.wat index 6f0ad8398a..3ea6577110 100644 --- a/tests/compiler/std/static-array.untouched.wat +++ b/tests/compiler/std/static-array.untouched.wat @@ -59,7 +59,7 @@ if i32.const 352 i32.const 416 - i32.const 93 + i32.const 104 i32.const 41 call $~lib/builtins/abort unreachable @@ -1892,7 +1892,7 @@ if i32.const 352 i32.const 416 - i32.const 109 + i32.const 120 i32.const 21 call $~lib/builtins/abort unreachable @@ -1936,7 +1936,7 @@ if i32.const 352 i32.const 416 - i32.const 93 + i32.const 104 i32.const 41 call $~lib/builtins/abort unreachable @@ -1969,7 +1969,7 @@ if i32.const 352 i32.const 416 - i32.const 109 + i32.const 120 i32.const 21 call $~lib/builtins/abort unreachable @@ -2013,7 +2013,7 @@ if i32.const 352 i32.const 416 - i32.const 93 + i32.const 104 i32.const 41 call $~lib/builtins/abort unreachable @@ -2046,7 +2046,7 @@ if i32.const 352 i32.const 416 - i32.const 109 + i32.const 120 i32.const 21 call $~lib/builtins/abort unreachable @@ -2090,7 +2090,7 @@ if i32.const 352 i32.const 416 - i32.const 93 + i32.const 104 i32.const 41 call $~lib/builtins/abort unreachable @@ -2123,7 +2123,7 @@ if i32.const 352 i32.const 416 - i32.const 109 + i32.const 120 i32.const 21 call $~lib/builtins/abort unreachable diff --git a/tests/compiler/std/string.optimized.wat b/tests/compiler/std/string.optimized.wat index d2b157e0e1..d3b63e7488 100644 --- a/tests/compiler/std/string.optimized.wat +++ b/tests/compiler/std/string.optimized.wat @@ -5748,7 +5748,7 @@ if i32.const 12240 i32.const 12192 - i32.const 93 + i32.const 104 i32.const 41 call $~lib/builtins/abort unreachable @@ -5768,7 +5768,7 @@ call $~lib/rt/pure/__release i32.const 12304 i32.const 12192 - i32.const 97 + i32.const 108 i32.const 39 call $~lib/builtins/abort unreachable @@ -16474,6 +16474,7 @@ (func $~lib/array/Array<~lib/string/String>#__visit_impl (; 93 ;) (param $0 i32) (local $1 i32) (local $2 i32) + (local $3 i32) local.get $0 i32.load offset=4 local.tee $1 @@ -16482,17 +16483,17 @@ i32.const 2 i32.shl i32.add - local.set $0 + local.set $2 loop $while-continue|0 local.get $1 - local.get $0 + local.get $2 i32.lt_u if local.get $1 i32.load - local.tee $2 + local.tee $3 if - local.get $2 + local.get $3 call $~lib/rt/pure/__visit end local.get $1 @@ -16502,32 +16503,41 @@ br $while-continue|0 end end + local.get $0 + i32.load + call $~lib/rt/pure/__visit ) (func $~lib/rt/__visit_members (; 94 ;) (param $0 i32) - block $block$4$break + block $folding-inner0 block $switch$1$default block $switch$1$case$6 - block $switch$1$case$2 + block $switch$1$case$4 + block $switch$1$case$2 + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $switch$1$case$2 $switch$1$case$2 $switch$1$case$4 $folding-inner0 $switch$1$case$6 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $switch$1$default + end + return + end + local.get $0 + i32.load + local.tee $0 + if local.get $0 - i32.const 8 - i32.sub - i32.load - br_table $switch$1$case$2 $switch$1$case$2 $block$4$break $block$4$break $switch$1$case$6 $block$4$break $block$4$break $block$4$break $block$4$break $block$4$break $block$4$break $switch$1$default + call $~lib/rt/pure/__visit end return end local.get $0 call $~lib/array/Array<~lib/string/String>#__visit_impl - br $block$4$break + return end unreachable end local.get $0 i32.load - local.tee $0 - if - local.get $0 - call $~lib/rt/pure/__visit - end + call $~lib/rt/pure/__visit ) ) diff --git a/tests/compiler/std/string.untouched.wat b/tests/compiler/std/string.untouched.wat index 1c6b1d32d8..1d80e72946 100644 --- a/tests/compiler/std/string.untouched.wat +++ b/tests/compiler/std/string.untouched.wat @@ -8756,7 +8756,7 @@ if i32.const 12240 i32.const 12192 - i32.const 93 + i32.const 104 i32.const 41 call $~lib/builtins/abort unreachable @@ -8772,7 +8772,7 @@ call $~lib/rt/pure/__release i32.const 12304 i32.const 12192 - i32.const 97 + i32.const 108 i32.const 39 call $~lib/builtins/abort unreachable @@ -20679,7 +20679,10 @@ call $~lib/rt/pure/decrement ) (func $~lib/array/Array#__visit_impl (; 107 ;) (param $0 i32) (param $1 i32) - nop + local.get $0 + i32.load + local.get $1 + call $~lib/rt/pure/__visit ) (func $~lib/array/Array<~lib/string/String>#__visit_impl (; 108 ;) (param $0 i32) (param $1 i32) (local $2 i32) @@ -20719,99 +20722,118 @@ br $while-continue|0 end end + local.get $0 + i32.load + local.get $1 + call $~lib/rt/pure/__visit ) (func $~lib/array/Array#__visit_impl (; 109 ;) (param $0 i32) (param $1 i32) - nop + local.get $0 + i32.load + local.get $1 + call $~lib/rt/pure/__visit ) (func $~lib/array/Array#__visit_impl (; 110 ;) (param $0 i32) (param $1 i32) - nop + local.get $0 + i32.load + local.get $1 + call $~lib/rt/pure/__visit ) (func $~lib/array/Array#__visit_impl (; 111 ;) (param $0 i32) (param $1 i32) - nop + local.get $0 + i32.load + local.get $1 + call $~lib/rt/pure/__visit ) (func $~lib/array/Array#__visit_impl (; 112 ;) (param $0 i32) (param $1 i32) - nop + local.get $0 + i32.load + local.get $1 + call $~lib/rt/pure/__visit ) (func $~lib/array/Array#__visit_impl (; 113 ;) (param $0 i32) (param $1 i32) - nop + local.get $0 + i32.load + local.get $1 + call $~lib/rt/pure/__visit ) (func $~lib/array/Array#__visit_impl (; 114 ;) (param $0 i32) (param $1 i32) - nop + local.get $0 + i32.load + local.get $1 + call $~lib/rt/pure/__visit ) (func $~lib/rt/__visit_members (; 115 ;) (param $0 i32) (param $1 i32) (local $2 i32) - block $block$4$break - block $switch$1$default - block $switch$1$case$12 - block $switch$1$case$11 - block $switch$1$case$10 - block $switch$1$case$9 - block $switch$1$case$8 - block $switch$1$case$7 - block $switch$1$case$6 - block $switch$1$case$5 - block $switch$1$case$4 - block $switch$1$case$2 - local.get $0 - i32.const 8 - i32.sub - i32.load - br_table $switch$1$case$2 $switch$1$case$2 $switch$1$case$4 $switch$1$case$5 $switch$1$case$6 $switch$1$case$7 $switch$1$case$8 $switch$1$case$9 $switch$1$case$10 $switch$1$case$11 $switch$1$case$12 $switch$1$default - end - return + block $switch$1$default + block $switch$1$case$12 + block $switch$1$case$11 + block $switch$1$case$10 + block $switch$1$case$9 + block $switch$1$case$8 + block $switch$1$case$7 + block $switch$1$case$6 + block $switch$1$case$5 + block $switch$1$case$4 + block $switch$1$case$2 + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $switch$1$case$2 $switch$1$case$2 $switch$1$case$4 $switch$1$case$5 $switch$1$case$6 $switch$1$case$7 $switch$1$case$8 $switch$1$case$9 $switch$1$case$10 $switch$1$case$11 $switch$1$case$12 $switch$1$default end - br $block$4$break + return end local.get $0 - local.get $1 - call $~lib/array/Array#__visit_impl - br $block$4$break + i32.load + local.tee $2 + if + local.get $2 + local.get $1 + call $~lib/rt/pure/__visit + end + return end local.get $0 local.get $1 - call $~lib/array/Array<~lib/string/String>#__visit_impl - br $block$4$break + call $~lib/array/Array#__visit_impl + return end local.get $0 local.get $1 - call $~lib/array/Array#__visit_impl - br $block$4$break + call $~lib/array/Array<~lib/string/String>#__visit_impl + return end local.get $0 local.get $1 - call $~lib/array/Array#__visit_impl - br $block$4$break + call $~lib/array/Array#__visit_impl + return end local.get $0 local.get $1 - call $~lib/array/Array#__visit_impl - br $block$4$break + call $~lib/array/Array#__visit_impl + return end local.get $0 local.get $1 - call $~lib/array/Array#__visit_impl - br $block$4$break + call $~lib/array/Array#__visit_impl + return end local.get $0 local.get $1 - call $~lib/array/Array#__visit_impl - br $block$4$break + call $~lib/array/Array#__visit_impl + return end local.get $0 local.get $1 - call $~lib/array/Array#__visit_impl - br $block$4$break + call $~lib/array/Array#__visit_impl + return end - unreachable - end - local.get $0 - i32.load - local.tee $2 - if - local.get $2 + local.get $0 local.get $1 - call $~lib/rt/pure/__visit + call $~lib/array/Array#__visit_impl + return end - return + unreachable ) ) diff --git a/tests/compiler/std/typedarray.optimized.wat b/tests/compiler/std/typedarray.optimized.wat index 0882aa4a6f..ce3b6f6268 100644 --- a/tests/compiler/std/typedarray.optimized.wat +++ b/tests/compiler/std/typedarray.optimized.wat @@ -3300,7 +3300,7 @@ if i32.const 368 i32.const 528 - i32.const 93 + i32.const 104 i32.const 41 call $~lib/builtins/abort unreachable @@ -3523,7 +3523,7 @@ if i32.const 368 i32.const 528 - i32.const 93 + i32.const 104 i32.const 41 call $~lib/builtins/abort unreachable @@ -34014,15 +34014,37 @@ i32.store offset=4 end ) - (func $~lib/rt/__visit_members (; 519 ;) (param $0 i32) - block $block$4$break + (func $~lib/rt/pure/__visit (; 519 ;) (param $0 i32) + local.get $0 + i32.const 7484 + i32.lt_u + if + return + end + local.get $0 + i32.const 16 + i32.sub + call $~lib/rt/pure/decrement + ) + (func $~lib/rt/__visit_members (; 520 ;) (param $0 i32) + block $folding-inner0 block $switch$1$default - block $switch$1$case$2 + block $switch$1$case$4 + block $switch$1$case$2 + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $switch$1$case$2 $switch$1$case$2 $switch$1$case$4 $switch$1$case$4 $switch$1$case$4 $switch$1$case$4 $switch$1$case$4 $switch$1$case$4 $switch$1$case$4 $switch$1$case$4 $switch$1$case$4 $switch$1$case$4 $switch$1$case$4 $switch$1$case$4 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $switch$1$default + end + return + end + local.get $0 + i32.load + local.tee $0 + if local.get $0 - i32.const 8 - i32.sub - i32.load - br_table $switch$1$case$2 $switch$1$case$2 $block$4$break $block$4$break $block$4$break $block$4$break $block$4$break $block$4$break $block$4$break $block$4$break $block$4$break $block$4$break $block$4$break $block$4$break $block$4$break $block$4$break $block$4$break $block$4$break $block$4$break $block$4$break $block$4$break $block$4$break $block$4$break $block$4$break $switch$1$default + call $~lib/rt/pure/__visit end return end @@ -34030,17 +34052,6 @@ end local.get $0 i32.load - local.tee $0 - if - local.get $0 - i32.const 7484 - i32.ge_u - if - local.get $0 - i32.const 16 - i32.sub - call $~lib/rt/pure/decrement - end - end + call $~lib/rt/pure/__visit ) ) diff --git a/tests/compiler/std/typedarray.untouched.wat b/tests/compiler/std/typedarray.untouched.wat index 67dc9ecda7..b2440d76ae 100644 --- a/tests/compiler/std/typedarray.untouched.wat +++ b/tests/compiler/std/typedarray.untouched.wat @@ -5148,7 +5148,7 @@ if i32.const 368 i32.const 528 - i32.const 93 + i32.const 104 i32.const 41 call $~lib/builtins/abort unreachable @@ -5455,7 +5455,7 @@ if i32.const 368 i32.const 528 - i32.const 93 + i32.const 104 i32.const 41 call $~lib/builtins/abort unreachable @@ -52937,121 +52937,148 @@ call $~lib/rt/pure/decrement ) (func $~lib/array/Array#__visit_impl (; 705 ;) (param $0 i32) (param $1 i32) - nop + local.get $0 + i32.load + local.get $1 + call $~lib/rt/pure/__visit ) (func $~lib/array/Array#__visit_impl (; 706 ;) (param $0 i32) (param $1 i32) - nop + local.get $0 + i32.load + local.get $1 + call $~lib/rt/pure/__visit ) (func $~lib/array/Array#__visit_impl (; 707 ;) (param $0 i32) (param $1 i32) - nop + local.get $0 + i32.load + local.get $1 + call $~lib/rt/pure/__visit ) (func $~lib/array/Array#__visit_impl (; 708 ;) (param $0 i32) (param $1 i32) - nop + local.get $0 + i32.load + local.get $1 + call $~lib/rt/pure/__visit ) (func $~lib/array/Array#__visit_impl (; 709 ;) (param $0 i32) (param $1 i32) - nop + local.get $0 + i32.load + local.get $1 + call $~lib/rt/pure/__visit ) (func $~lib/array/Array#__visit_impl (; 710 ;) (param $0 i32) (param $1 i32) - nop + local.get $0 + i32.load + local.get $1 + call $~lib/rt/pure/__visit ) (func $~lib/array/Array#__visit_impl (; 711 ;) (param $0 i32) (param $1 i32) - nop + local.get $0 + i32.load + local.get $1 + call $~lib/rt/pure/__visit ) (func $~lib/array/Array#__visit_impl (; 712 ;) (param $0 i32) (param $1 i32) - nop + local.get $0 + i32.load + local.get $1 + call $~lib/rt/pure/__visit ) (func $~lib/array/Array#__visit_impl (; 713 ;) (param $0 i32) (param $1 i32) - nop + local.get $0 + i32.load + local.get $1 + call $~lib/rt/pure/__visit ) (func $~lib/array/Array#__visit_impl (; 714 ;) (param $0 i32) (param $1 i32) - nop + local.get $0 + i32.load + local.get $1 + call $~lib/rt/pure/__visit ) (func $~lib/rt/__visit_members (; 715 ;) (param $0 i32) (param $1 i32) (local $2 i32) - block $block$4$break - block $switch$1$default - block $switch$1$case$25 - block $switch$1$case$24 - block $switch$1$case$23 - block $switch$1$case$22 - block $switch$1$case$21 - block $switch$1$case$20 - block $switch$1$case$19 - block $switch$1$case$18 - block $switch$1$case$17 - block $switch$1$case$16 - block $switch$1$case$4 - block $switch$1$case$2 - local.get $0 - i32.const 8 - i32.sub - i32.load - br_table $switch$1$case$2 $switch$1$case$2 $switch$1$case$4 $switch$1$case$4 $switch$1$case$4 $switch$1$case$4 $switch$1$case$4 $switch$1$case$4 $switch$1$case$4 $switch$1$case$4 $switch$1$case$4 $switch$1$case$4 $switch$1$case$4 $switch$1$case$4 $switch$1$case$16 $switch$1$case$17 $switch$1$case$18 $switch$1$case$19 $switch$1$case$20 $switch$1$case$21 $switch$1$case$22 $switch$1$case$23 $switch$1$case$24 $switch$1$case$25 $switch$1$default - end - return + block $switch$1$default + block $switch$1$case$25 + block $switch$1$case$24 + block $switch$1$case$23 + block $switch$1$case$22 + block $switch$1$case$21 + block $switch$1$case$20 + block $switch$1$case$19 + block $switch$1$case$18 + block $switch$1$case$17 + block $switch$1$case$16 + block $switch$1$case$4 + block $switch$1$case$2 + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $switch$1$case$2 $switch$1$case$2 $switch$1$case$4 $switch$1$case$4 $switch$1$case$4 $switch$1$case$4 $switch$1$case$4 $switch$1$case$4 $switch$1$case$4 $switch$1$case$4 $switch$1$case$4 $switch$1$case$4 $switch$1$case$4 $switch$1$case$4 $switch$1$case$16 $switch$1$case$17 $switch$1$case$18 $switch$1$case$19 $switch$1$case$20 $switch$1$case$21 $switch$1$case$22 $switch$1$case$23 $switch$1$case$24 $switch$1$case$25 $switch$1$default end - br $block$4$break + return end local.get $0 - local.get $1 - call $~lib/array/Array#__visit_impl - br $block$4$break + i32.load + local.tee $2 + if + local.get $2 + local.get $1 + call $~lib/rt/pure/__visit + end + return end local.get $0 local.get $1 - call $~lib/array/Array#__visit_impl - br $block$4$break + call $~lib/array/Array#__visit_impl + return end local.get $0 local.get $1 - call $~lib/array/Array#__visit_impl - br $block$4$break + call $~lib/array/Array#__visit_impl + return end local.get $0 local.get $1 - call $~lib/array/Array#__visit_impl - br $block$4$break + call $~lib/array/Array#__visit_impl + return end local.get $0 local.get $1 - call $~lib/array/Array#__visit_impl - br $block$4$break + call $~lib/array/Array#__visit_impl + return end local.get $0 local.get $1 - call $~lib/array/Array#__visit_impl - br $block$4$break + call $~lib/array/Array#__visit_impl + return end local.get $0 local.get $1 - call $~lib/array/Array#__visit_impl - br $block$4$break + call $~lib/array/Array#__visit_impl + return end local.get $0 local.get $1 - call $~lib/array/Array#__visit_impl - br $block$4$break + call $~lib/array/Array#__visit_impl + return end local.get $0 local.get $1 - call $~lib/array/Array#__visit_impl - br $block$4$break + call $~lib/array/Array#__visit_impl + return end local.get $0 local.get $1 - call $~lib/array/Array#__visit_impl - br $block$4$break + call $~lib/array/Array#__visit_impl + return end - unreachable - end - local.get $0 - i32.load - local.tee $2 - if - local.get $2 + local.get $0 local.get $1 - call $~lib/rt/pure/__visit + call $~lib/array/Array#__visit_impl + return end - return + unreachable ) )