diff --git a/lib/loader/index.js b/lib/loader/index.js index 96312c2a0b..d6b9b911dd 100644 --- a/lib/loader/index.js +++ b/lib/loader/index.js @@ -162,7 +162,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); @@ -188,7 +188,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 fa94a9755a..be768a17f9 100644 Binary files a/lib/loader/tests/build/default.wasm and b/lib/loader/tests/build/default.wasm differ diff --git a/lib/loader/tests/build/legacy.wasm b/lib/loader/tests/build/legacy.wasm index fa94a9755a..be768a17f9 100644 Binary files a/lib/loader/tests/build/legacy.wasm and b/lib/loader/tests/build/legacy.wasm differ diff --git a/src/builtins.ts b/src/builtins.ts index 3ea0512792..8800a8c4c9 100644 --- a/src/builtins.ts +++ b/src/builtins.ts @@ -7910,7 +7910,10 @@ export function compileRTTI(compiler: Compiler): void { if (instance !== abvInstance && instance.extends(abvPrototype)) { let valueType = instance.getArrayValueType(); flags |= TypeinfoFlags.ARRAYBUFFERVIEW; - if (instance.extends(arrayPrototype)) flags |= TypeinfoFlags.ARRAY; + flags |= TypeinfoFlags.VALUE_ALIGN_0 * typeToRuntimeFlags(valueType); + } else if (instance.extends(arrayPrototype)) { + let valueType = instance.getArrayValueType(); + flags |= TypeinfoFlags.ARRAY; flags |= TypeinfoFlags.VALUE_ALIGN_0 * typeToRuntimeFlags(valueType); } else if (instance.extends(setPrototype)) { let typeArguments = assert(instance.getTypeArgumentsTo(setPrototype)); diff --git a/src/program.ts b/src/program.ts index f04f86a3de..65f24ac79f 100644 --- a/src/program.ts +++ b/src/program.ts @@ -3751,25 +3751,37 @@ export class Class extends TypedElement { getArrayValueType(): Type { var current: Class = this; var program = this.program; + var arrayPrototype = program.arrayPrototype; + if (this.extends(arrayPrototype)) { + return this.getTypeArgumentsTo(arrayPrototype)![0]; + } var abvInstance = program.arrayBufferViewInstance; while (current.base !== abvInstance) { current = assert(current.base); } var prototype = current.prototype; - if (prototype == program.arrayPrototype) { - return this.getTypeArgumentsTo(program.arrayPrototype)![0]; - } - if (prototype == program.i8ArrayPrototype) return Type.i8; - if (prototype == program.i16ArrayPrototype) return Type.i16; - if (prototype == program.i32ArrayPrototype) return Type.i32; - if (prototype == program.i64ArrayPrototype) return Type.i64; - if (prototype == program.u8ArrayPrototype) return Type.u8; - if (prototype == program.u8ClampedArrayPrototype) return Type.u8; - if (prototype == program.u16ArrayPrototype) return Type.u16; - if (prototype == program.u32ArrayPrototype) return Type.u32; - if (prototype == program.u64ArrayPrototype) return Type.u64; - if (prototype == program.f32ArrayPrototype) return Type.f32; - if (prototype == program.f64ArrayPrototype) return Type.f64; + switch (prototype.name.charCodeAt(0)) { + case CharCode.F: { + if (prototype == program.f32ArrayPrototype) return Type.f32; + if (prototype == program.f64ArrayPrototype) return Type.f64; + break; + } + case CharCode.I: { + if (prototype == program.i8ArrayPrototype) return Type.i8; + if (prototype == program.i16ArrayPrototype) return Type.i16; + if (prototype == program.i32ArrayPrototype) return Type.i32; + if (prototype == program.i64ArrayPrototype) return Type.i64; + break; + } + case CharCode.U: { + if (prototype == program.u8ArrayPrototype) return Type.u8; + if (prototype == program.u8ClampedArrayPrototype) return Type.u8; + if (prototype == program.u16ArrayPrototype) return Type.u16; + if (prototype == program.u32ArrayPrototype) return Type.u32; + if (prototype == program.u64ArrayPrototype) return Type.u64; + break; + } + } assert(false); return Type.void; } diff --git a/std/assembly/array.ts b/std/assembly/array.ts index c00b91c9a4..d70f80b511 100644 --- a/std/assembly/array.ts +++ b/std/assembly/array.ts @@ -2,13 +2,13 @@ import { BLOCK_MAXSIZE } from "./rt/common"; import { COMPARATOR, SORT } from "./util/sort"; -import { ArrayBufferView } from "./arraybuffer"; import { joinBooleanArray, joinIntegerArray, joinFloatArray, joinStringArray, joinReferenceArray } from "./util/string"; import { idof, isArray as builtin_isArray } from "./builtins"; import { E_INDEXOUTOFRANGE, E_INVALIDLENGTH, E_EMPTYARRAY, E_HOLEYARRAY } from "./util/error"; /** Ensures that the given array has _at least_ the specified backing size. */ function ensureSize(array: usize, minSize: usize, alignLog2: u32): void { + // depends on the fact that Arrays mimic ArrayBufferView var oldCapacity = changetype(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 0835b62a1c..08edf9958c 100644 --- a/tests/compiler/assert-nonnull.optimized.wat +++ b/tests/compiler/assert-nonnull.optimized.wat @@ -85,7 +85,7 @@ if i32.const 1104 i32.const 1168 - i32.const 93 + i32.const 104 i32.const 41 call $~lib/builtins/abort unreachable @@ -98,7 +98,7 @@ if i32.const 1216 i32.const 1168 - i32.const 97 + i32.const 108 i32.const 39 call $~lib/builtins/abort unreachable @@ -113,7 +113,7 @@ if i32.const 1104 i32.const 1168 - 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 8f7d923567..7964ff82de 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 24 - f64.const 24 + f64.const 25 + f64.const 25 call $~lib/builtins/trace i32.const 1216 i32.const 1216 diff --git a/tests/compiler/builtins.untouched.wat b/tests/compiler/builtins.untouched.wat index 9078460fbe..67af71b06b 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 24 + i32.const 25 local.set $7 - i32.const 24 + i32.const 25 local.set $8 i32.const 128 i32.const 5 diff --git a/tests/compiler/class.optimized.wat b/tests/compiler/class.optimized.wat index 648c59f207..55e85d2f02 100644 --- a/tests/compiler/class.optimized.wat +++ b/tests/compiler/class.optimized.wat @@ -4,7 +4,7 @@ (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) (memory $0 1) (data (i32.const 1024) "\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 1072) "&\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 1072) "\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") (global $~lib/rt/stub/startOffset (mut i32) (i32.const 0)) (global $~lib/rt/stub/offset (mut i32) (i32.const 0)) (export "memory" (memory $0)) @@ -123,23 +123,14 @@ i32.const 4 i32.const 4 call $~lib/rt/stub/__alloc - i32.const 16 - i32.const 5 - call $~lib/rt/stub/__alloc - local.set $0 i32.const 0 i32.const 0 call $~lib/rt/stub/__alloc local.set $1 - local.get $0 - i32.eqz - if - i32.const 12 - i32.const 2 - call $~lib/rt/stub/__alloc - local.set $0 - end - local.get $0 + i32.const 16 + i32.const 5 + call $~lib/rt/stub/__alloc + local.tee $0 i32.const 0 i32.store local.get $0 @@ -149,6 +140,9 @@ i32.const 0 i32.store offset=8 local.get $0 + i32.const 0 + i32.store offset=12 + local.get $0 i32.load drop local.get $0 @@ -164,15 +158,12 @@ i32.const 0 i32.store offset=12 local.get $0 - i32.const 0 - i32.store offset=12 - local.get $0 i32.store ) (func $~start (; 3 ;) - i32.const 1136 + i32.const 1120 global.set $~lib/rt/stub/startOffset - i32.const 1136 + i32.const 1120 global.set $~lib/rt/stub/offset ) ) diff --git a/tests/compiler/class.untouched.wat b/tests/compiler/class.untouched.wat index b70dbf4330..92d37c3fd8 100644 --- a/tests/compiler/class.untouched.wat +++ b/tests/compiler/class.untouched.wat @@ -3,21 +3,21 @@ (type $i32_=>_i32 (func (param i32) (result i32))) (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) (type $i32_=>_none (func (param i32))) - (type $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) + (type $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) (type $i32_f32_f32_=>_f32 (func (param i32 f32 f32) (result f32))) (type $f32_f32_=>_f32 (func (param f32 f32) (result f32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 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 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") (table $0 1 funcref) (global $class/Animal.ONE (mut i32) (i32.const 1)) (global $~lib/rt/stub/startOffset (mut i32) (i32.const 0)) (global $~lib/rt/stub/offset (mut i32) (i32.const 0)) (global $~lib/ASC_SHRINK_LEVEL i32 (i32.const 0)) - (global $~lib/heap/__heap_base i32 (i32.const 120)) + (global $~lib/heap/__heap_base i32 (i32.const 108)) (export "memory" (memory $0)) (export "test" (func $class/test)) (export "testGenericInitializer" (func $class/testGenericInitializer)) @@ -440,40 +440,40 @@ end end ) - (func $~lib/arraybuffer/ArrayBufferView#constructor (; 12 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/array/Array#constructor (; 12 ;) (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/stub/__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 5 call $~lib/rt/stub/__alloc call $~lib/rt/stub/__retain local.set $0 @@ -488,6 +488,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 @@ -508,33 +511,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 (; 13 ;) (param $0 i32) (param $1 i32) (result i32) - local.get $0 - if (result i32) - local.get $0 - else - i32.const 16 - i32.const 5 - call $~lib/rt/stub/__alloc - call $~lib/rt/stub/__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 $class/GenericInitializer#constructor (; 14 ;) (param $0 i32) (result i32) + (func $class/GenericInitializer#constructor (; 13 ;) (param $0 i32) (result i32) local.get $0 i32.eqz if @@ -551,12 +535,12 @@ i32.store local.get $0 ) - (func $class/testGenericInitializer (; 15 ;) + (func $class/testGenericInitializer (; 14 ;) i32.const 0 call $class/GenericInitializer#constructor call $~lib/rt/stub/__release ) - (func $~start (; 16 ;) + (func $~start (; 15 ;) call $start:class global.get $~lib/heap/__heap_base i32.const 15 diff --git a/tests/compiler/extends-baseaggregate.optimized.wat b/tests/compiler/extends-baseaggregate.optimized.wat index 3b0f573d31..717e936a8d 100644 --- a/tests/compiler/extends-baseaggregate.optimized.wat +++ b/tests/compiler/extends-baseaggregate.optimized.wat @@ -22,7 +22,7 @@ (data (i32.const 1376) "$\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 1440) "\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 1488) "\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 1544) "\04\00\00\00\93 \00\00\02\00\00\00\93 \00\00\02") + (data (i32.const 1544) "\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)) @@ -2184,6 +2184,7 @@ (func $~lib/array/Array#__visit_impl (; 25 ;) (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 @@ -2192,17 +2193,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 @@ -2213,24 +2214,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 (; 26 ;) (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 @@ -2240,24 +2245,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 f90cf9b27c..15488bc082 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)) @@ -3886,6 +3886,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) @@ -3925,28 +3929,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 @@ -3956,25 +3961,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 ef7a1d884d..f65b01d7cb 100644 --- a/tests/compiler/infer-array.optimized.wat +++ b/tests/compiler/infer-array.optimized.wat @@ -497,7 +497,7 @@ end i32.const 1072 i32.const 1136 - 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 14690361fa..485260a5d2 100644 --- a/tests/compiler/infer-array.untouched.wat +++ b/tests/compiler/infer-array.untouched.wat @@ -1454,7 +1454,7 @@ if i32.const 64 i32.const 128 - i32.const 93 + i32.const 104 i32.const 41 call $~lib/builtins/abort unreachable @@ -1486,7 +1486,7 @@ if i32.const 64 i32.const 128 - i32.const 93 + i32.const 104 i32.const 41 call $~lib/builtins/abort unreachable @@ -1515,7 +1515,7 @@ if i32.const 64 i32.const 128 - i32.const 93 + i32.const 104 i32.const 41 call $~lib/builtins/abort unreachable @@ -1544,7 +1544,7 @@ if i32.const 64 i32.const 128 - i32.const 93 + i32.const 104 i32.const 41 call $~lib/builtins/abort unreachable @@ -1586,7 +1586,7 @@ if i32.const 64 i32.const 128 - i32.const 93 + i32.const 104 i32.const 41 call $~lib/builtins/abort unreachable @@ -1616,7 +1616,7 @@ if i32.const 64 i32.const 128 - i32.const 93 + i32.const 104 i32.const 41 call $~lib/builtins/abort unreachable @@ -1645,7 +1645,7 @@ if i32.const 64 i32.const 128 - i32.const 93 + i32.const 104 i32.const 41 call $~lib/builtins/abort unreachable @@ -1675,7 +1675,7 @@ if i32.const 64 i32.const 128 - i32.const 93 + i32.const 104 i32.const 41 call $~lib/builtins/abort unreachable @@ -1691,7 +1691,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 e4e8930e89..52bee2972d 100644 --- a/tests/compiler/resolve-access.optimized.wat +++ b/tests/compiler/resolve-access.optimized.wat @@ -485,7 +485,7 @@ if i32.const 1072 i32.const 1136 - 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 dc3a4501f2..ef2b7ce90b 100644 --- a/tests/compiler/resolve-access.untouched.wat +++ b/tests/compiler/resolve-access.untouched.wat @@ -1448,7 +1448,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/retain-release-sanity.optimized.wat b/tests/compiler/retain-release-sanity.optimized.wat index 89352f41c6..600843a035 100644 --- a/tests/compiler/retain-release-sanity.optimized.wat +++ b/tests/compiler/retain-release-sanity.optimized.wat @@ -2,9 +2,9 @@ (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 $i32_i32_i32_=>_none (func (param i32 i32 i32))) + (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) (type $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) (type $none_=>_i32 (func (result i32))) @@ -16,20 +16,19 @@ (import "rtrace" "ondecrement" (func $~lib/rt/rtrace/ondecrement (param i32))) (memory $0 1) (data (i32.const 1024) "\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 1072) "&\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 1136) "\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 1184) "(\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 1248) "\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 1296) "\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 1344) "\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 1396) "\01\00\00\00\01") - (data (i32.const 1408) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00a") - (data (i32.const 1440) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00b") - (data (i32.const 1472) "\08\00\00\00\01\00\00\00\01\00\00\00\08\00\00\00n\00u\00l\00l") - (data (i32.const 1504) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00d") - (data (i32.const 1536) "$\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 1600) "\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 1648) "\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 1072) "\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 1120) "\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 1168) "(\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 1232) "\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 1280) "\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 1332) "\01\00\00\00\01") + (data (i32.const 1344) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00a") + (data (i32.const 1376) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00b") + (data (i32.const 1408) "\08\00\00\00\01\00\00\00\01\00\00\00\08\00\00\00n\00u\00l\00l") + (data (i32.const 1440) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00d") + (data (i32.const 1472) "$\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 1536) "\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 1584) "\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 1152 + i32.const 1136 i32.const 277 i32.const 13 call $~lib/builtins/abort @@ -72,7 +71,7 @@ i32.eqz if i32.const 0 - i32.const 1152 + i32.const 1136 i32.const 279 i32.const 13 call $~lib/builtins/abort @@ -115,7 +114,7 @@ i32.eqz if i32.const 0 - i32.const 1152 + i32.const 1136 i32.const 292 i32.const 13 call $~lib/builtins/abort @@ -211,7 +210,7 @@ i32.eqz if i32.const 0 - i32.const 1152 + i32.const 1136 i32.const 205 i32.const 13 call $~lib/builtins/abort @@ -225,7 +224,7 @@ i32.eqz if i32.const 0 - i32.const 1152 + i32.const 1136 i32.const 207 i32.const 13 call $~lib/builtins/abort @@ -298,7 +297,7 @@ i32.eqz if i32.const 0 - i32.const 1152 + i32.const 1136 i32.const 228 i32.const 15 call $~lib/builtins/abort @@ -353,7 +352,7 @@ i32.eqz if i32.const 0 - i32.const 1152 + i32.const 1136 i32.const 243 i32.const 13 call $~lib/builtins/abort @@ -368,7 +367,7 @@ i32.ne if i32.const 0 - i32.const 1152 + i32.const 1136 i32.const 244 i32.const 13 call $~lib/builtins/abort @@ -416,7 +415,7 @@ i32.eqz if i32.const 0 - i32.const 1152 + i32.const 1136 i32.const 260 i32.const 13 call $~lib/builtins/abort @@ -499,7 +498,7 @@ i32.eqz if i32.const 0 - i32.const 1152 + i32.const 1136 i32.const 386 i32.const 4 call $~lib/builtins/abort @@ -516,7 +515,7 @@ i32.lt_u if i32.const 0 - i32.const 1152 + i32.const 1136 i32.const 396 i32.const 15 call $~lib/builtins/abort @@ -544,7 +543,7 @@ i32.lt_u if i32.const 0 - i32.const 1152 + i32.const 1136 i32.const 408 i32.const 4 call $~lib/builtins/abort @@ -617,11 +616,11 @@ if unreachable end - i32.const 1728 + i32.const 1664 local.tee $0 i32.const 0 i32.store - i32.const 3296 + i32.const 3232 i32.const 0 i32.store loop $for-loop|0 @@ -632,7 +631,7 @@ local.get $1 i32.const 2 i32.shl - i32.const 1728 + i32.const 1664 i32.add i32.const 0 i32.store offset=4 @@ -650,7 +649,7 @@ i32.add i32.const 2 i32.shl - i32.const 1728 + i32.const 1664 i32.add i32.const 0 i32.store offset=96 @@ -668,13 +667,13 @@ br $for-loop|0 end end - i32.const 1728 - i32.const 3312 + i32.const 1664 + i32.const 3248 memory.size i32.const 16 i32.shl call $~lib/rt/tlsf/addMemory - i32.const 1728 + i32.const 1664 global.set $~lib/rt/tlsf/ROOT end local.get $0 @@ -684,8 +683,8 @@ i32.const 1073741808 i32.ge_u if - i32.const 1200 - i32.const 1152 + i32.const 1184 + i32.const 1136 i32.const 457 i32.const 29 call $~lib/builtins/abort @@ -758,7 +757,7 @@ i32.eqz if i32.const 0 - i32.const 1152 + i32.const 1136 i32.const 338 i32.const 13 call $~lib/builtins/abort @@ -810,7 +809,7 @@ i32.eqz if i32.const 0 - i32.const 1152 + i32.const 1136 i32.const 351 i32.const 17 call $~lib/builtins/abort @@ -843,7 +842,7 @@ i32.and if i32.const 0 - i32.const 1152 + i32.const 1136 i32.const 365 i32.const 13 call $~lib/builtins/abort @@ -914,7 +913,7 @@ global.get $~lib/rt/tlsf/collectLock if i32.const 0 - i32.const 1152 + i32.const 1136 i32.const 490 i32.const 13 call $~lib/builtins/abort @@ -1006,7 +1005,7 @@ i32.eqz if i32.const 0 - i32.const 1152 + i32.const 1136 i32.const 502 i32.const 19 call $~lib/builtins/abort @@ -1022,7 +1021,7 @@ i32.lt_u if i32.const 0 - i32.const 1152 + i32.const 1136 i32.const 510 i32.const 13 call $~lib/builtins/abort @@ -1218,7 +1217,7 @@ (local $1 i32) (local $2 i32) local.get $0 - i32.const 1716 + i32.const 1652 i32.gt_u if local.get $0 @@ -1237,7 +1236,7 @@ i32.ne if i32.const 0 - i32.const 1264 + i32.const 1248 i32.const 109 i32.const 2 call $~lib/builtins/abort @@ -1256,7 +1255,7 @@ i32.and if i32.const 0 - i32.const 1264 + i32.const 1248 i32.const 112 i32.const 13 call $~lib/builtins/abort @@ -1267,7 +1266,7 @@ ) (func $~lib/rt/pure/__release (; 17 ;) (param $0 i32) local.get $0 - i32.const 1716 + i32.const 1652 i32.gt_u if local.get $0 @@ -1276,73 +1275,7 @@ call $~lib/rt/pure/decrement end ) - (func $~lib/arraybuffer/ArrayBufferView#constructor (; 18 ;) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - local.get $1 - i32.const 268435452 - i32.gt_u - if - i32.const 1040 - i32.const 1088 - i32.const 23 - i32.const 56 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 2 - i32.shl - local.tee $3 - 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 - 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 $2 - local.tee $1 - local.get $0 - i32.load - local.tee $4 - i32.ne - if - local.get $1 - call $~lib/rt/pure/__retain - local.set $1 - local.get $4 - call $~lib/rt/pure/__release - end - local.get $0 - local.get $1 - i32.store - local.get $0 - local.get $2 - i32.store offset=4 - local.get $0 - local.get $3 - i32.store offset=8 - local.get $0 - ) - (func $~lib/rt/tlsf/checkUsedBlock (; 19 ;) (param $0 i32) (result i32) + (func $~lib/rt/tlsf/checkUsedBlock (; 18 ;) (param $0 i32) (result i32) (local $1 i32) local.get $0 i32.const 16 @@ -1376,7 +1309,7 @@ i32.eqz if i32.const 0 - i32.const 1152 + i32.const 1136 i32.const 570 i32.const 2 call $~lib/builtins/abort @@ -1384,7 +1317,7 @@ end local.get $1 ) - (func $~lib/memory/memory.copy (; 20 ;) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/memory/memory.copy (; 19 ;) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) block $~lib/util/memory/memmove|inlined.0 @@ -1557,7 +1490,7 @@ end end ) - (func $~lib/rt/tlsf/freeBlock (; 21 ;) (param $0 i32) (param $1 i32) + (func $~lib/rt/tlsf/freeBlock (; 20 ;) (param $0 i32) (param $1 i32) local.get $1 local.get $1 i32.load @@ -1570,7 +1503,7 @@ local.get $1 call $~lib/rt/rtrace/onfree ) - (func $~lib/rt/tlsf/reallocateBlock (; 22 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/rt/tlsf/reallocateBlock (; 21 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -1661,7 +1594,7 @@ local.get $2 call $~lib/memory/memory.copy local.get $1 - i32.const 1716 + i32.const 1652 i32.ge_u if local.get $1 @@ -1673,7 +1606,7 @@ end local.get $3 ) - (func $~lib/array/ensureSize (; 23 ;) (param $0 i32) (param $1 i32) + (func $~lib/array/ensureSize (; 22 ;) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -1690,7 +1623,7 @@ i32.gt_u if i32.const 1040 - i32.const 1312 + i32.const 1088 i32.const 14 i32.const 47 call $~lib/builtins/abort @@ -1732,7 +1665,7 @@ i32.store offset=8 end ) - (func $~lib/array/Array#push (; 24 ;) (param $0 i32) + (func $~lib/array/Array#push (; 23 ;) (param $0 i32) (local $1 i32) (local $2 i32) local.get $0 @@ -1755,7 +1688,7 @@ local.get $2 i32.store offset=12 ) - (func $~lib/string/String#get:length (; 25 ;) (param $0 i32) (result i32) + (func $~lib/string/String#get:length (; 24 ;) (param $0 i32) (result i32) local.get $0 i32.const 16 i32.sub @@ -1763,13 +1696,13 @@ i32.const 1 i32.shr_u ) - (func $~lib/string/String.__concat (; 26 ;) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/string/String.__concat (; 25 ;) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) block $__inlined_func$~lib/string/String#concat (result i32) local.get $0 - i32.const 1488 + i32.const 1424 local.get $0 select local.set $2 @@ -1779,13 +1712,13 @@ i32.eqz if local.get $0 - i32.const 1488 + i32.const 1424 i32.ne if local.get $0 call $~lib/rt/pure/__release end - i32.const 1488 + i32.const 1424 local.set $0 end local.get $2 @@ -1804,7 +1737,7 @@ if local.get $0 call $~lib/rt/pure/__release - i32.const 1408 + i32.const 1344 br $__inlined_func$~lib/string/String#concat end local.get $1 @@ -1826,22 +1759,57 @@ local.get $1 end ) - (func $start:retain-release-sanity (; 27 ;) + (func $start:retain-release-sanity (; 26 ;) (local $0 i32) (local $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) + i32.const 12 + i32.const 0 + call $~lib/rt/tlsf/__alloc + local.tee $1 + i32.const 12 + call $~lib/memory/memory.fill 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 $2 i32.const 0 + i32.store + local.get $2 + i32.const 0 + i32.store offset=4 + local.get $2 + i32.const 0 + i32.store offset=8 + local.get $2 + i32.const 0 i32.store offset=12 + local.get $1 + local.tee $0 + local.get $2 + i32.load + local.tee $4 + i32.ne + if + local.get $0 + call $~lib/rt/pure/__retain + local.set $0 + local.get $4 + call $~lib/rt/pure/__release + end + local.get $2 + local.get $0 + i32.store + local.get $2 + local.get $1 + i32.store offset=4 + local.get $2 + i32.const 12 + i32.store offset=8 local.get $2 i32.const 3 i32.store offset=12 @@ -1850,94 +1818,165 @@ local.get $2 call $~lib/array/Array#push local.get $2 - local.tee $0 - i32.load offset=12 local.tee $1 + i32.load offset=12 + local.tee $0 i32.const 1 i32.lt_s if - i32.const 1360 - i32.const 1312 - i32.const 288 + i32.const 1296 + i32.const 1088 + i32.const 299 i32.const 20 call $~lib/builtins/abort unreachable end - local.get $0 - i32.load offset=4 local.get $1 + i32.load offset=4 + local.get $0 i32.const 1 i32.sub - local.tee $1 + local.tee $0 i32.const 2 i32.shl i32.add i32.load drop - local.get $0 local.get $1 - i32.store offset=12 local.get $0 + i32.store offset=12 + local.get $1 call $~lib/rt/pure/__release + 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 $2 i32.const 0 - call $~lib/arraybuffer/ArrayBufferView#constructor - local.tee $0 + i32.store + local.get $2 + i32.const 0 + i32.store offset=4 + local.get $2 + i32.const 0 + i32.store offset=8 + local.get $2 i32.const 0 i32.store offset=12 + local.get $1 + local.tee $0 + local.get $2 + i32.load + local.tee $4 + i32.ne + if + local.get $0 + call $~lib/rt/pure/__retain + local.set $0 + local.get $4 + call $~lib/rt/pure/__release + end + local.get $2 local.get $0 + i32.store + local.get $2 + local.get $1 + i32.store offset=4 + local.get $2 + i32.const 0 + i32.store offset=8 + local.get $2 i32.const 0 i32.store offset=12 + local.get $2 loop $for-loop|0 local.get $3 i32.const 10 i32.lt_s if + 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 - i32.const 0 - call $~lib/arraybuffer/ArrayBufferView#constructor local.tee $2 i32.const 0 + i32.store + local.get $2 + i32.const 0 + i32.store offset=4 + local.get $2 + i32.const 0 + i32.store offset=8 + local.get $2 + i32.const 0 i32.store offset=12 + local.get $1 + local.tee $0 + local.get $2 + i32.load + local.tee $5 + i32.ne + if + local.get $0 + call $~lib/rt/pure/__retain + local.set $0 + local.get $5 + call $~lib/rt/pure/__release + end + local.get $2 + local.get $0 + i32.store + local.get $2 + local.get $1 + i32.store offset=4 + local.get $2 + i32.const 0 + i32.store offset=8 local.get $2 i32.const 0 i32.store offset=12 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 $2 local.get $2 i32.load offset=12 - local.tee $4 + local.tee $5 i32.const 1 i32.add - local.tee $5 + local.tee $1 call $~lib/array/ensureSize local.get $2 i32.load offset=4 - local.get $4 + local.get $5 i32.const 2 i32.shl i32.add - i32.const 1408 + i32.const 1344 i32.store local.get $2 - local.get $5 - i32.store offset=12 local.get $1 + i32.store offset=12 + local.get $0 i32.const 1 i32.add - local.set $1 + local.set $0 br $for-loop|1 end end @@ -1950,52 +1989,50 @@ br $for-loop|0 end end - local.get $0 call $~lib/rt/pure/__release - i32.const 1424 - i32.const 1456 + i32.const 1360 + i32.const 1392 call $~lib/string/String.__concat - local.tee $0 - i32.const 1520 + local.tee $3 + i32.const 1456 call $~lib/string/String.__concat - local.get $0 + local.get $3 call $~lib/rt/pure/__release call $~lib/rt/pure/__release i32.const 4 i32.const 6 call $~lib/rt/tlsf/__alloc call $~lib/rt/pure/__retain - local.tee $0 + local.tee $2 i32.const 0 i32.store + local.get $2 i32.const 4 i32.const 7 call $~lib/rt/tlsf/__alloc call $~lib/rt/pure/__retain - local.tee $2 + local.tee $1 i32.const 0 i32.store + local.get $1 + local.tee $0 local.get $2 - local.tee $1 - local.get $0 - local.tee $4 i32.load - local.tee $3 + local.tee $4 i32.ne if - local.get $1 + local.get $0 call $~lib/rt/pure/__retain - local.set $1 - local.get $3 + local.set $0 + local.get $4 call $~lib/rt/pure/__release end - local.get $4 - local.get $1 + local.get $0 i32.store - local.get $2 + local.get $1 local.tee $3 - local.get $4 - local.tee $1 + local.get $2 + local.tee $0 i32.load local.tee $4 i32.ne @@ -2006,13 +2043,13 @@ local.get $4 call $~lib/rt/pure/__release end - local.get $1 + local.get $0 local.get $3 i32.store - local.get $1 + local.get $0 local.tee $3 - local.get $2 - local.tee $1 + local.get $1 + local.tee $0 i32.load local.tee $4 i32.ne @@ -2023,12 +2060,12 @@ local.get $4 call $~lib/rt/pure/__release end - local.get $1 + local.get $0 local.get $3 i32.store - local.get $0 + local.get $2 local.tee $3 - local.get $1 + local.get $0 i32.load local.tee $4 i32.ne @@ -2039,50 +2076,50 @@ local.get $4 call $~lib/rt/pure/__release end - local.get $1 + local.get $0 local.get $3 i32.store - local.get $1 local.get $0 + local.get $2 local.tee $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 $3 - local.get $1 - i32.store local.get $0 + i32.store local.get $2 + local.get $1 i32.load - local.tee $1 + local.tee $0 i32.ne if local.get $3 call $~lib/rt/pure/__retain local.set $3 - local.get $1 + local.get $0 call $~lib/rt/pure/__release end - local.get $2 + local.get $1 local.get $3 i32.store - local.get $0 - call $~lib/rt/pure/__release local.get $2 call $~lib/rt/pure/__release + local.get $1 + call $~lib/rt/pure/__release call $~lib/rt/pure/__collect ) - (func $~start (; 28 ;) + (func $~start (; 27 ;) call $start:retain-release-sanity ) - (func $~lib/rt/pure/markGray (; 29 ;) (param $0 i32) + (func $~lib/rt/pure/markGray (; 28 ;) (param $0 i32) (local $1 i32) local.get $0 i32.load offset=4 @@ -2106,7 +2143,7 @@ call $~lib/rt/__visit_members end ) - (func $~lib/rt/pure/scanBlack (; 30 ;) (param $0 i32) + (func $~lib/rt/pure/scanBlack (; 29 ;) (param $0 i32) local.get $0 local.get $0 i32.load offset=4 @@ -2119,7 +2156,7 @@ i32.const 4 call $~lib/rt/__visit_members ) - (func $~lib/rt/pure/scan (; 31 ;) (param $0 i32) + (func $~lib/rt/pure/scan (; 30 ;) (param $0 i32) (local $1 i32) local.get $0 i32.load offset=4 @@ -2153,7 +2190,7 @@ end end ) - (func $~lib/rt/pure/collectWhite (; 32 ;) (param $0 i32) + (func $~lib/rt/pure/collectWhite (; 31 ;) (param $0 i32) (local $1 i32) local.get $0 i32.load offset=4 @@ -2186,7 +2223,7 @@ call $~lib/rt/tlsf/freeBlock end ) - (func $~lib/rt/pure/__collect (; 33 ;) + (func $~lib/rt/pure/__collect (; 32 ;) (local $0 i32) (local $1 i32) (local $2 i32) @@ -2307,7 +2344,7 @@ local.get $0 global.set $~lib/rt/pure/CUR ) - (func $~lib/rt/pure/decrement (; 34 ;) (param $0 i32) + (func $~lib/rt/pure/decrement (; 33 ;) (param $0 i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -2326,7 +2363,7 @@ i32.and if i32.const 0 - i32.const 1264 + i32.const 1248 i32.const 122 i32.const 13 call $~lib/builtins/abort @@ -2359,7 +2396,7 @@ i32.le_u if i32.const 0 - i32.const 1264 + i32.const 1248 i32.const 136 i32.const 15 call $~lib/builtins/abort @@ -2368,12 +2405,12 @@ local.get $0 i32.load offset=8 local.tee $3 - i32.const 1648 + i32.const 1584 i32.load i32.gt_u if + i32.const 1488 i32.const 1552 - i32.const 1616 i32.const 22 i32.const 27 call $~lib/builtins/abort @@ -2382,7 +2419,7 @@ local.get $3 i32.const 3 i32.shl - i32.const 1652 + i32.const 1588 i32.add i32.load i32.const 16 @@ -2474,9 +2511,9 @@ end end ) - (func $~lib/rt/pure/__visit (; 35 ;) (param $0 i32) (param $1 i32) + (func $~lib/rt/pure/__visit (; 34 ;) (param $0 i32) (param $1 i32) local.get $0 - i32.const 1716 + i32.const 1652 i32.lt_u if return @@ -2512,7 +2549,7 @@ i32.le_u if i32.const 0 - i32.const 1264 + i32.const 1248 i32.const 79 i32.const 19 call $~lib/builtins/abort @@ -2545,7 +2582,7 @@ i32.ne if i32.const 0 - i32.const 1264 + i32.const 1248 i32.const 90 i32.const 8 call $~lib/builtins/abort @@ -2570,16 +2607,17 @@ br $break|0 end i32.const 0 - i32.const 1264 + i32.const 1248 i32.const 101 i32.const 26 call $~lib/builtins/abort unreachable end ) - (func $~lib/array/Array<~lib/string/String>#__visit_impl (; 36 ;) (param $0 i32) (param $1 i32) + (func $~lib/array/Array<~lib/string/String>#__visit_impl (; 35 ;) (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 @@ -2588,17 +2626,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 @@ -2609,40 +2647,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 (; 37 ;) (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 (; 36 ;) (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 e73e424200..705f8a70dc 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 @@ -1636,7 +1635,7 @@ i32.eqz if i32.const 0 - i32.const 256 + i32.const 240 i32.const 109 i32.const 2 call $~lib/builtins/abort @@ -1657,7 +1656,7 @@ i32.eqz if i32.const 0 - i32.const 256 + i32.const 240 i32.const 112 i32.const 13 call $~lib/builtins/abort @@ -1687,40 +1686,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 @@ -1735,6 +1734,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 @@ -1755,33 +1757,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 @@ -1819,7 +1802,7 @@ i32.eqz if i32.const 0 - i32.const 144 + i32.const 128 i32.const 570 i32.const 2 call $~lib/builtins/abort @@ -1827,7 +1810,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) @@ -2851,7 +2834,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) @@ -3071,7 +3054,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 @@ -3087,7 +3070,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) @@ -3206,7 +3189,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 @@ -3215,7 +3198,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) @@ -3236,7 +3219,7 @@ i32.gt_u if i32.const 32 - i32.const 304 + i32.const 80 i32.const 14 i32.const 47 call $~lib/builtins/abort @@ -3277,7 +3260,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 @@ -3304,7 +3287,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 @@ -3314,9 +3297,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 @@ -3337,51 +3320,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) @@ -3417,7 +3512,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 @@ -3425,7 +3520,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) @@ -3439,7 +3534,7 @@ i32.const 0 i32.eq if - i32.const 480 + i32.const 416 local.tee $2 local.get $1 local.tee $3 @@ -3472,7 +3567,7 @@ i32.const 0 i32.eq if - i32.const 400 + i32.const 336 call $~lib/rt/pure/__retain local.set $2 local.get $1 @@ -3501,7 +3596,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 @@ -3510,7 +3605,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 @@ -3524,7 +3619,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 @@ -3539,7 +3634,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 @@ -3554,7 +3649,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) @@ -3605,7 +3700,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 @@ -3626,16 +3721,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 @@ -3761,10 +3856,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 @@ -3791,7 +3886,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 @@ -3808,7 +3903,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 @@ -3845,7 +3940,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 @@ -3883,7 +3978,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) @@ -4024,7 +4119,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 @@ -4033,8 +4128,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 @@ -4049,13 +4144,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) @@ -4113,7 +4208,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 @@ -4133,7 +4228,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 @@ -4153,7 +4248,7 @@ i32.eqz if i32.const 0 - i32.const 256 + i32.const 240 i32.const 122 i32.const 13 call $~lib/builtins/abort @@ -4192,7 +4287,7 @@ i32.eqz if i32.const 0 - i32.const 256 + i32.const 240 i32.const 136 i32.const 15 call $~lib/builtins/abort @@ -4237,7 +4332,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 @@ -4294,7 +4389,7 @@ i32.eqz if i32.const 0 - i32.const 256 + i32.const 240 i32.const 79 i32.const 19 call $~lib/builtins/abort @@ -4329,7 +4424,7 @@ i32.eqz if i32.const 0 - i32.const 256 + i32.const 240 i32.const 90 i32.const 8 call $~lib/builtins/abort @@ -4359,7 +4454,7 @@ i32.eqz if i32.const 0 - i32.const 256 + i32.const 240 i32.const 101 i32.const 26 call $~lib/builtins/abort @@ -4367,10 +4462,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) @@ -4408,8 +4506,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) @@ -4447,51 +4549,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 1902f26e7e..4f1caad1e6 100644 --- a/tests/compiler/rt/flags.optimized.wat +++ b/tests/compiler/rt/flags.optimized.wat @@ -7,8 +7,8 @@ (data (i32.const 1024) "$\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 1088) "\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 1136) "\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 1184) "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 1644) "\83 \00\00\02\00\00\00\10") + (data (i32.const 1184) "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 1644) "\82 \00\00\00\00\00\00\10") (data (i32.const 1668) "\84 \00\00\00\00\00\00\10") (data (i32.const 1692) "\88\04A") (data (i32.const 1708) "\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 1b2b79eebe..e5b7547607 100644 --- a/tests/compiler/std/array-access.optimized.wat +++ b/tests/compiler/std/array-access.optimized.wat @@ -24,7 +24,7 @@ if i32.const 1040 i32.const 1104 - i32.const 93 + i32.const 104 i32.const 41 call $~lib/builtins/abort unreachable @@ -41,7 +41,7 @@ if i32.const 1152 i32.const 1104 - i32.const 97 + i32.const 108 i32.const 39 call $~lib/builtins/abort unreachable @@ -59,7 +59,7 @@ if i32.const 1040 i32.const 1104 - 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 81143ba576..f9dc0e789f 100644 --- a/tests/compiler/std/array-literal.optimized.wat +++ b/tests/compiler/std/array-literal.optimized.wat @@ -43,7 +43,7 @@ if i32.const 1168 i32.const 1232 - i32.const 93 + i32.const 104 i32.const 41 call $~lib/builtins/abort unreachable @@ -62,7 +62,7 @@ if i32.const 1168 i32.const 1232 - i32.const 93 + i32.const 104 i32.const 41 call $~lib/builtins/abort unreachable @@ -1572,36 +1572,49 @@ i32.eq if block $__inlined_func$~lib/rt/__visit_members - block $block$4$break - block $switch$1$default - block $switch$1$case$10 - block $switch$1$case$8 - local.get $0 - i32.const 16 - i32.add - local.tee $1 - i32.const 8 - i32.sub + 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 + local.get $0 + i32.const 16 + i32.add + local.tee $1 + i32.const 8 + i32.sub + i32.load + br_table $__inlined_func$~lib/rt/__visit_members $__inlined_func$~lib/rt/__visit_members $switch$1$case$4 $switch$1$case$5 $switch$1$case$6 $__inlined_func$~lib/rt/__visit_members $switch$1$case$8 $__inlined_func$~lib/rt/__visit_members $switch$1$case$10 $switch$1$default + end + local.get $1 + i32.load + local.tee $1 + if + local.get $1 + call $~lib/rt/pure/__visit + end + br $__inlined_func$~lib/rt/__visit_members + end + local.get $1 i32.load - br_table $__inlined_func$~lib/rt/__visit_members $__inlined_func$~lib/rt/__visit_members $block$4$break $block$4$break $block$4$break $__inlined_func$~lib/rt/__visit_members $switch$1$case$8 $__inlined_func$~lib/rt/__visit_members $switch$1$case$10 $switch$1$default + call $~lib/rt/pure/__visit + br $__inlined_func$~lib/rt/__visit_members end local.get $1 - call $~lib/array/Array#__visit_impl - br $block$4$break + i32.load + call $~lib/rt/pure/__visit + br $__inlined_func$~lib/rt/__visit_members end local.get $1 call $~lib/array/Array#__visit_impl - br $block$4$break + br $__inlined_func$~lib/rt/__visit_members end - unreachable - end - local.get $1 - i32.load - local.tee $1 - if local.get $1 - call $~lib/rt/pure/__visit + call $~lib/array/Array#__visit_impl + br $__inlined_func$~lib/rt/__visit_members end + unreachable end local.get $2 i32.const -2147483648 @@ -1663,6 +1676,7 @@ (func $~lib/array/Array#__visit_impl (; 22 ;) (param $0 i32) (local $1 i32) (local $2 i32) + (local $3 i32) local.get $0 i32.load offset=4 local.tee $1 @@ -1671,17 +1685,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 @@ -1691,5 +1705,8 @@ br $while-continue|0 end end + local.get $0 + i32.load + call $~lib/rt/pure/__visit ) ) diff --git a/tests/compiler/std/array-literal.untouched.wat b/tests/compiler/std/array-literal.untouched.wat index 422aee3e5e..7142a8cc0c 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 @@ -3399,10 +3399,16 @@ call $~lib/rt/pure/decrement ) (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) - nop + 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) @@ -3442,6 +3448,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 (; 42 ;) (param $0 i32) (param $1 i32) (local $2 i32) @@ -3481,57 +3491,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 (; 43 ;) (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 00f6383732..301f0a4d84 100644 --- a/tests/compiler/std/array.optimized.wat +++ b/tests/compiler/std/array.optimized.wat @@ -4,13 +4,13 @@ (type $i32_=>_i32 (func (param i32) (result i32))) (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) (type $i32_i32_i32_i32_=>_i32 (func (param i32 i32 i32 i32) (result i32))) - (type $i32_=>_none (func (param i32))) (type $i32_i32_=>_none (func (param i32 i32))) + (type $i32_=>_none (func (param i32))) (type $f32_f32_=>_i32 (func (param f32 f32) (result i32))) (type $f64_f64_=>_i32 (func (param f64 f64) (result i32))) + (type $none_=>_i32 (func (result i32))) (type $none_=>_f64 (func (result f64))) (type $none_=>_none (func)) - (type $none_=>_i32 (func (result i32))) (type $i32_i32_i64_=>_i32 (func (param i32 i32 i64) (result i32))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) (type $i32_i64_i32_=>_none (func (param i32 i64 i32))) @@ -33,16 +33,16 @@ (import "rtrace" "ondecrement" (func $~lib/rt/rtrace/ondecrement (param i32))) (memory $0 1) (data (i32.const 1024) "\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 1072) "&\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 1136) "\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 1184) "(\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 1248) "\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 1296) "\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 1344) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\00a\00b\00c") - (data (i32.const 1376) "\05\00\00\00\01\00\00\00\00\00\00\00\05\00\00\00\01\02\03\04\05") - (data (i32.const 1408) "\05\00\00\00\01\00\00\00\00\00\00\00\05\00\00\00\01\01\01\04\05") - (data (i32.const 1440) "$\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 1504) "\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 1072) "\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 1120) "\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 1168) "(\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 1232) "\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 1280) "\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 1328) "&\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 1392) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\00a\00b\00c") + (data (i32.const 1424) "\05\00\00\00\01\00\00\00\00\00\00\00\05\00\00\00\01\02\03\04\05") + (data (i32.const 1456) "\05\00\00\00\01\00\00\00\00\00\00\00\05\00\00\00\01\01\01\04\05") + (data (i32.const 1488) "$\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 1552) "\05\00\00\00\01\00\00\00\00\00\00\00\05") (data (i32.const 1584) "\05\00\00\00\01\00\00\00\00\00\00\00\05\00\00\00\01\01") (data (i32.const 1616) "\05\00\00\00\01\00\00\00\00\00\00\00\05\00\00\00\01\01\00\02\02") @@ -249,7 +249,7 @@ i32.eqz if i32.const 0 - i32.const 1152 + i32.const 1136 i32.const 277 i32.const 13 call $~lib/builtins/abort @@ -271,7 +271,7 @@ i32.eqz if i32.const 0 - i32.const 1152 + i32.const 1136 i32.const 279 i32.const 13 call $~lib/builtins/abort @@ -314,7 +314,7 @@ i32.eqz if i32.const 0 - i32.const 1152 + i32.const 1136 i32.const 292 i32.const 13 call $~lib/builtins/abort @@ -410,7 +410,7 @@ i32.eqz if i32.const 0 - i32.const 1152 + i32.const 1136 i32.const 205 i32.const 13 call $~lib/builtins/abort @@ -424,7 +424,7 @@ i32.eqz if i32.const 0 - i32.const 1152 + i32.const 1136 i32.const 207 i32.const 13 call $~lib/builtins/abort @@ -497,7 +497,7 @@ i32.eqz if i32.const 0 - i32.const 1152 + i32.const 1136 i32.const 228 i32.const 15 call $~lib/builtins/abort @@ -552,7 +552,7 @@ i32.eqz if i32.const 0 - i32.const 1152 + i32.const 1136 i32.const 243 i32.const 13 call $~lib/builtins/abort @@ -567,7 +567,7 @@ i32.ne if i32.const 0 - i32.const 1152 + i32.const 1136 i32.const 244 i32.const 13 call $~lib/builtins/abort @@ -615,7 +615,7 @@ i32.eqz if i32.const 0 - i32.const 1152 + i32.const 1136 i32.const 260 i32.const 13 call $~lib/builtins/abort @@ -698,7 +698,7 @@ i32.eqz if i32.const 0 - i32.const 1152 + i32.const 1136 i32.const 386 i32.const 4 call $~lib/builtins/abort @@ -715,7 +715,7 @@ i32.lt_u if i32.const 0 - i32.const 1152 + i32.const 1136 i32.const 396 i32.const 15 call $~lib/builtins/abort @@ -743,7 +743,7 @@ i32.lt_u if i32.const 0 - i32.const 1152 + i32.const 1136 i32.const 408 i32.const 4 call $~lib/builtins/abort @@ -883,8 +883,8 @@ i32.const 1073741808 i32.ge_u if - i32.const 1200 - i32.const 1152 + i32.const 1184 + i32.const 1136 i32.const 457 i32.const 29 call $~lib/builtins/abort @@ -957,7 +957,7 @@ i32.eqz if i32.const 0 - i32.const 1152 + i32.const 1136 i32.const 338 i32.const 13 call $~lib/builtins/abort @@ -1009,7 +1009,7 @@ i32.eqz if i32.const 0 - i32.const 1152 + i32.const 1136 i32.const 351 i32.const 17 call $~lib/builtins/abort @@ -1042,7 +1042,7 @@ i32.and if i32.const 0 - i32.const 1152 + i32.const 1136 i32.const 365 i32.const 13 call $~lib/builtins/abort @@ -1113,7 +1113,7 @@ global.get $~lib/rt/tlsf/collectLock if i32.const 0 - i32.const 1152 + i32.const 1136 i32.const 490 i32.const 13 call $~lib/builtins/abort @@ -1204,7 +1204,7 @@ i32.eqz if i32.const 0 - i32.const 1152 + i32.const 1136 i32.const 502 i32.const 19 call $~lib/builtins/abort @@ -1220,7 +1220,7 @@ i32.lt_u if i32.const 0 - i32.const 1152 + i32.const 1136 i32.const 510 i32.const 13 call $~lib/builtins/abort @@ -1450,7 +1450,7 @@ i32.ne if i32.const 0 - i32.const 1264 + i32.const 1248 i32.const 109 i32.const 2 call $~lib/builtins/abort @@ -1469,7 +1469,7 @@ i32.and if i32.const 0 - i32.const 1264 + i32.const 1248 i32.const 112 i32.const 13 call $~lib/builtins/abort @@ -1489,92 +1489,78 @@ 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) (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 1040 i32.const 1088 - 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 + local.tee $1 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 $3 i32.const 0 i32.store - local.get $0 + local.get $3 i32.const 0 i32.store offset=4 - local.get $0 + local.get $3 i32.const 0 i32.store offset=8 - local.get $2 - local.tee $1 - local.get $0 + local.get $3 + i32.const 0 + i32.store offset=12 + local.get $1 + local.set $2 + local.get $1 + local.get $3 i32.load - local.tee $4 + local.tee $5 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 $5 call $~lib/rt/pure/__release end - local.get $0 - local.get $1 - i32.store - local.get $0 + local.get $3 local.get $2 + i32.store + local.get $3 + local.get $1 i32.store offset=4 - local.get $0 local.get $3 + local.get $4 i32.store offset=8 - local.get $0 - ) - (func $~lib/array/Array#constructor (; 21 ;) (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 $3 local.get $0 i32.store offset=12 - local.get $1 + local.get $3 ) - (func $std/array/Ref#constructor (; 22 ;) (param $0 i32) (result i32) + (func $std/array/Ref#constructor (; 21 ;) (param $0 i32) (result i32) (local $1 i32) i32.const 4 i32.const 4 @@ -1585,7 +1571,7 @@ i32.store local.get $1 ) - (func $~lib/memory/memory.copy (; 23 ;) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/memory/memory.copy (; 22 ;) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) block $~lib/util/memory/memmove|inlined.0 @@ -1758,7 +1744,7 @@ end end ) - (func $~lib/rt/__allocArray (; 24 ;) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + (func $~lib/rt/__allocArray (; 23 ;) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) (local $4 i32) (local $5 i32) (local $6 i32) @@ -1796,7 +1782,7 @@ i32.store offset=12 local.get $2 ) - (func $~lib/array/Array#fill (; 25 ;) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + (func $~lib/array/Array#fill (; 24 ;) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) (local $4 i32) (local $5 i32) local.get $0 @@ -1863,15 +1849,15 @@ local.get $0 call $~lib/rt/pure/__retain ) - (func $~lib/array/Array#__get (; 26 ;) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array#__get (; 25 ;) (param $0 i32) (param $1 i32) (result i32) local.get $1 local.get $0 i32.load offset=12 i32.ge_u if - i32.const 1456 - i32.const 1520 - i32.const 93 + i32.const 1504 + i32.const 1088 + i32.const 104 i32.const 41 call $~lib/builtins/abort unreachable @@ -1882,7 +1868,7 @@ i32.add i32.load8_u ) - (func $std/array/isArraysEqual (; 27 ;) (param $0 i32) (param $1 i32) (result i32) + (func $std/array/isArraysEqual (; 26 ;) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) local.get $0 @@ -1927,7 +1913,7 @@ end i32.const 1 ) - (func $~lib/array/Array#fill (; 28 ;) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + (func $~lib/array/Array#fill (; 27 ;) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) (local $4 i32) (local $5 i32) local.get $0 @@ -2002,15 +1988,15 @@ local.get $0 call $~lib/rt/pure/__retain ) - (func $~lib/array/Array#__get (; 29 ;) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array#__get (; 28 ;) (param $0 i32) (param $1 i32) (result i32) local.get $1 local.get $0 i32.load offset=12 i32.ge_u if - i32.const 1456 - i32.const 1520 - i32.const 93 + i32.const 1504 + i32.const 1088 + i32.const 104 i32.const 41 call $~lib/builtins/abort unreachable @@ -2023,7 +2009,7 @@ i32.add i32.load ) - (func $std/array/isArraysEqual (; 30 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/array/isArraysEqual (; 29 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) local.get $2 i32.eqz @@ -2071,7 +2057,7 @@ end i32.const 1 ) - (func $std/array/internalCapacity (; 31 ;) (param $0 i32) (result i32) + (func $std/array/internalCapacity (; 30 ;) (param $0 i32) (result i32) local.get $0 i32.load i32.const 16 @@ -2080,7 +2066,7 @@ i32.const 2 i32.shr_s ) - (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 @@ -2114,7 +2100,7 @@ i32.eqz if i32.const 0 - i32.const 1152 + i32.const 1136 i32.const 570 i32.const 2 call $~lib/builtins/abort @@ -2122,7 +2108,7 @@ end local.get $1 ) - (func $~lib/rt/tlsf/freeBlock (; 33 ;) (param $0 i32) (param $1 i32) + (func $~lib/rt/tlsf/freeBlock (; 32 ;) (param $0 i32) (param $1 i32) local.get $1 local.get $1 i32.load @@ -2135,7 +2121,7 @@ local.get $1 call $~lib/rt/rtrace/onfree ) - (func $~lib/rt/tlsf/reallocateBlock (; 34 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/rt/tlsf/reallocateBlock (; 33 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -2238,7 +2224,7 @@ end local.get $3 ) - (func $~lib/array/ensureSize (; 35 ;) (param $0 i32) (param $1 i32) + (func $~lib/array/ensureSize (; 34 ;) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -2255,7 +2241,7 @@ i32.gt_u if i32.const 1040 - i32.const 1520 + i32.const 1088 i32.const 14 i32.const 47 call $~lib/builtins/abort @@ -2298,7 +2284,7 @@ i32.store offset=8 end ) - (func $~lib/array/Array#push (; 36 ;) (param $0 i32) (param $1 i32) + (func $~lib/array/Array#push (; 35 ;) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) local.get $0 @@ -2321,7 +2307,7 @@ local.get $3 i32.store offset=12 ) - (func $~lib/array/Array#pop (; 37 ;) (param $0 i32) (result i32) + (func $~lib/array/Array#pop (; 36 ;) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) local.get $0 @@ -2331,8 +2317,8 @@ i32.lt_s if i32.const 1984 - i32.const 1520 - i32.const 288 + i32.const 1088 + i32.const 299 i32.const 20 call $~lib/builtins/abort unreachable @@ -2351,7 +2337,7 @@ local.get $1 i32.store offset=12 ) - (func $~lib/array/Array#concat (; 38 ;) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array#concat (; 37 ;) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -2371,8 +2357,8 @@ i32.gt_u if i32.const 1040 - i32.const 1520 - i32.const 218 + i32.const 1088 + i32.const 229 i32.const 59 call $~lib/builtins/abort unreachable @@ -2404,7 +2390,7 @@ call $~lib/memory/memory.copy local.get $2 ) - (func $~lib/array/Array#copyWithin (; 39 ;) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + (func $~lib/array/Array#copyWithin (; 38 ;) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) (local $4 i32) (local $5 i32) (local $6 i32) @@ -2509,7 +2495,7 @@ local.get $0 call $~lib/rt/pure/__retain ) - (func $~lib/array/Array#unshift (; 40 ;) (param $0 i32) (param $1 i32) + (func $~lib/array/Array#unshift (; 39 ;) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) local.get $0 @@ -2538,7 +2524,7 @@ local.get $2 i32.store offset=12 ) - (func $~lib/array/Array#indexOf (; 41 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/array/Array#indexOf (; 40 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) local.get $0 i32.load offset=12 @@ -2598,7 +2584,7 @@ end i32.const -1 ) - (func $~lib/array/Array#includes (; 42 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/array/Array#includes (; 41 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $0 local.get $1 local.get $2 @@ -2606,7 +2592,7 @@ i32.const 0 i32.ge_s ) - (func $~lib/array/Array#splice (; 43 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/array/Array#splice (; 42 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -2697,7 +2683,7 @@ i32.store offset=12 local.get $3 ) - (func $~lib/array/Array#splice (; 44 ;) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array#splice (; 43 ;) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -2788,7 +2774,7 @@ i32.store offset=12 local.get $4 ) - (func $~lib/array/Array#__unchecked_get (; 45 ;) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array#__unchecked_get (; 44 ;) (param $0 i32) (param $1 i32) (result i32) local.get $0 i32.load offset=4 local.get $1 @@ -2798,15 +2784,15 @@ i32.load call $~lib/rt/pure/__retain ) - (func $~lib/array/Array#__get (; 46 ;) (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 1456 - i32.const 1520 - i32.const 93 + i32.const 1504 + i32.const 1088 + i32.const 104 i32.const 41 call $~lib/builtins/abort unreachable @@ -2820,15 +2806,15 @@ local.get $0 call $~lib/rt/pure/__release i32.const 4928 - i32.const 1520 - i32.const 97 + i32.const 1088 + i32.const 108 i32.const 39 call $~lib/builtins/abort unreachable end local.get $0 ) - (func $~lib/array/Array#splice (; 47 ;) (param $0 i32) (result i32) + (func $~lib/array/Array#splice (; 46 ;) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -2906,15 +2892,15 @@ i32.store offset=12 local.get $4 ) - (func $~lib/array/Array#__get (; 48 ;) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array#__get (; 47 ;) (param $0 i32) (param $1 i32) (result i32) local.get $1 local.get $0 i32.load offset=12 i32.ge_u if - i32.const 1456 - i32.const 1520 - i32.const 93 + i32.const 1504 + i32.const 1088 + i32.const 104 i32.const 41 call $~lib/builtins/abort unreachable @@ -2923,7 +2909,7 @@ local.get $1 call $~lib/array/Array#__unchecked_get ) - (func $~lib/array/Array#__set (; 49 ;) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/array/Array#__set (; 48 ;) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) local.get $1 local.get $0 @@ -2934,9 +2920,9 @@ i32.const 0 i32.lt_s if - i32.const 1456 - i32.const 1520 - i32.const 109 + i32.const 1504 + i32.const 1088 + i32.const 120 i32.const 21 call $~lib/builtins/abort unreachable @@ -2960,15 +2946,15 @@ local.get $2 i32.store ) - (func $start:std/array~anonymous|0 (; 50 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $start:std/array~anonymous|0 (; 49 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $0 i32.eqz ) - (func $~setArgumentsLength (; 51 ;) (param $0 i32) + (func $~setArgumentsLength (; 50 ;) (param $0 i32) local.get $0 global.set $~argumentsLength ) - (func $~lib/array/Array#findIndex (; 52 ;) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array#findIndex (; 51 ;) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -3013,17 +2999,17 @@ end i32.const -1 ) - (func $start:std/array~anonymous|1 (; 53 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $start:std/array~anonymous|1 (; 52 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $0 i32.const 1 i32.eq ) - (func $start:std/array~anonymous|2 (; 54 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $start:std/array~anonymous|2 (; 53 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $0 i32.const 100 i32.eq ) - (func $start:std/array~anonymous|3 (; 55 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $start:std/array~anonymous|3 (; 54 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $2 i32.const 100 call $~lib/array/Array#push @@ -3031,7 +3017,7 @@ i32.const 100 i32.eq ) - (func $start:std/array~anonymous|5 (; 56 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $start:std/array~anonymous|5 (; 55 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $2 call $~lib/array/Array#pop drop @@ -3039,12 +3025,12 @@ i32.const 100 i32.eq ) - (func $start:std/array~anonymous|6 (; 57 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $start:std/array~anonymous|6 (; 56 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $0 i32.const 0 i32.ge_s ) - (func $~lib/array/Array#every (; 58 ;) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array#every (; 57 ;) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -3090,12 +3076,12 @@ end i32.const 1 ) - (func $start:std/array~anonymous|7 (; 59 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $start:std/array~anonymous|7 (; 58 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $0 i32.const 0 i32.le_s ) - (func $start:std/array~anonymous|8 (; 60 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $start:std/array~anonymous|8 (; 59 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $2 i32.const 100 call $~lib/array/Array#push @@ -3103,12 +3089,12 @@ i32.const 10 i32.lt_s ) - (func $start:std/array~anonymous|9 (; 61 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $start:std/array~anonymous|9 (; 60 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $0 i32.const 10 i32.lt_s ) - (func $start:std/array~anonymous|10 (; 62 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $start:std/array~anonymous|10 (; 61 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $2 call $~lib/array/Array#pop drop @@ -3116,12 +3102,12 @@ i32.const 3 i32.lt_s ) - (func $start:std/array~anonymous|11 (; 63 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $start:std/array~anonymous|11 (; 62 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $0 i32.const 3 i32.ge_s ) - (func $~lib/array/Array#some (; 64 ;) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array#some (; 63 ;) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -3166,12 +3152,12 @@ end i32.const 0 ) - (func $start:std/array~anonymous|12 (; 65 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $start:std/array~anonymous|12 (; 64 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $0 i32.const -1 i32.le_s ) - (func $start:std/array~anonymous|13 (; 66 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $start:std/array~anonymous|13 (; 65 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $2 i32.const 100 call $~lib/array/Array#push @@ -3179,12 +3165,12 @@ i32.const 10 i32.gt_s ) - (func $start:std/array~anonymous|14 (; 67 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $start:std/array~anonymous|14 (; 66 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $0 i32.const 10 i32.gt_s ) - (func $start:std/array~anonymous|15 (; 68 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $start:std/array~anonymous|15 (; 67 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $2 call $~lib/array/Array#pop drop @@ -3192,13 +3178,13 @@ i32.const 3 i32.gt_s ) - (func $start:std/array~anonymous|16 (; 69 ;) (param $0 i32) (param $1 i32) (param $2 i32) + (func $start:std/array~anonymous|16 (; 68 ;) (param $0 i32) (param $1 i32) (param $2 i32) local.get $0 global.get $std/array/i i32.add global.set $std/array/i ) - (func $~lib/array/Array#forEach (; 70 ;) (param $0 i32) (param $1 i32) + (func $~lib/array/Array#forEach (; 69 ;) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -3238,7 +3224,7 @@ end end ) - (func $start:std/array~anonymous|17 (; 71 ;) (param $0 i32) (param $1 i32) (param $2 i32) + (func $start:std/array~anonymous|17 (; 70 ;) (param $0 i32) (param $1 i32) (param $2 i32) local.get $2 i32.const 100 call $~lib/array/Array#push @@ -3247,7 +3233,7 @@ i32.add global.set $std/array/i ) - (func $start:std/array~anonymous|19 (; 72 ;) (param $0 i32) (param $1 i32) (param $2 i32) + (func $start:std/array~anonymous|19 (; 71 ;) (param $0 i32) (param $1 i32) (param $2 i32) local.get $2 call $~lib/array/Array#pop drop @@ -3256,7 +3242,7 @@ i32.add global.set $std/array/i ) - (func $start:std/array~anonymous|20 (; 73 ;) (param $0 i32) (param $1 i32) (param $2 i32) + (func $start:std/array~anonymous|20 (; 72 ;) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) local.get $1 i32.eqz @@ -3341,27 +3327,27 @@ i32.ne if i32.const 0 - i32.const 1312 - i32.const 619 + i32.const 1296 + i32.const 625 i32.const 6 call $~lib/builtins/abort unreachable end end ) - (func $start:std/array~anonymous|21 (; 74 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result f32) + (func $start:std/array~anonymous|21 (; 73 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result f32) local.get $0 f32.convert_i32_s ) - (func $~lib/array/Array#__get (; 75 ;) (param $0 i32) (param $1 i32) (result f32) + (func $~lib/array/Array#__get (; 74 ;) (param $0 i32) (param $1 i32) (result f32) local.get $1 local.get $0 i32.load offset=12 i32.ge_u if - i32.const 1456 - i32.const 1520 - i32.const 93 + i32.const 1504 + i32.const 1088 + i32.const 104 i32.const 41 call $~lib/builtins/abort unreachable @@ -3374,7 +3360,7 @@ i32.add f32.load ) - (func $start:std/array~anonymous|22 (; 76 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $start:std/array~anonymous|22 (; 75 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $2 i32.const 100 call $~lib/array/Array#push @@ -3384,7 +3370,7 @@ global.set $std/array/i local.get $0 ) - (func $~lib/array/Array#map (; 77 ;) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array#map (; 76 ;) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -3443,14 +3429,14 @@ end local.get $5 ) - (func $start:std/array~anonymous|23 (; 78 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $start:std/array~anonymous|23 (; 77 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $0 global.get $std/array/i i32.add global.set $std/array/i local.get $0 ) - (func $start:std/array~anonymous|24 (; 79 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $start:std/array~anonymous|24 (; 78 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $2 call $~lib/array/Array#pop drop @@ -3460,12 +3446,12 @@ global.set $std/array/i local.get $0 ) - (func $start:std/array~anonymous|25 (; 80 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $start:std/array~anonymous|25 (; 79 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $0 i32.const 2 i32.ge_s ) - (func $~lib/array/Array#filter (; 81 ;) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array#filter (; 80 ;) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -3521,7 +3507,7 @@ end local.get $4 ) - (func $start:std/array~anonymous|26 (; 82 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $start:std/array~anonymous|26 (; 81 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $2 i32.const 100 call $~lib/array/Array#push @@ -3533,7 +3519,7 @@ i32.const 2 i32.ge_s ) - (func $start:std/array~anonymous|27 (; 83 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $start:std/array~anonymous|27 (; 82 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $0 global.get $std/array/i i32.add @@ -3542,7 +3528,7 @@ i32.const 2 i32.ge_s ) - (func $start:std/array~anonymous|28 (; 84 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $start:std/array~anonymous|28 (; 83 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $2 call $~lib/array/Array#pop drop @@ -3554,12 +3540,12 @@ i32.const 2 i32.ge_s ) - (func $start:std/array~anonymous|29 (; 85 ;) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + (func $start:std/array~anonymous|29 (; 84 ;) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) local.get $0 local.get $1 i32.add ) - (func $~lib/array/Array#reduce (; 86 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/array/Array#reduce (; 85 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -3602,7 +3588,7 @@ end local.get $2 ) - (func $start:std/array~anonymous|31 (; 87 ;) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + (func $start:std/array~anonymous|31 (; 86 ;) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) i32.const 1 local.get $1 i32.const 2 @@ -3610,7 +3596,7 @@ local.get $0 select ) - (func $start:std/array~anonymous|32 (; 88 ;) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + (func $start:std/array~anonymous|32 (; 87 ;) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) i32.const 1 local.get $1 i32.const 100 @@ -3618,7 +3604,7 @@ local.get $0 select ) - (func $start:std/array~anonymous|33 (; 89 ;) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + (func $start:std/array~anonymous|33 (; 88 ;) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) local.get $3 i32.const 1 call $~lib/array/Array#push @@ -3626,7 +3612,7 @@ local.get $1 i32.add ) - (func $start:std/array~anonymous|35 (; 90 ;) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + (func $start:std/array~anonymous|35 (; 89 ;) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) local.get $3 call $~lib/array/Array#pop drop @@ -3634,7 +3620,7 @@ local.get $1 i32.add ) - (func $~lib/array/Array#reduceRight (; 91 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/array/Array#reduceRight (; 90 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) local.get $0 i32.load offset=12 @@ -3670,7 +3656,7 @@ end local.get $2 ) - (func $~lib/math/murmurHash3 (; 92 ;) (param $0 i64) (result i64) + (func $~lib/math/murmurHash3 (; 91 ;) (param $0 i64) (result i64) local.get $0 local.get $0 i64.const 33 @@ -3691,7 +3677,7 @@ i64.shr_u i64.xor ) - (func $~lib/math/splitMix32 (; 93 ;) (param $0 i32) (result i32) + (func $~lib/math/splitMix32 (; 92 ;) (param $0 i32) (result i32) local.get $0 i32.const 1831565813 i32.add @@ -3723,7 +3709,7 @@ i32.shr_u i32.xor ) - (func $~lib/math/NativeMath.seedRandom (; 94 ;) (param $0 i64) + (func $~lib/math/NativeMath.seedRandom (; 93 ;) (param $0 i64) (local $1 i32) i32.const 1 global.set $~lib/math/random_seeded @@ -3768,7 +3754,7 @@ unreachable end ) - (func $~lib/util/sort/insertionSort (; 95 ;) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/util/sort/insertionSort (; 94 ;) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) (local $5 f32) @@ -3847,7 +3833,7 @@ end end ) - (func $~lib/util/sort/weakHeapSort (; 96 ;) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/util/sort/weakHeapSort (; 95 ;) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) (local $5 f32) @@ -4108,7 +4094,7 @@ local.get $5 f32.store ) - (func $~lib/util/sort/COMPARATOR~anonymous|0 (; 97 ;) (param $0 f32) (param $1 f32) (result i32) + (func $~lib/util/sort/COMPARATOR~anonymous|0 (; 96 ;) (param $0 f32) (param $1 f32) (result i32) (local $2 i32) (local $3 i32) local.get $0 @@ -4137,7 +4123,7 @@ i32.lt_s i32.sub ) - (func $~lib/array/Array#sort|trampoline (; 98 ;) (param $0 i32) (result i32) + (func $~lib/array/Array#sort|trampoline (; 97 ;) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -4216,7 +4202,7 @@ call $~lib/rt/pure/__retain end ) - (func $~lib/util/sort/insertionSort (; 99 ;) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/util/sort/insertionSort (; 98 ;) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) (local $5 f64) @@ -4295,7 +4281,7 @@ end end ) - (func $~lib/util/sort/weakHeapSort (; 100 ;) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/util/sort/weakHeapSort (; 99 ;) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) (local $5 f64) @@ -4556,7 +4542,7 @@ local.get $5 f64.store ) - (func $~lib/util/sort/COMPARATOR~anonymous|0 (; 101 ;) (param $0 f64) (param $1 f64) (result i32) + (func $~lib/util/sort/COMPARATOR~anonymous|0 (; 100 ;) (param $0 f64) (param $1 f64) (result i32) (local $2 i64) (local $3 i64) local.get $0 @@ -4585,7 +4571,7 @@ i64.lt_s i32.sub ) - (func $~lib/array/Array#sort|trampoline (; 102 ;) (param $0 i32) (result i32) + (func $~lib/array/Array#sort|trampoline (; 101 ;) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -4664,15 +4650,15 @@ call $~lib/rt/pure/__retain end ) - (func $~lib/array/Array#__get (; 103 ;) (param $0 i32) (param $1 i32) (result f64) + (func $~lib/array/Array#__get (; 102 ;) (param $0 i32) (param $1 i32) (result f64) local.get $1 local.get $0 i32.load offset=12 i32.ge_u if - i32.const 1456 - i32.const 1520 - i32.const 93 + i32.const 1504 + i32.const 1088 + i32.const 104 i32.const 41 call $~lib/builtins/abort unreachable @@ -4685,7 +4671,7 @@ i32.add f64.load ) - (func $~lib/util/sort/insertionSort (; 104 ;) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/util/sort/insertionSort (; 103 ;) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -4764,7 +4750,7 @@ end end ) - (func $~lib/util/sort/weakHeapSort (; 105 ;) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/util/sort/weakHeapSort (; 104 ;) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -5025,7 +5011,7 @@ local.get $1 i32.store ) - (func $~lib/array/Array#sort (; 106 ;) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array#sort (; 105 ;) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -5090,12 +5076,12 @@ local.get $0 call $~lib/rt/pure/__retain ) - (func $~lib/util/sort/COMPARATOR~anonymous|0 (; 107 ;) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/util/sort/COMPARATOR~anonymous|0 (; 106 ;) (param $0 i32) (param $1 i32) (result i32) local.get $0 local.get $1 i32.sub ) - (func $~lib/util/sort/COMPARATOR~anonymous|0 (; 108 ;) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/util/sort/COMPARATOR~anonymous|0 (; 107 ;) (param $0 i32) (param $1 i32) (result i32) local.get $0 local.get $1 i32.gt_u @@ -5104,7 +5090,7 @@ i32.lt_u i32.sub ) - (func $std/array/createReverseOrderedArray (; 109 ;) (param $0 i32) (result i32) + (func $std/array/createReverseOrderedArray (; 108 ;) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) local.get $0 @@ -5132,7 +5118,7 @@ end local.get $2 ) - (func $~lib/math/NativeMath.random (; 110 ;) (result f64) + (func $~lib/math/NativeMath.random (; 109 ;) (result f64) (local $0 i64) (local $1 i64) global.get $~lib/math/random_seeded @@ -5173,7 +5159,7 @@ f64.const 1 f64.sub ) - (func $std/array/createRandomOrderedArray (; 111 ;) (param $0 i32) (result i32) + (func $std/array/createRandomOrderedArray (; 110 ;) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) local.get $0 @@ -5201,7 +5187,7 @@ end local.get $2 ) - (func $std/array/assertSorted (; 112 ;) (param $0 i32) (param $1 i32) + (func $std/array/assertSorted (; 111 ;) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -5249,8 +5235,8 @@ i32.eqz if i32.const 0 - i32.const 1312 - i32.const 881 + i32.const 1296 + i32.const 887 i32.const 2 call $~lib/builtins/abort unreachable @@ -5258,12 +5244,12 @@ local.get $3 call $~lib/rt/pure/__release ) - (func $start:std/array~anonymous|44 (; 113 ;) (param $0 i32) (param $1 i32) (result i32) + (func $start:std/array~anonymous|44 (; 112 ;) (param $0 i32) (param $1 i32) (result i32) local.get $1 local.get $0 i32.sub ) - (func $~lib/array/Array<~lib/array/Array>#__set (; 114 ;) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/array/Array<~lib/array/Array>#__set (; 113 ;) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) local.get $1 local.get $0 @@ -5274,9 +5260,9 @@ i32.const 0 i32.lt_s if - i32.const 1456 - i32.const 1520 - i32.const 109 + i32.const 1504 + i32.const 1088 + i32.const 120 i32.const 21 call $~lib/builtins/abort unreachable @@ -5311,6 +5297,89 @@ call $~lib/rt/pure/__release end ) + (func $std/array/createReverseOrderedNestedArray (; 114 ;) (result i32) + (local $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + i32.const 8 + i32.const 0 + call $~lib/rt/tlsf/__alloc + local.tee $0 + 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 $2 + i32.const 0 + i32.store + local.get $2 + i32.const 0 + i32.store offset=4 + local.get $2 + i32.const 0 + i32.store offset=8 + local.get $2 + i32.const 0 + i32.store offset=12 + local.get $0 + local.set $1 + local.get $0 + local.get $2 + i32.load + local.tee $4 + i32.ne + if + local.get $1 + call $~lib/rt/pure/__retain + local.set $1 + local.get $4 + call $~lib/rt/pure/__release + end + local.get $2 + local.get $1 + i32.store + local.get $2 + local.get $0 + i32.store offset=4 + local.get $2 + i32.const 8 + i32.store offset=8 + local.get $2 + i32.const 2 + i32.store offset=12 + loop $for-loop|0 + local.get $3 + i32.const 2 + i32.lt_s + if + i32.const 1 + call $~lib/array/Array#constructor + local.tee $0 + i32.const 0 + i32.const 1 + local.get $3 + i32.sub + call $~lib/array/Array#__set + local.get $2 + local.get $3 + local.get $0 + call $~lib/array/Array<~lib/array/Array>#__set + local.get $0 + call $~lib/rt/pure/__release + local.get $3 + i32.const 1 + i32.add + local.set $3 + br $for-loop|0 + end + end + local.get $2 + ) (func $start:std/array~anonymous|47 (; 115 ;) (param $0 i32) (param $1 i32) (result i32) local.get $0 i32.const 0 @@ -5435,8 +5504,8 @@ i32.eqz if i32.const 0 - i32.const 1312 - i32.const 881 + i32.const 1296 + i32.const 887 i32.const 2 call $~lib/builtins/abort unreachable @@ -5444,49 +5513,133 @@ local.get $5 call $~lib/rt/pure/__release ) - (func $start:std/array~anonymous|48 (; 118 ;) (param $0 i32) (param $1 i32) (result i32) - local.get $0 - i32.load - local.get $1 - i32.load - i32.sub - ) - (func $~lib/string/String#get:length (; 119 ;) (param $0 i32) (result i32) - local.get $0 - i32.const 16 - i32.sub - i32.load offset=12 - i32.const 1 - i32.shr_u - ) - (func $~lib/util/string/compareImpl (; 120 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/array/createReverseOrderedElementsArray (; 118 ;) (result i32) + (local $0 i32) + (local $1 i32) + (local $2 i32) (local $3 i32) (local $4 i32) - local.get $0 - i32.const 7 - i32.and - local.get $1 - i32.const 7 - i32.and - i32.or - i32.eqz + i32.const 2048 + i32.const 0 + call $~lib/rt/tlsf/__alloc + local.tee $0 + 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 + local.tee $2 i32.const 0 + i32.store local.get $2 - i32.const 4 - i32.ge_u - select + i32.const 0 + i32.store offset=4 + local.get $2 + i32.const 0 + i32.store offset=8 + local.get $2 + i32.const 0 + i32.store offset=12 + local.get $0 + local.set $1 + local.get $0 + local.get $2 + i32.load + local.tee $4 + i32.ne if - loop $do-continue|0 - local.get $0 - i64.load - local.get $1 - i64.load - i64.eq - if - local.get $0 - i32.const 8 - i32.add - local.set $0 + local.get $1 + call $~lib/rt/pure/__retain + local.set $1 + local.get $4 + call $~lib/rt/pure/__release + end + local.get $2 + local.get $1 + i32.store + local.get $2 + local.get $0 + i32.store offset=4 + local.get $2 + i32.const 2048 + i32.store offset=8 + local.get $2 + i32.const 512 + i32.store offset=12 + loop $for-loop|0 + local.get $3 + i32.const 512 + i32.lt_s + if + i32.const 4 + i32.const 13 + call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__retain + local.tee $0 + i32.const 511 + local.get $3 + i32.sub + i32.store + local.get $2 + local.get $3 + local.get $0 + call $~lib/array/Array<~lib/array/Array>#__set + local.get $0 + call $~lib/rt/pure/__release + local.get $3 + i32.const 1 + i32.add + local.set $3 + br $for-loop|0 + end + end + local.get $2 + ) + (func $start:std/array~anonymous|48 (; 119 ;) (param $0 i32) (param $1 i32) (result i32) + local.get $0 + i32.load + local.get $1 + i32.load + i32.sub + ) + (func $~lib/string/String#get:length (; 120 ;) (param $0 i32) (result i32) + local.get $0 + i32.const 16 + i32.sub + i32.load offset=12 + i32.const 1 + i32.shr_u + ) + (func $~lib/util/string/compareImpl (; 121 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + (local $4 i32) + local.get $0 + i32.const 7 + i32.and + local.get $1 + i32.const 7 + i32.and + i32.or + i32.eqz + i32.const 0 + local.get $2 + i32.const 4 + i32.ge_u + select + if + loop $do-continue|0 + local.get $0 + i64.load + local.get $1 + i64.load + i64.eq + if + local.get $0 + i32.const 8 + i32.add + local.set $0 local.get $1 i32.const 8 i32.add @@ -5535,7 +5688,7 @@ end i32.const 0 ) - (func $~lib/util/sort/COMPARATOR<~lib/string/String | null>~anonymous|0 (; 121 ;) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/util/sort/COMPARATOR<~lib/string/String | null>~anonymous|0 (; 122 ;) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) i32.const 1 @@ -5589,7 +5742,7 @@ select call $~lib/util/string/compareImpl ) - (func $std/array/assertSorted<~lib/string/String | null>|trampoline (; 122 ;) (param $0 i32) + (func $std/array/assertSorted<~lib/string/String | null>|trampoline (; 123 ;) (param $0 i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -5664,8 +5817,8 @@ i32.eqz if i32.const 0 - i32.const 1312 - i32.const 881 + i32.const 1296 + i32.const 887 i32.const 2 call $~lib/builtins/abort unreachable @@ -5673,7 +5826,7 @@ local.get $5 call $~lib/rt/pure/__release ) - (func $~lib/string/String.__eq (; 123 ;) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/string/String.__eq (; 124 ;) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) local.get $0 local.get $1 @@ -5707,7 +5860,7 @@ call $~lib/util/string/compareImpl i32.eqz ) - (func $~lib/string/String.__concat (; 124 ;) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/string/String.__concat (; 125 ;) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -5770,7 +5923,7 @@ local.get $1 end ) - (func $std/array/createRandomStringArray (; 125 ;) (result i32) + (func $std/array/createRandomStringArray (; 126 ;) (result i32) (local $0 i32) (local $1 i32) (local $2 i32) @@ -5779,38 +5932,71 @@ (local $5 i32) (local $6 i32) (local $7 i32) + i32.const 1600 + i32.const 0 + call $~lib/rt/tlsf/__alloc + local.tee $0 + 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 - i32.const 400 - i32.const 2 - call $~lib/arraybuffer/ArrayBufferView#constructor - local.tee $3 + local.tee $7 + i32.const 0 + i32.store + local.get $7 + i32.const 0 + i32.store offset=4 + local.get $7 + i32.const 0 + i32.store offset=8 + local.get $7 i32.const 0 i32.store offset=12 - local.get $3 + local.get $0 + local.tee $1 + local.get $7 + i32.load + local.tee $6 + i32.ne + if + local.get $1 + call $~lib/rt/pure/__retain + local.set $1 + local.get $6 + call $~lib/rt/pure/__release + end + local.get $7 + local.get $1 + i32.store + local.get $7 + local.get $0 + i32.store offset=4 + local.get $7 + i32.const 1600 + i32.store offset=8 + local.get $7 i32.const 400 i32.store offset=12 loop $for-loop|0 - local.get $0 + local.get $5 i32.const 400 i32.lt_s if - local.get $0 - local.set $2 call $~lib/math/NativeMath.random f64.const 32 f64.mul i32.trunc_f64_s - local.set $6 + local.set $2 i32.const 0 local.set $4 i32.const 6064 local.set $1 loop $for-loop|00 local.get $4 - local.get $6 + local.get $2 i32.lt_s if local.get $1 @@ -5833,7 +6019,7 @@ i32.const 2 i32.const 1 call $~lib/rt/tlsf/__alloc - local.tee $5 + local.tee $3 local.get $1 i32.const 1 i32.shl @@ -5841,12 +6027,12 @@ i32.add i32.load16_u i32.store16 - local.get $5 + local.get $3 call $~lib/rt/pure/__retain end - local.tee $7 + local.tee $6 call $~lib/string/String.__concat - local.tee $5 + local.tee $3 local.tee $1 local.get $0 i32.ne @@ -5857,9 +6043,9 @@ local.get $0 call $~lib/rt/pure/__release end - local.get $7 + local.get $6 call $~lib/rt/pure/__release - local.get $5 + local.get $3 call $~lib/rt/pure/__release local.get $4 i32.const 1 @@ -5868,22 +6054,22 @@ br $for-loop|00 end end - local.get $3 - local.get $2 + local.get $7 + local.get $5 local.get $1 call $~lib/array/Array<~lib/array/Array>#__set local.get $1 call $~lib/rt/pure/__release - local.get $2 + local.get $5 i32.const 1 i32.add - local.set $0 + local.set $5 br $for-loop|0 end end - local.get $3 + local.get $7 ) - (func $~lib/string/String#substring (; 126 ;) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/string/String#substring (; 127 ;) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -5957,7 +6143,7 @@ local.get $2 call $~lib/rt/pure/__retain ) - (func $~lib/util/string/joinBooleanArray (; 127 ;) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/util/string/joinBooleanArray (; 128 ;) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -6095,7 +6281,7 @@ end local.get $1 ) - (func $~lib/util/number/decimalCount32 (; 128 ;) (param $0 i32) (result i32) + (func $~lib/util/number/decimalCount32 (; 129 ;) (param $0 i32) (result i32) local.get $0 i32.const 10 i32.ge_u @@ -6137,7 +6323,7 @@ i32.lt_u select ) - (func $~lib/util/number/utoa_simple (; 129 ;) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/util/number/utoa_simple (; 130 ;) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) loop $do-continue|0 local.get $1 @@ -6164,7 +6350,7 @@ br_if $do-continue|0 end ) - (func $~lib/util/number/itoa32 (; 130 ;) (param $0 i32) (result i32) + (func $~lib/util/number/itoa32 (; 131 ;) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -6206,7 +6392,7 @@ local.get $2 call $~lib/rt/pure/__retain ) - (func $~lib/util/number/itoa_stream (; 131 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/util/number/itoa_stream (; 132 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $0 local.get $1 i32.const 1 @@ -6254,7 +6440,7 @@ call $~lib/util/number/utoa_simple local.get $0 ) - (func $~lib/util/string/joinIntegerArray (; 132 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/util/string/joinIntegerArray (; 133 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -6359,7 +6545,7 @@ end local.get $1 ) - (func $~lib/array/Array#join (; 133 ;) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array#join (; 134 ;) (param $0 i32) (param $1 i32) (result i32) local.get $0 i32.load offset=4 local.get $0 @@ -6367,7 +6553,7 @@ local.get $1 call $~lib/util/string/joinIntegerArray ) - (func $~lib/util/number/utoa32 (; 134 ;) (param $0 i32) (result i32) + (func $~lib/util/number/utoa32 (; 135 ;) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) local.get $0 @@ -6390,7 +6576,7 @@ local.get $2 call $~lib/rt/pure/__retain ) - (func $~lib/util/number/itoa_stream (; 135 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/util/number/itoa_stream (; 136 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $0 local.get $1 i32.const 1 @@ -6417,7 +6603,7 @@ call $~lib/util/number/utoa_simple local.get $0 ) - (func $~lib/util/string/joinIntegerArray (; 136 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/util/string/joinIntegerArray (; 137 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -6522,7 +6708,7 @@ end local.get $1 ) - (func $~lib/array/Array#join (; 137 ;) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array#join (; 138 ;) (param $0 i32) (param $1 i32) (result i32) local.get $0 i32.load offset=4 local.get $0 @@ -6530,7 +6716,7 @@ local.get $1 call $~lib/util/string/joinIntegerArray ) - (func $~lib/util/number/genDigits (; 138 ;) (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 (; 139 ;) (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 i64) (local $9 i64) @@ -6921,7 +7107,7 @@ local.get $6 end ) - (func $~lib/util/number/prettify (; 139 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/util/number/prettify (; 140 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) local.get $2 i32.eqz @@ -7166,7 +7352,7 @@ end end ) - (func $~lib/util/number/dtoa_core (; 140 ;) (param $0 i32) (param $1 f64) (result i32) + (func $~lib/util/number/dtoa_core (; 141 ;) (param $0 i32) (param $1 f64) (result i32) (local $2 i64) (local $3 i64) (local $4 i32) @@ -7458,7 +7644,7 @@ local.get $7 i32.add ) - (func $~lib/util/number/dtoa_stream (; 141 ;) (param $0 i32) (param $1 i32) (param $2 f64) (result i32) + (func $~lib/util/number/dtoa_stream (; 142 ;) (param $0 i32) (param $1 i32) (param $2 f64) (result i32) local.get $0 local.get $1 i32.const 1 @@ -7533,7 +7719,7 @@ local.get $2 call $~lib/util/number/dtoa_core ) - (func $~lib/util/string/joinFloatArray (; 142 ;) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/util/string/joinFloatArray (; 143 ;) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 f64) (local $4 i32) @@ -7696,7 +7882,7 @@ end local.get $1 ) - (func $~lib/util/string/joinReferenceArray<~lib/string/String | null> (; 143 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/util/string/joinReferenceArray<~lib/string/String | null> (; 144 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -7862,7 +8048,7 @@ call $~lib/rt/pure/__release local.get $1 ) - (func $~lib/array/Array<~lib/string/String | null>#join (; 144 ;) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array<~lib/string/String | null>#join (; 145 ;) (param $0 i32) (param $1 i32) (result i32) local.get $0 i32.load offset=4 local.get $0 @@ -7870,7 +8056,7 @@ local.get $1 call $~lib/util/string/joinReferenceArray<~lib/string/String | null> ) - (func $~lib/util/string/joinReferenceArray (; 145 ;) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/util/string/joinReferenceArray (; 146 ;) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -8023,14 +8209,14 @@ call $~lib/rt/pure/__release local.get $1 ) - (func $~lib/array/Array#join (; 146 ;) (param $0 i32) (result i32) + (func $~lib/array/Array#join (; 147 ;) (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/util/number/itoa_stream (; 147 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/util/number/itoa_stream (; 148 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $0 local.get $1 i32.const 1 @@ -8096,7 +8282,7 @@ call $~lib/util/number/utoa_simple local.get $1 ) - (func $~lib/util/string/joinIntegerArray (; 148 ;) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/util/string/joinIntegerArray (; 149 ;) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -8197,7 +8383,7 @@ end local.get $1 ) - (func $~lib/util/number/itoa_stream (; 149 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/util/number/itoa_stream (; 150 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $0 local.get $1 i32.const 1 @@ -8232,7 +8418,7 @@ call $~lib/util/number/utoa_simple local.get $1 ) - (func $~lib/util/string/joinIntegerArray (; 150 ;) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/util/string/joinIntegerArray (; 151 ;) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -8337,7 +8523,7 @@ end local.get $1 ) - (func $~lib/util/number/decimalCount64High (; 151 ;) (param $0 i64) (result i32) + (func $~lib/util/number/decimalCount64High (; 152 ;) (param $0 i64) (result i32) local.get $0 i64.const 100000000000 i64.ge_u @@ -8383,7 +8569,7 @@ i64.lt_u select ) - (func $~lib/util/number/utoa_simple (; 152 ;) (param $0 i32) (param $1 i64) (param $2 i32) + (func $~lib/util/number/utoa_simple (; 153 ;) (param $0 i32) (param $1 i64) (param $2 i32) (local $3 i32) loop $do-continue|0 local.get $1 @@ -8413,7 +8599,7 @@ br_if $do-continue|0 end ) - (func $~lib/util/number/itoa_stream (; 153 ;) (param $0 i32) (param $1 i32) (param $2 i64) (result i32) + (func $~lib/util/number/itoa_stream (; 154 ;) (param $0 i32) (param $1 i32) (param $2 i64) (result i32) (local $3 i32) local.get $0 local.get $1 @@ -8456,7 +8642,7 @@ end local.get $1 ) - (func $~lib/util/string/joinIntegerArray (; 154 ;) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/util/string/joinIntegerArray (; 155 ;) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i64) @@ -8599,7 +8785,7 @@ end local.get $1 ) - (func $~lib/util/number/itoa_stream (; 155 ;) (param $0 i32) (param $1 i32) (param $2 i64) (result i32) + (func $~lib/util/number/itoa_stream (; 156 ;) (param $0 i32) (param $1 i32) (param $2 i64) (result i32) (local $3 i32) local.get $0 local.get $1 @@ -8665,7 +8851,7 @@ end local.get $0 ) - (func $~lib/util/string/joinIntegerArray (; 156 ;) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/util/string/joinIntegerArray (; 157 ;) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i64) (local $4 i32) @@ -8829,7 +9015,7 @@ end local.get $1 ) - (func $~lib/util/string/joinReferenceArray<~lib/array/Array> (; 157 ;) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/util/string/joinReferenceArray<~lib/array/Array> (; 158 ;) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -8997,7 +9183,7 @@ call $~lib/rt/pure/__release local.get $1 ) - (func $~lib/util/number/itoa_stream (; 158 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/util/number/itoa_stream (; 159 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $0 local.get $1 i32.const 1 @@ -9032,7 +9218,7 @@ call $~lib/util/number/utoa_simple local.get $1 ) - (func $~lib/util/string/joinIntegerArray (; 159 ;) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/util/string/joinIntegerArray (; 160 ;) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -9133,14 +9319,14 @@ end local.get $1 ) - (func $~lib/array/Array#toString (; 160 ;) (param $0 i32) (result i32) + (func $~lib/array/Array#toString (; 161 ;) (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> (; 161 ;) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/util/string/joinReferenceArray<~lib/array/Array> (; 162 ;) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -9305,7 +9491,7 @@ call $~lib/rt/pure/__release local.get $1 ) - (func $~lib/util/string/joinReferenceArray<~lib/array/Array> (; 162 ;) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/util/string/joinReferenceArray<~lib/array/Array> (; 163 ;) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -9473,14 +9659,14 @@ call $~lib/rt/pure/__release local.get $1 ) - (func $~lib/array/Array<~lib/array/Array>#toString (; 163 ;) (param $0 i32) (result i32) + (func $~lib/array/Array<~lib/array/Array>#toString (; 164 ;) (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>> (; 164 ;) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/util/string/joinReferenceArray<~lib/array/Array<~lib/array/Array>> (; 165 ;) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -9645,7 +9831,7 @@ call $~lib/rt/pure/__release local.get $1 ) - (func $start:std/array (; 165 ;) + (func $start:std/array (; 166 ;) (local $0 i32) (local $1 i32) (local $2 i32) @@ -9714,27 +9900,71 @@ i32.const 5 call $~lib/rt/tlsf/__alloc call $~lib/rt/pure/__retain + local.set $58 i32.const 1 i32.const 0 - call $~lib/arraybuffer/ArrayBufferView#constructor - local.set $0 + call $~lib/rt/tlsf/__alloc + local.tee $0 + i32.const 0 + i32.const 1 + call $~lib/memory/memory.fill + local.get $58 + i32.eqz + if + i32.const 12 + i32.const 2 + call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__retain + local.set $58 + end + local.get $58 + i32.const 0 + i32.store + local.get $58 + i32.const 0 + i32.store offset=4 + local.get $58 + i32.const 0 + i32.store offset=8 + local.get $0 + local.tee $1 + local.get $58 + i32.load + local.tee $55 + i32.ne + if + local.get $1 + call $~lib/rt/pure/__retain + local.set $1 + local.get $55 + call $~lib/rt/pure/__release + end + local.get $58 + local.get $1 + i32.store + local.get $58 + local.get $0 + i32.store offset=4 + local.get $58 + i32.const 1 + i32.store offset=8 global.get $std/array/arr i32.eqz if i32.const 0 - i32.const 1312 - i32.const 46 + i32.const 1296 + i32.const 52 i32.const 2 call $~lib/builtins/abort unreachable end call $~lib/rt/pure/__release - local.get $0 + local.get $58 call $~lib/rt/pure/__release i32.const 5 i32.const 0 i32.const 6 - i32.const 1392 + i32.const 1440 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain local.tee $1 @@ -9747,7 +9977,7 @@ i32.const 5 i32.const 0 i32.const 6 - i32.const 1424 + i32.const 1472 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain local.tee $0 @@ -9755,8 +9985,8 @@ i32.eqz if i32.const 0 - i32.const 1312 - i32.const 54 + i32.const 1296 + i32.const 60 i32.const 2 call $~lib/builtins/abort unreachable @@ -9774,13 +10004,13 @@ i32.const 1568 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.tee $57 + local.tee $58 call $std/array/isArraysEqual i32.eqz if i32.const 0 - i32.const 1312 - i32.const 57 + i32.const 1296 + i32.const 63 i32.const 2 call $~lib/builtins/abort unreachable @@ -9798,13 +10028,13 @@ i32.const 1600 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.tee $58 + local.tee $57 call $std/array/isArraysEqual i32.eqz if i32.const 0 - i32.const 1312 - i32.const 60 + i32.const 1296 + i32.const 66 i32.const 2 call $~lib/builtins/abort unreachable @@ -9827,8 +10057,8 @@ i32.eqz if i32.const 0 - i32.const 1312 - i32.const 63 + i32.const 1296 + i32.const 69 i32.const 2 call $~lib/builtins/abort unreachable @@ -9851,8 +10081,8 @@ i32.eqz if i32.const 0 - i32.const 1312 - i32.const 66 + i32.const 1296 + i32.const 72 i32.const 2 call $~lib/builtins/abort unreachable @@ -9861,10 +10091,10 @@ call $~lib/rt/pure/__release local.get $0 call $~lib/rt/pure/__release - local.get $57 - call $~lib/rt/pure/__release local.get $58 call $~lib/rt/pure/__release + local.get $57 + call $~lib/rt/pure/__release local.get $55 call $~lib/rt/pure/__release local.get $56 @@ -9894,8 +10124,8 @@ i32.eqz if i32.const 0 - i32.const 1312 - i32.const 73 + i32.const 1296 + i32.const 79 i32.const 2 call $~lib/builtins/abort unreachable @@ -9913,14 +10143,14 @@ i32.const 1792 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.tee $57 + local.tee $58 i32.const 0 call $std/array/isArraysEqual i32.eqz if i32.const 0 - i32.const 1312 - i32.const 76 + i32.const 1296 + i32.const 82 i32.const 2 call $~lib/builtins/abort unreachable @@ -9938,14 +10168,14 @@ i32.const 1840 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.tee $58 + local.tee $57 i32.const 0 call $std/array/isArraysEqual i32.eqz if i32.const 0 - i32.const 1312 - i32.const 79 + i32.const 1296 + i32.const 85 i32.const 2 call $~lib/builtins/abort unreachable @@ -9969,8 +10199,8 @@ i32.eqz if i32.const 0 - i32.const 1312 - i32.const 82 + i32.const 1296 + i32.const 88 i32.const 2 call $~lib/builtins/abort unreachable @@ -9994,8 +10224,8 @@ i32.eqz if i32.const 0 - i32.const 1312 - i32.const 85 + i32.const 1296 + i32.const 91 i32.const 2 call $~lib/builtins/abort unreachable @@ -10004,10 +10234,10 @@ call $~lib/rt/pure/__release local.get $0 call $~lib/rt/pure/__release - local.get $57 - call $~lib/rt/pure/__release local.get $58 call $~lib/rt/pure/__release + local.get $57 + call $~lib/rt/pure/__release local.get $55 call $~lib/rt/pure/__release local.get $56 @@ -10016,8 +10246,8 @@ i32.load offset=12 if i32.const 0 - i32.const 1312 - i32.const 91 + i32.const 1296 + i32.const 97 i32.const 2 call $~lib/builtins/abort unreachable @@ -10026,8 +10256,8 @@ call $std/array/internalCapacity if i32.const 0 - i32.const 1312 - i32.const 92 + i32.const 1296 + i32.const 98 i32.const 2 call $~lib/builtins/abort unreachable @@ -10042,8 +10272,8 @@ i32.ne if i32.const 0 - i32.const 1312 - i32.const 96 + i32.const 1296 + i32.const 102 i32.const 2 call $~lib/builtins/abort unreachable @@ -10054,8 +10284,8 @@ i32.ne if i32.const 0 - i32.const 1312 - i32.const 97 + i32.const 1296 + i32.const 103 i32.const 2 call $~lib/builtins/abort unreachable @@ -10066,8 +10296,8 @@ i32.ne if i32.const 0 - i32.const 1312 - i32.const 98 + i32.const 1296 + i32.const 104 i32.const 2 call $~lib/builtins/abort unreachable @@ -10078,8 +10308,8 @@ i32.ne if i32.const 0 - i32.const 1312 - i32.const 102 + i32.const 1296 + i32.const 108 i32.const 2 call $~lib/builtins/abort unreachable @@ -10088,8 +10318,8 @@ i32.load offset=12 if i32.const 0 - i32.const 1312 - i32.const 103 + i32.const 1296 + i32.const 109 i32.const 2 call $~lib/builtins/abort unreachable @@ -10100,8 +10330,8 @@ i32.ne if i32.const 0 - i32.const 1312 - i32.const 104 + i32.const 1296 + i32.const 110 i32.const 2 call $~lib/builtins/abort unreachable @@ -10115,8 +10345,8 @@ i32.ne if i32.const 0 - i32.const 1312 - i32.const 108 + i32.const 1296 + i32.const 114 i32.const 2 call $~lib/builtins/abort unreachable @@ -10127,8 +10357,8 @@ i32.ne if i32.const 0 - i32.const 1312 - i32.const 109 + i32.const 1296 + i32.const 115 i32.const 2 call $~lib/builtins/abort unreachable @@ -10140,8 +10370,8 @@ i32.ne if i32.const 0 - i32.const 1312 - i32.const 110 + i32.const 1296 + i32.const 116 i32.const 2 call $~lib/builtins/abort unreachable @@ -10155,8 +10385,8 @@ i32.ne if i32.const 0 - i32.const 1312 - i32.const 114 + i32.const 1296 + i32.const 120 i32.const 2 call $~lib/builtins/abort unreachable @@ -10167,8 +10397,8 @@ i32.ne if i32.const 0 - i32.const 1312 - i32.const 115 + i32.const 1296 + i32.const 121 i32.const 2 call $~lib/builtins/abort unreachable @@ -10180,8 +10410,8 @@ i32.ne if i32.const 0 - i32.const 1312 - i32.const 116 + i32.const 1296 + i32.const 122 i32.const 2 call $~lib/builtins/abort unreachable @@ -10193,8 +10423,8 @@ i32.ne if i32.const 0 - i32.const 1312 - i32.const 117 + i32.const 1296 + i32.const 123 i32.const 2 call $~lib/builtins/abort unreachable @@ -10208,8 +10438,8 @@ i32.ne if i32.const 0 - i32.const 1312 - i32.const 121 + i32.const 1296 + i32.const 127 i32.const 2 call $~lib/builtins/abort unreachable @@ -10220,8 +10450,8 @@ i32.ne if i32.const 0 - i32.const 1312 - i32.const 122 + i32.const 1296 + i32.const 128 i32.const 2 call $~lib/builtins/abort unreachable @@ -10233,8 +10463,8 @@ i32.ne if i32.const 0 - i32.const 1312 - i32.const 123 + i32.const 1296 + i32.const 129 i32.const 2 call $~lib/builtins/abort unreachable @@ -10246,8 +10476,8 @@ i32.ne if i32.const 0 - i32.const 1312 - i32.const 124 + i32.const 1296 + i32.const 130 i32.const 2 call $~lib/builtins/abort unreachable @@ -10259,8 +10489,8 @@ i32.ne if i32.const 0 - i32.const 1312 - i32.const 125 + i32.const 1296 + i32.const 131 i32.const 2 call $~lib/builtins/abort unreachable @@ -10283,18 +10513,18 @@ i32.store offset=4 local.get $0 i32.load offset=12 - local.tee $57 + local.tee $58 i32.const 0 i32.gt_s if local.get $0 i32.load offset=4 local.tee $1 - local.get $57 + local.get $58 i32.const 2 i32.shl i32.add - local.set $57 + local.set $58 loop $do-continue|0 local.get $1 i32.load @@ -10303,7 +10533,7 @@ i32.const 4 i32.add local.tee $1 - local.get $57 + local.get $58 i32.lt_u br_if $do-continue|0 end @@ -10319,8 +10549,8 @@ i32.load offset=12 if i32.const 0 - i32.const 1312 - i32.const 133 + i32.const 1296 + i32.const 139 i32.const 2 call $~lib/builtins/abort unreachable @@ -10333,15 +10563,15 @@ global.get $std/array/arr local.get $0 call $~lib/array/Array#concat - local.set $57 + local.set $58 global.get $std/array/arr call $std/array/internalCapacity i32.const 3 i32.ne if i32.const 0 - i32.const 1312 - i32.const 142 + i32.const 1296 + i32.const 148 i32.const 2 call $~lib/builtins/abort unreachable @@ -10352,25 +10582,25 @@ i32.ne if i32.const 0 - i32.const 1312 - i32.const 143 + i32.const 1296 + i32.const 149 i32.const 2 call $~lib/builtins/abort unreachable end - local.get $57 + local.get $58 i32.load offset=12 i32.const 3 i32.ne if i32.const 0 - i32.const 1312 - i32.const 144 + i32.const 1296 + i32.const 150 i32.const 2 call $~lib/builtins/abort unreachable end - local.get $57 + local.get $58 i32.const 0 i32.const 2 i32.const 3 @@ -10386,47 +10616,47 @@ i32.ne if i32.const 0 - i32.const 1312 - i32.const 147 + i32.const 1296 + i32.const 153 i32.const 2 call $~lib/builtins/abort unreachable end - local.get $57 + local.get $58 i32.const 0 call $~lib/array/Array#__get i32.const 43 i32.ne if i32.const 0 - i32.const 1312 - i32.const 149 + i32.const 1296 + i32.const 155 i32.const 2 call $~lib/builtins/abort unreachable end - local.get $57 + local.get $58 i32.const 1 call $~lib/array/Array#__get i32.const 44 i32.ne if i32.const 0 - i32.const 1312 - i32.const 150 + i32.const 1296 + i32.const 156 i32.const 2 call $~lib/builtins/abort unreachable end - local.get $57 + local.get $58 i32.const 2 call $~lib/array/Array#__get i32.const 45 i32.ne if i32.const 0 - i32.const 1312 - i32.const 151 + i32.const 1296 + i32.const 157 i32.const 2 call $~lib/builtins/abort unreachable @@ -10441,7 +10671,7 @@ local.get $0 call $~lib/array/Array#concat local.set $1 - local.get $57 + local.get $58 call $~lib/rt/pure/__release global.get $std/array/arr call $std/array/internalCapacity @@ -10449,8 +10679,8 @@ i32.ne if i32.const 0 - i32.const 1312 - i32.const 158 + i32.const 1296 + i32.const 164 i32.const 2 call $~lib/builtins/abort unreachable @@ -10461,8 +10691,8 @@ i32.ne if i32.const 0 - i32.const 1312 - i32.const 159 + i32.const 1296 + i32.const 165 i32.const 2 call $~lib/builtins/abort unreachable @@ -10473,8 +10703,8 @@ i32.ne if i32.const 0 - i32.const 1312 - i32.const 160 + i32.const 1296 + i32.const 166 i32.const 2 call $~lib/builtins/abort unreachable @@ -10486,8 +10716,8 @@ i32.ne if i32.const 0 - i32.const 1312 - i32.const 161 + i32.const 1296 + i32.const 167 i32.const 2 call $~lib/builtins/abort unreachable @@ -10499,8 +10729,8 @@ i32.ne if i32.const 0 - i32.const 1312 - i32.const 162 + i32.const 1296 + i32.const 168 i32.const 2 call $~lib/builtins/abort unreachable @@ -10512,8 +10742,8 @@ i32.ne if i32.const 0 - i32.const 1312 - i32.const 163 + i32.const 1296 + i32.const 169 i32.const 2 call $~lib/builtins/abort unreachable @@ -10525,8 +10755,8 @@ i32.ne if i32.const 0 - i32.const 1312 - i32.const 164 + i32.const 1296 + i32.const 170 i32.const 2 call $~lib/builtins/abort unreachable @@ -10538,8 +10768,8 @@ i32.ne if i32.const 0 - i32.const 1312 - i32.const 165 + i32.const 1296 + i32.const 171 i32.const 2 call $~lib/builtins/abort unreachable @@ -10553,8 +10783,8 @@ i32.ne if i32.const 0 - i32.const 1312 - i32.const 168 + i32.const 1296 + i32.const 174 i32.const 2 call $~lib/builtins/abort unreachable @@ -10565,51 +10795,51 @@ i32.const 2048 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.tee $57 + local.tee $58 i32.load offset=12 if i32.const 0 - i32.const 1312 - i32.const 176 + i32.const 1296 + i32.const 182 i32.const 2 call $~lib/builtins/abort unreachable end - local.get $57 + local.get $58 global.get $std/array/arr call $~lib/array/Array#concat - local.set $58 + local.set $57 local.get $1 call $~lib/rt/pure/__release - local.get $58 + local.get $57 i32.load offset=12 i32.const 3 i32.ne if i32.const 0 - i32.const 1312 - i32.const 178 + i32.const 1296 + i32.const 184 i32.const 2 call $~lib/builtins/abort unreachable end - local.get $57 + local.get $58 i32.load offset=12 if i32.const 0 - i32.const 1312 - i32.const 179 + i32.const 1296 + i32.const 185 i32.const 2 call $~lib/builtins/abort unreachable end local.get $0 call $~lib/rt/pure/__release - local.get $58 + local.get $57 call $~lib/rt/pure/__release local.get $55 call $~lib/rt/pure/__release - local.get $57 + local.get $58 call $~lib/rt/pure/__release i32.const 5 i32.const 2 @@ -10622,21 +10852,21 @@ i32.const 3 i32.const 2147483647 call $~lib/array/Array#copyWithin - local.tee $57 + local.tee $58 i32.const 5 i32.const 2 i32.const 3 i32.const 2112 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.tee $58 + local.tee $57 i32.const 0 call $std/array/isArraysEqual i32.eqz if i32.const 0 - i32.const 1312 - i32.const 186 + i32.const 1296 + i32.const 192 i32.const 2 call $~lib/builtins/abort unreachable @@ -10668,8 +10898,8 @@ i32.eqz if i32.const 0 - i32.const 1312 - i32.const 188 + i32.const 1296 + i32.const 194 i32.const 2 call $~lib/builtins/abort unreachable @@ -10700,8 +10930,8 @@ i32.eqz if i32.const 0 - i32.const 1312 - i32.const 190 + i32.const 1296 + i32.const 196 i32.const 2 call $~lib/builtins/abort unreachable @@ -10732,8 +10962,8 @@ i32.eqz if i32.const 0 - i32.const 1312 - i32.const 192 + i32.const 1296 + i32.const 198 i32.const 2 call $~lib/builtins/abort unreachable @@ -10764,8 +10994,8 @@ i32.eqz if i32.const 0 - i32.const 1312 - i32.const 194 + i32.const 1296 + i32.const 200 i32.const 2 call $~lib/builtins/abort unreachable @@ -10796,8 +11026,8 @@ i32.eqz if i32.const 0 - i32.const 1312 - i32.const 196 + i32.const 1296 + i32.const 202 i32.const 2 call $~lib/builtins/abort unreachable @@ -10828,8 +11058,8 @@ i32.eqz if i32.const 0 - i32.const 1312 - i32.const 198 + i32.const 1296 + i32.const 204 i32.const 2 call $~lib/builtins/abort unreachable @@ -10860,8 +11090,8 @@ i32.eqz if i32.const 0 - i32.const 1312 - i32.const 200 + i32.const 1296 + i32.const 206 i32.const 2 call $~lib/builtins/abort unreachable @@ -10892,8 +11122,8 @@ i32.eqz if i32.const 0 - i32.const 1312 - i32.const 202 + i32.const 1296 + i32.const 208 i32.const 2 call $~lib/builtins/abort unreachable @@ -10924,8 +11154,8 @@ i32.eqz if i32.const 0 - i32.const 1312 - i32.const 204 + i32.const 1296 + i32.const 210 i32.const 2 call $~lib/builtins/abort unreachable @@ -10957,8 +11187,8 @@ i32.eqz if i32.const 0 - i32.const 1312 - i32.const 206 + i32.const 1296 + i32.const 212 i32.const 2 call $~lib/builtins/abort unreachable @@ -10990,18 +11220,18 @@ i32.eqz if i32.const 0 - i32.const 1312 - i32.const 208 + i32.const 1296 + i32.const 214 i32.const 2 call $~lib/builtins/abort unreachable end local.get $0 call $~lib/rt/pure/__release - local.get $57 - call $~lib/rt/pure/__release local.get $58 call $~lib/rt/pure/__release + local.get $57 + call $~lib/rt/pure/__release local.get $55 call $~lib/rt/pure/__release local.get $56 @@ -11055,8 +11285,8 @@ i32.ne if i32.const 0 - i32.const 1312 - i32.const 216 + i32.const 1296 + i32.const 222 i32.const 2 call $~lib/builtins/abort unreachable @@ -11067,8 +11297,8 @@ i32.ne if i32.const 0 - i32.const 1312 - i32.const 217 + i32.const 1296 + i32.const 223 i32.const 2 call $~lib/builtins/abort unreachable @@ -11080,8 +11310,8 @@ i32.ne if i32.const 0 - i32.const 1312 - i32.const 218 + i32.const 1296 + i32.const 224 i32.const 2 call $~lib/builtins/abort unreachable @@ -11093,8 +11323,8 @@ i32.ne if i32.const 0 - i32.const 1312 - i32.const 219 + i32.const 1296 + i32.const 225 i32.const 2 call $~lib/builtins/abort unreachable @@ -11106,8 +11336,8 @@ i32.ne if i32.const 0 - i32.const 1312 - i32.const 220 + i32.const 1296 + i32.const 226 i32.const 2 call $~lib/builtins/abort unreachable @@ -11119,8 +11349,8 @@ i32.ne if i32.const 0 - i32.const 1312 - i32.const 221 + i32.const 1296 + i32.const 227 i32.const 2 call $~lib/builtins/abort unreachable @@ -11134,8 +11364,8 @@ i32.ne if i32.const 0 - i32.const 1312 - i32.const 225 + i32.const 1296 + i32.const 231 i32.const 2 call $~lib/builtins/abort unreachable @@ -11146,8 +11376,8 @@ i32.ne if i32.const 0 - i32.const 1312 - i32.const 226 + i32.const 1296 + i32.const 232 i32.const 2 call $~lib/builtins/abort unreachable @@ -11159,8 +11389,8 @@ i32.ne if i32.const 0 - i32.const 1312 - i32.const 227 + i32.const 1296 + i32.const 233 i32.const 2 call $~lib/builtins/abort unreachable @@ -11172,8 +11402,8 @@ i32.ne if i32.const 0 - i32.const 1312 - i32.const 228 + i32.const 1296 + i32.const 234 i32.const 2 call $~lib/builtins/abort unreachable @@ -11185,8 +11415,8 @@ i32.ne if i32.const 0 - i32.const 1312 - i32.const 229 + i32.const 1296 + i32.const 235 i32.const 2 call $~lib/builtins/abort unreachable @@ -11198,8 +11428,8 @@ i32.ne if i32.const 0 - i32.const 1312 - i32.const 230 + i32.const 1296 + i32.const 236 i32.const 2 call $~lib/builtins/abort unreachable @@ -11211,8 +11441,8 @@ i32.ne if i32.const 0 - i32.const 1312 - i32.const 231 + i32.const 1296 + i32.const 237 i32.const 2 call $~lib/builtins/abort unreachable @@ -11220,13 +11450,13 @@ global.get $std/array/arr local.tee $0 i32.load offset=12 - local.tee $57 + local.tee $58 i32.const 1 i32.lt_s if i32.const 1984 - i32.const 1520 - i32.const 349 + i32.const 1088 + i32.const 360 i32.const 20 call $~lib/builtins/abort unreachable @@ -11239,10 +11469,10 @@ local.get $1 i32.const 4 i32.add - local.get $57 + local.get $58 i32.const 1 i32.sub - local.tee $57 + local.tee $58 i32.const 2 i32.shl local.tee $55 @@ -11253,7 +11483,7 @@ i32.const 0 i32.store local.get $0 - local.get $57 + local.get $58 i32.store offset=12 global.set $std/array/i global.get $std/array/i @@ -11261,8 +11491,8 @@ i32.ne if i32.const 0 - i32.const 1312 - i32.const 240 + i32.const 1296 + i32.const 246 i32.const 2 call $~lib/builtins/abort unreachable @@ -11273,8 +11503,8 @@ i32.ne if i32.const 0 - i32.const 1312 - i32.const 241 + i32.const 1296 + i32.const 247 i32.const 2 call $~lib/builtins/abort unreachable @@ -11285,8 +11515,8 @@ i32.ne if i32.const 0 - i32.const 1312 - i32.const 242 + i32.const 1296 + i32.const 248 i32.const 2 call $~lib/builtins/abort unreachable @@ -11298,8 +11528,8 @@ i32.ne if i32.const 0 - i32.const 1312 - i32.const 243 + i32.const 1296 + i32.const 249 i32.const 2 call $~lib/builtins/abort unreachable @@ -11311,8 +11541,8 @@ i32.ne if i32.const 0 - i32.const 1312 - i32.const 244 + i32.const 1296 + i32.const 250 i32.const 2 call $~lib/builtins/abort unreachable @@ -11324,8 +11554,8 @@ i32.ne if i32.const 0 - i32.const 1312 - i32.const 245 + i32.const 1296 + i32.const 251 i32.const 2 call $~lib/builtins/abort unreachable @@ -11337,8 +11567,8 @@ i32.ne if i32.const 0 - i32.const 1312 - i32.const 246 + i32.const 1296 + i32.const 252 i32.const 2 call $~lib/builtins/abort unreachable @@ -11351,8 +11581,8 @@ i32.ne if i32.const 0 - i32.const 1312 - i32.const 250 + i32.const 1296 + i32.const 256 i32.const 2 call $~lib/builtins/abort unreachable @@ -11363,8 +11593,8 @@ i32.ne if i32.const 0 - i32.const 1312 - i32.const 251 + i32.const 1296 + i32.const 257 i32.const 2 call $~lib/builtins/abort unreachable @@ -11375,8 +11605,8 @@ i32.ne if i32.const 0 - i32.const 1312 - i32.const 252 + i32.const 1296 + i32.const 258 i32.const 2 call $~lib/builtins/abort unreachable @@ -11388,8 +11618,8 @@ i32.ne if i32.const 0 - i32.const 1312 - i32.const 253 + i32.const 1296 + i32.const 259 i32.const 2 call $~lib/builtins/abort unreachable @@ -11401,8 +11631,8 @@ i32.ne if i32.const 0 - i32.const 1312 - i32.const 254 + i32.const 1296 + i32.const 260 i32.const 2 call $~lib/builtins/abort unreachable @@ -11414,21 +11644,21 @@ i32.ne if i32.const 0 - i32.const 1312 - i32.const 255 + i32.const 1296 + i32.const 261 i32.const 2 call $~lib/builtins/abort unreachable end global.get $std/array/arr - local.tee $57 + local.tee $0 i32.load offset=12 local.tee $1 if - local.get $57 + local.get $0 i32.load offset=4 - local.set $0 - local.get $57 + local.set $58 + local.get $0 i32.load offset=4 local.get $1 i32.const 1 @@ -11438,24 +11668,24 @@ i32.add local.set $1 loop $while-continue|0 - local.get $0 + local.get $58 local.get $1 i32.lt_u if - local.get $0 + local.get $58 i32.load - local.set $58 - local.get $0 + local.set $57 + local.get $58 local.get $1 i32.load i32.store local.get $1 - local.get $58 + local.get $57 i32.store - local.get $0 + local.get $58 i32.const 4 i32.add - local.set $0 + local.set $58 local.get $1 i32.const 4 i32.sub @@ -11470,8 +11700,8 @@ i32.ne if i32.const 0 - i32.const 1312 - i32.const 263 + i32.const 1296 + i32.const 269 i32.const 2 call $~lib/builtins/abort unreachable @@ -11482,8 +11712,8 @@ i32.ne if i32.const 0 - i32.const 1312 - i32.const 264 + i32.const 1296 + i32.const 270 i32.const 2 call $~lib/builtins/abort unreachable @@ -11495,8 +11725,8 @@ i32.ne if i32.const 0 - i32.const 1312 - i32.const 265 + i32.const 1296 + i32.const 271 i32.const 2 call $~lib/builtins/abort unreachable @@ -11508,8 +11738,8 @@ i32.ne if i32.const 0 - i32.const 1312 - i32.const 266 + i32.const 1296 + i32.const 272 i32.const 2 call $~lib/builtins/abort unreachable @@ -11521,8 +11751,8 @@ i32.ne if i32.const 0 - i32.const 1312 - i32.const 267 + i32.const 1296 + i32.const 273 i32.const 2 call $~lib/builtins/abort unreachable @@ -11541,8 +11771,8 @@ global.get $std/array/i if i32.const 0 - i32.const 1312 - i32.const 277 + i32.const 1296 + i32.const 283 i32.const 2 call $~lib/builtins/abort unreachable @@ -11557,8 +11787,8 @@ i32.ne if i32.const 0 - i32.const 1312 - i32.const 280 + i32.const 1296 + i32.const 286 i32.const 2 call $~lib/builtins/abort unreachable @@ -11573,8 +11803,8 @@ i32.ne if i32.const 0 - i32.const 1312 - i32.const 283 + i32.const 1296 + i32.const 289 i32.const 2 call $~lib/builtins/abort unreachable @@ -11589,8 +11819,8 @@ i32.ne if i32.const 0 - i32.const 1312 - i32.const 286 + i32.const 1296 + i32.const 292 i32.const 2 call $~lib/builtins/abort unreachable @@ -11605,8 +11835,8 @@ i32.ne if i32.const 0 - i32.const 1312 - i32.const 289 + i32.const 1296 + i32.const 295 i32.const 2 call $~lib/builtins/abort unreachable @@ -11621,8 +11851,8 @@ i32.ne if i32.const 0 - i32.const 1312 - i32.const 292 + i32.const 1296 + i32.const 298 i32.const 2 call $~lib/builtins/abort unreachable @@ -11637,8 +11867,8 @@ i32.ne if i32.const 0 - i32.const 1312 - i32.const 295 + i32.const 1296 + i32.const 301 i32.const 2 call $~lib/builtins/abort unreachable @@ -11653,8 +11883,8 @@ i32.ne if i32.const 0 - i32.const 1312 - i32.const 298 + i32.const 1296 + i32.const 304 i32.const 2 call $~lib/builtins/abort unreachable @@ -11669,8 +11899,8 @@ i32.ne if i32.const 0 - i32.const 1312 - i32.const 301 + i32.const 1296 + i32.const 307 i32.const 2 call $~lib/builtins/abort unreachable @@ -11685,8 +11915,8 @@ i32.ne if i32.const 0 - i32.const 1312 - i32.const 304 + i32.const 1296 + i32.const 310 i32.const 2 call $~lib/builtins/abort unreachable @@ -11704,10 +11934,10 @@ block $__inlined_func$~lib/array/Array#indexOf local.get $0 i32.load offset=12 - local.tee $57 + local.tee $58 if (result i32) i32.const 0 - local.get $57 + local.get $58 i32.ge_s else i32.const 1 @@ -11719,13 +11949,13 @@ end local.get $55 i32.load offset=4 - local.set $58 + local.set $57 loop $while-continue|022 local.get $1 - local.get $57 + local.get $58 i32.lt_s if - local.get $58 + local.get $57 local.get $1 i32.const 2 i32.shl @@ -11749,8 +11979,8 @@ i32.ne if i32.const 0 - i32.const 1312 - i32.const 306 + i32.const 1296 + i32.const 312 i32.const 2 call $~lib/builtins/abort unreachable @@ -11761,17 +11991,17 @@ i32.const 3248 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.tee $57 + local.tee $58 local.set $56 i32.const 0 local.set $1 block $__inlined_func$~lib/array/Array#indexOf - local.get $57 + local.get $58 i32.load offset=12 - local.tee $58 + local.tee $57 if (result i32) i32.const 0 - local.get $58 + local.get $57 i32.ge_s else i32.const 1 @@ -11786,7 +12016,7 @@ local.set $55 loop $while-continue|023 local.get $1 - local.get $58 + local.get $57 i32.lt_s if local.get $55 @@ -11813,15 +12043,15 @@ i32.ne if i32.const 0 - i32.const 1312 - i32.const 307 + i32.const 1296 + i32.const 313 i32.const 2 call $~lib/builtins/abort unreachable end local.get $0 call $~lib/rt/pure/__release - local.get $57 + local.get $58 call $~lib/rt/pure/__release global.get $std/array/arr i32.const 44 @@ -11831,8 +12061,8 @@ i32.ne if i32.const 0 - i32.const 1312 - i32.const 314 + i32.const 1296 + i32.const 320 i32.const 2 call $~lib/builtins/abort unreachable @@ -11845,8 +12075,8 @@ i32.ne if i32.const 0 - i32.const 1312 - i32.const 317 + i32.const 1296 + i32.const 323 i32.const 2 call $~lib/builtins/abort unreachable @@ -11857,8 +12087,8 @@ call $~lib/array/Array#includes if i32.const 0 - i32.const 1312 - i32.const 320 + i32.const 1296 + i32.const 326 i32.const 2 call $~lib/builtins/abort unreachable @@ -11869,8 +12099,8 @@ call $~lib/array/Array#includes if i32.const 0 - i32.const 1312 - i32.const 323 + i32.const 1296 + i32.const 329 i32.const 2 call $~lib/builtins/abort unreachable @@ -11883,8 +12113,8 @@ i32.ne if i32.const 0 - i32.const 1312 - i32.const 326 + i32.const 1296 + i32.const 332 i32.const 2 call $~lib/builtins/abort unreachable @@ -11897,8 +12127,8 @@ i32.ne if i32.const 0 - i32.const 1312 - i32.const 329 + i32.const 1296 + i32.const 335 i32.const 2 call $~lib/builtins/abort unreachable @@ -11911,8 +12141,8 @@ i32.ne if i32.const 0 - i32.const 1312 - i32.const 332 + i32.const 1296 + i32.const 338 i32.const 2 call $~lib/builtins/abort unreachable @@ -11925,8 +12155,8 @@ i32.ne if i32.const 0 - i32.const 1312 - i32.const 335 + i32.const 1296 + i32.const 341 i32.const 2 call $~lib/builtins/abort unreachable @@ -11939,8 +12169,8 @@ i32.ne if i32.const 0 - i32.const 1312 - i32.const 338 + i32.const 1296 + i32.const 344 i32.const 2 call $~lib/builtins/abort unreachable @@ -11953,15 +12183,15 @@ i32.ne if i32.const 0 - i32.const 1312 - i32.const 341 + i32.const 1296 + i32.const 347 i32.const 2 call $~lib/builtins/abort unreachable end block $__inlined_func$~lib/array/Array#includes (result i32) i32.const 0 - local.set $0 + local.set $58 i32.const 0 i32.const 1 i32.const 2 @@ -11969,29 +12199,29 @@ i32.const 3280 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.tee $57 + local.tee $0 i32.load offset=12 - local.tee $58 + local.tee $57 if (result i32) i32.const 0 - local.get $58 + local.get $57 i32.ge_s else i32.const 1 end br_if $__inlined_func$~lib/array/Array#includes drop - local.get $57 + local.get $0 i32.load offset=4 local.set $56 loop $while-continue|024 - local.get $0 local.get $58 + local.get $57 i32.lt_s if i32.const 1 local.get $56 - local.get $0 + local.get $58 i32.const 2 i32.shl i32.add @@ -12008,10 +12238,10 @@ end br_if $__inlined_func$~lib/array/Array#includes drop - local.get $0 + local.get $58 i32.const 1 i32.add - local.set $0 + local.set $58 br $while-continue|024 end end @@ -12020,15 +12250,15 @@ i32.eqz if i32.const 0 - i32.const 1312 - i32.const 343 + i32.const 1296 + i32.const 349 i32.const 2 call $~lib/builtins/abort unreachable end block $__inlined_func$~lib/array/Array#includes (result i32) i32.const 0 - local.set $0 + local.set $58 i32.const 0 i32.const 1 i32.const 3 @@ -12036,7 +12266,7 @@ i32.const 3312 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.tee $58 + local.tee $57 i32.load offset=12 local.tee $55 if (result i32) @@ -12048,17 +12278,17 @@ end br_if $__inlined_func$~lib/array/Array#includes drop - local.get $58 + local.get $57 i32.load offset=4 local.set $42 loop $while-continue|025 - local.get $0 + local.get $58 local.get $55 i32.lt_s if i32.const 1 local.get $42 - local.get $0 + local.get $58 i32.const 3 i32.shl i32.add @@ -12075,10 +12305,10 @@ end br_if $__inlined_func$~lib/array/Array#includes drop - local.get $0 + local.get $58 i32.const 1 i32.add - local.set $0 + local.set $58 br $while-continue|025 end end @@ -12087,8 +12317,8 @@ i32.eqz if i32.const 0 - i32.const 1312 - i32.const 344 + i32.const 1296 + i32.const 350 i32.const 2 call $~lib/builtins/abort unreachable @@ -12104,8 +12334,8 @@ i32.ne if i32.const 0 - i32.const 1312 - i32.const 348 + i32.const 1296 + i32.const 354 i32.const 2 call $~lib/builtins/abort unreachable @@ -12116,8 +12346,8 @@ i32.ne if i32.const 0 - i32.const 1312 - i32.const 349 + i32.const 1296 + i32.const 355 i32.const 2 call $~lib/builtins/abort unreachable @@ -12129,8 +12359,8 @@ i32.ne if i32.const 0 - i32.const 1312 - i32.const 350 + i32.const 1296 + i32.const 356 i32.const 2 call $~lib/builtins/abort unreachable @@ -12142,15 +12372,15 @@ i32.ne if i32.const 0 - i32.const 1312 - i32.const 351 + i32.const 1296 + i32.const 357 i32.const 2 call $~lib/builtins/abort unreachable end - local.get $57 + local.get $0 call $~lib/rt/pure/__release - local.get $58 + local.get $57 call $~lib/rt/pure/__release i32.const 5 i32.const 2 @@ -12175,8 +12405,8 @@ i32.eqz if i32.const 0 - i32.const 1312 - i32.const 358 + i32.const 1296 + i32.const 364 i32.const 2 call $~lib/builtins/abort unreachable @@ -12194,8 +12424,8 @@ i32.eqz if i32.const 0 - i32.const 1312 - i32.const 359 + i32.const 1296 + i32.const 365 i32.const 2 call $~lib/builtins/abort unreachable @@ -12226,8 +12456,8 @@ i32.eqz if i32.const 0 - i32.const 1312 - i32.const 362 + i32.const 1296 + i32.const 368 i32.const 2 call $~lib/builtins/abort unreachable @@ -12245,8 +12475,8 @@ i32.eqz if i32.const 0 - i32.const 1312 - i32.const 363 + i32.const 1296 + i32.const 369 i32.const 2 call $~lib/builtins/abort unreachable @@ -12277,8 +12507,8 @@ i32.eqz if i32.const 0 - i32.const 1312 - i32.const 366 + i32.const 1296 + i32.const 372 i32.const 2 call $~lib/builtins/abort unreachable @@ -12296,8 +12526,8 @@ i32.eqz if i32.const 0 - i32.const 1312 - i32.const 367 + i32.const 1296 + i32.const 373 i32.const 2 call $~lib/builtins/abort unreachable @@ -12328,8 +12558,8 @@ i32.eqz if i32.const 0 - i32.const 1312 - i32.const 370 + i32.const 1296 + i32.const 376 i32.const 2 call $~lib/builtins/abort unreachable @@ -12347,8 +12577,8 @@ i32.eqz if i32.const 0 - i32.const 1312 - i32.const 371 + i32.const 1296 + i32.const 377 i32.const 2 call $~lib/builtins/abort unreachable @@ -12378,8 +12608,8 @@ i32.eqz if i32.const 0 - i32.const 1312 - i32.const 374 + i32.const 1296 + i32.const 380 i32.const 2 call $~lib/builtins/abort unreachable @@ -12397,8 +12627,8 @@ i32.eqz if i32.const 0 - i32.const 1312 - i32.const 375 + i32.const 1296 + i32.const 381 i32.const 2 call $~lib/builtins/abort unreachable @@ -12428,8 +12658,8 @@ i32.eqz if i32.const 0 - i32.const 1312 - i32.const 378 + i32.const 1296 + i32.const 384 i32.const 2 call $~lib/builtins/abort unreachable @@ -12447,8 +12677,8 @@ i32.eqz if i32.const 0 - i32.const 1312 - i32.const 379 + i32.const 1296 + i32.const 385 i32.const 2 call $~lib/builtins/abort unreachable @@ -12478,8 +12708,8 @@ i32.eqz if i32.const 0 - i32.const 1312 - i32.const 382 + i32.const 1296 + i32.const 388 i32.const 2 call $~lib/builtins/abort unreachable @@ -12497,8 +12727,8 @@ i32.eqz if i32.const 0 - i32.const 1312 - i32.const 383 + i32.const 1296 + i32.const 389 i32.const 2 call $~lib/builtins/abort unreachable @@ -12528,8 +12758,8 @@ i32.eqz if i32.const 0 - i32.const 1312 - i32.const 386 + i32.const 1296 + i32.const 392 i32.const 2 call $~lib/builtins/abort unreachable @@ -12547,8 +12777,8 @@ i32.eqz if i32.const 0 - i32.const 1312 - i32.const 387 + i32.const 1296 + i32.const 393 i32.const 2 call $~lib/builtins/abort unreachable @@ -12578,8 +12808,8 @@ i32.eqz if i32.const 0 - i32.const 1312 - i32.const 390 + i32.const 1296 + i32.const 396 i32.const 2 call $~lib/builtins/abort unreachable @@ -12597,8 +12827,8 @@ i32.eqz if i32.const 0 - i32.const 1312 - i32.const 391 + i32.const 1296 + i32.const 397 i32.const 2 call $~lib/builtins/abort unreachable @@ -12628,8 +12858,8 @@ i32.eqz if i32.const 0 - i32.const 1312 - i32.const 394 + i32.const 1296 + i32.const 400 i32.const 2 call $~lib/builtins/abort unreachable @@ -12647,8 +12877,8 @@ i32.eqz if i32.const 0 - i32.const 1312 - i32.const 395 + i32.const 1296 + i32.const 401 i32.const 2 call $~lib/builtins/abort unreachable @@ -12678,8 +12908,8 @@ i32.eqz if i32.const 0 - i32.const 1312 - i32.const 398 + i32.const 1296 + i32.const 404 i32.const 2 call $~lib/builtins/abort unreachable @@ -12697,8 +12927,8 @@ i32.eqz if i32.const 0 - i32.const 1312 - i32.const 399 + i32.const 1296 + i32.const 405 i32.const 2 call $~lib/builtins/abort unreachable @@ -12728,8 +12958,8 @@ i32.eqz if i32.const 0 - i32.const 1312 - i32.const 402 + i32.const 1296 + i32.const 408 i32.const 2 call $~lib/builtins/abort unreachable @@ -12747,8 +12977,8 @@ i32.eqz if i32.const 0 - i32.const 1312 - i32.const 403 + i32.const 1296 + i32.const 409 i32.const 2 call $~lib/builtins/abort unreachable @@ -12779,8 +13009,8 @@ i32.eqz if i32.const 0 - i32.const 1312 - i32.const 406 + i32.const 1296 + i32.const 412 i32.const 2 call $~lib/builtins/abort unreachable @@ -12798,8 +13028,8 @@ i32.eqz if i32.const 0 - i32.const 1312 - i32.const 407 + i32.const 1296 + i32.const 413 i32.const 2 call $~lib/builtins/abort unreachable @@ -12830,8 +13060,8 @@ i32.eqz if i32.const 0 - i32.const 1312 - i32.const 410 + i32.const 1296 + i32.const 416 i32.const 2 call $~lib/builtins/abort unreachable @@ -12849,8 +13079,8 @@ i32.eqz if i32.const 0 - i32.const 1312 - i32.const 411 + i32.const 1296 + i32.const 417 i32.const 2 call $~lib/builtins/abort unreachable @@ -12861,25 +13091,25 @@ i32.const 4912 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.tee $0 + local.tee $57 i32.const 1 call $~lib/array/Array#splice local.tee $55 i32.load offset=12 if i32.const 0 - i32.const 1312 - i32.const 415 + i32.const 1296 + i32.const 421 i32.const 2 call $~lib/builtins/abort unreachable end - local.get $0 + local.get $57 i32.load offset=12 if i32.const 0 - i32.const 1312 - i32.const 416 + i32.const 1296 + i32.const 422 i32.const 2 call $~lib/builtins/abort unreachable @@ -12890,7 +13120,7 @@ i32.const 0 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.tee $57 + local.tee $0 i32.load offset=4 local.tee $1 i32.const 1 @@ -12912,9 +13142,9 @@ i32.const 5 call $std/array/Ref#constructor i32.store offset=16 - local.get $0 - call $~lib/rt/pure/__release local.get $57 + call $~lib/rt/pure/__release + local.get $0 i32.const 2 call $~lib/array/Array#splice local.set $42 @@ -12926,8 +13156,8 @@ i32.ne if i32.const 0 - i32.const 1312 - i32.const 421 + i32.const 1296 + i32.const 427 i32.const 2 call $~lib/builtins/abort unreachable @@ -12941,8 +13171,8 @@ i32.ne if i32.const 0 - i32.const 1312 - i32.const 422 + i32.const 1296 + i32.const 428 i32.const 2 call $~lib/builtins/abort unreachable @@ -12956,25 +13186,25 @@ i32.ne if i32.const 0 - i32.const 1312 - i32.const 423 + i32.const 1296 + i32.const 429 i32.const 2 call $~lib/builtins/abort unreachable end - local.get $57 + local.get $0 i32.load offset=12 i32.const 3 i32.ne if i32.const 0 - i32.const 1312 - i32.const 425 + i32.const 1296 + i32.const 431 i32.const 2 call $~lib/builtins/abort unreachable end - local.get $57 + local.get $0 i32.const 0 call $~lib/array/Array#__get local.tee $6 @@ -12983,13 +13213,13 @@ i32.ne if i32.const 0 - i32.const 1312 - i32.const 426 + i32.const 1296 + i32.const 432 i32.const 2 call $~lib/builtins/abort unreachable end - local.get $57 + local.get $0 i32.const 1 call $~lib/array/Array#__get local.tee $5 @@ -12998,13 +13228,13 @@ i32.ne if i32.const 0 - i32.const 1312 - i32.const 427 + i32.const 1296 + i32.const 433 i32.const 2 call $~lib/builtins/abort unreachable end - local.get $57 + local.get $0 i32.const 2 call $~lib/array/Array#__get local.tee $4 @@ -13013,8 +13243,8 @@ i32.ne if i32.const 0 - i32.const 1312 - i32.const 428 + i32.const 1296 + i32.const 434 i32.const 2 call $~lib/builtins/abort unreachable @@ -13046,8 +13276,8 @@ i32.ne if i32.const 0 - i32.const 1312 - i32.const 433 + i32.const 1296 + i32.const 439 i32.const 2 call $~lib/builtins/abort unreachable @@ -13060,8 +13290,8 @@ i32.eqz if i32.const 0 - i32.const 1312 - i32.const 434 + i32.const 1296 + i32.const 440 i32.const 9 call $~lib/builtins/abort unreachable @@ -13071,8 +13301,8 @@ i32.ne if i32.const 0 - i32.const 1312 - i32.const 434 + i32.const 1296 + i32.const 440 i32.const 2 call $~lib/builtins/abort unreachable @@ -13083,8 +13313,8 @@ i32.ne if i32.const 0 - i32.const 1312 - i32.const 436 + i32.const 1296 + i32.const 442 i32.const 2 call $~lib/builtins/abort unreachable @@ -13095,8 +13325,8 @@ local.tee $3 if i32.const 0 - i32.const 1312 - i32.const 437 + i32.const 1296 + i32.const 443 i32.const 2 call $~lib/builtins/abort unreachable @@ -13104,13 +13334,13 @@ local.get $55 i32.const 1 call $~lib/array/Array#__get - local.tee $0 - local.get $0 + local.tee $57 + local.get $57 i32.eqz if i32.const 0 - i32.const 1312 - i32.const 438 + i32.const 1296 + i32.const 444 i32.const 9 call $~lib/builtins/abort unreachable @@ -13120,8 +13350,8 @@ i32.ne if i32.const 0 - i32.const 1312 - i32.const 438 + i32.const 1296 + i32.const 444 i32.const 2 call $~lib/builtins/abort unreachable @@ -13226,7 +13456,7 @@ call $~lib/rt/pure/__release local.get $3 call $~lib/rt/pure/__release - local.get $0 + local.get $57 call $~lib/rt/pure/__release global.get $std/array/arr i32.const 0 @@ -13251,8 +13481,8 @@ global.get $std/array/i if i32.const 0 - i32.const 1312 - i32.const 451 + i32.const 1296 + i32.const 457 i32.const 2 call $~lib/builtins/abort unreachable @@ -13266,8 +13496,8 @@ i32.ne if i32.const 0 - i32.const 1312 - i32.const 454 + i32.const 1296 + i32.const 460 i32.const 2 call $~lib/builtins/abort unreachable @@ -13281,8 +13511,8 @@ i32.ne if i32.const 0 - i32.const 1312 - i32.const 457 + i32.const 1296 + i32.const 463 i32.const 2 call $~lib/builtins/abort unreachable @@ -13296,8 +13526,8 @@ i32.ne if i32.const 0 - i32.const 1312 - i32.const 465 + i32.const 1296 + i32.const 471 i32.const 2 call $~lib/builtins/abort unreachable @@ -13308,8 +13538,8 @@ i32.ne if i32.const 0 - i32.const 1312 - i32.const 466 + i32.const 1296 + i32.const 472 i32.const 2 call $~lib/builtins/abort unreachable @@ -13323,8 +13553,8 @@ i32.eq if i32.const 0 - i32.const 1312 - i32.const 468 + i32.const 1296 + i32.const 474 i32.const 2 call $~lib/builtins/abort unreachable @@ -13350,8 +13580,8 @@ i32.ne if i32.const 0 - i32.const 1312 - i32.const 481 + i32.const 1296 + i32.const 487 i32.const 2 call $~lib/builtins/abort unreachable @@ -13362,8 +13592,8 @@ i32.ne if i32.const 0 - i32.const 1312 - i32.const 482 + i32.const 1296 + i32.const 488 i32.const 2 call $~lib/builtins/abort unreachable @@ -13381,8 +13611,8 @@ i32.ne if i32.const 0 - i32.const 1312 - i32.const 492 + i32.const 1296 + i32.const 498 i32.const 2 call $~lib/builtins/abort unreachable @@ -13392,8 +13622,8 @@ call $~lib/array/Array#every if i32.const 0 - i32.const 1312 - i32.const 495 + i32.const 1296 + i32.const 501 i32.const 2 call $~lib/builtins/abort unreachable @@ -13405,8 +13635,8 @@ i32.ne if i32.const 0 - i32.const 1312 - i32.const 503 + i32.const 1296 + i32.const 509 i32.const 2 call $~lib/builtins/abort unreachable @@ -13417,8 +13647,8 @@ i32.ne if i32.const 0 - i32.const 1312 - i32.const 504 + i32.const 1296 + i32.const 510 i32.const 2 call $~lib/builtins/abort unreachable @@ -13428,8 +13658,8 @@ call $~lib/array/Array#every if i32.const 0 - i32.const 1312 - i32.const 506 + i32.const 1296 + i32.const 512 i32.const 2 call $~lib/builtins/abort unreachable @@ -13453,8 +13683,8 @@ i32.ne if i32.const 0 - i32.const 1312 - i32.const 519 + i32.const 1296 + i32.const 525 i32.const 2 call $~lib/builtins/abort unreachable @@ -13465,8 +13695,8 @@ i32.ne if i32.const 0 - i32.const 1312 - i32.const 520 + i32.const 1296 + i32.const 526 i32.const 2 call $~lib/builtins/abort unreachable @@ -13484,8 +13714,8 @@ i32.ne if i32.const 0 - i32.const 1312 - i32.const 530 + i32.const 1296 + i32.const 536 i32.const 2 call $~lib/builtins/abort unreachable @@ -13495,8 +13725,8 @@ call $~lib/array/Array#some if i32.const 0 - i32.const 1312 - i32.const 533 + i32.const 1296 + i32.const 539 i32.const 2 call $~lib/builtins/abort unreachable @@ -13506,8 +13736,8 @@ call $~lib/array/Array#some if i32.const 0 - i32.const 1312 - i32.const 541 + i32.const 1296 + i32.const 547 i32.const 2 call $~lib/builtins/abort unreachable @@ -13518,8 +13748,8 @@ i32.ne if i32.const 0 - i32.const 1312 - i32.const 542 + i32.const 1296 + i32.const 548 i32.const 2 call $~lib/builtins/abort unreachable @@ -13531,8 +13761,8 @@ i32.ne if i32.const 0 - i32.const 1312 - i32.const 544 + i32.const 1296 + i32.const 550 i32.const 2 call $~lib/builtins/abort unreachable @@ -13554,8 +13784,8 @@ call $~lib/array/Array#some if i32.const 0 - i32.const 1312 - i32.const 557 + i32.const 1296 + i32.const 563 i32.const 2 call $~lib/builtins/abort unreachable @@ -13566,8 +13796,8 @@ i32.ne if i32.const 0 - i32.const 1312 - i32.const 558 + i32.const 1296 + i32.const 564 i32.const 2 call $~lib/builtins/abort unreachable @@ -13588,8 +13818,8 @@ i32.ne if i32.const 0 - i32.const 1312 - i32.const 569 + i32.const 1296 + i32.const 575 i32.const 2 call $~lib/builtins/abort unreachable @@ -13604,8 +13834,8 @@ i32.ne if i32.const 0 - i32.const 1312 - i32.const 578 + i32.const 1296 + i32.const 584 i32.const 2 call $~lib/builtins/abort unreachable @@ -13616,8 +13846,8 @@ i32.ne if i32.const 0 - i32.const 1312 - i32.const 579 + i32.const 1296 + i32.const 585 i32.const 2 call $~lib/builtins/abort unreachable @@ -13632,8 +13862,8 @@ i32.ne if i32.const 0 - i32.const 1312 - i32.const 582 + i32.const 1296 + i32.const 588 i32.const 2 call $~lib/builtins/abort unreachable @@ -13660,8 +13890,8 @@ i32.ne if i32.const 0 - i32.const 1312 - i32.const 596 + i32.const 1296 + i32.const 602 i32.const 2 call $~lib/builtins/abort unreachable @@ -13672,8 +13902,8 @@ i32.ne if i32.const 0 - i32.const 1312 - i32.const 597 + i32.const 1296 + i32.const 603 i32.const 2 call $~lib/builtins/abort unreachable @@ -13693,8 +13923,8 @@ i32.ne if i32.const 0 - i32.const 1312 - i32.const 622 + i32.const 1296 + i32.const 628 i32.const 2 call $~lib/builtins/abort unreachable @@ -13727,9 +13957,9 @@ i32.const 3 call $~lib/array/Array#push i32.const 0 - local.set $0 + local.set $58 global.get $std/array/arr - local.tee $58 + local.tee $57 i32.load offset=12 local.tee $56 i32.const 2 @@ -13741,9 +13971,9 @@ i32.load offset=4 local.set $54 loop $for-loop|043 - local.get $0 - local.get $56 local.get $58 + local.get $56 + local.get $57 i32.load offset=12 local.tee $53 local.get $56 @@ -13754,11 +13984,11 @@ if i32.const 3 global.set $~argumentsLength - local.get $0 + local.get $58 i32.const 2 i32.shl local.tee $53 - local.get $58 + local.get $57 i32.load offset=4 i32.add i32.load @@ -13769,10 +13999,10 @@ i32.add local.get $41 f32.store - local.get $0 + local.get $58 i32.const 1 i32.add - local.set $0 + local.set $58 br $for-loop|043 end end @@ -13782,8 +14012,8 @@ i32.ne if i32.const 0 - i32.const 1312 - i32.const 636 + i32.const 1296 + i32.const 642 i32.const 2 call $~lib/builtins/abort unreachable @@ -13798,8 +14028,8 @@ f32.ne if i32.const 0 - i32.const 1312 - i32.const 637 + i32.const 1296 + i32.const 643 i32.const 2 call $~lib/builtins/abort unreachable @@ -13815,8 +14045,8 @@ i32.ne if i32.const 0 - i32.const 1312 - i32.const 646 + i32.const 1296 + i32.const 652 i32.const 2 call $~lib/builtins/abort unreachable @@ -13827,8 +14057,8 @@ i32.ne if i32.const 0 - i32.const 1312 - i32.const 647 + i32.const 1296 + i32.const 653 i32.const 2 call $~lib/builtins/abort unreachable @@ -13844,8 +14074,8 @@ i32.ne if i32.const 0 - i32.const 1312 - i32.const 654 + i32.const 1296 + i32.const 660 i32.const 2 call $~lib/builtins/abort unreachable @@ -13873,8 +14103,8 @@ i32.ne if i32.const 0 - i32.const 1312 - i32.const 669 + i32.const 1296 + i32.const 675 i32.const 2 call $~lib/builtins/abort unreachable @@ -13885,8 +14115,8 @@ i32.ne if i32.const 0 - i32.const 1312 - i32.const 670 + i32.const 1296 + i32.const 676 i32.const 2 call $~lib/builtins/abort unreachable @@ -13908,8 +14138,8 @@ i32.ne if i32.const 0 - i32.const 1312 - i32.const 680 + i32.const 1296 + i32.const 686 i32.const 2 call $~lib/builtins/abort unreachable @@ -13925,8 +14155,8 @@ i32.ne if i32.const 0 - i32.const 1312 - i32.const 689 + i32.const 1296 + i32.const 695 i32.const 2 call $~lib/builtins/abort unreachable @@ -13937,8 +14167,8 @@ i32.ne if i32.const 0 - i32.const 1312 - i32.const 690 + i32.const 1296 + i32.const 696 i32.const 2 call $~lib/builtins/abort unreachable @@ -13954,8 +14184,8 @@ i32.ne if i32.const 0 - i32.const 1312 - i32.const 697 + i32.const 1296 + i32.const 703 i32.const 2 call $~lib/builtins/abort unreachable @@ -13983,8 +14213,8 @@ i32.ne if i32.const 0 - i32.const 1312 - i32.const 712 + i32.const 1296 + i32.const 718 i32.const 2 call $~lib/builtins/abort unreachable @@ -13995,8 +14225,8 @@ i32.ne if i32.const 0 - i32.const 1312 - i32.const 713 + i32.const 1296 + i32.const 719 i32.const 2 call $~lib/builtins/abort unreachable @@ -14019,8 +14249,8 @@ i32.ne if i32.const 0 - i32.const 1312 - i32.const 723 + i32.const 1296 + i32.const 729 i32.const 2 call $~lib/builtins/abort unreachable @@ -14035,8 +14265,8 @@ i32.ne if i32.const 0 - i32.const 1312 - i32.const 727 + i32.const 1296 + i32.const 733 i32.const 2 call $~lib/builtins/abort unreachable @@ -14051,8 +14281,8 @@ i32.ne if i32.const 0 - i32.const 1312 - i32.const 730 + i32.const 1296 + i32.const 736 i32.const 2 call $~lib/builtins/abort unreachable @@ -14063,8 +14293,8 @@ call $~lib/array/Array#reduce if i32.const 0 - i32.const 1312 - i32.const 733 + i32.const 1296 + i32.const 739 i32.const 2 call $~lib/builtins/abort unreachable @@ -14079,8 +14309,8 @@ i32.ne if i32.const 0 - i32.const 1312 - i32.const 741 + i32.const 1296 + i32.const 747 i32.const 2 call $~lib/builtins/abort unreachable @@ -14091,8 +14321,8 @@ i32.ne if i32.const 0 - i32.const 1312 - i32.const 742 + i32.const 1296 + i32.const 748 i32.const 2 call $~lib/builtins/abort unreachable @@ -14107,8 +14337,8 @@ i32.ne if i32.const 0 - i32.const 1312 - i32.const 744 + i32.const 1296 + i32.const 750 i32.const 2 call $~lib/builtins/abort unreachable @@ -14135,8 +14365,8 @@ i32.ne if i32.const 0 - i32.const 1312 - i32.const 757 + i32.const 1296 + i32.const 763 i32.const 2 call $~lib/builtins/abort unreachable @@ -14147,8 +14377,8 @@ i32.ne if i32.const 0 - i32.const 1312 - i32.const 758 + i32.const 1296 + i32.const 764 i32.const 2 call $~lib/builtins/abort unreachable @@ -14169,8 +14399,8 @@ i32.ne if i32.const 0 - i32.const 1312 - i32.const 768 + i32.const 1296 + i32.const 774 i32.const 2 call $~lib/builtins/abort unreachable @@ -14185,8 +14415,8 @@ i32.ne if i32.const 0 - i32.const 1312 - i32.const 772 + i32.const 1296 + i32.const 778 i32.const 2 call $~lib/builtins/abort unreachable @@ -14201,8 +14431,8 @@ i32.ne if i32.const 0 - i32.const 1312 - i32.const 775 + i32.const 1296 + i32.const 781 i32.const 2 call $~lib/builtins/abort unreachable @@ -14213,8 +14443,8 @@ call $~lib/array/Array#reduceRight if i32.const 0 - i32.const 1312 - i32.const 778 + i32.const 1296 + i32.const 784 i32.const 2 call $~lib/builtins/abort unreachable @@ -14229,8 +14459,8 @@ i32.ne if i32.const 0 - i32.const 1312 - i32.const 786 + i32.const 1296 + i32.const 792 i32.const 2 call $~lib/builtins/abort unreachable @@ -14241,8 +14471,8 @@ i32.ne if i32.const 0 - i32.const 1312 - i32.const 787 + i32.const 1296 + i32.const 793 i32.const 2 call $~lib/builtins/abort unreachable @@ -14257,8 +14487,8 @@ i32.ne if i32.const 0 - i32.const 1312 - i32.const 789 + i32.const 1296 + i32.const 795 i32.const 2 call $~lib/builtins/abort unreachable @@ -14285,8 +14515,8 @@ i32.ne if i32.const 0 - i32.const 1312 - i32.const 802 + i32.const 1296 + i32.const 808 i32.const 2 call $~lib/builtins/abort unreachable @@ -14295,8 +14525,8 @@ i32.load offset=12 if i32.const 0 - i32.const 1312 - i32.const 803 + i32.const 1296 + i32.const 809 i32.const 2 call $~lib/builtins/abort unreachable @@ -14322,10 +14552,10 @@ i32.const 5280 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.set $0 + local.set $58 i32.const 0 global.set $~argumentsLength - local.get $0 + local.get $58 call $~lib/array/Array#sort|trampoline call $~lib/rt/pure/__release block $__inlined_func$std/array/isArraysEqual (result i32) @@ -14339,7 +14569,7 @@ i32.const 0 local.set $1 i32.const 0 - local.get $0 + local.get $58 i32.load offset=12 local.tee $54 local.get $56 @@ -14348,8 +14578,8 @@ br_if $__inlined_func$std/array/isArraysEqual drop i32.const 1 - local.get $0 local.get $56 + local.get $58 i32.eq br_if $__inlined_func$std/array/isArraysEqual drop @@ -14358,7 +14588,7 @@ local.get $54 i32.lt_s if - local.get $0 + local.get $58 local.get $1 call $~lib/array/Array#__get local.tee $41 @@ -14377,7 +14607,7 @@ i32.eqz if i32.const 0 - local.get $0 + local.get $58 local.get $1 call $~lib/array/Array#__get local.get $56 @@ -14399,8 +14629,8 @@ i32.eqz if i32.const 0 - i32.const 1312 - i32.const 892 + i32.const 1296 + i32.const 898 i32.const 2 call $~lib/builtins/abort unreachable @@ -14411,10 +14641,10 @@ i32.const 5376 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.set $58 + local.set $57 i32.const 0 global.set $~argumentsLength - local.get $58 + local.get $57 call $~lib/array/Array#sort|trampoline call $~lib/rt/pure/__release block $__inlined_func$std/array/isArraysEqual (result i32) @@ -14428,7 +14658,7 @@ i32.const 0 local.set $1 i32.const 0 - local.get $58 + local.get $57 i32.load offset=12 local.tee $52 local.get $54 @@ -14438,7 +14668,7 @@ drop i32.const 1 local.get $54 - local.get $58 + local.get $57 i32.eq br_if $__inlined_func$std/array/isArraysEqual drop @@ -14447,7 +14677,7 @@ local.get $52 i32.lt_s if - local.get $58 + local.get $57 local.get $1 call $~lib/array/Array#__get local.tee $36 @@ -14466,7 +14696,7 @@ i32.eqz if i32.const 0 - local.get $58 + local.get $57 local.get $1 call $~lib/array/Array#__get local.get $54 @@ -14488,8 +14718,8 @@ i32.eqz if i32.const 0 - i32.const 1312 - i32.const 896 + i32.const 1296 + i32.const 902 i32.const 2 call $~lib/builtins/abort unreachable @@ -14520,8 +14750,8 @@ i32.eqz if i32.const 0 - i32.const 1312 - i32.const 900 + i32.const 1296 + i32.const 906 i32.const 2 call $~lib/builtins/abort unreachable @@ -14552,8 +14782,8 @@ i32.eqz if i32.const 0 - i32.const 1312 - i32.const 904 + i32.const 1296 + i32.const 910 i32.const 2 call $~lib/builtins/abort unreachable @@ -14627,8 +14857,8 @@ i32.eqz if i32.const 0 - i32.const 1312 - i32.const 924 + i32.const 1296 + i32.const 930 i32.const 2 call $~lib/builtins/abort unreachable @@ -14649,8 +14879,8 @@ i32.eqz if i32.const 0 - i32.const 1312 - i32.const 927 + i32.const 1296 + i32.const 933 i32.const 2 call $~lib/builtins/abort unreachable @@ -14665,8 +14895,8 @@ i32.eqz if i32.const 0 - i32.const 1312 - i32.const 930 + i32.const 1296 + i32.const 936 i32.const 2 call $~lib/builtins/abort unreachable @@ -14681,8 +14911,8 @@ i32.eqz if i32.const 0 - i32.const 1312 - i32.const 933 + i32.const 1296 + i32.const 939 i32.const 2 call $~lib/builtins/abort unreachable @@ -14697,8 +14927,8 @@ i32.eqz if i32.const 0 - i32.const 1312 - i32.const 936 + i32.const 1296 + i32.const 942 i32.const 2 call $~lib/builtins/abort unreachable @@ -14713,8 +14943,8 @@ i32.eqz if i32.const 0 - i32.const 1312 - i32.const 939 + i32.const 1296 + i32.const 945 i32.const 2 call $~lib/builtins/abort unreachable @@ -14729,8 +14959,8 @@ i32.eqz if i32.const 0 - i32.const 1312 - i32.const 942 + i32.const 1296 + i32.const 948 i32.const 2 call $~lib/builtins/abort unreachable @@ -14738,11 +14968,11 @@ local.get $47 i32.const 48 call $std/array/assertSorted - local.get $0 + local.get $58 call $~lib/rt/pure/__release local.get $56 call $~lib/rt/pure/__release - local.get $58 + local.get $57 call $~lib/rt/pure/__release local.get $54 call $~lib/rt/pure/__release @@ -14783,112 +15013,31 @@ local.set $1 i32.const 257 call $std/array/createRandomOrderedArray - local.set $0 + local.set $58 local.get $1 i32.const 49 call $std/array/assertSorted local.get $1 i32.const 50 call $std/array/assertSorted - local.get $0 + local.get $58 i32.const 51 call $std/array/assertSorted - local.get $0 + local.get $58 i32.const 52 call $std/array/assertSorted local.get $1 call $~lib/rt/pure/__release - local.get $0 + local.get $58 call $~lib/rt/pure/__release - i32.const 0 - local.set $0 - 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 + call $std/array/createReverseOrderedNestedArray local.tee $1 - i32.const 0 - i32.store offset=12 - local.get $1 - i32.const 2 - i32.store offset=12 - loop $for-loop|02 - local.get $0 - i32.const 2 - i32.lt_s - if - i32.const 1 - call $~lib/array/Array#constructor - local.tee $58 - i32.const 0 - i32.const 1 - local.get $0 - i32.sub - call $~lib/array/Array#__set - local.get $1 - local.get $0 - local.get $58 - call $~lib/array/Array<~lib/array/Array>#__set - local.get $58 - call $~lib/rt/pure/__release - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|02 - end - end - local.get $1 i32.const 53 call $std/array/assertSorted<~lib/array/Array> local.get $1 call $~lib/rt/pure/__release - i32.const 0 - local.set $0 - 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 + call $std/array/createReverseOrderedElementsArray local.tee $1 - i32.const 0 - i32.store offset=12 - local.get $1 - i32.const 512 - i32.store offset=12 - loop $for-loop|03 - local.get $0 - i32.const 512 - i32.lt_s - if - i32.const 4 - i32.const 13 - call $~lib/rt/tlsf/__alloc - call $~lib/rt/pure/__retain - local.tee $58 - i32.const 511 - local.get $0 - i32.sub - i32.store - local.get $1 - local.get $0 - local.get $58 - call $~lib/array/Array<~lib/array/Array>#__set - local.get $58 - call $~lib/rt/pure/__release - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|03 - end - end - local.get $1 i32.const 54 call $std/array/assertSorted<~lib/array/Array> local.get $1 @@ -14899,46 +15048,46 @@ i32.const 6080 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.set $0 + local.set $58 i32.const 7 i32.const 2 i32.const 15 i32.const 6128 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.set $58 + local.set $57 i32.const 1 global.set $~argumentsLength - local.get $0 + local.get $58 call $std/array/assertSorted<~lib/string/String | null>|trampoline block $__inlined_func$std/array/isArraysEqual<~lib/string/String | null> (result i32) i32.const 0 local.set $1 i32.const 0 - local.get $0 + local.get $58 i32.load offset=12 local.tee $53 - local.get $58 + local.get $57 i32.load offset=12 i32.ne br_if $__inlined_func$std/array/isArraysEqual<~lib/string/String | null> drop i32.const 1 - local.get $0 + local.get $57 local.get $58 i32.eq br_if $__inlined_func$std/array/isArraysEqual<~lib/string/String | null> drop - loop $for-loop|04 + loop $for-loop|02 local.get $1 local.get $53 i32.lt_s if - local.get $0 + local.get $58 local.get $1 call $~lib/array/Array#__get local.tee $56 - local.get $58 + local.get $57 local.get $1 call $~lib/array/Array#__get local.tee $54 @@ -14960,7 +15109,7 @@ i32.const 1 i32.add local.set $1 - br $for-loop|04 + br $for-loop|02 end end i32.const 1 @@ -14968,8 +15117,8 @@ i32.eqz if i32.const 0 - i32.const 1312 - i32.const 979 + i32.const 1296 + i32.const 985 i32.const 2 call $~lib/builtins/abort unreachable @@ -14981,10 +15130,10 @@ local.get $1 i32.const 56 call $std/array/assertSorted<~lib/array/Array> - local.get $0 - call $~lib/rt/pure/__release local.get $58 call $~lib/rt/pure/__release + local.get $57 + call $~lib/rt/pure/__release local.get $1 call $~lib/rt/pure/__release i32.const 2 @@ -14998,15 +15147,15 @@ local.get $1 i32.load offset=12 call $~lib/util/string/joinBooleanArray - local.tee $0 - local.get $0 + local.tee $58 + local.get $58 i32.const 6336 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1312 - i32.const 988 + i32.const 1296 + i32.const 994 i32.const 2 call $~lib/builtins/abort unreachable @@ -15026,8 +15175,8 @@ i32.eqz if i32.const 0 - i32.const 1312 - i32.const 989 + i32.const 1296 + i32.const 995 i32.const 2 call $~lib/builtins/abort unreachable @@ -15047,8 +15196,8 @@ i32.eqz if i32.const 0 - i32.const 1312 - i32.const 990 + i32.const 1296 + i32.const 996 i32.const 2 call $~lib/builtins/abort unreachable @@ -15068,8 +15217,8 @@ i32.eqz if i32.const 0 - i32.const 1312 - i32.const 991 + i32.const 1296 + i32.const 997 i32.const 2 call $~lib/builtins/abort unreachable @@ -15080,21 +15229,21 @@ i32.const 6672 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.tee $0 + local.tee $58 i32.load offset=4 - local.get $0 + local.get $58 i32.load offset=12 call $~lib/util/string/joinFloatArray - local.tee $58 + local.tee $57 local.set $46 - local.get $58 + local.get $57 i32.const 7888 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1312 - i32.const 992 + i32.const 1296 + i32.const 998 i32.const 2 call $~lib/builtins/abort unreachable @@ -15114,8 +15263,8 @@ i32.eqz if i32.const 0 - i32.const 1312 - i32.const 993 + i32.const 1296 + i32.const 999 i32.const 2 call $~lib/builtins/abort unreachable @@ -15126,7 +15275,7 @@ i32.const 0 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.tee $58 + local.tee $57 i32.load offset=4 local.tee $56 i32.const 0 @@ -15139,7 +15288,7 @@ i32.const 0 call $std/array/Ref#constructor i32.store offset=8 - local.get $58 + local.get $57 call $~lib/array/Array#join local.tee $43 i32.const 8096 @@ -15147,8 +15296,8 @@ i32.eqz if i32.const 0 - i32.const 1312 - i32.const 995 + i32.const 1296 + i32.const 1001 i32.const 2 call $~lib/builtins/abort unreachable @@ -15177,8 +15326,8 @@ i32.eqz if i32.const 0 - i32.const 1312 - i32.const 998 + i32.const 1296 + i32.const 1004 i32.const 2 call $~lib/builtins/abort unreachable @@ -15198,7 +15347,7 @@ call $~lib/rt/pure/__release local.get $48 call $~lib/rt/pure/__release - local.get $0 + local.get $58 call $~lib/rt/pure/__release local.get $46 call $~lib/rt/pure/__release @@ -15206,7 +15355,7 @@ call $~lib/rt/pure/__release local.get $44 call $~lib/rt/pure/__release - local.get $58 + local.get $57 call $~lib/rt/pure/__release local.get $43 call $~lib/rt/pure/__release @@ -15252,8 +15401,8 @@ i32.eqz if i32.const 0 - i32.const 1312 - i32.const 1008 + i32.const 1296 + i32.const 1014 i32.const 2 call $~lib/builtins/abort unreachable @@ -15269,8 +15418,8 @@ i32.eqz if i32.const 0 - i32.const 1312 - i32.const 1009 + i32.const 1296 + i32.const 1015 i32.const 2 call $~lib/builtins/abort unreachable @@ -15286,8 +15435,8 @@ i32.eqz if i32.const 0 - i32.const 1312 - i32.const 1010 + i32.const 1296 + i32.const 1016 i32.const 2 call $~lib/builtins/abort unreachable @@ -15303,8 +15452,8 @@ i32.eqz if i32.const 0 - i32.const 1312 - i32.const 1011 + i32.const 1296 + i32.const 1017 i32.const 2 call $~lib/builtins/abort unreachable @@ -15328,8 +15477,8 @@ i32.eqz if i32.const 0 - i32.const 1312 - i32.const 1013 + i32.const 1296 + i32.const 1019 i32.const 2 call $~lib/builtins/abort unreachable @@ -15353,8 +15502,8 @@ i32.eqz if i32.const 0 - i32.const 1312 - i32.const 1014 + i32.const 1296 + i32.const 1020 i32.const 2 call $~lib/builtins/abort unreachable @@ -15378,8 +15527,8 @@ i32.eqz if i32.const 0 - i32.const 1312 - i32.const 1015 + i32.const 1296 + i32.const 1021 i32.const 2 call $~lib/builtins/abort unreachable @@ -15403,8 +15552,8 @@ i32.eqz if i32.const 0 - i32.const 1312 - i32.const 1016 + i32.const 1296 + i32.const 1022 i32.const 2 call $~lib/builtins/abort unreachable @@ -15426,8 +15575,8 @@ i32.eqz if i32.const 0 - i32.const 1312 - i32.const 1020 + i32.const 1296 + i32.const 1026 i32.const 2 call $~lib/builtins/abort unreachable @@ -15449,8 +15598,8 @@ i32.eqz if i32.const 0 - i32.const 1312 - i32.const 1021 + i32.const 1296 + i32.const 1027 i32.const 2 call $~lib/builtins/abort unreachable @@ -15463,7 +15612,7 @@ call $~lib/rt/pure/__retain local.tee $1 i32.load offset=4 - local.tee $0 + local.tee $58 i32.const 2 i32.const 2 i32.const 3 @@ -15471,7 +15620,7 @@ call $~lib/rt/__allocArray call $~lib/rt/pure/__retain i32.store - local.get $0 + local.get $58 i32.const 2 i32.const 2 i32.const 3 @@ -15484,16 +15633,16 @@ local.get $1 i32.load offset=12 call $~lib/util/string/joinReferenceArray<~lib/array/Array> - local.tee $0 + local.tee $58 local.set $29 - local.get $0 + local.get $58 i32.const 9136 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1312 - i32.const 1024 + i32.const 1296 + i32.const 1030 i32.const 2 call $~lib/builtins/abort unreachable @@ -15504,9 +15653,9 @@ i32.const 0 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.tee $0 - i32.load offset=4 local.tee $58 + i32.load offset=4 + local.tee $57 i32.const 2 i32.const 0 i32.const 6 @@ -15514,7 +15663,7 @@ call $~lib/rt/__allocArray call $~lib/rt/pure/__retain i32.store - local.get $58 + local.get $57 i32.const 2 i32.const 0 i32.const 6 @@ -15522,21 +15671,21 @@ call $~lib/rt/__allocArray call $~lib/rt/pure/__retain i32.store offset=4 - local.get $0 + local.get $58 i32.load offset=4 - local.get $0 + local.get $58 i32.load offset=12 call $~lib/util/string/joinReferenceArray<~lib/array/Array> - local.tee $58 + local.tee $57 local.set $28 - local.get $58 + local.get $57 i32.const 9136 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1312 - i32.const 1027 + i32.const 1296 + i32.const 1033 i32.const 2 call $~lib/builtins/abort unreachable @@ -15547,7 +15696,7 @@ i32.const 0 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.tee $58 + local.tee $57 i32.load offset=4 i32.const 1 i32.const 2 @@ -15566,9 +15715,9 @@ i32.store local.get $32 i32.store - local.get $58 + local.get $57 i32.load offset=4 - local.get $58 + local.get $57 i32.load offset=12 call $~lib/util/string/joinReferenceArray<~lib/array/Array<~lib/array/Array>> local.tee $33 @@ -15579,8 +15728,8 @@ i32.eqz if i32.const 0 - i32.const 1312 - i32.const 1030 + i32.const 1296 + i32.const 1036 i32.const 2 call $~lib/builtins/abort unreachable @@ -15632,7 +15781,7 @@ call $~lib/rt/pure/__release global.get $std/array/arr call $~lib/rt/pure/__release - local.get $57 + local.get $0 call $~lib/rt/pure/__release local.get $42 call $~lib/rt/pure/__release @@ -15642,12 +15791,12 @@ call $~lib/rt/pure/__release local.get $1 call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release local.get $58 call $~lib/rt/pure/__release + local.get $57 + call $~lib/rt/pure/__release ) - (func $~start (; 166 ;) + (func $~start (; 167 ;) global.get $~started if return @@ -15657,12 +15806,15 @@ end call $start:std/array ) - (func $~lib/rt/pure/decrement (; 167 ;) (param $0 i32) + (func $~lib/rt/pure/decrement (; 168 ;) (param $0 i32) (local $1 i32) (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) local.get $0 i32.load offset=4 - local.tee $2 + local.tee $3 i32.const 268435455 i32.and local.set $1 @@ -15674,7 +15826,7 @@ i32.and if i32.const 0 - i32.const 1264 + i32.const 1248 i32.const 122 i32.const 13 call $~lib/builtins/abort @@ -15685,78 +15837,73 @@ i32.eq if block $__inlined_func$~lib/rt/__visit_members - block $block$4$break - block $switch$1$default - block $switch$1$case$29 - block $switch$1$case$28 - block $switch$1$case$27 - 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 - local.get $0 - i32.const 16 - i32.add - local.tee $1 - i32.const 8 - i32.sub - i32.load - br_table $__inlined_func$~lib/rt/__visit_members $__inlined_func$~lib/rt/__visit_members $block$4$break $block$4$break $__inlined_func$~lib/rt/__visit_members $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 $__inlined_func$~lib/rt/__visit_members $switch$1$case$16 $switch$1$case$17 $switch$1$case$18 $block$4$break $__inlined_func$~lib/rt/__visit_members $__inlined_func$~lib/rt/__visit_members $__inlined_func$~lib/rt/__visit_members $block$4$break $block$4$break $block$4$break $block$4$break $switch$1$case$27 $switch$1$case$28 $switch$1$case$29 $switch$1$default - end - local.get $1 - call $~lib/array/Array#__visit_impl - br $block$4$break - end - local.get $1 - call $~lib/array/Array#__visit_impl - br $block$4$break - end - local.get $1 - call $~lib/array/Array#__visit_impl - br $block$4$break - end - local.get $1 - call $~lib/array/Array#__visit_impl - br $block$4$break - end - local.get $1 - call $~lib/array/Array#__visit_impl - br $block$4$break - end - local.get $1 - call $~lib/array/Array#__visit_impl - br $block$4$break - end - local.get $1 - call $~lib/array/Array#__visit_impl - br $block$4$break + block $folding-inner1 + block $folding-inner0 + block $switch$1$default + block $switch$1$case$4 + local.get $0 + i32.const 16 + i32.add + local.tee $1 + i32.const 8 + i32.sub + i32.load + br_table $__inlined_func$~lib/rt/__visit_members $__inlined_func$~lib/rt/__visit_members $switch$1$case$4 $folding-inner0 $__inlined_func$~lib/rt/__visit_members $switch$1$case$4 $folding-inner0 $folding-inner0 $folding-inner1 $folding-inner0 $folding-inner0 $folding-inner1 $folding-inner1 $__inlined_func$~lib/rt/__visit_members $folding-inner1 $folding-inner1 $folding-inner1 $folding-inner0 $__inlined_func$~lib/rt/__visit_members $__inlined_func$~lib/rt/__visit_members $__inlined_func$~lib/rt/__visit_members $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner1 $folding-inner1 $folding-inner1 $switch$1$default end local.get $1 - call $~lib/array/Array#__visit_impl - br $block$4$break + i32.load + local.tee $1 + if + local.get $1 + call $~lib/rt/pure/__visit + end + br $__inlined_func$~lib/rt/__visit_members end - local.get $1 - call $~lib/array/Array#__visit_impl - br $block$4$break + unreachable end - unreachable - end - local.get $1 - i32.load - local.tee $1 - if local.get $1 + i32.load call $~lib/rt/pure/__visit + br $__inlined_func$~lib/rt/__visit_members + end + local.get $1 + i32.load offset=4 + local.tee $2 + local.get $1 + i32.load offset=12 + i32.const 2 + i32.shl + i32.add + local.set $4 + loop $while-continue|0 + local.get $2 + local.get $4 + i32.lt_u + if + local.get $2 + i32.load + local.tee $5 + if + local.get $5 + call $~lib/rt/pure/__visit + end + local.get $2 + i32.const 4 + i32.add + local.set $2 + br $while-continue|0 + end end + local.get $1 + i32.load + call $~lib/rt/pure/__visit end - local.get $2 + local.get $3 i32.const -2147483648 i32.and if i32.const 0 - i32.const 1264 + i32.const 1248 i32.const 126 i32.const 17 call $~lib/builtins/abort @@ -15771,7 +15918,7 @@ i32.le_u if i32.const 0 - i32.const 1264 + i32.const 1248 i32.const 136 i32.const 15 call $~lib/builtins/abort @@ -15781,14 +15928,14 @@ local.get $1 i32.const 1 i32.sub - local.get $2 + local.get $3 i32.const -268435456 i32.and i32.or i32.store offset=4 end ) - (func $~lib/rt/pure/__visit (; 168 ;) (param $0 i32) + (func $~lib/rt/pure/__visit (; 169 ;) (param $0 i32) local.get $0 i32.const 9236 i32.lt_u @@ -15800,36 +15947,4 @@ i32.sub call $~lib/rt/pure/decrement ) - (func $~lib/array/Array#__visit_impl (; 169 ;) (param $0 i32) - (local $1 i32) - (local $2 i32) - local.get $0 - i32.load offset=4 - local.tee $1 - local.get $0 - i32.load offset=12 - i32.const 2 - i32.shl - i32.add - local.set $0 - loop $while-continue|0 - local.get $1 - local.get $0 - i32.lt_u - if - local.get $1 - i32.load - local.tee $2 - if - local.get $2 - call $~lib/rt/pure/__visit - end - local.get $1 - i32.const 4 - i32.add - local.set $1 - br $while-continue|0 - end - end - ) ) 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 c91d1ddd93..50c367fc77 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") @@ -262,7 +262,7 @@ i32.eqz if i32.const 0 - i32.const 144 + i32.const 128 i32.const 277 i32.const 13 call $~lib/builtins/abort @@ -287,7 +287,7 @@ i32.eqz if i32.const 0 - i32.const 144 + i32.const 128 i32.const 279 i32.const 13 call $~lib/builtins/abort @@ -339,7 +339,7 @@ i32.eqz if i32.const 0 - i32.const 144 + i32.const 128 i32.const 292 i32.const 13 call $~lib/builtins/abort @@ -469,7 +469,7 @@ i32.eqz if i32.const 0 - i32.const 144 + i32.const 128 i32.const 205 i32.const 13 call $~lib/builtins/abort @@ -484,7 +484,7 @@ i32.eqz if i32.const 0 - i32.const 144 + i32.const 128 i32.const 207 i32.const 13 call $~lib/builtins/abort @@ -577,7 +577,7 @@ i32.eqz if i32.const 0 - i32.const 144 + i32.const 128 i32.const 228 i32.const 15 call $~lib/builtins/abort @@ -640,7 +640,7 @@ i32.eqz if i32.const 0 - i32.const 144 + i32.const 128 i32.const 243 i32.const 13 call $~lib/builtins/abort @@ -656,7 +656,7 @@ i32.eqz if i32.const 0 - i32.const 144 + i32.const 128 i32.const 244 i32.const 13 call $~lib/builtins/abort @@ -713,7 +713,7 @@ i32.eqz if i32.const 0 - i32.const 144 + i32.const 128 i32.const 260 i32.const 13 call $~lib/builtins/abort @@ -832,7 +832,7 @@ i32.eqz if i32.const 0 - i32.const 144 + i32.const 128 i32.const 386 i32.const 4 call $~lib/builtins/abort @@ -855,7 +855,7 @@ i32.eqz if i32.const 0 - i32.const 144 + i32.const 128 i32.const 396 i32.const 15 call $~lib/builtins/abort @@ -886,7 +886,7 @@ i32.eqz if i32.const 0 - i32.const 144 + i32.const 128 i32.const 408 i32.const 4 call $~lib/builtins/abort @@ -1107,8 +1107,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 @@ -1202,7 +1202,7 @@ i32.eqz if i32.const 0 - i32.const 144 + i32.const 128 i32.const 338 i32.const 13 call $~lib/builtins/abort @@ -1265,7 +1265,7 @@ i32.eqz if i32.const 0 - i32.const 144 + i32.const 128 i32.const 351 i32.const 17 call $~lib/builtins/abort @@ -1410,7 +1410,7 @@ i32.eqz if i32.const 0 - i32.const 144 + i32.const 128 i32.const 365 i32.const 13 call $~lib/builtins/abort @@ -1499,7 +1499,7 @@ i32.eqz if i32.const 0 - i32.const 144 + i32.const 128 i32.const 490 i32.const 13 call $~lib/builtins/abort @@ -1540,7 +1540,7 @@ i32.eqz if i32.const 0 - i32.const 144 + i32.const 128 i32.const 502 i32.const 19 call $~lib/builtins/abort @@ -1559,7 +1559,7 @@ i32.eqz if i32.const 0 - i32.const 144 + i32.const 128 i32.const 507 i32.const 17 call $~lib/builtins/abort @@ -1576,7 +1576,7 @@ i32.eqz if i32.const 0 - i32.const 144 + i32.const 128 i32.const 510 i32.const 13 call $~lib/builtins/abort @@ -1836,7 +1836,7 @@ i32.eqz if i32.const 0 - i32.const 256 + i32.const 240 i32.const 109 i32.const 2 call $~lib/builtins/abort @@ -1857,7 +1857,7 @@ i32.eqz if i32.const 0 - i32.const 256 + i32.const 240 i32.const 112 i32.const 13 call $~lib/builtins/abort @@ -1887,40 +1887,40 @@ call $~lib/rt/pure/decrement end ) - (func $~lib/arraybuffer/ArrayBufferView#constructor (; 22 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/array/Array#constructor (; 22 ;) (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 @@ -1935,6 +1935,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 @@ -1955,33 +1958,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 (; 23 ;) (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> (; 24 ;) (param $0 i32) (result i32) + (func $~lib/array/Array.isArray<~lib/array/Array | null> (; 23 ;) (param $0 i32) (result i32) (local $1 i32) local.get $0 call $~lib/rt/pure/__retain @@ -1999,7 +1983,7 @@ call $~lib/rt/pure/__release local.get $1 ) - (func $std/array/Ref#constructor (; 25 ;) (param $0 i32) (param $1 i32) (result i32) + (func $std/array/Ref#constructor (; 24 ;) (param $0 i32) (param $1 i32) (result i32) local.get $0 i32.eqz if @@ -2014,7 +1998,7 @@ i32.store local.get $0 ) - (func $~lib/array/Array.isArray (; 26 ;) (param $0 i32) (result i32) + (func $~lib/array/Array.isArray (; 25 ;) (param $0 i32) (result i32) (local $1 i32) local.get $0 call $~lib/rt/pure/__retain @@ -2032,6 +2016,78 @@ call $~lib/rt/pure/__release local.get $1 ) + (func $~lib/arraybuffer/ArrayBufferView#constructor (; 26 ;) (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 (; 27 ;) (param $0 i32) (param $1 i32) (result i32) local.get $0 if (result i32) @@ -3493,9 +3549,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 @@ -3696,9 +3752,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 @@ -3863,7 +3919,7 @@ i32.eqz if i32.const 0 - i32.const 144 + i32.const 128 i32.const 570 i32.const 2 call $~lib/builtins/abort @@ -4036,7 +4092,7 @@ i32.gt_u if i32.const 32 - i32.const 512 + i32.const 80 i32.const 14 i32.const 47 call $~lib/builtins/abort @@ -4120,9 +4176,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 @@ -4144,8 +4200,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 @@ -4255,8 +4311,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 @@ -4555,8 +4611,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 @@ -5261,9 +5317,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 @@ -5278,8 +5334,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 @@ -5415,9 +5471,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 @@ -5448,9 +5504,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 @@ -6059,8 +6115,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 @@ -6169,9 +6225,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 @@ -8100,9 +8156,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 @@ -9370,8 +9426,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 @@ -9415,23 +9471,79 @@ i32.sub ) (func $~lib/array/Array<~lib/array/Array>#constructor (; 180 ;) (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 @@ -9481,9 +9593,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 @@ -9764,9 +9876,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 @@ -9781,8 +9893,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 @@ -9870,8 +9982,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 @@ -9882,23 +9994,79 @@ call $~lib/rt/pure/__release ) (func $~lib/array/Array>#constructor (; 192 ;) (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 @@ -9963,9 +10131,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 @@ -10239,9 +10407,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 @@ -10256,8 +10424,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 @@ -10345,8 +10513,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 @@ -10546,9 +10714,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 @@ -10640,8 +10808,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 @@ -11098,23 +11266,79 @@ local.get $3 ) (func $~lib/array/Array<~lib/string/String>#constructor (; 219 ;) (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 @@ -11350,9 +11574,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 @@ -11604,9 +11828,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 @@ -11621,8 +11845,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 @@ -11710,8 +11934,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 @@ -17781,8 +18005,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 @@ -17796,8 +18020,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 @@ -17811,8 +18035,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 @@ -17823,20 +18047,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 @@ -17846,8 +18070,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 @@ -17859,7 +18083,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 @@ -17873,7 +18097,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 @@ -17882,8 +18106,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 @@ -17907,8 +18131,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 @@ -17932,8 +18156,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 @@ -17957,8 +18181,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 @@ -17982,8 +18206,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 @@ -18026,8 +18250,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 @@ -18051,8 +18275,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 @@ -18076,8 +18300,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 @@ -18101,8 +18325,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 @@ -18126,8 +18350,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 @@ -18151,8 +18375,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 @@ -18164,8 +18388,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 @@ -18182,8 +18406,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 @@ -18195,8 +18419,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 @@ -18208,8 +18432,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 @@ -18223,8 +18447,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 @@ -18236,8 +18460,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 @@ -18249,8 +18473,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 @@ -18266,8 +18490,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 @@ -18279,8 +18503,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 @@ -18293,8 +18517,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 @@ -18310,8 +18534,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 @@ -18323,8 +18547,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 @@ -18337,8 +18561,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 @@ -18351,8 +18575,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 @@ -18368,8 +18592,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 @@ -18381,8 +18605,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 @@ -18395,8 +18619,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 @@ -18409,8 +18633,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 @@ -18423,8 +18647,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 @@ -18461,8 +18685,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 @@ -18484,8 +18708,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 @@ -18497,8 +18721,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 @@ -18510,8 +18734,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 @@ -18533,8 +18757,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 @@ -18547,8 +18771,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 @@ -18561,8 +18785,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 @@ -18575,8 +18799,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 @@ -18604,8 +18828,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 @@ -18617,8 +18841,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 @@ -18630,8 +18854,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 @@ -18644,8 +18868,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 @@ -18658,8 +18882,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 @@ -18672,8 +18896,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 @@ -18686,8 +18910,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 @@ -18700,8 +18924,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 @@ -18716,8 +18940,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 @@ -18736,8 +18960,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 @@ -18757,8 +18981,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 @@ -18770,8 +18994,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 @@ -18809,8 +19033,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 @@ -18844,8 +19068,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 @@ -18879,8 +19103,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 @@ -18914,8 +19138,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 @@ -18949,8 +19173,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 @@ -18984,8 +19208,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 @@ -19019,8 +19243,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 @@ -19054,8 +19278,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 @@ -19089,8 +19313,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 @@ -19124,8 +19348,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 @@ -19159,8 +19383,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 @@ -19194,8 +19418,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 @@ -19261,8 +19485,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 @@ -19274,8 +19498,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 @@ -19288,8 +19512,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 @@ -19302,8 +19526,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 @@ -19316,8 +19540,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 @@ -19330,8 +19554,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 @@ -19347,8 +19571,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 @@ -19360,8 +19584,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 @@ -19374,8 +19598,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 @@ -19388,8 +19612,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 @@ -19402,8 +19626,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 @@ -19416,8 +19640,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 @@ -19430,8 +19654,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 @@ -19445,8 +19669,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 @@ -19458,8 +19682,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 @@ -19471,8 +19695,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 @@ -19485,8 +19709,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 @@ -19499,8 +19723,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 @@ -19513,8 +19737,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 @@ -19527,8 +19751,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 @@ -19542,8 +19766,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 @@ -19555,8 +19779,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 @@ -19568,8 +19792,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 @@ -19582,8 +19806,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 @@ -19596,8 +19820,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 @@ -19610,8 +19834,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 @@ -19626,8 +19850,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 @@ -19639,8 +19863,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 @@ -19653,8 +19877,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 @@ -19667,8 +19891,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 @@ -19681,8 +19905,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 @@ -19706,8 +19930,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 @@ -19723,8 +19947,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 @@ -19740,8 +19964,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 @@ -19757,8 +19981,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 @@ -19774,8 +19998,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 @@ -19791,8 +20015,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 @@ -19808,8 +20032,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 @@ -19825,8 +20049,8 @@ i32.eqz if i32.const 0 + i32.const 288 i32.const 304 - i32.const 298 i32.const 2 call $~lib/builtins/abort unreachable @@ -19842,8 +20066,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 @@ -19859,8 +20083,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 @@ -19880,8 +20104,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 @@ -19901,8 +20125,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 @@ -19922,8 +20146,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 @@ -19939,8 +20163,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 @@ -19956,8 +20180,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 @@ -19973,8 +20197,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 @@ -19990,8 +20214,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 @@ -20007,8 +20231,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 @@ -20024,8 +20248,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 @@ -20041,8 +20265,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 @@ -20058,8 +20282,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 @@ -20075,8 +20299,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 @@ -20094,8 +20318,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 @@ -20113,8 +20337,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 @@ -20131,8 +20355,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 @@ -20144,8 +20368,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 @@ -20158,8 +20382,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 @@ -20172,8 +20396,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 @@ -20206,8 +20430,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 @@ -20225,8 +20449,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 @@ -20259,8 +20483,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 @@ -20278,8 +20502,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 @@ -20312,8 +20536,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 @@ -20331,8 +20555,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 @@ -20365,8 +20589,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 @@ -20384,8 +20608,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 @@ -20418,8 +20642,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 @@ -20437,8 +20661,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 @@ -20471,8 +20695,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 @@ -20490,8 +20714,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 @@ -20524,8 +20748,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 @@ -20543,8 +20767,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 @@ -20577,8 +20801,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 @@ -20596,8 +20820,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 @@ -20630,8 +20854,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 @@ -20649,8 +20873,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 @@ -20683,8 +20907,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 @@ -20702,8 +20926,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 @@ -20736,8 +20960,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 @@ -20755,8 +20979,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 @@ -20789,8 +21013,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 @@ -20808,8 +21032,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 @@ -20842,8 +21066,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 @@ -20861,8 +21085,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 @@ -20895,8 +21119,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 @@ -20914,8 +21138,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 @@ -20939,8 +21163,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 @@ -20952,8 +21176,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 @@ -21015,8 +21239,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 @@ -21031,8 +21255,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 @@ -21047,8 +21271,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 @@ -21060,8 +21284,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 @@ -21076,8 +21300,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 @@ -21092,8 +21316,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 @@ -21108,8 +21332,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 @@ -21152,8 +21376,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 @@ -21167,8 +21391,8 @@ local.get $50 else i32.const 0 - i32.const 304 - i32.const 434 + i32.const 288 + i32.const 440 i32.const 9 call $~lib/builtins/abort unreachable @@ -21179,8 +21403,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 @@ -21192,8 +21416,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 @@ -21207,8 +21431,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 @@ -21222,8 +21446,8 @@ local.get $55 else i32.const 0 - i32.const 304 - i32.const 438 + i32.const 288 + i32.const 444 i32.const 9 call $~lib/builtins/abort unreachable @@ -21234,8 +21458,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 @@ -21368,8 +21592,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 @@ -21384,8 +21608,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 @@ -21400,8 +21624,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 @@ -21416,8 +21640,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 @@ -21429,8 +21653,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 @@ -21445,8 +21669,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 @@ -21473,8 +21697,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 @@ -21486,8 +21710,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 @@ -21510,8 +21734,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 @@ -21526,8 +21750,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 @@ -21542,8 +21766,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 @@ -21555,8 +21779,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 @@ -21571,8 +21795,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 @@ -21599,8 +21823,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 @@ -21612,8 +21836,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 @@ -21636,8 +21860,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 @@ -21652,8 +21876,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 @@ -21668,8 +21892,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 @@ -21681,8 +21905,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 @@ -21697,8 +21921,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 @@ -21725,8 +21949,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 @@ -21738,8 +21962,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 @@ -21763,8 +21987,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 @@ -21780,8 +22004,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 @@ -21793,8 +22017,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 @@ -21810,8 +22034,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 @@ -21839,8 +22063,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 @@ -21852,8 +22076,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 @@ -21876,8 +22100,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 @@ -21928,8 +22152,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 @@ -21945,8 +22169,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 @@ -21963,8 +22187,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 @@ -21976,8 +22200,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 @@ -21994,8 +22218,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 @@ -22024,8 +22248,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 @@ -22037,8 +22261,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 @@ -22064,8 +22288,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 @@ -22082,8 +22306,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 @@ -22095,8 +22319,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 @@ -22113,8 +22337,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 @@ -22143,8 +22367,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 @@ -22156,8 +22380,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 @@ -22183,8 +22407,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 @@ -22200,8 +22424,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 @@ -22219,8 +22443,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 @@ -22238,8 +22462,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 @@ -22255,8 +22479,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 @@ -22268,8 +22492,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 @@ -22285,8 +22509,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 @@ -22314,8 +22538,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 @@ -22327,8 +22551,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 @@ -22352,8 +22576,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 @@ -22369,8 +22593,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 @@ -22388,8 +22612,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 @@ -22407,8 +22631,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 @@ -22424,8 +22648,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 @@ -22437,8 +22661,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 @@ -22454,8 +22678,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 @@ -22483,8 +22707,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 @@ -22496,8 +22720,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 @@ -22547,8 +22771,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 @@ -22579,8 +22803,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 @@ -22611,8 +22835,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 @@ -22643,8 +22867,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 @@ -22716,8 +22940,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 @@ -22737,8 +22961,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 @@ -22752,8 +22976,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 @@ -22767,8 +22991,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 @@ -22782,8 +23006,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 @@ -22797,8 +23021,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 @@ -22812,8 +23036,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 @@ -22924,8 +23148,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 @@ -22959,8 +23183,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 @@ -22980,8 +23204,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 @@ -23001,8 +23225,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 @@ -23022,8 +23246,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 @@ -23043,8 +23267,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 @@ -23064,8 +23288,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 @@ -23105,8 +23329,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 @@ -23142,8 +23366,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 @@ -23216,8 +23440,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 @@ -23230,8 +23454,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 @@ -23244,8 +23468,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 @@ -23258,8 +23482,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 @@ -23278,8 +23502,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 @@ -23298,8 +23522,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 @@ -23318,8 +23542,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 @@ -23338,8 +23562,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 @@ -23359,8 +23583,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 @@ -23379,8 +23603,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 @@ -23421,8 +23645,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 @@ -23463,8 +23687,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 @@ -23510,8 +23734,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 @@ -23612,7 +23836,7 @@ i32.eqz if i32.const 0 - i32.const 256 + i32.const 240 i32.const 122 i32.const 13 call $~lib/builtins/abort @@ -23634,7 +23858,7 @@ i32.eqz if i32.const 0 - i32.const 256 + i32.const 240 i32.const 126 i32.const 17 call $~lib/builtins/abort @@ -23650,7 +23874,7 @@ i32.eqz if i32.const 0 - i32.const 256 + i32.const 240 i32.const 136 i32.const 15 call $~lib/builtins/abort @@ -23682,7 +23906,7 @@ i32.eqz if i32.const 0 - i32.const 256 + i32.const 240 i32.const 69 i32.const 15 call $~lib/builtins/abort @@ -23694,13 +23918,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) @@ -23740,12 +23973,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) @@ -23785,6 +24028,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) @@ -23824,6 +24071,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) @@ -23863,6 +24114,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) @@ -23902,6 +24157,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) @@ -23941,9 +24200,16 @@ 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/staticarray/StaticArray#__visit_impl (; 326 ;) (param $0 i32) (param $1 i32) nop @@ -23955,16 +24221,28 @@ nop ) (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#__visit_impl (; 331 ;) (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 (; 332 ;) (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 (; 333 ;) (param $0 i32) (param $1 i32) (local $2 i32) @@ -24004,6 +24282,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 (; 334 ;) (param $0 i32) (param $1 i32) (local $2 i32) @@ -24043,6 +24325,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 (; 335 ;) (param $0 i32) (param $1 i32) (local $2 i32) @@ -24082,165 +24368,166 @@ br $while-continue|0 end end + local.get $0 + i32.load + local.get $1 + call $~lib/rt/pure/__visit ) (func $~lib/rt/__visit_members (; 336 ;) (param $0 i32) (param $1 i32) (local $2 i32) - block $block$4$break - block $switch$1$default - 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$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$case$28 $switch$1$case$29 $switch$1$default - end - return + block $switch$1$default + 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$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$case$28 $switch$1$case$29 $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/staticarray/StaticArray#__visit_impl + call $~lib/array/Array#__visit_impl return end local.get $0 local.get $1 - call $~lib/staticarray/StaticArray#__visit_impl + call $~lib/staticarray/StaticArray#__visit_impl return end local.get $0 local.get $1 - call $~lib/staticarray/StaticArray#__visit_impl + call $~lib/staticarray/StaticArray#__visit_impl return end local.get $0 local.get $1 - call $~lib/array/Array#__visit_impl - br $block$4$break + call $~lib/staticarray/StaticArray#__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 6f31885285..bacb0da4cc 100644 --- a/tests/compiler/std/arraybuffer.optimized.wat +++ b/tests/compiler/std/arraybuffer.optimized.wat @@ -1954,33 +1954,33 @@ i32.eq if block $__inlined_func$~lib/rt/__visit_members - block $block$4$break - block $switch$1$default - local.get $0 - i32.const 16 - i32.add - local.tee $1 - i32.const 8 - i32.sub + block $switch$1$default + block $switch$1$case$5 + block $switch$1$case$4 + local.get $0 + i32.const 16 + i32.add + local.tee $1 + i32.const 8 + i32.sub + i32.load + br_table $__inlined_func$~lib/rt/__visit_members $__inlined_func$~lib/rt/__visit_members $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 + local.get $1 i32.load - br_table $__inlined_func$~lib/rt/__visit_members $__inlined_func$~lib/rt/__visit_members $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 + local.tee $1 + if + local.get $1 + call $~lib/rt/pure/__visit + end + br $__inlined_func$~lib/rt/__visit_members end - unreachable - end - local.get $1 - i32.load - local.tee $1 - if local.get $1 - i32.const 1440 - i32.ge_u - if - local.get $1 - i32.const 16 - i32.sub - call $~lib/rt/pure/decrement - end + i32.load + call $~lib/rt/pure/__visit + br $__inlined_func$~lib/rt/__visit_members end + unreachable end local.get $2 i32.const -2147483648 @@ -2027,4 +2027,16 @@ i32.store offset=4 end ) + (func $~lib/rt/pure/__visit (; 24 ;) (param $0 i32) + local.get $0 + i32.const 1440 + i32.lt_u + if + return + end + local.get $0 + i32.const 16 + i32.sub + call $~lib/rt/pure/decrement + ) ) diff --git a/tests/compiler/std/arraybuffer.untouched.wat b/tests/compiler/std/arraybuffer.untouched.wat index 3269239d78..2b0c2fa1e7 100644 --- a/tests/compiler/std/arraybuffer.untouched.wat +++ b/tests/compiler/std/arraybuffer.untouched.wat @@ -3928,40 +3928,40 @@ call $~lib/rt/pure/decrement ) (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$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 51d20e4c46..bb5b59f854 100644 --- a/tests/compiler/std/map.optimized.wat +++ b/tests/compiler/std/map.optimized.wat @@ -1,10 +1,10 @@ (module (type $i32_i32_=>_none (func (param i32 i32))) + (type $i32_=>_i32 (func (param i32) (result i32))) (type $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) (type $none_=>_none (func)) (type $i32_=>_none (func (param i32))) - (type $i32_=>_i32 (func (param i32) (result i32))) (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) (type $none_=>_i32 (func (result i32))) (type $i32_i64_=>_i32 (func (param i32 i64) (result i32))) @@ -38,8 +38,8 @@ (data (i32.const 1296) "\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 1344) "$\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 1408) "\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 1456) "$\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 1520) "\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 1456) "\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 1504) "$\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)) @@ -1066,7 +1066,7 @@ (local $1 i32) (local $2 i32) local.get $0 - i32.const 1564 + i32.const 1556 i32.gt_u if local.get $0 @@ -1295,7 +1295,7 @@ ) (func $~lib/rt/pure/__release (; 18 ;) (param $0 i32) local.get $0 - i32.const 1564 + i32.const 1556 i32.gt_u if local.get $0 @@ -1652,74 +1652,7 @@ local.get $0 i32.load offset=4 ) - (func $~lib/arraybuffer/ArrayBufferView#constructor (; 26 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - (local $4 i32) - local.get $1 - i32.const 1073741808 - local.get $2 - i32.shr_u - i32.gt_u - if - i32.const 1200 - i32.const 1248 - i32.const 23 - i32.const 56 - call $~lib/builtins/abort - unreachable - end - local.get $1 - local.get $2 - i32.shl - local.tee $3 - 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 - 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 $2 - local.tee $1 - local.get $0 - i32.load - local.tee $4 - i32.ne - if - local.get $1 - call $~lib/rt/pure/__retain - local.set $1 - local.get $4 - call $~lib/rt/pure/__release - end - local.get $0 - local.get $1 - i32.store - local.get $0 - local.get $2 - i32.store offset=4 - local.get $0 - local.get $3 - i32.store offset=8 - local.get $0 - ) - (func $~lib/memory/memory.copy (; 27 ;) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/memory/memory.copy (; 26 ;) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) block $~lib/util/memory/memmove|inlined.0 @@ -1892,7 +1825,7 @@ end end ) - (func $~lib/rt/tlsf/freeBlock (; 28 ;) (param $0 i32) (param $1 i32) + (func $~lib/rt/tlsf/freeBlock (; 27 ;) (param $0 i32) (param $1 i32) local.get $1 local.get $1 i32.load @@ -1905,7 +1838,7 @@ local.get $1 call $~lib/rt/rtrace/onfree ) - (func $~lib/rt/tlsf/reallocateBlock (; 29 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/rt/tlsf/reallocateBlock (; 28 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -1996,7 +1929,7 @@ local.get $2 call $~lib/memory/memory.copy local.get $1 - i32.const 1564 + i32.const 1556 i32.ge_u if local.get $1 @@ -2008,7 +1941,7 @@ end local.get $3 ) - (func $~lib/array/ensureSize (; 30 ;) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/array/ensureSize (; 29 ;) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -2028,7 +1961,7 @@ i32.gt_u if i32.const 1200 - i32.const 1536 + i32.const 1472 i32.const 14 i32.const 47 call $~lib/builtins/abort @@ -2109,7 +2042,7 @@ i32.store offset=8 end ) - (func $~lib/array/Array#__set (; 31 ;) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/array/Array#__set (; 30 ;) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) local.get $1 local.get $0 @@ -2120,9 +2053,9 @@ i32.const 0 i32.lt_s if + i32.const 1520 i32.const 1472 - i32.const 1536 - i32.const 109 + i32.const 120 i32.const 21 call $~lib/builtins/abort unreachable @@ -2145,7 +2078,7 @@ local.get $2 i32.store8 ) - (func $~lib/array/Array#set:length (; 32 ;) (param $0 i32) (param $1 i32) + (func $~lib/array/Array#set:length (; 31 ;) (param $0 i32) (param $1 i32) local.get $0 i32.load offset=12 drop @@ -2157,22 +2090,187 @@ local.get $1 i32.store offset=12 ) - (func $~lib/array/Array#constructor (; 33 ;) (param $0 i32) (result i32) + (func $~lib/map/Map#keys (; 32 ;) (param $0 i32) (result i32) (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + local.get $0 + i32.load offset=8 + local.set $5 + local.get $0 + i32.load offset=16 + local.tee $4 + local.tee $8 + i32.const 1073741808 + i32.gt_u + if + i32.const 1200 + i32.const 1472 + i32.const 57 + i32.const 59 + call $~lib/builtins/abort + unreachable + end + local.get $8 + i32.const 0 + call $~lib/rt/tlsf/__alloc + local.tee $2 + local.get $8 + call $~lib/memory/memory.fill i32.const 16 - i32.const 5 + 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 $2 + local.set $1 + local.get $2 + local.get $0 + i32.load + local.tee $3 + i32.ne + if + local.get $1 + call $~lib/rt/pure/__retain + local.set $1 + local.get $3 + call $~lib/rt/pure/__release + end + local.get $0 + local.get $1 + i32.store + local.get $0 + local.get $2 + i32.store offset=4 + local.get $0 + local.get $8 + i32.store offset=8 + local.get $0 + local.get $8 + i32.store offset=12 + loop $for-loop|0 + local.get $6 + local.get $4 + i32.lt_s + if + local.get $5 + local.get $6 + i32.const 12 + i32.mul + i32.add + local.tee $2 + i32.load offset=8 + i32.const 1 + i32.and + i32.eqz + if + local.get $0 + local.get $7 + local.get $2 + i32.load8_s + call $~lib/array/Array#__set + local.get $7 + i32.const 1 + i32.add + local.set $7 + end + local.get $6 + i32.const 1 + i32.add + local.set $6 + br $for-loop|0 + end + end + local.get $0 + local.get $7 + call $~lib/array/Array#set:length + local.get $0 + ) + (func $~lib/array/Array#constructor (; 33 ;) (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 1200 + i32.const 1472 + i32.const 57 + i32.const 59 + call $~lib/builtins/abort + unreachable + end local.get $0 i32.const 2 - call $~lib/arraybuffer/ArrayBufferView#constructor + i32.shl + local.tee $4 + i32.const 0 + call $~lib/rt/tlsf/__alloc local.tee $1 + 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.tee $3 + i32.const 0 + i32.store + local.get $3 + i32.const 0 + i32.store offset=4 + local.get $3 + i32.const 0 + i32.store offset=8 + local.get $3 i32.const 0 i32.store offset=12 local.get $1 + local.set $2 + local.get $1 + local.get $3 + i32.load + local.tee $5 + i32.ne + if + local.get $2 + call $~lib/rt/pure/__retain + local.set $2 + local.get $5 + call $~lib/rt/pure/__release + end + local.get $3 + local.get $2 + i32.store + local.get $3 + local.get $1 + i32.store offset=4 + local.get $3 + local.get $4 + i32.store offset=8 + local.get $3 local.get $0 i32.store offset=12 - local.get $1 + local.get $3 ) (func $~lib/array/Array#__set (; 34 ;) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) @@ -2185,9 +2283,9 @@ i32.const 0 i32.lt_s if + i32.const 1520 i32.const 1472 - i32.const 1536 - i32.const 109 + i32.const 120 i32.const 21 call $~lib/builtins/abort unreachable @@ -2343,9 +2441,9 @@ i32.load offset=12 i32.ge_u if + i32.const 1520 i32.const 1472 - i32.const 1536 - i32.const 93 + i32.const 104 i32.const 41 call $~lib/builtins/abort unreachable @@ -3204,77 +3302,25 @@ unreachable end local.get $0 - i32.load offset=8 - local.set $7 + call $~lib/map/Map#keys + local.set $4 local.get $0 - i32.load offset=16 + call $~lib/map/Map#values local.set $6 - i32.const 16 - i32.const 4 + i32.const 24 + i32.const 6 call $~lib/rt/tlsf/__alloc call $~lib/rt/pure/__retain - local.get $6 + local.tee $3 i32.const 0 - call $~lib/arraybuffer/ArrayBufferView#constructor - local.tee $1 - i32.const 0 - i32.store offset=12 - local.get $1 - local.get $6 - i32.store offset=12 - loop $for-loop|0 - local.get $4 - local.get $6 - i32.lt_s - if - local.get $7 - local.get $4 - i32.const 12 - i32.mul - i32.add - local.tee $5 - i32.load offset=8 - i32.const 1 - i32.and - i32.eqz - if - local.get $1 - local.get $3 - local.get $5 - i32.load8_s - call $~lib/array/Array#__set - local.get $3 - i32.const 1 - i32.add - local.set $3 - end - local.get $4 - i32.const 1 - i32.add - local.set $4 - br $for-loop|0 - end - end - local.get $1 - local.get $3 - call $~lib/array/Array#set:length - local.get $0 - call $~lib/map/Map#values - local.set $6 - i32.const 24 - i32.const 6 - call $~lib/rt/tlsf/__alloc - call $~lib/rt/pure/__retain - local.tee $3 - i32.const 0 - i32.store - local.get $3 - i32.const 0 - i32.store offset=4 - local.get $3 - i32.const 0 - i32.store offset=8 - local.get $3 + i32.store + local.get $3 + i32.const 0 + i32.store offset=4 + local.get $3 + i32.const 0 + i32.store offset=8 + local.get $3 i32.const 0 i32.store offset=12 local.get $3 @@ -3286,37 +3332,37 @@ local.get $3 call $~lib/map/Map#clear call $~lib/map/Map#constructor - local.set $4 + local.set $5 loop $for-loop|4 local.get $2 - local.get $1 + local.get $4 i32.load offset=12 i32.lt_s if local.get $2 - local.get $1 + local.get $4 i32.load offset=12 i32.ge_u if + i32.const 1520 i32.const 1472 - i32.const 1536 - i32.const 93 + i32.const 104 i32.const 41 call $~lib/builtins/abort unreachable end local.get $2 - local.get $1 + local.get $4 i32.load offset=4 i32.add i32.load8_s - local.set $5 + local.set $1 local.get $6 local.get $2 call $~lib/array/Array#__get local.set $7 local.get $0 - local.get $5 + local.get $1 call $~lib/map/Map#has i32.eqz if @@ -3342,16 +3388,16 @@ unreachable end local.get $3 - local.get $5 - local.get $5 + local.get $1 + local.get $1 call $~lib/map/Map#set call $~lib/rt/pure/__release - local.get $4 + local.get $5 local.get $7 i32.const 20 i32.sub - local.tee $5 - local.get $5 + local.tee $1 + local.get $1 call $~lib/map/Map#set call $~lib/rt/pure/__release local.get $2 @@ -3373,7 +3419,7 @@ call $~lib/builtins/abort unreachable end - local.get $4 + local.get $5 i32.load offset=20 i32.const 100 i32.ne @@ -3550,13 +3596,13 @@ call $~lib/builtins/abort unreachable end - local.get $1 + local.get $4 call $~lib/rt/pure/__release local.get $6 call $~lib/rt/pure/__release local.get $3 call $~lib/rt/pure/__release - local.get $4 + local.get $5 call $~lib/rt/pure/__release local.get $0 call $~lib/rt/pure/__release @@ -3820,7 +3866,119 @@ local.get $0 i32.load offset=4 ) - (func $~lib/map/Map#rehash (; 52 ;) (param $0 i32) (param $1 i32) + (func $~lib/map/Map#keys (; 52 ;) (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + local.get $0 + i32.load offset=8 + local.set $5 + local.get $0 + i32.load offset=16 + local.tee $4 + local.tee $8 + i32.const 1073741808 + i32.gt_u + if + i32.const 1200 + i32.const 1472 + i32.const 57 + i32.const 59 + call $~lib/builtins/abort + unreachable + end + local.get $8 + i32.const 0 + call $~lib/rt/tlsf/__alloc + local.tee $2 + local.get $8 + call $~lib/memory/memory.fill + i32.const 16 + i32.const 9 + 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 $2 + local.set $1 + local.get $2 + local.get $0 + i32.load + local.tee $3 + i32.ne + if + local.get $1 + call $~lib/rt/pure/__retain + local.set $1 + local.get $3 + call $~lib/rt/pure/__release + end + local.get $0 + local.get $1 + i32.store + local.get $0 + local.get $2 + i32.store offset=4 + local.get $0 + local.get $8 + i32.store offset=8 + local.get $0 + local.get $8 + i32.store offset=12 + loop $for-loop|0 + local.get $6 + local.get $4 + i32.lt_s + if + local.get $5 + local.get $6 + i32.const 12 + i32.mul + i32.add + local.tee $2 + i32.load offset=8 + i32.const 1 + i32.and + i32.eqz + if + local.get $0 + local.get $7 + local.get $2 + i32.load8_u + call $~lib/array/Array#__set + local.get $7 + i32.const 1 + i32.add + local.set $7 + end + local.get $6 + i32.const 1 + i32.add + local.set $6 + br $for-loop|0 + end + end + local.get $0 + local.get $7 + call $~lib/array/Array#set:length + local.get $0 + ) + (func $~lib/map/Map#rehash (; 53 ;) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -3955,7 +4113,7 @@ local.get $4 call $~lib/rt/pure/__release ) - (func $~lib/map/Map#set (; 53 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/map/Map#set (; 54 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -4086,7 +4244,7 @@ local.get $0 call $~lib/rt/pure/__retain ) - (func $~lib/map/Map#delete (; 54 ;) (param $0 i32) (param $1 i32) + (func $~lib/map/Map#delete (; 55 ;) (param $0 i32) (param $1 i32) (local $2 i32) local.get $0 local.get $1 @@ -4147,7 +4305,7 @@ call $~lib/map/Map#rehash end ) - (func $std/map/testNumeric (; 55 ;) + (func $std/map/testNumeric (; 56 ;) (local $0 i32) (local $1 i32) (local $2 i32) @@ -4351,60 +4509,8 @@ unreachable end local.get $0 - i32.load offset=8 - local.set $7 - local.get $0 - i32.load offset=16 - local.set $6 - i32.const 16 - i32.const 9 - call $~lib/rt/tlsf/__alloc - call $~lib/rt/pure/__retain - local.get $6 - i32.const 0 - call $~lib/arraybuffer/ArrayBufferView#constructor - local.tee $1 - i32.const 0 - i32.store offset=12 - local.get $1 - local.get $6 - i32.store offset=12 - loop $for-loop|0 - local.get $4 - local.get $6 - i32.lt_s - if - local.get $7 - local.get $4 - i32.const 12 - i32.mul - i32.add - local.tee $5 - i32.load offset=8 - i32.const 1 - i32.and - i32.eqz - if - local.get $1 - local.get $3 - local.get $5 - i32.load8_u - call $~lib/array/Array#__set - local.get $3 - i32.const 1 - i32.add - local.set $3 - end - local.get $4 - i32.const 1 - i32.add - local.set $4 - br $for-loop|0 - end - end - local.get $1 - local.get $3 - call $~lib/array/Array#set:length + call $~lib/map/Map#keys + local.set $4 local.get $0 call $~lib/map/Map#values local.set $6 @@ -4433,37 +4539,37 @@ local.get $3 call $~lib/map/Map#clear call $~lib/map/Map#constructor - local.set $4 + local.set $5 loop $for-loop|4 local.get $2 - local.get $1 + local.get $4 i32.load offset=12 i32.lt_s if local.get $2 - local.get $1 + local.get $4 i32.load offset=12 i32.ge_u if + i32.const 1520 i32.const 1472 - i32.const 1536 - i32.const 93 + i32.const 104 i32.const 41 call $~lib/builtins/abort unreachable end local.get $2 - local.get $1 + local.get $4 i32.load offset=4 i32.add i32.load8_u - local.set $5 + local.set $1 local.get $6 local.get $2 call $~lib/array/Array#__get local.set $7 local.get $0 - local.get $5 + local.get $1 call $~lib/map/Map#has i32.eqz if @@ -4489,16 +4595,16 @@ unreachable end local.get $3 - local.get $5 - local.get $5 + local.get $1 + local.get $1 call $~lib/map/Map#set call $~lib/rt/pure/__release - local.get $4 + local.get $5 local.get $7 i32.const 20 i32.sub - local.tee $5 - local.get $5 + local.tee $1 + local.get $1 call $~lib/map/Map#set call $~lib/rt/pure/__release local.get $2 @@ -4520,7 +4626,7 @@ call $~lib/builtins/abort unreachable end - local.get $4 + local.get $5 i32.load offset=20 i32.const 100 i32.ne @@ -4689,18 +4795,18 @@ call $~lib/builtins/abort unreachable end - local.get $1 + local.get $4 call $~lib/rt/pure/__release local.get $6 call $~lib/rt/pure/__release local.get $3 call $~lib/rt/pure/__release - local.get $4 + local.get $5 call $~lib/rt/pure/__release local.get $0 call $~lib/rt/pure/__release ) - (func $~lib/util/hash/hash16 (; 56 ;) (param $0 i32) (result i32) + (func $~lib/util/hash/hash16 (; 57 ;) (param $0 i32) (result i32) local.get $0 i32.const 255 i32.and @@ -4715,7 +4821,7 @@ i32.const 16777619 i32.mul ) - (func $~lib/map/Map#find (; 57 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/map/Map#find (; 58 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $0 i32.load local.get $2 @@ -4758,7 +4864,7 @@ end i32.const 0 ) - (func $~lib/map/Map#has (; 58 ;) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/map/Map#has (; 59 ;) (param $0 i32) (param $1 i32) (result i32) local.get $0 local.get $1 local.get $1 @@ -4771,7 +4877,7 @@ i32.const 0 i32.ne ) - (func $~lib/map/Map#rehash (; 59 ;) (param $0 i32) (param $1 i32) + (func $~lib/map/Map#rehash (; 60 ;) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -4906,7 +5012,7 @@ local.get $4 call $~lib/rt/pure/__release ) - (func $~lib/map/Map#set (; 60 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/map/Map#set (; 61 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -5000,7 +5106,7 @@ local.get $0 call $~lib/rt/pure/__retain ) - (func $~lib/map/Map#get (; 61 ;) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/map/Map#get (; 62 ;) (param $0 i32) (param $1 i32) (result i32) local.get $0 local.get $1 local.get $1 @@ -5023,7 +5129,7 @@ local.get $0 i32.load offset=4 ) - (func $~lib/array/Array#__set (; 62 ;) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/array/Array#__set (; 63 ;) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) local.get $1 local.get $0 @@ -5034,9 +5140,9 @@ i32.const 0 i32.lt_s if + i32.const 1520 i32.const 1472 - i32.const 1536 - i32.const 109 + i32.const 120 i32.const 21 call $~lib/builtins/abort unreachable @@ -5061,7 +5167,7 @@ local.get $2 i32.store16 ) - (func $~lib/array/Array#set:length (; 63 ;) (param $0 i32) (param $1 i32) + (func $~lib/array/Array#set:length (; 64 ;) (param $0 i32) (param $1 i32) local.get $0 i32.load offset=12 drop @@ -5073,7 +5179,124 @@ local.get $1 i32.store offset=12 ) - (func $~lib/map/Map#rehash (; 64 ;) (param $0 i32) (param $1 i32) + (func $~lib/map/Map#keys (; 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 $7 i32) + (local $8 i32) + (local $9 i32) + local.get $0 + i32.load offset=8 + local.set $4 + local.get $0 + i32.load offset=16 + local.tee $7 + local.set $6 + local.get $7 + i32.const 536870904 + i32.gt_u + if + i32.const 1200 + i32.const 1472 + i32.const 57 + i32.const 59 + call $~lib/builtins/abort + unreachable + end + local.get $6 + i32.const 1 + i32.shl + local.tee $5 + i32.const 0 + call $~lib/rt/tlsf/__alloc + local.tee $2 + local.get $5 + 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 $2 + local.set $1 + local.get $2 + local.get $0 + i32.load + local.tee $3 + i32.ne + if + local.get $1 + call $~lib/rt/pure/__retain + local.set $1 + local.get $3 + call $~lib/rt/pure/__release + end + local.get $0 + local.get $1 + i32.store + local.get $0 + local.get $2 + i32.store offset=4 + local.get $0 + local.get $5 + i32.store offset=8 + local.get $0 + local.get $6 + i32.store offset=12 + loop $for-loop|0 + local.get $8 + local.get $7 + i32.lt_s + if + local.get $4 + local.get $8 + i32.const 12 + i32.mul + i32.add + local.tee $2 + i32.load offset=8 + i32.const 1 + i32.and + i32.eqz + if + local.get $0 + local.get $9 + local.get $2 + i32.load16_s + call $~lib/array/Array#__set + local.get $9 + i32.const 1 + i32.add + local.set $9 + end + local.get $8 + i32.const 1 + i32.add + local.set $8 + br $for-loop|0 + end + end + local.get $0 + local.get $9 + call $~lib/array/Array#set:length + local.get $0 + ) + (func $~lib/map/Map#rehash (; 66 ;) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -5208,7 +5431,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 (; 67 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -5341,7 +5564,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 (; 68 ;) (param $0 i32) (param $1 i32) (local $2 i32) local.get $0 local.get $1 @@ -5404,7 +5627,7 @@ call $~lib/map/Map#rehash end ) - (func $std/map/testNumeric (; 67 ;) + (func $std/map/testNumeric (; 69 ;) (local $0 i32) (local $1 i32) (local $2 i32) @@ -5622,60 +5845,8 @@ unreachable end local.get $0 - i32.load offset=8 - local.set $7 - local.get $0 - i32.load offset=16 - local.set $6 - i32.const 16 - i32.const 12 - call $~lib/rt/tlsf/__alloc - call $~lib/rt/pure/__retain - local.get $6 - i32.const 1 - call $~lib/arraybuffer/ArrayBufferView#constructor - local.tee $1 - i32.const 0 - i32.store offset=12 - local.get $1 - local.get $6 - i32.store offset=12 - loop $for-loop|0 - local.get $4 - local.get $6 - i32.lt_s - if - local.get $7 - local.get $4 - i32.const 12 - i32.mul - i32.add - local.tee $5 - i32.load offset=8 - i32.const 1 - i32.and - i32.eqz - if - local.get $1 - local.get $3 - local.get $5 - i32.load16_s - call $~lib/array/Array#__set - local.get $3 - i32.const 1 - i32.add - local.set $3 - end - local.get $4 - i32.const 1 - i32.add - local.set $4 - br $for-loop|0 - end - end - local.get $1 - local.get $3 - call $~lib/array/Array#set:length + call $~lib/map/Map#keys + local.set $4 local.get $0 call $~lib/map/Map#values local.set $6 @@ -5704,39 +5875,39 @@ local.get $3 call $~lib/map/Map#clear call $~lib/map/Map#constructor - local.set $4 + local.set $5 loop $for-loop|4 local.get $2 - local.get $1 + local.get $4 i32.load offset=12 i32.lt_s if local.get $2 - local.get $1 + local.get $4 i32.load offset=12 i32.ge_u if + i32.const 1520 i32.const 1472 - i32.const 1536 - i32.const 93 + i32.const 104 i32.const 41 call $~lib/builtins/abort unreachable end - local.get $1 + local.get $4 i32.load offset=4 local.get $2 i32.const 1 i32.shl i32.add i32.load16_s - local.set $5 + local.set $1 local.get $6 local.get $2 call $~lib/array/Array#__get local.set $7 local.get $0 - local.get $5 + local.get $1 call $~lib/map/Map#has i32.eqz if @@ -5762,16 +5933,16 @@ unreachable end local.get $3 - local.get $5 - local.get $5 + local.get $1 + local.get $1 call $~lib/map/Map#set call $~lib/rt/pure/__release - local.get $4 + local.get $5 local.get $7 i32.const 20 i32.sub - local.tee $5 - local.get $5 + local.tee $1 + local.get $1 call $~lib/map/Map#set call $~lib/rt/pure/__release local.get $2 @@ -5793,7 +5964,7 @@ call $~lib/builtins/abort unreachable end - local.get $4 + local.get $5 i32.load offset=20 i32.const 100 i32.ne @@ -5970,18 +6141,18 @@ call $~lib/builtins/abort unreachable end - local.get $1 + local.get $4 call $~lib/rt/pure/__release local.get $6 call $~lib/rt/pure/__release local.get $3 call $~lib/rt/pure/__release - local.get $4 + local.get $5 call $~lib/rt/pure/__release local.get $0 call $~lib/rt/pure/__release ) - (func $~lib/map/Map#has (; 68 ;) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/map/Map#has (; 70 ;) (param $0 i32) (param $1 i32) (result i32) local.get $0 local.get $1 local.get $1 @@ -5992,7 +6163,7 @@ i32.const 0 i32.ne ) - (func $~lib/map/Map#rehash (; 69 ;) (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) @@ -6127,7 +6298,7 @@ local.get $4 call $~lib/rt/pure/__release ) - (func $~lib/map/Map#set (; 70 ;) (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) @@ -6219,7 +6390,7 @@ local.get $0 call $~lib/rt/pure/__retain ) - (func $~lib/map/Map#get (; 71 ;) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/map/Map#get (; 73 ;) (param $0 i32) (param $1 i32) (result i32) local.get $0 local.get $1 local.get $1 @@ -6240,7 +6411,8 @@ local.get $0 i32.load offset=4 ) - (func $~lib/map/Map#rehash (; 72 ;) (param $0 i32) (param $1 i32) + (func $~lib/map/Map#keys (; 74 ;) (param $0 i32) (result i32) + (local $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -6248,57 +6420,173 @@ (local $6 i32) (local $7 i32) (local $8 i32) - local.get $1 - i32.const 1 - i32.add - local.tee $4 - i32.const 2 - i32.shl - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $6 - local.get $4 - i32.const 3 - i32.shl - i32.const 3 - i32.div_s - local.tee $7 - i32.const 3 - i32.shl - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $4 + (local $9 i32) local.get $0 i32.load offset=8 - local.tee $3 + local.set $4 local.get $0 i32.load offset=16 - i32.const 3 + local.tee $7 + local.set $6 + local.get $7 + i32.const 536870904 + i32.gt_u + if + i32.const 1200 + i32.const 1472 + i32.const 57 + i32.const 59 + call $~lib/builtins/abort + unreachable + end + local.get $6 + i32.const 1 i32.shl - i32.add - local.set $8 - local.get $4 - local.set $5 - loop $while-continue|0 - local.get $3 - local.get $8 - i32.ne - if - local.get $3 - local.tee $2 - i32.load offset=4 - i32.const 1 - i32.and - i32.eqz - if - local.get $5 - local.get $2 - i32.load16_u - i32.store16 - local.get $5 - local.get $2 - i32.load16_u offset=2 - i32.store16 offset=2 - local.get $5 - local.get $6 + local.tee $5 + i32.const 0 + call $~lib/rt/tlsf/__alloc + local.tee $2 + local.get $5 + call $~lib/memory/memory.fill + i32.const 16 + i32.const 15 + 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 $2 + local.set $1 + local.get $2 + local.get $0 + i32.load + local.tee $3 + i32.ne + if + local.get $1 + call $~lib/rt/pure/__retain + local.set $1 + local.get $3 + call $~lib/rt/pure/__release + end + local.get $0 + local.get $1 + i32.store + local.get $0 + local.get $2 + i32.store offset=4 + local.get $0 + local.get $5 + i32.store offset=8 + local.get $0 + local.get $6 + i32.store offset=12 + loop $for-loop|0 + local.get $8 + local.get $7 + i32.lt_s + if + local.get $4 + local.get $8 + i32.const 12 + i32.mul + i32.add + local.tee $2 + i32.load offset=8 + i32.const 1 + i32.and + i32.eqz + if + local.get $0 + local.get $9 + local.get $2 + i32.load16_u + call $~lib/array/Array#__set + local.get $9 + i32.const 1 + i32.add + local.set $9 + end + local.get $8 + i32.const 1 + i32.add + local.set $8 + br $for-loop|0 + end + end + local.get $0 + local.get $9 + call $~lib/array/Array#set:length + local.get $0 + ) + (func $~lib/map/Map#rehash (; 75 ;) (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + local.get $1 + i32.const 1 + i32.add + local.tee $4 + i32.const 2 + i32.shl + call $~lib/arraybuffer/ArrayBuffer#constructor + local.set $6 + local.get $4 + i32.const 3 + i32.shl + i32.const 3 + i32.div_s + local.tee $7 + i32.const 3 + i32.shl + call $~lib/arraybuffer/ArrayBuffer#constructor + local.set $4 + local.get $0 + i32.load offset=8 + local.tee $3 + local.get $0 + i32.load offset=16 + i32.const 3 + i32.shl + i32.add + local.set $8 + local.get $4 + local.set $5 + loop $while-continue|0 + local.get $3 + local.get $8 + i32.ne + if + local.get $3 + local.tee $2 + i32.load offset=4 + i32.const 1 + i32.and + i32.eqz + if + local.get $5 + local.get $2 + i32.load16_u + i32.store16 + local.get $5 + local.get $2 + i32.load16_u offset=2 + i32.store16 offset=2 + local.get $5 + local.get $6 local.get $2 i32.load16_u call $~lib/util/hash/hash16 @@ -6375,7 +6663,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 (; 76 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -6506,7 +6794,7 @@ local.get $0 call $~lib/rt/pure/__retain ) - (func $~lib/map/Map#delete (; 74 ;) (param $0 i32) (param $1 i32) + (func $~lib/map/Map#delete (; 77 ;) (param $0 i32) (param $1 i32) (local $2 i32) local.get $0 local.get $1 @@ -6567,7 +6855,7 @@ call $~lib/map/Map#rehash end ) - (func $std/map/testNumeric (; 75 ;) + (func $std/map/testNumeric (; 78 ;) (local $0 i32) (local $1 i32) (local $2 i32) @@ -6771,60 +7059,8 @@ unreachable end local.get $0 - i32.load offset=8 - local.set $7 - local.get $0 - i32.load offset=16 - local.set $6 - i32.const 16 - i32.const 15 - call $~lib/rt/tlsf/__alloc - call $~lib/rt/pure/__retain - local.get $6 - i32.const 1 - call $~lib/arraybuffer/ArrayBufferView#constructor - local.tee $1 - i32.const 0 - i32.store offset=12 - local.get $1 - local.get $6 - i32.store offset=12 - loop $for-loop|0 - local.get $4 - local.get $6 - i32.lt_s - if - local.get $7 - local.get $4 - i32.const 12 - i32.mul - i32.add - local.tee $5 - i32.load offset=8 - i32.const 1 - i32.and - i32.eqz - if - local.get $1 - local.get $3 - local.get $5 - i32.load16_u - call $~lib/array/Array#__set - local.get $3 - i32.const 1 - i32.add - local.set $3 - end - local.get $4 - i32.const 1 - i32.add - local.set $4 - br $for-loop|0 - end - end - local.get $1 - local.get $3 - call $~lib/array/Array#set:length + call $~lib/map/Map#keys + local.set $4 local.get $0 call $~lib/map/Map#values local.set $6 @@ -6853,39 +7089,39 @@ local.get $3 call $~lib/map/Map#clear call $~lib/map/Map#constructor - local.set $4 + local.set $5 loop $for-loop|4 local.get $2 - local.get $1 + local.get $4 i32.load offset=12 i32.lt_s if local.get $2 - local.get $1 + local.get $4 i32.load offset=12 i32.ge_u if + i32.const 1520 i32.const 1472 - i32.const 1536 - i32.const 93 + i32.const 104 i32.const 41 call $~lib/builtins/abort unreachable end - local.get $1 + local.get $4 i32.load offset=4 local.get $2 i32.const 1 i32.shl i32.add i32.load16_u - local.set $5 + local.set $1 local.get $6 local.get $2 call $~lib/array/Array#__get local.set $7 local.get $0 - local.get $5 + local.get $1 call $~lib/map/Map#has i32.eqz if @@ -6911,16 +7147,16 @@ unreachable end local.get $3 - local.get $5 - local.get $5 + local.get $1 + local.get $1 call $~lib/map/Map#set call $~lib/rt/pure/__release - local.get $4 + local.get $5 local.get $7 i32.const 20 i32.sub - local.tee $5 - local.get $5 + local.tee $1 + local.get $1 call $~lib/map/Map#set call $~lib/rt/pure/__release local.get $2 @@ -6942,7 +7178,7 @@ call $~lib/builtins/abort unreachable end - local.get $4 + local.get $5 i32.load offset=20 i32.const 100 i32.ne @@ -7111,18 +7347,18 @@ call $~lib/builtins/abort unreachable end - local.get $1 + local.get $4 call $~lib/rt/pure/__release local.get $6 call $~lib/rt/pure/__release local.get $3 call $~lib/rt/pure/__release - local.get $4 + local.get $5 call $~lib/rt/pure/__release local.get $0 call $~lib/rt/pure/__release ) - (func $~lib/map/Map#has (; 76 ;) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/map/Map#has (; 79 ;) (param $0 i32) (param $1 i32) (result i32) local.get $0 local.get $1 local.get $1 @@ -7131,7 +7367,7 @@ i32.const 0 i32.ne ) - (func $~lib/map/Map#get (; 77 ;) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/map/Map#get (; 80 ;) (param $0 i32) (param $1 i32) (result i32) local.get $0 local.get $1 local.get $1 @@ -7150,7 +7386,7 @@ local.get $0 i32.load offset=4 ) - (func $~lib/map/Map#delete (; 78 ;) (param $0 i32) (param $1 i32) + (func $~lib/map/Map#delete (; 81 ;) (param $0 i32) (param $1 i32) (local $2 i32) local.get $0 local.get $1 @@ -7209,7 +7445,7 @@ call $~lib/map/Map#rehash end ) - (func $std/map/testNumeric (; 79 ;) + (func $std/map/testNumeric (; 82 ;) (local $0 i32) (local $1 i32) (local $2 i32) @@ -7671,8 +7907,7 @@ local.get $0 call $~lib/rt/pure/__release ) - (func $std/map/testNumeric (; 80 ;) - (local $0 i32) + (func $~lib/map/Map#keys (; 83 ;) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -7680,8 +7915,37 @@ (local $5 i32) (local $6 i32) (local $7 i32) - i32.const 24 - i32.const 17 + (local $8 i32) + (local $9 i32) + local.get $0 + i32.load offset=8 + local.set $4 + local.get $0 + i32.load offset=16 + local.tee $7 + local.set $6 + local.get $7 + i32.const 268435452 + i32.gt_u + if + i32.const 1200 + i32.const 1472 + i32.const 57 + i32.const 59 + call $~lib/builtins/abort + unreachable + end + local.get $6 + i32.const 2 + i32.shl + local.tee $5 + i32.const 0 + call $~lib/rt/tlsf/__alloc + local.tee $2 + local.get $5 + call $~lib/memory/memory.fill + i32.const 16 + i32.const 18 call $~lib/rt/tlsf/__alloc call $~lib/rt/pure/__retain local.tee $0 @@ -7696,9 +7960,98 @@ local.get $0 i32.const 0 i32.store offset=12 + local.get $2 + local.set $1 + local.get $2 local.get $0 - i32.const 0 - i32.store offset=16 + i32.load + local.tee $3 + i32.ne + if + local.get $1 + call $~lib/rt/pure/__retain + local.set $1 + local.get $3 + call $~lib/rt/pure/__release + end + local.get $0 + local.get $1 + i32.store + local.get $0 + local.get $2 + i32.store offset=4 + local.get $0 + local.get $5 + i32.store offset=8 + local.get $0 + local.get $6 + i32.store offset=12 + loop $for-loop|0 + local.get $8 + local.get $7 + i32.lt_s + if + local.get $4 + local.get $8 + i32.const 12 + i32.mul + i32.add + local.tee $2 + i32.load offset=8 + i32.const 1 + i32.and + i32.eqz + if + local.get $0 + local.get $9 + local.get $2 + i32.load + call $~lib/array/Array#__set + local.get $9 + i32.const 1 + i32.add + local.set $9 + end + local.get $8 + i32.const 1 + i32.add + local.set $8 + br $for-loop|0 + end + end + local.get $0 + local.get $9 + call $~lib/array/Array#set:length + local.get $0 + ) + (func $std/map/testNumeric (; 84 ;) + (local $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + i32.const 24 + i32.const 17 + 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 @@ -7861,60 +8214,8 @@ unreachable end local.get $0 - i32.load offset=8 - local.set $6 - local.get $0 - i32.load offset=16 + call $~lib/map/Map#keys local.set $4 - i32.const 16 - i32.const 18 - call $~lib/rt/tlsf/__alloc - call $~lib/rt/pure/__retain - local.get $4 - i32.const 2 - call $~lib/arraybuffer/ArrayBufferView#constructor - local.tee $1 - i32.const 0 - i32.store offset=12 - local.get $1 - local.get $4 - i32.store offset=12 - loop $for-loop|00 - local.get $5 - local.get $4 - i32.lt_s - if - local.get $6 - local.get $5 - i32.const 12 - i32.mul - i32.add - local.tee $7 - i32.load offset=8 - i32.const 1 - i32.and - i32.eqz - if - local.get $1 - local.get $3 - local.get $7 - i32.load - call $~lib/array/Array#__set - local.get $3 - i32.const 1 - i32.add - local.set $3 - end - local.get $5 - i32.const 1 - i32.add - local.set $5 - br $for-loop|00 - end - end - local.get $1 - local.get $3 - call $~lib/array/Array#set:length local.get $0 call $~lib/map/Map#values local.set $6 @@ -7922,44 +8223,44 @@ i32.const 19 call $~lib/rt/tlsf/__alloc call $~lib/rt/pure/__retain - local.tee $3 + local.tee $1 i32.const 0 i32.store - local.get $3 + local.get $1 i32.const 0 i32.store offset=4 - local.get $3 + local.get $1 i32.const 0 i32.store offset=8 - local.get $3 + local.get $1 i32.const 0 i32.store offset=12 - local.get $3 + local.get $1 i32.const 0 i32.store offset=16 - local.get $3 + local.get $1 i32.const 0 i32.store offset=20 - local.get $3 + local.get $1 call $~lib/map/Map#clear call $~lib/map/Map#constructor local.set $5 loop $for-loop|2 local.get $2 - local.get $1 + local.get $4 i32.load offset=12 i32.lt_s if - local.get $1 + local.get $4 local.get $2 call $~lib/array/Array#__get - local.set $4 + local.set $3 local.get $6 local.get $2 call $~lib/array/Array#__get local.set $7 local.get $0 - local.get $4 + local.get $3 call $~lib/map/Map#has i32.eqz if @@ -7984,17 +8285,17 @@ call $~lib/builtins/abort unreachable end + local.get $1 + local.get $3 local.get $3 - local.get $4 - local.get $4 call $~lib/map/Map#set call $~lib/rt/pure/__release local.get $5 local.get $7 i32.const 20 i32.sub - local.tee $4 - local.get $4 + local.tee $3 + local.get $3 call $~lib/map/Map#set call $~lib/rt/pure/__release local.get $2 @@ -8004,7 +8305,7 @@ br $for-loop|2 end end - local.get $3 + local.get $1 i32.load offset=20 i32.const 100 i32.ne @@ -8177,18 +8478,18 @@ call $~lib/builtins/abort unreachable end - local.get $1 + local.get $4 call $~lib/rt/pure/__release local.get $6 call $~lib/rt/pure/__release - local.get $3 + local.get $1 call $~lib/rt/pure/__release local.get $5 call $~lib/rt/pure/__release local.get $0 call $~lib/rt/pure/__release ) - (func $~lib/map/Map#clear (; 81 ;) (param $0 i32) + (func $~lib/map/Map#clear (; 85 ;) (param $0 i32) (local $1 i32) i32.const 16 call $~lib/arraybuffer/ArrayBuffer#constructor @@ -8221,7 +8522,7 @@ i32.const 0 i32.store offset=20 ) - (func $~lib/util/hash/hash64 (; 82 ;) (param $0 i64) (result i32) + (func $~lib/util/hash/hash64 (; 86 ;) (param $0 i64) (result i32) (local $1 i32) local.get $0 i32.wrap_i64 @@ -8287,7 +8588,7 @@ i32.const 16777619 i32.mul ) - (func $~lib/map/Map#find (; 83 ;) (param $0 i32) (param $1 i64) (param $2 i32) (result i32) + (func $~lib/map/Map#find (; 87 ;) (param $0 i32) (param $1 i64) (param $2 i32) (result i32) local.get $0 i32.load local.get $2 @@ -8328,7 +8629,7 @@ end i32.const 0 ) - (func $~lib/map/Map#has (; 84 ;) (param $0 i32) (param $1 i64) (result i32) + (func $~lib/map/Map#has (; 88 ;) (param $0 i32) (param $1 i64) (result i32) local.get $0 local.get $1 local.get $1 @@ -8337,7 +8638,7 @@ i32.const 0 i32.ne ) - (func $~lib/map/Map#rehash (; 85 ;) (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) @@ -8472,7 +8773,7 @@ local.get $4 call $~lib/rt/pure/__release ) - (func $~lib/map/Map#set (; 86 ;) (param $0 i32) (param $1 i64) (param $2 i32) (result i32) + (func $~lib/map/Map#set (; 90 ;) (param $0 i32) (param $1 i64) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -8562,7 +8863,7 @@ local.get $0 call $~lib/rt/pure/__retain ) - (func $~lib/map/Map#get (; 87 ;) (param $0 i32) (param $1 i64) (result i32) + (func $~lib/map/Map#get (; 91 ;) (param $0 i32) (param $1 i64) (result i32) local.get $0 local.get $1 local.get $1 @@ -8581,7 +8882,7 @@ local.get $0 i32.load offset=8 ) - (func $~lib/array/Array#__set (; 88 ;) (param $0 i32) (param $1 i32) (param $2 i64) + (func $~lib/array/Array#__set (; 92 ;) (param $0 i32) (param $1 i32) (param $2 i64) (local $3 i32) local.get $1 local.get $0 @@ -8592,9 +8893,9 @@ i32.const 0 i32.lt_s if + i32.const 1520 i32.const 1472 - i32.const 1536 - i32.const 109 + i32.const 120 i32.const 21 call $~lib/builtins/abort unreachable @@ -8619,7 +8920,7 @@ local.get $2 i64.store ) - (func $~lib/array/Array#set:length (; 89 ;) (param $0 i32) (param $1 i32) + (func $~lib/array/Array#set:length (; 93 ;) (param $0 i32) (param $1 i32) local.get $0 i32.load offset=12 drop @@ -8631,7 +8932,124 @@ local.get $1 i32.store offset=12 ) - (func $~lib/map/Map#values (; 90 ;) (param $0 i32) (result i32) + (func $~lib/map/Map#keys (; 94 ;) (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) + local.get $0 + i32.load offset=8 + local.set $4 + local.get $0 + i32.load offset=16 + local.tee $7 + local.set $6 + local.get $7 + i32.const 134217726 + i32.gt_u + if + i32.const 1200 + i32.const 1472 + i32.const 57 + i32.const 59 + call $~lib/builtins/abort + unreachable + end + local.get $6 + i32.const 3 + i32.shl + local.tee $5 + i32.const 0 + call $~lib/rt/tlsf/__alloc + local.tee $2 + local.get $5 + call $~lib/memory/memory.fill + i32.const 16 + i32.const 21 + 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 $2 + local.set $1 + local.get $2 + local.get $0 + i32.load + local.tee $3 + i32.ne + if + local.get $1 + call $~lib/rt/pure/__retain + local.set $1 + local.get $3 + call $~lib/rt/pure/__release + end + local.get $0 + local.get $1 + i32.store + local.get $0 + local.get $2 + i32.store offset=4 + local.get $0 + local.get $5 + i32.store offset=8 + local.get $0 + local.get $6 + i32.store offset=12 + loop $for-loop|0 + local.get $8 + local.get $7 + i32.lt_s + if + local.get $4 + local.get $8 + i32.const 4 + i32.shl + i32.add + local.tee $2 + i32.load offset=12 + i32.const 1 + i32.and + i32.eqz + if + local.get $0 + local.get $9 + local.get $2 + i64.load + call $~lib/array/Array#__set + local.get $9 + i32.const 1 + i32.add + local.set $9 + end + local.get $8 + i32.const 1 + i32.add + local.set $8 + br $for-loop|0 + end + end + local.get $0 + local.get $9 + call $~lib/array/Array#set:length + local.get $0 + ) + (func $~lib/map/Map#values (; 95 ;) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -8683,7 +9101,7 @@ call $~lib/array/Array#set:length local.get $0 ) - (func $~lib/map/Map#clear (; 91 ;) (param $0 i32) + (func $~lib/map/Map#clear (; 96 ;) (param $0 i32) (local $1 i32) i32.const 16 call $~lib/arraybuffer/ArrayBuffer#constructor @@ -8716,15 +9134,15 @@ i32.const 0 i32.store offset=20 ) - (func $~lib/array/Array#__get (; 92 ;) (param $0 i32) (param $1 i32) (result i64) + (func $~lib/array/Array#__get (; 97 ;) (param $0 i32) (param $1 i32) (result i64) local.get $1 local.get $0 i32.load offset=12 i32.ge_u if + i32.const 1520 i32.const 1472 - i32.const 1536 - i32.const 93 + i32.const 104 i32.const 41 call $~lib/builtins/abort unreachable @@ -8737,7 +9155,7 @@ i32.add i64.load ) - (func $~lib/map/Map#rehash (; 93 ;) (param $0 i32) (param $1 i32) + (func $~lib/map/Map#rehash (; 98 ;) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -8872,7 +9290,7 @@ local.get $4 call $~lib/rt/pure/__release ) - (func $~lib/map/Map#set (; 94 ;) (param $0 i32) (param $1 i64) (param $2 i64) (result i32) + (func $~lib/map/Map#set (; 99 ;) (param $0 i32) (param $1 i64) (param $2 i64) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -8998,7 +9416,7 @@ local.get $0 call $~lib/rt/pure/__retain ) - (func $~lib/map/Map#delete (; 95 ;) (param $0 i32) (param $1 i64) + (func $~lib/map/Map#delete (; 100 ;) (param $0 i32) (param $1 i64) (local $2 i32) (local $3 i32) local.get $0 @@ -9058,7 +9476,7 @@ call $~lib/map/Map#rehash end ) - (func $std/map/testNumeric (; 96 ;) + (func $std/map/testNumeric (; 101 ;) (local $0 i64) (local $1 i32) (local $2 i32) @@ -9067,7 +9485,6 @@ (local $5 i32) (local $6 i32) (local $7 i32) - (local $8 i32) i32.const 24 i32.const 20 call $~lib/rt/tlsf/__alloc @@ -9254,63 +9671,11 @@ unreachable end local.get $1 - i32.load offset=8 - local.set $4 - local.get $1 - i32.load offset=16 + call $~lib/map/Map#keys local.set $5 - i32.const 16 - i32.const 21 - call $~lib/rt/tlsf/__alloc - call $~lib/rt/pure/__retain - local.get $5 - i32.const 3 - call $~lib/arraybuffer/ArrayBufferView#constructor - local.tee $6 - i32.const 0 - i32.store offset=12 - local.get $6 - local.get $5 - i32.store offset=12 - loop $for-loop|00 - local.get $3 - local.get $5 - i32.lt_s - if - local.get $4 - local.get $3 - i32.const 4 - i32.shl - i32.add - local.tee $8 - i32.load offset=12 - i32.const 1 - i32.and - i32.eqz - if - local.get $6 - local.get $2 - local.get $8 - i64.load - call $~lib/array/Array#__set - local.get $2 - i32.const 1 - i32.add - local.set $2 - end - local.get $3 - i32.const 1 - i32.add - local.set $3 - br $for-loop|00 - end - end - local.get $6 - local.get $2 - call $~lib/array/Array#set:length local.get $1 call $~lib/map/Map#values - local.set $5 + local.set $7 i32.const 24 i32.const 22 call $~lib/rt/tlsf/__alloc @@ -9336,19 +9701,19 @@ local.get $2 call $~lib/map/Map#clear call $~lib/map/Map#constructor - local.set $3 + local.set $6 loop $for-loop|2 - local.get $7 - local.get $6 + local.get $3 + local.get $5 i32.load offset=12 i32.lt_s if - local.get $6 - local.get $7 + local.get $5 + local.get $3 call $~lib/array/Array#__get local.set $0 - local.get $5 local.get $7 + local.get $3 call $~lib/array/Array#__get local.set $4 local.get $1 @@ -9383,7 +9748,7 @@ local.get $0 call $~lib/map/Map#set call $~lib/rt/pure/__release - local.get $3 + local.get $6 local.get $4 i32.const 20 i32.sub @@ -9391,10 +9756,10 @@ local.get $4 call $~lib/map/Map#set call $~lib/rt/pure/__release - local.get $7 + local.get $3 i32.const 1 i32.add - local.set $7 + local.set $3 br $for-loop|2 end end @@ -9410,7 +9775,7 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $6 i32.load offset=20 i32.const 100 i32.ne @@ -9573,18 +9938,135 @@ call $~lib/builtins/abort unreachable end - local.get $6 - call $~lib/rt/pure/__release local.get $5 call $~lib/rt/pure/__release + local.get $7 + call $~lib/rt/pure/__release local.get $2 call $~lib/rt/pure/__release - local.get $3 + local.get $6 call $~lib/rt/pure/__release local.get $1 call $~lib/rt/pure/__release ) - (func $std/map/testNumeric (; 97 ;) + (func $~lib/map/Map#keys (; 102 ;) (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) + local.get $0 + i32.load offset=8 + local.set $4 + local.get $0 + i32.load offset=16 + local.tee $7 + local.set $6 + local.get $7 + i32.const 134217726 + i32.gt_u + if + i32.const 1200 + i32.const 1472 + i32.const 57 + i32.const 59 + call $~lib/builtins/abort + unreachable + end + local.get $6 + i32.const 3 + i32.shl + local.tee $5 + i32.const 0 + call $~lib/rt/tlsf/__alloc + local.tee $2 + local.get $5 + call $~lib/memory/memory.fill + i32.const 16 + i32.const 24 + 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 $2 + local.set $1 + local.get $2 + local.get $0 + i32.load + local.tee $3 + i32.ne + if + local.get $1 + call $~lib/rt/pure/__retain + local.set $1 + local.get $3 + call $~lib/rt/pure/__release + end + local.get $0 + local.get $1 + i32.store + local.get $0 + local.get $2 + i32.store offset=4 + local.get $0 + local.get $5 + i32.store offset=8 + local.get $0 + local.get $6 + i32.store offset=12 + loop $for-loop|0 + local.get $8 + local.get $7 + i32.lt_s + if + local.get $4 + local.get $8 + i32.const 4 + i32.shl + i32.add + local.tee $2 + i32.load offset=12 + i32.const 1 + i32.and + i32.eqz + if + local.get $0 + local.get $9 + local.get $2 + i64.load + call $~lib/array/Array#__set + local.get $9 + i32.const 1 + i32.add + local.set $9 + end + local.get $8 + i32.const 1 + i32.add + local.set $8 + br $for-loop|0 + end + end + local.get $0 + local.get $9 + call $~lib/array/Array#set:length + local.get $0 + ) + (func $std/map/testNumeric (; 103 ;) (local $0 i64) (local $1 i32) (local $2 i32) @@ -9593,7 +10075,6 @@ (local $5 i32) (local $6 i32) (local $7 i32) - (local $8 i32) i32.const 24 i32.const 23 call $~lib/rt/tlsf/__alloc @@ -9780,63 +10261,11 @@ unreachable end local.get $1 - i32.load offset=8 - local.set $4 - local.get $1 - i32.load offset=16 + call $~lib/map/Map#keys local.set $5 - i32.const 16 - i32.const 24 - call $~lib/rt/tlsf/__alloc - call $~lib/rt/pure/__retain - local.get $5 - i32.const 3 - call $~lib/arraybuffer/ArrayBufferView#constructor - local.tee $6 - i32.const 0 - i32.store offset=12 - local.get $6 - local.get $5 - i32.store offset=12 - loop $for-loop|00 - local.get $3 - local.get $5 - i32.lt_s - if - local.get $4 - local.get $3 - i32.const 4 - i32.shl - i32.add - local.tee $8 - i32.load offset=12 - i32.const 1 - i32.and - i32.eqz - if - local.get $6 - local.get $2 - local.get $8 - i64.load - call $~lib/array/Array#__set - local.get $2 - i32.const 1 - i32.add - local.set $2 - end - local.get $3 - i32.const 1 - i32.add - local.set $3 - br $for-loop|00 - end - end - local.get $6 - local.get $2 - call $~lib/array/Array#set:length local.get $1 call $~lib/map/Map#values - local.set $5 + local.set $7 i32.const 24 i32.const 25 call $~lib/rt/tlsf/__alloc @@ -9862,19 +10291,19 @@ local.get $2 call $~lib/map/Map#clear call $~lib/map/Map#constructor - local.set $3 + local.set $6 loop $for-loop|2 - local.get $7 - local.get $6 + local.get $3 + local.get $5 i32.load offset=12 i32.lt_s if - local.get $6 - local.get $7 + local.get $5 + local.get $3 call $~lib/array/Array#__get local.set $0 - local.get $5 local.get $7 + local.get $3 call $~lib/array/Array#__get local.set $4 local.get $1 @@ -9909,7 +10338,7 @@ local.get $0 call $~lib/map/Map#set call $~lib/rt/pure/__release - local.get $3 + local.get $6 local.get $4 i32.const 20 i32.sub @@ -9917,10 +10346,10 @@ local.get $4 call $~lib/map/Map#set call $~lib/rt/pure/__release - local.get $7 + local.get $3 i32.const 1 i32.add - local.set $7 + local.set $3 br $for-loop|2 end end @@ -9936,7 +10365,7 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $6 i32.load offset=20 i32.const 100 i32.ne @@ -10099,18 +10528,18 @@ call $~lib/builtins/abort unreachable end - local.get $6 - call $~lib/rt/pure/__release local.get $5 call $~lib/rt/pure/__release + local.get $7 + call $~lib/rt/pure/__release local.get $2 call $~lib/rt/pure/__release - local.get $3 + local.get $6 call $~lib/rt/pure/__release local.get $1 call $~lib/rt/pure/__release ) - (func $~lib/map/Map#find (; 98 ;) (param $0 i32) (param $1 f32) (param $2 i32) (result i32) + (func $~lib/map/Map#find (; 104 ;) (param $0 i32) (param $1 f32) (param $2 i32) (result i32) local.get $0 i32.load local.get $2 @@ -10151,7 +10580,7 @@ end i32.const 0 ) - (func $~lib/map/Map#has (; 99 ;) (param $0 i32) (param $1 f32) (result i32) + (func $~lib/map/Map#has (; 105 ;) (param $0 i32) (param $1 f32) (result i32) local.get $0 local.get $1 local.get $1 @@ -10161,7 +10590,7 @@ i32.const 0 i32.ne ) - (func $~lib/map/Map#rehash (; 100 ;) (param $0 i32) (param $1 i32) + (func $~lib/map/Map#rehash (; 106 ;) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -10297,7 +10726,7 @@ local.get $4 call $~lib/rt/pure/__release ) - (func $~lib/map/Map#set (; 101 ;) (param $0 i32) (param $1 f32) (param $2 i32) (result i32) + (func $~lib/map/Map#set (; 107 ;) (param $0 i32) (param $1 f32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -10388,7 +10817,7 @@ local.get $0 call $~lib/rt/pure/__retain ) - (func $~lib/map/Map#get (; 102 ;) (param $0 i32) (param $1 f32) (result i32) + (func $~lib/map/Map#get (; 108 ;) (param $0 i32) (param $1 f32) (result i32) local.get $0 local.get $1 local.get $1 @@ -10408,104 +10837,158 @@ local.get $0 i32.load offset=4 ) - (func $~lib/map/Map#keys (; 103 ;) (param $0 i32) (result i32) + (func $~lib/map/Map#keys (; 109 ;) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) - (local $3 i32) + (local $3 f32) (local $4 i32) (local $5 i32) - (local $6 f32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) + (local $10 i32) local.get $0 i32.load offset=8 local.set $5 local.get $0 i32.load offset=16 - local.set $2 + local.tee $8 + local.set $7 + local.get $8 + i32.const 268435452 + i32.gt_u + if + i32.const 1200 + i32.const 1472 + i32.const 57 + i32.const 59 + call $~lib/builtins/abort + unreachable + end + local.get $7 + i32.const 2 + i32.shl + local.tee $6 + i32.const 0 + call $~lib/rt/tlsf/__alloc + local.tee $2 + local.get $6 + call $~lib/memory/memory.fill 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 $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 $2 + local.set $1 + local.get $2 + local.get $0 + i32.load + local.tee $4 + i32.ne + if + local.get $1 + call $~lib/rt/pure/__retain + local.set $1 + local.get $4 + call $~lib/rt/pure/__release + end + local.get $0 + local.get $1 + i32.store local.get $0 local.get $2 + i32.store offset=4 + local.get $0 + local.get $6 + i32.store offset=8 + local.get $0 + local.get $7 i32.store offset=12 loop $for-loop|0 - local.get $3 - local.get $2 + local.get $9 + local.get $8 i32.lt_s if local.get $5 - local.get $3 + local.get $9 i32.const 12 i32.mul i32.add - local.tee $4 + local.tee $2 i32.load offset=8 i32.const 1 i32.and i32.eqz if - local.get $4 + local.get $2 f32.load - local.set $6 - local.get $1 + local.set $3 + local.get $10 local.get $0 i32.load offset=12 i32.ge_u if - local.get $1 + local.get $10 i32.const 0 i32.lt_s if + i32.const 1520 i32.const 1472 - i32.const 1536 - i32.const 109 + i32.const 120 i32.const 21 call $~lib/builtins/abort unreachable end local.get $0 - local.get $1 + local.get $10 i32.const 1 i32.add - local.tee $4 + local.tee $2 i32.const 2 call $~lib/array/ensureSize local.get $0 - local.get $4 + local.get $2 i32.store offset=12 end local.get $0 i32.load offset=4 - local.get $1 + local.get $10 i32.const 2 i32.shl i32.add - local.get $6 + local.get $3 f32.store - local.get $1 + local.get $10 i32.const 1 i32.add - local.set $1 + local.set $10 end - local.get $3 + local.get $9 i32.const 1 i32.add - local.set $3 + local.set $9 br $for-loop|0 end end local.get $0 - local.get $1 + local.get $10 call $~lib/array/Array#set:length local.get $0 ) - (func $~lib/map/Map#rehash (; 104 ;) (param $0 i32) (param $1 i32) + (func $~lib/map/Map#rehash (; 110 ;) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -10641,7 +11124,7 @@ local.get $4 call $~lib/rt/pure/__release ) - (func $~lib/map/Map#set (; 105 ;) (param $0 i32) (param $1 f32) (param $2 f32) (result i32) + (func $~lib/map/Map#set (; 111 ;) (param $0 i32) (param $1 f32) (param $2 f32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -10732,7 +11215,7 @@ local.get $0 call $~lib/rt/pure/__retain ) - (func $~lib/map/Map#delete (; 106 ;) (param $0 i32) (param $1 f32) + (func $~lib/map/Map#delete (; 112 ;) (param $0 i32) (param $1 f32) (local $2 i32) (local $3 i32) local.get $0 @@ -10793,7 +11276,7 @@ call $~lib/map/Map#rehash end ) - (func $std/map/testNumeric (; 107 ;) + (func $std/map/testNumeric (; 113 ;) (local $0 f32) (local $1 i32) (local $2 i32) @@ -11030,9 +11513,9 @@ i32.load offset=12 i32.ge_u if + i32.const 1520 i32.const 1472 - i32.const 1536 - i32.const 93 + i32.const 104 i32.const 41 call $~lib/builtins/abort unreachable @@ -11282,7 +11765,7 @@ local.get $1 call $~lib/rt/pure/__release ) - (func $~lib/map/Map#find (; 108 ;) (param $0 i32) (param $1 f64) (param $2 i32) (result i32) + (func $~lib/map/Map#find (; 114 ;) (param $0 i32) (param $1 f64) (param $2 i32) (result i32) local.get $0 i32.load local.get $2 @@ -11323,7 +11806,7 @@ end i32.const 0 ) - (func $~lib/map/Map#has (; 109 ;) (param $0 i32) (param $1 f64) (result i32) + (func $~lib/map/Map#has (; 115 ;) (param $0 i32) (param $1 f64) (result i32) local.get $0 local.get $1 local.get $1 @@ -11333,7 +11816,7 @@ i32.const 0 i32.ne ) - (func $~lib/map/Map#rehash (; 110 ;) (param $0 i32) (param $1 i32) + (func $~lib/map/Map#rehash (; 116 ;) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -11469,7 +11952,7 @@ local.get $4 call $~lib/rt/pure/__release ) - (func $~lib/map/Map#set (; 111 ;) (param $0 i32) (param $1 f64) (param $2 i32) (result i32) + (func $~lib/map/Map#set (; 117 ;) (param $0 i32) (param $1 f64) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -11560,7 +12043,7 @@ local.get $0 call $~lib/rt/pure/__retain ) - (func $~lib/map/Map#get (; 112 ;) (param $0 i32) (param $1 f64) (result i32) + (func $~lib/map/Map#get (; 118 ;) (param $0 i32) (param $1 f64) (result i32) local.get $0 local.get $1 local.get $1 @@ -11580,104 +12063,158 @@ local.get $0 i32.load offset=8 ) - (func $~lib/map/Map#keys (; 113 ;) (param $0 i32) (result i32) + (func $~lib/map/Map#keys (; 119 ;) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) - (local $3 i32) + (local $3 f64) (local $4 i32) (local $5 i32) - (local $6 f64) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) + (local $10 i32) local.get $0 i32.load offset=8 local.set $5 local.get $0 i32.load offset=16 - local.set $2 + local.tee $8 + local.set $7 + local.get $8 + i32.const 134217726 + i32.gt_u + if + i32.const 1200 + i32.const 1472 + i32.const 57 + i32.const 59 + call $~lib/builtins/abort + unreachable + end + local.get $7 + i32.const 3 + i32.shl + local.tee $6 + i32.const 0 + call $~lib/rt/tlsf/__alloc + local.tee $2 + local.get $6 + call $~lib/memory/memory.fill 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 $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 $2 + local.set $1 + local.get $2 + local.get $0 + i32.load + local.tee $4 + i32.ne + if + local.get $1 + call $~lib/rt/pure/__retain + local.set $1 + local.get $4 + call $~lib/rt/pure/__release + end + local.get $0 + local.get $1 + i32.store local.get $0 local.get $2 + i32.store offset=4 + local.get $0 + local.get $6 + i32.store offset=8 + local.get $0 + local.get $7 i32.store offset=12 loop $for-loop|0 - local.get $3 - local.get $2 + local.get $9 + local.get $8 i32.lt_s if local.get $5 - local.get $3 + local.get $9 i32.const 4 i32.shl i32.add - local.tee $4 + local.tee $2 i32.load offset=12 i32.const 1 i32.and i32.eqz if - local.get $4 + local.get $2 f64.load - local.set $6 - local.get $1 + local.set $3 + local.get $10 local.get $0 i32.load offset=12 i32.ge_u if - local.get $1 + local.get $10 i32.const 0 i32.lt_s if + i32.const 1520 i32.const 1472 - i32.const 1536 - i32.const 109 + i32.const 120 i32.const 21 call $~lib/builtins/abort unreachable end local.get $0 - local.get $1 + local.get $10 i32.const 1 i32.add - local.tee $4 + local.tee $2 i32.const 3 call $~lib/array/ensureSize local.get $0 - local.get $4 + local.get $2 i32.store offset=12 end local.get $0 i32.load offset=4 - local.get $1 + local.get $10 i32.const 3 i32.shl i32.add - local.get $6 + local.get $3 f64.store - local.get $1 + local.get $10 i32.const 1 i32.add - local.set $1 + local.set $10 end - local.get $3 + local.get $9 i32.const 1 i32.add - local.set $3 + local.set $9 br $for-loop|0 end end local.get $0 - local.get $1 + local.get $10 call $~lib/array/Array#set:length local.get $0 ) - (func $~lib/map/Map#rehash (; 114 ;) (param $0 i32) (param $1 i32) + (func $~lib/map/Map#rehash (; 120 ;) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -11813,7 +12350,7 @@ local.get $4 call $~lib/rt/pure/__release ) - (func $~lib/map/Map#set (; 115 ;) (param $0 i32) (param $1 f64) (param $2 f64) (result i32) + (func $~lib/map/Map#set (; 121 ;) (param $0 i32) (param $1 f64) (param $2 f64) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -11940,7 +12477,7 @@ local.get $0 call $~lib/rt/pure/__retain ) - (func $~lib/map/Map#delete (; 116 ;) (param $0 i32) (param $1 f64) + (func $~lib/map/Map#delete (; 122 ;) (param $0 i32) (param $1 f64) (local $2 i32) (local $3 i32) local.get $0 @@ -12001,7 +12538,7 @@ call $~lib/map/Map#rehash end ) - (func $std/map/testNumeric (; 117 ;) + (func $std/map/testNumeric (; 123 ;) (local $0 f64) (local $1 i32) (local $2 i32) @@ -12238,9 +12775,9 @@ i32.load offset=12 i32.ge_u if + i32.const 1520 i32.const 1472 - i32.const 1536 - i32.const 93 + i32.const 104 i32.const 41 call $~lib/builtins/abort unreachable @@ -12490,7 +13027,7 @@ local.get $1 call $~lib/rt/pure/__release ) - (func $~start (; 118 ;) + (func $~start (; 124 ;) call $std/map/testNumeric call $std/map/testNumeric call $std/map/testNumeric @@ -12502,7 +13039,7 @@ call $std/map/testNumeric call $std/map/testNumeric ) - (func $~lib/rt/pure/decrement (; 119 ;) (param $0 i32) + (func $~lib/rt/pure/decrement (; 125 ;) (param $0 i32) (local $1 i32) (local $2 i32) local.get $0 @@ -12530,35 +13067,41 @@ i32.eq if block $__inlined_func$~lib/rt/__visit_members - block $folding-inner0 - block $block$4$break + block $folding-inner1 + block $folding-inner0 block $switch$1$default - local.get $0 - i32.const 16 - i32.add - local.tee $1 - i32.const 8 - i32.sub + block $switch$1$case$4 + local.get $0 + i32.const 16 + i32.add + local.tee $1 + i32.const 8 + i32.sub + i32.load + br_table $__inlined_func$~lib/rt/__visit_members $__inlined_func$~lib/rt/__visit_members $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 + local.get $1 i32.load - br_table $__inlined_func$~lib/rt/__visit_members $__inlined_func$~lib/rt/__visit_members $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 + local.tee $1 + if + local.get $1 + call $~lib/rt/pure/__visit + end + br $__inlined_func$~lib/rt/__visit_members end unreachable end local.get $1 i32.load - local.tee $1 - if - local.get $1 - call $~lib/rt/pure/__visit - end + call $~lib/rt/pure/__visit + local.get $1 + i32.load offset=8 + call $~lib/rt/pure/__visit br $__inlined_func$~lib/rt/__visit_members end local.get $1 i32.load call $~lib/rt/pure/__visit - local.get $1 - i32.load offset=8 - call $~lib/rt/pure/__visit end local.get $2 i32.const -2147483648 @@ -12597,9 +13140,9 @@ i32.store offset=4 end ) - (func $~lib/rt/pure/__visit (; 120 ;) (param $0 i32) + (func $~lib/rt/pure/__visit (; 126 ;) (param $0 i32) local.get $0 - i32.const 1564 + i32.const 1556 i32.lt_u if return diff --git a/tests/compiler/std/map.untouched.wat b/tests/compiler/std/map.untouched.wat index 2408459f43..51420ccb1c 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) @@ -2169,40 +2169,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 @@ -2217,6 +2217,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 @@ -2237,33 +2240,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 @@ -2309,7 +2293,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) @@ -3333,7 +3317,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) @@ -3553,7 +3537,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 @@ -3569,7 +3553,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) @@ -3688,7 +3672,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 @@ -3697,7 +3681,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) @@ -3718,7 +3702,7 @@ i32.gt_u if i32.const 192 - i32.const 528 + i32.const 464 i32.const 14 i32.const 47 call $~lib/builtins/abort @@ -3759,7 +3743,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 @@ -3769,7 +3753,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 @@ -3779,9 +3763,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 @@ -3803,7 +3787,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 @@ -3816,7 +3800,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) @@ -3881,29 +3865,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 @@ -3913,7 +3953,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 @@ -3923,9 +3963,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 @@ -3947,7 +3987,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 @@ -3960,7 +4000,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) @@ -4025,7 +4065,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 @@ -4065,7 +4105,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 @@ -4097,7 +4137,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 @@ -4137,7 +4177,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 @@ -4169,11 +4209,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 @@ -4182,16 +4222,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 @@ -4202,7 +4242,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 @@ -4211,16 +4251,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 @@ -4231,7 +4271,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 @@ -4283,7 +4323,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) @@ -4440,7 +4480,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) @@ -4549,7 +4589,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 @@ -4591,7 +4631,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 @@ -4639,7 +4679,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) @@ -4796,7 +4836,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) @@ -4901,15 +4941,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) @@ -4985,7 +5025,7 @@ end i32.const 1 ) - (func $std/map/testNumeric (; 67 ;) + (func $std/map/testNumeric (; 66 ;) (local $0 i32) (local $1 i32) (local $2 i32) @@ -5494,7 +5534,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 @@ -5534,7 +5574,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 @@ -5566,7 +5606,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 @@ -5616,7 +5656,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 @@ -5633,7 +5673,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) @@ -5790,7 +5830,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) @@ -5897,7 +5937,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 @@ -5926,33 +5966,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 @@ -5962,7 +6058,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 @@ -5972,9 +6068,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 @@ -5996,7 +6092,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 @@ -6009,7 +6105,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) @@ -6074,7 +6170,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) @@ -6139,7 +6235,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 @@ -6179,7 +6275,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 @@ -6211,11 +6307,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 @@ -6224,16 +6320,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 @@ -6244,7 +6340,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 @@ -6294,7 +6390,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) @@ -6451,7 +6547,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) @@ -6558,11 +6654,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) @@ -6636,7 +6732,7 @@ end i32.const 1 ) - (func $std/map/testNumeric (; 92 ;) + (func $std/map/testNumeric (; 91 ;) (local $0 i32) (local $1 i32) (local $2 i32) @@ -7123,7 +7219,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 @@ -7163,7 +7259,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 @@ -7195,7 +7291,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 @@ -7217,7 +7313,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 @@ -7269,7 +7365,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 @@ -7288,7 +7384,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) @@ -7445,7 +7541,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) @@ -7554,7 +7650,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 @@ -7585,33 +7681,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 @@ -7621,7 +7773,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 @@ -7631,9 +7783,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 @@ -7655,7 +7807,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 @@ -7668,7 +7820,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) @@ -7733,7 +7885,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) @@ -7798,7 +7950,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 @@ -7838,7 +7990,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 @@ -7870,11 +8022,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 @@ -7883,16 +8035,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 @@ -7903,7 +8055,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 @@ -7955,7 +8107,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) @@ -8112,7 +8264,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) @@ -8221,11 +8373,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) @@ -8301,7 +8453,7 @@ end i32.const 1 ) - (func $std/map/testNumeric (; 118 ;) + (func $std/map/testNumeric (; 117 ;) (local $0 i32) (local $1 i32) (local $2 i32) @@ -8810,7 +8962,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 @@ -8850,7 +9002,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 @@ -8882,7 +9034,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 @@ -8932,7 +9084,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 @@ -8949,7 +9101,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) @@ -9106,7 +9258,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) @@ -9213,7 +9365,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 @@ -9242,33 +9394,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 @@ -9278,7 +9486,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 @@ -9288,9 +9496,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 @@ -9312,7 +9520,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 @@ -9325,7 +9533,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) @@ -9390,7 +9598,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) @@ -9455,7 +9663,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 @@ -9495,7 +9703,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 @@ -9527,11 +9735,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 @@ -9540,16 +9748,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 @@ -9560,7 +9768,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 @@ -9610,7 +9818,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) @@ -9767,7 +9975,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) @@ -9874,11 +10082,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) @@ -9952,7 +10160,7 @@ end i32.const 1 ) - (func $std/map/testNumeric (; 143 ;) + (func $std/map/testNumeric (; 142 ;) (local $0 i32) (local $1 i32) (local $2 i32) @@ -10439,7 +10647,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 @@ -10454,7 +10662,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 @@ -10481,7 +10689,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) @@ -10546,7 +10754,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) @@ -10611,11 +10819,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) @@ -10687,7 +10895,7 @@ end i32.const 1 ) - (func $std/map/testNumeric (; 150 ;) + (func $std/map/testNumeric (; 149 ;) (local $0 i32) (local $1 i32) (local $2 i32) @@ -11150,7 +11358,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 @@ -11190,7 +11398,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 @@ -11222,7 +11430,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 @@ -11270,7 +11478,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 @@ -11285,7 +11493,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) @@ -11442,7 +11650,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) @@ -11547,7 +11755,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 @@ -11574,33 +11782,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 @@ -11610,7 +11874,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 @@ -11620,9 +11884,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 @@ -11644,7 +11908,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 @@ -11657,7 +11921,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) @@ -11722,7 +11986,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) @@ -11787,7 +12051,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 @@ -11827,7 +12091,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 @@ -11859,11 +12123,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 @@ -11872,16 +12136,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 @@ -11892,7 +12156,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 @@ -11940,7 +12204,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) @@ -12097,7 +12361,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) @@ -12202,11 +12466,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) @@ -12278,7 +12542,7 @@ end i32.const 1 ) - (func $std/map/testNumeric (; 175 ;) + (func $std/map/testNumeric (; 174 ;) (local $0 i32) (local $1 i32) (local $2 i32) @@ -12741,7 +13005,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 @@ -12781,7 +13045,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 @@ -12813,7 +13077,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) @@ -12901,7 +13165,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 @@ -12949,7 +13213,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 @@ -12964,7 +13228,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) @@ -13122,7 +13386,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) @@ -13228,7 +13492,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 @@ -13255,33 +13519,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 @@ -13291,7 +13611,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 @@ -13301,9 +13621,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 @@ -13325,7 +13645,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 @@ -13338,7 +13658,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) @@ -13403,7 +13723,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) @@ -13468,7 +13788,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 @@ -13508,7 +13828,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 @@ -13540,11 +13860,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 @@ -13553,16 +13873,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 @@ -13573,7 +13893,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 @@ -13621,7 +13941,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) @@ -13779,7 +14099,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) @@ -13885,11 +14205,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) @@ -13962,7 +14282,7 @@ end i32.const 1 ) - (func $std/map/testNumeric (; 201 ;) + (func $std/map/testNumeric (; 200 ;) (local $0 i32) (local $1 i64) (local $2 i32) @@ -14433,7 +14753,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 @@ -14473,7 +14793,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 @@ -14505,7 +14825,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 @@ -14553,7 +14873,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 @@ -14568,7 +14888,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) @@ -14726,7 +15046,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) @@ -14832,7 +15152,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 @@ -14859,33 +15179,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 @@ -14895,7 +15271,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 @@ -14905,9 +15281,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 @@ -14929,7 +15305,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 @@ -14942,7 +15318,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) @@ -15007,7 +15383,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) @@ -15072,7 +15448,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 @@ -15112,7 +15488,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 @@ -15144,11 +15520,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 @@ -15157,16 +15533,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 @@ -15177,7 +15553,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 @@ -15225,7 +15601,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) @@ -15383,7 +15759,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) @@ -15489,11 +15865,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) @@ -15566,7 +15942,7 @@ end i32.const 1 ) - (func $std/map/testNumeric (; 226 ;) + (func $std/map/testNumeric (; 225 ;) (local $0 i32) (local $1 i64) (local $2 i32) @@ -16037,7 +16413,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 @@ -16077,7 +16453,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 @@ -16109,7 +16485,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 @@ -16157,7 +16533,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 @@ -16173,7 +16549,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) @@ -16332,7 +16708,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) @@ -16439,7 +16815,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 @@ -16467,33 +16843,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 @@ -16503,7 +16935,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 @@ -16513,9 +16945,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 @@ -16537,7 +16969,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 @@ -16550,7 +16982,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) @@ -16615,7 +17047,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) @@ -16680,7 +17112,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 @@ -16720,7 +17152,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 @@ -16752,11 +17184,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 @@ -16765,16 +17197,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 @@ -16785,7 +17217,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 @@ -16833,7 +17265,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) @@ -16992,7 +17424,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) @@ -17099,11 +17531,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) @@ -17177,7 +17609,7 @@ end i32.const 1 ) - (func $std/map/testNumeric (; 251 ;) + (func $std/map/testNumeric (; 250 ;) (local $0 i32) (local $1 f32) (local $2 i32) @@ -17648,7 +18080,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 @@ -17688,7 +18120,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 @@ -17720,7 +18152,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 @@ -17768,7 +18200,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 @@ -17784,7 +18216,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) @@ -17943,7 +18375,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) @@ -18050,7 +18482,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 @@ -18078,33 +18510,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 @@ -18114,7 +18602,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 @@ -18124,9 +18612,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 @@ -18148,7 +18636,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 @@ -18161,7 +18649,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) @@ -18226,7 +18714,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) @@ -18291,7 +18779,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 @@ -18331,7 +18819,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 @@ -18363,11 +18851,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 @@ -18376,16 +18864,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 @@ -18396,7 +18884,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 @@ -18444,7 +18932,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) @@ -18603,7 +19091,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) @@ -18710,11 +19198,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) @@ -18788,7 +19276,7 @@ end i32.const 1 ) - (func $std/map/testNumeric (; 276 ;) + (func $std/map/testNumeric (; 275 ;) (local $0 i32) (local $1 f64) (local $2 i32) @@ -19259,7 +19747,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 @@ -19271,13 +19759,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 @@ -19354,7 +19842,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 @@ -19378,7 +19866,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 @@ -19391,13 +19879,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 @@ -19410,7 +19904,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 @@ -19423,7 +19917,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 @@ -19436,10 +19930,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 @@ -19452,7 +19949,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 @@ -19465,10 +19962,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 @@ -19481,7 +19981,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 @@ -19494,10 +19994,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 @@ -19510,7 +20013,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 @@ -19523,10 +20026,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 @@ -19539,7 +20045,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 @@ -19552,10 +20058,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 @@ -19568,7 +20077,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 @@ -19581,10 +20090,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 @@ -19597,7 +20109,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 @@ -19610,10 +20122,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 @@ -19626,7 +20141,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 @@ -19639,10 +20154,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 @@ -19655,206 +20173,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 9441e0e246..4727e29d1d 100644 --- a/tests/compiler/std/set.optimized.wat +++ b/tests/compiler/std/set.optimized.wat @@ -1,10 +1,10 @@ (module (type $i32_i32_=>_none (func (param i32 i32))) (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) + (type $i32_=>_i32 (func (param i32) (result i32))) (type $none_=>_none (func)) (type $none_=>_i32 (func (result i32))) (type $i32_=>_none (func (param i32))) - (type $i32_=>_i32 (func (param 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_i64_=>_i32 (func (param i32 i64) (result i32))) @@ -35,8 +35,8 @@ (data (i32.const 1184) "\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 1232) "&\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 1296) "\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 1344) "$\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 1408) "\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 1344) "\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 1392) "$\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)) @@ -1063,7 +1063,7 @@ (local $1 i32) (local $2 i32) local.get $0 - i32.const 1452 + i32.const 1444 i32.gt_u if local.get $0 @@ -1292,7 +1292,7 @@ ) (func $~lib/rt/pure/__release (; 18 ;) (param $0 i32) local.get $0 - i32.const 1452 + i32.const 1444 i32.gt_u if local.get $0 @@ -1643,74 +1643,7 @@ local.get $0 call $~lib/rt/pure/__retain ) - (func $~lib/arraybuffer/ArrayBufferView#constructor (; 26 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - (local $4 i32) - local.get $1 - i32.const 1073741808 - local.get $2 - i32.shr_u - i32.gt_u - if - i32.const 1200 - i32.const 1248 - i32.const 23 - i32.const 56 - call $~lib/builtins/abort - unreachable - end - local.get $1 - local.get $2 - i32.shl - local.tee $3 - 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 - 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 $2 - local.tee $1 - local.get $0 - i32.load - local.tee $4 - i32.ne - if - local.get $1 - call $~lib/rt/pure/__retain - local.set $1 - local.get $4 - call $~lib/rt/pure/__release - end - local.get $0 - local.get $1 - i32.store - local.get $0 - local.get $2 - i32.store offset=4 - local.get $0 - local.get $3 - i32.store offset=8 - local.get $0 - ) - (func $~lib/memory/memory.copy (; 27 ;) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/memory/memory.copy (; 26 ;) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) block $~lib/util/memory/memmove|inlined.0 @@ -1883,7 +1816,7 @@ end end ) - (func $~lib/rt/tlsf/freeBlock (; 28 ;) (param $0 i32) (param $1 i32) + (func $~lib/rt/tlsf/freeBlock (; 27 ;) (param $0 i32) (param $1 i32) local.get $1 local.get $1 i32.load @@ -1896,7 +1829,7 @@ local.get $1 call $~lib/rt/rtrace/onfree ) - (func $~lib/rt/tlsf/reallocateBlock (; 29 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/rt/tlsf/reallocateBlock (; 28 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -1987,7 +1920,7 @@ local.get $2 call $~lib/memory/memory.copy local.get $1 - i32.const 1452 + i32.const 1444 i32.ge_u if local.get $1 @@ -1999,7 +1932,7 @@ end local.get $3 ) - (func $~lib/array/ensureSize (; 30 ;) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/array/ensureSize (; 29 ;) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -2019,7 +1952,7 @@ i32.gt_u if i32.const 1200 - i32.const 1424 + i32.const 1360 i32.const 14 i32.const 47 call $~lib/builtins/abort @@ -2100,7 +2033,7 @@ i32.store offset=8 end ) - (func $~lib/array/Array#__set (; 31 ;) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/array/Array#__set (; 30 ;) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) local.get $1 local.get $0 @@ -2111,9 +2044,9 @@ i32.const 0 i32.lt_s if + i32.const 1408 i32.const 1360 - i32.const 1424 - i32.const 109 + i32.const 120 i32.const 21 call $~lib/builtins/abort unreachable @@ -2136,15 +2069,125 @@ local.get $2 i32.store8 ) + (func $~lib/set/Set#values (; 31 ;) (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + local.get $0 + i32.load offset=8 + local.set $6 + local.get $0 + i32.load offset=16 + local.tee $7 + local.tee $4 + i32.const 1073741808 + i32.gt_u + if + i32.const 1200 + i32.const 1360 + i32.const 57 + i32.const 59 + call $~lib/builtins/abort + unreachable + end + local.get $4 + i32.const 0 + call $~lib/rt/tlsf/__alloc + local.tee $1 + local.get $4 + 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 $8 + i32.ne + if + local.get $2 + call $~lib/rt/pure/__retain + local.set $2 + local.get $8 + 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 + local.get $4 + i32.store offset=8 + local.get $0 + local.get $4 + i32.store offset=12 + loop $for-loop|0 + local.get $5 + local.get $7 + i32.lt_s + if + local.get $6 + local.get $5 + i32.const 3 + i32.shl + i32.add + local.tee $2 + i32.load offset=4 + i32.const 1 + i32.and + i32.eqz + if + local.get $3 + local.tee $1 + i32.const 1 + i32.add + local.set $3 + local.get $0 + local.get $1 + local.get $2 + i32.load8_s + call $~lib/array/Array#__set + end + local.get $5 + i32.const 1 + i32.add + local.set $5 + br $for-loop|0 + end + end + local.get $0 + ) (func $~lib/array/Array#__get (; 32 ;) (param $0 i32) (param $1 i32) (result i32) local.get $1 local.get $0 i32.load offset=12 i32.ge_u if + i32.const 1408 i32.const 1360 - i32.const 1424 - i32.const 93 + i32.const 104 i32.const 41 call $~lib/builtins/abort unreachable @@ -2223,15 +2266,10 @@ (local $1 i32) (local $2 i32) (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) call $~lib/set/Set#constructor - local.set $2 + local.set $0 loop $for-loop|1 - local.get $0 + local.get $2 i32.const 24 i32.shl i32.const 24 @@ -2239,8 +2277,8 @@ i32.const 100 i32.lt_s if - local.get $2 local.get $0 + local.get $2 call $~lib/set/Set#has if i32.const 0 @@ -2250,12 +2288,12 @@ call $~lib/builtins/abort unreachable end - local.get $2 local.get $0 + local.get $2 call $~lib/set/Set#add call $~lib/rt/pure/__release - local.get $2 local.get $0 + local.get $2 call $~lib/set/Set#has i32.eqz if @@ -2266,14 +2304,14 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $2 i32.const 1 i32.add - local.set $0 + local.set $2 br $for-loop|1 end end - local.get $2 + local.get $0 i32.load offset=20 i32.const 100 i32.ne @@ -2286,9 +2324,9 @@ unreachable end i32.const 50 - local.set $0 + local.set $2 loop $for-loop|3 - local.get $0 + local.get $2 i32.const 24 i32.shl i32.const 24 @@ -2296,8 +2334,8 @@ i32.const 100 i32.lt_s if - local.get $2 local.get $0 + local.get $2 call $~lib/set/Set#has i32.eqz if @@ -2308,12 +2346,12 @@ call $~lib/builtins/abort unreachable end - local.get $2 local.get $0 + local.get $2 call $~lib/set/Set#add call $~lib/rt/pure/__release - local.get $2 local.get $0 + local.get $2 call $~lib/set/Set#has i32.eqz if @@ -2324,14 +2362,14 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $2 i32.const 1 i32.add - local.set $0 + local.set $2 br $for-loop|3 end end - local.get $2 + local.get $0 i32.load offset=20 i32.const 100 i32.ne @@ -2343,72 +2381,22 @@ call $~lib/builtins/abort unreachable end - local.get $2 - i32.load offset=8 - local.set $7 - local.get $2 - i32.load offset=16 - local.set $6 - i32.const 16 - i32.const 4 - call $~lib/rt/tlsf/__alloc - call $~lib/rt/pure/__retain - local.get $6 - i32.const 0 - call $~lib/arraybuffer/ArrayBufferView#constructor - local.tee $4 - i32.const 0 - i32.store offset=12 - local.get $4 - local.get $6 - i32.store offset=12 - loop $for-loop|0 - local.get $5 - local.get $6 + local.get $0 + call $~lib/set/Set#values + local.set $2 + call $~lib/set/Set#constructor + local.set $3 + loop $for-loop|4 + local.get $1 + local.get $2 + i32.load offset=12 i32.lt_s if - local.get $7 - local.get $5 - i32.const 3 - i32.shl - i32.add - local.tee $8 - i32.load offset=4 - i32.const 1 - i32.and - i32.eqz - if - local.get $1 - local.tee $0 - i32.const 1 - i32.add - local.set $1 - local.get $4 - local.get $0 - local.get $8 - i32.load8_s - call $~lib/array/Array#__set - end - local.get $5 - i32.const 1 - i32.add - local.set $5 - br $for-loop|0 - end - end - call $~lib/set/Set#constructor - local.set $0 - loop $for-loop|4 - local.get $3 - local.get $4 - i32.load offset=12 - i32.lt_s - if - local.get $2 - local.get $4 - local.get $3 - call $~lib/array/Array#__get - call $~lib/set/Set#has + local.get $0 + local.get $2 + local.get $1 + call $~lib/array/Array#__get + call $~lib/set/Set#has i32.eqz if i32.const 0 @@ -2418,22 +2406,22 @@ call $~lib/builtins/abort unreachable end - local.get $0 - local.get $4 local.get $3 + local.get $2 + local.get $1 call $~lib/array/Array#__get call $~lib/set/Set#add call $~lib/rt/pure/__release - local.get $3 + local.get $1 i32.const 1 i32.add - local.set $3 + local.set $1 br $for-loop|4 end end - local.get $0 + local.get $3 i32.load offset=20 - local.get $2 + local.get $0 i32.load offset=20 i32.ne if @@ -2445,9 +2433,9 @@ unreachable end i32.const 0 - local.set $3 + local.set $1 loop $for-loop|6 - local.get $3 + local.get $1 i32.const 24 i32.shl i32.const 24 @@ -2455,8 +2443,8 @@ i32.const 50 i32.lt_s if - local.get $2 - local.get $3 + local.get $0 + local.get $1 call $~lib/set/Set#has i32.eqz if @@ -2467,11 +2455,11 @@ call $~lib/builtins/abort unreachable end - local.get $2 - local.get $3 + local.get $0 + local.get $1 call $~lib/set/Set#delete - local.get $2 - local.get $3 + local.get $0 + local.get $1 call $~lib/set/Set#has if i32.const 0 @@ -2481,14 +2469,14 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $1 i32.const 1 i32.add - local.set $3 + local.set $1 br $for-loop|6 end end - local.get $2 + local.get $0 i32.load offset=20 i32.const 50 i32.ne @@ -2501,9 +2489,9 @@ unreachable end i32.const 0 - local.set $3 + local.set $1 loop $for-loop|8 - local.get $3 + local.get $1 i32.const 24 i32.shl i32.const 24 @@ -2511,8 +2499,8 @@ i32.const 50 i32.lt_s if - local.get $2 - local.get $3 + local.get $0 + local.get $1 call $~lib/set/Set#has if i32.const 0 @@ -2522,12 +2510,12 @@ call $~lib/builtins/abort unreachable end - local.get $2 - local.get $3 + local.get $0 + local.get $1 call $~lib/set/Set#add call $~lib/rt/pure/__release - local.get $2 - local.get $3 + local.get $0 + local.get $1 call $~lib/set/Set#has i32.eqz if @@ -2538,11 +2526,11 @@ call $~lib/builtins/abort unreachable end - local.get $2 - local.get $3 + local.get $0 + local.get $1 call $~lib/set/Set#delete - local.get $2 - local.get $3 + local.get $0 + local.get $1 call $~lib/set/Set#has if i32.const 0 @@ -2552,14 +2540,14 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $1 i32.const 1 i32.add - local.set $3 + local.set $1 br $for-loop|8 end end - local.get $2 + local.get $0 i32.load offset=20 i32.const 50 i32.ne @@ -2571,9 +2559,9 @@ call $~lib/builtins/abort unreachable end - local.get $2 + local.get $0 call $~lib/set/Set#clear - local.get $2 + local.get $0 i32.load offset=20 if i32.const 0 @@ -2583,11 +2571,11 @@ call $~lib/builtins/abort unreachable end - local.get $4 + local.get $2 call $~lib/rt/pure/__release - local.get $0 + local.get $3 call $~lib/rt/pure/__release - local.get $2 + local.get $0 call $~lib/rt/pure/__release ) (func $~lib/set/Set#constructor (; 35 ;) (result i32) @@ -2845,15 +2833,125 @@ local.get $0 call $~lib/rt/pure/__retain ) - (func $~lib/array/Array#__get (; 39 ;) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/set/Set#values (; 39 ;) (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + local.get $0 + i32.load offset=8 + local.set $6 + local.get $0 + i32.load offset=16 + local.tee $7 + local.tee $4 + i32.const 1073741808 + i32.gt_u + if + i32.const 1200 + i32.const 1360 + i32.const 57 + i32.const 59 + call $~lib/builtins/abort + unreachable + end + local.get $4 + i32.const 0 + call $~lib/rt/tlsf/__alloc + local.tee $1 + local.get $4 + call $~lib/memory/memory.fill + i32.const 16 + i32.const 6 + 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 $8 + i32.ne + if + local.get $2 + call $~lib/rt/pure/__retain + local.set $2 + local.get $8 + 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 + local.get $4 + i32.store offset=8 + local.get $0 + local.get $4 + i32.store offset=12 + loop $for-loop|0 + local.get $5 + local.get $7 + i32.lt_s + if + local.get $6 + local.get $5 + i32.const 3 + i32.shl + i32.add + local.tee $2 + i32.load offset=4 + i32.const 1 + i32.and + i32.eqz + if + local.get $3 + local.tee $1 + i32.const 1 + i32.add + local.set $3 + local.get $0 + local.get $1 + local.get $2 + i32.load8_u + call $~lib/array/Array#__set + end + local.get $5 + i32.const 1 + i32.add + local.set $5 + br $for-loop|0 + end + end + local.get $0 + ) + (func $~lib/array/Array#__get (; 40 ;) (param $0 i32) (param $1 i32) (result i32) local.get $1 local.get $0 i32.load offset=12 i32.ge_u if + i32.const 1408 i32.const 1360 - i32.const 1424 - i32.const 93 + i32.const 104 i32.const 41 call $~lib/builtins/abort unreachable @@ -2864,7 +2962,7 @@ i32.add i32.load8_u ) - (func $~lib/set/Set#delete (; 40 ;) (param $0 i32) (param $1 i32) + (func $~lib/set/Set#delete (; 41 ;) (param $0 i32) (param $1 i32) (local $2 i32) local.get $0 local.get $1 @@ -2925,27 +3023,22 @@ call $~lib/set/Set#rehash end ) - (func $std/set/testNumeric (; 41 ;) + (func $std/set/testNumeric (; 42 ;) (local $0 i32) (local $1 i32) (local $2 i32) (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) call $~lib/set/Set#constructor - local.set $2 + local.set $0 loop $for-loop|1 - local.get $0 + local.get $2 i32.const 255 i32.and i32.const 100 i32.lt_u if - local.get $2 local.get $0 + local.get $2 call $~lib/set/Set#has if i32.const 0 @@ -2955,12 +3048,12 @@ call $~lib/builtins/abort unreachable end - local.get $2 local.get $0 + local.get $2 call $~lib/set/Set#add call $~lib/rt/pure/__release - local.get $2 local.get $0 + local.get $2 call $~lib/set/Set#has i32.eqz if @@ -2971,14 +3064,14 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $2 i32.const 1 i32.add - local.set $0 + local.set $2 br $for-loop|1 end end - local.get $2 + local.get $0 i32.load offset=20 i32.const 100 i32.ne @@ -2991,16 +3084,16 @@ unreachable end i32.const 50 - local.set $0 + local.set $2 loop $for-loop|3 - local.get $0 + local.get $2 i32.const 255 i32.and i32.const 100 i32.lt_u if - local.get $2 local.get $0 + local.get $2 call $~lib/set/Set#has i32.eqz if @@ -3011,12 +3104,12 @@ call $~lib/builtins/abort unreachable end - local.get $2 local.get $0 + local.get $2 call $~lib/set/Set#add call $~lib/rt/pure/__release - local.get $2 local.get $0 + local.get $2 call $~lib/set/Set#has i32.eqz if @@ -3027,14 +3120,14 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $2 i32.const 1 i32.add - local.set $0 + local.set $2 br $for-loop|3 end end - local.get $2 + local.get $0 i32.load offset=20 i32.const 100 i32.ne @@ -3046,70 +3139,20 @@ call $~lib/builtins/abort unreachable end - local.get $2 - i32.load offset=8 - local.set $7 - local.get $2 - i32.load offset=16 - local.set $6 - i32.const 16 - i32.const 6 - call $~lib/rt/tlsf/__alloc - call $~lib/rt/pure/__retain - local.get $6 - i32.const 0 - call $~lib/arraybuffer/ArrayBufferView#constructor - local.tee $4 - i32.const 0 - i32.store offset=12 - local.get $4 - local.get $6 - i32.store offset=12 - loop $for-loop|0 - local.get $5 - local.get $6 - i32.lt_s - if - local.get $7 - local.get $5 - i32.const 3 - i32.shl - i32.add - local.tee $8 - i32.load offset=4 - i32.const 1 - i32.and - i32.eqz - if - local.get $1 - local.tee $0 - i32.const 1 - i32.add - local.set $1 - local.get $4 - local.get $0 - local.get $8 - i32.load8_u - call $~lib/array/Array#__set - end - local.get $5 - i32.const 1 - i32.add - local.set $5 - br $for-loop|0 - end - end + local.get $0 + call $~lib/set/Set#values + local.set $2 call $~lib/set/Set#constructor - local.set $0 + local.set $3 loop $for-loop|4 - local.get $3 - local.get $4 + local.get $1 + local.get $2 i32.load offset=12 i32.lt_s if + local.get $0 local.get $2 - local.get $4 - local.get $3 + local.get $1 call $~lib/array/Array#__get call $~lib/set/Set#has i32.eqz @@ -3121,22 +3164,22 @@ call $~lib/builtins/abort unreachable end - local.get $0 - local.get $4 local.get $3 + local.get $2 + local.get $1 call $~lib/array/Array#__get call $~lib/set/Set#add call $~lib/rt/pure/__release - local.get $3 + local.get $1 i32.const 1 i32.add - local.set $3 + local.set $1 br $for-loop|4 end end - local.get $0 + local.get $3 i32.load offset=20 - local.get $2 + local.get $0 i32.load offset=20 i32.ne if @@ -3148,16 +3191,16 @@ unreachable end i32.const 0 - local.set $3 + local.set $1 loop $for-loop|6 - local.get $3 + local.get $1 i32.const 255 i32.and i32.const 50 i32.lt_u if - local.get $2 - local.get $3 + local.get $0 + local.get $1 call $~lib/set/Set#has i32.eqz if @@ -3168,11 +3211,11 @@ call $~lib/builtins/abort unreachable end - local.get $2 - local.get $3 + local.get $0 + local.get $1 call $~lib/set/Set#delete - local.get $2 - local.get $3 + local.get $0 + local.get $1 call $~lib/set/Set#has if i32.const 0 @@ -3182,14 +3225,14 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $1 i32.const 1 i32.add - local.set $3 + local.set $1 br $for-loop|6 end end - local.get $2 + local.get $0 i32.load offset=20 i32.const 50 i32.ne @@ -3202,16 +3245,16 @@ unreachable end i32.const 0 - local.set $3 + local.set $1 loop $for-loop|8 - local.get $3 + local.get $1 i32.const 255 i32.and i32.const 50 i32.lt_u if - local.get $2 - local.get $3 + local.get $0 + local.get $1 call $~lib/set/Set#has if i32.const 0 @@ -3221,12 +3264,12 @@ call $~lib/builtins/abort unreachable end - local.get $2 - local.get $3 + local.get $0 + local.get $1 call $~lib/set/Set#add call $~lib/rt/pure/__release - local.get $2 - local.get $3 + local.get $0 + local.get $1 call $~lib/set/Set#has i32.eqz if @@ -3237,11 +3280,11 @@ call $~lib/builtins/abort unreachable end - local.get $2 - local.get $3 + local.get $0 + local.get $1 call $~lib/set/Set#delete - local.get $2 - local.get $3 + local.get $0 + local.get $1 call $~lib/set/Set#has if i32.const 0 @@ -3251,14 +3294,14 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $1 i32.const 1 i32.add - local.set $3 + local.set $1 br $for-loop|8 end end - local.get $2 + local.get $0 i32.load offset=20 i32.const 50 i32.ne @@ -3270,9 +3313,9 @@ call $~lib/builtins/abort unreachable end - local.get $2 + local.get $0 call $~lib/set/Set#clear - local.get $2 + local.get $0 i32.load offset=20 if i32.const 0 @@ -3282,14 +3325,14 @@ call $~lib/builtins/abort unreachable end - local.get $4 + local.get $2 call $~lib/rt/pure/__release - local.get $0 + local.get $3 call $~lib/rt/pure/__release - local.get $2 + local.get $0 call $~lib/rt/pure/__release ) - (func $~lib/set/Set#constructor (; 42 ;) (result i32) + (func $~lib/set/Set#constructor (; 43 ;) (result i32) (local $0 i32) i32.const 24 i32.const 7 @@ -3317,7 +3360,7 @@ call $~lib/set/Set#clear local.get $0 ) - (func $~lib/util/hash/hash16 (; 43 ;) (param $0 i32) (result i32) + (func $~lib/util/hash/hash16 (; 44 ;) (param $0 i32) (result i32) local.get $0 i32.const 255 i32.and @@ -3332,7 +3375,7 @@ i32.const 16777619 i32.mul ) - (func $~lib/set/Set#find (; 44 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/set/Set#find (; 45 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $0 i32.load local.get $2 @@ -3375,7 +3418,7 @@ end i32.const 0 ) - (func $~lib/set/Set#has (; 45 ;) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/set/Set#has (; 46 ;) (param $0 i32) (param $1 i32) (result i32) local.get $0 local.get $1 local.get $1 @@ -3388,7 +3431,7 @@ i32.const 0 i32.ne ) - (func $~lib/set/Set#rehash (; 46 ;) (param $0 i32) (param $1 i32) + (func $~lib/set/Set#rehash (; 47 ;) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -3519,7 +3562,7 @@ local.get $3 call $~lib/rt/pure/__release ) - (func $~lib/set/Set#add (; 47 ;) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/set/Set#add (; 48 ;) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -3606,7 +3649,7 @@ local.get $0 call $~lib/rt/pure/__retain ) - (func $~lib/array/Array#__set (; 48 ;) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/array/Array#__set (; 49 ;) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) local.get $1 local.get $0 @@ -3617,9 +3660,9 @@ i32.const 0 i32.lt_s if + i32.const 1408 i32.const 1360 - i32.const 1424 - i32.const 109 + i32.const 120 i32.const 21 call $~lib/builtins/abort unreachable @@ -3644,15 +3687,130 @@ local.get $2 i32.store16 ) - (func $~lib/array/Array#__get (; 49 ;) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/set/Set#values (; 50 ;) (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) + local.get $0 + i32.load offset=8 + local.set $8 + local.get $0 + i32.load offset=16 + local.tee $5 + local.set $6 + local.get $5 + i32.const 536870904 + i32.gt_u + if + i32.const 1200 + i32.const 1360 + i32.const 57 + i32.const 59 + call $~lib/builtins/abort + unreachable + end + local.get $6 + i32.const 1 + i32.shl + local.tee $7 + i32.const 0 + call $~lib/rt/tlsf/__alloc + local.tee $1 + local.get $7 + call $~lib/memory/memory.fill + i32.const 16 + i32.const 8 + 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 $9 + i32.ne + if + local.get $2 + call $~lib/rt/pure/__retain + local.set $2 + local.get $9 + 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 + local.get $7 + i32.store offset=8 + local.get $0 + local.get $6 + i32.store offset=12 + loop $for-loop|0 + local.get $4 + local.get $5 + i32.lt_s + if + local.get $8 + local.get $4 + i32.const 3 + i32.shl + i32.add + local.tee $2 + i32.load offset=4 + i32.const 1 + i32.and + i32.eqz + if + local.get $3 + local.tee $1 + i32.const 1 + i32.add + local.set $3 + local.get $0 + local.get $1 + local.get $2 + i32.load16_s + call $~lib/array/Array#__set + end + local.get $4 + i32.const 1 + i32.add + local.set $4 + br $for-loop|0 + end + end + local.get $0 + ) + (func $~lib/array/Array#__get (; 51 ;) (param $0 i32) (param $1 i32) (result i32) local.get $1 local.get $0 i32.load offset=12 i32.ge_u if + i32.const 1408 i32.const 1360 - i32.const 1424 - i32.const 93 + i32.const 104 i32.const 41 call $~lib/builtins/abort unreachable @@ -3665,7 +3823,7 @@ i32.add i32.load16_s ) - (func $~lib/set/Set#delete (; 50 ;) (param $0 i32) (param $1 i32) + (func $~lib/set/Set#delete (; 52 ;) (param $0 i32) (param $1 i32) (local $2 i32) local.get $0 local.get $1 @@ -3728,20 +3886,15 @@ call $~lib/set/Set#rehash end ) - (func $std/set/testNumeric (; 51 ;) + (func $std/set/testNumeric (; 53 ;) (local $0 i32) (local $1 i32) (local $2 i32) (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) call $~lib/set/Set#constructor - local.set $2 + local.set $0 loop $for-loop|1 - local.get $0 + local.get $2 i32.const 16 i32.shl i32.const 16 @@ -3749,8 +3902,8 @@ i32.const 100 i32.lt_s if - local.get $2 local.get $0 + local.get $2 call $~lib/set/Set#has if i32.const 0 @@ -3760,12 +3913,12 @@ call $~lib/builtins/abort unreachable end - local.get $2 local.get $0 + local.get $2 call $~lib/set/Set#add call $~lib/rt/pure/__release - local.get $2 local.get $0 + local.get $2 call $~lib/set/Set#has i32.eqz if @@ -3776,14 +3929,14 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $2 i32.const 1 i32.add - local.set $0 + local.set $2 br $for-loop|1 end end - local.get $2 + local.get $0 i32.load offset=20 i32.const 100 i32.ne @@ -3796,9 +3949,9 @@ unreachable end i32.const 50 - local.set $0 + local.set $2 loop $for-loop|3 - local.get $0 + local.get $2 i32.const 16 i32.shl i32.const 16 @@ -3806,8 +3959,8 @@ i32.const 100 i32.lt_s if - local.get $2 local.get $0 + local.get $2 call $~lib/set/Set#has i32.eqz if @@ -3818,12 +3971,12 @@ call $~lib/builtins/abort unreachable end - local.get $2 local.get $0 + local.get $2 call $~lib/set/Set#add call $~lib/rt/pure/__release - local.get $2 local.get $0 + local.get $2 call $~lib/set/Set#has i32.eqz if @@ -3834,14 +3987,14 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $2 i32.const 1 i32.add - local.set $0 + local.set $2 br $for-loop|3 end end - local.get $2 + local.get $0 i32.load offset=20 i32.const 100 i32.ne @@ -3853,70 +4006,20 @@ call $~lib/builtins/abort unreachable end - local.get $2 - i32.load offset=8 - local.set $7 - local.get $2 - i32.load offset=16 - local.set $6 - i32.const 16 - i32.const 8 - call $~lib/rt/tlsf/__alloc - call $~lib/rt/pure/__retain - local.get $6 - i32.const 1 - call $~lib/arraybuffer/ArrayBufferView#constructor - local.tee $4 - i32.const 0 - i32.store offset=12 - local.get $4 - local.get $6 - i32.store offset=12 - loop $for-loop|0 - local.get $5 - local.get $6 - i32.lt_s - if - local.get $7 - local.get $5 - i32.const 3 - i32.shl - i32.add - local.tee $8 - i32.load offset=4 - i32.const 1 - i32.and - i32.eqz - if - local.get $1 - local.tee $0 - i32.const 1 - i32.add - local.set $1 - local.get $4 - local.get $0 - local.get $8 - i32.load16_s - call $~lib/array/Array#__set - end - local.get $5 - i32.const 1 - i32.add - local.set $5 - br $for-loop|0 - end - end + local.get $0 + call $~lib/set/Set#values + local.set $2 call $~lib/set/Set#constructor - local.set $0 + local.set $3 loop $for-loop|4 - local.get $3 - local.get $4 + local.get $1 + local.get $2 i32.load offset=12 i32.lt_s if + local.get $0 local.get $2 - local.get $4 - local.get $3 + local.get $1 call $~lib/array/Array#__get call $~lib/set/Set#has i32.eqz @@ -3928,22 +4031,22 @@ call $~lib/builtins/abort unreachable end - local.get $0 - local.get $4 local.get $3 + local.get $2 + local.get $1 call $~lib/array/Array#__get call $~lib/set/Set#add call $~lib/rt/pure/__release - local.get $3 + local.get $1 i32.const 1 i32.add - local.set $3 + local.set $1 br $for-loop|4 end end - local.get $0 + local.get $3 i32.load offset=20 - local.get $2 + local.get $0 i32.load offset=20 i32.ne if @@ -3955,9 +4058,9 @@ unreachable end i32.const 0 - local.set $3 + local.set $1 loop $for-loop|6 - local.get $3 + local.get $1 i32.const 16 i32.shl i32.const 16 @@ -3965,8 +4068,8 @@ i32.const 50 i32.lt_s if - local.get $2 - local.get $3 + local.get $0 + local.get $1 call $~lib/set/Set#has i32.eqz if @@ -3977,11 +4080,11 @@ call $~lib/builtins/abort unreachable end - local.get $2 - local.get $3 + local.get $0 + local.get $1 call $~lib/set/Set#delete - local.get $2 - local.get $3 + local.get $0 + local.get $1 call $~lib/set/Set#has if i32.const 0 @@ -3991,14 +4094,14 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $1 i32.const 1 i32.add - local.set $3 + local.set $1 br $for-loop|6 end end - local.get $2 + local.get $0 i32.load offset=20 i32.const 50 i32.ne @@ -4011,9 +4114,9 @@ unreachable end i32.const 0 - local.set $3 + local.set $1 loop $for-loop|8 - local.get $3 + local.get $1 i32.const 16 i32.shl i32.const 16 @@ -4021,8 +4124,8 @@ i32.const 50 i32.lt_s if - local.get $2 - local.get $3 + local.get $0 + local.get $1 call $~lib/set/Set#has if i32.const 0 @@ -4032,12 +4135,12 @@ call $~lib/builtins/abort unreachable end - local.get $2 - local.get $3 + local.get $0 + local.get $1 call $~lib/set/Set#add call $~lib/rt/pure/__release - local.get $2 - local.get $3 + local.get $0 + local.get $1 call $~lib/set/Set#has i32.eqz if @@ -4048,11 +4151,11 @@ call $~lib/builtins/abort unreachable end - local.get $2 - local.get $3 + local.get $0 + local.get $1 call $~lib/set/Set#delete - local.get $2 - local.get $3 + local.get $0 + local.get $1 call $~lib/set/Set#has if i32.const 0 @@ -4062,14 +4165,14 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $1 i32.const 1 i32.add - local.set $3 + local.set $1 br $for-loop|8 end end - local.get $2 + local.get $0 i32.load offset=20 i32.const 50 i32.ne @@ -4081,9 +4184,9 @@ call $~lib/builtins/abort unreachable end - local.get $2 + local.get $0 call $~lib/set/Set#clear - local.get $2 + local.get $0 i32.load offset=20 if i32.const 0 @@ -4093,14 +4196,14 @@ call $~lib/builtins/abort unreachable end - local.get $4 + local.get $2 call $~lib/rt/pure/__release - local.get $0 + local.get $3 call $~lib/rt/pure/__release - local.get $2 + local.get $0 call $~lib/rt/pure/__release ) - (func $~lib/set/Set#constructor (; 52 ;) (result i32) + (func $~lib/set/Set#constructor (; 54 ;) (result i32) (local $0 i32) i32.const 24 i32.const 9 @@ -4128,7 +4231,7 @@ call $~lib/set/Set#clear local.get $0 ) - (func $~lib/set/Set#has (; 53 ;) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/set/Set#has (; 55 ;) (param $0 i32) (param $1 i32) (result i32) local.get $0 local.get $1 local.get $1 @@ -4139,7 +4242,7 @@ i32.const 0 i32.ne ) - (func $~lib/set/Set#rehash (; 54 ;) (param $0 i32) (param $1 i32) + (func $~lib/set/Set#rehash (; 56 ;) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -4270,7 +4373,7 @@ local.get $3 call $~lib/rt/pure/__release ) - (func $~lib/set/Set#add (; 55 ;) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/set/Set#add (; 57 ;) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -4355,15 +4458,130 @@ local.get $0 call $~lib/rt/pure/__retain ) - (func $~lib/array/Array#__get (; 56 ;) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/set/Set#values (; 58 ;) (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) + local.get $0 + i32.load offset=8 + local.set $8 + local.get $0 + i32.load offset=16 + local.tee $5 + local.set $6 + local.get $5 + i32.const 536870904 + i32.gt_u + if + i32.const 1200 + i32.const 1360 + i32.const 57 + i32.const 59 + call $~lib/builtins/abort + unreachable + end + local.get $6 + i32.const 1 + i32.shl + local.tee $7 + i32.const 0 + call $~lib/rt/tlsf/__alloc + local.tee $1 + local.get $7 + call $~lib/memory/memory.fill + i32.const 16 + i32.const 10 + 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 $9 + i32.ne + if + local.get $2 + call $~lib/rt/pure/__retain + local.set $2 + local.get $9 + 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 + local.get $7 + i32.store offset=8 + local.get $0 + local.get $6 + i32.store offset=12 + loop $for-loop|0 + local.get $4 + local.get $5 + i32.lt_s + if + local.get $8 + local.get $4 + i32.const 3 + i32.shl + i32.add + local.tee $2 + i32.load offset=4 + i32.const 1 + i32.and + i32.eqz + if + local.get $3 + local.tee $1 + i32.const 1 + i32.add + local.set $3 + local.get $0 + local.get $1 + local.get $2 + i32.load16_u + call $~lib/array/Array#__set + end + local.get $4 + i32.const 1 + i32.add + local.set $4 + br $for-loop|0 + end + end + local.get $0 + ) + (func $~lib/array/Array#__get (; 59 ;) (param $0 i32) (param $1 i32) (result i32) local.get $1 local.get $0 i32.load offset=12 i32.ge_u if + i32.const 1408 i32.const 1360 - i32.const 1424 - i32.const 93 + i32.const 104 i32.const 41 call $~lib/builtins/abort unreachable @@ -4376,7 +4594,7 @@ i32.add i32.load16_u ) - (func $~lib/set/Set#delete (; 57 ;) (param $0 i32) (param $1 i32) + (func $~lib/set/Set#delete (; 60 ;) (param $0 i32) (param $1 i32) (local $2 i32) local.get $0 local.get $1 @@ -4437,27 +4655,22 @@ call $~lib/set/Set#rehash end ) - (func $std/set/testNumeric (; 58 ;) + (func $std/set/testNumeric (; 61 ;) (local $0 i32) (local $1 i32) (local $2 i32) (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) call $~lib/set/Set#constructor - local.set $2 + local.set $0 loop $for-loop|1 - local.get $0 + local.get $2 i32.const 65535 i32.and i32.const 100 i32.lt_u if - local.get $2 local.get $0 + local.get $2 call $~lib/set/Set#has if i32.const 0 @@ -4467,12 +4680,12 @@ call $~lib/builtins/abort unreachable end - local.get $2 local.get $0 + local.get $2 call $~lib/set/Set#add call $~lib/rt/pure/__release - local.get $2 local.get $0 + local.get $2 call $~lib/set/Set#has i32.eqz if @@ -4483,14 +4696,14 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $2 i32.const 1 i32.add - local.set $0 + local.set $2 br $for-loop|1 end end - local.get $2 + local.get $0 i32.load offset=20 i32.const 100 i32.ne @@ -4503,16 +4716,16 @@ unreachable end i32.const 50 - local.set $0 + local.set $2 loop $for-loop|3 - local.get $0 + local.get $2 i32.const 65535 i32.and i32.const 100 i32.lt_u if - local.get $2 local.get $0 + local.get $2 call $~lib/set/Set#has i32.eqz if @@ -4523,12 +4736,12 @@ call $~lib/builtins/abort unreachable end - local.get $2 local.get $0 + local.get $2 call $~lib/set/Set#add call $~lib/rt/pure/__release - local.get $2 local.get $0 + local.get $2 call $~lib/set/Set#has i32.eqz if @@ -4539,14 +4752,14 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $2 i32.const 1 i32.add - local.set $0 + local.set $2 br $for-loop|3 end end - local.get $2 + local.get $0 i32.load offset=20 i32.const 100 i32.ne @@ -4558,70 +4771,20 @@ call $~lib/builtins/abort unreachable end - local.get $2 - i32.load offset=8 - local.set $7 - local.get $2 - i32.load offset=16 - local.set $6 - i32.const 16 - i32.const 10 - call $~lib/rt/tlsf/__alloc - call $~lib/rt/pure/__retain - local.get $6 - i32.const 1 - call $~lib/arraybuffer/ArrayBufferView#constructor - local.tee $4 - i32.const 0 - i32.store offset=12 - local.get $4 - local.get $6 - i32.store offset=12 - loop $for-loop|0 - local.get $5 - local.get $6 - i32.lt_s - if - local.get $7 - local.get $5 - i32.const 3 - i32.shl - i32.add - local.tee $8 - i32.load offset=4 - i32.const 1 - i32.and - i32.eqz - if - local.get $1 - local.tee $0 - i32.const 1 - i32.add - local.set $1 - local.get $4 - local.get $0 - local.get $8 - i32.load16_u - call $~lib/array/Array#__set - end - local.get $5 - i32.const 1 - i32.add - local.set $5 - br $for-loop|0 - end - end + local.get $0 + call $~lib/set/Set#values + local.set $2 call $~lib/set/Set#constructor - local.set $0 + local.set $3 loop $for-loop|4 - local.get $3 - local.get $4 + local.get $1 + local.get $2 i32.load offset=12 i32.lt_s if + local.get $0 local.get $2 - local.get $4 - local.get $3 + local.get $1 call $~lib/array/Array#__get call $~lib/set/Set#has i32.eqz @@ -4633,22 +4796,22 @@ call $~lib/builtins/abort unreachable end - local.get $0 - local.get $4 local.get $3 + local.get $2 + local.get $1 call $~lib/array/Array#__get call $~lib/set/Set#add call $~lib/rt/pure/__release - local.get $3 + local.get $1 i32.const 1 i32.add - local.set $3 + local.set $1 br $for-loop|4 end end - local.get $0 + local.get $3 i32.load offset=20 - local.get $2 + local.get $0 i32.load offset=20 i32.ne if @@ -4660,16 +4823,16 @@ unreachable end i32.const 0 - local.set $3 + local.set $1 loop $for-loop|6 - local.get $3 + local.get $1 i32.const 65535 i32.and i32.const 50 i32.lt_u if - local.get $2 - local.get $3 + local.get $0 + local.get $1 call $~lib/set/Set#has i32.eqz if @@ -4680,11 +4843,11 @@ call $~lib/builtins/abort unreachable end - local.get $2 - local.get $3 + local.get $0 + local.get $1 call $~lib/set/Set#delete - local.get $2 - local.get $3 + local.get $0 + local.get $1 call $~lib/set/Set#has if i32.const 0 @@ -4694,14 +4857,14 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $1 i32.const 1 i32.add - local.set $3 + local.set $1 br $for-loop|6 end end - local.get $2 + local.get $0 i32.load offset=20 i32.const 50 i32.ne @@ -4714,16 +4877,16 @@ unreachable end i32.const 0 - local.set $3 + local.set $1 loop $for-loop|8 - local.get $3 + local.get $1 i32.const 65535 i32.and i32.const 50 i32.lt_u if - local.get $2 - local.get $3 + local.get $0 + local.get $1 call $~lib/set/Set#has if i32.const 0 @@ -4733,12 +4896,12 @@ call $~lib/builtins/abort unreachable end - local.get $2 - local.get $3 + local.get $0 + local.get $1 call $~lib/set/Set#add call $~lib/rt/pure/__release - local.get $2 - local.get $3 + local.get $0 + local.get $1 call $~lib/set/Set#has i32.eqz if @@ -4749,11 +4912,11 @@ call $~lib/builtins/abort unreachable end - local.get $2 - local.get $3 + local.get $0 + local.get $1 call $~lib/set/Set#delete - local.get $2 - local.get $3 + local.get $0 + local.get $1 call $~lib/set/Set#has if i32.const 0 @@ -4763,14 +4926,14 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $1 i32.const 1 i32.add - local.set $3 + local.set $1 br $for-loop|8 end end - local.get $2 + local.get $0 i32.load offset=20 i32.const 50 i32.ne @@ -4782,9 +4945,9 @@ call $~lib/builtins/abort unreachable end - local.get $2 + local.get $0 call $~lib/set/Set#clear - local.get $2 + local.get $0 i32.load offset=20 if i32.const 0 @@ -4794,14 +4957,14 @@ call $~lib/builtins/abort unreachable end - local.get $4 + local.get $2 call $~lib/rt/pure/__release - local.get $0 + local.get $3 call $~lib/rt/pure/__release - local.get $2 + local.get $0 call $~lib/rt/pure/__release ) - (func $~lib/set/Set#constructor (; 59 ;) (result i32) + (func $~lib/set/Set#constructor (; 62 ;) (result i32) (local $0 i32) i32.const 24 i32.const 11 @@ -4829,7 +4992,7 @@ call $~lib/set/Set#clear local.get $0 ) - (func $~lib/util/hash/hash32 (; 60 ;) (param $0 i32) (result i32) + (func $~lib/util/hash/hash32 (; 63 ;) (param $0 i32) (result i32) local.get $0 i32.const 255 i32.and @@ -4860,7 +5023,7 @@ i32.const 16777619 i32.mul ) - (func $~lib/set/Set#find (; 61 ;) (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.get $0 i32.load local.get $2 @@ -4901,7 +5064,7 @@ end i32.const 0 ) - (func $~lib/set/Set#has (; 62 ;) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/set/Set#has (; 65 ;) (param $0 i32) (param $1 i32) (result i32) local.get $0 local.get $1 local.get $1 @@ -4910,7 +5073,7 @@ i32.const 0 i32.ne ) - (func $~lib/set/Set#rehash (; 63 ;) (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) @@ -5041,7 +5204,7 @@ local.get $3 call $~lib/rt/pure/__release ) - (func $~lib/set/Set#add (; 64 ;) (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) @@ -5124,7 +5287,7 @@ local.get $0 call $~lib/rt/pure/__retain ) - (func $~lib/array/Array#__set (; 65 ;) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/array/Array#__set (; 68 ;) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) local.get $1 local.get $0 @@ -5135,9 +5298,9 @@ i32.const 0 i32.lt_s if + i32.const 1408 i32.const 1360 - i32.const 1424 - i32.const 109 + i32.const 120 i32.const 21 call $~lib/builtins/abort unreachable @@ -5162,64 +5325,179 @@ local.get $2 i32.store ) - (func $~lib/array/Array#__get (; 66 ;) (param $0 i32) (param $1 i32) (result i32) - local.get $1 + (func $~lib/set/Set#values (; 69 ;) (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) local.get $0 - i32.load offset=12 - i32.ge_u + i32.load offset=8 + local.set $8 + local.get $0 + i32.load offset=16 + local.tee $5 + local.set $6 + local.get $5 + i32.const 268435452 + i32.gt_u if + i32.const 1200 i32.const 1360 - i32.const 1424 - i32.const 93 - i32.const 41 + i32.const 57 + i32.const 59 call $~lib/builtins/abort unreachable end - local.get $0 - i32.load offset=4 - local.get $1 + local.get $6 i32.const 2 i32.shl - i32.add - i32.load - ) - (func $~lib/set/Set#delete (; 67 ;) (param $0 i32) (param $1 i32) - (local $2 i32) + local.tee $7 + i32.const 0 + call $~lib/rt/tlsf/__alloc + local.tee $1 + local.get $7 + 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 - call $~lib/util/hash/hash32 - call $~lib/set/Set#find - local.tee $1 - i32.eqz + local.get $0 + i32.load + local.tee $9 + i32.ne if - return + local.get $2 + call $~lib/rt/pure/__retain + local.set $2 + local.get $9 + call $~lib/rt/pure/__release end - local.get $1 - local.get $1 - i32.load offset=4 - i32.const 1 - i32.or - i32.store offset=4 local.get $0 + local.get $2 + i32.store local.get $0 - i32.load offset=20 - i32.const 1 - i32.sub - i32.store offset=20 + local.get $1 + i32.store offset=4 local.get $0 - i32.load offset=4 - i32.const 1 - i32.shr_u - local.tee $2 - i32.const 1 - i32.add - i32.const 4 + local.get $7 + i32.store offset=8 local.get $0 - i32.load offset=20 - local.tee $1 - i32.const 4 - local.get $1 + local.get $6 + i32.store offset=12 + loop $for-loop|0 + local.get $4 + local.get $5 + i32.lt_s + if + local.get $8 + local.get $4 + i32.const 3 + i32.shl + i32.add + local.tee $2 + i32.load offset=4 + i32.const 1 + i32.and + i32.eqz + if + local.get $3 + local.tee $1 + i32.const 1 + i32.add + local.set $3 + local.get $0 + local.get $1 + local.get $2 + i32.load + call $~lib/array/Array#__set + end + local.get $4 + i32.const 1 + i32.add + local.set $4 + br $for-loop|0 + end + end + local.get $0 + ) + (func $~lib/array/Array#__get (; 70 ;) (param $0 i32) (param $1 i32) (result i32) + local.get $1 + local.get $0 + i32.load offset=12 + i32.ge_u + if + i32.const 1408 + i32.const 1360 + i32.const 104 + i32.const 41 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 2 + i32.shl + i32.add + i32.load + ) + (func $~lib/set/Set#delete (; 71 ;) (param $0 i32) (param $1 i32) + (local $2 i32) + local.get $0 + local.get $1 + local.get $1 + call $~lib/util/hash/hash32 + call $~lib/set/Set#find + local.tee $1 + i32.eqz + if + return + end + local.get $1 + local.get $1 + i32.load offset=4 + i32.const 1 + i32.or + i32.store offset=4 + local.get $0 + local.get $0 + i32.load offset=20 + i32.const 1 + i32.sub + i32.store offset=20 + local.get $0 + i32.load offset=4 + i32.const 1 + i32.shr_u + local.tee $2 + i32.const 1 + i32.add + i32.const 4 + local.get $0 + i32.load offset=20 + local.tee $1 + i32.const 4 + local.get $1 i32.gt_u select i32.ge_u @@ -5242,25 +5520,20 @@ call $~lib/set/Set#rehash end ) - (func $std/set/testNumeric (; 68 ;) + (func $std/set/testNumeric (; 72 ;) (local $0 i32) (local $1 i32) (local $2 i32) (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) call $~lib/set/Set#constructor - local.set $2 + local.set $0 loop $for-loop|0 - local.get $0 + local.get $2 i32.const 100 i32.lt_s if - local.get $2 local.get $0 + local.get $2 call $~lib/set/Set#has if i32.const 0 @@ -5270,12 +5543,12 @@ call $~lib/builtins/abort unreachable end - local.get $2 local.get $0 + local.get $2 call $~lib/set/Set#add call $~lib/rt/pure/__release - local.get $2 local.get $0 + local.get $2 call $~lib/set/Set#has i32.eqz if @@ -5286,14 +5559,14 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $2 i32.const 1 i32.add - local.set $0 + local.set $2 br $for-loop|0 end end - local.get $2 + local.get $0 i32.load offset=20 i32.const 100 i32.ne @@ -5306,14 +5579,14 @@ unreachable end i32.const 50 - local.set $0 + local.set $2 loop $for-loop|1 - local.get $0 + local.get $2 i32.const 100 i32.lt_s if - local.get $2 local.get $0 + local.get $2 call $~lib/set/Set#has i32.eqz if @@ -5324,12 +5597,12 @@ call $~lib/builtins/abort unreachable end - local.get $2 local.get $0 + local.get $2 call $~lib/set/Set#add call $~lib/rt/pure/__release - local.get $2 local.get $0 + local.get $2 call $~lib/set/Set#has i32.eqz if @@ -5340,14 +5613,14 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $2 i32.const 1 i32.add - local.set $0 + local.set $2 br $for-loop|1 end end - local.get $2 + local.get $0 i32.load offset=20 i32.const 100 i32.ne @@ -5359,70 +5632,20 @@ call $~lib/builtins/abort unreachable end - local.get $2 - i32.load offset=8 - local.set $7 - local.get $2 - i32.load offset=16 - local.set $6 - i32.const 16 - i32.const 12 - call $~lib/rt/tlsf/__alloc - call $~lib/rt/pure/__retain - local.get $6 - i32.const 2 - call $~lib/arraybuffer/ArrayBufferView#constructor - local.tee $4 - i32.const 0 - i32.store offset=12 - local.get $4 - local.get $6 - i32.store offset=12 - loop $for-loop|00 - local.get $5 - local.get $6 - i32.lt_s - if - local.get $7 - local.get $5 - i32.const 3 - i32.shl - i32.add - local.tee $8 - i32.load offset=4 - i32.const 1 - i32.and - i32.eqz - if - local.get $1 - local.tee $0 - i32.const 1 - i32.add - local.set $1 - local.get $4 - local.get $0 - local.get $8 - i32.load - call $~lib/array/Array#__set - end - local.get $5 - i32.const 1 - i32.add - local.set $5 - br $for-loop|00 - end - end + local.get $0 + call $~lib/set/Set#values + local.set $2 call $~lib/set/Set#constructor - local.set $0 + local.set $3 loop $for-loop|2 - local.get $3 - local.get $4 + local.get $1 + local.get $2 i32.load offset=12 i32.lt_s if + local.get $0 local.get $2 - local.get $4 - local.get $3 + local.get $1 call $~lib/array/Array#__get call $~lib/set/Set#has i32.eqz @@ -5434,22 +5657,22 @@ call $~lib/builtins/abort unreachable end - local.get $0 - local.get $4 local.get $3 + local.get $2 + local.get $1 call $~lib/array/Array#__get call $~lib/set/Set#add call $~lib/rt/pure/__release - local.get $3 + local.get $1 i32.const 1 i32.add - local.set $3 + local.set $1 br $for-loop|2 end end - local.get $0 + local.get $3 i32.load offset=20 - local.get $2 + local.get $0 i32.load offset=20 i32.ne if @@ -5461,14 +5684,14 @@ unreachable end i32.const 0 - local.set $3 + local.set $1 loop $for-loop|3 - local.get $3 + local.get $1 i32.const 50 i32.lt_s if - local.get $2 - local.get $3 + local.get $0 + local.get $1 call $~lib/set/Set#has i32.eqz if @@ -5479,11 +5702,11 @@ call $~lib/builtins/abort unreachable end - local.get $2 - local.get $3 + local.get $0 + local.get $1 call $~lib/set/Set#delete - local.get $2 - local.get $3 + local.get $0 + local.get $1 call $~lib/set/Set#has if i32.const 0 @@ -5493,14 +5716,14 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $1 i32.const 1 i32.add - local.set $3 + local.set $1 br $for-loop|3 end end - local.get $2 + local.get $0 i32.load offset=20 i32.const 50 i32.ne @@ -5513,14 +5736,14 @@ unreachable end i32.const 0 - local.set $3 + local.set $1 loop $for-loop|4 - local.get $3 + local.get $1 i32.const 50 i32.lt_s if - local.get $2 - local.get $3 + local.get $0 + local.get $1 call $~lib/set/Set#has if i32.const 0 @@ -5530,12 +5753,12 @@ call $~lib/builtins/abort unreachable end - local.get $2 - local.get $3 + local.get $0 + local.get $1 call $~lib/set/Set#add call $~lib/rt/pure/__release - local.get $2 - local.get $3 + local.get $0 + local.get $1 call $~lib/set/Set#has i32.eqz if @@ -5546,11 +5769,11 @@ call $~lib/builtins/abort unreachable end - local.get $2 - local.get $3 + local.get $0 + local.get $1 call $~lib/set/Set#delete - local.get $2 - local.get $3 + local.get $0 + local.get $1 call $~lib/set/Set#has if i32.const 0 @@ -5560,14 +5783,14 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $1 i32.const 1 i32.add - local.set $3 + local.set $1 br $for-loop|4 end end - local.get $2 + local.get $0 i32.load offset=20 i32.const 50 i32.ne @@ -5579,9 +5802,9 @@ call $~lib/builtins/abort unreachable end - local.get $2 + local.get $0 call $~lib/set/Set#clear - local.get $2 + local.get $0 i32.load offset=20 if i32.const 0 @@ -5591,14 +5814,14 @@ call $~lib/builtins/abort unreachable end - local.get $4 + local.get $2 call $~lib/rt/pure/__release - local.get $0 + local.get $3 call $~lib/rt/pure/__release - local.get $2 + local.get $0 call $~lib/rt/pure/__release ) - (func $~lib/set/Set#constructor (; 69 ;) (result i32) + (func $~lib/set/Set#constructor (; 73 ;) (result i32) (local $0 i32) i32.const 24 i32.const 13 @@ -5626,8 +5849,7 @@ call $~lib/set/Set#clear local.get $0 ) - (func $std/set/testNumeric (; 70 ;) - (local $0 i32) + (func $~lib/set/Set#values (; 74 ;) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -5636,15 +5858,126 @@ (local $6 i32) (local $7 i32) (local $8 i32) - call $~lib/set/Set#constructor + (local $9 i32) + local.get $0 + i32.load offset=8 + local.set $8 + local.get $0 + i32.load offset=16 + local.tee $5 + local.set $6 + local.get $5 + i32.const 268435452 + i32.gt_u + if + i32.const 1200 + i32.const 1360 + i32.const 57 + i32.const 59 + call $~lib/builtins/abort + unreachable + end + local.get $6 + i32.const 2 + i32.shl + local.tee $7 + i32.const 0 + call $~lib/rt/tlsf/__alloc + local.tee $1 + local.get $7 + call $~lib/memory/memory.fill + i32.const 16 + i32.const 14 + 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 $9 + i32.ne + if + local.get $2 + call $~lib/rt/pure/__retain + local.set $2 + local.get $9 + 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 + local.get $7 + i32.store offset=8 + local.get $0 + local.get $6 + i32.store offset=12 loop $for-loop|0 - local.get $0 + local.get $4 + local.get $5 + i32.lt_s + if + local.get $8 + local.get $4 + i32.const 3 + i32.shl + i32.add + local.tee $2 + i32.load offset=4 + i32.const 1 + i32.and + i32.eqz + if + local.get $3 + local.tee $1 + i32.const 1 + i32.add + local.set $3 + local.get $0 + local.get $1 + local.get $2 + i32.load + call $~lib/array/Array#__set + end + local.get $4 + i32.const 1 + i32.add + local.set $4 + br $for-loop|0 + end + end + local.get $0 + ) + (func $std/set/testNumeric (; 75 ;) + (local $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + call $~lib/set/Set#constructor + local.set $0 + loop $for-loop|0 + local.get $2 i32.const 100 i32.lt_u if - local.get $2 local.get $0 + local.get $2 call $~lib/set/Set#has if i32.const 0 @@ -5654,12 +5987,12 @@ call $~lib/builtins/abort unreachable end - local.get $2 local.get $0 + local.get $2 call $~lib/set/Set#add call $~lib/rt/pure/__release - local.get $2 local.get $0 + local.get $2 call $~lib/set/Set#has i32.eqz if @@ -5670,14 +6003,14 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $2 i32.const 1 i32.add - local.set $0 + local.set $2 br $for-loop|0 end end - local.get $2 + local.get $0 i32.load offset=20 i32.const 100 i32.ne @@ -5690,14 +6023,14 @@ unreachable end i32.const 50 - local.set $0 + local.set $2 loop $for-loop|1 - local.get $0 + local.get $2 i32.const 100 i32.lt_u if - local.get $2 local.get $0 + local.get $2 call $~lib/set/Set#has i32.eqz if @@ -5708,12 +6041,12 @@ call $~lib/builtins/abort unreachable end - local.get $2 local.get $0 + local.get $2 call $~lib/set/Set#add call $~lib/rt/pure/__release - local.get $2 local.get $0 + local.get $2 call $~lib/set/Set#has i32.eqz if @@ -5724,14 +6057,14 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $2 i32.const 1 i32.add - local.set $0 + local.set $2 br $for-loop|1 end end - local.get $2 + local.get $0 i32.load offset=20 i32.const 100 i32.ne @@ -5743,70 +6076,20 @@ call $~lib/builtins/abort unreachable end - local.get $2 - i32.load offset=8 - local.set $7 - local.get $2 - i32.load offset=16 - local.set $6 - i32.const 16 - i32.const 14 - call $~lib/rt/tlsf/__alloc - call $~lib/rt/pure/__retain - local.get $6 - i32.const 2 - call $~lib/arraybuffer/ArrayBufferView#constructor - local.tee $4 - i32.const 0 - i32.store offset=12 - local.get $4 - local.get $6 - i32.store offset=12 - loop $for-loop|00 - local.get $5 - local.get $6 - i32.lt_s - if - local.get $7 - local.get $5 - i32.const 3 - i32.shl - i32.add - local.tee $8 - i32.load offset=4 - i32.const 1 - i32.and - i32.eqz - if - local.get $1 - local.tee $0 - i32.const 1 - i32.add - local.set $1 - local.get $4 - local.get $0 - local.get $8 - i32.load - call $~lib/array/Array#__set - end - local.get $5 - i32.const 1 - i32.add - local.set $5 - br $for-loop|00 - end - end + local.get $0 + call $~lib/set/Set#values + local.set $2 call $~lib/set/Set#constructor - local.set $0 + local.set $3 loop $for-loop|2 - local.get $3 - local.get $4 + local.get $1 + local.get $2 i32.load offset=12 i32.lt_s if + local.get $0 local.get $2 - local.get $4 - local.get $3 + local.get $1 call $~lib/array/Array#__get call $~lib/set/Set#has i32.eqz @@ -5818,22 +6101,22 @@ call $~lib/builtins/abort unreachable end - local.get $0 - local.get $4 local.get $3 + local.get $2 + local.get $1 call $~lib/array/Array#__get call $~lib/set/Set#add call $~lib/rt/pure/__release - local.get $3 + local.get $1 i32.const 1 i32.add - local.set $3 + local.set $1 br $for-loop|2 end end - local.get $0 + local.get $3 i32.load offset=20 - local.get $2 + local.get $0 i32.load offset=20 i32.ne if @@ -5845,14 +6128,14 @@ unreachable end i32.const 0 - local.set $3 + local.set $1 loop $for-loop|3 - local.get $3 + local.get $1 i32.const 50 i32.lt_u if - local.get $2 - local.get $3 + local.get $0 + local.get $1 call $~lib/set/Set#has i32.eqz if @@ -5863,11 +6146,11 @@ call $~lib/builtins/abort unreachable end - local.get $2 - local.get $3 + local.get $0 + local.get $1 call $~lib/set/Set#delete - local.get $2 - local.get $3 + local.get $0 + local.get $1 call $~lib/set/Set#has if i32.const 0 @@ -5877,14 +6160,14 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $1 i32.const 1 i32.add - local.set $3 + local.set $1 br $for-loop|3 end end - local.get $2 + local.get $0 i32.load offset=20 i32.const 50 i32.ne @@ -5897,14 +6180,14 @@ unreachable end i32.const 0 - local.set $3 + local.set $1 loop $for-loop|4 - local.get $3 + local.get $1 i32.const 50 i32.lt_u if - local.get $2 - local.get $3 + local.get $0 + local.get $1 call $~lib/set/Set#has if i32.const 0 @@ -5914,12 +6197,12 @@ call $~lib/builtins/abort unreachable end - local.get $2 - local.get $3 + local.get $0 + local.get $1 call $~lib/set/Set#add call $~lib/rt/pure/__release - local.get $2 - local.get $3 + local.get $0 + local.get $1 call $~lib/set/Set#has i32.eqz if @@ -5930,11 +6213,11 @@ call $~lib/builtins/abort unreachable end - local.get $2 - local.get $3 + local.get $0 + local.get $1 call $~lib/set/Set#delete - local.get $2 - local.get $3 + local.get $0 + local.get $1 call $~lib/set/Set#has if i32.const 0 @@ -5944,14 +6227,14 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $1 i32.const 1 i32.add - local.set $3 + local.set $1 br $for-loop|4 end end - local.get $2 + local.get $0 i32.load offset=20 i32.const 50 i32.ne @@ -5963,9 +6246,9 @@ call $~lib/builtins/abort unreachable end - local.get $2 + local.get $0 call $~lib/set/Set#clear - local.get $2 + local.get $0 i32.load offset=20 if i32.const 0 @@ -5975,14 +6258,14 @@ call $~lib/builtins/abort unreachable end - local.get $4 + local.get $2 call $~lib/rt/pure/__release - local.get $0 + local.get $3 call $~lib/rt/pure/__release - local.get $2 + local.get $0 call $~lib/rt/pure/__release ) - (func $~lib/set/Set#clear (; 71 ;) (param $0 i32) + (func $~lib/set/Set#clear (; 76 ;) (param $0 i32) (local $1 i32) i32.const 16 call $~lib/arraybuffer/ArrayBuffer#constructor @@ -6015,7 +6298,7 @@ i32.const 0 i32.store offset=20 ) - (func $~lib/set/Set#constructor (; 72 ;) (result i32) + (func $~lib/set/Set#constructor (; 77 ;) (result i32) (local $0 i32) i32.const 24 i32.const 15 @@ -6043,7 +6326,7 @@ call $~lib/set/Set#clear local.get $0 ) - (func $~lib/util/hash/hash64 (; 73 ;) (param $0 i64) (result i32) + (func $~lib/util/hash/hash64 (; 78 ;) (param $0 i64) (result i32) (local $1 i32) local.get $0 i32.wrap_i64 @@ -6109,7 +6392,7 @@ i32.const 16777619 i32.mul ) - (func $~lib/set/Set#find (; 74 ;) (param $0 i32) (param $1 i64) (param $2 i32) (result i32) + (func $~lib/set/Set#find (; 79 ;) (param $0 i32) (param $1 i64) (param $2 i32) (result i32) local.get $0 i32.load local.get $2 @@ -6150,7 +6433,7 @@ end i32.const 0 ) - (func $~lib/set/Set#has (; 75 ;) (param $0 i32) (param $1 i64) (result i32) + (func $~lib/set/Set#has (; 80 ;) (param $0 i32) (param $1 i64) (result i32) local.get $0 local.get $1 local.get $1 @@ -6159,7 +6442,7 @@ i32.const 0 i32.ne ) - (func $~lib/set/Set#rehash (; 76 ;) (param $0 i32) (param $1 i32) + (func $~lib/set/Set#rehash (; 81 ;) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -6290,7 +6573,7 @@ local.get $3 call $~lib/rt/pure/__release ) - (func $~lib/set/Set#add (; 77 ;) (param $0 i32) (param $1 i64) (result i32) + (func $~lib/set/Set#add (; 82 ;) (param $0 i32) (param $1 i64) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -6373,7 +6656,7 @@ local.get $0 call $~lib/rt/pure/__retain ) - (func $~lib/array/Array#__set (; 78 ;) (param $0 i32) (param $1 i32) (param $2 i64) + (func $~lib/array/Array#__set (; 83 ;) (param $0 i32) (param $1 i32) (param $2 i64) (local $3 i32) local.get $1 local.get $0 @@ -6384,9 +6667,9 @@ i32.const 0 i32.lt_s if + i32.const 1408 i32.const 1360 - i32.const 1424 - i32.const 109 + i32.const 120 i32.const 21 call $~lib/builtins/abort unreachable @@ -6411,15 +6694,130 @@ local.get $2 i64.store ) - (func $~lib/array/Array#__get (; 79 ;) (param $0 i32) (param $1 i32) (result i64) + (func $~lib/set/Set#values (; 84 ;) (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) + local.get $0 + i32.load offset=8 + local.set $8 + local.get $0 + i32.load offset=16 + local.tee $5 + local.set $6 + local.get $5 + i32.const 134217726 + i32.gt_u + if + i32.const 1200 + i32.const 1360 + i32.const 57 + i32.const 59 + call $~lib/builtins/abort + unreachable + end + local.get $6 + i32.const 3 + i32.shl + local.tee $7 + i32.const 0 + call $~lib/rt/tlsf/__alloc + local.tee $1 + local.get $7 + 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 $9 + i32.ne + if + local.get $2 + call $~lib/rt/pure/__retain + local.set $2 + local.get $9 + 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 + local.get $7 + i32.store offset=8 + local.get $0 + local.get $6 + i32.store offset=12 + loop $for-loop|0 + local.get $4 + local.get $5 + i32.lt_s + if + local.get $8 + local.get $4 + i32.const 4 + i32.shl + i32.add + local.tee $2 + i32.load offset=8 + i32.const 1 + i32.and + i32.eqz + if + local.get $3 + local.tee $1 + i32.const 1 + i32.add + local.set $3 + local.get $0 + local.get $1 + local.get $2 + i64.load + call $~lib/array/Array#__set + end + local.get $4 + i32.const 1 + i32.add + local.set $4 + br $for-loop|0 + end + end + local.get $0 + ) + (func $~lib/array/Array#__get (; 85 ;) (param $0 i32) (param $1 i32) (result i64) local.get $1 local.get $0 i32.load offset=12 i32.ge_u if + i32.const 1408 i32.const 1360 - i32.const 1424 - i32.const 93 + i32.const 104 i32.const 41 call $~lib/builtins/abort unreachable @@ -6432,7 +6830,7 @@ i32.add i64.load ) - (func $~lib/set/Set#delete (; 80 ;) (param $0 i32) (param $1 i64) + (func $~lib/set/Set#delete (; 86 ;) (param $0 i32) (param $1 i64) (local $2 i32) (local $3 i32) local.get $0 @@ -6492,26 +6890,21 @@ call $~lib/set/Set#rehash end ) - (func $std/set/testNumeric (; 81 ;) - (local $0 i32) + (func $std/set/testNumeric (; 87 ;) + (local $0 i64) (local $1 i32) - (local $2 i64) + (local $2 i32) (local $3 i32) (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) call $~lib/set/Set#constructor - local.set $3 + local.set $1 loop $for-loop|0 - local.get $2 + local.get $0 i64.const 100 i64.lt_s if - local.get $3 - local.get $2 + local.get $1 + local.get $0 call $~lib/set/Set#has if i32.const 0 @@ -6521,12 +6914,12 @@ call $~lib/builtins/abort unreachable end - local.get $3 - local.get $2 + local.get $1 + local.get $0 call $~lib/set/Set#add call $~lib/rt/pure/__release - local.get $3 - local.get $2 + local.get $1 + local.get $0 call $~lib/set/Set#has i32.eqz if @@ -6537,14 +6930,14 @@ call $~lib/builtins/abort unreachable end - local.get $2 + local.get $0 i64.const 1 i64.add - local.set $2 + local.set $0 br $for-loop|0 end end - local.get $3 + local.get $1 i32.load offset=20 i32.const 100 i32.ne @@ -6557,14 +6950,14 @@ unreachable end i64.const 50 - local.set $2 + local.set $0 loop $for-loop|1 - local.get $2 + local.get $0 i64.const 100 i64.lt_s if - local.get $3 - local.get $2 + local.get $1 + local.get $0 call $~lib/set/Set#has i32.eqz if @@ -6575,12 +6968,12 @@ call $~lib/builtins/abort unreachable end - local.get $3 - local.get $2 + local.get $1 + local.get $0 call $~lib/set/Set#add call $~lib/rt/pure/__release - local.get $3 - local.get $2 + local.get $1 + local.get $0 call $~lib/set/Set#has i32.eqz if @@ -6591,14 +6984,14 @@ call $~lib/builtins/abort unreachable end - local.get $2 + local.get $0 i64.const 1 i64.add - local.set $2 + local.set $0 br $for-loop|1 end end - local.get $3 + local.get $1 i32.load offset=20 i32.const 100 i32.ne @@ -6610,70 +7003,20 @@ call $~lib/builtins/abort unreachable end - local.get $3 - i32.load offset=8 - local.set $8 - local.get $3 - i32.load offset=16 - local.set $7 - i32.const 16 - i32.const 16 - call $~lib/rt/tlsf/__alloc - call $~lib/rt/pure/__retain - local.get $7 - i32.const 3 - call $~lib/arraybuffer/ArrayBufferView#constructor - local.tee $4 - i32.const 0 - i32.store offset=12 - local.get $4 - local.get $7 - i32.store offset=12 - loop $for-loop|00 - local.get $5 - local.get $7 - i32.lt_s - if - local.get $8 - local.get $5 - i32.const 4 - i32.shl - i32.add - local.tee $9 - i32.load offset=8 - i32.const 1 - i32.and - i32.eqz - if - local.get $1 - local.tee $0 - i32.const 1 - i32.add - local.set $1 - local.get $4 - local.get $0 - local.get $9 - i64.load - call $~lib/array/Array#__set - end - local.get $5 - i32.const 1 - i32.add - local.set $5 - br $for-loop|00 - end - end + local.get $1 + call $~lib/set/Set#values + local.set $2 call $~lib/set/Set#constructor - local.set $0 + local.set $4 loop $for-loop|2 - local.get $6 - local.get $4 + local.get $3 + local.get $2 i32.load offset=12 i32.lt_s if + local.get $1 + local.get $2 local.get $3 - local.get $4 - local.get $6 call $~lib/array/Array#__get call $~lib/set/Set#has i32.eqz @@ -6685,22 +7028,22 @@ call $~lib/builtins/abort unreachable end - local.get $0 local.get $4 - local.get $6 + local.get $2 + local.get $3 call $~lib/array/Array#__get call $~lib/set/Set#add call $~lib/rt/pure/__release - local.get $6 + local.get $3 i32.const 1 i32.add - local.set $6 + local.set $3 br $for-loop|2 end end - local.get $0 + local.get $4 i32.load offset=20 - local.get $3 + local.get $1 i32.load offset=20 i32.ne if @@ -6712,14 +7055,14 @@ unreachable end i64.const 0 - local.set $2 + local.set $0 loop $for-loop|3 - local.get $2 + local.get $0 i64.const 50 i64.lt_s if - local.get $3 - local.get $2 + local.get $1 + local.get $0 call $~lib/set/Set#has i32.eqz if @@ -6730,11 +7073,11 @@ call $~lib/builtins/abort unreachable end - local.get $3 - local.get $2 + local.get $1 + local.get $0 call $~lib/set/Set#delete - local.get $3 - local.get $2 + local.get $1 + local.get $0 call $~lib/set/Set#has if i32.const 0 @@ -6744,14 +7087,14 @@ call $~lib/builtins/abort unreachable end - local.get $2 + local.get $0 i64.const 1 i64.add - local.set $2 + local.set $0 br $for-loop|3 end end - local.get $3 + local.get $1 i32.load offset=20 i32.const 50 i32.ne @@ -6764,14 +7107,14 @@ unreachable end i64.const 0 - local.set $2 + local.set $0 loop $for-loop|4 - local.get $2 + local.get $0 i64.const 50 i64.lt_s if - local.get $3 - local.get $2 + local.get $1 + local.get $0 call $~lib/set/Set#has if i32.const 0 @@ -6781,12 +7124,12 @@ call $~lib/builtins/abort unreachable end - local.get $3 - local.get $2 + local.get $1 + local.get $0 call $~lib/set/Set#add call $~lib/rt/pure/__release - local.get $3 - local.get $2 + local.get $1 + local.get $0 call $~lib/set/Set#has i32.eqz if @@ -6797,11 +7140,11 @@ call $~lib/builtins/abort unreachable end - local.get $3 - local.get $2 + local.get $1 + local.get $0 call $~lib/set/Set#delete - local.get $3 - local.get $2 + local.get $1 + local.get $0 call $~lib/set/Set#has if i32.const 0 @@ -6811,14 +7154,14 @@ call $~lib/builtins/abort unreachable end - local.get $2 + local.get $0 i64.const 1 i64.add - local.set $2 + local.set $0 br $for-loop|4 end end - local.get $3 + local.get $1 i32.load offset=20 i32.const 50 i32.ne @@ -6830,9 +7173,9 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $1 call $~lib/set/Set#clear - local.get $3 + local.get $1 i32.load offset=20 if i32.const 0 @@ -6842,14 +7185,14 @@ call $~lib/builtins/abort unreachable end - local.get $4 + local.get $2 call $~lib/rt/pure/__release - local.get $0 + local.get $4 call $~lib/rt/pure/__release - local.get $3 + local.get $1 call $~lib/rt/pure/__release ) - (func $~lib/set/Set#constructor (; 82 ;) (result i32) + (func $~lib/set/Set#constructor (; 88 ;) (result i32) (local $0 i32) i32.const 24 i32.const 17 @@ -6877,10 +7220,9 @@ call $~lib/set/Set#clear local.get $0 ) - (func $std/set/testNumeric (; 83 ;) - (local $0 i32) + (func $~lib/set/Set#values (; 89 ;) (param $0 i32) (result i32) (local $1 i32) - (local $2 i64) + (local $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -6888,15 +7230,126 @@ (local $7 i32) (local $8 i32) (local $9 i32) + local.get $0 + i32.load offset=8 + local.set $8 + local.get $0 + i32.load offset=16 + local.tee $5 + local.set $6 + local.get $5 + i32.const 134217726 + i32.gt_u + if + i32.const 1200 + i32.const 1360 + i32.const 57 + i32.const 59 + call $~lib/builtins/abort + unreachable + end + local.get $6 + i32.const 3 + i32.shl + local.tee $7 + i32.const 0 + call $~lib/rt/tlsf/__alloc + local.tee $1 + local.get $7 + call $~lib/memory/memory.fill + i32.const 16 + i32.const 18 + 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 $9 + i32.ne + if + local.get $2 + call $~lib/rt/pure/__retain + local.set $2 + local.get $9 + 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 + local.get $7 + i32.store offset=8 + local.get $0 + local.get $6 + i32.store offset=12 + loop $for-loop|0 + local.get $4 + local.get $5 + i32.lt_s + if + local.get $8 + local.get $4 + i32.const 4 + i32.shl + i32.add + local.tee $2 + i32.load offset=8 + i32.const 1 + i32.and + i32.eqz + if + local.get $3 + local.tee $1 + i32.const 1 + i32.add + local.set $3 + local.get $0 + local.get $1 + local.get $2 + i64.load + call $~lib/array/Array#__set + end + local.get $4 + i32.const 1 + i32.add + local.set $4 + br $for-loop|0 + end + end + local.get $0 + ) + (func $std/set/testNumeric (; 90 ;) + (local $0 i64) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) call $~lib/set/Set#constructor - local.set $3 + local.set $1 loop $for-loop|0 - local.get $2 + local.get $0 i64.const 100 i64.lt_u if - local.get $3 - local.get $2 + local.get $1 + local.get $0 call $~lib/set/Set#has if i32.const 0 @@ -6906,12 +7359,12 @@ call $~lib/builtins/abort unreachable end - local.get $3 - local.get $2 + local.get $1 + local.get $0 call $~lib/set/Set#add call $~lib/rt/pure/__release - local.get $3 - local.get $2 + local.get $1 + local.get $0 call $~lib/set/Set#has i32.eqz if @@ -6922,14 +7375,14 @@ call $~lib/builtins/abort unreachable end - local.get $2 + local.get $0 i64.const 1 i64.add - local.set $2 + local.set $0 br $for-loop|0 end end - local.get $3 + local.get $1 i32.load offset=20 i32.const 100 i32.ne @@ -6942,14 +7395,14 @@ unreachable end i64.const 50 - local.set $2 + local.set $0 loop $for-loop|1 - local.get $2 + local.get $0 i64.const 100 i64.lt_u if - local.get $3 - local.get $2 + local.get $1 + local.get $0 call $~lib/set/Set#has i32.eqz if @@ -6960,12 +7413,12 @@ call $~lib/builtins/abort unreachable end - local.get $3 - local.get $2 + local.get $1 + local.get $0 call $~lib/set/Set#add call $~lib/rt/pure/__release - local.get $3 - local.get $2 + local.get $1 + local.get $0 call $~lib/set/Set#has i32.eqz if @@ -6976,14 +7429,14 @@ call $~lib/builtins/abort unreachable end - local.get $2 + local.get $0 i64.const 1 i64.add - local.set $2 + local.set $0 br $for-loop|1 end end - local.get $3 + local.get $1 i32.load offset=20 i32.const 100 i32.ne @@ -6995,70 +7448,20 @@ call $~lib/builtins/abort unreachable end - local.get $3 - i32.load offset=8 - local.set $8 - local.get $3 - i32.load offset=16 - local.set $7 - i32.const 16 - i32.const 18 - call $~lib/rt/tlsf/__alloc - call $~lib/rt/pure/__retain - local.get $7 - i32.const 3 - call $~lib/arraybuffer/ArrayBufferView#constructor - local.tee $4 - i32.const 0 - i32.store offset=12 - local.get $4 - local.get $7 - i32.store offset=12 - loop $for-loop|00 - local.get $5 - local.get $7 - i32.lt_s - if - local.get $8 - local.get $5 - i32.const 4 - i32.shl - i32.add - local.tee $9 - i32.load offset=8 - i32.const 1 - i32.and - i32.eqz - if - local.get $1 - local.tee $0 - i32.const 1 - i32.add - local.set $1 - local.get $4 - local.get $0 - local.get $9 - i64.load - call $~lib/array/Array#__set - end - local.get $5 - i32.const 1 - i32.add - local.set $5 - br $for-loop|00 - end - end + local.get $1 + call $~lib/set/Set#values + local.set $2 call $~lib/set/Set#constructor - local.set $0 + local.set $4 loop $for-loop|2 - local.get $6 - local.get $4 + local.get $3 + local.get $2 i32.load offset=12 i32.lt_s if + local.get $1 + local.get $2 local.get $3 - local.get $4 - local.get $6 call $~lib/array/Array#__get call $~lib/set/Set#has i32.eqz @@ -7070,22 +7473,22 @@ call $~lib/builtins/abort unreachable end - local.get $0 local.get $4 - local.get $6 + local.get $2 + local.get $3 call $~lib/array/Array#__get call $~lib/set/Set#add call $~lib/rt/pure/__release - local.get $6 + local.get $3 i32.const 1 i32.add - local.set $6 + local.set $3 br $for-loop|2 end end - local.get $0 + local.get $4 i32.load offset=20 - local.get $3 + local.get $1 i32.load offset=20 i32.ne if @@ -7097,14 +7500,14 @@ unreachable end i64.const 0 - local.set $2 + local.set $0 loop $for-loop|3 - local.get $2 + local.get $0 i64.const 50 i64.lt_u if - local.get $3 - local.get $2 + local.get $1 + local.get $0 call $~lib/set/Set#has i32.eqz if @@ -7115,11 +7518,11 @@ call $~lib/builtins/abort unreachable end - local.get $3 - local.get $2 + local.get $1 + local.get $0 call $~lib/set/Set#delete - local.get $3 - local.get $2 + local.get $1 + local.get $0 call $~lib/set/Set#has if i32.const 0 @@ -7129,14 +7532,14 @@ call $~lib/builtins/abort unreachable end - local.get $2 + local.get $0 i64.const 1 i64.add - local.set $2 + local.set $0 br $for-loop|3 end end - local.get $3 + local.get $1 i32.load offset=20 i32.const 50 i32.ne @@ -7149,14 +7552,14 @@ unreachable end i64.const 0 - local.set $2 + local.set $0 loop $for-loop|4 - local.get $2 + local.get $0 i64.const 50 i64.lt_u if - local.get $3 - local.get $2 + local.get $1 + local.get $0 call $~lib/set/Set#has if i32.const 0 @@ -7166,12 +7569,12 @@ call $~lib/builtins/abort unreachable end - local.get $3 - local.get $2 + local.get $1 + local.get $0 call $~lib/set/Set#add call $~lib/rt/pure/__release - local.get $3 - local.get $2 + local.get $1 + local.get $0 call $~lib/set/Set#has i32.eqz if @@ -7182,11 +7585,11 @@ call $~lib/builtins/abort unreachable end - local.get $3 - local.get $2 + local.get $1 + local.get $0 call $~lib/set/Set#delete - local.get $3 - local.get $2 + local.get $1 + local.get $0 call $~lib/set/Set#has if i32.const 0 @@ -7196,14 +7599,14 @@ call $~lib/builtins/abort unreachable end - local.get $2 + local.get $0 i64.const 1 i64.add - local.set $2 + local.set $0 br $for-loop|4 end end - local.get $3 + local.get $1 i32.load offset=20 i32.const 50 i32.ne @@ -7215,9 +7618,9 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $1 call $~lib/set/Set#clear - local.get $3 + local.get $1 i32.load offset=20 if i32.const 0 @@ -7227,14 +7630,14 @@ call $~lib/builtins/abort unreachable end - local.get $4 + local.get $2 call $~lib/rt/pure/__release - local.get $0 + local.get $4 call $~lib/rt/pure/__release - local.get $3 + local.get $1 call $~lib/rt/pure/__release ) - (func $~lib/set/Set#constructor (; 84 ;) (result i32) + (func $~lib/set/Set#constructor (; 91 ;) (result i32) (local $0 i32) i32.const 24 i32.const 19 @@ -7262,7 +7665,7 @@ call $~lib/set/Set#clear local.get $0 ) - (func $~lib/set/Set#find (; 85 ;) (param $0 i32) (param $1 f32) (param $2 i32) (result i32) + (func $~lib/set/Set#find (; 92 ;) (param $0 i32) (param $1 f32) (param $2 i32) (result i32) local.get $0 i32.load local.get $2 @@ -7303,7 +7706,7 @@ end i32.const 0 ) - (func $~lib/set/Set#has (; 86 ;) (param $0 i32) (param $1 f32) (result i32) + (func $~lib/set/Set#has (; 93 ;) (param $0 i32) (param $1 f32) (result i32) local.get $0 local.get $1 local.get $1 @@ -7313,7 +7716,7 @@ i32.const 0 i32.ne ) - (func $~lib/set/Set#rehash (; 87 ;) (param $0 i32) (param $1 i32) + (func $~lib/set/Set#rehash (; 94 ;) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -7445,7 +7848,7 @@ local.get $3 call $~lib/rt/pure/__release ) - (func $~lib/set/Set#add (; 88 ;) (param $0 i32) (param $1 f32) (result i32) + (func $~lib/set/Set#add (; 95 ;) (param $0 i32) (param $1 f32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -7529,59 +7932,112 @@ local.get $0 call $~lib/rt/pure/__retain ) - (func $~lib/set/Set#values (; 89 ;) (param $0 i32) (result i32) + (func $~lib/set/Set#values (; 96 ;) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) (local $6 i32) - (local $7 f32) + (local $7 i32) + (local $8 i32) + (local $9 i32) + (local $10 f32) local.get $0 i32.load offset=8 - local.set $6 + local.set $8 local.get $0 i32.load offset=16 - local.set $3 + local.tee $5 + local.set $6 + local.get $5 + i32.const 268435452 + i32.gt_u + if + i32.const 1200 + i32.const 1360 + i32.const 57 + i32.const 59 + call $~lib/builtins/abort + unreachable + end + local.get $6 + i32.const 2 + i32.shl + local.tee $7 + i32.const 0 + call $~lib/rt/tlsf/__alloc + local.tee $0 + local.get $7 + call $~lib/memory/memory.fill i32.const 16 i32.const 20 call $~lib/rt/tlsf/__alloc call $~lib/rt/pure/__retain + local.tee $3 + i32.const 0 + i32.store + local.get $3 + i32.const 0 + i32.store offset=4 + local.get $3 + i32.const 0 + i32.store offset=8 local.get $3 - i32.const 2 - call $~lib/arraybuffer/ArrayBufferView#constructor - local.tee $2 i32.const 0 i32.store offset=12 - local.get $2 + local.get $0 + local.set $1 + local.get $0 + local.get $3 + i32.load + local.tee $9 + i32.ne + if + local.get $1 + call $~lib/rt/pure/__retain + local.set $1 + local.get $9 + call $~lib/rt/pure/__release + end + local.get $3 + local.get $1 + i32.store local.get $3 + local.get $0 + i32.store offset=4 + local.get $3 + local.get $7 + i32.store offset=8 + local.get $3 + local.get $6 i32.store offset=12 loop $for-loop|0 local.get $4 - local.get $3 + local.get $5 i32.lt_s if - local.get $6 + local.get $8 local.get $4 i32.const 3 i32.shl i32.add - local.tee $5 + local.tee $1 i32.load offset=4 i32.const 1 i32.and i32.eqz if - local.get $1 + local.get $2 local.tee $0 i32.const 1 i32.add - local.set $1 - local.get $5 + local.set $2 + local.get $1 f32.load - local.set $7 + local.set $10 local.get $0 - local.get $2 + local.get $3 i32.load offset=12 i32.ge_u if @@ -7589,31 +8045,31 @@ i32.const 0 i32.lt_s if + i32.const 1408 i32.const 1360 - i32.const 1424 - i32.const 109 + i32.const 120 i32.const 21 call $~lib/builtins/abort unreachable end - local.get $2 + local.get $3 local.get $0 i32.const 1 i32.add - local.tee $5 + local.tee $1 i32.const 2 call $~lib/array/ensureSize - local.get $2 - local.get $5 + local.get $3 + local.get $1 i32.store offset=12 end - local.get $2 + local.get $3 i32.load offset=4 local.get $0 i32.const 2 i32.shl i32.add - local.get $7 + local.get $10 f32.store end local.get $4 @@ -7623,17 +8079,17 @@ br $for-loop|0 end end - local.get $2 + local.get $3 ) - (func $~lib/array/Array#__get (; 90 ;) (param $0 i32) (param $1 i32) (result f32) + (func $~lib/array/Array#__get (; 97 ;) (param $0 i32) (param $1 i32) (result f32) local.get $1 local.get $0 i32.load offset=12 i32.ge_u if + i32.const 1408 i32.const 1360 - i32.const 1424 - i32.const 93 + i32.const 104 i32.const 41 call $~lib/builtins/abort unreachable @@ -7646,7 +8102,7 @@ i32.add f32.load ) - (func $~lib/set/Set#delete (; 91 ;) (param $0 i32) (param $1 f32) + (func $~lib/set/Set#delete (; 98 ;) (param $0 i32) (param $1 f32) (local $2 i32) (local $3 i32) local.get $0 @@ -7707,7 +8163,7 @@ call $~lib/set/Set#rehash end ) - (func $std/set/testNumeric (; 92 ;) + (func $std/set/testNumeric (; 99 ;) (local $0 f32) (local $1 i32) (local $2 i32) @@ -8009,7 +8465,7 @@ local.get $1 call $~lib/rt/pure/__release ) - (func $~lib/set/Set#constructor (; 93 ;) (result i32) + (func $~lib/set/Set#constructor (; 100 ;) (result i32) (local $0 i32) i32.const 24 i32.const 21 @@ -8037,7 +8493,7 @@ call $~lib/set/Set#clear local.get $0 ) - (func $~lib/set/Set#find (; 94 ;) (param $0 i32) (param $1 f64) (param $2 i32) (result i32) + (func $~lib/set/Set#find (; 101 ;) (param $0 i32) (param $1 f64) (param $2 i32) (result i32) local.get $0 i32.load local.get $2 @@ -8078,7 +8534,7 @@ end i32.const 0 ) - (func $~lib/set/Set#has (; 95 ;) (param $0 i32) (param $1 f64) (result i32) + (func $~lib/set/Set#has (; 102 ;) (param $0 i32) (param $1 f64) (result i32) local.get $0 local.get $1 local.get $1 @@ -8088,7 +8544,7 @@ i32.const 0 i32.ne ) - (func $~lib/set/Set#rehash (; 96 ;) (param $0 i32) (param $1 i32) + (func $~lib/set/Set#rehash (; 103 ;) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -8220,7 +8676,7 @@ local.get $3 call $~lib/rt/pure/__release ) - (func $~lib/set/Set#add (; 97 ;) (param $0 i32) (param $1 f64) (result i32) + (func $~lib/set/Set#add (; 104 ;) (param $0 i32) (param $1 f64) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -8304,59 +8760,112 @@ local.get $0 call $~lib/rt/pure/__retain ) - (func $~lib/set/Set#values (; 98 ;) (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) (local $4 i32) (local $5 i32) (local $6 i32) - (local $7 f64) + (local $7 i32) + (local $8 i32) + (local $9 i32) + (local $10 f64) local.get $0 i32.load offset=8 - local.set $6 + local.set $8 local.get $0 i32.load offset=16 - local.set $3 + local.tee $5 + local.set $6 + local.get $5 + i32.const 134217726 + i32.gt_u + if + i32.const 1200 + i32.const 1360 + i32.const 57 + i32.const 59 + call $~lib/builtins/abort + unreachable + end + local.get $6 + i32.const 3 + i32.shl + local.tee $7 + i32.const 0 + call $~lib/rt/tlsf/__alloc + local.tee $0 + local.get $7 + call $~lib/memory/memory.fill i32.const 16 i32.const 22 call $~lib/rt/tlsf/__alloc call $~lib/rt/pure/__retain + local.tee $3 + i32.const 0 + i32.store + local.get $3 + i32.const 0 + i32.store offset=4 + local.get $3 + i32.const 0 + i32.store offset=8 local.get $3 - i32.const 3 - call $~lib/arraybuffer/ArrayBufferView#constructor - local.tee $2 i32.const 0 i32.store offset=12 - local.get $2 + local.get $0 + local.set $1 + local.get $0 + local.get $3 + i32.load + local.tee $9 + i32.ne + if + local.get $1 + call $~lib/rt/pure/__retain + local.set $1 + local.get $9 + call $~lib/rt/pure/__release + end + local.get $3 + local.get $1 + i32.store + local.get $3 + local.get $0 + i32.store offset=4 + local.get $3 + local.get $7 + i32.store offset=8 local.get $3 + local.get $6 i32.store offset=12 loop $for-loop|0 local.get $4 - local.get $3 + local.get $5 i32.lt_s if - local.get $6 + local.get $8 local.get $4 i32.const 4 i32.shl i32.add - local.tee $5 + local.tee $1 i32.load offset=8 i32.const 1 i32.and i32.eqz if - local.get $1 + local.get $2 local.tee $0 i32.const 1 i32.add - local.set $1 - local.get $5 + local.set $2 + local.get $1 f64.load - local.set $7 + local.set $10 local.get $0 - local.get $2 + local.get $3 i32.load offset=12 i32.ge_u if @@ -8364,31 +8873,31 @@ i32.const 0 i32.lt_s if + i32.const 1408 i32.const 1360 - i32.const 1424 - i32.const 109 + i32.const 120 i32.const 21 call $~lib/builtins/abort unreachable end - local.get $2 + local.get $3 local.get $0 i32.const 1 i32.add - local.tee $5 + local.tee $1 i32.const 3 call $~lib/array/ensureSize - local.get $2 - local.get $5 + local.get $3 + local.get $1 i32.store offset=12 end - local.get $2 + local.get $3 i32.load offset=4 local.get $0 i32.const 3 i32.shl i32.add - local.get $7 + local.get $10 f64.store end local.get $4 @@ -8398,17 +8907,17 @@ br $for-loop|0 end end - local.get $2 + local.get $3 ) - (func $~lib/array/Array#__get (; 99 ;) (param $0 i32) (param $1 i32) (result f64) + (func $~lib/array/Array#__get (; 106 ;) (param $0 i32) (param $1 i32) (result f64) local.get $1 local.get $0 i32.load offset=12 i32.ge_u if + i32.const 1408 i32.const 1360 - i32.const 1424 - i32.const 93 + i32.const 104 i32.const 41 call $~lib/builtins/abort unreachable @@ -8421,7 +8930,7 @@ i32.add f64.load ) - (func $~lib/set/Set#delete (; 100 ;) (param $0 i32) (param $1 f64) + (func $~lib/set/Set#delete (; 107 ;) (param $0 i32) (param $1 f64) (local $2 i32) (local $3 i32) local.get $0 @@ -8482,7 +8991,7 @@ call $~lib/set/Set#rehash end ) - (func $std/set/testNumeric (; 101 ;) + (func $std/set/testNumeric (; 108 ;) (local $0 f64) (local $1 i32) (local $2 i32) @@ -8784,7 +9293,7 @@ local.get $1 call $~lib/rt/pure/__release ) - (func $~start (; 102 ;) + (func $~start (; 109 ;) call $std/set/testNumeric call $std/set/testNumeric call $std/set/testNumeric @@ -8796,7 +9305,7 @@ call $std/set/testNumeric call $std/set/testNumeric ) - (func $~lib/rt/pure/decrement (; 103 ;) (param $0 i32) + (func $~lib/rt/pure/decrement (; 110 ;) (param $0 i32) (local $1 i32) (local $2 i32) local.get $0 @@ -8824,35 +9333,41 @@ i32.eq if block $__inlined_func$~lib/rt/__visit_members - block $folding-inner0 - block $block$4$break + block $folding-inner1 + block $folding-inner0 block $switch$1$default - local.get $0 - i32.const 16 - i32.add - local.tee $1 - i32.const 8 - i32.sub + block $switch$1$case$4 + local.get $0 + i32.const 16 + i32.add + local.tee $1 + i32.const 8 + i32.sub + i32.load + br_table $__inlined_func$~lib/rt/__visit_members $__inlined_func$~lib/rt/__visit_members $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 + local.get $1 i32.load - br_table $__inlined_func$~lib/rt/__visit_members $__inlined_func$~lib/rt/__visit_members $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 + local.tee $1 + if + local.get $1 + call $~lib/rt/pure/__visit + end + br $__inlined_func$~lib/rt/__visit_members end unreachable end local.get $1 i32.load - local.tee $1 - if - local.get $1 - call $~lib/rt/pure/__visit - end + call $~lib/rt/pure/__visit + local.get $1 + i32.load offset=8 + call $~lib/rt/pure/__visit br $__inlined_func$~lib/rt/__visit_members end local.get $1 i32.load call $~lib/rt/pure/__visit - local.get $1 - i32.load offset=8 - call $~lib/rt/pure/__visit end local.get $2 i32.const -2147483648 @@ -8891,9 +9406,9 @@ i32.store offset=4 end ) - (func $~lib/rt/pure/__visit (; 104 ;) (param $0 i32) + (func $~lib/rt/pure/__visit (; 111 ;) (param $0 i32) local.get $0 - i32.const 1452 + i32.const 1444 i32.lt_u if return diff --git a/tests/compiler/std/set.untouched.wat b/tests/compiler/std/set.untouched.wat index f97cad88d1..7513c97c2b 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) @@ -2117,40 +2117,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 @@ -2165,6 +2165,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 @@ -2185,33 +2188,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 @@ -2257,7 +2241,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) @@ -3281,7 +3265,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) @@ -3501,7 +3485,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 @@ -3517,7 +3501,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) @@ -3636,7 +3620,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 @@ -3645,7 +3629,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) @@ -3666,7 +3650,7 @@ i32.gt_u if i32.const 192 - i32.const 416 + i32.const 352 i32.const 14 i32.const 47 call $~lib/builtins/abort @@ -3707,7 +3691,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 @@ -3717,7 +3701,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 @@ -3727,9 +3711,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 @@ -3751,7 +3735,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) @@ -3813,11 +3797,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 @@ -3826,16 +3810,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 @@ -3846,7 +3830,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) @@ -3922,7 +3906,7 @@ end i32.const 1 ) - (func $std/set/testNumeric (; 45 ;) + (func $std/set/testNumeric (; 44 ;) (local $0 i32) (local $1 i32) (local $2 i32) @@ -4278,7 +4262,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 @@ -4318,7 +4302,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 @@ -4350,7 +4334,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 @@ -4400,7 +4384,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 @@ -4417,7 +4401,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) @@ -4570,7 +4554,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) @@ -4665,33 +4649,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 @@ -4701,7 +4741,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 @@ -4711,9 +4751,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 @@ -4735,7 +4775,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) @@ -4797,11 +4837,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 @@ -4810,16 +4850,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 @@ -4830,7 +4870,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) @@ -4904,7 +4944,7 @@ end i32.const 1 ) - (func $std/set/testNumeric (; 61 ;) + (func $std/set/testNumeric (; 60 ;) (local $0 i32) (local $1 i32) (local $2 i32) @@ -5252,7 +5292,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 @@ -5292,7 +5332,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 @@ -5324,7 +5364,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 @@ -5346,7 +5386,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 @@ -5398,7 +5438,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 @@ -5417,7 +5457,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) @@ -5570,7 +5610,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) @@ -5667,33 +5707,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 @@ -5703,7 +5799,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 @@ -5713,9 +5809,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 @@ -5737,7 +5833,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) @@ -5799,11 +5895,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 @@ -5812,16 +5908,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 @@ -5832,7 +5928,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) @@ -5908,7 +6004,7 @@ end i32.const 1 ) - (func $std/set/testNumeric (; 78 ;) + (func $std/set/testNumeric (; 77 ;) (local $0 i32) (local $1 i32) (local $2 i32) @@ -6264,7 +6360,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 @@ -6304,7 +6400,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 @@ -6336,7 +6432,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 @@ -6386,7 +6482,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 @@ -6403,7 +6499,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) @@ -6556,7 +6652,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) @@ -6651,33 +6747,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 @@ -6687,7 +6839,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 @@ -6697,9 +6849,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 @@ -6721,7 +6873,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) @@ -6783,11 +6935,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 @@ -6796,16 +6948,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 @@ -6816,7 +6968,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) @@ -6890,7 +7042,7 @@ end i32.const 1 ) - (func $std/set/testNumeric (; 94 ;) + (func $std/set/testNumeric (; 93 ;) (local $0 i32) (local $1 i32) (local $2 i32) @@ -7238,7 +7390,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 @@ -7278,7 +7430,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 @@ -7310,7 +7462,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 @@ -7352,7 +7504,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 @@ -7400,7 +7552,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 @@ -7415,7 +7567,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) @@ -7568,7 +7720,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) @@ -7661,33 +7813,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 @@ -7697,7 +7905,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 @@ -7707,9 +7915,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 @@ -7731,7 +7939,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) @@ -7793,11 +8001,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 @@ -7806,16 +8014,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 @@ -7826,7 +8034,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) @@ -7898,7 +8106,7 @@ end i32.const 1 ) - (func $std/set/testNumeric (; 111 ;) + (func $std/set/testNumeric (; 110 ;) (local $0 i32) (local $1 i32) (local $2 i32) @@ -8234,7 +8442,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 @@ -8274,7 +8482,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 @@ -8306,7 +8514,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 @@ -8354,7 +8562,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 @@ -8369,7 +8577,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) @@ -8522,7 +8730,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) @@ -8615,33 +8823,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 @@ -8651,7 +8915,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 @@ -8661,9 +8925,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 @@ -8685,7 +8949,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) @@ -8747,11 +9011,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 @@ -8760,16 +9024,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 @@ -8780,7 +9044,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) @@ -8852,7 +9116,7 @@ end i32.const 1 ) - (func $std/set/testNumeric (; 127 ;) + (func $std/set/testNumeric (; 126 ;) (local $0 i32) (local $1 i32) (local $2 i32) @@ -9188,7 +9452,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 @@ -9228,7 +9492,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 @@ -9260,7 +9524,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) @@ -9348,7 +9612,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 @@ -9396,7 +9660,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 @@ -9411,7 +9675,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) @@ -9565,7 +9829,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) @@ -9659,33 +9923,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 @@ -9695,7 +10015,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 @@ -9705,9 +10025,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 @@ -9729,7 +10049,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) @@ -9791,11 +10111,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 @@ -9804,16 +10124,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 @@ -9824,7 +10144,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) @@ -9897,7 +10217,7 @@ end i32.const 1 ) - (func $std/set/testNumeric (; 144 ;) + (func $std/set/testNumeric (; 143 ;) (local $0 i32) (local $1 i64) (local $2 i32) @@ -10234,7 +10554,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 @@ -10274,7 +10594,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 @@ -10306,7 +10626,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 @@ -10354,7 +10674,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 @@ -10369,7 +10689,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) @@ -10523,7 +10843,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) @@ -10617,33 +10937,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 @@ -10653,7 +11029,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 @@ -10663,9 +11039,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 @@ -10687,7 +11063,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) @@ -10749,11 +11125,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 @@ -10762,16 +11138,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 @@ -10782,7 +11158,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) @@ -10855,7 +11231,7 @@ end i32.const 1 ) - (func $std/set/testNumeric (; 160 ;) + (func $std/set/testNumeric (; 159 ;) (local $0 i32) (local $1 i64) (local $2 i32) @@ -11192,7 +11568,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 @@ -11232,7 +11608,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 @@ -11264,7 +11640,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 @@ -11312,7 +11688,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 @@ -11328,7 +11704,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) @@ -11483,7 +11859,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) @@ -11578,33 +11954,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 @@ -11614,7 +12046,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 @@ -11624,9 +12056,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 @@ -11648,7 +12080,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) @@ -11710,11 +12142,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 @@ -11723,16 +12155,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 @@ -11743,7 +12175,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) @@ -11817,7 +12249,7 @@ end i32.const 1 ) - (func $std/set/testNumeric (; 176 ;) + (func $std/set/testNumeric (; 175 ;) (local $0 i32) (local $1 f32) (local $2 i32) @@ -12154,7 +12586,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 @@ -12194,7 +12626,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 @@ -12226,7 +12658,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 @@ -12274,7 +12706,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 @@ -12290,7 +12722,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) @@ -12445,7 +12877,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) @@ -12540,33 +12972,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 @@ -12576,7 +13064,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 @@ -12586,9 +13074,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 @@ -12610,7 +13098,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) @@ -12672,11 +13160,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 @@ -12685,16 +13173,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 @@ -12705,7 +13193,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) @@ -12779,7 +13267,7 @@ end i32.const 1 ) - (func $std/set/testNumeric (; 192 ;) + (func $std/set/testNumeric (; 191 ;) (local $0 i32) (local $1 f64) (local $2 i32) @@ -13116,7 +13604,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 @@ -13128,13 +13616,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 @@ -13211,7 +13699,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 @@ -13235,7 +13723,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 @@ -13248,10 +13736,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 @@ -13264,10 +13755,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 @@ -13280,10 +13774,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 @@ -13296,10 +13793,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 @@ -13312,10 +13812,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 @@ -13328,10 +13831,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 @@ -13344,10 +13850,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 @@ -13360,10 +13869,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 @@ -13376,10 +13888,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 @@ -13392,155 +13907,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 63d53dd73e..b862bdaec1 100644 --- a/tests/compiler/std/static-array.optimized.wat +++ b/tests/compiler/std/static-array.optimized.wat @@ -37,7 +37,7 @@ if i32.const 1360 i32.const 1424 - i32.const 93 + i32.const 104 i32.const 41 call $~lib/builtins/abort unreachable @@ -639,7 +639,7 @@ if i32.const 1360 i32.const 1424 - i32.const 93 + i32.const 104 i32.const 41 call $~lib/builtins/abort unreachable @@ -660,7 +660,7 @@ if i32.const 1360 i32.const 1424 - i32.const 93 + i32.const 104 i32.const 41 call $~lib/builtins/abort unreachable @@ -681,7 +681,7 @@ if i32.const 1360 i32.const 1424 - 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 be3a9b8331..d5a0e674e4 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 @@ -1837,7 +1837,7 @@ if i32.const 352 i32.const 416 - i32.const 109 + i32.const 120 i32.const 21 call $~lib/builtins/abort unreachable @@ -1881,7 +1881,7 @@ if i32.const 352 i32.const 416 - i32.const 93 + i32.const 104 i32.const 41 call $~lib/builtins/abort unreachable @@ -1914,7 +1914,7 @@ if i32.const 352 i32.const 416 - i32.const 109 + i32.const 120 i32.const 21 call $~lib/builtins/abort unreachable @@ -1958,7 +1958,7 @@ if i32.const 352 i32.const 416 - i32.const 93 + i32.const 104 i32.const 41 call $~lib/builtins/abort unreachable @@ -1991,7 +1991,7 @@ if i32.const 352 i32.const 416 - i32.const 109 + i32.const 120 i32.const 21 call $~lib/builtins/abort unreachable @@ -2035,7 +2035,7 @@ if i32.const 352 i32.const 416 - i32.const 93 + i32.const 104 i32.const 41 call $~lib/builtins/abort unreachable @@ -2068,7 +2068,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 8962738c94..84c0e12a38 100644 --- a/tests/compiler/std/string.optimized.wat +++ b/tests/compiler/std/string.optimized.wat @@ -5440,7 +5440,7 @@ if i32.const 13216 i32.const 13168 - i32.const 93 + i32.const 104 i32.const 41 call $~lib/builtins/abort unreachable @@ -5460,7 +5460,7 @@ call $~lib/rt/pure/__release i32.const 13280 i32.const 13168 - i32.const 97 + i32.const 108 i32.const 39 call $~lib/builtins/abort unreachable @@ -14283,57 +14283,67 @@ i32.eq if block $__inlined_func$~lib/rt/__visit_members - block $block$4$break - block $switch$1$default + block $switch$1$default + block $switch$1$case$7 block $switch$1$case$6 - local.get $0 - i32.const 16 - i32.add - local.tee $2 - i32.const 8 - i32.sub + block $switch$1$case$4 + local.get $0 + i32.const 16 + i32.add + local.tee $1 + i32.const 8 + i32.sub + i32.load + br_table $__inlined_func$~lib/rt/__visit_members $__inlined_func$~lib/rt/__visit_members $switch$1$case$4 $__inlined_func$~lib/rt/__visit_members $switch$1$case$6 $switch$1$case$7 $__inlined_func$~lib/rt/__visit_members $__inlined_func$~lib/rt/__visit_members $__inlined_func$~lib/rt/__visit_members $switch$1$default + end + local.get $1 i32.load - br_table $__inlined_func$~lib/rt/__visit_members $__inlined_func$~lib/rt/__visit_members $block$4$break $__inlined_func$~lib/rt/__visit_members $switch$1$case$6 $block$4$break $__inlined_func$~lib/rt/__visit_members $__inlined_func$~lib/rt/__visit_members $__inlined_func$~lib/rt/__visit_members $switch$1$default + local.tee $1 + if + local.get $1 + call $~lib/rt/pure/__visit + end + br $__inlined_func$~lib/rt/__visit_members end - local.get $2 + local.get $1 i32.load offset=4 - local.tee $1 - local.get $2 + local.tee $2 + local.get $1 i32.load offset=12 i32.const 2 i32.shl i32.add local.set $4 loop $while-continue|0 - local.get $1 + local.get $2 local.get $4 i32.lt_u if - local.get $1 + local.get $2 i32.load local.tee $5 if local.get $5 call $~lib/rt/pure/__visit end - local.get $1 + local.get $2 i32.const 4 i32.add - local.set $1 + local.set $2 br $while-continue|0 end end - br $block$4$break + local.get $1 + i32.load + call $~lib/rt/pure/__visit + br $__inlined_func$~lib/rt/__visit_members end - unreachable - end - local.get $2 - i32.load - local.tee $1 - if local.get $1 + i32.load call $~lib/rt/pure/__visit + br $__inlined_func$~lib/rt/__visit_members end + unreachable end local.get $3 i32.const -2147483648 diff --git a/tests/compiler/std/string.untouched.wat b/tests/compiler/std/string.untouched.wat index 46e1c599f0..83eea0b3f0 100644 --- a/tests/compiler/std/string.untouched.wat +++ b/tests/compiler/std/string.untouched.wat @@ -8594,7 +8594,7 @@ if i32.const 12208 i32.const 12160 - i32.const 93 + i32.const 104 i32.const 41 call $~lib/builtins/abort unreachable @@ -8610,7 +8610,7 @@ call $~lib/rt/pure/__release i32.const 12272 i32.const 12160 - i32.const 97 + i32.const 108 i32.const 39 call $~lib/builtins/abort unreachable @@ -18571,9 +18571,16 @@ 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 (; 100 ;) (param $0 i32) (param $1 i32) - nop + local.get $0 + i32.load + local.get $1 + call $~lib/rt/pure/__visit ) (func $~lib/staticarray/StaticArray#__visit_impl (; 101 ;) (param $0 i32) (param $1 i32) nop @@ -18586,66 +18593,63 @@ ) (func $~lib/rt/__visit_members (; 104 ;) (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$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$default - end - return + block $switch$1$default + 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$default end - br $block$4$break + return end local.get $0 - local.get $1 - call $~lib/staticarray/StaticArray#__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<~lib/string/String>#__visit_impl - br $block$4$break + call $~lib/staticarray/StaticArray#__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/staticarray/StaticArray#__visit_impl + call $~lib/array/Array#__visit_impl return end local.get $0 local.get $1 - call $~lib/staticarray/StaticArray#__visit_impl + call $~lib/staticarray/StaticArray#__visit_impl return end local.get $0 local.get $1 - call $~lib/staticarray/StaticArray#__visit_impl + call $~lib/staticarray/StaticArray#__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/staticarray/StaticArray#__visit_impl + return end - return + unreachable ) ) diff --git a/tests/compiler/std/typedarray.optimized.wat b/tests/compiler/std/typedarray.optimized.wat index 6b10bd0d80..c7fa19e31a 100644 --- a/tests/compiler/std/typedarray.optimized.wat +++ b/tests/compiler/std/typedarray.optimized.wat @@ -3187,7 +3187,7 @@ if i32.const 1376 i32.const 1536 - i32.const 93 + i32.const 104 i32.const 41 call $~lib/builtins/abort unreachable @@ -3385,7 +3385,7 @@ if i32.const 1376 i32.const 1536 - i32.const 93 + i32.const 104 i32.const 41 call $~lib/builtins/abort unreachable @@ -32123,33 +32123,32 @@ i32.eq if block $__inlined_func$~lib/rt/__visit_members - block $block$4$break + block $folding-inner0 block $switch$1$default - local.get $0 - i32.const 16 - i32.add - local.tee $1 - i32.const 8 - i32.sub + block $switch$1$case$4 + local.get $0 + i32.const 16 + i32.add + local.tee $1 + i32.const 8 + i32.sub + i32.load + br_table $__inlined_func$~lib/rt/__visit_members $__inlined_func$~lib/rt/__visit_members $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 $__inlined_func$~lib/rt/__visit_members $__inlined_func$~lib/rt/__visit_members $__inlined_func$~lib/rt/__visit_members $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $switch$1$default + end + local.get $1 i32.load - br_table $__inlined_func$~lib/rt/__visit_members $__inlined_func$~lib/rt/__visit_members $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 $__inlined_func$~lib/rt/__visit_members $__inlined_func$~lib/rt/__visit_members $__inlined_func$~lib/rt/__visit_members $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 + local.tee $1 + if + local.get $1 + call $~lib/rt/pure/__visit + end + br $__inlined_func$~lib/rt/__visit_members end unreachable end local.get $1 i32.load - local.tee $1 - if - local.get $1 - i32.const 8396 - i32.ge_u - if - local.get $1 - i32.const 16 - i32.sub - call $~lib/rt/pure/decrement - end - end + call $~lib/rt/pure/__visit end local.get $2 i32.const -2147483648 @@ -32188,4 +32187,16 @@ i32.store offset=4 end ) + (func $~lib/rt/pure/__visit (; 343 ;) (param $0 i32) + local.get $0 + i32.const 8396 + i32.lt_u + if + return + end + local.get $0 + i32.const 16 + i32.sub + call $~lib/rt/pure/decrement + ) ) diff --git a/tests/compiler/std/typedarray.untouched.wat b/tests/compiler/std/typedarray.untouched.wat index e3430f6bfa..21cc407c73 100644 --- a/tests/compiler/std/typedarray.untouched.wat +++ b/tests/compiler/std/typedarray.untouched.wat @@ -5098,7 +5098,7 @@ if i32.const 368 i32.const 528 - i32.const 93 + i32.const 104 i32.const 41 call $~lib/builtins/abort unreachable @@ -5405,7 +5405,7 @@ if i32.const 368 i32.const 528 - i32.const 93 + i32.const 104 i32.const 41 call $~lib/builtins/abort unreachable @@ -52933,10 +52933,16 @@ call $~lib/rt/pure/decrement ) (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/staticarray/StaticArray#__visit_impl (; 708 ;) (param $0 i32) (param $1 i32) nop @@ -52948,133 +52954,154 @@ nop ) (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/array/Array#__visit_impl (; 715 ;) (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 (; 716 ;) (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 (; 717 ;) (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 (; 718 ;) (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 (; 719 ;) (param $0 i32) (param $1 i32) (local $2 i32) - block $block$4$break - block $switch$1$default - 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$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$case$26 $switch$1$case$27 $switch$1$case$28 $switch$1$default - end - return + block $switch$1$default + 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$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$case$26 $switch$1$case$27 $switch$1$case$28 $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/staticarray/StaticArray#__visit_impl + call $~lib/array/Array#__visit_impl return end local.get $0 local.get $1 - call $~lib/staticarray/StaticArray#__visit_impl + call $~lib/staticarray/StaticArray#__visit_impl return end local.get $0 local.get $1 - call $~lib/staticarray/StaticArray#__visit_impl + call $~lib/staticarray/StaticArray#__visit_impl return end local.get $0 local.get $1 - call $~lib/array/Array#__visit_impl - br $block$4$break + call $~lib/staticarray/StaticArray#__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 ) )