diff --git a/src/compiler.ts b/src/compiler.ts index 95b8ab26..b6eb370a 100644 --- a/src/compiler.ts +++ b/src/compiler.ts @@ -2201,16 +2201,16 @@ export class Compiler extends DiagnosticEmitter { var stmts = new Array(); this.performAutoreleases(flow, stmts); this.finishAutoreleases(flow, stmts); - if (returnType.isManaged) { - // Make sure that the return value is retained for the caller - if (!this.skippedAutoreleases.has(expr)) expr = this.makeRetain(expr); - if (stmts.length) { - let temp = flow.getAndFreeTempLocal(returnType, false); - stmts.unshift( - module.createSetLocal(temp.index, expr) - ); - expr = module.createGetLocal(temp.index, returnType.toNativeType()); - } + + // Make sure that the return value is retained for the caller + if (returnType.isManaged && !this.skippedAutoreleases.has(expr)) expr = this.makeRetain(expr); + + if (stmts.length) { + let temp = flow.getAndFreeTempLocal(returnType, false); + stmts.unshift( + module.createSetLocal(temp.index, expr) + ); + expr = module.createGetLocal(temp.index, returnType.toNativeType()); } flow.freeScopedLocals(); @@ -6622,22 +6622,22 @@ export class Compiler extends DiagnosticEmitter { clearFlags: bool = true ): ExpressionRef { if (!stmts) stmts = new Array(); + stmts.push( + this.module.createNop() + ); + var lengthBefore = stmts.length; this.performAutoreleases(flow, stmts, clearFlags); - if (stmts.length) { + if (stmts.length > lengthBefore) { let nativeType = valueType.toNativeType(); let temp = flow.getAndFreeTempLocal(valueType, !flow.canOverflow(valueExpr, valueType)); let module = this.module; - stmts.unshift( - module.createSetLocal(temp.index, valueExpr), - ); + stmts[lengthBefore - 1] = module.createSetLocal(temp.index, valueExpr); // nop -> set stmts.push( - module.createGetLocal(temp.index, nativeType) + module.createGetLocal(temp.index, nativeType) // append get ); return module.createBlock(null, stmts, nativeType); - } else if (stmts.length) { - stmts.push( - valueExpr - ); + } else if (stmts.length > 1) { + stmts[lengthBefore - 1] = valueExpr; // nop -> value return this.module.createBlock(null, stmts, valueType.toNativeType()); } return valueExpr; diff --git a/tests/compiler/empty.optimized.wat b/tests/compiler/empty.optimized.wat index d1ce3b55..29ee81b8 100644 --- a/tests/compiler/empty.optimized.wat +++ b/tests/compiler/empty.optimized.wat @@ -1,3552 +1,9 @@ (module - (type $FUNCSIG$iiii (func (param i32 i32 i32) (result i32))) - (type $FUNCSIG$viiii (func (param i32 i32 i32 i32))) - (type $FUNCSIG$iiiii (func (param i32 i32 i32 i32) (result i32))) - (type $FUNCSIG$iii (func (param i32 i32) (result i32))) (type $FUNCSIG$v (func)) - (type $FUNCSIG$vii (func (param i32 i32))) - (type $FUNCSIG$ii (func (param i32) (result i32))) - (type $FUNCSIG$viii (func (param i32 i32 i32))) - (type $FUNCSIG$vi (func (param i32))) - (type $FUNCSIG$iiiiii (func (param i32 i32 i32 i32 i32) (result i32))) - (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) - (import "rtrace" "retain" (func $~lib/rt/purerc/onIncrement (param i32))) - (import "rtrace" "free" (func $~lib/rt/tlsf/onFree (param i32))) - (import "rtrace" "release" (func $~lib/rt/purerc/onDecrement (param i32))) - (memory $0 1) - (data (i32.const 8) "\n\00\00\00\01\00\00\00\10\00\00\00\n\00\00\00a\00,\00b\00,\00c\00") - (data (i32.const 40) "\02\00\00\00\01\00\00\00\10\00\00\00\02\00\00\00,\00") - (data (i32.const 64) "\1c\00\00\00\01\00\00\00\10\00\00\00\1c\00\00\00~\00l\00i\00b\00/\00s\00t\00r\00i\00n\00g\00.\00t\00s\00") - (data (i32.const 112) "\1e\00\00\00\01\00\00\00\10\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\10\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 216) "\"\00\00\00\01\00\00\00\10\00\00\00\"\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00p\00u\00r\00e\00r\00c\00.\00t\00s\00") - (data (i32.const 272) "\00\00\00\00\01\00\00\00\10\00\00\00\00\00\00\00") - (data (i32.const 288) "\08\00\00\00\01\00\00\00\10\00\00\00\08\00\00\00n\00u\00l\00l\00") - (data (i32.const 312) "\1c\00\00\00\01\00\00\00\10\00\00\00\1c\00\00\00I\00n\00v\00a\00l\00i\00d\00 \00l\00e\00n\00g\00t\00h\00") - (data (i32.const 360) "\1a\00\00\00\01\00\00\00\10\00\00\00\1a\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00.\00t\00s\00") - (data (i32.const 408) "$\00\00\00\01\00\00\00\10\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 464) "\"\00\00\00\01\00\00\00\10\00\00\00\"\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00c\00o\00m\00m\00o\00n\00.\00t\00s\00") - (data (i32.const 520) "^\00\00\00\01\00\00\00\10\00\00\00^\00\00\00E\00l\00e\00m\00e\00n\00t\00 \00t\00y\00p\00e\00 \00m\00u\00s\00t\00 \00b\00e\00 \00n\00u\00l\00l\00a\00b\00l\00e\00 \00i\00f\00 \00a\00r\00r\00a\00y\00 \00i\00s\00 \00h\00o\00l\00e\00y\00") - (data (i32.const 632) "\02\00\00\00\01\00\00\00\10\00\00\00\02\00\00\00a\00") - (data (i32.const 656) "\10\00\00\00\01\00\00\00\10\00\00\00\10\00\00\00e\00m\00p\00t\00y\00.\00t\00s\00") - (data (i32.const 688) "\12\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00I\04\00\00\0e\00\00\00I\00\00\00\0e\00\00\00") + (memory $0 0) (table $0 1 funcref) (elem (i32.const 0) $null) - (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) - (global $~lib/builtins/i32.MAX_VALUE i32 (i32.const 2147483647)) - (global $~lib/rt/purerc/CUR (mut i32) (i32.const 0)) - (global $~lib/rt/purerc/END (mut i32) (i32.const 0)) - (global $~lib/rt/purerc/ROOTS (mut i32) (i32.const 0)) - (global $~lib/started (mut i32) (i32.const 0)) - (global $~lib/builtins/RTTI_BASE i32 (i32.const 688)) - (global $~lib/builtins/HEAP_BASE i32 (i32.const 840)) (export "memory" (memory $0)) - (export "main" (func $empty/main)) - (func $~lib/rt/tlsf/removeBlock (; 4 ;) (type $FUNCSIG$vii) (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 $9 i32) - (local $10 i32) - (local $11 i32) - local.get $1 - i32.load - local.set $2 - local.get $2 - i32.const 1 - i32.and - i32.eqz - if - i32.const 0 - i32.const 128 - i32.const 275 - i32.const 13 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.const 3 - i32.const -1 - i32.xor - i32.and - local.set $3 - local.get $3 - i32.const 16 - i32.ge_u - if (result i32) - local.get $3 - i32.const 1073741808 - i32.lt_u - else - i32.const 0 - end - i32.eqz - if - i32.const 0 - i32.const 128 - i32.const 277 - i32.const 13 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const 256 - i32.lt_u - if - i32.const 0 - local.set $4 - local.get $3 - i32.const 4 - i32.shr_u - local.set $5 - else - i32.const 31 - local.get $3 - i32.clz - i32.sub - local.set $4 - local.get $3 - local.get $4 - i32.const 4 - i32.sub - i32.shr_u - i32.const 1 - i32.const 4 - i32.shl - i32.xor - local.set $5 - local.get $4 - i32.const 8 - i32.const 1 - i32.sub - i32.sub - local.set $4 - end - local.get $4 - i32.const 23 - i32.lt_u - if (result i32) - local.get $5 - i32.const 16 - i32.lt_u - else - i32.const 0 - end - i32.eqz - if - i32.const 0 - i32.const 128 - i32.const 290 - i32.const 13 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.load offset=16 - local.set $6 - local.get $1 - i32.load offset=20 - local.set $7 - local.get $6 - if - local.get $6 - local.get $7 - i32.store offset=20 - end - local.get $7 - if - local.get $7 - local.get $6 - i32.store offset=16 - end - local.get $1 - block $~lib/rt/tlsf/GETHEAD|inlined.0 (result i32) - local.get $0 - local.set $10 - local.get $4 - local.set $9 - local.get $5 - local.set $8 - local.get $10 - local.get $9 - i32.const 4 - i32.shl - local.get $8 - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - end - i32.eq - if - block $~lib/rt/tlsf/SETHEAD|inlined.1 - local.get $0 - local.set $11 - local.get $4 - local.set $10 - local.get $5 - local.set $9 - local.get $7 - local.set $8 - local.get $11 - local.get $10 - i32.const 4 - i32.shl - local.get $9 - i32.add - i32.const 2 - i32.shl - i32.add - local.get $8 - i32.store offset=96 - end - local.get $7 - i32.eqz - if - block $~lib/rt/tlsf/GETSL|inlined.0 (result i32) - local.get $0 - local.set $9 - local.get $4 - local.set $8 - local.get $9 - local.get $8 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - end - local.set $8 - block $~lib/rt/tlsf/SETSL|inlined.1 - local.get $0 - local.set $11 - local.get $4 - local.set $10 - local.get $8 - i32.const 1 - local.get $5 - i32.shl - i32.const -1 - i32.xor - i32.and - local.tee $8 - local.set $9 - local.get $11 - local.get $10 - i32.const 2 - i32.shl - i32.add - local.get $9 - i32.store offset=4 - end - local.get $8 - i32.eqz - if - local.get $0 - local.get $0 - i32.load - i32.const 1 - local.get $4 - i32.shl - i32.const -1 - i32.xor - i32.and - i32.store - end - end - end - ) - (func $~lib/rt/tlsf/insertBlock (; 5 ;) (type $FUNCSIG$vii) (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 $9 i32) - (local $10 i32) - (local $11 i32) - (local $12 i32) - (local $13 i32) - local.get $1 - i32.eqz - if - i32.const 0 - i32.const 128 - i32.const 203 - i32.const 13 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.load - local.set $2 - local.get $2 - i32.const 1 - i32.and - i32.eqz - if - i32.const 0 - i32.const 128 - i32.const 205 - i32.const 13 - call $~lib/builtins/abort - unreachable - end - block $~lib/rt/tlsf/GETRIGHT|inlined.0 (result i32) - local.get $1 - local.set $3 - local.get $3 - i32.const 16 - i32.add - local.get $3 - i32.load - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.add - end - local.set $4 - local.get $4 - i32.load - local.set $5 - local.get $5 - i32.const 1 - i32.and - if - local.get $2 - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.const 16 - i32.add - local.get $5 - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.add - local.set $3 - local.get $3 - i32.const 1073741808 - i32.lt_u - if - local.get $0 - local.get $4 - call $~lib/rt/tlsf/removeBlock - local.get $1 - local.get $2 - i32.const 3 - i32.and - local.get $3 - i32.or - local.tee $2 - i32.store - block $~lib/rt/tlsf/GETRIGHT|inlined.1 (result i32) - local.get $1 - local.set $6 - local.get $6 - i32.const 16 - i32.add - local.get $6 - i32.load - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.add - end - local.set $4 - local.get $4 - i32.load - local.set $5 - end - end - local.get $2 - i32.const 2 - i32.and - if - block $~lib/rt/tlsf/GETFREELEFT|inlined.0 (result i32) - local.get $1 - local.set $3 - local.get $3 - i32.const 4 - i32.sub - i32.load - end - local.set $3 - local.get $3 - i32.load - local.set $6 - local.get $6 - i32.const 1 - i32.and - i32.eqz - if - i32.const 0 - i32.const 128 - i32.const 226 - i32.const 15 - call $~lib/builtins/abort - unreachable - end - local.get $6 - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.const 16 - i32.add - local.get $2 - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.add - local.set $7 - local.get $7 - i32.const 1073741808 - i32.lt_u - if - local.get $0 - local.get $3 - call $~lib/rt/tlsf/removeBlock - local.get $3 - local.get $6 - i32.const 3 - i32.and - local.get $7 - i32.or - local.tee $2 - i32.store - local.get $3 - local.set $1 - end - end - local.get $4 - local.get $5 - i32.const 2 - i32.or - i32.store - local.get $2 - i32.const 3 - i32.const -1 - i32.xor - i32.and - local.set $8 - local.get $8 - i32.const 16 - i32.ge_u - if (result i32) - local.get $8 - i32.const 1073741808 - i32.lt_u - else - i32.const 0 - end - i32.eqz - if - i32.const 0 - i32.const 128 - i32.const 241 - i32.const 13 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 16 - i32.add - local.get $8 - i32.add - local.get $4 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 128 - i32.const 242 - i32.const 13 - call $~lib/builtins/abort - unreachable - end - local.get $4 - i32.const 4 - i32.sub - local.get $1 - i32.store - local.get $8 - i32.const 256 - i32.lt_u - if - i32.const 0 - local.set $9 - local.get $8 - i32.const 4 - i32.shr_u - local.set $10 - else - i32.const 31 - local.get $8 - i32.clz - i32.sub - local.set $9 - local.get $8 - local.get $9 - i32.const 4 - i32.sub - i32.shr_u - i32.const 1 - i32.const 4 - i32.shl - i32.xor - local.set $10 - local.get $9 - i32.const 8 - i32.const 1 - i32.sub - i32.sub - local.set $9 - end - local.get $9 - i32.const 23 - i32.lt_u - if (result i32) - local.get $10 - i32.const 16 - i32.lt_u - else - i32.const 0 - end - i32.eqz - if - i32.const 0 - i32.const 128 - i32.const 258 - i32.const 13 - call $~lib/builtins/abort - unreachable - end - block $~lib/rt/tlsf/GETHEAD|inlined.1 (result i32) - local.get $0 - local.set $3 - local.get $9 - local.set $6 - local.get $10 - local.set $7 - local.get $3 - local.get $6 - i32.const 4 - i32.shl - local.get $7 - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - end - local.set $11 - local.get $1 - i32.const 0 - i32.store offset=16 - local.get $1 - local.get $11 - i32.store offset=20 - local.get $11 - if - local.get $11 - local.get $1 - i32.store offset=16 - end - block $~lib/rt/tlsf/SETHEAD|inlined.2 - local.get $0 - local.set $12 - local.get $9 - local.set $3 - local.get $10 - local.set $6 - local.get $1 - local.set $7 - local.get $12 - local.get $3 - i32.const 4 - i32.shl - local.get $6 - i32.add - i32.const 2 - i32.shl - i32.add - local.get $7 - i32.store offset=96 - end - local.get $0 - local.get $0 - i32.load - i32.const 1 - local.get $9 - i32.shl - i32.or - i32.store - block $~lib/rt/tlsf/SETSL|inlined.2 - local.get $0 - local.set $3 - local.get $9 - local.set $6 - block $~lib/rt/tlsf/GETSL|inlined.1 (result i32) - local.get $0 - local.set $13 - local.get $9 - local.set $12 - local.get $13 - local.get $12 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - end - i32.const 1 - local.get $10 - i32.shl - i32.or - local.set $7 - local.get $3 - local.get $6 - i32.const 2 - i32.shl - i32.add - local.get $7 - i32.store offset=4 - end - ) - (func $~lib/rt/tlsf/addMemory (; 6 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) - local.get $1 - local.get $2 - i32.le_u - if (result i32) - local.get $1 - i32.const 15 - i32.and - i32.eqz - else - i32.const 0 - end - if (result i32) - local.get $2 - i32.const 15 - i32.and - i32.eqz - else - i32.const 0 - end - i32.eqz - if - i32.const 0 - i32.const 128 - i32.const 384 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - block $~lib/rt/tlsf/GETTAIL|inlined.0 (result i32) - local.get $0 - local.set $3 - local.get $3 - i32.load offset=1568 - end - local.set $4 - i32.const 0 - local.set $5 - local.get $4 - if - local.get $1 - local.get $4 - i32.const 16 - i32.add - i32.ge_u - i32.eqz - if - i32.const 0 - i32.const 128 - i32.const 394 - i32.const 15 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 16 - i32.sub - local.get $4 - i32.eq - if - local.get $1 - i32.const 16 - i32.sub - local.set $1 - local.get $4 - i32.load - local.set $5 - else - nop - end - else - local.get $1 - local.get $0 - i32.const 1572 - i32.add - i32.ge_u - i32.eqz - if - i32.const 0 - i32.const 128 - i32.const 406 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - end - local.get $2 - local.get $1 - i32.sub - local.set $6 - local.get $6 - i32.const 48 - i32.lt_u - if - i32.const 0 - return - end - local.get $6 - i32.const 2 - i32.const 16 - i32.mul - i32.sub - local.set $7 - local.get $1 - local.set $8 - local.get $8 - local.get $7 - i32.const 1 - i32.or - local.get $5 - i32.const 2 - i32.and - i32.or - i32.store - local.get $8 - i32.const 0 - i32.store offset=16 - local.get $8 - i32.const 0 - i32.store offset=20 - local.get $1 - local.get $6 - i32.add - i32.const 16 - i32.sub - local.set $4 - local.get $4 - i32.const 0 - i32.const 2 - i32.or - i32.store - block $~lib/rt/tlsf/SETTAIL|inlined.1 - local.get $0 - local.set $9 - local.get $4 - local.set $3 - local.get $9 - local.get $3 - i32.store offset=1568 - end - local.get $0 - local.get $8 - call $~lib/rt/tlsf/insertBlock - i32.const 1 - ) - (func $~lib/rt/tlsf/initializeRoot (; 7 ;) (type $FUNCSIG$v) - (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) - (local $9 i32) - global.get $~lib/builtins/HEAP_BASE - i32.const 15 - i32.add - i32.const 15 - i32.const -1 - i32.xor - i32.and - local.set $0 - current_memory - local.set $1 - local.get $0 - i32.const 1572 - i32.add - i32.const 65535 - i32.add - i32.const 65535 - i32.const -1 - i32.xor - i32.and - i32.const 16 - i32.shr_u - local.set $2 - local.get $2 - local.get $1 - i32.gt_s - if (result i32) - local.get $2 - local.get $1 - i32.sub - grow_memory - i32.const 0 - i32.lt_s - else - i32.const 0 - end - if - unreachable - end - local.get $0 - local.set $3 - local.get $3 - i32.const 0 - i32.store - block $~lib/rt/tlsf/SETTAIL|inlined.0 - local.get $3 - local.set $5 - i32.const 0 - local.set $4 - local.get $5 - local.get $4 - i32.store offset=1568 - end - block $break|0 - i32.const 0 - local.set $4 - loop $repeat|0 - local.get $4 - i32.const 23 - i32.lt_u - i32.eqz - br_if $break|0 - block $~lib/rt/tlsf/SETSL|inlined.0 - local.get $3 - local.set $7 - local.get $4 - local.set $6 - i32.const 0 - local.set $5 - local.get $7 - local.get $6 - i32.const 2 - i32.shl - i32.add - local.get $5 - i32.store offset=4 - end - block $break|1 - i32.const 0 - local.set $5 - loop $repeat|1 - local.get $5 - i32.const 16 - i32.lt_u - i32.eqz - br_if $break|1 - block $~lib/rt/tlsf/SETHEAD|inlined.0 - local.get $3 - local.set $9 - local.get $4 - local.set $8 - local.get $5 - local.set $7 - i32.const 0 - local.set $6 - local.get $9 - local.get $8 - i32.const 4 - i32.shl - local.get $7 - i32.add - i32.const 2 - i32.shl - i32.add - local.get $6 - i32.store offset=96 - end - local.get $5 - i32.const 1 - i32.add - local.set $5 - br $repeat|1 - unreachable - end - unreachable - end - local.get $4 - i32.const 1 - i32.add - local.set $4 - br $repeat|0 - unreachable - end - unreachable - end - local.get $3 - local.get $0 - i32.const 1572 - i32.add - i32.const 15 - i32.add - i32.const 15 - i32.const -1 - i32.xor - i32.and - current_memory - i32.const 16 - i32.shl - call $~lib/rt/tlsf/addMemory - drop - local.get $3 - global.set $~lib/rt/tlsf/ROOT - ) - (func $~lib/rt/tlsf/prepareSize (; 8 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - local.get $0 - i32.const 1073741808 - i32.ge_u - if - i32.const 176 - i32.const 128 - i32.const 446 - i32.const 29 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 15 - i32.add - i32.const 15 - i32.const -1 - i32.xor - i32.and - local.tee $1 - i32.const 16 - local.tee $2 - local.get $1 - local.get $2 - i32.gt_u - select - ) - (func $~lib/rt/tlsf/searchBlock (; 9 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result 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 $1 - i32.const 256 - i32.lt_u - if - i32.const 0 - local.set $2 - local.get $1 - i32.const 4 - i32.shr_u - local.set $3 - else - local.get $1 - i32.const 536870904 - i32.lt_u - if (result i32) - local.get $1 - i32.const 1 - i32.const 27 - local.get $1 - i32.clz - i32.sub - i32.shl - i32.add - i32.const 1 - i32.sub - else - local.get $1 - end - local.set $4 - i32.const 31 - local.get $4 - i32.clz - i32.sub - local.set $2 - local.get $4 - local.get $2 - i32.const 4 - i32.sub - i32.shr_u - i32.const 1 - i32.const 4 - i32.shl - i32.xor - local.set $3 - local.get $2 - i32.const 8 - i32.const 1 - i32.sub - i32.sub - local.set $2 - end - local.get $2 - i32.const 23 - i32.lt_u - if (result i32) - local.get $3 - i32.const 16 - i32.lt_u - else - i32.const 0 - end - i32.eqz - if - i32.const 0 - i32.const 128 - i32.const 336 - i32.const 13 - call $~lib/builtins/abort - unreachable - end - block $~lib/rt/tlsf/GETSL|inlined.2 (result i32) - local.get $0 - local.set $5 - local.get $2 - local.set $4 - local.get $5 - local.get $4 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - end - i32.const 0 - i32.const -1 - i32.xor - local.get $3 - i32.shl - i32.and - local.set $6 - local.get $6 - i32.eqz - if - local.get $0 - i32.load - i32.const 0 - i32.const -1 - i32.xor - local.get $2 - i32.const 1 - i32.add - i32.shl - i32.and - local.set $4 - local.get $4 - i32.eqz - if - i32.const 0 - local.set $7 - else - local.get $4 - i32.ctz - local.set $2 - block $~lib/rt/tlsf/GETSL|inlined.3 (result i32) - local.get $0 - local.set $8 - local.get $2 - local.set $5 - local.get $8 - local.get $5 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - end - local.set $6 - local.get $6 - i32.eqz - if - i32.const 0 - i32.const 128 - i32.const 349 - i32.const 17 - call $~lib/builtins/abort - unreachable - end - block $~lib/rt/tlsf/GETHEAD|inlined.2 (result i32) - local.get $0 - local.set $9 - local.get $2 - local.set $8 - local.get $6 - i32.ctz - local.set $5 - local.get $9 - local.get $8 - i32.const 4 - i32.shl - local.get $5 - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - end - local.set $7 - end - else - block $~lib/rt/tlsf/GETHEAD|inlined.3 (result i32) - local.get $0 - local.set $8 - local.get $2 - local.set $5 - local.get $6 - i32.ctz - local.set $4 - local.get $8 - local.get $5 - i32.const 4 - i32.shl - local.get $4 - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - end - local.set $7 - end - local.get $7 - ) - (func $~lib/rt/tlsf/growMemory (; 10 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - current_memory - local.set $2 - local.get $1 - i32.const 65535 - i32.add - i32.const 65535 - i32.const -1 - i32.xor - i32.and - i32.const 16 - i32.shr_u - local.set $3 - local.get $2 - local.tee $4 - local.get $3 - local.tee $5 - local.get $4 - local.get $5 - i32.gt_s - select - local.set $6 - local.get $6 - grow_memory - i32.const 0 - i32.lt_s - if - local.get $3 - grow_memory - i32.const 0 - i32.lt_s - if - unreachable - end - end - current_memory - local.set $7 - local.get $0 - local.get $2 - i32.const 16 - i32.shl - local.get $7 - i32.const 16 - i32.shl - call $~lib/rt/tlsf/addMemory - drop - ) - (func $~lib/rt/tlsf/prepareBlock (; 11 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $1 - i32.load - local.set $3 - local.get $2 - i32.const 15 - i32.and - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 128 - i32.const 363 - i32.const 13 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const 3 - i32.const -1 - i32.xor - i32.and - local.get $2 - i32.sub - local.set $4 - local.get $4 - i32.const 32 - i32.ge_u - if - local.get $1 - local.get $2 - local.get $3 - i32.const 2 - i32.and - i32.or - i32.store - local.get $1 - i32.const 16 - i32.add - local.get $2 - i32.add - local.set $5 - local.get $5 - local.get $4 - i32.const 16 - i32.sub - i32.const 1 - i32.or - i32.store - local.get $0 - local.get $5 - call $~lib/rt/tlsf/insertBlock - else - local.get $1 - local.get $3 - i32.const 1 - i32.const -1 - i32.xor - i32.and - i32.store - block $~lib/rt/tlsf/GETRIGHT|inlined.3 (result i32) - local.get $1 - local.set $5 - local.get $5 - i32.const 16 - i32.add - local.get $5 - i32.load - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.add - end - block $~lib/rt/tlsf/GETRIGHT|inlined.2 (result i32) - local.get $1 - local.set $5 - local.get $5 - i32.const 16 - i32.add - local.get $5 - i32.load - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.add - end - i32.load - i32.const 2 - i32.const -1 - i32.xor - i32.and - i32.store - end - ) - (func $~lib/rt/tlsf/allocateBlock (; 12 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - local.get $1 - call $~lib/rt/tlsf/prepareSize - local.set $2 - local.get $0 - local.get $2 - call $~lib/rt/tlsf/searchBlock - local.set $3 - local.get $3 - i32.eqz - if - local.get $0 - local.get $2 - call $~lib/rt/tlsf/growMemory - local.get $0 - local.get $2 - call $~lib/rt/tlsf/searchBlock - local.set $3 - local.get $3 - i32.eqz - if - i32.const 0 - i32.const 128 - i32.const 476 - i32.const 15 - call $~lib/builtins/abort - unreachable - end - end - local.get $3 - i32.load - i32.const 3 - i32.const -1 - i32.xor - i32.and - local.get $2 - i32.ge_u - i32.eqz - if - i32.const 0 - i32.const 128 - i32.const 478 - i32.const 13 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const 0 - i32.store offset=4 - local.get $3 - local.get $1 - i32.store offset=12 - local.get $0 - local.get $3 - call $~lib/rt/tlsf/removeBlock - local.get $0 - local.get $3 - local.get $2 - call $~lib/rt/tlsf/prepareBlock - local.get $3 - ) - (func $~lib/rt/tlsf/__alloc (; 13 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - global.get $~lib/rt/tlsf/ROOT - local.set $2 - local.get $2 - i32.eqz - if - call $~lib/rt/tlsf/initializeRoot - global.get $~lib/rt/tlsf/ROOT - local.set $2 - end - local.get $2 - local.get $0 - call $~lib/rt/tlsf/allocateBlock - local.set $3 - local.get $3 - local.get $1 - i32.store offset=8 - local.get $3 - i32.const 16 - i32.add - ) - (func $~lib/rt/purerc/increment (; 14 ;) (type $FUNCSIG$vi) (param $0 i32) - (local $1 i32) - local.get $0 - i32.load offset=4 - local.set $1 - local.get $1 - i32.const 268435455 - i32.const -1 - i32.xor - i32.and - local.get $1 - i32.const 1 - i32.add - i32.const 268435455 - i32.const -1 - i32.xor - i32.and - i32.eq - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 103 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - i32.const 1 - i32.add - i32.store offset=4 - local.get $0 - call $~lib/rt/purerc/onIncrement - local.get $0 - i32.load - i32.const 1 - i32.and - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 106 - i32.const 13 - call $~lib/builtins/abort - unreachable - end - ) - (func $~lib/rt/purerc/__retain (; 15 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - local.get $0 - global.get $~lib/builtins/HEAP_BASE - i32.gt_u - if - local.get $0 - i32.const 16 - i32.sub - call $~lib/rt/purerc/increment - end - local.get $0 - ) - (func $~lib/memory/memory.copy (; 16 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - block $~lib/util/memory/memmove|inlined.0 - local.get $0 - local.set $5 - local.get $1 - local.set $4 - local.get $2 - local.set $3 - local.get $5 - local.get $4 - i32.eq - if - br $~lib/util/memory/memmove|inlined.0 - end - local.get $5 - local.get $4 - i32.lt_u - if - local.get $4 - i32.const 7 - i32.and - local.get $5 - i32.const 7 - i32.and - i32.eq - if - block $break|0 - loop $continue|0 - local.get $5 - i32.const 7 - i32.and - if - local.get $3 - i32.eqz - if - br $~lib/util/memory/memmove|inlined.0 - end - local.get $3 - i32.const 1 - i32.sub - local.set $3 - block (result i32) - local.get $5 - local.tee $6 - i32.const 1 - i32.add - local.set $5 - local.get $6 - end - block (result i32) - local.get $4 - local.tee $6 - i32.const 1 - i32.add - local.set $4 - local.get $6 - end - i32.load8_u - i32.store8 - br $continue|0 - end - end - end - block $break|1 - loop $continue|1 - local.get $3 - i32.const 8 - i32.ge_u - if - local.get $5 - local.get $4 - i64.load - i64.store - local.get $3 - i32.const 8 - i32.sub - local.set $3 - local.get $5 - i32.const 8 - i32.add - local.set $5 - local.get $4 - i32.const 8 - i32.add - local.set $4 - br $continue|1 - end - end - end - end - block $break|2 - loop $continue|2 - local.get $3 - if - block (result i32) - local.get $5 - local.tee $6 - i32.const 1 - i32.add - local.set $5 - local.get $6 - end - block (result i32) - local.get $4 - local.tee $6 - i32.const 1 - i32.add - local.set $4 - local.get $6 - end - i32.load8_u - i32.store8 - local.get $3 - i32.const 1 - i32.sub - local.set $3 - br $continue|2 - end - end - end - else - local.get $4 - i32.const 7 - i32.and - local.get $5 - i32.const 7 - i32.and - i32.eq - if - block $break|3 - loop $continue|3 - local.get $5 - local.get $3 - i32.add - i32.const 7 - i32.and - if - local.get $3 - i32.eqz - if - br $~lib/util/memory/memmove|inlined.0 - end - local.get $5 - local.get $3 - i32.const 1 - i32.sub - local.tee $3 - i32.add - local.get $4 - local.get $3 - i32.add - i32.load8_u - i32.store8 - br $continue|3 - end - end - end - block $break|4 - loop $continue|4 - local.get $3 - i32.const 8 - i32.ge_u - if - local.get $3 - i32.const 8 - i32.sub - local.set $3 - local.get $5 - local.get $3 - i32.add - local.get $4 - local.get $3 - i32.add - i64.load - i64.store - br $continue|4 - end - end - end - end - block $break|5 - loop $continue|5 - local.get $3 - if - local.get $5 - local.get $3 - i32.const 1 - i32.sub - local.tee $3 - i32.add - local.get $4 - local.get $3 - i32.add - i32.load8_u - i32.store8 - br $continue|5 - end - end - end - end - end - ) - (func $~lib/rt/common/__allocArray (; 17 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - i32.const 16 - local.get $2 - call $~lib/rt/tlsf/__alloc - local.set $4 - local.get $0 - local.get $1 - i32.shl - local.set $5 - local.get $5 - i32.const 15 - call $~lib/rt/tlsf/__alloc - local.set $6 - local.get $4 - local.get $6 - call $~lib/rt/purerc/__retain - i32.store - local.get $4 - local.get $6 - i32.store offset=4 - local.get $4 - local.get $5 - i32.store offset=8 - local.get $4 - local.get $0 - i32.store offset=12 - local.get $3 - if - local.get $6 - local.get $3 - local.get $5 - call $~lib/memory/memory.copy - end - local.get $4 - ) - (func $~lib/string/String#get:length (; 18 ;) (type $FUNCSIG$ii) (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 (; 19 ;) (type $FUNCSIG$iiiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (result i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - local.get $0 - call $~lib/rt/purerc/__retain - drop - local.get $2 - call $~lib/rt/purerc/__retain - drop - i32.const 0 - local.set $5 - local.get $0 - local.get $1 - i32.const 1 - i32.shl - i32.add - local.set $6 - local.get $2 - local.get $3 - i32.const 1 - i32.shl - i32.add - local.set $7 - block $break|0 - loop $continue|0 - local.get $4 - if (result i32) - local.get $6 - i32.load16_u - local.get $7 - i32.load16_u - i32.sub - local.tee $5 - i32.eqz - else - i32.const 0 - end - if - local.get $4 - i32.const 1 - i32.sub - local.set $4 - local.get $6 - i32.const 2 - i32.add - local.set $6 - local.get $7 - i32.const 2 - i32.add - local.set $7 - br $continue|0 - end - end - end - local.get $0 - call $~lib/rt/purerc/__release - local.get $2 - call $~lib/rt/purerc/__release - local.get $5 - ) - (func $~lib/string/String#indexOf (; 20 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - local.get $1 - call $~lib/rt/purerc/__retain - drop - local.get $0 - i32.const 0 - i32.ne - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 140 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 0 - i32.eq - if - i32.const 304 - local.get $1 - call $~lib/rt/purerc/__retainRelease - local.set $1 - end - local.get $1 - call $~lib/string/String#get:length - local.set $3 - local.get $3 - i32.eqz - if - local.get $1 - call $~lib/rt/purerc/__release - i32.const 0 - return - end - local.get $0 - call $~lib/string/String#get:length - local.set $4 - local.get $4 - i32.eqz - if - local.get $1 - call $~lib/rt/purerc/__release - i32.const -1 - return - end - local.get $2 - local.tee $5 - i32.const 0 - local.tee $6 - local.get $5 - local.get $6 - i32.gt_s - select - local.tee $5 - local.get $4 - local.tee $6 - local.get $5 - local.get $6 - i32.lt_s - select - local.set $7 - local.get $4 - local.get $3 - i32.sub - local.set $4 - block $break|0 - local.get $7 - local.set $5 - loop $repeat|0 - local.get $5 - local.get $4 - i32.le_s - i32.eqz - br_if $break|0 - local.get $0 - local.get $5 - local.get $1 - i32.const 0 - local.get $3 - call $~lib/util/string/compareImpl - i32.eqz - if - local.get $1 - call $~lib/rt/purerc/__release - local.get $5 - return - end - local.get $5 - i32.const 1 - i32.add - local.set $5 - br $repeat|0 - unreachable - end - unreachable - end - local.get $1 - call $~lib/rt/purerc/__release - i32.const -1 - ) - (func $~lib/rt/tlsf/reallocateBlock (; 21 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - local.get $2 - call $~lib/rt/tlsf/prepareSize - local.set $3 - local.get $1 - i32.load - local.set $4 - local.get $4 - i32.const 1 - i32.and - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 128 - i32.const 491 - i32.const 13 - call $~lib/builtins/abort - unreachable - end - local.get $3 - local.get $4 - i32.const -4 - i32.and - i32.le_u - if - local.get $0 - local.get $1 - local.get $3 - call $~lib/rt/tlsf/prepareBlock - local.get $1 - local.get $2 - i32.store offset=12 - local.get $1 - return - end - block $~lib/rt/tlsf/GETRIGHT|inlined.4 (result i32) - local.get $1 - local.set $5 - local.get $5 - i32.const 16 - i32.add - local.get $5 - i32.load - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.add - end - local.set $6 - local.get $6 - i32.load - local.set $7 - local.get $7 - i32.const 1 - i32.and - if - local.get $4 - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.const 16 - i32.add - local.get $7 - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.add - local.set $5 - local.get $5 - local.get $3 - i32.ge_u - if - local.get $0 - local.get $6 - call $~lib/rt/tlsf/removeBlock - local.get $1 - local.get $4 - i32.const 3 - i32.and - local.get $5 - i32.or - i32.store - local.get $1 - local.get $2 - i32.store offset=12 - local.get $0 - local.get $1 - local.get $3 - call $~lib/rt/tlsf/prepareBlock - local.get $1 - return - end - end - local.get $0 - local.get $2 - call $~lib/rt/tlsf/allocateBlock - local.set $8 - local.get $8 - local.get $1 - i32.load offset=4 - i32.store offset=4 - local.get $8 - local.get $1 - i32.load offset=8 - i32.store offset=8 - local.get $8 - i32.const 16 - i32.add - local.get $1 - i32.const 16 - i32.add - local.get $2 - call $~lib/memory/memory.copy - local.get $1 - local.get $4 - i32.const 1 - i32.or - i32.store - local.get $0 - local.get $1 - call $~lib/rt/tlsf/insertBlock - local.get $1 - call $~lib/rt/tlsf/onFree - local.get $8 - ) - (func $~lib/rt/tlsf/__realloc (; 22 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - global.get $~lib/rt/tlsf/ROOT - i32.eqz - if - i32.const 0 - i32.const 128 - i32.const 552 - i32.const 13 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 0 - i32.ne - if (result i32) - local.get $0 - i32.const 15 - i32.and - i32.eqz - else - i32.const 0 - end - i32.eqz - if - i32.const 0 - i32.const 128 - i32.const 553 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/rt/tlsf/ROOT - local.get $0 - i32.const 16 - i32.sub - local.get $1 - call $~lib/rt/tlsf/reallocateBlock - i32.const 16 - i32.add - ) - (func $~lib/memory/memory.fill (; 23 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i64) - block $~lib/util/memory/memset|inlined.0 - local.get $0 - local.set $5 - local.get $1 - local.set $4 - local.get $2 - local.set $3 - local.get $3 - i32.eqz - if - br $~lib/util/memory/memset|inlined.0 - end - local.get $5 - local.get $4 - i32.store8 - local.get $5 - local.get $3 - i32.add - i32.const 1 - i32.sub - local.get $4 - i32.store8 - local.get $3 - i32.const 2 - i32.le_u - if - br $~lib/util/memory/memset|inlined.0 - end - local.get $5 - i32.const 1 - i32.add - local.get $4 - i32.store8 - local.get $5 - i32.const 2 - i32.add - local.get $4 - i32.store8 - local.get $5 - local.get $3 - i32.add - i32.const 2 - i32.sub - local.get $4 - i32.store8 - local.get $5 - local.get $3 - i32.add - i32.const 3 - i32.sub - local.get $4 - i32.store8 - local.get $3 - i32.const 6 - i32.le_u - if - br $~lib/util/memory/memset|inlined.0 - end - local.get $5 - i32.const 3 - i32.add - local.get $4 - i32.store8 - local.get $5 - local.get $3 - i32.add - i32.const 4 - i32.sub - local.get $4 - i32.store8 - local.get $3 - i32.const 8 - i32.le_u - if - br $~lib/util/memory/memset|inlined.0 - end - i32.const 0 - local.get $5 - i32.sub - i32.const 3 - i32.and - local.set $6 - local.get $5 - local.get $6 - i32.add - local.set $5 - local.get $3 - local.get $6 - i32.sub - local.set $3 - local.get $3 - i32.const -4 - i32.and - local.set $3 - i32.const -1 - i32.const 255 - i32.div_u - local.get $4 - i32.const 255 - i32.and - i32.mul - local.set $7 - local.get $5 - local.get $7 - i32.store - local.get $5 - local.get $3 - i32.add - i32.const 4 - i32.sub - local.get $7 - i32.store - local.get $3 - i32.const 8 - i32.le_u - if - br $~lib/util/memory/memset|inlined.0 - end - local.get $5 - i32.const 4 - i32.add - local.get $7 - i32.store - local.get $5 - i32.const 8 - i32.add - local.get $7 - i32.store - local.get $5 - local.get $3 - i32.add - i32.const 12 - i32.sub - local.get $7 - i32.store - local.get $5 - local.get $3 - i32.add - i32.const 8 - i32.sub - local.get $7 - i32.store - local.get $3 - i32.const 24 - i32.le_u - if - br $~lib/util/memory/memset|inlined.0 - end - local.get $5 - i32.const 12 - i32.add - local.get $7 - i32.store - local.get $5 - i32.const 16 - i32.add - local.get $7 - i32.store - local.get $5 - i32.const 20 - i32.add - local.get $7 - i32.store - local.get $5 - i32.const 24 - i32.add - local.get $7 - i32.store - local.get $5 - local.get $3 - i32.add - i32.const 28 - i32.sub - local.get $7 - i32.store - local.get $5 - local.get $3 - i32.add - i32.const 24 - i32.sub - local.get $7 - i32.store - local.get $5 - local.get $3 - i32.add - i32.const 20 - i32.sub - local.get $7 - i32.store - local.get $5 - local.get $3 - i32.add - i32.const 16 - i32.sub - local.get $7 - i32.store - i32.const 24 - local.get $5 - i32.const 4 - i32.and - i32.add - local.set $6 - local.get $5 - local.get $6 - i32.add - local.set $5 - local.get $3 - local.get $6 - i32.sub - local.set $3 - local.get $7 - i64.extend_i32_u - local.get $7 - i64.extend_i32_u - i64.const 32 - i64.shl - i64.or - local.set $8 - block $break|0 - loop $continue|0 - local.get $3 - i32.const 32 - i32.ge_u - if - local.get $5 - local.get $8 - i64.store - local.get $5 - i32.const 8 - i32.add - local.get $8 - i64.store - local.get $5 - i32.const 16 - i32.add - local.get $8 - i64.store - local.get $5 - i32.const 24 - i32.add - local.get $8 - i64.store - local.get $3 - i32.const 32 - i32.sub - local.set $3 - local.get $5 - i32.const 32 - i32.add - local.set $5 - br $continue|0 - end - end - end - end - ) - (func $~lib/array/ensureSize (; 24 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - local.get $0 - i32.load offset=8 - local.set $3 - local.get $1 - local.get $3 - local.get $2 - i32.shr_u - i32.gt_u - if - local.get $1 - i32.const 1073741808 - local.get $2 - i32.shr_u - i32.gt_u - if - i32.const 328 - i32.const 376 - i32.const 14 - i32.const 47 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load - local.set $4 - local.get $1 - local.get $2 - i32.shl - local.set $5 - local.get $4 - local.get $5 - call $~lib/rt/tlsf/__realloc - local.set $6 - local.get $6 - local.get $3 - i32.add - i32.const 0 - local.get $5 - local.get $3 - i32.sub - call $~lib/memory/memory.fill - local.get $6 - local.get $4 - i32.ne - if - local.get $0 - local.get $6 - call $~lib/rt/purerc/__retain - i32.store - local.get $0 - local.get $6 - i32.store offset=4 - end - local.get $0 - local.get $5 - i32.store offset=8 - end - ) - (func $~lib/rt/tlsf/freeBlock (; 25 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) - (local $2 i32) - local.get $1 - i32.load - local.set $2 - local.get $2 - i32.const 1 - i32.and - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 128 - i32.const 530 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $1 - local.get $2 - i32.const 1 - i32.or - i32.store - local.get $0 - local.get $1 - call $~lib/rt/tlsf/insertBlock - local.get $1 - call $~lib/rt/tlsf/onFree - ) - (func $~lib/rt/common/__typeinfo (; 26 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - (local $1 i32) - global.get $~lib/builtins/RTTI_BASE - local.set $1 - local.get $0 - i32.eqz - if (result i32) - i32.const 1 - else - local.get $0 - local.get $1 - i32.load - i32.gt_u - end - if - i32.const 424 - i32.const 480 - i32.const 55 - i32.const 34 - call $~lib/builtins/abort - unreachable - end - local.get $1 - local.get $0 - i32.const 8 - i32.mul - i32.add - i32.load - ) - (func $~lib/rt/purerc/growRoots (; 27 ;) (type $FUNCSIG$v) - (local $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - global.get $~lib/rt/purerc/ROOTS - local.set $0 - global.get $~lib/rt/purerc/CUR - local.get $0 - i32.sub - local.set $1 - local.get $1 - i32.const 2 - i32.mul - local.tee $2 - i32.const 64 - i32.const 2 - i32.shl - local.tee $3 - local.get $2 - local.get $3 - i32.gt_u - select - local.set $4 - local.get $4 - i32.const 0 - call $~lib/rt/tlsf/__alloc - local.set $5 - local.get $5 - local.get $0 - local.get $1 - call $~lib/memory/memory.copy - local.get $5 - global.set $~lib/rt/purerc/ROOTS - local.get $5 - local.get $1 - i32.add - global.set $~lib/rt/purerc/CUR - local.get $5 - local.get $4 - i32.add - global.set $~lib/rt/purerc/END - ) - (func $~lib/rt/purerc/appendRoot (; 28 ;) (type $FUNCSIG$vi) (param $0 i32) - (local $1 i32) - global.get $~lib/rt/purerc/CUR - local.set $1 - local.get $1 - global.get $~lib/rt/purerc/END - i32.ge_u - if - call $~lib/rt/purerc/growRoots - global.get $~lib/rt/purerc/CUR - local.set $1 - end - local.get $1 - local.get $0 - i32.store - local.get $1 - i32.const 1 - i32.add - global.set $~lib/rt/purerc/CUR - ) - (func $~lib/rt/purerc/decrement (; 29 ;) (type $FUNCSIG$vi) (param $0 i32) - (local $1 i32) - (local $2 i32) - local.get $0 - i32.load offset=4 - local.set $1 - local.get $1 - i32.const 268435455 - i32.and - local.set $2 - local.get $0 - call $~lib/rt/purerc/onDecrement - local.get $0 - i32.load - i32.const 1 - i32.and - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 114 - i32.const 13 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.const 1 - i32.eq - if - local.get $0 - i32.const 16 - i32.add - i32.const 1 - call $~lib/builtins/__visit_members - local.get $1 - i32.const -2147483648 - i32.and - i32.eqz - if - global.get $~lib/rt/tlsf/ROOT - local.get $0 - call $~lib/rt/tlsf/freeBlock - else - local.get $0 - i32.const -2147483648 - i32.const 0 - i32.or - i32.const 0 - i32.or - i32.store offset=4 - end - else - local.get $2 - i32.const 0 - i32.gt_u - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 123 - i32.const 15 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load offset=8 - call $~lib/rt/common/__typeinfo - i32.const 8 - i32.and - i32.eqz - if - local.get $0 - i32.const -2147483648 - i32.const 805306368 - i32.or - local.get $2 - i32.const 1 - i32.sub - i32.or - i32.store offset=4 - local.get $1 - i32.const -2147483648 - i32.and - i32.eqz - if - local.get $0 - call $~lib/rt/purerc/appendRoot - end - else - local.get $0 - local.get $1 - i32.const 268435455 - i32.const -1 - i32.xor - i32.and - local.get $2 - i32.const 1 - i32.sub - i32.or - i32.store offset=4 - end - end - ) - (func $~lib/rt/purerc/__retainRelease (; 30 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - local.get $0 - local.get $1 - i32.ne - if - global.get $~lib/builtins/HEAP_BASE - local.set $2 - local.get $0 - local.get $2 - i32.gt_u - if - local.get $0 - i32.const 16 - i32.sub - call $~lib/rt/purerc/increment - end - local.get $1 - local.get $2 - i32.gt_u - if - local.get $1 - i32.const 16 - i32.sub - call $~lib/rt/purerc/decrement - end - end - local.get $0 - ) - (func $~lib/array/Array<~lib/string/String>#push (; 31 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - local.get $1 - call $~lib/rt/purerc/__retain - drop - local.get $0 - i32.load offset=12 - local.set $2 - local.get $2 - i32.const 1 - i32.add - local.set $3 - local.get $0 - local.get $3 - i32.const 2 - call $~lib/array/ensureSize - local.get $0 - i32.load offset=4 - local.get $2 - i32.const 2 - i32.shl - i32.add - local.set $4 - local.get $4 - local.get $1 - local.get $4 - i32.load - call $~lib/rt/purerc/__retainRelease - i32.store - local.get $0 - local.get $3 - i32.store offset=12 - local.get $1 - call $~lib/rt/purerc/__release - local.get $3 - ) - (func $~lib/string/String#split (; 32 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) - (local $10 i32) - (local $11 i32) - (local $12 i32) - (local $13 i32) - local.get $1 - call $~lib/rt/purerc/__retain - drop - local.get $0 - i32.const 0 - i32.ne - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 357 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.eqz - if - i32.const 0 - i32.const 2 - i32.const 17 - i32.const 0 - call $~lib/rt/common/__allocArray - call $~lib/rt/purerc/__retain - local.set $3 - local.get $1 - call $~lib/rt/purerc/__release - local.get $3 - return - end - local.get $1 - i32.const 0 - i32.eq - if - block (result i32) - i32.const 1 - i32.const 2 - i32.const 17 - i32.const 0 - call $~lib/rt/common/__allocArray - local.set $3 - local.get $3 - i32.load offset=4 - local.set $4 - local.get $4 - local.get $0 - call $~lib/rt/purerc/__retain - i32.store - local.get $3 - end - call $~lib/rt/purerc/__retain - local.set $4 - local.get $1 - call $~lib/rt/purerc/__release - local.get $4 - return - end - local.get $0 - call $~lib/string/String#get:length - local.set $5 - local.get $1 - call $~lib/string/String#get:length - local.set $6 - local.get $2 - i32.const 0 - i32.lt_s - if - global.get $~lib/builtins/i32.MAX_VALUE - local.set $2 - end - local.get $6 - i32.eqz - if - local.get $5 - i32.eqz - if - i32.const 0 - i32.const 2 - i32.const 17 - i32.const 0 - call $~lib/rt/common/__allocArray - call $~lib/rt/purerc/__retain - local.set $4 - local.get $1 - call $~lib/rt/purerc/__release - local.get $4 - return - end - local.get $5 - local.tee $4 - local.get $2 - local.tee $3 - local.get $4 - local.get $3 - i32.lt_s - select - local.set $5 - local.get $5 - i32.const 2 - i32.const 17 - i32.const 0 - call $~lib/rt/common/__allocArray - local.set $4 - local.get $4 - i32.load offset=4 - local.set $3 - block $break|0 - i32.const 0 - local.set $7 - loop $repeat|0 - local.get $7 - local.get $5 - i32.lt_s - i32.eqz - br_if $break|0 - i32.const 2 - i32.const 16 - call $~lib/rt/tlsf/__alloc - local.set $8 - local.get $8 - local.get $0 - local.get $7 - i32.const 1 - i32.shl - i32.add - i32.load16_u - i32.store16 - local.get $3 - local.get $7 - i32.const 2 - i32.shl - i32.add - local.get $8 - i32.store - local.get $8 - call $~lib/rt/purerc/__retain - drop - local.get $7 - i32.const 1 - i32.add - local.set $7 - br $repeat|0 - unreachable - end - unreachable - end - local.get $4 - call $~lib/rt/purerc/__retain - local.set $8 - local.get $1 - call $~lib/rt/purerc/__release - local.get $8 - return - else - local.get $5 - i32.eqz - if - i32.const 1 - i32.const 2 - i32.const 17 - i32.const 0 - call $~lib/rt/common/__allocArray - local.set $3 - local.get $3 - i32.load offset=4 - i32.const 288 - i32.store - local.get $3 - call $~lib/rt/purerc/__retain - local.set $4 - local.get $1 - call $~lib/rt/purerc/__release - local.get $4 - return - end - end - i32.const 0 - i32.const 2 - i32.const 17 - i32.const 0 - call $~lib/rt/common/__allocArray - call $~lib/rt/purerc/__retain - local.set $9 - i32.const 0 - local.set $10 - i32.const 0 - local.set $11 - i32.const 0 - local.set $12 - block $break|1 - loop $continue|1 - local.get $0 - local.get $1 - local.get $11 - call $~lib/string/String#indexOf - local.tee $10 - i32.const -1 - i32.ne - if - local.get $10 - local.get $11 - i32.sub - local.set $3 - local.get $3 - i32.const 0 - i32.gt_s - if - local.get $3 - i32.const 1 - i32.shl - i32.const 16 - call $~lib/rt/tlsf/__alloc - local.set $4 - local.get $4 - local.get $0 - local.get $11 - i32.const 1 - i32.shl - i32.add - local.get $3 - i32.const 1 - i32.shl - call $~lib/memory/memory.copy - local.get $9 - local.get $4 - call $~lib/array/Array<~lib/string/String>#push - drop - else - local.get $9 - i32.const 288 - call $~lib/array/Array<~lib/string/String>#push - drop - end - local.get $12 - i32.const 1 - i32.add - local.tee $12 - local.get $2 - i32.eq - if - local.get $9 - local.set $4 - local.get $1 - call $~lib/rt/purerc/__release - local.get $4 - return - end - local.get $10 - local.get $6 - i32.add - local.set $11 - br $continue|1 - end - end - end - local.get $11 - i32.eqz - if - local.get $9 - local.get $0 - call $~lib/array/Array<~lib/string/String>#push - drop - local.get $9 - local.set $3 - local.get $1 - call $~lib/rt/purerc/__release - local.get $3 - return - end - local.get $5 - local.get $11 - i32.sub - local.set $13 - local.get $13 - i32.const 0 - i32.gt_s - if - local.get $13 - i32.const 1 - i32.shl - i32.const 16 - call $~lib/rt/tlsf/__alloc - local.set $3 - local.get $3 - local.get $0 - local.get $11 - i32.const 1 - i32.shl - i32.add - local.get $13 - i32.const 1 - i32.shl - call $~lib/memory/memory.copy - local.get $9 - local.get $3 - call $~lib/array/Array<~lib/string/String>#push - drop - else - local.get $9 - i32.const 288 - call $~lib/array/Array<~lib/string/String>#push - drop - end - local.get $9 - local.set $3 - local.get $1 - call $~lib/rt/purerc/__release - local.get $3 - ) - (func $~lib/array/Array<~lib/string/String>#get:length (; 33 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - local.get $0 - i32.load offset=12 - ) - (func $~lib/array/Array<~lib/string/String>#__unchecked_get (; 34 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - local.get $0 - i32.load offset=4 - local.get $1 - i32.const 2 - i32.shl - i32.add - i32.load - call $~lib/rt/purerc/__retain - ) - (func $~lib/array/Array<~lib/string/String>#__get (; 35 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - local.get $1 - local.get $0 - i32.load offset=12 - i32.ge_u - if - i32.const 536 - i32.const 376 - i32.const 97 - i32.const 45 - call $~lib/builtins/abort - unreachable - end - local.get $1 - local.get $0 - i32.load offset=8 - i32.const 2 - i32.shr_u - i32.ge_u - if - i32.const 424 - i32.const 376 - i32.const 100 - i32.const 61 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - call $~lib/array/Array<~lib/string/String>#__unchecked_get - ) - (func $~lib/string/String.__eq (; 36 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - local.get $0 - call $~lib/rt/purerc/__retain - drop - local.get $1 - call $~lib/rt/purerc/__retain - drop - local.get $0 - local.get $1 - i32.eq - if - local.get $0 - call $~lib/rt/purerc/__release - local.get $1 - call $~lib/rt/purerc/__release - i32.const 1 - return - end - local.get $0 - i32.const 0 - i32.eq - if (result i32) - i32.const 1 - else - local.get $1 - i32.const 0 - i32.eq - end - if - local.get $0 - call $~lib/rt/purerc/__release - local.get $1 - call $~lib/rt/purerc/__release - i32.const 0 - return - end - local.get $0 - call $~lib/string/String#get:length - local.set $2 - local.get $2 - local.get $1 - call $~lib/string/String#get:length - i32.ne - if - local.get $0 - call $~lib/rt/purerc/__release - local.get $1 - call $~lib/rt/purerc/__release - i32.const 0 - return - end - local.get $0 - call $~lib/rt/purerc/__release - local.get $1 - call $~lib/rt/purerc/__release - local.get $0 - i32.const 0 - local.get $1 - i32.const 0 - local.get $2 - call $~lib/util/string/compareImpl - i32.eqz - ) - (func $start:empty (; 37 ;) (type $FUNCSIG$v) - (local $0 i32) - (local $1 i32) - i32.const 24 - i32.const 56 - global.get $~lib/builtins/i32.MAX_VALUE - call $~lib/string/String#split - local.set $0 - local.get $0 - call $~lib/array/Array<~lib/string/String>#get:length - i32.const 3 - i32.eq - if (result i32) - local.get $0 - i32.const 0 - call $~lib/array/Array<~lib/string/String>#__get - local.tee $1 - i32.const 648 - call $~lib/string/String.__eq - else - i32.const 0 - end - i32.eqz - if - i32.const 0 - i32.const 672 - i32.const 5 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $0 - call $~lib/rt/purerc/__release - ) - (func $empty/main (; 38 ;) (type $FUNCSIG$v) - global.get $~lib/started - i32.eqz - if - call $start - i32.const 1 - global.set $~lib/started - end - ) - (func $start (; 39 ;) (type $FUNCSIG$v) - call $start:empty - ) - (func $~lib/rt/purerc/__release (; 40 ;) (type $FUNCSIG$vi) (param $0 i32) - local.get $0 - global.get $~lib/builtins/HEAP_BASE - i32.gt_u - if - local.get $0 - i32.const 16 - i32.sub - call $~lib/rt/purerc/decrement - end - ) - (func $~lib/rt/purerc/markGray (; 41 ;) (type $FUNCSIG$vi) (param $0 i32) - (local $1 i32) - local.get $0 - i32.load offset=4 - local.set $1 - local.get $1 - i32.const 1879048192 - i32.and - i32.const 268435456 - i32.ne - if - local.get $0 - local.get $1 - i32.const 1879048192 - i32.const -1 - i32.xor - i32.and - i32.const 268435456 - i32.or - i32.store offset=4 - local.get $0 - i32.const 16 - i32.add - i32.const 2 - call $~lib/builtins/__visit_members - end - ) - (func $~lib/rt/purerc/scanBlack (; 42 ;) (type $FUNCSIG$vi) (param $0 i32) - local.get $0 - local.get $0 - i32.load offset=4 - i32.const 1879048192 - i32.const -1 - i32.xor - i32.and - i32.const 0 - i32.or - i32.store offset=4 - local.get $0 - i32.const 16 - i32.add - i32.const 4 - call $~lib/builtins/__visit_members - ) - (func $~lib/rt/purerc/scan (; 43 ;) (type $FUNCSIG$vi) (param $0 i32) - (local $1 i32) - local.get $0 - i32.load offset=4 - local.set $1 - local.get $1 - i32.const 1879048192 - i32.and - i32.const 268435456 - i32.eq - if - local.get $1 - i32.const 268435455 - i32.and - i32.const 0 - i32.gt_u - if - local.get $0 - call $~lib/rt/purerc/scanBlack - else - local.get $0 - local.get $1 - i32.const 1879048192 - i32.const -1 - i32.xor - i32.and - i32.const 536870912 - i32.or - i32.store offset=4 - local.get $0 - i32.const 16 - i32.add - i32.const 3 - call $~lib/builtins/__visit_members - end - end - ) - (func $~lib/rt/purerc/collectWhite (; 44 ;) (type $FUNCSIG$vi) (param $0 i32) - (local $1 i32) - local.get $0 - i32.load offset=4 - local.set $1 - local.get $1 - i32.const 1879048192 - i32.and - i32.const 536870912 - i32.eq - if (result i32) - local.get $1 - i32.const -2147483648 - i32.and - i32.eqz - else - i32.const 0 - end - if - local.get $0 - i32.const 16 - i32.add - i32.const 5 - call $~lib/builtins/__visit_members - end - global.get $~lib/rt/tlsf/ROOT - local.get $0 - call $~lib/rt/tlsf/freeBlock - ) - (func $~lib/rt/purerc/__visit (; 45 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - local.get $0 - global.get $~lib/builtins/HEAP_BASE - i32.lt_u - if - return - end - local.get $0 - i32.const 16 - i32.sub - local.set $2 - block $break|0 - block $case5|0 - block $case4|0 - block $case3|0 - block $case2|0 - block $case1|0 - block $case0|0 - local.get $1 - local.set $3 - local.get $3 - i32.const 1 - i32.eq - br_if $case0|0 - local.get $3 - i32.const 2 - i32.eq - br_if $case1|0 - local.get $3 - i32.const 3 - i32.eq - br_if $case2|0 - local.get $3 - i32.const 4 - i32.eq - br_if $case3|0 - local.get $3 - i32.const 5 - i32.eq - br_if $case4|0 - br $case5|0 - end - block - local.get $2 - call $~lib/rt/purerc/decrement - br $break|0 - unreachable - end - unreachable - end - block - local.get $2 - i32.load offset=4 - i32.const 268435455 - i32.and - i32.const 0 - i32.gt_u - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 74 - i32.const 17 - call $~lib/builtins/abort - unreachable - end - local.get $2 - local.get $2 - i32.load offset=4 - i32.const 1 - i32.sub - i32.store offset=4 - local.get $2 - call $~lib/rt/purerc/markGray - br $break|0 - unreachable - end - unreachable - end - block - local.get $2 - call $~lib/rt/purerc/scan - br $break|0 - unreachable - end - unreachable - end - block - local.get $2 - i32.load offset=4 - local.set $3 - local.get $3 - i32.const 268435455 - i32.const -1 - i32.xor - i32.and - local.get $3 - i32.const 1 - i32.add - i32.const 268435455 - i32.const -1 - i32.xor - i32.and - i32.eq - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 85 - i32.const 6 - call $~lib/builtins/abort - unreachable - end - local.get $2 - local.get $3 - i32.const 1 - i32.add - i32.store offset=4 - local.get $3 - i32.const 1879048192 - i32.and - i32.const 0 - i32.ne - if - local.get $2 - call $~lib/rt/purerc/scanBlack - end - br $break|0 - unreachable - end - unreachable - end - block - local.get $2 - call $~lib/rt/purerc/collectWhite - br $break|0 - unreachable - end - unreachable - end - i32.const 0 - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 96 - i32.const 24 - call $~lib/builtins/abort - unreachable - end - end - ) - (func $~lib/array/Array<~lib/string/String>#__visit_impl (; 46 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - local.get $0 - i32.load offset=4 - local.set $2 - local.get $2 - local.get $0 - i32.load offset=8 - i32.add - local.set $3 - block $break|0 - loop $continue|0 - local.get $2 - local.get $3 - i32.lt_u - if - local.get $2 - i32.load - local.set $4 - local.get $4 - if - local.get $4 - local.get $1 - call $~lib/rt/purerc/__visit - end - local.get $2 - i32.const 4 - i32.add - local.set $2 - br $continue|0 - end - end - end - ) - (func $~lib/array/Array#__visit_impl (; 47 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) - nop - ) - (func $~lib/builtins/__visit_members (; 48 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) - (local $2 i32) - block $block$16$break - block - end - block $switch$1$leave - block $switch$1$case$20 - block $switch$1$case$19 - block $switch$1$case$16 - block $switch$1$case$3 - block $switch$1$default - local.get $0 - i32.const 8 - i32.sub - i32.load - br_table $switch$1$default $switch$1$case$3 $switch$1$case$3 $switch$1$case$3 $switch$1$case$3 $switch$1$case$3 $switch$1$case$3 $switch$1$case$3 $switch$1$case$3 $switch$1$case$3 $switch$1$case$3 $switch$1$case$3 $switch$1$case$3 $switch$1$case$3 $switch$1$case$16 $switch$1$case$3 $switch$1$case$3 $switch$1$case$19 $switch$1$case$20 $switch$1$default - end - block - block - unreachable - unreachable - end - unreachable - unreachable - end - unreachable - end - block - block - return - unreachable - end - unreachable - unreachable - end - unreachable - end - block - br $block$16$break - unreachable - end - unreachable - end - block - block - local.get $0 - local.get $1 - call $~lib/array/Array<~lib/string/String>#__visit_impl - block - br $block$16$break - unreachable - end - unreachable - unreachable - end - unreachable - unreachable - end - unreachable - end - block - block - local.get $0 - local.get $1 - call $~lib/array/Array#__visit_impl - block - br $block$16$break - unreachable - end - unreachable - unreachable - end - unreachable - unreachable - end - unreachable - end - end - block - block - local.get $0 - i32.load - local.tee $2 - if - local.get $2 - local.get $1 - call $~lib/rt/purerc/__visit - end - return - unreachable - end - unreachable - unreachable - end - unreachable - ) - (func $null (; 49 ;) (type $FUNCSIG$v) + (func $null (; 0 ;) (type $FUNCSIG$v) ) ) diff --git a/tests/compiler/empty.untouched.wat b/tests/compiler/empty.untouched.wat index d1ce3b55..29ee81b8 100644 --- a/tests/compiler/empty.untouched.wat +++ b/tests/compiler/empty.untouched.wat @@ -1,3552 +1,9 @@ (module - (type $FUNCSIG$iiii (func (param i32 i32 i32) (result i32))) - (type $FUNCSIG$viiii (func (param i32 i32 i32 i32))) - (type $FUNCSIG$iiiii (func (param i32 i32 i32 i32) (result i32))) - (type $FUNCSIG$iii (func (param i32 i32) (result i32))) (type $FUNCSIG$v (func)) - (type $FUNCSIG$vii (func (param i32 i32))) - (type $FUNCSIG$ii (func (param i32) (result i32))) - (type $FUNCSIG$viii (func (param i32 i32 i32))) - (type $FUNCSIG$vi (func (param i32))) - (type $FUNCSIG$iiiiii (func (param i32 i32 i32 i32 i32) (result i32))) - (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) - (import "rtrace" "retain" (func $~lib/rt/purerc/onIncrement (param i32))) - (import "rtrace" "free" (func $~lib/rt/tlsf/onFree (param i32))) - (import "rtrace" "release" (func $~lib/rt/purerc/onDecrement (param i32))) - (memory $0 1) - (data (i32.const 8) "\n\00\00\00\01\00\00\00\10\00\00\00\n\00\00\00a\00,\00b\00,\00c\00") - (data (i32.const 40) "\02\00\00\00\01\00\00\00\10\00\00\00\02\00\00\00,\00") - (data (i32.const 64) "\1c\00\00\00\01\00\00\00\10\00\00\00\1c\00\00\00~\00l\00i\00b\00/\00s\00t\00r\00i\00n\00g\00.\00t\00s\00") - (data (i32.const 112) "\1e\00\00\00\01\00\00\00\10\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\10\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 216) "\"\00\00\00\01\00\00\00\10\00\00\00\"\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00p\00u\00r\00e\00r\00c\00.\00t\00s\00") - (data (i32.const 272) "\00\00\00\00\01\00\00\00\10\00\00\00\00\00\00\00") - (data (i32.const 288) "\08\00\00\00\01\00\00\00\10\00\00\00\08\00\00\00n\00u\00l\00l\00") - (data (i32.const 312) "\1c\00\00\00\01\00\00\00\10\00\00\00\1c\00\00\00I\00n\00v\00a\00l\00i\00d\00 \00l\00e\00n\00g\00t\00h\00") - (data (i32.const 360) "\1a\00\00\00\01\00\00\00\10\00\00\00\1a\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00.\00t\00s\00") - (data (i32.const 408) "$\00\00\00\01\00\00\00\10\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 464) "\"\00\00\00\01\00\00\00\10\00\00\00\"\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00c\00o\00m\00m\00o\00n\00.\00t\00s\00") - (data (i32.const 520) "^\00\00\00\01\00\00\00\10\00\00\00^\00\00\00E\00l\00e\00m\00e\00n\00t\00 \00t\00y\00p\00e\00 \00m\00u\00s\00t\00 \00b\00e\00 \00n\00u\00l\00l\00a\00b\00l\00e\00 \00i\00f\00 \00a\00r\00r\00a\00y\00 \00i\00s\00 \00h\00o\00l\00e\00y\00") - (data (i32.const 632) "\02\00\00\00\01\00\00\00\10\00\00\00\02\00\00\00a\00") - (data (i32.const 656) "\10\00\00\00\01\00\00\00\10\00\00\00\10\00\00\00e\00m\00p\00t\00y\00.\00t\00s\00") - (data (i32.const 688) "\12\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00I\04\00\00\0e\00\00\00I\00\00\00\0e\00\00\00") + (memory $0 0) (table $0 1 funcref) (elem (i32.const 0) $null) - (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) - (global $~lib/builtins/i32.MAX_VALUE i32 (i32.const 2147483647)) - (global $~lib/rt/purerc/CUR (mut i32) (i32.const 0)) - (global $~lib/rt/purerc/END (mut i32) (i32.const 0)) - (global $~lib/rt/purerc/ROOTS (mut i32) (i32.const 0)) - (global $~lib/started (mut i32) (i32.const 0)) - (global $~lib/builtins/RTTI_BASE i32 (i32.const 688)) - (global $~lib/builtins/HEAP_BASE i32 (i32.const 840)) (export "memory" (memory $0)) - (export "main" (func $empty/main)) - (func $~lib/rt/tlsf/removeBlock (; 4 ;) (type $FUNCSIG$vii) (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 $9 i32) - (local $10 i32) - (local $11 i32) - local.get $1 - i32.load - local.set $2 - local.get $2 - i32.const 1 - i32.and - i32.eqz - if - i32.const 0 - i32.const 128 - i32.const 275 - i32.const 13 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.const 3 - i32.const -1 - i32.xor - i32.and - local.set $3 - local.get $3 - i32.const 16 - i32.ge_u - if (result i32) - local.get $3 - i32.const 1073741808 - i32.lt_u - else - i32.const 0 - end - i32.eqz - if - i32.const 0 - i32.const 128 - i32.const 277 - i32.const 13 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const 256 - i32.lt_u - if - i32.const 0 - local.set $4 - local.get $3 - i32.const 4 - i32.shr_u - local.set $5 - else - i32.const 31 - local.get $3 - i32.clz - i32.sub - local.set $4 - local.get $3 - local.get $4 - i32.const 4 - i32.sub - i32.shr_u - i32.const 1 - i32.const 4 - i32.shl - i32.xor - local.set $5 - local.get $4 - i32.const 8 - i32.const 1 - i32.sub - i32.sub - local.set $4 - end - local.get $4 - i32.const 23 - i32.lt_u - if (result i32) - local.get $5 - i32.const 16 - i32.lt_u - else - i32.const 0 - end - i32.eqz - if - i32.const 0 - i32.const 128 - i32.const 290 - i32.const 13 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.load offset=16 - local.set $6 - local.get $1 - i32.load offset=20 - local.set $7 - local.get $6 - if - local.get $6 - local.get $7 - i32.store offset=20 - end - local.get $7 - if - local.get $7 - local.get $6 - i32.store offset=16 - end - local.get $1 - block $~lib/rt/tlsf/GETHEAD|inlined.0 (result i32) - local.get $0 - local.set $10 - local.get $4 - local.set $9 - local.get $5 - local.set $8 - local.get $10 - local.get $9 - i32.const 4 - i32.shl - local.get $8 - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - end - i32.eq - if - block $~lib/rt/tlsf/SETHEAD|inlined.1 - local.get $0 - local.set $11 - local.get $4 - local.set $10 - local.get $5 - local.set $9 - local.get $7 - local.set $8 - local.get $11 - local.get $10 - i32.const 4 - i32.shl - local.get $9 - i32.add - i32.const 2 - i32.shl - i32.add - local.get $8 - i32.store offset=96 - end - local.get $7 - i32.eqz - if - block $~lib/rt/tlsf/GETSL|inlined.0 (result i32) - local.get $0 - local.set $9 - local.get $4 - local.set $8 - local.get $9 - local.get $8 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - end - local.set $8 - block $~lib/rt/tlsf/SETSL|inlined.1 - local.get $0 - local.set $11 - local.get $4 - local.set $10 - local.get $8 - i32.const 1 - local.get $5 - i32.shl - i32.const -1 - i32.xor - i32.and - local.tee $8 - local.set $9 - local.get $11 - local.get $10 - i32.const 2 - i32.shl - i32.add - local.get $9 - i32.store offset=4 - end - local.get $8 - i32.eqz - if - local.get $0 - local.get $0 - i32.load - i32.const 1 - local.get $4 - i32.shl - i32.const -1 - i32.xor - i32.and - i32.store - end - end - end - ) - (func $~lib/rt/tlsf/insertBlock (; 5 ;) (type $FUNCSIG$vii) (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 $9 i32) - (local $10 i32) - (local $11 i32) - (local $12 i32) - (local $13 i32) - local.get $1 - i32.eqz - if - i32.const 0 - i32.const 128 - i32.const 203 - i32.const 13 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.load - local.set $2 - local.get $2 - i32.const 1 - i32.and - i32.eqz - if - i32.const 0 - i32.const 128 - i32.const 205 - i32.const 13 - call $~lib/builtins/abort - unreachable - end - block $~lib/rt/tlsf/GETRIGHT|inlined.0 (result i32) - local.get $1 - local.set $3 - local.get $3 - i32.const 16 - i32.add - local.get $3 - i32.load - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.add - end - local.set $4 - local.get $4 - i32.load - local.set $5 - local.get $5 - i32.const 1 - i32.and - if - local.get $2 - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.const 16 - i32.add - local.get $5 - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.add - local.set $3 - local.get $3 - i32.const 1073741808 - i32.lt_u - if - local.get $0 - local.get $4 - call $~lib/rt/tlsf/removeBlock - local.get $1 - local.get $2 - i32.const 3 - i32.and - local.get $3 - i32.or - local.tee $2 - i32.store - block $~lib/rt/tlsf/GETRIGHT|inlined.1 (result i32) - local.get $1 - local.set $6 - local.get $6 - i32.const 16 - i32.add - local.get $6 - i32.load - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.add - end - local.set $4 - local.get $4 - i32.load - local.set $5 - end - end - local.get $2 - i32.const 2 - i32.and - if - block $~lib/rt/tlsf/GETFREELEFT|inlined.0 (result i32) - local.get $1 - local.set $3 - local.get $3 - i32.const 4 - i32.sub - i32.load - end - local.set $3 - local.get $3 - i32.load - local.set $6 - local.get $6 - i32.const 1 - i32.and - i32.eqz - if - i32.const 0 - i32.const 128 - i32.const 226 - i32.const 15 - call $~lib/builtins/abort - unreachable - end - local.get $6 - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.const 16 - i32.add - local.get $2 - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.add - local.set $7 - local.get $7 - i32.const 1073741808 - i32.lt_u - if - local.get $0 - local.get $3 - call $~lib/rt/tlsf/removeBlock - local.get $3 - local.get $6 - i32.const 3 - i32.and - local.get $7 - i32.or - local.tee $2 - i32.store - local.get $3 - local.set $1 - end - end - local.get $4 - local.get $5 - i32.const 2 - i32.or - i32.store - local.get $2 - i32.const 3 - i32.const -1 - i32.xor - i32.and - local.set $8 - local.get $8 - i32.const 16 - i32.ge_u - if (result i32) - local.get $8 - i32.const 1073741808 - i32.lt_u - else - i32.const 0 - end - i32.eqz - if - i32.const 0 - i32.const 128 - i32.const 241 - i32.const 13 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 16 - i32.add - local.get $8 - i32.add - local.get $4 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 128 - i32.const 242 - i32.const 13 - call $~lib/builtins/abort - unreachable - end - local.get $4 - i32.const 4 - i32.sub - local.get $1 - i32.store - local.get $8 - i32.const 256 - i32.lt_u - if - i32.const 0 - local.set $9 - local.get $8 - i32.const 4 - i32.shr_u - local.set $10 - else - i32.const 31 - local.get $8 - i32.clz - i32.sub - local.set $9 - local.get $8 - local.get $9 - i32.const 4 - i32.sub - i32.shr_u - i32.const 1 - i32.const 4 - i32.shl - i32.xor - local.set $10 - local.get $9 - i32.const 8 - i32.const 1 - i32.sub - i32.sub - local.set $9 - end - local.get $9 - i32.const 23 - i32.lt_u - if (result i32) - local.get $10 - i32.const 16 - i32.lt_u - else - i32.const 0 - end - i32.eqz - if - i32.const 0 - i32.const 128 - i32.const 258 - i32.const 13 - call $~lib/builtins/abort - unreachable - end - block $~lib/rt/tlsf/GETHEAD|inlined.1 (result i32) - local.get $0 - local.set $3 - local.get $9 - local.set $6 - local.get $10 - local.set $7 - local.get $3 - local.get $6 - i32.const 4 - i32.shl - local.get $7 - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - end - local.set $11 - local.get $1 - i32.const 0 - i32.store offset=16 - local.get $1 - local.get $11 - i32.store offset=20 - local.get $11 - if - local.get $11 - local.get $1 - i32.store offset=16 - end - block $~lib/rt/tlsf/SETHEAD|inlined.2 - local.get $0 - local.set $12 - local.get $9 - local.set $3 - local.get $10 - local.set $6 - local.get $1 - local.set $7 - local.get $12 - local.get $3 - i32.const 4 - i32.shl - local.get $6 - i32.add - i32.const 2 - i32.shl - i32.add - local.get $7 - i32.store offset=96 - end - local.get $0 - local.get $0 - i32.load - i32.const 1 - local.get $9 - i32.shl - i32.or - i32.store - block $~lib/rt/tlsf/SETSL|inlined.2 - local.get $0 - local.set $3 - local.get $9 - local.set $6 - block $~lib/rt/tlsf/GETSL|inlined.1 (result i32) - local.get $0 - local.set $13 - local.get $9 - local.set $12 - local.get $13 - local.get $12 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - end - i32.const 1 - local.get $10 - i32.shl - i32.or - local.set $7 - local.get $3 - local.get $6 - i32.const 2 - i32.shl - i32.add - local.get $7 - i32.store offset=4 - end - ) - (func $~lib/rt/tlsf/addMemory (; 6 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) - local.get $1 - local.get $2 - i32.le_u - if (result i32) - local.get $1 - i32.const 15 - i32.and - i32.eqz - else - i32.const 0 - end - if (result i32) - local.get $2 - i32.const 15 - i32.and - i32.eqz - else - i32.const 0 - end - i32.eqz - if - i32.const 0 - i32.const 128 - i32.const 384 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - block $~lib/rt/tlsf/GETTAIL|inlined.0 (result i32) - local.get $0 - local.set $3 - local.get $3 - i32.load offset=1568 - end - local.set $4 - i32.const 0 - local.set $5 - local.get $4 - if - local.get $1 - local.get $4 - i32.const 16 - i32.add - i32.ge_u - i32.eqz - if - i32.const 0 - i32.const 128 - i32.const 394 - i32.const 15 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 16 - i32.sub - local.get $4 - i32.eq - if - local.get $1 - i32.const 16 - i32.sub - local.set $1 - local.get $4 - i32.load - local.set $5 - else - nop - end - else - local.get $1 - local.get $0 - i32.const 1572 - i32.add - i32.ge_u - i32.eqz - if - i32.const 0 - i32.const 128 - i32.const 406 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - end - local.get $2 - local.get $1 - i32.sub - local.set $6 - local.get $6 - i32.const 48 - i32.lt_u - if - i32.const 0 - return - end - local.get $6 - i32.const 2 - i32.const 16 - i32.mul - i32.sub - local.set $7 - local.get $1 - local.set $8 - local.get $8 - local.get $7 - i32.const 1 - i32.or - local.get $5 - i32.const 2 - i32.and - i32.or - i32.store - local.get $8 - i32.const 0 - i32.store offset=16 - local.get $8 - i32.const 0 - i32.store offset=20 - local.get $1 - local.get $6 - i32.add - i32.const 16 - i32.sub - local.set $4 - local.get $4 - i32.const 0 - i32.const 2 - i32.or - i32.store - block $~lib/rt/tlsf/SETTAIL|inlined.1 - local.get $0 - local.set $9 - local.get $4 - local.set $3 - local.get $9 - local.get $3 - i32.store offset=1568 - end - local.get $0 - local.get $8 - call $~lib/rt/tlsf/insertBlock - i32.const 1 - ) - (func $~lib/rt/tlsf/initializeRoot (; 7 ;) (type $FUNCSIG$v) - (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) - (local $9 i32) - global.get $~lib/builtins/HEAP_BASE - i32.const 15 - i32.add - i32.const 15 - i32.const -1 - i32.xor - i32.and - local.set $0 - current_memory - local.set $1 - local.get $0 - i32.const 1572 - i32.add - i32.const 65535 - i32.add - i32.const 65535 - i32.const -1 - i32.xor - i32.and - i32.const 16 - i32.shr_u - local.set $2 - local.get $2 - local.get $1 - i32.gt_s - if (result i32) - local.get $2 - local.get $1 - i32.sub - grow_memory - i32.const 0 - i32.lt_s - else - i32.const 0 - end - if - unreachable - end - local.get $0 - local.set $3 - local.get $3 - i32.const 0 - i32.store - block $~lib/rt/tlsf/SETTAIL|inlined.0 - local.get $3 - local.set $5 - i32.const 0 - local.set $4 - local.get $5 - local.get $4 - i32.store offset=1568 - end - block $break|0 - i32.const 0 - local.set $4 - loop $repeat|0 - local.get $4 - i32.const 23 - i32.lt_u - i32.eqz - br_if $break|0 - block $~lib/rt/tlsf/SETSL|inlined.0 - local.get $3 - local.set $7 - local.get $4 - local.set $6 - i32.const 0 - local.set $5 - local.get $7 - local.get $6 - i32.const 2 - i32.shl - i32.add - local.get $5 - i32.store offset=4 - end - block $break|1 - i32.const 0 - local.set $5 - loop $repeat|1 - local.get $5 - i32.const 16 - i32.lt_u - i32.eqz - br_if $break|1 - block $~lib/rt/tlsf/SETHEAD|inlined.0 - local.get $3 - local.set $9 - local.get $4 - local.set $8 - local.get $5 - local.set $7 - i32.const 0 - local.set $6 - local.get $9 - local.get $8 - i32.const 4 - i32.shl - local.get $7 - i32.add - i32.const 2 - i32.shl - i32.add - local.get $6 - i32.store offset=96 - end - local.get $5 - i32.const 1 - i32.add - local.set $5 - br $repeat|1 - unreachable - end - unreachable - end - local.get $4 - i32.const 1 - i32.add - local.set $4 - br $repeat|0 - unreachable - end - unreachable - end - local.get $3 - local.get $0 - i32.const 1572 - i32.add - i32.const 15 - i32.add - i32.const 15 - i32.const -1 - i32.xor - i32.and - current_memory - i32.const 16 - i32.shl - call $~lib/rt/tlsf/addMemory - drop - local.get $3 - global.set $~lib/rt/tlsf/ROOT - ) - (func $~lib/rt/tlsf/prepareSize (; 8 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - local.get $0 - i32.const 1073741808 - i32.ge_u - if - i32.const 176 - i32.const 128 - i32.const 446 - i32.const 29 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 15 - i32.add - i32.const 15 - i32.const -1 - i32.xor - i32.and - local.tee $1 - i32.const 16 - local.tee $2 - local.get $1 - local.get $2 - i32.gt_u - select - ) - (func $~lib/rt/tlsf/searchBlock (; 9 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result 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 $1 - i32.const 256 - i32.lt_u - if - i32.const 0 - local.set $2 - local.get $1 - i32.const 4 - i32.shr_u - local.set $3 - else - local.get $1 - i32.const 536870904 - i32.lt_u - if (result i32) - local.get $1 - i32.const 1 - i32.const 27 - local.get $1 - i32.clz - i32.sub - i32.shl - i32.add - i32.const 1 - i32.sub - else - local.get $1 - end - local.set $4 - i32.const 31 - local.get $4 - i32.clz - i32.sub - local.set $2 - local.get $4 - local.get $2 - i32.const 4 - i32.sub - i32.shr_u - i32.const 1 - i32.const 4 - i32.shl - i32.xor - local.set $3 - local.get $2 - i32.const 8 - i32.const 1 - i32.sub - i32.sub - local.set $2 - end - local.get $2 - i32.const 23 - i32.lt_u - if (result i32) - local.get $3 - i32.const 16 - i32.lt_u - else - i32.const 0 - end - i32.eqz - if - i32.const 0 - i32.const 128 - i32.const 336 - i32.const 13 - call $~lib/builtins/abort - unreachable - end - block $~lib/rt/tlsf/GETSL|inlined.2 (result i32) - local.get $0 - local.set $5 - local.get $2 - local.set $4 - local.get $5 - local.get $4 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - end - i32.const 0 - i32.const -1 - i32.xor - local.get $3 - i32.shl - i32.and - local.set $6 - local.get $6 - i32.eqz - if - local.get $0 - i32.load - i32.const 0 - i32.const -1 - i32.xor - local.get $2 - i32.const 1 - i32.add - i32.shl - i32.and - local.set $4 - local.get $4 - i32.eqz - if - i32.const 0 - local.set $7 - else - local.get $4 - i32.ctz - local.set $2 - block $~lib/rt/tlsf/GETSL|inlined.3 (result i32) - local.get $0 - local.set $8 - local.get $2 - local.set $5 - local.get $8 - local.get $5 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - end - local.set $6 - local.get $6 - i32.eqz - if - i32.const 0 - i32.const 128 - i32.const 349 - i32.const 17 - call $~lib/builtins/abort - unreachable - end - block $~lib/rt/tlsf/GETHEAD|inlined.2 (result i32) - local.get $0 - local.set $9 - local.get $2 - local.set $8 - local.get $6 - i32.ctz - local.set $5 - local.get $9 - local.get $8 - i32.const 4 - i32.shl - local.get $5 - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - end - local.set $7 - end - else - block $~lib/rt/tlsf/GETHEAD|inlined.3 (result i32) - local.get $0 - local.set $8 - local.get $2 - local.set $5 - local.get $6 - i32.ctz - local.set $4 - local.get $8 - local.get $5 - i32.const 4 - i32.shl - local.get $4 - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - end - local.set $7 - end - local.get $7 - ) - (func $~lib/rt/tlsf/growMemory (; 10 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - current_memory - local.set $2 - local.get $1 - i32.const 65535 - i32.add - i32.const 65535 - i32.const -1 - i32.xor - i32.and - i32.const 16 - i32.shr_u - local.set $3 - local.get $2 - local.tee $4 - local.get $3 - local.tee $5 - local.get $4 - local.get $5 - i32.gt_s - select - local.set $6 - local.get $6 - grow_memory - i32.const 0 - i32.lt_s - if - local.get $3 - grow_memory - i32.const 0 - i32.lt_s - if - unreachable - end - end - current_memory - local.set $7 - local.get $0 - local.get $2 - i32.const 16 - i32.shl - local.get $7 - i32.const 16 - i32.shl - call $~lib/rt/tlsf/addMemory - drop - ) - (func $~lib/rt/tlsf/prepareBlock (; 11 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $1 - i32.load - local.set $3 - local.get $2 - i32.const 15 - i32.and - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 128 - i32.const 363 - i32.const 13 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const 3 - i32.const -1 - i32.xor - i32.and - local.get $2 - i32.sub - local.set $4 - local.get $4 - i32.const 32 - i32.ge_u - if - local.get $1 - local.get $2 - local.get $3 - i32.const 2 - i32.and - i32.or - i32.store - local.get $1 - i32.const 16 - i32.add - local.get $2 - i32.add - local.set $5 - local.get $5 - local.get $4 - i32.const 16 - i32.sub - i32.const 1 - i32.or - i32.store - local.get $0 - local.get $5 - call $~lib/rt/tlsf/insertBlock - else - local.get $1 - local.get $3 - i32.const 1 - i32.const -1 - i32.xor - i32.and - i32.store - block $~lib/rt/tlsf/GETRIGHT|inlined.3 (result i32) - local.get $1 - local.set $5 - local.get $5 - i32.const 16 - i32.add - local.get $5 - i32.load - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.add - end - block $~lib/rt/tlsf/GETRIGHT|inlined.2 (result i32) - local.get $1 - local.set $5 - local.get $5 - i32.const 16 - i32.add - local.get $5 - i32.load - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.add - end - i32.load - i32.const 2 - i32.const -1 - i32.xor - i32.and - i32.store - end - ) - (func $~lib/rt/tlsf/allocateBlock (; 12 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - local.get $1 - call $~lib/rt/tlsf/prepareSize - local.set $2 - local.get $0 - local.get $2 - call $~lib/rt/tlsf/searchBlock - local.set $3 - local.get $3 - i32.eqz - if - local.get $0 - local.get $2 - call $~lib/rt/tlsf/growMemory - local.get $0 - local.get $2 - call $~lib/rt/tlsf/searchBlock - local.set $3 - local.get $3 - i32.eqz - if - i32.const 0 - i32.const 128 - i32.const 476 - i32.const 15 - call $~lib/builtins/abort - unreachable - end - end - local.get $3 - i32.load - i32.const 3 - i32.const -1 - i32.xor - i32.and - local.get $2 - i32.ge_u - i32.eqz - if - i32.const 0 - i32.const 128 - i32.const 478 - i32.const 13 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const 0 - i32.store offset=4 - local.get $3 - local.get $1 - i32.store offset=12 - local.get $0 - local.get $3 - call $~lib/rt/tlsf/removeBlock - local.get $0 - local.get $3 - local.get $2 - call $~lib/rt/tlsf/prepareBlock - local.get $3 - ) - (func $~lib/rt/tlsf/__alloc (; 13 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - global.get $~lib/rt/tlsf/ROOT - local.set $2 - local.get $2 - i32.eqz - if - call $~lib/rt/tlsf/initializeRoot - global.get $~lib/rt/tlsf/ROOT - local.set $2 - end - local.get $2 - local.get $0 - call $~lib/rt/tlsf/allocateBlock - local.set $3 - local.get $3 - local.get $1 - i32.store offset=8 - local.get $3 - i32.const 16 - i32.add - ) - (func $~lib/rt/purerc/increment (; 14 ;) (type $FUNCSIG$vi) (param $0 i32) - (local $1 i32) - local.get $0 - i32.load offset=4 - local.set $1 - local.get $1 - i32.const 268435455 - i32.const -1 - i32.xor - i32.and - local.get $1 - i32.const 1 - i32.add - i32.const 268435455 - i32.const -1 - i32.xor - i32.and - i32.eq - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 103 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - i32.const 1 - i32.add - i32.store offset=4 - local.get $0 - call $~lib/rt/purerc/onIncrement - local.get $0 - i32.load - i32.const 1 - i32.and - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 106 - i32.const 13 - call $~lib/builtins/abort - unreachable - end - ) - (func $~lib/rt/purerc/__retain (; 15 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - local.get $0 - global.get $~lib/builtins/HEAP_BASE - i32.gt_u - if - local.get $0 - i32.const 16 - i32.sub - call $~lib/rt/purerc/increment - end - local.get $0 - ) - (func $~lib/memory/memory.copy (; 16 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - block $~lib/util/memory/memmove|inlined.0 - local.get $0 - local.set $5 - local.get $1 - local.set $4 - local.get $2 - local.set $3 - local.get $5 - local.get $4 - i32.eq - if - br $~lib/util/memory/memmove|inlined.0 - end - local.get $5 - local.get $4 - i32.lt_u - if - local.get $4 - i32.const 7 - i32.and - local.get $5 - i32.const 7 - i32.and - i32.eq - if - block $break|0 - loop $continue|0 - local.get $5 - i32.const 7 - i32.and - if - local.get $3 - i32.eqz - if - br $~lib/util/memory/memmove|inlined.0 - end - local.get $3 - i32.const 1 - i32.sub - local.set $3 - block (result i32) - local.get $5 - local.tee $6 - i32.const 1 - i32.add - local.set $5 - local.get $6 - end - block (result i32) - local.get $4 - local.tee $6 - i32.const 1 - i32.add - local.set $4 - local.get $6 - end - i32.load8_u - i32.store8 - br $continue|0 - end - end - end - block $break|1 - loop $continue|1 - local.get $3 - i32.const 8 - i32.ge_u - if - local.get $5 - local.get $4 - i64.load - i64.store - local.get $3 - i32.const 8 - i32.sub - local.set $3 - local.get $5 - i32.const 8 - i32.add - local.set $5 - local.get $4 - i32.const 8 - i32.add - local.set $4 - br $continue|1 - end - end - end - end - block $break|2 - loop $continue|2 - local.get $3 - if - block (result i32) - local.get $5 - local.tee $6 - i32.const 1 - i32.add - local.set $5 - local.get $6 - end - block (result i32) - local.get $4 - local.tee $6 - i32.const 1 - i32.add - local.set $4 - local.get $6 - end - i32.load8_u - i32.store8 - local.get $3 - i32.const 1 - i32.sub - local.set $3 - br $continue|2 - end - end - end - else - local.get $4 - i32.const 7 - i32.and - local.get $5 - i32.const 7 - i32.and - i32.eq - if - block $break|3 - loop $continue|3 - local.get $5 - local.get $3 - i32.add - i32.const 7 - i32.and - if - local.get $3 - i32.eqz - if - br $~lib/util/memory/memmove|inlined.0 - end - local.get $5 - local.get $3 - i32.const 1 - i32.sub - local.tee $3 - i32.add - local.get $4 - local.get $3 - i32.add - i32.load8_u - i32.store8 - br $continue|3 - end - end - end - block $break|4 - loop $continue|4 - local.get $3 - i32.const 8 - i32.ge_u - if - local.get $3 - i32.const 8 - i32.sub - local.set $3 - local.get $5 - local.get $3 - i32.add - local.get $4 - local.get $3 - i32.add - i64.load - i64.store - br $continue|4 - end - end - end - end - block $break|5 - loop $continue|5 - local.get $3 - if - local.get $5 - local.get $3 - i32.const 1 - i32.sub - local.tee $3 - i32.add - local.get $4 - local.get $3 - i32.add - i32.load8_u - i32.store8 - br $continue|5 - end - end - end - end - end - ) - (func $~lib/rt/common/__allocArray (; 17 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - i32.const 16 - local.get $2 - call $~lib/rt/tlsf/__alloc - local.set $4 - local.get $0 - local.get $1 - i32.shl - local.set $5 - local.get $5 - i32.const 15 - call $~lib/rt/tlsf/__alloc - local.set $6 - local.get $4 - local.get $6 - call $~lib/rt/purerc/__retain - i32.store - local.get $4 - local.get $6 - i32.store offset=4 - local.get $4 - local.get $5 - i32.store offset=8 - local.get $4 - local.get $0 - i32.store offset=12 - local.get $3 - if - local.get $6 - local.get $3 - local.get $5 - call $~lib/memory/memory.copy - end - local.get $4 - ) - (func $~lib/string/String#get:length (; 18 ;) (type $FUNCSIG$ii) (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 (; 19 ;) (type $FUNCSIG$iiiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (result i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - local.get $0 - call $~lib/rt/purerc/__retain - drop - local.get $2 - call $~lib/rt/purerc/__retain - drop - i32.const 0 - local.set $5 - local.get $0 - local.get $1 - i32.const 1 - i32.shl - i32.add - local.set $6 - local.get $2 - local.get $3 - i32.const 1 - i32.shl - i32.add - local.set $7 - block $break|0 - loop $continue|0 - local.get $4 - if (result i32) - local.get $6 - i32.load16_u - local.get $7 - i32.load16_u - i32.sub - local.tee $5 - i32.eqz - else - i32.const 0 - end - if - local.get $4 - i32.const 1 - i32.sub - local.set $4 - local.get $6 - i32.const 2 - i32.add - local.set $6 - local.get $7 - i32.const 2 - i32.add - local.set $7 - br $continue|0 - end - end - end - local.get $0 - call $~lib/rt/purerc/__release - local.get $2 - call $~lib/rt/purerc/__release - local.get $5 - ) - (func $~lib/string/String#indexOf (; 20 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - local.get $1 - call $~lib/rt/purerc/__retain - drop - local.get $0 - i32.const 0 - i32.ne - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 140 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 0 - i32.eq - if - i32.const 304 - local.get $1 - call $~lib/rt/purerc/__retainRelease - local.set $1 - end - local.get $1 - call $~lib/string/String#get:length - local.set $3 - local.get $3 - i32.eqz - if - local.get $1 - call $~lib/rt/purerc/__release - i32.const 0 - return - end - local.get $0 - call $~lib/string/String#get:length - local.set $4 - local.get $4 - i32.eqz - if - local.get $1 - call $~lib/rt/purerc/__release - i32.const -1 - return - end - local.get $2 - local.tee $5 - i32.const 0 - local.tee $6 - local.get $5 - local.get $6 - i32.gt_s - select - local.tee $5 - local.get $4 - local.tee $6 - local.get $5 - local.get $6 - i32.lt_s - select - local.set $7 - local.get $4 - local.get $3 - i32.sub - local.set $4 - block $break|0 - local.get $7 - local.set $5 - loop $repeat|0 - local.get $5 - local.get $4 - i32.le_s - i32.eqz - br_if $break|0 - local.get $0 - local.get $5 - local.get $1 - i32.const 0 - local.get $3 - call $~lib/util/string/compareImpl - i32.eqz - if - local.get $1 - call $~lib/rt/purerc/__release - local.get $5 - return - end - local.get $5 - i32.const 1 - i32.add - local.set $5 - br $repeat|0 - unreachable - end - unreachable - end - local.get $1 - call $~lib/rt/purerc/__release - i32.const -1 - ) - (func $~lib/rt/tlsf/reallocateBlock (; 21 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - local.get $2 - call $~lib/rt/tlsf/prepareSize - local.set $3 - local.get $1 - i32.load - local.set $4 - local.get $4 - i32.const 1 - i32.and - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 128 - i32.const 491 - i32.const 13 - call $~lib/builtins/abort - unreachable - end - local.get $3 - local.get $4 - i32.const -4 - i32.and - i32.le_u - if - local.get $0 - local.get $1 - local.get $3 - call $~lib/rt/tlsf/prepareBlock - local.get $1 - local.get $2 - i32.store offset=12 - local.get $1 - return - end - block $~lib/rt/tlsf/GETRIGHT|inlined.4 (result i32) - local.get $1 - local.set $5 - local.get $5 - i32.const 16 - i32.add - local.get $5 - i32.load - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.add - end - local.set $6 - local.get $6 - i32.load - local.set $7 - local.get $7 - i32.const 1 - i32.and - if - local.get $4 - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.const 16 - i32.add - local.get $7 - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.add - local.set $5 - local.get $5 - local.get $3 - i32.ge_u - if - local.get $0 - local.get $6 - call $~lib/rt/tlsf/removeBlock - local.get $1 - local.get $4 - i32.const 3 - i32.and - local.get $5 - i32.or - i32.store - local.get $1 - local.get $2 - i32.store offset=12 - local.get $0 - local.get $1 - local.get $3 - call $~lib/rt/tlsf/prepareBlock - local.get $1 - return - end - end - local.get $0 - local.get $2 - call $~lib/rt/tlsf/allocateBlock - local.set $8 - local.get $8 - local.get $1 - i32.load offset=4 - i32.store offset=4 - local.get $8 - local.get $1 - i32.load offset=8 - i32.store offset=8 - local.get $8 - i32.const 16 - i32.add - local.get $1 - i32.const 16 - i32.add - local.get $2 - call $~lib/memory/memory.copy - local.get $1 - local.get $4 - i32.const 1 - i32.or - i32.store - local.get $0 - local.get $1 - call $~lib/rt/tlsf/insertBlock - local.get $1 - call $~lib/rt/tlsf/onFree - local.get $8 - ) - (func $~lib/rt/tlsf/__realloc (; 22 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - global.get $~lib/rt/tlsf/ROOT - i32.eqz - if - i32.const 0 - i32.const 128 - i32.const 552 - i32.const 13 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 0 - i32.ne - if (result i32) - local.get $0 - i32.const 15 - i32.and - i32.eqz - else - i32.const 0 - end - i32.eqz - if - i32.const 0 - i32.const 128 - i32.const 553 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/rt/tlsf/ROOT - local.get $0 - i32.const 16 - i32.sub - local.get $1 - call $~lib/rt/tlsf/reallocateBlock - i32.const 16 - i32.add - ) - (func $~lib/memory/memory.fill (; 23 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i64) - block $~lib/util/memory/memset|inlined.0 - local.get $0 - local.set $5 - local.get $1 - local.set $4 - local.get $2 - local.set $3 - local.get $3 - i32.eqz - if - br $~lib/util/memory/memset|inlined.0 - end - local.get $5 - local.get $4 - i32.store8 - local.get $5 - local.get $3 - i32.add - i32.const 1 - i32.sub - local.get $4 - i32.store8 - local.get $3 - i32.const 2 - i32.le_u - if - br $~lib/util/memory/memset|inlined.0 - end - local.get $5 - i32.const 1 - i32.add - local.get $4 - i32.store8 - local.get $5 - i32.const 2 - i32.add - local.get $4 - i32.store8 - local.get $5 - local.get $3 - i32.add - i32.const 2 - i32.sub - local.get $4 - i32.store8 - local.get $5 - local.get $3 - i32.add - i32.const 3 - i32.sub - local.get $4 - i32.store8 - local.get $3 - i32.const 6 - i32.le_u - if - br $~lib/util/memory/memset|inlined.0 - end - local.get $5 - i32.const 3 - i32.add - local.get $4 - i32.store8 - local.get $5 - local.get $3 - i32.add - i32.const 4 - i32.sub - local.get $4 - i32.store8 - local.get $3 - i32.const 8 - i32.le_u - if - br $~lib/util/memory/memset|inlined.0 - end - i32.const 0 - local.get $5 - i32.sub - i32.const 3 - i32.and - local.set $6 - local.get $5 - local.get $6 - i32.add - local.set $5 - local.get $3 - local.get $6 - i32.sub - local.set $3 - local.get $3 - i32.const -4 - i32.and - local.set $3 - i32.const -1 - i32.const 255 - i32.div_u - local.get $4 - i32.const 255 - i32.and - i32.mul - local.set $7 - local.get $5 - local.get $7 - i32.store - local.get $5 - local.get $3 - i32.add - i32.const 4 - i32.sub - local.get $7 - i32.store - local.get $3 - i32.const 8 - i32.le_u - if - br $~lib/util/memory/memset|inlined.0 - end - local.get $5 - i32.const 4 - i32.add - local.get $7 - i32.store - local.get $5 - i32.const 8 - i32.add - local.get $7 - i32.store - local.get $5 - local.get $3 - i32.add - i32.const 12 - i32.sub - local.get $7 - i32.store - local.get $5 - local.get $3 - i32.add - i32.const 8 - i32.sub - local.get $7 - i32.store - local.get $3 - i32.const 24 - i32.le_u - if - br $~lib/util/memory/memset|inlined.0 - end - local.get $5 - i32.const 12 - i32.add - local.get $7 - i32.store - local.get $5 - i32.const 16 - i32.add - local.get $7 - i32.store - local.get $5 - i32.const 20 - i32.add - local.get $7 - i32.store - local.get $5 - i32.const 24 - i32.add - local.get $7 - i32.store - local.get $5 - local.get $3 - i32.add - i32.const 28 - i32.sub - local.get $7 - i32.store - local.get $5 - local.get $3 - i32.add - i32.const 24 - i32.sub - local.get $7 - i32.store - local.get $5 - local.get $3 - i32.add - i32.const 20 - i32.sub - local.get $7 - i32.store - local.get $5 - local.get $3 - i32.add - i32.const 16 - i32.sub - local.get $7 - i32.store - i32.const 24 - local.get $5 - i32.const 4 - i32.and - i32.add - local.set $6 - local.get $5 - local.get $6 - i32.add - local.set $5 - local.get $3 - local.get $6 - i32.sub - local.set $3 - local.get $7 - i64.extend_i32_u - local.get $7 - i64.extend_i32_u - i64.const 32 - i64.shl - i64.or - local.set $8 - block $break|0 - loop $continue|0 - local.get $3 - i32.const 32 - i32.ge_u - if - local.get $5 - local.get $8 - i64.store - local.get $5 - i32.const 8 - i32.add - local.get $8 - i64.store - local.get $5 - i32.const 16 - i32.add - local.get $8 - i64.store - local.get $5 - i32.const 24 - i32.add - local.get $8 - i64.store - local.get $3 - i32.const 32 - i32.sub - local.set $3 - local.get $5 - i32.const 32 - i32.add - local.set $5 - br $continue|0 - end - end - end - end - ) - (func $~lib/array/ensureSize (; 24 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - local.get $0 - i32.load offset=8 - local.set $3 - local.get $1 - local.get $3 - local.get $2 - i32.shr_u - i32.gt_u - if - local.get $1 - i32.const 1073741808 - local.get $2 - i32.shr_u - i32.gt_u - if - i32.const 328 - i32.const 376 - i32.const 14 - i32.const 47 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load - local.set $4 - local.get $1 - local.get $2 - i32.shl - local.set $5 - local.get $4 - local.get $5 - call $~lib/rt/tlsf/__realloc - local.set $6 - local.get $6 - local.get $3 - i32.add - i32.const 0 - local.get $5 - local.get $3 - i32.sub - call $~lib/memory/memory.fill - local.get $6 - local.get $4 - i32.ne - if - local.get $0 - local.get $6 - call $~lib/rt/purerc/__retain - i32.store - local.get $0 - local.get $6 - i32.store offset=4 - end - local.get $0 - local.get $5 - i32.store offset=8 - end - ) - (func $~lib/rt/tlsf/freeBlock (; 25 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) - (local $2 i32) - local.get $1 - i32.load - local.set $2 - local.get $2 - i32.const 1 - i32.and - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 128 - i32.const 530 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $1 - local.get $2 - i32.const 1 - i32.or - i32.store - local.get $0 - local.get $1 - call $~lib/rt/tlsf/insertBlock - local.get $1 - call $~lib/rt/tlsf/onFree - ) - (func $~lib/rt/common/__typeinfo (; 26 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - (local $1 i32) - global.get $~lib/builtins/RTTI_BASE - local.set $1 - local.get $0 - i32.eqz - if (result i32) - i32.const 1 - else - local.get $0 - local.get $1 - i32.load - i32.gt_u - end - if - i32.const 424 - i32.const 480 - i32.const 55 - i32.const 34 - call $~lib/builtins/abort - unreachable - end - local.get $1 - local.get $0 - i32.const 8 - i32.mul - i32.add - i32.load - ) - (func $~lib/rt/purerc/growRoots (; 27 ;) (type $FUNCSIG$v) - (local $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - global.get $~lib/rt/purerc/ROOTS - local.set $0 - global.get $~lib/rt/purerc/CUR - local.get $0 - i32.sub - local.set $1 - local.get $1 - i32.const 2 - i32.mul - local.tee $2 - i32.const 64 - i32.const 2 - i32.shl - local.tee $3 - local.get $2 - local.get $3 - i32.gt_u - select - local.set $4 - local.get $4 - i32.const 0 - call $~lib/rt/tlsf/__alloc - local.set $5 - local.get $5 - local.get $0 - local.get $1 - call $~lib/memory/memory.copy - local.get $5 - global.set $~lib/rt/purerc/ROOTS - local.get $5 - local.get $1 - i32.add - global.set $~lib/rt/purerc/CUR - local.get $5 - local.get $4 - i32.add - global.set $~lib/rt/purerc/END - ) - (func $~lib/rt/purerc/appendRoot (; 28 ;) (type $FUNCSIG$vi) (param $0 i32) - (local $1 i32) - global.get $~lib/rt/purerc/CUR - local.set $1 - local.get $1 - global.get $~lib/rt/purerc/END - i32.ge_u - if - call $~lib/rt/purerc/growRoots - global.get $~lib/rt/purerc/CUR - local.set $1 - end - local.get $1 - local.get $0 - i32.store - local.get $1 - i32.const 1 - i32.add - global.set $~lib/rt/purerc/CUR - ) - (func $~lib/rt/purerc/decrement (; 29 ;) (type $FUNCSIG$vi) (param $0 i32) - (local $1 i32) - (local $2 i32) - local.get $0 - i32.load offset=4 - local.set $1 - local.get $1 - i32.const 268435455 - i32.and - local.set $2 - local.get $0 - call $~lib/rt/purerc/onDecrement - local.get $0 - i32.load - i32.const 1 - i32.and - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 114 - i32.const 13 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.const 1 - i32.eq - if - local.get $0 - i32.const 16 - i32.add - i32.const 1 - call $~lib/builtins/__visit_members - local.get $1 - i32.const -2147483648 - i32.and - i32.eqz - if - global.get $~lib/rt/tlsf/ROOT - local.get $0 - call $~lib/rt/tlsf/freeBlock - else - local.get $0 - i32.const -2147483648 - i32.const 0 - i32.or - i32.const 0 - i32.or - i32.store offset=4 - end - else - local.get $2 - i32.const 0 - i32.gt_u - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 123 - i32.const 15 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load offset=8 - call $~lib/rt/common/__typeinfo - i32.const 8 - i32.and - i32.eqz - if - local.get $0 - i32.const -2147483648 - i32.const 805306368 - i32.or - local.get $2 - i32.const 1 - i32.sub - i32.or - i32.store offset=4 - local.get $1 - i32.const -2147483648 - i32.and - i32.eqz - if - local.get $0 - call $~lib/rt/purerc/appendRoot - end - else - local.get $0 - local.get $1 - i32.const 268435455 - i32.const -1 - i32.xor - i32.and - local.get $2 - i32.const 1 - i32.sub - i32.or - i32.store offset=4 - end - end - ) - (func $~lib/rt/purerc/__retainRelease (; 30 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - local.get $0 - local.get $1 - i32.ne - if - global.get $~lib/builtins/HEAP_BASE - local.set $2 - local.get $0 - local.get $2 - i32.gt_u - if - local.get $0 - i32.const 16 - i32.sub - call $~lib/rt/purerc/increment - end - local.get $1 - local.get $2 - i32.gt_u - if - local.get $1 - i32.const 16 - i32.sub - call $~lib/rt/purerc/decrement - end - end - local.get $0 - ) - (func $~lib/array/Array<~lib/string/String>#push (; 31 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - local.get $1 - call $~lib/rt/purerc/__retain - drop - local.get $0 - i32.load offset=12 - local.set $2 - local.get $2 - i32.const 1 - i32.add - local.set $3 - local.get $0 - local.get $3 - i32.const 2 - call $~lib/array/ensureSize - local.get $0 - i32.load offset=4 - local.get $2 - i32.const 2 - i32.shl - i32.add - local.set $4 - local.get $4 - local.get $1 - local.get $4 - i32.load - call $~lib/rt/purerc/__retainRelease - i32.store - local.get $0 - local.get $3 - i32.store offset=12 - local.get $1 - call $~lib/rt/purerc/__release - local.get $3 - ) - (func $~lib/string/String#split (; 32 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) - (local $10 i32) - (local $11 i32) - (local $12 i32) - (local $13 i32) - local.get $1 - call $~lib/rt/purerc/__retain - drop - local.get $0 - i32.const 0 - i32.ne - i32.eqz - if - i32.const 0 - i32.const 80 - i32.const 357 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.eqz - if - i32.const 0 - i32.const 2 - i32.const 17 - i32.const 0 - call $~lib/rt/common/__allocArray - call $~lib/rt/purerc/__retain - local.set $3 - local.get $1 - call $~lib/rt/purerc/__release - local.get $3 - return - end - local.get $1 - i32.const 0 - i32.eq - if - block (result i32) - i32.const 1 - i32.const 2 - i32.const 17 - i32.const 0 - call $~lib/rt/common/__allocArray - local.set $3 - local.get $3 - i32.load offset=4 - local.set $4 - local.get $4 - local.get $0 - call $~lib/rt/purerc/__retain - i32.store - local.get $3 - end - call $~lib/rt/purerc/__retain - local.set $4 - local.get $1 - call $~lib/rt/purerc/__release - local.get $4 - return - end - local.get $0 - call $~lib/string/String#get:length - local.set $5 - local.get $1 - call $~lib/string/String#get:length - local.set $6 - local.get $2 - i32.const 0 - i32.lt_s - if - global.get $~lib/builtins/i32.MAX_VALUE - local.set $2 - end - local.get $6 - i32.eqz - if - local.get $5 - i32.eqz - if - i32.const 0 - i32.const 2 - i32.const 17 - i32.const 0 - call $~lib/rt/common/__allocArray - call $~lib/rt/purerc/__retain - local.set $4 - local.get $1 - call $~lib/rt/purerc/__release - local.get $4 - return - end - local.get $5 - local.tee $4 - local.get $2 - local.tee $3 - local.get $4 - local.get $3 - i32.lt_s - select - local.set $5 - local.get $5 - i32.const 2 - i32.const 17 - i32.const 0 - call $~lib/rt/common/__allocArray - local.set $4 - local.get $4 - i32.load offset=4 - local.set $3 - block $break|0 - i32.const 0 - local.set $7 - loop $repeat|0 - local.get $7 - local.get $5 - i32.lt_s - i32.eqz - br_if $break|0 - i32.const 2 - i32.const 16 - call $~lib/rt/tlsf/__alloc - local.set $8 - local.get $8 - local.get $0 - local.get $7 - i32.const 1 - i32.shl - i32.add - i32.load16_u - i32.store16 - local.get $3 - local.get $7 - i32.const 2 - i32.shl - i32.add - local.get $8 - i32.store - local.get $8 - call $~lib/rt/purerc/__retain - drop - local.get $7 - i32.const 1 - i32.add - local.set $7 - br $repeat|0 - unreachable - end - unreachable - end - local.get $4 - call $~lib/rt/purerc/__retain - local.set $8 - local.get $1 - call $~lib/rt/purerc/__release - local.get $8 - return - else - local.get $5 - i32.eqz - if - i32.const 1 - i32.const 2 - i32.const 17 - i32.const 0 - call $~lib/rt/common/__allocArray - local.set $3 - local.get $3 - i32.load offset=4 - i32.const 288 - i32.store - local.get $3 - call $~lib/rt/purerc/__retain - local.set $4 - local.get $1 - call $~lib/rt/purerc/__release - local.get $4 - return - end - end - i32.const 0 - i32.const 2 - i32.const 17 - i32.const 0 - call $~lib/rt/common/__allocArray - call $~lib/rt/purerc/__retain - local.set $9 - i32.const 0 - local.set $10 - i32.const 0 - local.set $11 - i32.const 0 - local.set $12 - block $break|1 - loop $continue|1 - local.get $0 - local.get $1 - local.get $11 - call $~lib/string/String#indexOf - local.tee $10 - i32.const -1 - i32.ne - if - local.get $10 - local.get $11 - i32.sub - local.set $3 - local.get $3 - i32.const 0 - i32.gt_s - if - local.get $3 - i32.const 1 - i32.shl - i32.const 16 - call $~lib/rt/tlsf/__alloc - local.set $4 - local.get $4 - local.get $0 - local.get $11 - i32.const 1 - i32.shl - i32.add - local.get $3 - i32.const 1 - i32.shl - call $~lib/memory/memory.copy - local.get $9 - local.get $4 - call $~lib/array/Array<~lib/string/String>#push - drop - else - local.get $9 - i32.const 288 - call $~lib/array/Array<~lib/string/String>#push - drop - end - local.get $12 - i32.const 1 - i32.add - local.tee $12 - local.get $2 - i32.eq - if - local.get $9 - local.set $4 - local.get $1 - call $~lib/rt/purerc/__release - local.get $4 - return - end - local.get $10 - local.get $6 - i32.add - local.set $11 - br $continue|1 - end - end - end - local.get $11 - i32.eqz - if - local.get $9 - local.get $0 - call $~lib/array/Array<~lib/string/String>#push - drop - local.get $9 - local.set $3 - local.get $1 - call $~lib/rt/purerc/__release - local.get $3 - return - end - local.get $5 - local.get $11 - i32.sub - local.set $13 - local.get $13 - i32.const 0 - i32.gt_s - if - local.get $13 - i32.const 1 - i32.shl - i32.const 16 - call $~lib/rt/tlsf/__alloc - local.set $3 - local.get $3 - local.get $0 - local.get $11 - i32.const 1 - i32.shl - i32.add - local.get $13 - i32.const 1 - i32.shl - call $~lib/memory/memory.copy - local.get $9 - local.get $3 - call $~lib/array/Array<~lib/string/String>#push - drop - else - local.get $9 - i32.const 288 - call $~lib/array/Array<~lib/string/String>#push - drop - end - local.get $9 - local.set $3 - local.get $1 - call $~lib/rt/purerc/__release - local.get $3 - ) - (func $~lib/array/Array<~lib/string/String>#get:length (; 33 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - local.get $0 - i32.load offset=12 - ) - (func $~lib/array/Array<~lib/string/String>#__unchecked_get (; 34 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - local.get $0 - i32.load offset=4 - local.get $1 - i32.const 2 - i32.shl - i32.add - i32.load - call $~lib/rt/purerc/__retain - ) - (func $~lib/array/Array<~lib/string/String>#__get (; 35 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - local.get $1 - local.get $0 - i32.load offset=12 - i32.ge_u - if - i32.const 536 - i32.const 376 - i32.const 97 - i32.const 45 - call $~lib/builtins/abort - unreachable - end - local.get $1 - local.get $0 - i32.load offset=8 - i32.const 2 - i32.shr_u - i32.ge_u - if - i32.const 424 - i32.const 376 - i32.const 100 - i32.const 61 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - call $~lib/array/Array<~lib/string/String>#__unchecked_get - ) - (func $~lib/string/String.__eq (; 36 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - local.get $0 - call $~lib/rt/purerc/__retain - drop - local.get $1 - call $~lib/rt/purerc/__retain - drop - local.get $0 - local.get $1 - i32.eq - if - local.get $0 - call $~lib/rt/purerc/__release - local.get $1 - call $~lib/rt/purerc/__release - i32.const 1 - return - end - local.get $0 - i32.const 0 - i32.eq - if (result i32) - i32.const 1 - else - local.get $1 - i32.const 0 - i32.eq - end - if - local.get $0 - call $~lib/rt/purerc/__release - local.get $1 - call $~lib/rt/purerc/__release - i32.const 0 - return - end - local.get $0 - call $~lib/string/String#get:length - local.set $2 - local.get $2 - local.get $1 - call $~lib/string/String#get:length - i32.ne - if - local.get $0 - call $~lib/rt/purerc/__release - local.get $1 - call $~lib/rt/purerc/__release - i32.const 0 - return - end - local.get $0 - call $~lib/rt/purerc/__release - local.get $1 - call $~lib/rt/purerc/__release - local.get $0 - i32.const 0 - local.get $1 - i32.const 0 - local.get $2 - call $~lib/util/string/compareImpl - i32.eqz - ) - (func $start:empty (; 37 ;) (type $FUNCSIG$v) - (local $0 i32) - (local $1 i32) - i32.const 24 - i32.const 56 - global.get $~lib/builtins/i32.MAX_VALUE - call $~lib/string/String#split - local.set $0 - local.get $0 - call $~lib/array/Array<~lib/string/String>#get:length - i32.const 3 - i32.eq - if (result i32) - local.get $0 - i32.const 0 - call $~lib/array/Array<~lib/string/String>#__get - local.tee $1 - i32.const 648 - call $~lib/string/String.__eq - else - i32.const 0 - end - i32.eqz - if - i32.const 0 - i32.const 672 - i32.const 5 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $0 - call $~lib/rt/purerc/__release - ) - (func $empty/main (; 38 ;) (type $FUNCSIG$v) - global.get $~lib/started - i32.eqz - if - call $start - i32.const 1 - global.set $~lib/started - end - ) - (func $start (; 39 ;) (type $FUNCSIG$v) - call $start:empty - ) - (func $~lib/rt/purerc/__release (; 40 ;) (type $FUNCSIG$vi) (param $0 i32) - local.get $0 - global.get $~lib/builtins/HEAP_BASE - i32.gt_u - if - local.get $0 - i32.const 16 - i32.sub - call $~lib/rt/purerc/decrement - end - ) - (func $~lib/rt/purerc/markGray (; 41 ;) (type $FUNCSIG$vi) (param $0 i32) - (local $1 i32) - local.get $0 - i32.load offset=4 - local.set $1 - local.get $1 - i32.const 1879048192 - i32.and - i32.const 268435456 - i32.ne - if - local.get $0 - local.get $1 - i32.const 1879048192 - i32.const -1 - i32.xor - i32.and - i32.const 268435456 - i32.or - i32.store offset=4 - local.get $0 - i32.const 16 - i32.add - i32.const 2 - call $~lib/builtins/__visit_members - end - ) - (func $~lib/rt/purerc/scanBlack (; 42 ;) (type $FUNCSIG$vi) (param $0 i32) - local.get $0 - local.get $0 - i32.load offset=4 - i32.const 1879048192 - i32.const -1 - i32.xor - i32.and - i32.const 0 - i32.or - i32.store offset=4 - local.get $0 - i32.const 16 - i32.add - i32.const 4 - call $~lib/builtins/__visit_members - ) - (func $~lib/rt/purerc/scan (; 43 ;) (type $FUNCSIG$vi) (param $0 i32) - (local $1 i32) - local.get $0 - i32.load offset=4 - local.set $1 - local.get $1 - i32.const 1879048192 - i32.and - i32.const 268435456 - i32.eq - if - local.get $1 - i32.const 268435455 - i32.and - i32.const 0 - i32.gt_u - if - local.get $0 - call $~lib/rt/purerc/scanBlack - else - local.get $0 - local.get $1 - i32.const 1879048192 - i32.const -1 - i32.xor - i32.and - i32.const 536870912 - i32.or - i32.store offset=4 - local.get $0 - i32.const 16 - i32.add - i32.const 3 - call $~lib/builtins/__visit_members - end - end - ) - (func $~lib/rt/purerc/collectWhite (; 44 ;) (type $FUNCSIG$vi) (param $0 i32) - (local $1 i32) - local.get $0 - i32.load offset=4 - local.set $1 - local.get $1 - i32.const 1879048192 - i32.and - i32.const 536870912 - i32.eq - if (result i32) - local.get $1 - i32.const -2147483648 - i32.and - i32.eqz - else - i32.const 0 - end - if - local.get $0 - i32.const 16 - i32.add - i32.const 5 - call $~lib/builtins/__visit_members - end - global.get $~lib/rt/tlsf/ROOT - local.get $0 - call $~lib/rt/tlsf/freeBlock - ) - (func $~lib/rt/purerc/__visit (; 45 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - local.get $0 - global.get $~lib/builtins/HEAP_BASE - i32.lt_u - if - return - end - local.get $0 - i32.const 16 - i32.sub - local.set $2 - block $break|0 - block $case5|0 - block $case4|0 - block $case3|0 - block $case2|0 - block $case1|0 - block $case0|0 - local.get $1 - local.set $3 - local.get $3 - i32.const 1 - i32.eq - br_if $case0|0 - local.get $3 - i32.const 2 - i32.eq - br_if $case1|0 - local.get $3 - i32.const 3 - i32.eq - br_if $case2|0 - local.get $3 - i32.const 4 - i32.eq - br_if $case3|0 - local.get $3 - i32.const 5 - i32.eq - br_if $case4|0 - br $case5|0 - end - block - local.get $2 - call $~lib/rt/purerc/decrement - br $break|0 - unreachable - end - unreachable - end - block - local.get $2 - i32.load offset=4 - i32.const 268435455 - i32.and - i32.const 0 - i32.gt_u - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 74 - i32.const 17 - call $~lib/builtins/abort - unreachable - end - local.get $2 - local.get $2 - i32.load offset=4 - i32.const 1 - i32.sub - i32.store offset=4 - local.get $2 - call $~lib/rt/purerc/markGray - br $break|0 - unreachable - end - unreachable - end - block - local.get $2 - call $~lib/rt/purerc/scan - br $break|0 - unreachable - end - unreachable - end - block - local.get $2 - i32.load offset=4 - local.set $3 - local.get $3 - i32.const 268435455 - i32.const -1 - i32.xor - i32.and - local.get $3 - i32.const 1 - i32.add - i32.const 268435455 - i32.const -1 - i32.xor - i32.and - i32.eq - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 85 - i32.const 6 - call $~lib/builtins/abort - unreachable - end - local.get $2 - local.get $3 - i32.const 1 - i32.add - i32.store offset=4 - local.get $3 - i32.const 1879048192 - i32.and - i32.const 0 - i32.ne - if - local.get $2 - call $~lib/rt/purerc/scanBlack - end - br $break|0 - unreachable - end - unreachable - end - block - local.get $2 - call $~lib/rt/purerc/collectWhite - br $break|0 - unreachable - end - unreachable - end - i32.const 0 - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 96 - i32.const 24 - call $~lib/builtins/abort - unreachable - end - end - ) - (func $~lib/array/Array<~lib/string/String>#__visit_impl (; 46 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - local.get $0 - i32.load offset=4 - local.set $2 - local.get $2 - local.get $0 - i32.load offset=8 - i32.add - local.set $3 - block $break|0 - loop $continue|0 - local.get $2 - local.get $3 - i32.lt_u - if - local.get $2 - i32.load - local.set $4 - local.get $4 - if - local.get $4 - local.get $1 - call $~lib/rt/purerc/__visit - end - local.get $2 - i32.const 4 - i32.add - local.set $2 - br $continue|0 - end - end - end - ) - (func $~lib/array/Array#__visit_impl (; 47 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) - nop - ) - (func $~lib/builtins/__visit_members (; 48 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) - (local $2 i32) - block $block$16$break - block - end - block $switch$1$leave - block $switch$1$case$20 - block $switch$1$case$19 - block $switch$1$case$16 - block $switch$1$case$3 - block $switch$1$default - local.get $0 - i32.const 8 - i32.sub - i32.load - br_table $switch$1$default $switch$1$case$3 $switch$1$case$3 $switch$1$case$3 $switch$1$case$3 $switch$1$case$3 $switch$1$case$3 $switch$1$case$3 $switch$1$case$3 $switch$1$case$3 $switch$1$case$3 $switch$1$case$3 $switch$1$case$3 $switch$1$case$3 $switch$1$case$16 $switch$1$case$3 $switch$1$case$3 $switch$1$case$19 $switch$1$case$20 $switch$1$default - end - block - block - unreachable - unreachable - end - unreachable - unreachable - end - unreachable - end - block - block - return - unreachable - end - unreachable - unreachable - end - unreachable - end - block - br $block$16$break - unreachable - end - unreachable - end - block - block - local.get $0 - local.get $1 - call $~lib/array/Array<~lib/string/String>#__visit_impl - block - br $block$16$break - unreachable - end - unreachable - unreachable - end - unreachable - unreachable - end - unreachable - end - block - block - local.get $0 - local.get $1 - call $~lib/array/Array#__visit_impl - block - br $block$16$break - unreachable - end - unreachable - unreachable - end - unreachable - unreachable - end - unreachable - end - end - block - block - local.get $0 - i32.load - local.tee $2 - if - local.get $2 - local.get $1 - call $~lib/rt/purerc/__visit - end - return - unreachable - end - unreachable - unreachable - end - unreachable - ) - (func $null (; 49 ;) (type $FUNCSIG$v) + (func $null (; 0 ;) (type $FUNCSIG$v) ) ) diff --git a/tests/compiler/rc/logical-and-mismatch.optimized.wat b/tests/compiler/rc/logical-and-mismatch.optimized.wat index a64a115c..233e54d6 100644 --- a/tests/compiler/rc/logical-and-mismatch.optimized.wat +++ b/tests/compiler/rc/logical-and-mismatch.optimized.wat @@ -1,66 +1,44 @@ (module (type $FUNCSIG$ii (func (param i32) (result i32))) - (type $FUNCSIG$i (func (result i32))) (type $FUNCSIG$vi (func (param i32))) (type $FUNCSIG$viiii (func (param i32 i32 i32 i32))) (type $FUNCSIG$vii (func (param i32 i32))) (type $FUNCSIG$v (func)) (type $FUNCSIG$iii (func (param i32 i32) (result i32))) - (type $FUNCSIG$iiii (func (param i32 i32 i32) (result i32))) (type $FUNCSIG$viii (func (param i32 i32 i32))) + (type $FUNCSIG$i (func (result i32))) (import "rtrace" "release" (func $~lib/rt/purerc/onDecrement (param i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (import "rtrace" "free" (func $~lib/rt/tlsf/onFree (param i32))) (import "rtrace" "retain" (func $~lib/rt/purerc/onIncrement (param i32))) (memory $0 1) - (data (i32.const 8) "\"\00\00\00\01\00\00\00\10\00\00\00\"\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00p\00u\00r\00e\00r\00c\00.\00t\00s\00") - (data (i32.const 64) "\1e\00\00\00\01\00\00\00\10\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 112) "$\00\00\00\01\00\00\00\10\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 168) "\"\00\00\00\01\00\00\00\10\00\00\00\"\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00c\00o\00m\00m\00o\00n\00.\00t\00s\00") - (data (i32.const 224) "(\00\00\00\01\00\00\00\10\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 280) "\11\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00") - (table $0 1 funcref) - (elem (i32.const 0) $null) + (data (i32.const 8) "\"\00\00\00\01\00\00\00\10\00\00\00\"\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00p\00u\00r\00e\00r\00c\00.\00t\00s") + (data (i32.const 64) "\1e\00\00\00\01\00\00\00\10\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s") + (data (i32.const 112) "$\00\00\00\01\00\00\00\10\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 168) "\"\00\00\00\01\00\00\00\10\00\00\00\"\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00c\00o\00m\00m\00o\00n\00.\00t\00s") + (data (i32.const 224) "(\00\00\00\01\00\00\00\10\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 280) "\11\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08") (global $rc/logical-and-mismatch/gloRef (mut i32) (i32.const 0)) (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) (global $~lib/rt/purerc/CUR (mut i32) (i32.const 0)) (global $~lib/rt/purerc/END (mut i32) (i32.const 0)) (global $~lib/rt/purerc/ROOTS (mut i32) (i32.const 0)) - (global $~lib/builtins/RTTI_BASE i32 (i32.const 280)) - (global $~lib/builtins/HEAP_BASE i32 (i32.const 424)) (export "memory" (memory $0)) (start $start) - (func $rc/logical-and-mismatch/Ref#constructor (; 4 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - local.get $0 - i32.eqz - if - i32.const 0 - i32.const 17 - call $~lib/rt/tlsf/__alloc - call $~lib/rt/purerc/__retain - local.set $0 - end - local.get $0 - ) - (func $rc/logical-and-mismatch/getRef (; 5 ;) (type $FUNCSIG$i) (result i32) + (func $rc/logical-and-mismatch/Ref#constructor (; 4 ;) (type $FUNCSIG$i) (result i32) i32.const 0 - call $rc/logical-and-mismatch/Ref#constructor + i32.const 17 + call $~lib/rt/tlsf/__alloc + call $~lib/rt/purerc/__retain ) - (func $~lib/rt/tlsf/removeBlock (; 6 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/rt/tlsf/removeBlock (; 5 ;) (type $FUNCSIG$vii) (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 $9 i32) - (local $10 i32) - (local $11 i32) local.get $1 i32.load - local.set $2 - local.get $2 + local.tee $3 i32.const 1 i32.and i32.eqz @@ -72,17 +50,14 @@ call $~lib/builtins/abort unreachable end - local.get $2 - i32.const 3 - i32.const -1 - i32.xor - i32.and - local.set $3 local.get $3 + i32.const -4 + i32.and + local.tee $2 i32.const 16 i32.ge_u if (result i32) - local.get $3 + local.get $2 i32.const 1073741808 i32.lt_u else @@ -97,44 +72,37 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $2 i32.const 256 i32.lt_u - if - i32.const 0 - local.set $4 - local.get $3 + if (result i32) + local.get $2 i32.const 4 i32.shr_u - local.set $5 + local.set $2 + i32.const 0 else + local.get $2 i32.const 31 - local.get $3 + local.get $2 i32.clz i32.sub - local.set $4 - local.get $3 - local.get $4 + local.tee $3 i32.const 4 i32.sub i32.shr_u - i32.const 1 - i32.const 4 - i32.shl + i32.const 16 i32.xor - local.set $5 - local.get $4 - i32.const 8 - i32.const 1 + local.set $2 + local.get $3 + i32.const 7 i32.sub - i32.sub - local.set $4 end - local.get $4 + local.tee $3 i32.const 23 i32.lt_u if (result i32) - local.get $5 + local.get $2 i32.const 16 i32.lt_u else @@ -150,111 +118,76 @@ unreachable end local.get $1 - i32.load offset=16 - local.set $6 - local.get $1 i32.load offset=20 - local.set $7 - local.get $6 + local.set $4 + local.get $1 + i32.load offset=16 + local.tee $5 if - local.get $6 - local.get $7 + local.get $5 + local.get $4 i32.store offset=20 end - local.get $7 + local.get $4 if - local.get $7 - local.get $6 + local.get $4 + local.get $5 i32.store offset=16 end + local.get $3 + i32.const 4 + i32.shl + local.get $2 + i32.add + i32.const 2 + i32.shl + local.get $0 + i32.add + i32.load offset=96 local.get $1 - block $~lib/rt/tlsf/GETHEAD|inlined.0 (result i32) - local.get $0 - local.set $10 - local.get $4 - local.set $9 - local.get $5 - local.set $8 - local.get $10 - local.get $9 + i32.eq + if + local.get $3 i32.const 4 i32.shl - local.get $8 + local.get $2 i32.add i32.const 2 i32.shl + local.get $0 i32.add - i32.load offset=96 - end - i32.eq - if - block $~lib/rt/tlsf/SETHEAD|inlined.0 - local.get $0 - local.set $11 - local.get $4 - local.set $10 - local.get $5 - local.set $9 - local.get $7 - local.set $8 - local.get $11 - local.get $10 - i32.const 4 - i32.shl - local.get $9 - i32.add - i32.const 2 - i32.shl - i32.add - local.get $8 - i32.store offset=96 - end - local.get $7 + local.get $4 + i32.store offset=96 + local.get $4 i32.eqz if - block $~lib/rt/tlsf/GETSL|inlined.0 (result i32) - local.get $0 - local.set $9 - local.get $4 - local.set $8 - local.get $9 - local.get $8 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - end - local.set $8 - block $~lib/rt/tlsf/SETSL|inlined.0 - local.get $0 - local.set $11 - local.get $4 - local.set $10 - local.get $8 - i32.const 1 - local.get $5 - i32.shl - i32.const -1 - i32.xor - i32.and - local.tee $8 - local.set $9 - local.get $11 - local.get $10 - i32.const 2 - i32.shl - i32.add - local.get $9 - i32.store offset=4 - end - local.get $8 + local.get $3 + i32.const 2 + i32.shl + local.get $0 + i32.add + local.get $3 + i32.const 2 + i32.shl + local.get $0 + i32.add + i32.load offset=4 + i32.const 1 + local.get $2 + i32.shl + i32.const -1 + i32.xor + i32.and + local.tee $1 + i32.store offset=4 + local.get $1 i32.eqz if local.get $0 local.get $0 i32.load i32.const 1 - local.get $4 + local.get $3 i32.shl i32.const -1 i32.xor @@ -264,19 +197,13 @@ end end ) - (func $~lib/rt/tlsf/insertBlock (; 7 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/rt/tlsf/insertBlock (; 6 ;) (type $FUNCSIG$vii) (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 $9 i32) - (local $10 i32) - (local $11 i32) - (local $12 i32) - (local $13 i32) local.get $1 i32.eqz if @@ -289,8 +216,7 @@ end local.get $1 i32.load - local.set $2 - local.get $2 + local.tee $3 i32.const 1 i32.and i32.eqz @@ -302,43 +228,30 @@ call $~lib/builtins/abort unreachable end - block $~lib/rt/tlsf/GETRIGHT|inlined.0 (result i32) - local.get $1 - local.set $3 - local.get $3 - i32.const 16 - i32.add - local.get $3 - i32.load - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.add - end - local.set $4 - local.get $4 + local.get $1 + i32.const 16 + i32.add + local.get $1 i32.load - local.set $5 - local.get $5 + i32.const -4 + i32.and + i32.add + local.tee $4 + i32.load + local.tee $5 i32.const 1 i32.and if - local.get $2 - i32.const 3 - i32.const -1 - i32.xor + local.get $3 + i32.const -4 i32.and i32.const 16 i32.add local.get $5 - i32.const 3 - i32.const -1 - i32.xor + i32.const -4 i32.and i32.add - local.set $3 - local.get $3 + local.tee $2 i32.const 1073741808 i32.lt_u if @@ -346,50 +259,37 @@ local.get $4 call $~lib/rt/tlsf/removeBlock local.get $1 - local.get $2 + local.get $3 i32.const 3 i32.and - local.get $3 + local.get $2 i32.or - local.tee $2 + local.tee $3 i32.store - block $~lib/rt/tlsf/GETRIGHT|inlined.1 (result i32) - local.get $1 - local.set $6 - local.get $6 - i32.const 16 - i32.add - local.get $6 - i32.load - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.add - end - local.set $4 - local.get $4 + local.get $1 + i32.const 16 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $4 i32.load local.set $5 end end - local.get $2 + local.get $3 i32.const 2 i32.and if - block $~lib/rt/tlsf/GETFREELEFT|inlined.0 (result i32) - local.get $1 - local.set $3 - local.get $3 - i32.const 4 - i32.sub - i32.load - end - local.set $3 - local.get $3 + local.get $1 + i32.const 4 + i32.sub i32.load - local.set $6 - local.get $6 + local.tee $2 + i32.load + local.tee $6 i32.const 1 i32.and i32.eqz @@ -402,54 +302,48 @@ unreachable end local.get $6 - i32.const 3 - i32.const -1 - i32.xor + i32.const -4 i32.and i32.const 16 i32.add - local.get $2 - i32.const 3 - i32.const -1 - i32.xor + local.get $3 + i32.const -4 i32.and i32.add - local.set $7 - local.get $7 + local.tee $7 i32.const 1073741808 i32.lt_u - if + if (result i32) local.get $0 - local.get $3 + local.get $2 call $~lib/rt/tlsf/removeBlock - local.get $3 + local.get $2 local.get $6 i32.const 3 i32.and local.get $7 i32.or - local.tee $2 + local.tee $3 i32.store - local.get $3 - local.set $1 + local.get $2 + else + local.get $1 end + local.set $1 end local.get $4 local.get $5 i32.const 2 i32.or i32.store - local.get $2 - i32.const 3 - i32.const -1 - i32.xor + local.get $3 + i32.const -4 i32.and - local.set $8 - local.get $8 + local.tee $2 i32.const 16 i32.ge_u if (result i32) - local.get $8 + local.get $2 i32.const 1073741808 i32.lt_u else @@ -464,14 +358,13 @@ call $~lib/builtins/abort unreachable end + local.get $4 local.get $1 i32.const 16 i32.add - local.get $8 + local.get $2 i32.add - local.get $4 - i32.eq - i32.eqz + i32.ne if i32.const 0 i32.const 80 @@ -485,44 +378,37 @@ i32.sub local.get $1 i32.store - local.get $8 + local.get $2 i32.const 256 i32.lt_u - if - i32.const 0 - local.set $9 - local.get $8 + if (result i32) + local.get $2 i32.const 4 i32.shr_u - local.set $10 + local.set $4 + i32.const 0 else + local.get $2 i32.const 31 - local.get $8 + local.get $2 i32.clz i32.sub - local.set $9 - local.get $8 - local.get $9 + local.tee $2 i32.const 4 i32.sub i32.shr_u - i32.const 1 - i32.const 4 - i32.shl + i32.const 16 i32.xor - local.set $10 - local.get $9 - i32.const 8 - i32.const 1 + local.set $4 + local.get $2 + i32.const 7 i32.sub - i32.sub - local.set $9 end - local.get $9 + local.tee $3 i32.const 23 i32.lt_u if (result i32) - local.get $10 + local.get $4 i32.const 16 i32.lt_u else @@ -537,107 +423,72 @@ call $~lib/builtins/abort unreachable end - block $~lib/rt/tlsf/GETHEAD|inlined.1 (result i32) - local.get $0 - local.set $3 - local.get $9 - local.set $6 - local.get $10 - local.set $7 - local.get $3 - local.get $6 - i32.const 4 - i32.shl - local.get $7 - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - end - local.set $11 + local.get $3 + i32.const 4 + i32.shl + local.get $4 + i32.add + i32.const 2 + i32.shl + local.get $0 + i32.add + i32.load offset=96 + local.set $2 local.get $1 i32.const 0 i32.store offset=16 local.get $1 - local.get $11 + local.get $2 i32.store offset=20 - local.get $11 + local.get $2 if - local.get $11 + local.get $2 local.get $1 i32.store offset=16 end - block $~lib/rt/tlsf/SETHEAD|inlined.1 - local.get $0 - local.set $12 - local.get $9 - local.set $3 - local.get $10 - local.set $6 - local.get $1 - local.set $7 - local.get $12 - local.get $3 - i32.const 4 - i32.shl - local.get $6 - i32.add - i32.const 2 - i32.shl - i32.add - local.get $7 - i32.store offset=96 - end + local.get $3 + i32.const 4 + i32.shl + local.get $4 + i32.add + i32.const 2 + i32.shl + local.get $0 + i32.add + local.get $1 + i32.store offset=96 local.get $0 local.get $0 i32.load i32.const 1 - local.get $9 + local.get $3 i32.shl i32.or i32.store - block $~lib/rt/tlsf/SETSL|inlined.1 - local.get $0 - local.set $3 - local.get $9 - local.set $6 - block $~lib/rt/tlsf/GETSL|inlined.1 (result i32) - local.get $0 - local.set $13 - local.get $9 - local.set $12 - local.get $13 - local.get $12 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - end - i32.const 1 - local.get $10 - i32.shl - i32.or - local.set $7 - local.get $3 - local.get $6 - i32.const 2 - i32.shl - i32.add - local.get $7 - i32.store offset=4 - end + local.get $3 + i32.const 2 + i32.shl + local.get $0 + i32.add + local.get $3 + i32.const 2 + i32.shl + local.get $0 + i32.add + i32.load offset=4 + i32.const 1 + local.get $4 + i32.shl + i32.or + i32.store offset=4 ) - (func $~lib/rt/tlsf/freeBlock (; 8 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/rt/tlsf/freeBlock (; 7 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) local.get $1 i32.load - local.set $2 - local.get $2 + local.tee $2 i32.const 1 i32.and - i32.eqz - i32.eqz if i32.const 0 i32.const 80 @@ -657,19 +508,15 @@ local.get $1 call $~lib/rt/tlsf/onFree ) - (func $~lib/rt/common/__typeinfo (; 9 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - (local $1 i32) - global.get $~lib/builtins/RTTI_BASE - local.set $1 + (func $~lib/rt/common/__typeinfo (; 8 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 - i32.eqz if (result i32) - i32.const 1 - else local.get $0 - local.get $1 + i32.const 280 i32.load i32.gt_u + else + i32.const 1 end if i32.const 128 @@ -679,40 +526,31 @@ call $~lib/builtins/abort unreachable end - local.get $1 local.get $0 - i32.const 8 - i32.mul + i32.const 3 + i32.shl + i32.const 280 i32.add i32.load ) - (func $~lib/rt/tlsf/addMemory (; 10 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/rt/tlsf/addMemory (; 9 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $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 $2 + i32.const 15 + i32.and + i32.eqz + i32.const 0 + local.get $1 + i32.const 15 + i32.and + i32.eqz + i32.const 0 local.get $1 local.get $2 i32.le_u - if (result i32) - local.get $1 - i32.const 15 - i32.and - i32.eqz - else - i32.const 0 - end - if (result i32) - local.get $2 - i32.const 15 - i32.and - i32.eqz - else - i32.const 0 - end + select + select i32.eqz if i32.const 0 @@ -722,23 +560,15 @@ call $~lib/builtins/abort unreachable end - block $~lib/rt/tlsf/GETTAIL|inlined.0 (result i32) - local.get $0 - local.set $3 - local.get $3 - i32.load offset=1568 - end - local.set $4 - i32.const 0 - local.set $5 - local.get $4 + local.get $0 + i32.load offset=1568 + local.tee $3 if local.get $1 - local.get $4 + local.get $3 i32.const 16 i32.add - i32.ge_u - i32.eqz + i32.lt_u if i32.const 0 i32.const 80 @@ -750,26 +580,23 @@ local.get $1 i32.const 16 i32.sub - local.get $4 + local.get $3 i32.eq if + local.get $3 + i32.load + local.set $4 local.get $1 i32.const 16 i32.sub local.set $1 - local.get $4 - i32.load - local.set $5 - else - nop end else local.get $1 local.get $0 i32.const 1572 i32.add - i32.ge_u - i32.eqz + i32.lt_u if i32.const 0 i32.const 80 @@ -782,101 +609,54 @@ local.get $2 local.get $1 i32.sub - local.set $6 - local.get $6 + local.tee $2 i32.const 48 i32.lt_u if - i32.const 0 return end - local.get $6 - i32.const 2 - i32.const 16 - i32.mul - i32.sub - local.set $7 local.get $1 - local.set $8 - local.get $8 - local.get $7 - i32.const 1 - i32.or - local.get $5 + local.get $4 i32.const 2 i32.and + local.get $2 + i32.const 32 + i32.sub + i32.const 1 + i32.or i32.or i32.store - local.get $8 + local.get $1 i32.const 0 i32.store offset=16 - local.get $8 + local.get $1 i32.const 0 i32.store offset=20 local.get $1 - local.get $6 + local.get $2 i32.add i32.const 16 i32.sub - local.set $4 - local.get $4 - i32.const 0 + local.tee $2 i32.const 2 - i32.or i32.store - block $~lib/rt/tlsf/SETTAIL|inlined.1 - local.get $0 - local.set $9 - local.get $4 - local.set $3 - local.get $9 - local.get $3 - i32.store offset=1568 - end local.get $0 - local.get $8 + local.get $2 + i32.store offset=1568 + local.get $0 + local.get $1 call $~lib/rt/tlsf/insertBlock - i32.const 1 ) - (func $~lib/rt/tlsf/initializeRoot (; 11 ;) (type $FUNCSIG$v) + (func $~lib/rt/tlsf/initializeRoot (; 10 ;) (type $FUNCSIG$v) (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) - (local $9 i32) - global.get $~lib/builtins/HEAP_BASE - i32.const 15 - i32.add - i32.const 15 - i32.const -1 - i32.xor - i32.and - local.set $0 + i32.const 1 current_memory - local.set $1 - local.get $0 - i32.const 1572 - i32.add - i32.const 65535 - i32.add - i32.const 65535 - i32.const -1 - i32.xor - i32.and - i32.const 16 - i32.shr_u - local.set $2 - local.get $2 - local.get $1 + local.tee $0 i32.gt_s if (result i32) - local.get $2 - local.get $1 + i32.const 1 + local.get $0 i32.sub grow_memory i32.const 0 @@ -887,113 +667,70 @@ if unreachable end - local.get $0 - local.set $3 - local.get $3 + i32.const 432 i32.const 0 i32.store - block $~lib/rt/tlsf/SETTAIL|inlined.0 - local.get $3 - local.set $5 - i32.const 0 - local.set $4 - local.get $5 - local.get $4 - i32.store offset=1568 - end - block $break|0 - i32.const 0 - local.set $4 - loop $repeat|0 - local.get $4 + i32.const 2000 + i32.const 0 + i32.store + i32.const 0 + local.set $0 + loop $repeat|0 + block $break|0 + local.get $0 i32.const 23 - i32.lt_u - i32.eqz + i32.ge_u br_if $break|0 - block $~lib/rt/tlsf/SETSL|inlined.2 - local.get $3 - local.set $7 - local.get $4 - local.set $6 - i32.const 0 - local.set $5 - local.get $7 - local.get $6 - i32.const 2 - i32.shl - i32.add - local.get $5 - i32.store offset=4 - end - block $break|1 - i32.const 0 - local.set $5 - loop $repeat|1 - local.get $5 + local.get $0 + i32.const 2 + i32.shl + i32.const 432 + i32.add + i32.const 0 + i32.store offset=4 + i32.const 0 + local.set $1 + loop $repeat|1 + block $break|1 + local.get $1 i32.const 16 - i32.lt_u - i32.eqz + i32.ge_u br_if $break|1 - block $~lib/rt/tlsf/SETHEAD|inlined.2 - local.get $3 - local.set $9 - local.get $4 - local.set $8 - local.get $5 - local.set $7 - i32.const 0 - local.set $6 - local.get $9 - local.get $8 - i32.const 4 - i32.shl - local.get $7 - i32.add - i32.const 2 - i32.shl - i32.add - local.get $6 - i32.store offset=96 - end - local.get $5 + local.get $0 + i32.const 4 + i32.shl + local.get $1 + i32.add + i32.const 2 + i32.shl + i32.const 432 + i32.add + i32.const 0 + i32.store offset=96 + local.get $1 i32.const 1 i32.add - local.set $5 + local.set $1 br $repeat|1 - unreachable end - unreachable end - local.get $4 + local.get $0 i32.const 1 i32.add - local.set $4 + local.set $0 br $repeat|0 - unreachable end - unreachable end - local.get $3 - local.get $0 - i32.const 1572 - i32.add - i32.const 15 - i32.add - i32.const 15 - i32.const -1 - i32.xor - i32.and + i32.const 432 + i32.const 2016 current_memory i32.const 16 i32.shl call $~lib/rt/tlsf/addMemory - drop - local.get $3 + i32.const 432 global.set $~lib/rt/tlsf/ROOT ) - (func $~lib/rt/tlsf/prepareSize (; 12 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) + (func $~lib/rt/tlsf/prepareSize (; 11 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.const 1073741808 i32.ge_u @@ -1008,83 +745,64 @@ local.get $0 i32.const 15 i32.add - i32.const 15 - i32.const -1 - i32.xor + i32.const -16 i32.and - local.tee $1 + local.tee $0 + i32.const 16 + local.get $0 i32.const 16 - local.tee $2 - local.get $1 - local.get $2 i32.gt_u select ) - (func $~lib/rt/tlsf/searchBlock (; 13 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/rt/tlsf/searchBlock (; 12 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result 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 $1 i32.const 256 i32.lt_u - if - i32.const 0 - local.set $2 + if (result i32) local.get $1 i32.const 4 i32.shr_u - local.set $3 + local.set $1 + i32.const 0 else local.get $1 i32.const 536870904 i32.lt_u - if (result i32) - local.get $1 + if i32.const 1 i32.const 27 local.get $1 i32.clz i32.sub i32.shl + local.get $1 i32.add i32.const 1 i32.sub - else - local.get $1 + local.set $1 end - local.set $4 + local.get $1 i32.const 31 - local.get $4 + local.get $1 i32.clz i32.sub - local.set $2 - local.get $4 - local.get $2 + local.tee $2 i32.const 4 i32.sub i32.shr_u - i32.const 1 - i32.const 4 - i32.shl + i32.const 16 i32.xor - local.set $3 + local.set $1 local.get $2 - i32.const 8 - i32.const 1 + i32.const 7 i32.sub - i32.sub - local.set $2 end - local.get $2 + local.tee $2 i32.const 23 i32.lt_u if (result i32) - local.get $3 + local.get $1 i32.const 16 i32.lt_u else @@ -1099,62 +817,49 @@ call $~lib/builtins/abort unreachable end - block $~lib/rt/tlsf/GETSL|inlined.2 (result i32) - local.get $0 - local.set $5 - local.get $2 - local.set $4 - local.get $5 - local.get $4 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - end - i32.const 0 + local.get $2 + i32.const 2 + i32.shl + local.get $0 + i32.add + i32.load offset=4 i32.const -1 - i32.xor - local.get $3 + local.get $1 i32.shl i32.and - local.set $6 - local.get $6 - i32.eqz - if + local.tee $1 + if (result i32) + local.get $1 + i32.ctz + local.get $2 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + local.get $0 + i32.add + i32.load offset=96 + else local.get $0 i32.load - i32.const 0 i32.const -1 - i32.xor local.get $2 i32.const 1 i32.add i32.shl i32.and - local.set $4 - local.get $4 - i32.eqz - if - i32.const 0 - local.set $7 - else - local.get $4 + local.tee $1 + if (result i32) + local.get $1 i32.ctz - local.set $2 - block $~lib/rt/tlsf/GETSL|inlined.3 (result i32) - local.get $0 - local.set $8 - local.get $2 - local.set $5 - local.get $8 - local.get $5 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - end - local.set $6 - local.get $6 + local.tee $1 + i32.const 2 + i32.shl + local.get $0 + i32.add + i32.load offset=4 + local.tee $2 i32.eqz if i32.const 0 @@ -1164,85 +869,43 @@ call $~lib/builtins/abort unreachable end - block $~lib/rt/tlsf/GETHEAD|inlined.2 (result i32) - local.get $0 - local.set $9 - local.get $2 - local.set $8 - local.get $6 - i32.ctz - local.set $5 - local.get $9 - local.get $8 - i32.const 4 - i32.shl - local.get $5 - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - end - local.set $7 - end - else - block $~lib/rt/tlsf/GETHEAD|inlined.3 (result i32) - local.get $0 - local.set $8 local.get $2 - local.set $5 - local.get $6 i32.ctz - local.set $4 - local.get $8 - local.get $5 + local.get $1 i32.const 4 i32.shl - local.get $4 i32.add i32.const 2 i32.shl + local.get $0 i32.add i32.load offset=96 + else + i32.const 0 end - local.set $7 end - local.get $7 ) - (func $~lib/rt/tlsf/growMemory (; 14 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/rt/tlsf/growMemory (; 13 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) current_memory - local.set $2 + local.tee $2 local.get $1 i32.const 65535 i32.add - i32.const 65535 - i32.const -1 - i32.xor + i32.const -65536 i32.and i32.const 16 i32.shr_u - local.set $3 + local.tee $1 local.get $2 - local.tee $4 - local.get $3 - local.tee $5 - local.get $4 - local.get $5 + local.get $1 i32.gt_s select - local.set $6 - local.get $6 grow_memory i32.const 0 i32.lt_s if - local.get $3 + local.get $1 grow_memory i32.const 0 i32.lt_s @@ -1250,30 +913,24 @@ unreachable end end - current_memory - local.set $7 local.get $0 local.get $2 i32.const 16 i32.shl - local.get $7 + current_memory i32.const 16 i32.shl call $~lib/rt/tlsf/addMemory - drop ) - (func $~lib/rt/tlsf/prepareBlock (; 15 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/rt/tlsf/prepareBlock (; 14 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) - (local $5 i32) local.get $1 i32.load local.set $3 local.get $2 i32.const 15 i32.and - i32.eqz - i32.eqz if i32.const 0 i32.const 80 @@ -1283,22 +940,19 @@ unreachable end local.get $3 - i32.const 3 - i32.const -1 - i32.xor + i32.const -4 i32.and local.get $2 i32.sub - local.set $4 - local.get $4 + local.tee $4 i32.const 32 i32.ge_u if local.get $1 - local.get $2 local.get $3 i32.const 2 i32.and + local.get $2 i32.or i32.store local.get $1 @@ -1306,8 +960,7 @@ i32.add local.get $2 i32.add - local.set $5 - local.get $5 + local.tee $1 local.get $4 i32.const 16 i32.sub @@ -1315,73 +968,54 @@ i32.or i32.store local.get $0 - local.get $5 + local.get $1 call $~lib/rt/tlsf/insertBlock else local.get $1 local.get $3 - i32.const 1 - i32.const -1 - i32.xor + i32.const -2 i32.and i32.store - block $~lib/rt/tlsf/GETRIGHT|inlined.3 (result i32) - local.get $1 - local.set $5 - local.get $5 - i32.const 16 - i32.add - local.get $5 - i32.load - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.add - end - block $~lib/rt/tlsf/GETRIGHT|inlined.2 (result i32) - local.get $1 - local.set $5 - local.get $5 - i32.const 16 - i32.add - local.get $5 - i32.load - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.add - end + local.get $1 + i32.const 16 + i32.add + local.get $1 i32.load - i32.const 2 - i32.const -1 - i32.xor + i32.const -4 + i32.and + i32.add + local.get $1 + i32.const 16 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + i32.load + i32.const -3 i32.and i32.store end ) - (func $~lib/rt/tlsf/allocateBlock (; 16 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/rt/tlsf/allocateBlock (; 15 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) + local.get $0 local.get $1 call $~lib/rt/tlsf/prepareSize - local.set $2 - local.get $0 - local.get $2 + local.tee $3 call $~lib/rt/tlsf/searchBlock - local.set $3 - local.get $3 + local.tee $2 i32.eqz if local.get $0 - local.get $2 + local.get $3 call $~lib/rt/tlsf/growMemory local.get $0 - local.get $2 - call $~lib/rt/tlsf/searchBlock - local.set $3 local.get $3 + call $~lib/rt/tlsf/searchBlock + local.tee $2 i32.eqz if i32.const 0 @@ -1392,15 +1026,12 @@ unreachable end end - local.get $3 - i32.load - i32.const 3 - i32.const -1 - i32.xor - i32.and local.get $2 - i32.ge_u - i32.eqz + i32.load + i32.const -4 + i32.and + local.get $3 + i32.lt_u if i32.const 0 i32.const 80 @@ -1409,300 +1040,253 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $2 i32.const 0 i32.store offset=4 - local.get $3 + local.get $2 local.get $1 i32.store offset=12 local.get $0 - local.get $3 + local.get $2 call $~lib/rt/tlsf/removeBlock local.get $0 - local.get $3 local.get $2 + local.get $3 call $~lib/rt/tlsf/prepareBlock - local.get $3 - ) - (func $~lib/rt/tlsf/__alloc (; 17 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - global.get $~lib/rt/tlsf/ROOT - local.set $2 local.get $2 - i32.eqz - if + ) + (func $~lib/rt/tlsf/__alloc (; 16 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + global.get $~lib/rt/tlsf/ROOT + local.tee $2 + if (result i32) + local.get $2 + else call $~lib/rt/tlsf/initializeRoot global.get $~lib/rt/tlsf/ROOT - local.set $2 end - local.get $2 local.get $0 call $~lib/rt/tlsf/allocateBlock - local.set $3 - local.get $3 + local.tee $0 local.get $1 i32.store offset=8 - local.get $3 + local.get $0 i32.const 16 i32.add ) - (func $~lib/memory/memory.copy (; 18 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/memory/memory.copy (; 17 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) - (local $5 i32) - (local $6 i32) block $~lib/util/memory/memmove|inlined.0 - local.get $0 - local.set $5 - local.get $1 - local.set $4 local.get $2 local.set $3 - local.get $5 - local.get $4 + local.get $0 + local.get $1 i32.eq - if - br $~lib/util/memory/memmove|inlined.0 - end - local.get $5 - local.get $4 + br_if $~lib/util/memory/memmove|inlined.0 + local.get $0 + local.get $1 i32.lt_u if - local.get $4 + local.get $1 i32.const 7 i32.and - local.get $5 + local.get $0 i32.const 7 i32.and i32.eq if - block $break|0 - loop $continue|0 - local.get $5 - i32.const 7 - i32.and - if - local.get $3 - i32.eqz - if - br $~lib/util/memory/memmove|inlined.0 - end - local.get $3 - i32.const 1 - i32.sub - local.set $3 - block (result i32) - local.get $5 - local.tee $6 - i32.const 1 - i32.add - local.set $5 - local.get $6 - end - block (result i32) - local.get $4 - local.tee $6 - i32.const 1 - i32.add - local.set $4 - local.get $6 - end - i32.load8_u - i32.store8 - br $continue|0 - end - end - end - block $break|1 - loop $continue|1 - local.get $3 - i32.const 8 - i32.ge_u - if - local.get $5 - local.get $4 - i64.load - i64.store - local.get $3 - i32.const 8 - i32.sub - local.set $3 - local.get $5 - i32.const 8 - i32.add - local.set $5 - local.get $4 - i32.const 8 - i32.add - local.set $4 - br $continue|1 - end - end - end - end - block $break|2 - loop $continue|2 - local.get $3 + loop $continue|0 + local.get $0 + i32.const 7 + i32.and if - block (result i32) - local.get $5 - local.tee $6 - i32.const 1 - i32.add - local.set $5 - local.get $6 - end - block (result i32) - local.get $4 - local.tee $6 - i32.const 1 - i32.add - local.set $4 - local.get $6 - end - i32.load8_u - i32.store8 + local.get $3 + i32.eqz + br_if $~lib/util/memory/memmove|inlined.0 local.get $3 i32.const 1 i32.sub local.set $3 - br $continue|2 + local.get $0 + local.tee $2 + i32.const 1 + i32.add + local.set $0 + local.get $1 + local.tee $4 + i32.const 1 + i32.add + local.set $1 + local.get $2 + local.get $4 + i32.load8_u + i32.store8 + br $continue|0 + end + end + loop $continue|1 + local.get $3 + i32.const 8 + i32.ge_u + if + local.get $0 + local.get $1 + i64.load + i64.store + local.get $3 + i32.const 8 + i32.sub + local.set $3 + local.get $0 + i32.const 8 + i32.add + local.set $0 + local.get $1 + i32.const 8 + i32.add + local.set $1 + br $continue|1 end end end + loop $continue|2 + local.get $3 + if + local.get $0 + local.tee $2 + i32.const 1 + i32.add + local.set $0 + local.get $1 + local.tee $4 + i32.const 1 + i32.add + local.set $1 + local.get $2 + local.get $4 + i32.load8_u + i32.store8 + local.get $3 + i32.const 1 + i32.sub + local.set $3 + br $continue|2 + end + end else - local.get $4 + local.get $1 i32.const 7 i32.and - local.get $5 + local.get $0 i32.const 7 i32.and i32.eq if - block $break|3 - loop $continue|3 - local.get $5 - local.get $3 - i32.add - i32.const 7 - i32.and - if - local.get $3 - i32.eqz - if - br $~lib/util/memory/memmove|inlined.0 - end - local.get $5 - local.get $3 - i32.const 1 - i32.sub - local.tee $3 - i32.add - local.get $4 - local.get $3 - i32.add - i32.load8_u - i32.store8 - br $continue|3 - end - end - end - block $break|4 - loop $continue|4 - local.get $3 - i32.const 8 - i32.ge_u - if - local.get $3 - i32.const 8 - i32.sub - local.set $3 - local.get $5 - local.get $3 - i32.add - local.get $4 - local.get $3 - i32.add - i64.load - i64.store - br $continue|4 - end - end - end - end - block $break|5 - loop $continue|5 + loop $continue|3 + local.get $0 local.get $3 + i32.add + i32.const 7 + i32.and if - local.get $5 + local.get $3 + i32.eqz + br_if $~lib/util/memory/memmove|inlined.0 + local.get $0 local.get $3 i32.const 1 i32.sub local.tee $3 i32.add - local.get $4 + local.get $1 local.get $3 i32.add i32.load8_u i32.store8 - br $continue|5 + br $continue|3 end end + loop $continue|4 + local.get $3 + i32.const 8 + i32.ge_u + if + local.get $0 + local.get $3 + i32.const 8 + i32.sub + local.tee $3 + i32.add + local.get $1 + local.get $3 + i32.add + i64.load + i64.store + br $continue|4 + end + end + end + loop $continue|5 + local.get $3 + if + local.get $0 + local.get $3 + i32.const 1 + i32.sub + local.tee $3 + i32.add + local.get $1 + local.get $3 + i32.add + i32.load8_u + i32.store8 + br $continue|5 + end end end end ) - (func $~lib/rt/purerc/growRoots (; 19 ;) (type $FUNCSIG$v) + (func $~lib/rt/purerc/growRoots (; 18 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) (local $3 i32) - (local $4 i32) - (local $5 i32) - global.get $~lib/rt/purerc/ROOTS - local.set $0 global.get $~lib/rt/purerc/CUR - local.get $0 - i32.sub - local.set $1 - local.get $1 - i32.const 2 - i32.mul + global.get $~lib/rt/purerc/ROOTS local.tee $2 - i32.const 64 - i32.const 2 + i32.sub + local.tee $1 + i32.const 1 i32.shl - local.tee $3 - local.get $2 - local.get $3 + local.tee $0 + i32.const 256 + local.get $0 + i32.const 256 i32.gt_u select - local.set $4 - local.get $4 + local.tee $3 i32.const 0 call $~lib/rt/tlsf/__alloc - local.set $5 - local.get $5 - local.get $0 + local.tee $0 + local.get $2 local.get $1 call $~lib/memory/memory.copy - local.get $5 + local.get $0 global.set $~lib/rt/purerc/ROOTS - local.get $5 + local.get $0 local.get $1 i32.add global.set $~lib/rt/purerc/CUR - local.get $5 - local.get $4 + local.get $0 + local.get $3 i32.add global.set $~lib/rt/purerc/END ) - (func $~lib/rt/purerc/appendRoot (; 20 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $~lib/rt/purerc/appendRoot (; 19 ;) (type $FUNCSIG$vi) (param $0 i32) (local $1 i32) global.get $~lib/rt/purerc/CUR - local.set $1 - local.get $1 + local.tee $1 global.get $~lib/rt/purerc/END i32.ge_u if @@ -1718,24 +1302,21 @@ i32.add global.set $~lib/rt/purerc/CUR ) - (func $~lib/rt/purerc/decrement (; 21 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $~lib/rt/purerc/decrement (; 20 ;) (type $FUNCSIG$vi) (param $0 i32) (local $1 i32) (local $2 i32) local.get $0 i32.load offset=4 - local.set $1 - local.get $1 + local.tee $2 i32.const 268435455 i32.and - local.set $2 + local.set $1 local.get $0 call $~lib/rt/purerc/onDecrement local.get $0 i32.load i32.const 1 i32.and - i32.eqz - i32.eqz if i32.const 0 i32.const 24 @@ -1744,7 +1325,7 @@ call $~lib/builtins/abort unreachable end - local.get $2 + local.get $1 i32.const 1 i32.eq if @@ -1753,28 +1334,22 @@ i32.add i32.const 1 call $~lib/builtins/__visit_members - local.get $1 + local.get $2 i32.const -2147483648 i32.and - i32.eqz if + local.get $0 + i32.const -2147483648 + i32.store offset=4 + else global.get $~lib/rt/tlsf/ROOT local.get $0 call $~lib/rt/tlsf/freeBlock - else - local.get $0 - i32.const -2147483648 - i32.const 0 - i32.or - i32.const 0 - i32.or - i32.store offset=4 end else - local.get $2 + local.get $1 i32.const 0 - i32.gt_u - i32.eqz + i32.le_u if i32.const 0 i32.const 24 @@ -1788,18 +1363,25 @@ call $~lib/rt/common/__typeinfo i32.const 8 i32.and - i32.eqz if local.get $0 - i32.const -2147483648 - i32.const 805306368 - i32.or - local.get $2 + local.get $1 i32.const 1 i32.sub + local.get $2 + i32.const -268435456 + i32.and i32.or i32.store offset=4 + else + local.get $0 local.get $1 + i32.const 1 + i32.sub + i32.const -1342177280 + i32.or + i32.store offset=4 + local.get $2 i32.const -2147483648 i32.and i32.eqz @@ -1807,24 +1389,12 @@ local.get $0 call $~lib/rt/purerc/appendRoot end - else - local.get $0 - local.get $1 - i32.const 268435455 - i32.const -1 - i32.xor - i32.and - local.get $2 - i32.const 1 - i32.sub - i32.or - i32.store offset=4 end end ) - (func $~lib/rt/purerc/__release (; 22 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $~lib/rt/purerc/__release (; 21 ;) (type $FUNCSIG$vi) (param $0 i32) local.get $0 - global.get $~lib/builtins/HEAP_BASE + i32.const 424 i32.gt_u if local.get $0 @@ -1833,96 +1403,68 @@ call $~lib/rt/purerc/decrement end ) - (func $start:rc/logical-and-mismatch (; 23 ;) (type $FUNCSIG$v) + (func $start:rc/logical-and-mismatch (; 22 ;) (type $FUNCSIG$v) (local $0 i32) - (local $1 i32) - i32.const 0 call $rc/logical-and-mismatch/Ref#constructor global.set $rc/logical-and-mismatch/gloRef - block - call $rc/logical-and-mismatch/getRef - local.tee $0 - if (result i32) - global.get $rc/logical-and-mismatch/gloRef - call $~lib/rt/purerc/__retain - local.set $1 - local.get $0 - call $~lib/rt/purerc/__release - local.get $1 - else - local.get $0 - end - local.set $0 + call $rc/logical-and-mismatch/Ref#constructor + local.tee $0 + if (result i32) local.get $0 call $~lib/rt/purerc/__release - end - block global.get $rc/logical-and-mismatch/gloRef - local.tee $0 - if (result i32) - call $rc/logical-and-mismatch/getRef - else - local.get $0 - call $~lib/rt/purerc/__retain - end - local.set $0 - local.get $0 - call $~lib/rt/purerc/__release - end - block - call $rc/logical-and-mismatch/getRef - local.tee $0 - if (result i32) - call $rc/logical-and-mismatch/getRef - local.set $1 - local.get $0 - call $~lib/rt/purerc/__release - local.get $1 - else - local.get $0 - end - local.set $0 - local.get $0 - call $~lib/rt/purerc/__release - end - block - global.get $rc/logical-and-mismatch/gloRef - local.tee $0 - if (result i32) - global.get $rc/logical-and-mismatch/gloRef - else - local.get $0 - end call $~lib/rt/purerc/__retain - local.set $0 + else + local.get $0 + end + call $~lib/rt/purerc/__release + global.get $rc/logical-and-mismatch/gloRef + local.tee $0 + if (result i32) + call $rc/logical-and-mismatch/Ref#constructor + else + local.get $0 + call $~lib/rt/purerc/__retain + end + call $~lib/rt/purerc/__release + call $rc/logical-and-mismatch/Ref#constructor + local.tee $0 + if (result i32) local.get $0 call $~lib/rt/purerc/__release + call $rc/logical-and-mismatch/Ref#constructor + else + local.get $0 end + call $~lib/rt/purerc/__release + global.get $rc/logical-and-mismatch/gloRef + local.tee $0 + if (result i32) + global.get $rc/logical-and-mismatch/gloRef + else + local.get $0 + end + call $~lib/rt/purerc/__retain + call $~lib/rt/purerc/__release global.get $rc/logical-and-mismatch/gloRef call $~lib/rt/purerc/__release ) - (func $start (; 24 ;) (type $FUNCSIG$v) + (func $start (; 23 ;) (type $FUNCSIG$v) call $start:rc/logical-and-mismatch ) - (func $~lib/rt/purerc/increment (; 25 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $~lib/rt/purerc/increment (; 24 ;) (type $FUNCSIG$vi) (param $0 i32) (local $1 i32) local.get $0 i32.load offset=4 - local.set $1 - local.get $1 - i32.const 268435455 - i32.const -1 - i32.xor + local.tee $1 + i32.const -268435456 i32.and local.get $1 i32.const 1 i32.add - i32.const 268435455 - i32.const -1 - i32.xor + i32.const -268435456 i32.and - i32.eq - i32.eqz + i32.ne if i32.const 0 i32.const 24 @@ -1942,8 +1484,6 @@ i32.load i32.const 1 i32.and - i32.eqz - i32.eqz if i32.const 0 i32.const 24 @@ -1953,9 +1493,9 @@ unreachable end ) - (func $~lib/rt/purerc/__retain (; 26 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/rt/purerc/__retain (; 25 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 - global.get $~lib/builtins/HEAP_BASE + i32.const 424 i32.gt_u if local.get $0 @@ -1965,12 +1505,11 @@ end local.get $0 ) - (func $~lib/rt/purerc/markGray (; 27 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $~lib/rt/purerc/markGray (; 26 ;) (type $FUNCSIG$vi) (param $0 i32) (local $1 i32) local.get $0 i32.load offset=4 - local.set $1 - local.get $1 + local.tee $1 i32.const 1879048192 i32.and i32.const 268435456 @@ -1978,9 +1517,7 @@ if local.get $0 local.get $1 - i32.const 1879048192 - i32.const -1 - i32.xor + i32.const -1879048193 i32.and i32.const 268435456 i32.or @@ -1992,16 +1529,12 @@ call $~lib/builtins/__visit_members end ) - (func $~lib/rt/purerc/scanBlack (; 28 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $~lib/rt/purerc/scanBlack (; 27 ;) (type $FUNCSIG$vi) (param $0 i32) local.get $0 local.get $0 i32.load offset=4 - i32.const 1879048192 - i32.const -1 - i32.xor + i32.const -1879048193 i32.and - i32.const 0 - i32.or i32.store offset=4 local.get $0 i32.const 16 @@ -2009,12 +1542,11 @@ i32.const 4 call $~lib/builtins/__visit_members ) - (func $~lib/rt/purerc/scan (; 29 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $~lib/rt/purerc/scan (; 28 ;) (type $FUNCSIG$vi) (param $0 i32) (local $1 i32) local.get $0 i32.load offset=4 - local.set $1 - local.get $1 + local.tee $1 i32.const 1879048192 i32.and i32.const 268435456 @@ -2031,9 +1563,7 @@ else local.get $0 local.get $1 - i32.const 1879048192 - i32.const -1 - i32.xor + i32.const -1879048193 i32.and i32.const 536870912 i32.or @@ -2046,12 +1576,11 @@ end end ) - (func $~lib/rt/purerc/collectWhite (; 30 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $~lib/rt/purerc/collectWhite (; 29 ;) (type $FUNCSIG$vi) (param $0 i32) (local $1 i32) local.get $0 i32.load offset=4 - local.set $1 - local.get $1 + local.tee $1 i32.const 1879048192 i32.and i32.const 536870912 @@ -2075,11 +1604,9 @@ local.get $0 call $~lib/rt/tlsf/freeBlock ) - (func $~lib/rt/purerc/__visit (; 31 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) + (func $~lib/rt/purerc/__visit (; 30 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) local.get $0 - global.get $~lib/builtins/HEAP_BASE + i32.const 424 i32.lt_u if return @@ -2087,205 +1614,132 @@ local.get $0 i32.const 16 i32.sub - local.set $2 + local.set $0 block $break|0 block $case5|0 block $case4|0 block $case3|0 block $case2|0 block $case1|0 - block $case0|0 + local.get $1 + i32.const 1 + i32.ne + if local.get $1 - local.set $3 - local.get $3 - i32.const 1 - i32.eq - br_if $case0|0 - local.get $3 i32.const 2 i32.eq br_if $case1|0 - local.get $3 - i32.const 3 - i32.eq - br_if $case2|0 - local.get $3 - i32.const 4 - i32.eq - br_if $case3|0 - local.get $3 - i32.const 5 - i32.eq - br_if $case4|0 + block $tablify|0 + local.get $1 + i32.const 3 + i32.sub + br_table $case2|0 $case3|0 $case4|0 $tablify|0 + end br $case5|0 end - block - local.get $2 - call $~lib/rt/purerc/decrement - br $break|0 - unreachable - end - unreachable - end - block - local.get $2 - i32.load offset=4 - i32.const 268435455 - i32.and - i32.const 0 - i32.gt_u - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 74 - i32.const 17 - call $~lib/builtins/abort - unreachable - end - local.get $2 - local.get $2 - i32.load offset=4 - i32.const 1 - i32.sub - i32.store offset=4 - local.get $2 - call $~lib/rt/purerc/markGray + local.get $0 + call $~lib/rt/purerc/decrement br $break|0 + end + local.get $0 + i32.load offset=4 + i32.const 268435455 + i32.and + i32.const 0 + i32.le_u + if + i32.const 0 + i32.const 24 + i32.const 74 + i32.const 17 + call $~lib/builtins/abort unreachable end - unreachable - end - block - local.get $2 - call $~lib/rt/purerc/scan + local.get $0 + local.get $0 + i32.load offset=4 + i32.const 1 + i32.sub + i32.store offset=4 + local.get $0 + call $~lib/rt/purerc/markGray br $break|0 - unreachable - end - unreachable - end - block - local.get $2 - i32.load offset=4 - local.set $3 - local.get $3 - i32.const 268435455 - i32.const -1 - i32.xor - i32.and - local.get $3 - i32.const 1 - i32.add - i32.const 268435455 - i32.const -1 - i32.xor - i32.and - i32.eq - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 85 - i32.const 6 - call $~lib/builtins/abort - unreachable - end - local.get $2 - local.get $3 - i32.const 1 - i32.add - i32.store offset=4 - local.get $3 - i32.const 1879048192 - i32.and - i32.const 0 - i32.ne - if - local.get $2 - call $~lib/rt/purerc/scanBlack end + local.get $0 + call $~lib/rt/purerc/scan br $break|0 + end + local.get $0 + i32.load offset=4 + local.tee $1 + i32.const -268435456 + i32.and + local.get $1 + i32.const 1 + i32.add + i32.const -268435456 + i32.and + i32.ne + if + i32.const 0 + i32.const 24 + i32.const 85 + i32.const 6 + call $~lib/builtins/abort unreachable end - unreachable - end - block - local.get $2 - call $~lib/rt/purerc/collectWhite + local.get $0 + local.get $1 + i32.const 1 + i32.add + i32.store offset=4 + local.get $1 + i32.const 1879048192 + i32.and + if + local.get $0 + call $~lib/rt/purerc/scanBlack + end br $break|0 - unreachable end - unreachable + local.get $0 + call $~lib/rt/purerc/collectWhite + br $break|0 end i32.const 0 - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 96 - i32.const 24 - call $~lib/builtins/abort - unreachable - end - end - ) - (func $~lib/builtins/__visit_members (; 32 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) - (local $2 i32) - block - end - block $switch$1$leave - block $switch$1$case$16 - block $switch$1$case$3 - block $switch$1$default - local.get $0 - i32.const 8 - i32.sub - i32.load - br_table $switch$1$default $switch$1$case$3 $switch$1$case$3 $switch$1$case$3 $switch$1$case$3 $switch$1$case$3 $switch$1$case$3 $switch$1$case$3 $switch$1$case$3 $switch$1$case$3 $switch$1$case$3 $switch$1$case$3 $switch$1$case$3 $switch$1$case$3 $switch$1$case$16 $switch$1$case$3 $switch$1$case$3 $switch$1$case$3 $switch$1$default - end - block - block - unreachable - unreachable - end - unreachable - unreachable - end - unreachable - end - block - block - return - unreachable - end - unreachable - unreachable - end - unreachable - end - block - block - block - local.get $0 - i32.load - local.tee $2 - if - local.get $2 - local.get $1 - call $~lib/rt/purerc/__visit - end - return - unreachable - end - unreachable - unreachable - end - unreachable - unreachable - end + i32.const 24 + i32.const 96 + i32.const 24 + call $~lib/builtins/abort unreachable end ) - (func $null (; 33 ;) (type $FUNCSIG$v) + (func $~lib/builtins/__visit_members (; 31 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + block $switch$1$case$16 + block $switch$1$case$3 + block $switch$1$default + local.get $0 + i32.const 8 + i32.sub + i32.load + i32.const 1 + i32.sub + br_table $switch$1$case$3 $switch$1$case$3 $switch$1$case$3 $switch$1$case$3 $switch$1$case$3 $switch$1$case$3 $switch$1$case$3 $switch$1$case$3 $switch$1$case$3 $switch$1$case$3 $switch$1$case$3 $switch$1$case$3 $switch$1$case$3 $switch$1$case$16 $switch$1$case$3 $switch$1$case$3 $switch$1$case$3 $switch$1$default + end + unreachable + end + return + end + local.get $0 + i32.load + local.tee $0 + if + local.get $0 + local.get $1 + call $~lib/rt/purerc/__visit + end + ) + (func $null (; 32 ;) (type $FUNCSIG$v) + nop ) ) diff --git a/tests/compiler/rc/logical-and-mismatch.untouched.wat b/tests/compiler/rc/logical-and-mismatch.untouched.wat index a64a115c..32b27886 100644 --- a/tests/compiler/rc/logical-and-mismatch.untouched.wat +++ b/tests/compiler/rc/logical-and-mismatch.untouched.wat @@ -1835,7 +1835,6 @@ ) (func $start:rc/logical-and-mismatch (; 23 ;) (type $FUNCSIG$v) (local $0 i32) - (local $1 i32) i32.const 0 call $rc/logical-and-mismatch/Ref#constructor global.set $rc/logical-and-mismatch/gloRef @@ -1843,12 +1842,10 @@ call $rc/logical-and-mismatch/getRef local.tee $0 if (result i32) - global.get $rc/logical-and-mismatch/gloRef - call $~lib/rt/purerc/__retain - local.set $1 local.get $0 call $~lib/rt/purerc/__release - local.get $1 + global.get $rc/logical-and-mismatch/gloRef + call $~lib/rt/purerc/__retain else local.get $0 end @@ -1873,11 +1870,9 @@ call $rc/logical-and-mismatch/getRef local.tee $0 if (result i32) - call $rc/logical-and-mismatch/getRef - local.set $1 local.get $0 call $~lib/rt/purerc/__release - local.get $1 + call $rc/logical-and-mismatch/getRef else local.get $0 end diff --git a/tests/compiler/rc/logical-or-mismatch.optimized.wat b/tests/compiler/rc/logical-or-mismatch.optimized.wat index 785c5a2a..8ecc6704 100644 --- a/tests/compiler/rc/logical-or-mismatch.optimized.wat +++ b/tests/compiler/rc/logical-or-mismatch.optimized.wat @@ -1835,7 +1835,6 @@ ) (func $start:rc/logical-or-mismatch (; 23 ;) (type $FUNCSIG$v) (local $0 i32) - (local $1 i32) i32.const 0 call $rc/logical-or-mismatch/Ref#constructor global.set $rc/logical-or-mismatch/gloRef @@ -1845,12 +1844,10 @@ if (result i32) local.get $0 else - global.get $rc/logical-or-mismatch/gloRef - call $~lib/rt/purerc/__retain - local.set $1 local.get $0 call $~lib/rt/purerc/__release - local.get $1 + global.get $rc/logical-or-mismatch/gloRef + call $~lib/rt/purerc/__retain end local.set $0 local.get $0 @@ -1875,11 +1872,9 @@ if (result i32) local.get $0 else - call $rc/logical-or-mismatch/getRef - local.set $1 local.get $0 call $~lib/rt/purerc/__release - local.get $1 + call $rc/logical-or-mismatch/getRef end local.set $0 local.get $0 diff --git a/tests/compiler/rc/logical-or-mismatch.untouched.wat b/tests/compiler/rc/logical-or-mismatch.untouched.wat index 785c5a2a..8ecc6704 100644 --- a/tests/compiler/rc/logical-or-mismatch.untouched.wat +++ b/tests/compiler/rc/logical-or-mismatch.untouched.wat @@ -1835,7 +1835,6 @@ ) (func $start:rc/logical-or-mismatch (; 23 ;) (type $FUNCSIG$v) (local $0 i32) - (local $1 i32) i32.const 0 call $rc/logical-or-mismatch/Ref#constructor global.set $rc/logical-or-mismatch/gloRef @@ -1845,12 +1844,10 @@ if (result i32) local.get $0 else - global.get $rc/logical-or-mismatch/gloRef - call $~lib/rt/purerc/__retain - local.set $1 local.get $0 call $~lib/rt/purerc/__release - local.get $1 + global.get $rc/logical-or-mismatch/gloRef + call $~lib/rt/purerc/__retain end local.set $0 local.get $0 @@ -1875,11 +1872,9 @@ if (result i32) local.get $0 else - call $rc/logical-or-mismatch/getRef - local.set $1 local.get $0 call $~lib/rt/purerc/__release - local.get $1 + call $rc/logical-or-mismatch/getRef end local.set $0 local.get $0 diff --git a/tests/compiler/std/array-access.optimized.wat b/tests/compiler/std/array-access.optimized.wat index e70fc97c..abc6c05e 100644 --- a/tests/compiler/std/array-access.optimized.wat +++ b/tests/compiler/std/array-access.optimized.wat @@ -2,32 +2,45 @@ (type $FUNCSIG$ii (func (param i32) (result i32))) (type $FUNCSIG$iii (func (param i32 i32) (result i32))) (type $FUNCSIG$viiii (func (param i32 i32 i32 i32))) - (type $FUNCSIG$v (func)) (type $FUNCSIG$iiii (func (param i32 i32 i32) (result i32))) + (type $FUNCSIG$iiiiii (func (param i32 i32 i32 i32 i32) (result i32))) + (type $FUNCSIG$vi (func (param i32))) + (type $FUNCSIG$v (func)) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (memory $0 1) - (data (i32.const 8) "\10\00\00\00\1a") - (data (i32.const 24) "~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00.\00t\00s") - (data (i32.const 56) "\10") - (data (i32.const 72) "\10\00\00\00\1c") - (data (i32.const 88) "~\00l\00i\00b\00/\00s\00t\00r\00i\00n\00g\00.\00t\00s") - (data (i32.const 120) "\10\00\00\00\08") - (data (i32.const 136) "n\00u\00l\00l") + (data (i32.const 8) "^\00\00\00\01\00\00\00\10\00\00\00^\00\00\00E\00l\00e\00m\00e\00n\00t\00 \00t\00y\00p\00e\00 \00m\00u\00s\00t\00 \00b\00e\00 \00n\00u\00l\00l\00a\00b\00l\00e\00 \00i\00f\00 \00a\00r\00r\00a\00y\00 \00i\00s\00 \00h\00o\00l\00e\00y\00") + (data (i32.const 120) "\1a\00\00\00\01\00\00\00\10\00\00\00\1a\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00.\00t\00s\00") + (data (i32.const 168) "$\00\00\00\01\00\00\00\10\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 224) "\00\00\00\00\01\00\00\00\10\00\00\00\00\00\00\00") + (data (i32.const 240) "\1c\00\00\00\01\00\00\00\10\00\00\00\1c\00\00\00~\00l\00i\00b\00/\00s\00t\00r\00i\00n\00g\00.\00t\00s\00") + (data (i32.const 288) "\08\00\00\00\01\00\00\00\10\00\00\00\08\00\00\00n\00u\00l\00l\00") + (table $0 1 funcref) + (elem (i32.const 0) $null) (export "memory" (memory $0)) (export "i32ArrayArrayElementAccess" (func $std/array-access/i32ArrayArrayElementAccess)) (export "stringArrayPropertyAccess" (func $std/array-access/stringArrayPropertyAccess)) (export "stringArrayMethodCall" (func $std/array-access/stringArrayMethodCall)) (export "stringArrayArrayPropertyAccess" (func $std/array-access/stringArrayArrayPropertyAccess)) (export "stringArrayArrayMethodCall" (func $std/array-access/stringArrayArrayMethodCall)) - (func $~lib/array/Array<~lib/array/Array>#__get (; 1 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array<~lib/array/Array>#__unchecked_get (; 1 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 2 + i32.shl + i32.add + i32.load + call $~lib/rt/stub/__retain + ) + (func $~lib/array/Array<~lib/array/Array>#__get (; 2 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $1 local.get $0 i32.load offset=12 i32.ge_u if - i32.const 0 i32.const 24 - i32.const 96 + i32.const 136 + i32.const 97 i32.const 45 call $~lib/builtins/abort unreachable @@ -39,13 +52,18 @@ i32.shr_u i32.ge_u if - i32.const 0 - i32.const 24 - i32.const 99 + i32.const 184 + i32.const 136 + i32.const 100 i32.const 61 call $~lib/builtins/abort unreachable end + local.get $0 + local.get $1 + call $~lib/array/Array<~lib/array/Array>#__unchecked_get + ) + (func $~lib/array/Array#__unchecked_get (; 3 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $0 i32.load offset=4 local.get $1 @@ -54,158 +72,375 @@ i32.add i32.load ) - (func $~lib/array/Array#__get (; 2 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - i32.const 1 + (func $~lib/array/Array#__get (; 4 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + local.get $1 local.get $0 i32.load offset=8 i32.const 2 i32.shr_u i32.ge_u if - i32.const 0 - i32.const 24 - i32.const 99 + i32.const 184 + i32.const 136 + i32.const 100 i32.const 61 call $~lib/builtins/abort unreachable end + local.get $0 + local.get $1 + call $~lib/array/Array#__unchecked_get + ) + (func $std/array-access/i32ArrayArrayElementAccess (; 5 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + local.get $0 + call $~lib/rt/stub/__retain + drop + local.get $0 + i32.const 0 + call $~lib/array/Array<~lib/array/Array>#__get + local.tee $1 + i32.const 1 + call $~lib/array/Array#__get + local.set $2 + local.get $1 + call $~lib/rt/stub/__release + local.get $0 + call $~lib/rt/stub/__release + local.get $2 + ) + (func $~lib/array/Array<~lib/string/String>#__unchecked_get (; 6 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $0 i32.load offset=4 - i32.const 4 + local.get $1 + i32.const 2 + i32.shl i32.add i32.load + call $~lib/rt/stub/__retain ) - (func $std/array-access/i32ArrayArrayElementAccess (; 3 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/array/Array<~lib/string/String>#__get (; 7 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + local.get $1 local.get $0 - i32.const 0 - call $~lib/array/Array<~lib/array/Array>#__get - call $~lib/array/Array#__get + i32.load offset=12 + i32.ge_u + if + i32.const 24 + i32.const 136 + i32.const 97 + i32.const 45 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.get $0 + i32.load offset=8 + i32.const 2 + i32.shr_u + i32.ge_u + if + i32.const 184 + i32.const 136 + i32.const 100 + i32.const 61 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + call $~lib/array/Array<~lib/string/String>#__unchecked_get ) - (func $std/array-access/stringArrayPropertyAccess (; 4 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/string/String#get:length (; 8 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 - i32.const 0 - call $~lib/array/Array<~lib/array/Array>#__get i32.const 16 i32.sub - i32.load offset=4 + i32.load offset=12 i32.const 1 i32.shr_u ) - (func $~lib/util/string/compareImpl (; 5 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) + (func $std/array-access/stringArrayPropertyAccess (; 9 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + local.get $0 + call $~lib/rt/stub/__retain + drop + local.get $0 + i32.const 0 + call $~lib/array/Array<~lib/string/String>#__get + local.tee $1 + call $~lib/string/String#get:length + local.set $2 + local.get $1 + call $~lib/rt/stub/__release + local.get $0 + call $~lib/rt/stub/__release + local.get $2 + ) + (func $~lib/util/string/compareImpl (; 10 ;) (type $FUNCSIG$iiiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (result i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + local.get $0 + call $~lib/rt/stub/__retain + drop + local.get $2 + call $~lib/rt/stub/__retain + drop + i32.const 0 + local.set $5 + local.get $0 local.get $1 i32.const 1 i32.shl - local.get $0 i32.add - local.set $0 - i32.const 72 - local.set $1 - loop $continue|0 - local.get $2 - if (result i32) - local.get $0 - i32.load16_u - local.get $1 - i32.load16_u - i32.sub - local.tee $3 - i32.eqz - else - i32.const 0 - end - if - local.get $2 - i32.const 1 - i32.sub - local.set $2 - local.get $0 - i32.const 2 - i32.add - local.set $0 - local.get $1 - i32.const 2 - i32.add - local.set $1 - br $continue|0 + local.set $6 + local.get $2 + local.get $3 + i32.const 1 + i32.shl + i32.add + local.set $7 + block $break|0 + loop $continue|0 + local.get $4 + if (result i32) + local.get $6 + i32.load16_u + local.get $7 + i32.load16_u + i32.sub + local.tee $5 + i32.eqz + else + i32.const 0 + end + if + local.get $4 + i32.const 1 + i32.sub + local.set $4 + local.get $6 + i32.const 2 + i32.add + local.set $6 + local.get $7 + i32.const 2 + i32.add + local.set $7 + br $continue|0 + end end end - local.get $3 - ) - (func $~lib/string/String#startsWith (; 6 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) + local.get $5 + local.set $8 local.get $0 + call $~lib/rt/stub/__release + local.get $2 + call $~lib/rt/stub/__release + local.get $8 + ) + (func $~lib/string/String#startsWith (; 11 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + local.get $1 + call $~lib/rt/stub/__retain + drop + local.get $0 + i32.const 0 + i32.ne i32.eqz if i32.const 0 - i32.const 88 - i32.const 178 + i32.const 256 + i32.const 171 i32.const 4 call $~lib/builtins/abort unreachable end - i32.const 60 - i32.load - i32.const 1 - i32.shr_u - local.tee $1 - local.set $2 local.get $1 i32.const 0 + i32.eq + if + i32.const 304 + local.get $1 + call $~lib/rt/stub/__retainRelease + local.set $1 + end + local.get $2 + local.set $3 local.get $0 - i32.const 16 - i32.sub - i32.load offset=4 - i32.const 1 - i32.shr_u - local.tee $1 + call $~lib/string/String#get:length + local.set $4 + local.get $3 + local.tee $5 i32.const 0 - local.get $1 + local.tee $6 + local.get $5 + local.get $6 + i32.gt_s + select + local.tee $5 + local.get $4 + local.tee $6 + local.get $5 + local.get $6 i32.lt_s select - local.tee $3 - i32.add + local.set $7 local.get $1 + call $~lib/string/String#get:length + local.set $8 + local.get $8 + local.get $7 + i32.add + local.get $4 i32.gt_s if i32.const 0 + local.set $5 + local.get $1 + call $~lib/rt/stub/__release + local.get $5 return end local.get $0 - local.get $3 - local.get $2 + local.get $7 + local.get $1 + i32.const 0 + local.get $8 call $~lib/util/string/compareImpl i32.eqz + local.set $5 + local.get $1 + call $~lib/rt/stub/__release + local.get $5 ) - (func $std/array-access/stringArrayMethodCall (; 7 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $std/array-access/stringArrayMethodCall (; 12 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + local.get $0 + call $~lib/rt/stub/__retain + drop local.get $0 i32.const 0 - call $~lib/array/Array<~lib/array/Array>#__get + call $~lib/array/Array<~lib/string/String>#__get + local.tee $1 + i32.const 240 + i32.const 0 call $~lib/string/String#startsWith - ) - (func $std/array-access/stringArrayArrayPropertyAccess (; 8 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + local.set $2 + local.get $1 + call $~lib/rt/stub/__release + local.get $0 + call $~lib/rt/stub/__release + local.get $2 + ) + (func $~lib/array/Array<~lib/array/Array<~lib/string/String>>#__unchecked_get (; 13 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $0 - i32.const 0 - call $~lib/array/Array<~lib/array/Array>#__get - i32.const 1 - call $~lib/array/Array<~lib/array/Array>#__get - i32.const 16 - i32.sub i32.load offset=4 - i32.const 1 - i32.shr_u + local.get $1 + i32.const 2 + i32.shl + i32.add + i32.load + call $~lib/rt/stub/__retain ) - (func $std/array-access/stringArrayArrayMethodCall (; 9 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/array/Array<~lib/array/Array<~lib/string/String>>#__get (; 14 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + local.get $1 + local.get $0 + i32.load offset=12 + i32.ge_u + if + i32.const 24 + i32.const 136 + i32.const 97 + i32.const 45 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.get $0 + i32.load offset=8 + i32.const 2 + i32.shr_u + i32.ge_u + if + i32.const 184 + i32.const 136 + i32.const 100 + i32.const 61 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + call $~lib/array/Array<~lib/array/Array<~lib/string/String>>#__unchecked_get + ) + (func $std/array-access/stringArrayArrayPropertyAccess (; 15 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + local.get $0 + call $~lib/rt/stub/__retain + drop local.get $0 i32.const 0 - call $~lib/array/Array<~lib/array/Array>#__get + call $~lib/array/Array<~lib/array/Array<~lib/string/String>>#__get + local.tee $1 i32.const 1 - call $~lib/array/Array<~lib/array/Array>#__get - call $~lib/string/String#startsWith + call $~lib/array/Array<~lib/string/String>#__get + local.tee $2 + call $~lib/string/String#get:length + local.set $3 + local.get $1 + call $~lib/rt/stub/__release + local.get $2 + call $~lib/rt/stub/__release + local.get $0 + call $~lib/rt/stub/__release + local.get $3 ) - (func $null (; 10 ;) (type $FUNCSIG$v) + (func $std/array-access/stringArrayArrayMethodCall (; 16 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + local.get $0 + call $~lib/rt/stub/__retain + drop + local.get $0 + i32.const 0 + call $~lib/array/Array<~lib/array/Array<~lib/string/String>>#__get + local.tee $1 + i32.const 1 + call $~lib/array/Array<~lib/string/String>#__get + local.tee $2 + i32.const 240 + i32.const 0 + call $~lib/string/String#startsWith + local.set $3 + local.get $1 + call $~lib/rt/stub/__release + local.get $2 + call $~lib/rt/stub/__release + local.get $0 + call $~lib/rt/stub/__release + local.get $3 + ) + (func $~lib/rt/stub/__retain (; 17 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + local.get $0 + ) + (func $~lib/rt/stub/__retainRelease (; 18 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + local.get $0 + ) + (func $~lib/rt/stub/__release (; 19 ;) (type $FUNCSIG$vi) (param $0 i32) nop ) + (func $null (; 20 ;) (type $FUNCSIG$v) + ) ) diff --git a/tests/compiler/std/array-access.untouched.wat b/tests/compiler/std/array-access.untouched.wat index 518cfbf2..abc6c05e 100644 --- a/tests/compiler/std/array-access.untouched.wat +++ b/tests/compiler/std/array-access.untouched.wat @@ -4,16 +4,18 @@ (type $FUNCSIG$viiii (func (param i32 i32 i32 i32))) (type $FUNCSIG$iiii (func (param i32 i32 i32) (result i32))) (type $FUNCSIG$iiiiii (func (param i32 i32 i32 i32 i32) (result i32))) + (type $FUNCSIG$vi (func (param i32))) (type $FUNCSIG$v (func)) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (memory $0 1) - (data (i32.const 8) "\10\00\00\00\1a\00\00\00\00\00\00\00\00\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00.\00t\00s\00") - (data (i32.const 56) "\10\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 72) "\10\00\00\00\1c\00\00\00\00\00\00\00\00\00\00\00~\00l\00i\00b\00/\00s\00t\00r\00i\00n\00g\00.\00t\00s\00") - (data (i32.const 120) "\10\00\00\00\08\00\00\00\00\00\00\00\00\00\00\00n\00u\00l\00l\00") + (data (i32.const 8) "^\00\00\00\01\00\00\00\10\00\00\00^\00\00\00E\00l\00e\00m\00e\00n\00t\00 \00t\00y\00p\00e\00 \00m\00u\00s\00t\00 \00b\00e\00 \00n\00u\00l\00l\00a\00b\00l\00e\00 \00i\00f\00 \00a\00r\00r\00a\00y\00 \00i\00s\00 \00h\00o\00l\00e\00y\00") + (data (i32.const 120) "\1a\00\00\00\01\00\00\00\10\00\00\00\1a\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00.\00t\00s\00") + (data (i32.const 168) "$\00\00\00\01\00\00\00\10\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 224) "\00\00\00\00\01\00\00\00\10\00\00\00\00\00\00\00") + (data (i32.const 240) "\1c\00\00\00\01\00\00\00\10\00\00\00\1c\00\00\00~\00l\00i\00b\00/\00s\00t\00r\00i\00n\00g\00.\00t\00s\00") + (data (i32.const 288) "\08\00\00\00\01\00\00\00\10\00\00\00\08\00\00\00n\00u\00l\00l\00") (table $0 1 funcref) (elem (i32.const 0) $null) - (global $~lib/util/runtime/HEADER_SIZE i32 (i32.const 16)) (export "memory" (memory $0)) (export "i32ArrayArrayElementAccess" (func $std/array-access/i32ArrayArrayElementAccess)) (export "stringArrayPropertyAccess" (func $std/array-access/stringArrayPropertyAccess)) @@ -28,6 +30,7 @@ i32.shl i32.add i32.load + call $~lib/rt/stub/__retain ) (func $~lib/array/Array<~lib/array/Array>#__get (; 2 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $1 @@ -35,9 +38,9 @@ i32.load offset=12 i32.ge_u if - i32.const 0 i32.const 24 - i32.const 96 + i32.const 136 + i32.const 97 i32.const 45 call $~lib/builtins/abort unreachable @@ -49,9 +52,9 @@ i32.shr_u i32.ge_u if - i32.const 0 - i32.const 24 - i32.const 99 + i32.const 184 + i32.const 136 + i32.const 100 i32.const 61 call $~lib/builtins/abort unreachable @@ -77,9 +80,9 @@ i32.shr_u i32.ge_u if - i32.const 0 - i32.const 24 - i32.const 99 + i32.const 184 + i32.const 136 + i32.const 100 i32.const 61 call $~lib/builtins/abort unreachable @@ -89,11 +92,23 @@ call $~lib/array/Array#__unchecked_get ) (func $std/array-access/i32ArrayArrayElementAccess (; 5 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + local.get $0 + call $~lib/rt/stub/__retain + drop local.get $0 i32.const 0 call $~lib/array/Array<~lib/array/Array>#__get + local.tee $1 i32.const 1 call $~lib/array/Array#__get + local.set $2 + local.get $1 + call $~lib/rt/stub/__release + local.get $0 + call $~lib/rt/stub/__release + local.get $2 ) (func $~lib/array/Array<~lib/string/String>#__unchecked_get (; 6 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $0 @@ -103,6 +118,7 @@ i32.shl i32.add i32.load + call $~lib/rt/stub/__retain ) (func $~lib/array/Array<~lib/string/String>#__get (; 7 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $1 @@ -110,9 +126,9 @@ i32.load offset=12 i32.ge_u if - i32.const 0 i32.const 24 - i32.const 96 + i32.const 136 + i32.const 97 i32.const 45 call $~lib/builtins/abort unreachable @@ -124,9 +140,9 @@ i32.shr_u i32.ge_u if - i32.const 0 - i32.const 24 - i32.const 99 + i32.const 184 + i32.const 136 + i32.const 100 i32.const 61 call $~lib/builtins/abort unreachable @@ -137,22 +153,41 @@ ) (func $~lib/string/String#get:length (; 8 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 - global.get $~lib/util/runtime/HEADER_SIZE + i32.const 16 i32.sub - i32.load offset=4 + i32.load offset=12 i32.const 1 i32.shr_u ) (func $std/array-access/stringArrayPropertyAccess (; 9 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + local.get $0 + call $~lib/rt/stub/__retain + drop local.get $0 i32.const 0 call $~lib/array/Array<~lib/string/String>#__get + local.tee $1 call $~lib/string/String#get:length + local.set $2 + local.get $1 + call $~lib/rt/stub/__release + local.get $0 + call $~lib/rt/stub/__release + local.get $2 ) (func $~lib/util/string/compareImpl (; 10 ;) (type $FUNCSIG$iiiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (result i32) (local $5 i32) (local $6 i32) (local $7 i32) + (local $8 i32) + local.get $0 + call $~lib/rt/stub/__retain + drop + local.get $2 + call $~lib/rt/stub/__retain + drop i32.const 0 local.set $5 local.get $0 @@ -182,25 +217,29 @@ i32.const 0 end if - block - local.get $4 - i32.const 1 - i32.sub - local.set $4 - local.get $6 - i32.const 2 - i32.add - local.set $6 - local.get $7 - i32.const 2 - i32.add - local.set $7 - end + local.get $4 + i32.const 1 + i32.sub + local.set $4 + local.get $6 + i32.const 2 + i32.add + local.set $6 + local.get $7 + i32.const 2 + i32.add + local.set $7 br $continue|0 end end end local.get $5 + local.set $8 + local.get $0 + call $~lib/rt/stub/__release + local.get $2 + call $~lib/rt/stub/__release + local.get $8 ) (func $~lib/string/String#startsWith (; 11 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) @@ -209,14 +248,17 @@ (local $6 i32) (local $7 i32) (local $8 i32) + local.get $1 + call $~lib/rt/stub/__retain + drop local.get $0 i32.const 0 i32.ne i32.eqz if i32.const 0 - i32.const 88 - i32.const 178 + i32.const 256 + i32.const 171 i32.const 4 call $~lib/builtins/abort unreachable @@ -225,7 +267,9 @@ i32.const 0 i32.eq if - i32.const 136 + i32.const 304 + local.get $1 + call $~lib/rt/stub/__retainRelease local.set $1 end local.get $2 @@ -259,6 +303,10 @@ i32.gt_s if i32.const 0 + local.set $5 + local.get $1 + call $~lib/rt/stub/__release + local.get $5 return end local.get $0 @@ -268,14 +316,30 @@ local.get $8 call $~lib/util/string/compareImpl i32.eqz + local.set $5 + local.get $1 + call $~lib/rt/stub/__release + local.get $5 ) (func $std/array-access/stringArrayMethodCall (; 12 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + local.get $0 + call $~lib/rt/stub/__retain + drop local.get $0 i32.const 0 call $~lib/array/Array<~lib/string/String>#__get - i32.const 72 + local.tee $1 + i32.const 240 i32.const 0 call $~lib/string/String#startsWith + local.set $2 + local.get $1 + call $~lib/rt/stub/__release + local.get $0 + call $~lib/rt/stub/__release + local.get $2 ) (func $~lib/array/Array<~lib/array/Array<~lib/string/String>>#__unchecked_get (; 13 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $0 @@ -285,6 +349,7 @@ i32.shl i32.add i32.load + call $~lib/rt/stub/__retain ) (func $~lib/array/Array<~lib/array/Array<~lib/string/String>>#__get (; 14 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $1 @@ -292,9 +357,9 @@ i32.load offset=12 i32.ge_u if - i32.const 0 i32.const 24 - i32.const 96 + i32.const 136 + i32.const 97 i32.const 45 call $~lib/builtins/abort unreachable @@ -306,9 +371,9 @@ i32.shr_u i32.ge_u if - i32.const 0 - i32.const 24 - i32.const 99 + i32.const 184 + i32.const 136 + i32.const 100 i32.const 61 call $~lib/builtins/abort unreachable @@ -318,23 +383,64 @@ call $~lib/array/Array<~lib/array/Array<~lib/string/String>>#__unchecked_get ) (func $std/array-access/stringArrayArrayPropertyAccess (; 15 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + local.get $0 + call $~lib/rt/stub/__retain + drop local.get $0 i32.const 0 call $~lib/array/Array<~lib/array/Array<~lib/string/String>>#__get + local.tee $1 i32.const 1 call $~lib/array/Array<~lib/string/String>#__get + local.tee $2 call $~lib/string/String#get:length + local.set $3 + local.get $1 + call $~lib/rt/stub/__release + local.get $2 + call $~lib/rt/stub/__release + local.get $0 + call $~lib/rt/stub/__release + local.get $3 ) (func $std/array-access/stringArrayArrayMethodCall (; 16 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + local.get $0 + call $~lib/rt/stub/__retain + drop local.get $0 i32.const 0 call $~lib/array/Array<~lib/array/Array<~lib/string/String>>#__get + local.tee $1 i32.const 1 call $~lib/array/Array<~lib/string/String>#__get - i32.const 72 + local.tee $2 + i32.const 240 i32.const 0 call $~lib/string/String#startsWith + local.set $3 + local.get $1 + call $~lib/rt/stub/__release + local.get $2 + call $~lib/rt/stub/__release + local.get $0 + call $~lib/rt/stub/__release + local.get $3 ) - (func $null (; 17 ;) (type $FUNCSIG$v) + (func $~lib/rt/stub/__retain (; 17 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + local.get $0 + ) + (func $~lib/rt/stub/__retainRelease (; 18 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + local.get $0 + ) + (func $~lib/rt/stub/__release (; 19 ;) (type $FUNCSIG$vi) (param $0 i32) + nop + ) + (func $null (; 20 ;) (type $FUNCSIG$v) ) ) diff --git a/tests/compiler/std/array-literal.json b/tests/compiler/std/array-literal.json index b1da366f..9f7878d4 100644 --- a/tests/compiler/std/array-literal.json +++ b/tests/compiler/std/array-literal.json @@ -1,5 +1,6 @@ { "asc_flags": [ - "--runtime none" + "--runtime half", + "--use ASC_RTRACE=1" ] } \ No newline at end of file diff --git a/tests/compiler/std/array-literal.optimized.wat b/tests/compiler/std/array-literal.optimized.wat index 81fc76cd..99a79046 100644 --- a/tests/compiler/std/array-literal.optimized.wat +++ b/tests/compiler/std/array-literal.optimized.wat @@ -2,58 +2,51 @@ (type $FUNCSIG$ii (func (param i32) (result i32))) (type $FUNCSIG$viiii (func (param i32 i32 i32 i32))) (type $FUNCSIG$iii (func (param i32 i32) (result i32))) - (type $FUNCSIG$vi (func (param i32))) (type $FUNCSIG$v (func)) + (type $FUNCSIG$vii (func (param i32 i32))) + (type $FUNCSIG$viii (func (param i32 i32 i32))) + (type $FUNCSIG$vi (func (param i32))) (type $FUNCSIG$i (func (result i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (import "rtrace" "retain" (func $~lib/rt/purerc/onIncrement (param i32))) + (import "rtrace" "release" (func $~lib/rt/purerc/onDecrement (param i32))) + (import "rtrace" "free" (func $~lib/rt/tlsf/onFree (param i32))) (memory $0 1) - (data (i32.const 8) "\0f\00\00\00\03") - (data (i32.const 25) "\01\02") - (data (i32.const 32) "\11\00\00\00\10") - (data (i32.const 48) "\18\00\00\00\18\00\00\00\03\00\00\00\03") - (data (i32.const 64) "\10\00\00\00(") - (data (i32.const 80) "s\00t\00d\00/\00a\00r\00r\00a\00y\00-\00l\00i\00t\00e\00r\00a\00l\00.\00t\00s") - (data (i32.const 120) "\10\00\00\00\1a") - (data (i32.const 136) "~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00.\00t\00s") - (data (i32.const 168) "\0f\00\00\00\0c") - (data (i32.const 188) "\01\00\00\00\02") - (data (i32.const 200) "\12\00\00\00\10") - (data (i32.const 216) "\b8\00\00\00\b8\00\00\00\0c\00\00\00\03") - (data (i32.const 232) "\0f") - (data (i32.const 248) "\12\00\00\00\10") - (data (i32.const 264) "\f8\00\00\00\f8") - (data (i32.const 280) "\10\00\00\00(") - (data (i32.const 296) "~\00l\00i\00b\00/\00u\00t\00i\00l\00/\00r\00u\00n\00t\00i\00m\00e\00.\00t\00s") - (data (i32.const 336) "\17\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\19\00\00\00\0e\00\00\00I\00\00\00\0e\00\00\00\08\00\00\00\00\00\00\00I\04\00\00\0e\00\00\00\08\00\00\00\00\00\00\00I\04\00\00\0e\00\00\00\08") - (global $std/array-literal/emptyArrayI32 (mut i32) (i32.const 264)) + (data (i32.const 8) "\03\00\00\00\01\00\00\00\0f\00\00\00\03\00\00\00\00\01\02") + (data (i32.const 32) "\10\00\00\00\01\00\00\00\11\00\00\00\10\00\00\00\18\00\00\00\18\00\00\00\03\00\00\00\03") + (data (i32.const 64) "(\00\00\00\01\00\00\00\10\00\00\00(\00\00\00s\00t\00d\00/\00a\00r\00r\00a\00y\00-\00l\00i\00t\00e\00r\00a\00l\00.\00t\00s") + (data (i32.const 120) "$\00\00\00\01\00\00\00\10\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 176) "\1a\00\00\00\01\00\00\00\10\00\00\00\1a\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00.\00t\00s") + (data (i32.const 224) "\0c\00\00\00\01\00\00\00\0f\00\00\00\0c\00\00\00\00\00\00\00\01\00\00\00\02") + (data (i32.const 256) "\10\00\00\00\01\00\00\00\12\00\00\00\10\00\00\00\f0\00\00\00\f0\00\00\00\0c\00\00\00\03") + (data (i32.const 292) "\01\00\00\00\0f") + (data (i32.const 304) "\10\00\00\00\01\00\00\00\12\00\00\00\10\00\00\000\01\00\000\01") + (data (i32.const 336) "\1e\00\00\00\01\00\00\00\10\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s") + (data (i32.const 384) "(\00\00\00\01\00\00\00\10\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 440) "\"\00\00\00\01\00\00\00\10\00\00\00\"\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00p\00u\00r\00e\00r\00c\00.\00t\00s") + (data (i32.const 496) "\"\00\00\00\01\00\00\00\10\00\00\00\"\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00c\00o\00m\00m\00o\00n\00.\00t\00s") + (data (i32.const 552) "\16\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\19\00\00\00\0e\00\00\00I\00\00\00\0e\00\00\00\08\00\00\00\00\00\00\00I\04\00\00\0e\00\00\00\08\00\00\00\00\00\00\00I\04\00\00\0e") + (global $std/array-literal/emptyArrayI32 i32 (i32.const 320)) (global $std/array-literal/i (mut i32) (i32.const 0)) - (global $~lib/allocator/arena/startOffset (mut i32) (i32.const 0)) - (global $~lib/allocator/arena/offset (mut i32) (i32.const 0)) + (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) (global $std/array-literal/dynamicArrayI8 (mut i32) (i32.const 0)) (global $std/array-literal/dynamicArrayI32 (mut i32) (i32.const 0)) (global $std/array-literal/dynamicArrayRef (mut i32) (i32.const 0)) (global $std/array-literal/dynamicArrayRefWithCtor (mut i32) (i32.const 0)) - (global $~lib/runtime/ROOT (mut i32) (i32.const 0)) + (global $~lib/rt/purerc/CUR (mut i32) (i32.const 0)) + (global $~lib/rt/purerc/END (mut i32) (i32.const 0)) + (global $~lib/rt/purerc/ROOTS (mut i32) (i32.const 0)) (export "memory" (memory $0)) - (export "$.instanceof" (func $~lib/runtime/runtime.instanceof)) - (export "$.flags" (func $~lib/runtime/runtime.flags)) - (export "$.newObject" (func $~lib/runtime/runtime.newObject)) - (export "$.newString" (func $~lib/runtime/runtime.newString)) - (export "$.newArrayBuffer" (func $~lib/runtime/runtime.newArrayBuffer)) - (export "$.newArray" (func $~lib/runtime/runtime.newArray)) - (export "$.retain" (func $~lib/runtime/runtime.retain)) - (export "$.release" (func $~lib/runtime/runtime.retain)) - (export "$.collect" (func $~lib/runtime/runtime.collect)) (start $start) - (func $~lib/array/Array#__get (; 1 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array#__get (; 4 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $1 local.get $0 i32.load offset=8 i32.ge_u if - i32.const 0 i32.const 136 - i32.const 99 + i32.const 192 + i32.const 100 i32.const 61 call $~lib/builtins/abort unreachable @@ -64,7 +57,7 @@ i32.add i32.load8_s ) - (func $~lib/array/Array#__get (; 2 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array#__get (; 5 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $1 local.get $0 i32.load offset=8 @@ -72,9 +65,9 @@ i32.shr_u i32.ge_u if - i32.const 0 i32.const 136 - i32.const 99 + i32.const 192 + i32.const 100 i32.const 61 call $~lib/builtins/abort unreachable @@ -87,151 +80,1238 @@ i32.add i32.load ) - (func $~lib/allocator/arena/__mem_allocate (; 3 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - (local $1 i32) + (func $~lib/rt/tlsf/removeBlock (; 6 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $1 + i32.load + local.tee $3 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 352 + i32.const 275 + i32.const 13 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const -4 + i32.and + local.tee $2 + i32.const 16 + i32.ge_u + if (result i32) + local.get $2 + i32.const 1073741808 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 352 + i32.const 277 + i32.const 13 + call $~lib/builtins/abort + unreachable + end + local.get $2 + i32.const 256 + i32.lt_u + if (result i32) + local.get $2 + i32.const 4 + i32.shr_u + local.set $2 + i32.const 0 + else + local.get $2 + i32.const 31 + local.get $2 + i32.clz + i32.sub + local.tee $3 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + local.set $2 + local.get $3 + i32.const 7 + i32.sub + end + local.tee $3 + i32.const 23 + i32.lt_u + if (result i32) + local.get $2 + i32.const 16 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 352 + i32.const 290 + i32.const 13 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.load offset=20 + local.set $4 + local.get $1 + i32.load offset=16 + local.tee $5 + if + local.get $5 + local.get $4 + i32.store offset=20 + end + local.get $4 + if + local.get $4 + local.get $5 + i32.store offset=16 + end + local.get $3 + i32.const 4 + i32.shl + local.get $2 + i32.add + i32.const 2 + i32.shl local.get $0 - i32.const 1073741824 - i32.gt_u + i32.add + i32.load offset=96 + local.get $1 + i32.eq + if + local.get $3 + i32.const 4 + i32.shl + local.get $2 + i32.add + i32.const 2 + i32.shl + local.get $0 + i32.add + local.get $4 + i32.store offset=96 + local.get $4 + i32.eqz + if + local.get $3 + i32.const 2 + i32.shl + local.get $0 + i32.add + local.get $3 + i32.const 2 + i32.shl + local.get $0 + i32.add + i32.load offset=4 + i32.const 1 + local.get $2 + i32.shl + i32.const -1 + i32.xor + i32.and + local.tee $1 + i32.store offset=4 + local.get $1 + i32.eqz + if + local.get $0 + local.get $0 + i32.load + i32.const 1 + local.get $3 + i32.shl + i32.const -1 + i32.xor + i32.and + i32.store + end + end + end + ) + (func $~lib/rt/tlsf/insertBlock (; 7 ;) (type $FUNCSIG$vii) (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.get $1 + i32.eqz + if + i32.const 0 + i32.const 352 + i32.const 203 + i32.const 13 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.load + local.tee $3 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 352 + i32.const 205 + i32.const 13 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 16 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $4 + i32.load + local.tee $5 + i32.const 1 + i32.and + if + local.get $3 + i32.const -4 + i32.and + i32.const 16 + i32.add + local.get $5 + i32.const -4 + i32.and + i32.add + local.tee $2 + i32.const 1073741808 + i32.lt_u + if + local.get $0 + local.get $4 + call $~lib/rt/tlsf/removeBlock + local.get $1 + local.get $3 + i32.const 3 + i32.and + local.get $2 + i32.or + local.tee $3 + i32.store + local.get $1 + i32.const 16 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $4 + i32.load + local.set $5 + end + end + local.get $3 + i32.const 2 + i32.and + if + local.get $1 + i32.const 4 + i32.sub + i32.load + local.tee $2 + i32.load + local.tee $6 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 352 + i32.const 226 + i32.const 15 + call $~lib/builtins/abort + unreachable + end + local.get $6 + i32.const -4 + i32.and + i32.const 16 + i32.add + local.get $3 + i32.const -4 + i32.and + i32.add + local.tee $7 + i32.const 1073741808 + i32.lt_u + if (result i32) + local.get $0 + local.get $2 + call $~lib/rt/tlsf/removeBlock + local.get $2 + local.get $6 + i32.const 3 + i32.and + local.get $7 + i32.or + local.tee $3 + i32.store + local.get $2 + else + local.get $1 + end + local.set $1 + end + local.get $4 + local.get $5 + i32.const 2 + i32.or + i32.store + local.get $3 + i32.const -4 + i32.and + local.tee $2 + i32.const 16 + i32.ge_u + if (result i32) + local.get $2 + i32.const 1073741808 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 352 + i32.const 241 + i32.const 13 + call $~lib/builtins/abort + unreachable + end + local.get $4 + local.get $1 + i32.const 16 + i32.add + local.get $2 + i32.add + i32.ne + if + i32.const 0 + i32.const 352 + i32.const 242 + i32.const 13 + call $~lib/builtins/abort + unreachable + end + local.get $4 + i32.const 4 + i32.sub + local.get $1 + i32.store + local.get $2 + i32.const 256 + i32.lt_u + if (result i32) + local.get $2 + i32.const 4 + i32.shr_u + local.set $4 + i32.const 0 + else + local.get $2 + i32.const 31 + local.get $2 + i32.clz + i32.sub + local.tee $2 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + local.set $4 + local.get $2 + i32.const 7 + i32.sub + end + local.tee $3 + i32.const 23 + i32.lt_u + if (result i32) + local.get $4 + i32.const 16 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 352 + i32.const 258 + i32.const 13 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const 4 + i32.shl + local.get $4 + i32.add + i32.const 2 + i32.shl + local.get $0 + i32.add + i32.load offset=96 + local.set $2 + local.get $1 + i32.const 0 + i32.store offset=16 + local.get $1 + local.get $2 + i32.store offset=20 + local.get $2 + if + local.get $2 + local.get $1 + i32.store offset=16 + end + local.get $3 + i32.const 4 + i32.shl + local.get $4 + i32.add + i32.const 2 + i32.shl + local.get $0 + i32.add + local.get $1 + i32.store offset=96 + local.get $0 + local.get $0 + i32.load + i32.const 1 + local.get $3 + i32.shl + i32.or + i32.store + local.get $3 + i32.const 2 + i32.shl + local.get $0 + i32.add + local.get $3 + i32.const 2 + i32.shl + local.get $0 + i32.add + i32.load offset=4 + i32.const 1 + local.get $4 + i32.shl + i32.or + i32.store offset=4 + ) + (func $~lib/rt/tlsf/addMemory (; 8 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + (local $4 i32) + local.get $2 + i32.const 15 + i32.and + i32.eqz + i32.const 0 + local.get $1 + i32.const 15 + i32.and + i32.eqz + i32.const 0 + local.get $1 + local.get $2 + i32.le_u + select + select + i32.eqz + if + i32.const 0 + i32.const 352 + i32.const 384 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load offset=1568 + local.tee $3 + if + local.get $1 + local.get $3 + i32.const 16 + i32.add + i32.lt_u + if + i32.const 0 + i32.const 352 + i32.const 394 + i32.const 15 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 16 + i32.sub + local.get $3 + i32.eq + if + local.get $3 + i32.load + local.set $4 + local.get $1 + i32.const 16 + i32.sub + local.set $1 + end + else + local.get $1 + local.get $0 + i32.const 1572 + i32.add + i32.lt_u + if + i32.const 0 + i32.const 352 + i32.const 406 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + end + local.get $2 + local.get $1 + i32.sub + local.tee $2 + i32.const 48 + i32.lt_u + if + return + end + local.get $1 + local.get $4 + i32.const 2 + i32.and + local.get $2 + i32.const 32 + i32.sub + i32.const 1 + i32.or + i32.or + i32.store + local.get $1 + i32.const 0 + i32.store offset=16 + local.get $1 + i32.const 0 + i32.store offset=20 + local.get $1 + local.get $2 + i32.add + i32.const 16 + i32.sub + local.tee $2 + i32.const 2 + i32.store + local.get $0 + local.get $2 + i32.store offset=1568 + local.get $0 + local.get $1 + call $~lib/rt/tlsf/insertBlock + ) + (func $~lib/rt/tlsf/initializeRoot (; 9 ;) (type $FUNCSIG$v) + (local $0 i32) + (local $1 i32) + i32.const 1 + current_memory + local.tee $0 + i32.gt_s + if (result i32) + i32.const 1 + local.get $0 + i32.sub + grow_memory + i32.const 0 + i32.lt_s + else + i32.const 0 + end if unreachable end - global.get $~lib/allocator/arena/offset - local.tee $1 - local.get $0 - i32.const 1 - local.get $0 - i32.const 1 - i32.gt_u - select - i32.add - i32.const 7 - i32.add - i32.const -8 - i32.and - local.tee $0 + i32.const 736 + i32.const 0 + i32.store + i32.const 2304 + i32.const 0 + i32.store + i32.const 0 + local.set $0 + loop $repeat|0 + block $break|0 + local.get $0 + i32.const 23 + i32.ge_u + br_if $break|0 + local.get $0 + i32.const 2 + i32.shl + i32.const 736 + i32.add + i32.const 0 + i32.store offset=4 + i32.const 0 + local.set $1 + loop $repeat|1 + block $break|1 + local.get $1 + i32.const 16 + i32.ge_u + br_if $break|1 + local.get $0 + i32.const 4 + i32.shl + local.get $1 + i32.add + i32.const 2 + i32.shl + i32.const 736 + i32.add + i32.const 0 + i32.store offset=96 + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $repeat|1 + end + end + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $repeat|0 + end + end + i32.const 736 + i32.const 2320 current_memory - local.tee $2 i32.const 16 i32.shl - i32.gt_u + call $~lib/rt/tlsf/addMemory + i32.const 736 + global.set $~lib/rt/tlsf/ROOT + ) + (func $~lib/rt/tlsf/prepareSize (; 10 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + local.get $0 + i32.const 1073741808 + i32.ge_u if - local.get $2 - local.get $0 + i32.const 400 + i32.const 352 + i32.const 446 + i32.const 29 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 15 + i32.add + i32.const -16 + i32.and + local.tee $0 + i32.const 16 + local.get $0 + i32.const 16 + i32.gt_u + select + ) + (func $~lib/rt/tlsf/searchBlock (; 11 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + local.get $1 + i32.const 256 + i32.lt_u + if (result i32) local.get $1 - i32.sub - i32.const 65535 - i32.add - i32.const -65536 - i32.and - i32.const 16 + i32.const 4 i32.shr_u - local.tee $3 + local.set $1 + i32.const 0 + else + local.get $1 + i32.const 536870904 + i32.lt_u + if + i32.const 1 + i32.const 27 + local.get $1 + i32.clz + i32.sub + i32.shl + local.get $1 + i32.add + i32.const 1 + i32.sub + local.set $1 + end + local.get $1 + i32.const 31 + local.get $1 + i32.clz + i32.sub + local.tee $2 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + local.set $1 local.get $2 - local.get $3 - i32.gt_s - select + i32.const 7 + i32.sub + end + local.tee $2 + i32.const 23 + i32.lt_u + if (result i32) + local.get $1 + i32.const 16 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 352 + i32.const 336 + i32.const 13 + call $~lib/builtins/abort + unreachable + end + local.get $2 + i32.const 2 + i32.shl + local.get $0 + i32.add + i32.load offset=4 + i32.const -1 + local.get $1 + i32.shl + i32.and + local.tee $1 + if (result i32) + local.get $1 + i32.ctz + local.get $2 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + local.get $0 + i32.add + i32.load offset=96 + else + local.get $0 + i32.load + i32.const -1 + local.get $2 + i32.const 1 + i32.add + i32.shl + i32.and + local.tee $1 + if (result i32) + local.get $1 + i32.ctz + local.tee $1 + i32.const 2 + i32.shl + local.get $0 + i32.add + i32.load offset=4 + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 352 + i32.const 349 + i32.const 17 + call $~lib/builtins/abort + unreachable + end + local.get $2 + i32.ctz + local.get $1 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + local.get $0 + i32.add + i32.load offset=96 + else + i32.const 0 + end + end + ) + (func $~lib/rt/tlsf/growMemory (; 12 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (local $2 i32) + current_memory + local.tee $2 + local.get $1 + i32.const 65535 + i32.add + i32.const -65536 + i32.and + i32.const 16 + i32.shr_u + local.tee $1 + local.get $2 + local.get $1 + i32.gt_s + select + grow_memory + i32.const 0 + i32.lt_s + if + local.get $1 grow_memory i32.const 0 i32.lt_s if - local.get $3 - grow_memory - i32.const 0 - i32.lt_s - if - unreachable - end + unreachable end end local.get $0 - global.set $~lib/allocator/arena/offset - local.get $1 - ) - (func $~lib/util/runtime/allocate (; 4 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - (local $1 i32) - i32.const 1 - i32.const 32 - local.get $0 - i32.const 15 - i32.add - i32.clz - i32.sub - i32.shl - call $~lib/allocator/arena/__mem_allocate - local.tee $1 - i32.const -1520547049 - i32.store - local.get $1 - local.get $0 - i32.store offset=4 - local.get $1 - i32.const 0 - i32.store offset=8 - local.get $1 - i32.const 0 - i32.store offset=12 - local.get $1 + local.get $2 i32.const 16 - i32.add + i32.shl + current_memory + i32.const 16 + i32.shl + call $~lib/rt/tlsf/addMemory ) - (func $~lib/util/runtime/register (; 5 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - local.get $0 - i32.const 528 - i32.le_u + (func $~lib/rt/tlsf/prepareBlock (; 13 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + (local $4 i32) + local.get $1 + i32.load + local.set $3 + local.get $2 + i32.const 15 + i32.and if i32.const 0 - i32.const 296 - i32.const 129 - i32.const 4 + i32.const 352 + i32.const 363 + i32.const 13 call $~lib/builtins/abort unreachable end - local.get $0 - i32.const 16 + local.get $3 + i32.const -4 + i32.and + local.get $2 i32.sub + local.tee $4 + i32.const 32 + i32.ge_u + if + local.get $1 + local.get $3 + i32.const 2 + i32.and + local.get $2 + i32.or + i32.store + local.get $1 + i32.const 16 + i32.add + local.get $2 + i32.add + local.tee $1 + local.get $4 + i32.const 16 + i32.sub + i32.const 1 + i32.or + i32.store + local.get $0 + local.get $1 + call $~lib/rt/tlsf/insertBlock + else + local.get $1 + local.get $3 + i32.const -2 + i32.and + i32.store + local.get $1 + i32.const 16 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.get $1 + i32.const 16 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + i32.load + i32.const -3 + i32.and + i32.store + end + ) + (func $~lib/rt/tlsf/allocateBlock (; 14 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + local.get $0 + local.get $1 + call $~lib/rt/tlsf/prepareSize + local.tee $3 + call $~lib/rt/tlsf/searchBlock local.tee $2 + i32.eqz + if + local.get $0 + local.get $3 + call $~lib/rt/tlsf/growMemory + local.get $0 + local.get $3 + call $~lib/rt/tlsf/searchBlock + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 352 + i32.const 476 + i32.const 15 + call $~lib/builtins/abort + unreachable + end + end + local.get $2 i32.load - i32.const -1520547049 - i32.ne + i32.const -4 + i32.and + local.get $3 + i32.lt_u if i32.const 0 - i32.const 296 - i32.const 131 - i32.const 4 + i32.const 352 + i32.const 478 + i32.const 13 call $~lib/builtins/abort unreachable end local.get $2 + i32.const 0 + i32.store offset=4 + local.get $2 local.get $1 - i32.store + i32.store offset=12 + local.get $0 + local.get $2 + call $~lib/rt/tlsf/removeBlock + local.get $0 + local.get $2 + local.get $3 + call $~lib/rt/tlsf/prepareBlock + local.get $2 + ) + (func $~lib/rt/tlsf/__alloc (; 15 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + global.get $~lib/rt/tlsf/ROOT + local.tee $2 + if (result i32) + local.get $2 + else + call $~lib/rt/tlsf/initializeRoot + global.get $~lib/rt/tlsf/ROOT + end + local.get $0 + call $~lib/rt/tlsf/allocateBlock + local.tee $0 + local.get $1 + i32.store offset=8 + local.get $0 + i32.const 16 + i32.add + ) + (func $~lib/rt/purerc/increment (; 16 ;) (type $FUNCSIG$vi) (param $0 i32) + (local $1 i32) + local.get $0 + i32.load offset=4 + local.tee $1 + i32.const -268435456 + i32.and + local.get $1 + i32.const 1 + i32.add + i32.const -268435456 + i32.and + i32.ne + if + i32.const 0 + i32.const 456 + i32.const 103 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + i32.const 1 + i32.add + i32.store offset=4 + local.get $0 + call $~lib/rt/purerc/onIncrement + local.get $0 + i32.load + i32.const 1 + i32.and + if + i32.const 0 + i32.const 456 + i32.const 106 + i32.const 13 + call $~lib/builtins/abort + unreachable + end + ) + (func $~lib/rt/purerc/__retain (; 17 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + local.get $0 + i32.const 736 + i32.gt_u + if + local.get $0 + i32.const 16 + i32.sub + call $~lib/rt/purerc/increment + end local.get $0 ) - (func $~lib/util/runtime/makeArray (; 6 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) + (func $~lib/memory/memory.copy (; 18 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) + (local $4 i32) + block $~lib/util/memory/memmove|inlined.0 + local.get $2 + local.set $3 + local.get $0 + local.get $1 + i32.eq + br_if $~lib/util/memory/memmove|inlined.0 + local.get $0 + local.get $1 + i32.lt_u + if + local.get $1 + i32.const 7 + i32.and + local.get $0 + i32.const 7 + i32.and + i32.eq + if + loop $continue|0 + local.get $0 + i32.const 7 + i32.and + if + local.get $3 + i32.eqz + br_if $~lib/util/memory/memmove|inlined.0 + local.get $3 + i32.const 1 + i32.sub + local.set $3 + local.get $0 + local.tee $2 + i32.const 1 + i32.add + local.set $0 + local.get $1 + local.tee $4 + i32.const 1 + i32.add + local.set $1 + local.get $2 + local.get $4 + i32.load8_u + i32.store8 + br $continue|0 + end + end + loop $continue|1 + local.get $3 + i32.const 8 + i32.ge_u + if + local.get $0 + local.get $1 + i64.load + i64.store + local.get $3 + i32.const 8 + i32.sub + local.set $3 + local.get $0 + i32.const 8 + i32.add + local.set $0 + local.get $1 + i32.const 8 + i32.add + local.set $1 + br $continue|1 + end + end + end + loop $continue|2 + local.get $3 + if + local.get $0 + local.tee $2 + i32.const 1 + i32.add + local.set $0 + local.get $1 + local.tee $4 + i32.const 1 + i32.add + local.set $1 + local.get $2 + local.get $4 + i32.load8_u + i32.store8 + local.get $3 + i32.const 1 + i32.sub + local.set $3 + br $continue|2 + end + end + else + local.get $1 + i32.const 7 + i32.and + local.get $0 + i32.const 7 + i32.and + i32.eq + if + loop $continue|3 + local.get $0 + local.get $3 + i32.add + i32.const 7 + i32.and + if + local.get $3 + i32.eqz + br_if $~lib/util/memory/memmove|inlined.0 + local.get $0 + local.get $3 + i32.const 1 + i32.sub + local.tee $3 + i32.add + local.get $1 + local.get $3 + i32.add + i32.load8_u + i32.store8 + br $continue|3 + end + end + loop $continue|4 + local.get $3 + i32.const 8 + i32.ge_u + if + local.get $0 + local.get $3 + i32.const 8 + i32.sub + local.tee $3 + i32.add + local.get $1 + local.get $3 + i32.add + i64.load + i64.store + br $continue|4 + end + end + end + loop $continue|5 + local.get $3 + if + local.get $0 + local.get $3 + i32.const 1 + i32.sub + local.tee $3 + i32.add + local.get $1 + local.get $3 + i32.add + i32.load8_u + i32.store8 + br $continue|5 + end + end + end + end + ) + (func $~lib/rt/common/__allocArray (; 19 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) i32.const 16 - call $~lib/util/runtime/allocate local.get $1 - call $~lib/util/runtime/register - local.set $1 + call $~lib/rt/tlsf/__alloc + local.tee $1 i32.const 3 local.get $0 i32.shl local.tee $0 - call $~lib/util/runtime/allocate i32.const 15 - call $~lib/util/runtime/register + call $~lib/rt/tlsf/__alloc local.tee $2 - local.tee $3 - local.get $1 - i32.load - i32.ne - drop - local.get $1 - local.get $3 + call $~lib/rt/purerc/__retain i32.store local.get $1 local.get $2 @@ -244,22 +1324,233 @@ i32.store offset=12 local.get $1 ) - (func $std/array-literal/Ref#constructor (; 7 ;) (type $FUNCSIG$i) (result i32) + (func $std/array-literal/Ref#constructor (; 20 ;) (type $FUNCSIG$i) (result i32) i32.const 0 - call $~lib/util/runtime/allocate i32.const 19 - call $~lib/util/runtime/register + call $~lib/rt/tlsf/__alloc + call $~lib/rt/purerc/__retain ) - (func $std/array-literal/RefWithCtor#constructor (; 8 ;) (type $FUNCSIG$i) (result i32) + (func $std/array-literal/RefWithCtor#constructor (; 21 ;) (type $FUNCSIG$i) (result i32) i32.const 0 - call $~lib/util/runtime/allocate i32.const 21 - call $~lib/util/runtime/register + call $~lib/rt/tlsf/__alloc + call $~lib/rt/purerc/__retain ) - (func $start:std/array-literal (; 9 ;) (type $FUNCSIG$v) + (func $~lib/rt/tlsf/freeBlock (; 22 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (local $2 i32) + local.get $1 + i32.load + local.tee $2 + i32.const 1 + i32.and + if + i32.const 0 + i32.const 352 + i32.const 530 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.get $2 + i32.const 1 + i32.or + i32.store + local.get $0 + local.get $1 + call $~lib/rt/tlsf/insertBlock + local.get $1 + call $~lib/rt/tlsf/onFree + ) + (func $~lib/rt/common/__typeinfo (; 23 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + local.get $0 + if (result i32) + local.get $0 + i32.const 552 + i32.load + i32.gt_u + else + i32.const 1 + end + if + i32.const 136 + i32.const 512 + i32.const 55 + i32.const 34 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 3 + i32.shl + i32.const 552 + i32.add + i32.load + ) + (func $~lib/rt/purerc/growRoots (; 24 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) + (local $3 i32) + global.get $~lib/rt/purerc/CUR + global.get $~lib/rt/purerc/ROOTS + local.tee $2 + i32.sub + local.tee $1 + i32.const 1 + i32.shl + local.tee $0 + i32.const 256 + local.get $0 + i32.const 256 + i32.gt_u + select + local.tee $3 + i32.const 0 + call $~lib/rt/tlsf/__alloc + local.tee $0 + local.get $2 + local.get $1 + call $~lib/memory/memory.copy + local.get $0 + global.set $~lib/rt/purerc/ROOTS + local.get $0 + local.get $1 + i32.add + global.set $~lib/rt/purerc/CUR + local.get $0 + local.get $3 + i32.add + global.set $~lib/rt/purerc/END + ) + (func $~lib/rt/purerc/appendRoot (; 25 ;) (type $FUNCSIG$vi) (param $0 i32) + (local $1 i32) + global.get $~lib/rt/purerc/CUR + local.tee $1 + global.get $~lib/rt/purerc/END + i32.ge_u + if + call $~lib/rt/purerc/growRoots + global.get $~lib/rt/purerc/CUR + local.set $1 + end + local.get $1 + local.get $0 + i32.store + local.get $1 + i32.const 1 + i32.add + global.set $~lib/rt/purerc/CUR + ) + (func $~lib/rt/purerc/decrement (; 26 ;) (type $FUNCSIG$vi) (param $0 i32) + (local $1 i32) + (local $2 i32) + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 268435455 + i32.and + local.set $1 + local.get $0 + call $~lib/rt/purerc/onDecrement + local.get $0 + i32.load + i32.const 1 + i32.and + if + i32.const 0 + i32.const 456 + i32.const 114 + i32.const 13 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 1 + i32.eq + if + local.get $0 + i32.const 16 + i32.add + i32.const 1 + call $~lib/builtins/__visit_members + local.get $2 + i32.const -2147483648 + i32.and + if + local.get $0 + i32.const -2147483648 + i32.store offset=4 + else + global.get $~lib/rt/tlsf/ROOT + local.get $0 + call $~lib/rt/tlsf/freeBlock + end + else + local.get $1 + i32.const 0 + i32.le_u + if + i32.const 0 + i32.const 456 + i32.const 123 + i32.const 15 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load offset=8 + call $~lib/rt/common/__typeinfo + i32.const 8 + i32.and + if + local.get $0 + local.get $1 + i32.const 1 + i32.sub + local.get $2 + i32.const -268435456 + i32.and + i32.or + i32.store offset=4 + else + local.get $0 + local.get $1 + i32.const 1 + i32.sub + i32.const -1342177280 + i32.or + i32.store offset=4 + local.get $2 + i32.const -2147483648 + i32.and + i32.eqz + if + local.get $0 + call $~lib/rt/purerc/appendRoot + end + end + end + ) + (func $~lib/rt/purerc/__release (; 27 ;) (type $FUNCSIG$vi) (param $0 i32) + local.get $0 + i32.const 736 + i32.gt_u + if + local.get $0 + i32.const 16 + i32.sub + call $~lib/rt/purerc/decrement + end + ) + (func $start:std/array-literal (; 28 ;) (type $FUNCSIG$v) + (local $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) i32.const 60 i32.load i32.const 3 @@ -309,7 +1600,7 @@ call $~lib/builtins/abort unreachable end - i32.const 228 + i32.const 284 i32.load i32.const 3 i32.ne @@ -321,7 +1612,7 @@ call $~lib/builtins/abort unreachable end - i32.const 216 + i32.const 272 i32.const 0 call $~lib/array/Array#__get if @@ -332,7 +1623,7 @@ call $~lib/builtins/abort unreachable end - i32.const 216 + i32.const 272 i32.const 1 call $~lib/array/Array#__get i32.const 1 @@ -345,7 +1636,7 @@ call $~lib/builtins/abort unreachable end - i32.const 216 + i32.const 272 i32.const 2 call $~lib/array/Array#__get i32.const 2 @@ -368,13 +1659,9 @@ call $~lib/builtins/abort unreachable end - i32.const 528 - global.set $~lib/allocator/arena/startOffset - global.get $~lib/allocator/arena/startOffset - global.set $~lib/allocator/arena/offset i32.const 0 i32.const 17 - call $~lib/util/runtime/makeArray + call $~lib/rt/common/__allocArray local.tee $2 i32.load offset=4 local.tee $0 @@ -398,6 +1685,7 @@ local.get $1 i32.store8 offset=2 local.get $2 + call $~lib/rt/purerc/__retain global.set $std/array-literal/dynamicArrayI8 global.get $std/array-literal/dynamicArrayI8 i32.load offset=12 @@ -452,7 +1740,7 @@ global.set $std/array-literal/i i32.const 2 i32.const 18 - call $~lib/util/runtime/makeArray + call $~lib/rt/common/__allocArray local.tee $2 i32.load offset=4 local.tee $0 @@ -476,6 +1764,7 @@ local.get $1 i32.store offset=8 local.get $2 + call $~lib/rt/purerc/__retain global.set $std/array-literal/dynamicArrayI32 global.get $std/array-literal/dynamicArrayI32 i32.load offset=12 @@ -528,19 +1817,26 @@ end i32.const 2 i32.const 20 - call $~lib/util/runtime/makeArray + call $~lib/rt/common/__allocArray local.tee $2 i32.load offset=4 local.tee $0 call $std/array-literal/Ref#constructor + local.tee $1 + call $~lib/rt/purerc/__retain i32.store local.get $0 call $std/array-literal/Ref#constructor + local.tee $3 + call $~lib/rt/purerc/__retain i32.store offset=4 local.get $0 call $std/array-literal/Ref#constructor + local.tee $4 + call $~lib/rt/purerc/__retain i32.store offset=8 local.get $2 + call $~lib/rt/purerc/__retain global.set $std/array-literal/dynamicArrayRef global.get $std/array-literal/dynamicArrayRef i32.load offset=12 @@ -556,19 +1852,26 @@ end i32.const 2 i32.const 22 - call $~lib/util/runtime/makeArray + call $~lib/rt/common/__allocArray local.tee $2 i32.load offset=4 local.tee $0 call $std/array-literal/RefWithCtor#constructor + local.tee $5 + call $~lib/rt/purerc/__retain i32.store local.get $0 call $std/array-literal/RefWithCtor#constructor + local.tee $6 + call $~lib/rt/purerc/__retain i32.store offset=4 local.get $0 call $std/array-literal/RefWithCtor#constructor + local.tee $0 + call $~lib/rt/purerc/__retain i32.store offset=8 local.get $2 + call $~lib/rt/purerc/__retain global.set $std/array-literal/dynamicArrayRefWithCtor global.get $std/array-literal/dynamicArrayRefWithCtor i32.load offset=12 @@ -582,182 +1885,309 @@ call $~lib/builtins/abort unreachable end + global.get $std/array-literal/emptyArrayI32 + call $~lib/rt/purerc/__release + global.get $std/array-literal/dynamicArrayI8 + call $~lib/rt/purerc/__release + global.get $std/array-literal/dynamicArrayI32 + call $~lib/rt/purerc/__release + global.get $std/array-literal/dynamicArrayRef + call $~lib/rt/purerc/__release + global.get $std/array-literal/dynamicArrayRefWithCtor + call $~lib/rt/purerc/__release + local.get $1 + call $~lib/rt/purerc/__release + local.get $3 + call $~lib/rt/purerc/__release + local.get $4 + call $~lib/rt/purerc/__release + local.get $5 + call $~lib/rt/purerc/__release + local.get $6 + call $~lib/rt/purerc/__release + local.get $0 + call $~lib/rt/purerc/__release ) - (func $~lib/runtime/runtime.instanceof (; 10 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $start (; 29 ;) (type $FUNCSIG$v) + call $start:std/array-literal + ) + (func $~lib/rt/purerc/markGray (; 30 ;) (type $FUNCSIG$vi) (param $0 i32) + (local $1 i32) + local.get $0 + i32.load offset=4 + local.tee $1 + i32.const 1879048192 + i32.and + i32.const 268435456 + i32.ne + if + local.get $0 + local.get $1 + i32.const -1879048193 + i32.and + i32.const 268435456 + i32.or + i32.store offset=4 + local.get $0 + i32.const 16 + i32.add + i32.const 2 + call $~lib/builtins/__visit_members + end + ) + (func $~lib/rt/purerc/scanBlack (; 31 ;) (type $FUNCSIG$vi) (param $0 i32) + local.get $0 + local.get $0 + i32.load offset=4 + i32.const -1879048193 + i32.and + i32.store offset=4 + local.get $0 + i32.const 16 + i32.add + i32.const 4 + call $~lib/builtins/__visit_members + ) + (func $~lib/rt/purerc/scan (; 32 ;) (type $FUNCSIG$vi) (param $0 i32) + (local $1 i32) + local.get $0 + i32.load offset=4 + local.tee $1 + i32.const 1879048192 + i32.and + i32.const 268435456 + i32.eq + if + local.get $1 + i32.const 268435455 + i32.and + i32.const 0 + i32.gt_u + if + local.get $0 + call $~lib/rt/purerc/scanBlack + else + local.get $0 + local.get $1 + i32.const -1879048193 + i32.and + i32.const 536870912 + i32.or + i32.store offset=4 + local.get $0 + i32.const 16 + i32.add + i32.const 3 + call $~lib/builtins/__visit_members + end + end + ) + (func $~lib/rt/purerc/collectWhite (; 33 ;) (type $FUNCSIG$vi) (param $0 i32) + (local $1 i32) + local.get $0 + i32.load offset=4 + local.tee $1 + i32.const 1879048192 + i32.and + i32.const 536870912 + i32.eq + if (result i32) + local.get $1 + i32.const -2147483648 + i32.and + i32.eqz + else + i32.const 0 + end + if + local.get $0 + i32.const 16 + i32.add + i32.const 5 + call $~lib/builtins/__visit_members + end + global.get $~lib/rt/tlsf/ROOT + local.get $0 + call $~lib/rt/tlsf/freeBlock + ) + (func $~lib/rt/purerc/__visit (; 34 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + local.get $0 + i32.const 736 + i32.lt_u + if + return + end local.get $0 i32.const 16 i32.sub - i32.load - local.tee $0 - if (result i32) - local.get $0 - i32.const 336 - i32.load - i32.le_u - else - i32.const 0 - end - if - loop $continue|0 - local.get $0 - local.get $1 - i32.eq - if + local.set $0 + block $break|0 + block $case5|0 + block $case4|0 + block $case3|0 + block $case2|0 + block $case1|0 + local.get $1 + i32.const 1 + i32.ne + if + local.get $1 + i32.const 2 + i32.eq + br_if $case1|0 + block $tablify|0 + local.get $1 + i32.const 3 + i32.sub + br_table $case2|0 $case3|0 $case4|0 $tablify|0 + end + br $case5|0 + end + local.get $0 + call $~lib/rt/purerc/decrement + br $break|0 + end + local.get $0 + i32.load offset=4 + i32.const 268435455 + i32.and + i32.const 0 + i32.le_u + if + i32.const 0 + i32.const 456 + i32.const 74 + i32.const 17 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $0 + i32.load offset=4 + i32.const 1 + i32.sub + i32.store offset=4 + local.get $0 + call $~lib/rt/purerc/markGray + br $break|0 + end + local.get $0 + call $~lib/rt/purerc/scan + br $break|0 + end + local.get $0 + i32.load offset=4 + local.tee $1 + i32.const -268435456 + i32.and + local.get $1 i32.const 1 + i32.add + i32.const -268435456 + i32.and + i32.ne + if + i32.const 0 + i32.const 456 + i32.const 85 + i32.const 6 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + i32.const 1 + i32.add + i32.store offset=4 + local.get $1 + i32.const 1879048192 + i32.and + if + local.get $0 + call $~lib/rt/purerc/scanBlack + end + br $break|0 + end + local.get $0 + call $~lib/rt/purerc/collectWhite + br $break|0 + end + i32.const 0 + i32.const 456 + i32.const 96 + i32.const 24 + call $~lib/builtins/abort + unreachable + end + ) + (func $~lib/array/Array#__visit_impl (; 35 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + local.get $0 + i32.load offset=4 + local.tee $2 + local.get $0 + i32.load offset=8 + i32.add + local.set $0 + loop $continue|0 + local.get $2 + local.get $0 + i32.lt_u + if + local.get $2 + i32.load + local.tee $3 + if + local.get $3 + local.get $1 + call $~lib/rt/purerc/__visit + end + local.get $2 + i32.const 4 + i32.add + local.set $2 + br $continue|0 + end + end + ) + (func $~lib/builtins/__visit_members (; 36 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + block $block$16$break + block $switch$1$case$24 + block $switch$1$case$22 + block $switch$1$case$3 + block $switch$1$default + local.get $0 + i32.const 8 + i32.sub + i32.load + i32.const 1 + i32.sub + br_table $switch$1$case$3 $switch$1$case$3 $switch$1$case$3 $switch$1$case$3 $switch$1$case$3 $switch$1$case$3 $switch$1$case$3 $switch$1$case$3 $switch$1$case$3 $switch$1$case$3 $switch$1$case$3 $switch$1$case$3 $switch$1$case$3 $block$16$break $switch$1$case$3 $switch$1$case$3 $block$16$break $block$16$break $switch$1$case$3 $switch$1$case$22 $switch$1$case$3 $switch$1$case$24 $switch$1$default + end + unreachable + end return end local.get $0 - i32.const 3 - i32.shl - i32.const 336 - i32.add - i32.load offset=4 - local.tee $0 - br_if $continue|0 - end - end - i32.const 0 - ) - (func $~lib/runtime/runtime.flags (; 11 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - local.get $0 - if (result i32) - local.get $0 - i32.const 336 - i32.load - i32.gt_u - else - i32.const 1 - end - if (result i32) - unreachable - else - local.get $0 - i32.const 3 - i32.shl - i32.const 336 - i32.add - i32.load - end - ) - (func $~lib/runtime/runtime.newObject (; 12 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - local.get $0 - call $~lib/util/runtime/allocate - local.get $1 - call $~lib/util/runtime/register - ) - (func $~lib/runtime/runtime.newString (; 13 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - local.get $0 - i32.const 1 - i32.shl - i32.const 16 - call $~lib/runtime/runtime.newObject - ) - (func $~lib/runtime/runtime.newArrayBuffer (; 14 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - local.get $0 - i32.const 15 - call $~lib/runtime/runtime.newObject - ) - (func $~lib/runtime/runtime.newArray (; 15 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - local.get $0 - local.tee $2 - if (result i32) - local.get $2 - i32.const 336 - i32.load - i32.gt_u - else - i32.const 1 - end - if (result i32) - unreachable - else - local.get $2 - i32.const 3 - i32.shl - i32.const 336 - i32.add - i32.load - end - local.tee $0 - i32.const 16 - i32.div_u - i32.const 31 - i32.and - local.set $4 - local.get $1 - if (result i32) - local.get $1 - i32.const 16 - i32.sub - i32.load offset=4 - else - i32.const 0 - call $~lib/runtime/runtime.newArrayBuffer - local.set $1 - i32.const 0 - end - local.set $3 - local.get $2 - i32.const 16 - call $~lib/runtime/runtime.newObject - local.tee $2 - i32.load - drop - local.get $2 - local.get $1 - i32.store - local.get $2 - local.get $1 - i32.store offset=4 - local.get $2 - local.get $3 - i32.store offset=8 - local.get $2 - local.get $3 - local.get $4 - i32.shr_u - i32.store offset=12 - local.get $0 - i32.const 1024 - i32.and - if - local.get $1 - local.get $3 - i32.add - local.set $0 - loop $continue|0 local.get $1 - local.get $0 - i32.lt_u - if - local.get $1 - i32.load - drop - local.get $1 - i32.const 4 - i32.add - local.set $1 - br $continue|0 - end + call $~lib/array/Array#__visit_impl + br $block$16$break end + local.get $0 + local.get $1 + call $~lib/array/Array#__visit_impl + end + local.get $0 + i32.load + local.tee $0 + if + local.get $0 + local.get $1 + call $~lib/rt/purerc/__visit end - local.get $2 ) - (func $~lib/runtime/runtime.retain (; 16 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $null (; 37 ;) (type $FUNCSIG$v) nop ) - (func $~lib/runtime/runtime.collect (; 17 ;) (type $FUNCSIG$v) - nop - ) - (func $start (; 18 ;) (type $FUNCSIG$v) - call $start:std/array-literal - i32.const 0 - call $~lib/util/runtime/allocate - i32.const 23 - call $~lib/util/runtime/register - global.set $~lib/runtime/ROOT - ) ) diff --git a/tests/compiler/std/array-literal.ts b/tests/compiler/std/array-literal.ts index 2418d306..d081720a 100644 --- a/tests/compiler/std/array-literal.ts +++ b/tests/compiler/std/array-literal.ts @@ -38,3 +38,10 @@ assert(dynamicArrayRef.length == 3); class RefWithCtor { constructor() {} } var dynamicArrayRefWithCtor: RefWithCtor[] = [new RefWithCtor(), new RefWithCtor(), new RefWithCtor()]; assert(dynamicArrayRefWithCtor.length == 3); + +// Unleak globals +__release(changetype(emptyArrayI32)); +__release(changetype(dynamicArrayI8)); +__release(changetype(dynamicArrayI32)); +__release(changetype(dynamicArrayRef)); +__release(changetype(dynamicArrayRefWithCtor)); diff --git a/tests/compiler/std/array-literal.untouched.wat b/tests/compiler/std/array-literal.untouched.wat index f51516df..d289f9cc 100644 --- a/tests/compiler/std/array-literal.untouched.wat +++ b/tests/compiler/std/array-literal.untouched.wat @@ -3,56 +3,53 @@ (type $FUNCSIG$viiii (func (param i32 i32 i32 i32))) (type $FUNCSIG$iii (func (param i32 i32) (result i32))) (type $FUNCSIG$iiiii (func (param i32 i32 i32 i32) (result i32))) - (type $FUNCSIG$vi (func (param i32))) + (type $FUNCSIG$v (func)) + (type $FUNCSIG$iiii (func (param i32 i32 i32) (result i32))) (type $FUNCSIG$vii (func (param i32 i32))) (type $FUNCSIG$viii (func (param i32 i32 i32))) - (type $FUNCSIG$v (func)) + (type $FUNCSIG$vi (func (param i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (import "rtrace" "retain" (func $~lib/rt/purerc/onIncrement (param i32))) + (import "rtrace" "release" (func $~lib/rt/purerc/onDecrement (param i32))) + (import "rtrace" "free" (func $~lib/rt/tlsf/onFree (param i32))) (memory $0 1) - (data (i32.const 8) "\0f\00\00\00\03\00\00\00\00\00\00\00\00\00\00\00\00\01\02") - (data (i32.const 32) "\11\00\00\00\10\00\00\00\00\00\00\00\00\00\00\00\18\00\00\00\18\00\00\00\03\00\00\00\03\00\00\00") - (data (i32.const 64) "\10\00\00\00(\00\00\00\00\00\00\00\00\00\00\00s\00t\00d\00/\00a\00r\00r\00a\00y\00-\00l\00i\00t\00e\00r\00a\00l\00.\00t\00s\00") - (data (i32.const 120) "\10\00\00\00\1a\00\00\00\00\00\00\00\00\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00.\00t\00s\00") - (data (i32.const 168) "\0f\00\00\00\0c\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00") - (data (i32.const 200) "\12\00\00\00\10\00\00\00\00\00\00\00\00\00\00\00\b8\00\00\00\b8\00\00\00\0c\00\00\00\03\00\00\00") - (data (i32.const 232) "\0f\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 248) "\12\00\00\00\10\00\00\00\00\00\00\00\00\00\00\00\f8\00\00\00\f8\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 280) "\10\00\00\00(\00\00\00\00\00\00\00\00\00\00\00~\00l\00i\00b\00/\00u\00t\00i\00l\00/\00r\00u\00n\00t\00i\00m\00e\00.\00t\00s\00") - (data (i32.const 336) "\17\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\19\00\00\00\0e\00\00\00I\00\00\00\0e\00\00\00\08\00\00\00\00\00\00\00I\04\00\00\0e\00\00\00\08\00\00\00\00\00\00\00I\04\00\00\0e\00\00\00\08\00\00\00\00\00\00\00") + (data (i32.const 8) "\03\00\00\00\01\00\00\00\0f\00\00\00\03\00\00\00\00\01\02") + (data (i32.const 32) "\10\00\00\00\01\00\00\00\11\00\00\00\10\00\00\00\18\00\00\00\18\00\00\00\03\00\00\00\03\00\00\00") + (data (i32.const 64) "(\00\00\00\01\00\00\00\10\00\00\00(\00\00\00s\00t\00d\00/\00a\00r\00r\00a\00y\00-\00l\00i\00t\00e\00r\00a\00l\00.\00t\00s\00") + (data (i32.const 120) "$\00\00\00\01\00\00\00\10\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 176) "\1a\00\00\00\01\00\00\00\10\00\00\00\1a\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00.\00t\00s\00") + (data (i32.const 224) "\0c\00\00\00\01\00\00\00\0f\00\00\00\0c\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00") + (data (i32.const 256) "\10\00\00\00\01\00\00\00\12\00\00\00\10\00\00\00\f0\00\00\00\f0\00\00\00\0c\00\00\00\03\00\00\00") + (data (i32.const 288) "\00\00\00\00\01\00\00\00\0f\00\00\00\00\00\00\00") + (data (i32.const 304) "\10\00\00\00\01\00\00\00\12\00\00\00\10\00\00\000\01\00\000\01\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 336) "\1e\00\00\00\01\00\00\00\10\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 384) "(\00\00\00\01\00\00\00\10\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 440) "\"\00\00\00\01\00\00\00\10\00\00\00\"\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00p\00u\00r\00e\00r\00c\00.\00t\00s\00") + (data (i32.const 496) "\"\00\00\00\01\00\00\00\10\00\00\00\"\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00c\00o\00m\00m\00o\00n\00.\00t\00s\00") + (data (i32.const 552) "\16\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\19\00\00\00\0e\00\00\00I\00\00\00\0e\00\00\00\08\00\00\00\00\00\00\00I\04\00\00\0e\00\00\00\08\00\00\00\00\00\00\00I\04\00\00\0e\00\00\00") (table $0 1 funcref) (elem (i32.const 0) $null) (global $std/array-literal/staticArrayI8 i32 (i32.const 48)) - (global $std/array-literal/staticArrayI32 i32 (i32.const 216)) - (global $std/array-literal/emptyArrayI32 (mut i32) (i32.const 264)) + (global $std/array-literal/staticArrayI32 i32 (i32.const 272)) + (global $std/array-literal/emptyArrayI32 (mut i32) (i32.const 320)) (global $std/array-literal/i (mut i32) (i32.const 0)) - (global $~lib/util/runtime/HEADER_SIZE i32 (i32.const 16)) - (global $~lib/allocator/arena/startOffset (mut i32) (i32.const 0)) - (global $~lib/allocator/arena/offset (mut i32) (i32.const 0)) - (global $~lib/util/runtime/HEADER_MAGIC i32 (i32.const -1520547049)) - (global $~lib/ASC_NO_ASSERT i32 (i32.const 0)) + (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) (global $std/array-literal/dynamicArrayI8 (mut i32) (i32.const 0)) (global $std/array-literal/dynamicArrayI32 (mut i32) (i32.const 0)) (global $std/array-literal/dynamicArrayRef (mut i32) (i32.const 0)) (global $std/array-literal/dynamicArrayRefWithCtor (mut i32) (i32.const 0)) - (global $~lib/runtime/ROOT (mut i32) (i32.const 0)) - (global $~lib/runtime/RTTI_BASE i32 (i32.const 336)) - (global $~lib/memory/HEAP_BASE i32 (i32.const 528)) + (global $~lib/rt/purerc/CUR (mut i32) (i32.const 0)) + (global $~lib/rt/purerc/END (mut i32) (i32.const 0)) + (global $~lib/rt/purerc/ROOTS (mut i32) (i32.const 0)) + (global $~lib/builtins/RTTI_BASE i32 (i32.const 552)) + (global $~lib/builtins/HEAP_BASE i32 (i32.const 736)) (export "memory" (memory $0)) - (export "$.instanceof" (func $~lib/runtime/runtime.instanceof)) - (export "$.flags" (func $~lib/runtime/runtime.flags)) - (export "$.newObject" (func $~lib/runtime/runtime.newObject)) - (export "$.newString" (func $~lib/runtime/runtime.newString)) - (export "$.newArrayBuffer" (func $~lib/runtime/runtime.newArrayBuffer)) - (export "$.newArray" (func $~lib/runtime/runtime.newArray)) - (export "$.retain" (func $~lib/runtime/runtime.retain)) - (export "$.release" (func $~lib/runtime/runtime.release)) - (export "$.collect" (func $~lib/runtime/runtime.collect)) (start $start) - (func $~lib/array/Array#get:length (; 1 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/array/Array#get:length (; 4 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.load offset=12 ) - (func $~lib/array/Array#__unchecked_get (; 2 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array#__unchecked_get (; 5 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $0 i32.load offset=4 local.get $1 @@ -61,7 +58,7 @@ i32.add i32.load8_s ) - (func $~lib/array/Array#__get (; 3 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array#__get (; 6 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $1 local.get $0 i32.load offset=8 @@ -69,9 +66,9 @@ i32.shr_u i32.ge_u if - i32.const 0 i32.const 136 - i32.const 99 + i32.const 192 + i32.const 100 i32.const 61 call $~lib/builtins/abort unreachable @@ -80,11 +77,11 @@ local.get $1 call $~lib/array/Array#__unchecked_get ) - (func $~lib/array/Array#get:length (; 4 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/array/Array#get:length (; 7 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.load offset=12 ) - (func $~lib/array/Array#__unchecked_get (; 5 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array#__unchecked_get (; 8 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $0 i32.load offset=4 local.get $1 @@ -93,7 +90,7 @@ i32.add i32.load ) - (func $~lib/array/Array#__get (; 6 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array#__get (; 9 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $1 local.get $0 i32.load offset=8 @@ -101,9 +98,9 @@ i32.shr_u i32.ge_u if - i32.const 0 i32.const 136 - i32.const 99 + i32.const 192 + i32.const 100 i32.const 61 call $~lib/builtins/abort unreachable @@ -112,257 +109,1499 @@ local.get $1 call $~lib/array/Array#__unchecked_get ) - (func $~lib/util/runtime/adjust (; 7 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/rt/tlsf/removeBlock (; 10 ;) (type $FUNCSIG$vii) (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 $9 i32) + (local $10 i32) + (local $11 i32) + local.get $1 + i32.load + local.set $2 + local.get $2 i32.const 1 - i32.const 32 - local.get $0 - global.get $~lib/util/runtime/HEADER_SIZE - i32.add - i32.const 1 - i32.sub - i32.clz - i32.sub - i32.shl + i32.and + i32.eqz + if + i32.const 0 + i32.const 352 + i32.const 275 + i32.const 13 + call $~lib/builtins/abort + unreachable + end + local.get $2 + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.set $3 + local.get $3 + i32.const 16 + i32.ge_u + if (result i32) + local.get $3 + i32.const 1073741808 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 352 + i32.const 277 + i32.const 13 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const 256 + i32.lt_u + if + i32.const 0 + local.set $4 + local.get $3 + i32.const 4 + i32.shr_u + local.set $5 + else + i32.const 31 + local.get $3 + i32.clz + i32.sub + local.set $4 + local.get $3 + local.get $4 + i32.const 4 + i32.sub + i32.shr_u + i32.const 1 + i32.const 4 + i32.shl + i32.xor + local.set $5 + local.get $4 + i32.const 8 + i32.const 1 + i32.sub + i32.sub + local.set $4 + end + local.get $4 + i32.const 23 + i32.lt_u + if (result i32) + local.get $5 + i32.const 16 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 352 + i32.const 290 + i32.const 13 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.load offset=16 + local.set $6 + local.get $1 + i32.load offset=20 + local.set $7 + local.get $6 + if + local.get $6 + local.get $7 + i32.store offset=20 + end + local.get $7 + if + local.get $7 + local.get $6 + i32.store offset=16 + end + local.get $1 + block $~lib/rt/tlsf/GETHEAD|inlined.0 (result i32) + local.get $0 + local.set $10 + local.get $4 + local.set $9 + local.get $5 + local.set $8 + local.get $10 + local.get $9 + i32.const 4 + i32.shl + local.get $8 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + end + i32.eq + if + block $~lib/rt/tlsf/SETHEAD|inlined.1 + local.get $0 + local.set $11 + local.get $4 + local.set $10 + local.get $5 + local.set $9 + local.get $7 + local.set $8 + local.get $11 + local.get $10 + i32.const 4 + i32.shl + local.get $9 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $8 + i32.store offset=96 + end + local.get $7 + i32.eqz + if + block $~lib/rt/tlsf/GETSL|inlined.0 (result i32) + local.get $0 + local.set $9 + local.get $4 + local.set $8 + local.get $9 + local.get $8 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + end + local.set $8 + block $~lib/rt/tlsf/SETSL|inlined.1 + local.get $0 + local.set $11 + local.get $4 + local.set $10 + local.get $8 + i32.const 1 + local.get $5 + i32.shl + i32.const -1 + i32.xor + i32.and + local.tee $8 + local.set $9 + local.get $11 + local.get $10 + i32.const 2 + i32.shl + i32.add + local.get $9 + i32.store offset=4 + end + local.get $8 + i32.eqz + if + local.get $0 + local.get $0 + i32.load + i32.const 1 + local.get $4 + i32.shl + i32.const -1 + i32.xor + i32.and + i32.store + end + end + end ) - (func $~lib/allocator/arena/__mem_allocate (; 8 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/rt/tlsf/insertBlock (; 11 ;) (type $FUNCSIG$vii) (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 $9 i32) + (local $10 i32) + (local $11 i32) + (local $12 i32) + (local $13 i32) + local.get $1 + i32.eqz + if + i32.const 0 + i32.const 352 + i32.const 203 + i32.const 13 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.load + local.set $2 + local.get $2 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 352 + i32.const 205 + i32.const 13 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETRIGHT|inlined.0 (result i32) + local.get $1 + local.set $3 + local.get $3 + i32.const 16 + i32.add + local.get $3 + i32.load + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + end + local.set $4 + local.get $4 + i32.load + local.set $5 + local.get $5 + i32.const 1 + i32.and + if + local.get $2 + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.const 16 + i32.add + local.get $5 + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + local.set $3 + local.get $3 + i32.const 1073741808 + i32.lt_u + if + local.get $0 + local.get $4 + call $~lib/rt/tlsf/removeBlock + local.get $1 + local.get $2 + i32.const 3 + i32.and + local.get $3 + i32.or + local.tee $2 + i32.store + block $~lib/rt/tlsf/GETRIGHT|inlined.1 (result i32) + local.get $1 + local.set $6 + local.get $6 + i32.const 16 + i32.add + local.get $6 + i32.load + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + end + local.set $4 + local.get $4 + i32.load + local.set $5 + end + end + local.get $2 + i32.const 2 + i32.and + if + block $~lib/rt/tlsf/GETFREELEFT|inlined.0 (result i32) + local.get $1 + local.set $3 + local.get $3 + i32.const 4 + i32.sub + i32.load + end + local.set $3 + local.get $3 + i32.load + local.set $6 + local.get $6 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 352 + i32.const 226 + i32.const 15 + call $~lib/builtins/abort + unreachable + end + local.get $6 + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.const 16 + i32.add + local.get $2 + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + local.set $7 + local.get $7 + i32.const 1073741808 + i32.lt_u + if + local.get $0 + local.get $3 + call $~lib/rt/tlsf/removeBlock + local.get $3 + local.get $6 + i32.const 3 + i32.and + local.get $7 + i32.or + local.tee $2 + i32.store + local.get $3 + local.set $1 + end + end + local.get $4 + local.get $5 + i32.const 2 + i32.or + i32.store + local.get $2 + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.set $8 + local.get $8 + i32.const 16 + i32.ge_u + if (result i32) + local.get $8 + i32.const 1073741808 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 352 + i32.const 241 + i32.const 13 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 16 + i32.add + local.get $8 + i32.add + local.get $4 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 352 + i32.const 242 + i32.const 13 + call $~lib/builtins/abort + unreachable + end + local.get $4 + i32.const 4 + i32.sub + local.get $1 + i32.store + local.get $8 + i32.const 256 + i32.lt_u + if + i32.const 0 + local.set $9 + local.get $8 + i32.const 4 + i32.shr_u + local.set $10 + else + i32.const 31 + local.get $8 + i32.clz + i32.sub + local.set $9 + local.get $8 + local.get $9 + i32.const 4 + i32.sub + i32.shr_u + i32.const 1 + i32.const 4 + i32.shl + i32.xor + local.set $10 + local.get $9 + i32.const 8 + i32.const 1 + i32.sub + i32.sub + local.set $9 + end + local.get $9 + i32.const 23 + i32.lt_u + if (result i32) + local.get $10 + i32.const 16 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 352 + i32.const 258 + i32.const 13 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETHEAD|inlined.1 (result i32) + local.get $0 + local.set $3 + local.get $9 + local.set $6 + local.get $10 + local.set $7 + local.get $3 + local.get $6 + i32.const 4 + i32.shl + local.get $7 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + end + local.set $11 + local.get $1 + i32.const 0 + i32.store offset=16 + local.get $1 + local.get $11 + i32.store offset=20 + local.get $11 + if + local.get $11 + local.get $1 + i32.store offset=16 + end + block $~lib/rt/tlsf/SETHEAD|inlined.2 + local.get $0 + local.set $12 + local.get $9 + local.set $3 + local.get $10 + local.set $6 + local.get $1 + local.set $7 + local.get $12 + local.get $3 + i32.const 4 + i32.shl + local.get $6 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $7 + i32.store offset=96 + end + local.get $0 + local.get $0 + i32.load + i32.const 1 + local.get $9 + i32.shl + i32.or + i32.store + block $~lib/rt/tlsf/SETSL|inlined.2 + local.get $0 + local.set $3 + local.get $9 + local.set $6 + block $~lib/rt/tlsf/GETSL|inlined.1 (result i32) + local.get $0 + local.set $13 + local.get $9 + local.set $12 + local.get $13 + local.get $12 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + end + i32.const 1 + local.get $10 + i32.shl + i32.or + local.set $7 + local.get $3 + local.get $6 + i32.const 2 + i32.shl + i32.add + local.get $7 + i32.store offset=4 + end + ) + (func $~lib/rt/tlsf/addMemory (; 12 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) + local.get $1 + local.get $2 + i32.le_u + if (result i32) + local.get $1 + i32.const 15 + i32.and + i32.eqz + else + i32.const 0 + end + if (result i32) + local.get $2 + i32.const 15 + i32.and + i32.eqz + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 352 + i32.const 384 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETTAIL|inlined.0 (result i32) + local.get $0 + local.set $3 + local.get $3 + i32.load offset=1568 + end + local.set $4 + i32.const 0 + local.set $5 + local.get $4 + if + local.get $1 + local.get $4 + i32.const 16 + i32.add + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 352 + i32.const 394 + i32.const 15 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 16 + i32.sub + local.get $4 + i32.eq + if + local.get $1 + i32.const 16 + i32.sub + local.set $1 + local.get $4 + i32.load + local.set $5 + else + nop + end + else + local.get $1 + local.get $0 + i32.const 1572 + i32.add + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 352 + i32.const 406 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + end + local.get $2 + local.get $1 + i32.sub + local.set $6 + local.get $6 + i32.const 48 + i32.lt_u + if + i32.const 0 + return + end + local.get $6 + i32.const 2 + i32.const 16 + i32.mul + i32.sub + local.set $7 + local.get $1 + local.set $8 + local.get $8 + local.get $7 + i32.const 1 + i32.or + local.get $5 + i32.const 2 + i32.and + i32.or + i32.store + local.get $8 + i32.const 0 + i32.store offset=16 + local.get $8 + i32.const 0 + i32.store offset=20 + local.get $1 + local.get $6 + i32.add + i32.const 16 + i32.sub + local.set $4 + local.get $4 + i32.const 0 + i32.const 2 + i32.or + i32.store + block $~lib/rt/tlsf/SETTAIL|inlined.1 + local.get $0 + local.set $9 + local.get $4 + local.set $3 + local.get $9 + local.get $3 + i32.store offset=1568 + end + local.get $0 + local.get $8 + call $~lib/rt/tlsf/insertBlock + i32.const 1 + ) + (func $~lib/rt/tlsf/initializeRoot (; 13 ;) (type $FUNCSIG$v) + (local $0 i32) (local $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) (local $6 i32) - local.get $0 - i32.const 1073741824 - i32.gt_u - if - unreachable - end - global.get $~lib/allocator/arena/offset - local.set $1 - local.get $1 - local.get $0 - local.tee $2 - i32.const 1 - local.tee $3 - local.get $2 - local.get $3 - i32.gt_u - select + (local $7 i32) + (local $8 i32) + (local $9 i32) + global.get $~lib/builtins/HEAP_BASE + i32.const 15 i32.add - i32.const 7 - i32.add - i32.const 7 + i32.const 15 i32.const -1 i32.xor i32.and - local.set $4 + local.set $0 current_memory - local.set $5 - local.get $4 - local.get $5 + local.set $1 + local.get $0 + i32.const 1572 + i32.add + i32.const 65535 + i32.add + i32.const 65535 + i32.const -1 + i32.xor + i32.and i32.const 16 - i32.shl - i32.gt_u - if - local.get $4 + i32.shr_u + local.set $2 + local.get $2 + local.get $1 + i32.gt_s + if (result i32) + local.get $2 local.get $1 i32.sub - i32.const 65535 + grow_memory + i32.const 0 + i32.lt_s + else + i32.const 0 + end + if + unreachable + end + local.get $0 + local.set $3 + local.get $3 + i32.const 0 + i32.store + block $~lib/rt/tlsf/SETTAIL|inlined.0 + local.get $3 + local.set $5 + i32.const 0 + local.set $4 + local.get $5 + local.get $4 + i32.store offset=1568 + end + block $break|0 + i32.const 0 + local.set $4 + loop $repeat|0 + local.get $4 + i32.const 23 + i32.lt_u + i32.eqz + br_if $break|0 + block $~lib/rt/tlsf/SETSL|inlined.0 + local.get $3 + local.set $7 + local.get $4 + local.set $6 + i32.const 0 + local.set $5 + local.get $7 + local.get $6 + i32.const 2 + i32.shl + i32.add + local.get $5 + i32.store offset=4 + end + block $break|1 + i32.const 0 + local.set $5 + loop $repeat|1 + local.get $5 + i32.const 16 + i32.lt_u + i32.eqz + br_if $break|1 + block $~lib/rt/tlsf/SETHEAD|inlined.0 + local.get $3 + local.set $9 + local.get $4 + local.set $8 + local.get $5 + local.set $7 + i32.const 0 + local.set $6 + local.get $9 + local.get $8 + i32.const 4 + i32.shl + local.get $7 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $6 + i32.store offset=96 + end + local.get $5 + i32.const 1 + i32.add + local.set $5 + br $repeat|1 + unreachable + end + unreachable + end + local.get $4 + i32.const 1 + i32.add + local.set $4 + br $repeat|0 + unreachable + end + unreachable + end + local.get $3 + local.get $0 + i32.const 1572 + i32.add + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + current_memory + i32.const 16 + i32.shl + call $~lib/rt/tlsf/addMemory + drop + local.get $3 + global.set $~lib/rt/tlsf/ROOT + ) + (func $~lib/rt/tlsf/prepareSize (; 14 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + local.get $0 + i32.const 1073741808 + i32.ge_u + if + i32.const 400 + i32.const 352 + i32.const 446 + i32.const 29 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + local.tee $1 + i32.const 16 + local.tee $2 + local.get $1 + local.get $2 + i32.gt_u + select + ) + (func $~lib/rt/tlsf/searchBlock (; 15 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result 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 $1 + i32.const 256 + i32.lt_u + if + i32.const 0 + local.set $2 + local.get $1 + i32.const 4 + i32.shr_u + local.set $3 + else + local.get $1 + i32.const 536870904 + i32.lt_u + if (result i32) + local.get $1 + i32.const 1 + i32.const 27 + local.get $1 + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + else + local.get $1 + end + local.set $4 + i32.const 31 + local.get $4 + i32.clz + i32.sub + local.set $2 + local.get $4 + local.get $2 + i32.const 4 + i32.sub + i32.shr_u + i32.const 1 + i32.const 4 + i32.shl + i32.xor + local.set $3 + local.get $2 + i32.const 8 + i32.const 1 + i32.sub + i32.sub + local.set $2 + end + local.get $2 + i32.const 23 + i32.lt_u + if (result i32) + local.get $3 + i32.const 16 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 352 + i32.const 336 + i32.const 13 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETSL|inlined.2 (result i32) + local.get $0 + local.set $5 + local.get $2 + local.set $4 + local.get $5 + local.get $4 + i32.const 2 + i32.shl i32.add - i32.const 65535 + i32.load offset=4 + end + i32.const 0 + i32.const -1 + i32.xor + local.get $3 + i32.shl + i32.and + local.set $6 + local.get $6 + i32.eqz + if + local.get $0 + i32.load + i32.const 0 i32.const -1 i32.xor - i32.and - i32.const 16 - i32.shr_u - local.set $2 - local.get $5 - local.tee $3 local.get $2 - local.tee $6 - local.get $3 - local.get $6 - i32.gt_s - select - local.set $3 + i32.const 1 + i32.add + i32.shl + i32.and + local.set $4 + local.get $4 + i32.eqz + if + i32.const 0 + local.set $7 + else + local.get $4 + i32.ctz + local.set $2 + block $~lib/rt/tlsf/GETSL|inlined.3 (result i32) + local.get $0 + local.set $8 + local.get $2 + local.set $5 + local.get $8 + local.get $5 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + end + local.set $6 + local.get $6 + i32.eqz + if + i32.const 0 + i32.const 352 + i32.const 349 + i32.const 17 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETHEAD|inlined.2 (result i32) + local.get $0 + local.set $9 + local.get $2 + local.set $8 + local.get $6 + i32.ctz + local.set $5 + local.get $9 + local.get $8 + i32.const 4 + i32.shl + local.get $5 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + end + local.set $7 + end + else + block $~lib/rt/tlsf/GETHEAD|inlined.3 (result i32) + local.get $0 + local.set $8 + local.get $2 + local.set $5 + local.get $6 + i32.ctz + local.set $4 + local.get $8 + local.get $5 + i32.const 4 + i32.shl + local.get $4 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + end + local.set $7 + end + local.get $7 + ) + (func $~lib/rt/tlsf/growMemory (; 16 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + current_memory + local.set $2 + local.get $1 + i32.const 65535 + i32.add + i32.const 65535 + i32.const -1 + i32.xor + i32.and + i32.const 16 + i32.shr_u + local.set $3 + local.get $2 + local.tee $4 + local.get $3 + local.tee $5 + local.get $4 + local.get $5 + i32.gt_s + select + local.set $6 + local.get $6 + grow_memory + i32.const 0 + i32.lt_s + if local.get $3 grow_memory i32.const 0 i32.lt_s if - local.get $2 - grow_memory - i32.const 0 - i32.lt_s - if - unreachable - end + unreachable end end - local.get $4 - global.set $~lib/allocator/arena/offset - local.get $1 - ) - (func $~lib/memory/memory.allocate (; 9 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + current_memory + local.set $7 local.get $0 - call $~lib/allocator/arena/__mem_allocate - return + local.get $2 + i32.const 16 + i32.shl + local.get $7 + i32.const 16 + i32.shl + call $~lib/rt/tlsf/addMemory + drop ) - (func $~lib/util/runtime/allocate (; 10 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - (local $1 i32) - local.get $0 - call $~lib/util/runtime/adjust - call $~lib/memory/memory.allocate - local.set $1 + (func $~lib/rt/tlsf/prepareBlock (; 17 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) local.get $1 - global.get $~lib/util/runtime/HEADER_MAGIC - i32.store - local.get $1 - local.get $0 - i32.store offset=4 - local.get $1 - i32.const 0 - i32.store offset=8 - local.get $1 - i32.const 0 - i32.store offset=12 - local.get $1 - global.get $~lib/util/runtime/HEADER_SIZE - i32.add - ) - (func $~lib/collector/dummy/__ref_register (; 11 ;) (type $FUNCSIG$vi) (param $0 i32) - nop - ) - (func $~lib/util/runtime/register (; 12 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - local.get $0 - global.get $~lib/memory/HEAP_BASE - i32.gt_u + i32.load + local.set $3 + local.get $2 + i32.const 15 + i32.and + i32.eqz i32.eqz if i32.const 0 - i32.const 296 - i32.const 129 - i32.const 4 + i32.const 352 + i32.const 363 + i32.const 13 call $~lib/builtins/abort unreachable end - local.get $0 - global.get $~lib/util/runtime/HEADER_SIZE + local.get $3 + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.get $2 i32.sub + local.set $4 + local.get $4 + i32.const 32 + i32.ge_u + if + local.get $1 + local.get $2 + local.get $3 + i32.const 2 + i32.and + i32.or + i32.store + local.get $1 + i32.const 16 + i32.add + local.get $2 + i32.add + local.set $5 + local.get $5 + local.get $4 + i32.const 16 + i32.sub + i32.const 1 + i32.or + i32.store + local.get $0 + local.get $5 + call $~lib/rt/tlsf/insertBlock + else + local.get $1 + local.get $3 + i32.const 1 + i32.const -1 + i32.xor + i32.and + i32.store + block $~lib/rt/tlsf/GETRIGHT|inlined.3 (result i32) + local.get $1 + local.set $5 + local.get $5 + i32.const 16 + i32.add + local.get $5 + i32.load + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + end + block $~lib/rt/tlsf/GETRIGHT|inlined.2 (result i32) + local.get $1 + local.set $5 + local.get $5 + i32.const 16 + i32.add + local.get $5 + i32.load + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + end + i32.load + i32.const 2 + i32.const -1 + i32.xor + i32.and + i32.store + end + ) + (func $~lib/rt/tlsf/allocateBlock (; 18 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + local.get $1 + call $~lib/rt/tlsf/prepareSize + local.set $2 + local.get $0 + local.get $2 + call $~lib/rt/tlsf/searchBlock + local.set $3 + local.get $3 + i32.eqz + if + local.get $0 + local.get $2 + call $~lib/rt/tlsf/growMemory + local.get $0 + local.get $2 + call $~lib/rt/tlsf/searchBlock + local.set $3 + local.get $3 + i32.eqz + if + i32.const 0 + i32.const 352 + i32.const 476 + i32.const 15 + call $~lib/builtins/abort + unreachable + end + end + local.get $3 + i32.load + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.get $2 + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 352 + i32.const 478 + i32.const 13 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const 0 + i32.store offset=4 + local.get $3 + local.get $1 + i32.store offset=12 + local.get $0 + local.get $3 + call $~lib/rt/tlsf/removeBlock + local.get $0 + local.get $3 + local.get $2 + call $~lib/rt/tlsf/prepareBlock + local.get $3 + ) + (func $~lib/rt/tlsf/__alloc (; 19 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + global.get $~lib/rt/tlsf/ROOT local.set $2 local.get $2 - i32.load - global.get $~lib/util/runtime/HEADER_MAGIC + i32.eqz + if + call $~lib/rt/tlsf/initializeRoot + global.get $~lib/rt/tlsf/ROOT + local.set $2 + end + local.get $2 + local.get $0 + call $~lib/rt/tlsf/allocateBlock + local.set $3 + local.get $3 + local.get $1 + i32.store offset=8 + local.get $3 + i32.const 16 + i32.add + ) + (func $~lib/rt/purerc/increment (; 20 ;) (type $FUNCSIG$vi) (param $0 i32) + (local $1 i32) + local.get $0 + i32.load offset=4 + local.set $1 + local.get $1 + i32.const 268435455 + i32.const -1 + i32.xor + i32.and + local.get $1 + i32.const 1 + i32.add + i32.const 268435455 + i32.const -1 + i32.xor + i32.and i32.eq i32.eqz if i32.const 0 - i32.const 296 - i32.const 131 - i32.const 4 + i32.const 456 + i32.const 103 + i32.const 2 call $~lib/builtins/abort unreachable end - local.get $2 + local.get $0 local.get $1 - i32.store + i32.const 1 + i32.add + i32.store offset=4 local.get $0 - call $~lib/collector/dummy/__ref_register + call $~lib/rt/purerc/onIncrement + local.get $0 + i32.load + i32.const 1 + i32.and + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 456 + i32.const 106 + i32.const 13 + call $~lib/builtins/abort + unreachable + end + ) + (func $~lib/rt/purerc/__retain (; 21 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + local.get $0 + global.get $~lib/builtins/HEAP_BASE + i32.gt_u + if + local.get $0 + i32.const 16 + i32.sub + call $~lib/rt/purerc/increment + end local.get $0 ) - (func $~lib/collector/dummy/__ref_link (; 13 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) - nop - ) - (func $~lib/collector/dummy/__ref_unlink (; 14 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) - nop - ) - (func $~lib/memory/memory.copy (; 15 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/memory/memory.copy (; 22 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) + (local $6 i32) block $~lib/util/memory/memmove|inlined.0 local.get $0 + local.set $5 local.get $1 + local.set $4 + local.get $2 + local.set $3 + local.get $5 + local.get $4 i32.eq if br $~lib/util/memory/memmove|inlined.0 end - local.get $0 - local.get $1 + local.get $5 + local.get $4 i32.lt_u if - local.get $1 + local.get $4 i32.const 7 i32.and - local.get $0 + local.get $5 i32.const 7 i32.and i32.eq if block $break|0 loop $continue|0 - local.get $0 + local.get $5 i32.const 7 i32.and if - block - local.get $2 - i32.eqz - if - br $~lib/util/memory/memmove|inlined.0 - end - local.get $2 - i32.const 1 - i32.sub - local.set $2 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end - i32.load8_u - i32.store8 + local.get $3 + i32.eqz + if + br $~lib/util/memory/memmove|inlined.0 end + local.get $3 + i32.const 1 + i32.sub + local.set $3 + block (result i32) + local.get $5 + local.tee $6 + i32.const 1 + i32.add + local.set $5 + local.get $6 + end + block (result i32) + local.get $4 + local.tee $6 + i32.const 1 + i32.add + local.set $4 + local.get $6 + end + i32.load8_u + i32.store8 br $continue|0 end end end block $break|1 loop $continue|1 - local.get $2 + local.get $3 i32.const 8 i32.ge_u if - block - local.get $0 - local.get $1 - i64.load - i64.store - local.get $2 - i32.const 8 - i32.sub - local.set $2 - local.get $0 - i32.const 8 - i32.add - local.set $0 - local.get $1 - i32.const 8 - i32.add - local.set $1 - end + local.get $5 + local.get $4 + i64.load + i64.store + local.get $3 + i32.const 8 + i32.sub + local.set $3 + local.get $5 + i32.const 8 + i32.add + local.set $5 + local.get $4 + i32.const 8 + i32.add + local.set $4 br $continue|1 end end @@ -370,95 +1609,89 @@ end block $break|2 loop $continue|2 - local.get $2 + local.get $3 if - block - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end - i32.load8_u - i32.store8 - local.get $2 + block (result i32) + local.get $5 + local.tee $6 i32.const 1 - i32.sub - local.set $2 + i32.add + local.set $5 + local.get $6 end + block (result i32) + local.get $4 + local.tee $6 + i32.const 1 + i32.add + local.set $4 + local.get $6 + end + i32.load8_u + i32.store8 + local.get $3 + i32.const 1 + i32.sub + local.set $3 br $continue|2 end end end else - local.get $1 + local.get $4 i32.const 7 i32.and - local.get $0 + local.get $5 i32.const 7 i32.and i32.eq if block $break|3 loop $continue|3 - local.get $0 - local.get $2 + local.get $5 + local.get $3 i32.add i32.const 7 i32.and if - block - local.get $2 - i32.eqz - if - br $~lib/util/memory/memmove|inlined.0 - end - local.get $0 - local.get $2 - i32.const 1 - i32.sub - local.tee $2 - i32.add - local.get $1 - local.get $2 - i32.add - i32.load8_u - i32.store8 + local.get $3 + i32.eqz + if + br $~lib/util/memory/memmove|inlined.0 end + local.get $5 + local.get $3 + i32.const 1 + i32.sub + local.tee $3 + i32.add + local.get $4 + local.get $3 + i32.add + i32.load8_u + i32.store8 br $continue|3 end end end block $break|4 loop $continue|4 - local.get $2 + local.get $3 i32.const 8 i32.ge_u if - block - local.get $2 - i32.const 8 - i32.sub - local.set $2 - local.get $0 - local.get $2 - i32.add - local.get $1 - local.get $2 - i32.add - i64.load - i64.store - end + local.get $3 + i32.const 8 + i32.sub + local.set $3 + local.get $5 + local.get $3 + i32.add + local.get $4 + local.get $3 + i32.add + i64.load + i64.store br $continue|4 end end @@ -466,16 +1699,16 @@ end block $break|5 loop $continue|5 - local.get $2 + local.get $3 if - local.get $0 - local.get $2 + local.get $5 + local.get $3 i32.const 1 i32.sub - local.tee $2 + local.tee $3 i32.add - local.get $1 - local.get $2 + local.get $4 + local.get $3 i32.add i32.load8_u i32.store8 @@ -486,49 +1719,25 @@ end end ) - (func $~lib/util/runtime/makeArray (; 16 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + (func $~lib/rt/common/__allocArray (; 23 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) (local $4 i32) (local $5 i32) (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) i32.const 16 - call $~lib/util/runtime/allocate local.get $2 - call $~lib/util/runtime/register + call $~lib/rt/tlsf/__alloc local.set $4 local.get $0 local.get $1 i32.shl local.set $5 local.get $5 - call $~lib/util/runtime/allocate i32.const 15 - call $~lib/util/runtime/register + call $~lib/rt/tlsf/__alloc local.set $6 local.get $4 - local.tee $7 local.get $6 - local.tee $8 - local.get $7 - i32.load - local.tee $9 - i32.ne - if (result i32) - local.get $9 - if - local.get $9 - local.get $7 - call $~lib/collector/dummy/__ref_unlink - end - local.get $8 - local.get $7 - call $~lib/collector/dummy/__ref_link - local.get $8 - else - local.get $8 - end + call $~lib/rt/purerc/__retain i32.store local.get $4 local.get $6 @@ -548,42 +1757,285 @@ end local.get $4 ) - (func $std/array-literal/Ref#constructor (; 17 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $std/array-literal/Ref#constructor (; 24 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.eqz if i32.const 0 - call $~lib/util/runtime/allocate i32.const 19 - call $~lib/util/runtime/register + call $~lib/rt/tlsf/__alloc + call $~lib/rt/purerc/__retain local.set $0 end local.get $0 ) - (func $~lib/array/Array#get:length (; 18 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/array/Array#get:length (; 25 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.load offset=12 ) - (func $std/array-literal/RefWithCtor#constructor (; 19 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $std/array-literal/RefWithCtor#constructor (; 26 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.eqz if i32.const 0 - call $~lib/util/runtime/allocate i32.const 21 - call $~lib/util/runtime/register + call $~lib/rt/tlsf/__alloc + call $~lib/rt/purerc/__retain local.set $0 end local.get $0 ) - (func $~lib/array/Array#get:length (; 20 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/array/Array#get:length (; 27 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.load offset=12 ) - (func $start:std/array-literal (; 21 ;) (type $FUNCSIG$v) + (func $~lib/rt/tlsf/freeBlock (; 28 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (local $2 i32) + local.get $1 + i32.load + local.set $2 + local.get $2 + i32.const 1 + i32.and + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 352 + i32.const 530 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.get $2 + i32.const 1 + i32.or + i32.store + local.get $0 + local.get $1 + call $~lib/rt/tlsf/insertBlock + local.get $1 + call $~lib/rt/tlsf/onFree + ) + (func $~lib/rt/common/__typeinfo (; 29 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + global.get $~lib/builtins/RTTI_BASE + local.set $1 + local.get $0 + i32.eqz + if (result i32) + i32.const 1 + else + local.get $0 + local.get $1 + i32.load + i32.gt_u + end + if + i32.const 136 + i32.const 512 + i32.const 55 + i32.const 34 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.get $0 + i32.const 8 + i32.mul + i32.add + i32.load + ) + (func $~lib/rt/purerc/growRoots (; 30 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + global.get $~lib/rt/purerc/ROOTS + local.set $0 + global.get $~lib/rt/purerc/CUR + local.get $0 + i32.sub + local.set $1 + local.get $1 + i32.const 2 + i32.mul + local.tee $2 + i32.const 64 + i32.const 2 + i32.shl + local.tee $3 + local.get $2 + local.get $3 + i32.gt_u + select + local.set $4 + local.get $4 + i32.const 0 + call $~lib/rt/tlsf/__alloc + local.set $5 + local.get $5 + local.get $0 + local.get $1 + call $~lib/memory/memory.copy + local.get $5 + global.set $~lib/rt/purerc/ROOTS + local.get $5 + local.get $1 + i32.add + global.set $~lib/rt/purerc/CUR + local.get $5 + local.get $4 + i32.add + global.set $~lib/rt/purerc/END + ) + (func $~lib/rt/purerc/appendRoot (; 31 ;) (type $FUNCSIG$vi) (param $0 i32) + (local $1 i32) + global.get $~lib/rt/purerc/CUR + local.set $1 + local.get $1 + global.get $~lib/rt/purerc/END + i32.ge_u + if + call $~lib/rt/purerc/growRoots + global.get $~lib/rt/purerc/CUR + local.set $1 + end + local.get $1 + local.get $0 + i32.store + local.get $1 + i32.const 1 + i32.add + global.set $~lib/rt/purerc/CUR + ) + (func $~lib/rt/purerc/decrement (; 32 ;) (type $FUNCSIG$vi) (param $0 i32) + (local $1 i32) + (local $2 i32) + local.get $0 + i32.load offset=4 + local.set $1 + local.get $1 + i32.const 268435455 + i32.and + local.set $2 + local.get $0 + call $~lib/rt/purerc/onDecrement + local.get $0 + i32.load + i32.const 1 + i32.and + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 456 + i32.const 114 + i32.const 13 + call $~lib/builtins/abort + unreachable + end + local.get $2 + i32.const 1 + i32.eq + if + local.get $0 + i32.const 16 + i32.add + i32.const 1 + call $~lib/builtins/__visit_members + local.get $1 + i32.const -2147483648 + i32.and + i32.eqz + if + global.get $~lib/rt/tlsf/ROOT + local.get $0 + call $~lib/rt/tlsf/freeBlock + else + local.get $0 + i32.const -2147483648 + i32.const 0 + i32.or + i32.const 0 + i32.or + i32.store offset=4 + end + else + local.get $2 + i32.const 0 + i32.gt_u + i32.eqz + if + i32.const 0 + i32.const 456 + i32.const 123 + i32.const 15 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load offset=8 + call $~lib/rt/common/__typeinfo + i32.const 8 + i32.and + i32.eqz + if + local.get $0 + i32.const -2147483648 + i32.const 805306368 + i32.or + local.get $2 + i32.const 1 + i32.sub + i32.or + i32.store offset=4 + local.get $1 + i32.const -2147483648 + i32.and + i32.eqz + if + local.get $0 + call $~lib/rt/purerc/appendRoot + end + else + local.get $0 + local.get $1 + i32.const 268435455 + i32.const -1 + i32.xor + i32.and + local.get $2 + i32.const 1 + i32.sub + i32.or + i32.store offset=4 + end + end + ) + (func $~lib/rt/purerc/__release (; 33 ;) (type $FUNCSIG$vi) (param $0 i32) + local.get $0 + global.get $~lib/builtins/HEAP_BASE + i32.gt_u + if + local.get $0 + i32.const 16 + i32.sub + call $~lib/rt/purerc/decrement + end + ) + (func $start:std/array-literal (; 34 ;) (type $FUNCSIG$v) + (local $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) global.get $std/array-literal/staticArrayI8 call $~lib/array/Array#get:length i32.const 3 @@ -707,30 +2159,20 @@ call $~lib/builtins/abort unreachable end - global.get $~lib/memory/HEAP_BASE - i32.const 7 - i32.add - i32.const 7 - i32.const -1 - i32.xor - i32.and - global.set $~lib/allocator/arena/startOffset - global.get $~lib/allocator/arena/startOffset - global.set $~lib/allocator/arena/offset block (result i32) i32.const 3 i32.const 0 i32.const 17 i32.const 0 - call $~lib/util/runtime/makeArray - local.set $0 - local.get $0 - i32.load offset=4 + call $~lib/rt/common/__allocArray local.set $1 local.get $1 + i32.load offset=4 + local.set $0 + local.get $0 global.get $std/array-literal/i i32.store8 - local.get $1 + local.get $0 block (result i32) global.get $std/array-literal/i i32.const 1 @@ -740,7 +2182,7 @@ local.get $2 end i32.store8 offset=1 - local.get $1 + local.get $0 block (result i32) global.get $std/array-literal/i i32.const 1 @@ -750,8 +2192,9 @@ local.get $2 end i32.store8 offset=2 - local.get $0 + local.get $1 end + call $~lib/rt/purerc/__retain global.set $std/array-literal/dynamicArrayI8 global.get $std/array-literal/dynamicArrayI8 call $~lib/array/Array#get:length @@ -815,15 +2258,15 @@ i32.const 2 i32.const 18 i32.const 0 - call $~lib/util/runtime/makeArray - local.set $1 - local.get $1 - i32.load offset=4 + call $~lib/rt/common/__allocArray local.set $0 local.get $0 + i32.load offset=4 + local.set $1 + local.get $1 global.get $std/array-literal/i i32.store - local.get $0 + local.get $1 block (result i32) global.get $std/array-literal/i i32.const 1 @@ -833,7 +2276,7 @@ local.get $2 end i32.store offset=4 - local.get $0 + local.get $1 block (result i32) global.get $std/array-literal/i i32.const 1 @@ -843,8 +2286,9 @@ local.get $2 end i32.store offset=8 - local.get $1 + local.get $0 end + call $~lib/rt/purerc/__retain global.set $std/array-literal/dynamicArrayI32 global.get $std/array-literal/dynamicArrayI32 call $~lib/array/Array#get:length @@ -906,46 +2350,32 @@ i32.const 2 i32.const 20 i32.const 0 - call $~lib/util/runtime/makeArray - local.set $0 - local.get $0 - i32.load offset=4 + call $~lib/rt/common/__allocArray local.set $1 local.get $1 - block (result i32) - i32.const 0 - call $std/array-literal/Ref#constructor - local.set $2 - local.get $2 - local.get $0 - call $~lib/collector/dummy/__ref_link - local.get $2 - end - i32.store - local.get $1 - block (result i32) - i32.const 0 - call $std/array-literal/Ref#constructor - local.set $2 - local.get $2 - local.get $0 - call $~lib/collector/dummy/__ref_link - local.get $2 - end - i32.store offset=4 - local.get $1 - block (result i32) - i32.const 0 - call $std/array-literal/Ref#constructor - local.set $2 - local.get $2 - local.get $0 - call $~lib/collector/dummy/__ref_link - local.get $2 - end - i32.store offset=8 + i32.load offset=4 + local.set $0 local.get $0 + i32.const 0 + call $std/array-literal/Ref#constructor + local.tee $2 + call $~lib/rt/purerc/__retain + i32.store + local.get $0 + i32.const 0 + call $std/array-literal/Ref#constructor + local.tee $3 + call $~lib/rt/purerc/__retain + i32.store offset=4 + local.get $0 + i32.const 0 + call $std/array-literal/Ref#constructor + local.tee $4 + call $~lib/rt/purerc/__retain + i32.store offset=8 + local.get $1 end + call $~lib/rt/purerc/__retain global.set $std/array-literal/dynamicArrayRef global.get $std/array-literal/dynamicArrayRef call $~lib/array/Array#get:length @@ -965,46 +2395,32 @@ i32.const 2 i32.const 22 i32.const 0 - call $~lib/util/runtime/makeArray - local.set $1 - local.get $1 - i32.load offset=4 + call $~lib/rt/common/__allocArray local.set $0 local.get $0 - block (result i32) - i32.const 0 - call $std/array-literal/RefWithCtor#constructor - local.set $2 - local.get $2 - local.get $1 - call $~lib/collector/dummy/__ref_link - local.get $2 - end - i32.store - local.get $0 - block (result i32) - i32.const 0 - call $std/array-literal/RefWithCtor#constructor - local.set $2 - local.get $2 - local.get $1 - call $~lib/collector/dummy/__ref_link - local.get $2 - end - i32.store offset=4 - local.get $0 - block (result i32) - i32.const 0 - call $std/array-literal/RefWithCtor#constructor - local.set $2 - local.get $2 - local.get $1 - call $~lib/collector/dummy/__ref_link - local.get $2 - end - i32.store offset=8 + i32.load offset=4 + local.set $1 local.get $1 + i32.const 0 + call $std/array-literal/RefWithCtor#constructor + local.tee $5 + call $~lib/rt/purerc/__retain + i32.store + local.get $1 + i32.const 0 + call $std/array-literal/RefWithCtor#constructor + local.tee $6 + call $~lib/rt/purerc/__retain + i32.store offset=4 + local.get $1 + i32.const 0 + call $std/array-literal/RefWithCtor#constructor + local.tee $7 + call $~lib/rt/purerc/__retain + i32.store offset=8 + local.get $0 end + call $~lib/rt/purerc/__retain global.set $std/array-literal/dynamicArrayRefWithCtor global.get $std/array-literal/dynamicArrayRefWithCtor call $~lib/array/Array#get:length @@ -1019,238 +2435,506 @@ call $~lib/builtins/abort unreachable end - ) - (func $~lib/runtime/runtime.instanceof (; 22 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - local.get $0 - global.get $~lib/util/runtime/HEADER_SIZE - i32.sub - i32.load - local.set $2 - global.get $~lib/runtime/RTTI_BASE - local.set $3 + global.get $std/array-literal/emptyArrayI32 + call $~lib/rt/purerc/__release + global.get $std/array-literal/dynamicArrayI8 + call $~lib/rt/purerc/__release + global.get $std/array-literal/dynamicArrayI32 + call $~lib/rt/purerc/__release + global.get $std/array-literal/dynamicArrayRef + call $~lib/rt/purerc/__release + global.get $std/array-literal/dynamicArrayRefWithCtor + call $~lib/rt/purerc/__release local.get $2 - if (result i32) - local.get $2 - local.get $3 - i32.load - i32.le_u - else - i32.const 0 - end - if - loop $continue|0 - local.get $2 - local.get $1 - i32.eq - if - i32.const 1 - return - end - local.get $3 - local.get $2 - i32.const 8 - i32.mul - i32.add - i32.load offset=4 - local.tee $2 - br_if $continue|0 - end - end - i32.const 0 - ) - (func $~lib/runtime/runtime.flags (; 23 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - (local $1 i32) - global.get $~lib/runtime/RTTI_BASE - local.set $1 - local.get $0 - i32.eqz - if (result i32) - i32.const 1 - else - local.get $0 - local.get $1 - i32.load - i32.gt_u - end - if (result i32) - unreachable - else - local.get $1 - local.get $0 - i32.const 8 - i32.mul - i32.add - i32.load - end - ) - (func $~lib/runtime/runtime.newObject (; 24 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - local.get $0 - call $~lib/util/runtime/allocate - local.get $1 - call $~lib/util/runtime/register - ) - (func $~lib/runtime/runtime.newString (; 25 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - local.get $0 - i32.const 1 - i32.shl - i32.const 16 - call $~lib/runtime/runtime.newObject - ) - (func $~lib/runtime/runtime.newArrayBuffer (; 26 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - local.get $0 - i32.const 15 - call $~lib/runtime/runtime.newObject - ) - (func $~lib/arraybuffer/ArrayBuffer#get:byteLength (; 27 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - local.get $0 - global.get $~lib/util/runtime/HEADER_SIZE - i32.sub - i32.load offset=4 - ) - (func $~lib/runtime/runtime.newArray (; 28 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result 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 - call $~lib/runtime/runtime.flags - local.set $2 - local.get $2 - i32.const 16 - i32.div_u - i32.const 31 - i32.and - local.set $3 - local.get $1 - i32.eqz - if - i32.const 0 - local.tee $4 - call $~lib/runtime/runtime.newArrayBuffer - local.set $1 - else - local.get $1 - call $~lib/arraybuffer/ArrayBuffer#get:byteLength - local.set $4 - end - local.get $0 - i32.const 16 - call $~lib/runtime/runtime.newObject - local.set $5 - local.get $5 - local.tee $6 - local.get $1 - local.tee $7 - local.get $6 - i32.load - local.tee $8 - i32.ne - if (result i32) - local.get $8 - if - local.get $8 - local.get $6 - call $~lib/collector/dummy/__ref_unlink - end - local.get $7 - local.get $6 - call $~lib/collector/dummy/__ref_link - local.get $7 - else - local.get $7 - end - i32.store - local.get $5 - local.get $1 - i32.store offset=4 - local.get $5 - local.get $4 - i32.store offset=8 - local.get $5 - local.get $4 + call $~lib/rt/purerc/__release local.get $3 - i32.shr_u - i32.store offset=12 - local.get $2 - i32.const 1024 - i32.and - if - local.get $1 - local.set $6 - local.get $6 - local.get $4 - i32.add - local.set $8 - block $break|0 - loop $continue|0 - local.get $6 - local.get $8 - i32.lt_u - if - block - local.get $6 - i32.load - local.set $7 - local.get $7 - if - local.get $7 - local.get $5 - call $~lib/collector/dummy/__ref_link - end - local.get $6 - i32.const 4 - i32.add - local.set $6 - end - br $continue|0 - end - end - end - end + call $~lib/rt/purerc/__release + local.get $4 + call $~lib/rt/purerc/__release local.get $5 - ) - (func $~lib/runtime/Root#constructor (; 29 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - local.get $0 - i32.eqz - if - i32.const 0 - call $~lib/util/runtime/allocate - i32.const 23 - call $~lib/util/runtime/register - local.set $0 - end - local.get $0 - ) - (func $~lib/runtime/runtime.retain (; 30 ;) (type $FUNCSIG$vi) (param $0 i32) - local.get $0 - global.get $~lib/runtime/ROOT - call $~lib/collector/dummy/__ref_link - ) - (func $~lib/runtime/runtime.release (; 31 ;) (type $FUNCSIG$vi) (param $0 i32) - local.get $0 - global.get $~lib/runtime/ROOT - call $~lib/collector/dummy/__ref_unlink - ) - (func $~lib/collector/dummy/__ref_collect (; 32 ;) (type $FUNCSIG$v) - nop - ) - (func $~lib/runtime/runtime.collect (; 33 ;) (type $FUNCSIG$v) - call $~lib/collector/dummy/__ref_collect - ) - (func $~lib/runtime/runtime#constructor (; 34 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - unreachable + call $~lib/rt/purerc/__release + local.get $6 + call $~lib/rt/purerc/__release + local.get $7 + call $~lib/rt/purerc/__release ) (func $start (; 35 ;) (type $FUNCSIG$v) call $start:std/array-literal - i32.const 0 - call $~lib/runtime/Root#constructor - global.set $~lib/runtime/ROOT ) - (func $null (; 36 ;) (type $FUNCSIG$v) + (func $~lib/array/Array#__visit_impl (; 36 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + nop + ) + (func $~lib/array/Array#__visit_impl (; 37 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + nop + ) + (func $~lib/rt/purerc/markGray (; 38 ;) (type $FUNCSIG$vi) (param $0 i32) + (local $1 i32) + local.get $0 + i32.load offset=4 + local.set $1 + local.get $1 + i32.const 1879048192 + i32.and + i32.const 268435456 + i32.ne + if + local.get $0 + local.get $1 + i32.const 1879048192 + i32.const -1 + i32.xor + i32.and + i32.const 268435456 + i32.or + i32.store offset=4 + local.get $0 + i32.const 16 + i32.add + i32.const 2 + call $~lib/builtins/__visit_members + end + ) + (func $~lib/rt/purerc/scanBlack (; 39 ;) (type $FUNCSIG$vi) (param $0 i32) + local.get $0 + local.get $0 + i32.load offset=4 + i32.const 1879048192 + i32.const -1 + i32.xor + i32.and + i32.const 0 + i32.or + i32.store offset=4 + local.get $0 + i32.const 16 + i32.add + i32.const 4 + call $~lib/builtins/__visit_members + ) + (func $~lib/rt/purerc/scan (; 40 ;) (type $FUNCSIG$vi) (param $0 i32) + (local $1 i32) + local.get $0 + i32.load offset=4 + local.set $1 + local.get $1 + i32.const 1879048192 + i32.and + i32.const 268435456 + i32.eq + if + local.get $1 + i32.const 268435455 + i32.and + i32.const 0 + i32.gt_u + if + local.get $0 + call $~lib/rt/purerc/scanBlack + else + local.get $0 + local.get $1 + i32.const 1879048192 + i32.const -1 + i32.xor + i32.and + i32.const 536870912 + i32.or + i32.store offset=4 + local.get $0 + i32.const 16 + i32.add + i32.const 3 + call $~lib/builtins/__visit_members + end + end + ) + (func $~lib/rt/purerc/collectWhite (; 41 ;) (type $FUNCSIG$vi) (param $0 i32) + (local $1 i32) + local.get $0 + i32.load offset=4 + local.set $1 + local.get $1 + i32.const 1879048192 + i32.and + i32.const 536870912 + i32.eq + if (result i32) + local.get $1 + i32.const -2147483648 + i32.and + i32.eqz + else + i32.const 0 + end + if + local.get $0 + i32.const 16 + i32.add + i32.const 5 + call $~lib/builtins/__visit_members + end + global.get $~lib/rt/tlsf/ROOT + local.get $0 + call $~lib/rt/tlsf/freeBlock + ) + (func $~lib/rt/purerc/__visit (; 42 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + local.get $0 + global.get $~lib/builtins/HEAP_BASE + i32.lt_u + if + return + end + local.get $0 + i32.const 16 + i32.sub + local.set $2 + block $break|0 + block $case5|0 + block $case4|0 + block $case3|0 + block $case2|0 + block $case1|0 + block $case0|0 + local.get $1 + local.set $3 + local.get $3 + i32.const 1 + i32.eq + br_if $case0|0 + local.get $3 + i32.const 2 + i32.eq + br_if $case1|0 + local.get $3 + i32.const 3 + i32.eq + br_if $case2|0 + local.get $3 + i32.const 4 + i32.eq + br_if $case3|0 + local.get $3 + i32.const 5 + i32.eq + br_if $case4|0 + br $case5|0 + end + block + local.get $2 + call $~lib/rt/purerc/decrement + br $break|0 + unreachable + end + unreachable + end + block + local.get $2 + i32.load offset=4 + i32.const 268435455 + i32.and + i32.const 0 + i32.gt_u + i32.eqz + if + i32.const 0 + i32.const 456 + i32.const 74 + i32.const 17 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.get $2 + i32.load offset=4 + i32.const 1 + i32.sub + i32.store offset=4 + local.get $2 + call $~lib/rt/purerc/markGray + br $break|0 + unreachable + end + unreachable + end + block + local.get $2 + call $~lib/rt/purerc/scan + br $break|0 + unreachable + end + unreachable + end + block + local.get $2 + i32.load offset=4 + local.set $3 + local.get $3 + i32.const 268435455 + i32.const -1 + i32.xor + i32.and + local.get $3 + i32.const 1 + i32.add + i32.const 268435455 + i32.const -1 + i32.xor + i32.and + i32.eq + i32.eqz + if + i32.const 0 + i32.const 456 + i32.const 85 + i32.const 6 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.get $3 + i32.const 1 + i32.add + i32.store offset=4 + local.get $3 + i32.const 1879048192 + i32.and + i32.const 0 + i32.ne + if + local.get $2 + call $~lib/rt/purerc/scanBlack + end + br $break|0 + unreachable + end + unreachable + end + block + local.get $2 + call $~lib/rt/purerc/collectWhite + br $break|0 + unreachable + end + unreachable + end + i32.const 0 + i32.eqz + if + i32.const 0 + i32.const 456 + i32.const 96 + i32.const 24 + call $~lib/builtins/abort + unreachable + end + end + ) + (func $~lib/array/Array#__visit_impl (; 43 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + local.get $0 + i32.load offset=4 + local.set $2 + local.get $2 + local.get $0 + i32.load offset=8 + i32.add + local.set $3 + block $break|0 + loop $continue|0 + local.get $2 + local.get $3 + i32.lt_u + if + local.get $2 + i32.load + local.set $4 + local.get $4 + if + local.get $4 + local.get $1 + call $~lib/rt/purerc/__visit + end + local.get $2 + i32.const 4 + i32.add + local.set $2 + br $continue|0 + end + end + end + ) + (func $~lib/array/Array#__visit_impl (; 44 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + local.get $0 + i32.load offset=4 + local.set $2 + local.get $2 + local.get $0 + i32.load offset=8 + i32.add + local.set $3 + block $break|0 + loop $continue|0 + local.get $2 + local.get $3 + i32.lt_u + if + local.get $2 + i32.load + local.set $4 + local.get $4 + if + local.get $4 + local.get $1 + call $~lib/rt/purerc/__visit + end + local.get $2 + i32.const 4 + i32.add + local.set $2 + br $continue|0 + end + end + end + ) + (func $~lib/builtins/__visit_members (; 45 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (local $2 i32) + block $block$16$break + block + end + block $switch$1$leave + block $switch$1$case$24 + block $switch$1$case$22 + block $switch$1$case$20 + block $switch$1$case$19 + block $switch$1$case$16 + block $switch$1$case$3 + block $switch$1$default + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $switch$1$default $switch$1$case$3 $switch$1$case$3 $switch$1$case$3 $switch$1$case$3 $switch$1$case$3 $switch$1$case$3 $switch$1$case$3 $switch$1$case$3 $switch$1$case$3 $switch$1$case$3 $switch$1$case$3 $switch$1$case$3 $switch$1$case$3 $switch$1$case$16 $switch$1$case$3 $switch$1$case$3 $switch$1$case$19 $switch$1$case$20 $switch$1$case$3 $switch$1$case$22 $switch$1$case$3 $switch$1$case$24 $switch$1$default + end + block + block + unreachable + unreachable + end + unreachable + unreachable + end + unreachable + end + block + block + return + unreachable + end + unreachable + unreachable + end + unreachable + end + block + br $block$16$break + unreachable + end + unreachable + end + block + block + local.get $0 + local.get $1 + call $~lib/array/Array#__visit_impl + block + br $block$16$break + unreachable + end + unreachable + unreachable + end + unreachable + unreachable + end + unreachable + end + block + block + local.get $0 + local.get $1 + call $~lib/array/Array#__visit_impl + block + br $block$16$break + unreachable + end + unreachable + unreachable + end + unreachable + unreachable + end + unreachable + end + block + block + local.get $0 + local.get $1 + call $~lib/array/Array#__visit_impl + block + br $block$16$break + unreachable + end + unreachable + unreachable + end + unreachable + unreachable + end + unreachable + end + block + block + local.get $0 + local.get $1 + call $~lib/array/Array#__visit_impl + block + br $block$16$break + unreachable + end + unreachable + unreachable + end + unreachable + unreachable + end + unreachable + end + end + block + block + local.get $0 + i32.load + local.tee $2 + if + local.get $2 + local.get $1 + call $~lib/rt/purerc/__visit + end + return + unreachable + end + unreachable + unreachable + end + unreachable + ) + (func $null (; 46 ;) (type $FUNCSIG$v) ) ) diff --git a/tests/compiler/std/array.optimized.wat b/tests/compiler/std/array.optimized.wat index 9cf78a70..3a939472 100644 --- a/tests/compiler/std/array.optimized.wat +++ b/tests/compiler/std/array.optimized.wat @@ -12,206 +12,208 @@ (type $FUNCSIG$fii (func (param i32 i32) (result f32))) (type $FUNCSIG$d (func (result f64))) (type $FUNCSIG$vj (func (param i64))) - (type $FUNCSIG$jj (func (param i64) (result i64))) (type $FUNCSIG$iff (func (param f32 f32) (result i32))) - (type $FUNCSIG$if (func (param f32) (result i32))) (type $FUNCSIG$idd (func (param f64 f64) (result i32))) (type $FUNCSIG$dii (func (param i32 i32) (result f64))) (type $FUNCSIG$id (func (param f64) (result i32))) - (type $FUNCSIG$iiiiii (func (param i32 i32 i32 i32 i32) (result i32))) (type $FUNCSIG$iid (func (param i32 f64) (result i32))) - (type $FUNCSIG$jii (func (param i32 i32) (result i64))) (type $FUNCSIG$iijijiji (func (param i32 i64 i32 i64 i32 i64 i32) (result i32))) (type $FUNCSIG$iiid (func (param i32 i32 f64) (result i32))) (type $FUNCSIG$ij (func (param i64) (result i32))) (type $FUNCSIG$viji (func (param i32 i64 i32))) (type $FUNCSIG$iiij (func (param i32 i32 i64) (result i32))) + (type $FUNCSIG$i (func (result i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (import "rtrace" "retain" (func $~lib/rt/purerc/onIncrement (param i32))) (import "rtrace" "free" (func $~lib/rt/tlsf/onFree (param i32))) (import "Math" "random" (func $~lib/bindings/Math/random (result f64))) (import "rtrace" "release" (func $~lib/rt/purerc/onDecrement (param i32))) (memory $0 1) - (data (i32.const 8) "\1c\00\00\00\01\00\00\00\10\00\00\00\1c\00\00\00I\00n\00v\00a\00l\00i\00d\00 \00l\00e\00n\00g\00t\00h\00") - (data (i32.const 56) "&\00\00\00\01\00\00\00\10\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 112) "\1e\00\00\00\01\00\00\00\10\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\10\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 216) "\18\00\00\00\01\00\00\00\10\00\00\00\18\00\00\00s\00t\00d\00/\00a\00r\00r\00a\00y\00.\00t\00s\00") - (data (i32.const 256) "\06\00\00\00\01\00\00\00\10\00\00\00\06\00\00\00a\00b\00c\00") + (data (i32.const 8) "\1c\00\00\00\01\00\00\00\10\00\00\00\1c\00\00\00I\00n\00v\00a\00l\00i\00d\00 \00l\00e\00n\00g\00t\00h") + (data (i32.const 56) "&\00\00\00\01\00\00\00\10\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 112) "\1e\00\00\00\01\00\00\00\10\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s") + (data (i32.const 160) "(\00\00\00\01\00\00\00\10\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 216) "\18\00\00\00\01\00\00\00\10\00\00\00\18\00\00\00s\00t\00d\00/\00a\00r\00r\00a\00y\00.\00t\00s") + (data (i32.const 256) "\06\00\00\00\01\00\00\00\10\00\00\00\06\00\00\00a\00b\00c") (data (i32.const 280) "\05\00\00\00\01\00\00\00\0f\00\00\00\05\00\00\00\01\02\03\04\05") - (data (i32.const 304) "\"\00\00\00\01\00\00\00\10\00\00\00\"\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00p\00u\00r\00e\00r\00c\00.\00t\00s\00") + (data (i32.const 304) "\"\00\00\00\01\00\00\00\10\00\00\00\"\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00p\00u\00r\00e\00r\00c\00.\00t\00s") (data (i32.const 360) "\05\00\00\00\01\00\00\00\0f\00\00\00\05\00\00\00\01\01\01\04\05") - (data (i32.const 384) "$\00\00\00\01\00\00\00\10\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 440) "\1a\00\00\00\01\00\00\00\10\00\00\00\1a\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00.\00t\00s\00") - (data (i32.const 488) "\05\00\00\00\01\00\00\00\0f\00\00\00\05\00\00\00\00\00\00\00\00") - (data (i32.const 512) "\05\00\00\00\01\00\00\00\0f\00\00\00\05\00\00\00\01\01\00\00\00") + (data (i32.const 384) "$\00\00\00\01\00\00\00\10\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 440) "\1a\00\00\00\01\00\00\00\10\00\00\00\1a\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00.\00t\00s") + (data (i32.const 488) "\05\00\00\00\01\00\00\00\0f\00\00\00\05") + (data (i32.const 512) "\05\00\00\00\01\00\00\00\0f\00\00\00\05\00\00\00\01\01") (data (i32.const 536) "\05\00\00\00\01\00\00\00\0f\00\00\00\05\00\00\00\01\01\00\02\02") (data (i32.const 560) "\05\00\00\00\01\00\00\00\0f\00\00\00\05\00\00\00\01\01\00\02\02") - (data (i32.const 584) "\14\00\00\00\01\00\00\00\0f\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00") - (data (i32.const 624) "\14\00\00\00\01\00\00\00\0f\00\00\00\14\00\00\00\01\00\00\00\01\00\00\00\01\00\00\00\04\00\00\00\05\00\00\00") - (data (i32.const 664) "\14\00\00\00\01\00\00\00\0f\00\00\00\14\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 704) "\14\00\00\00\01\00\00\00\0f\00\00\00\14\00\00\00\01\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 744) "\14\00\00\00\01\00\00\00\0f\00\00\00\14\00\00\00\01\00\00\00\01\00\00\00\00\00\00\00\02\00\00\00\02\00\00\00") - (data (i32.const 784) "\14\00\00\00\01\00\00\00\0f\00\00\00\14\00\00\00\01\00\00\00\01\00\00\00\00\00\00\00\02\00\00\00\02\00\00\00") - (data (i32.const 824) "\1c\00\00\00\01\00\00\00\10\00\00\00\1c\00\00\00A\00r\00r\00a\00y\00 \00i\00s\00 \00e\00m\00p\00t\00y\00") - (data (i32.const 872) "\00\00\00\00\01\00\00\00\0f\00\00\00\00\00\00\00") - (data (i32.const 888) "\00\00\00\00\01\00\00\00\0f\00\00\00\00\00\00\00") - (data (i32.const 904) "\14\00\00\00\01\00\00\00\0f\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00") - (data (i32.const 944) "\14\00\00\00\01\00\00\00\0f\00\00\00\14\00\00\00\04\00\00\00\05\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00") - (data (i32.const 984) "\14\00\00\00\01\00\00\00\0f\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00") - (data (i32.const 1024) "\14\00\00\00\01\00\00\00\0f\00\00\00\14\00\00\00\01\00\00\00\04\00\00\00\05\00\00\00\04\00\00\00\05\00\00\00") - (data (i32.const 1064) "\14\00\00\00\01\00\00\00\0f\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00") - (data (i32.const 1104) "\14\00\00\00\01\00\00\00\0f\00\00\00\14\00\00\00\01\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00\05\00\00\00") - (data (i32.const 1144) "\14\00\00\00\01\00\00\00\0f\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00") - (data (i32.const 1184) "\14\00\00\00\01\00\00\00\0f\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00") - (data (i32.const 1224) "\14\00\00\00\01\00\00\00\0f\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00") - (data (i32.const 1264) "\14\00\00\00\01\00\00\00\0f\00\00\00\14\00\00\00\04\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00") - (data (i32.const 1304) "\14\00\00\00\01\00\00\00\0f\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00") - (data (i32.const 1344) "\14\00\00\00\01\00\00\00\0f\00\00\00\14\00\00\00\01\00\00\00\04\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00") - (data (i32.const 1384) "\14\00\00\00\01\00\00\00\0f\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00") - (data (i32.const 1424) "\14\00\00\00\01\00\00\00\0f\00\00\00\14\00\00\00\01\00\00\00\03\00\00\00\04\00\00\00\04\00\00\00\05\00\00\00") - (data (i32.const 1464) "\14\00\00\00\01\00\00\00\0f\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00") - (data (i32.const 1504) "\14\00\00\00\01\00\00\00\0f\00\00\00\14\00\00\00\04\00\00\00\05\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00") - (data (i32.const 1544) "\14\00\00\00\01\00\00\00\0f\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00") - (data (i32.const 1584) "\14\00\00\00\01\00\00\00\0f\00\00\00\14\00\00\00\04\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00") - (data (i32.const 1624) "\14\00\00\00\01\00\00\00\0f\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00") - (data (i32.const 1664) "\14\00\00\00\01\00\00\00\0f\00\00\00\14\00\00\00\01\00\00\00\03\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00") - (data (i32.const 1704) "\14\00\00\00\01\00\00\00\0f\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00") - (data (i32.const 1744) "\14\00\00\00\01\00\00\00\0f\00\00\00\14\00\00\00\01\00\00\00\03\00\00\00\04\00\00\00\04\00\00\00\05\00\00\00") - (data (i32.const 1784) "\14\00\00\00\01\00\00\00\0f\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00") - (data (i32.const 1824) "\14\00\00\00\01\00\00\00\0f\00\00\00\14\00\00\00\01\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00\05\00\00\00") - (data (i32.const 1864) "\14\00\00\00\01\00\00\00\0f\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00") - (data (i32.const 1904) "\14\00\00\00\01\00\00\00\0f\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00") - (data (i32.const 1944) "\00\00\00\00\01\00\00\00\0f\00\00\00\00\00\00\00") - (data (i32.const 1960) "\14\00\00\00\01\00\00\00\0f\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00") - (data (i32.const 2000) "\0c\00\00\00\01\00\00\00\0f\00\00\00\0c\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00") - (data (i32.const 2032) "\08\00\00\00\01\00\00\00\0f\00\00\00\08\00\00\00\01\00\00\00\02\00\00\00") - (data (i32.const 2056) "\14\00\00\00\01\00\00\00\0f\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00") - (data (i32.const 2096) "\08\00\00\00\01\00\00\00\0f\00\00\00\08\00\00\00\03\00\00\00\04\00\00\00") - (data (i32.const 2120) "\0c\00\00\00\01\00\00\00\0f\00\00\00\0c\00\00\00\01\00\00\00\02\00\00\00\05\00\00\00") - (data (i32.const 2152) "\14\00\00\00\01\00\00\00\0f\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00") - (data (i32.const 2192) "\04\00\00\00\01\00\00\00\0f\00\00\00\04\00\00\00\01\00\00\00") - (data (i32.const 2216) "\10\00\00\00\01\00\00\00\0f\00\00\00\10\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00") - (data (i32.const 2248) "\14\00\00\00\01\00\00\00\0f\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00") - (data (i32.const 2288) "\04\00\00\00\01\00\00\00\0f\00\00\00\04\00\00\00\05\00\00\00") - (data (i32.const 2312) "\10\00\00\00\01\00\00\00\0f\00\00\00\10\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00") - (data (i32.const 2344) "\14\00\00\00\01\00\00\00\0f\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00") - (data (i32.const 2384) "\08\00\00\00\01\00\00\00\0f\00\00\00\08\00\00\00\04\00\00\00\05\00\00\00") - (data (i32.const 2408) "\0c\00\00\00\01\00\00\00\0f\00\00\00\0c\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00") - (data (i32.const 2440) "\14\00\00\00\01\00\00\00\0f\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00") - (data (i32.const 2480) "\04\00\00\00\01\00\00\00\0f\00\00\00\04\00\00\00\04\00\00\00") - (data (i32.const 2504) "\10\00\00\00\01\00\00\00\0f\00\00\00\10\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\05\00\00\00") - (data (i32.const 2536) "\14\00\00\00\01\00\00\00\0f\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00") - (data (i32.const 2576) "\04\00\00\00\01\00\00\00\0f\00\00\00\04\00\00\00\01\00\00\00") - (data (i32.const 2600) "\10\00\00\00\01\00\00\00\0f\00\00\00\10\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00") - (data (i32.const 2632) "\14\00\00\00\01\00\00\00\0f\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00") - (data (i32.const 2672) "\00\00\00\00\01\00\00\00\0f\00\00\00\00\00\00\00") - (data (i32.const 2688) "\14\00\00\00\01\00\00\00\0f\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00") - (data (i32.const 2728) "\14\00\00\00\01\00\00\00\0f\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00") - (data (i32.const 2768) "\00\00\00\00\01\00\00\00\0f\00\00\00\00\00\00\00") - (data (i32.const 2784) "\14\00\00\00\01\00\00\00\0f\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00") - (data (i32.const 2824) "\14\00\00\00\01\00\00\00\0f\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00") - (data (i32.const 2864) "\00\00\00\00\01\00\00\00\0f\00\00\00\00\00\00\00") - (data (i32.const 2880) "\14\00\00\00\01\00\00\00\0f\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00") - (data (i32.const 2920) "\14\00\00\00\01\00\00\00\0f\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00") - (data (i32.const 2960) "\00\00\00\00\01\00\00\00\0f\00\00\00\00\00\00\00") - (data (i32.const 2976) "\14\00\00\00\01\00\00\00\0f\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00") - (data (i32.const 3016) "\14\00\00\00\01\00\00\00\0f\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00") - (data (i32.const 3056) "\00\00\00\00\01\00\00\00\0f\00\00\00\00\00\00\00") - (data (i32.const 3072) "\14\00\00\00\01\00\00\00\0f\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00") - (data (i32.const 3112) "\18\00\00\00\01\00\00\00\10\00\00\00\18\00\00\00~\00l\00i\00b\00/\00m\00a\00t\00h\00.\00t\00s\00") - (data (i32.const 3152) "\ac\00\00\00\01\00\00\00\10\00\00\00\ac\00\00\00A\00B\00C\00D\00E\00F\00G\00H\00I\00J\00K\00L\00M\00N\00O\00P\00Q\00R\00S\00T\00U\00V\00W\00X\00Y\00Z\00a\00b\00c\00d\00e\00f\00g\00h\00i\00j\00k\00l\00m\00n\00o\00p\00q\00r\00s\00t\00u\00v\00w\00x\00y\00z\000\001\002\003\004\005\006\007\008\009\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") + (data (i32.const 584) "\14\00\00\00\01\00\00\00\0f\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05") + (data (i32.const 624) "\14\00\00\00\01\00\00\00\0f\00\00\00\14\00\00\00\01\00\00\00\01\00\00\00\01\00\00\00\04\00\00\00\05") + (data (i32.const 664) "\14\00\00\00\01\00\00\00\0f\00\00\00\14") + (data (i32.const 704) "\14\00\00\00\01\00\00\00\0f\00\00\00\14\00\00\00\01\00\00\00\01") + (data (i32.const 744) "\14\00\00\00\01\00\00\00\0f\00\00\00\14\00\00\00\01\00\00\00\01\00\00\00\00\00\00\00\02\00\00\00\02") + (data (i32.const 784) "\14\00\00\00\01\00\00\00\0f\00\00\00\14\00\00\00\01\00\00\00\01\00\00\00\00\00\00\00\02\00\00\00\02") + (data (i32.const 824) "\1c\00\00\00\01\00\00\00\10\00\00\00\1c\00\00\00A\00r\00r\00a\00y\00 \00i\00s\00 \00e\00m\00p\00t\00y") + (data (i32.const 876) "\01\00\00\00\0f") + (data (i32.const 892) "\01\00\00\00\0f") + (data (i32.const 904) "\14\00\00\00\01\00\00\00\0f\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05") + (data (i32.const 944) "\14\00\00\00\01\00\00\00\0f\00\00\00\14\00\00\00\04\00\00\00\05\00\00\00\03\00\00\00\04\00\00\00\05") + (data (i32.const 984) "\14\00\00\00\01\00\00\00\0f\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05") + (data (i32.const 1024) "\14\00\00\00\01\00\00\00\0f\00\00\00\14\00\00\00\01\00\00\00\04\00\00\00\05\00\00\00\04\00\00\00\05") + (data (i32.const 1064) "\14\00\00\00\01\00\00\00\0f\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05") + (data (i32.const 1104) "\14\00\00\00\01\00\00\00\0f\00\00\00\14\00\00\00\01\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00\05") + (data (i32.const 1144) "\14\00\00\00\01\00\00\00\0f\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05") + (data (i32.const 1184) "\14\00\00\00\01\00\00\00\0f\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05") + (data (i32.const 1224) "\14\00\00\00\01\00\00\00\0f\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05") + (data (i32.const 1264) "\14\00\00\00\01\00\00\00\0f\00\00\00\14\00\00\00\04\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05") + (data (i32.const 1304) "\14\00\00\00\01\00\00\00\0f\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05") + (data (i32.const 1344) "\14\00\00\00\01\00\00\00\0f\00\00\00\14\00\00\00\01\00\00\00\04\00\00\00\03\00\00\00\04\00\00\00\05") + (data (i32.const 1384) "\14\00\00\00\01\00\00\00\0f\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05") + (data (i32.const 1424) "\14\00\00\00\01\00\00\00\0f\00\00\00\14\00\00\00\01\00\00\00\03\00\00\00\04\00\00\00\04\00\00\00\05") + (data (i32.const 1464) "\14\00\00\00\01\00\00\00\0f\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05") + (data (i32.const 1504) "\14\00\00\00\01\00\00\00\0f\00\00\00\14\00\00\00\04\00\00\00\05\00\00\00\03\00\00\00\04\00\00\00\05") + (data (i32.const 1544) "\14\00\00\00\01\00\00\00\0f\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05") + (data (i32.const 1584) "\14\00\00\00\01\00\00\00\0f\00\00\00\14\00\00\00\04\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05") + (data (i32.const 1624) "\14\00\00\00\01\00\00\00\0f\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05") + (data (i32.const 1664) "\14\00\00\00\01\00\00\00\0f\00\00\00\14\00\00\00\01\00\00\00\03\00\00\00\03\00\00\00\04\00\00\00\05") + (data (i32.const 1704) "\14\00\00\00\01\00\00\00\0f\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05") + (data (i32.const 1744) "\14\00\00\00\01\00\00\00\0f\00\00\00\14\00\00\00\01\00\00\00\03\00\00\00\04\00\00\00\04\00\00\00\05") + (data (i32.const 1784) "\14\00\00\00\01\00\00\00\0f\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05") + (data (i32.const 1824) "\14\00\00\00\01\00\00\00\0f\00\00\00\14\00\00\00\01\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00\05") + (data (i32.const 1864) "\14\00\00\00\01\00\00\00\0f\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05") + (data (i32.const 1904) "\14\00\00\00\01\00\00\00\0f\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05") + (data (i32.const 1948) "\01\00\00\00\0f") + (data (i32.const 1960) "\14\00\00\00\01\00\00\00\0f\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05") + (data (i32.const 2000) "\0c\00\00\00\01\00\00\00\0f\00\00\00\0c\00\00\00\03\00\00\00\04\00\00\00\05") + (data (i32.const 2032) "\08\00\00\00\01\00\00\00\0f\00\00\00\08\00\00\00\01\00\00\00\02") + (data (i32.const 2056) "\14\00\00\00\01\00\00\00\0f\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05") + (data (i32.const 2096) "\08\00\00\00\01\00\00\00\0f\00\00\00\08\00\00\00\03\00\00\00\04") + (data (i32.const 2120) "\0c\00\00\00\01\00\00\00\0f\00\00\00\0c\00\00\00\01\00\00\00\02\00\00\00\05") + (data (i32.const 2152) "\14\00\00\00\01\00\00\00\0f\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05") + (data (i32.const 2192) "\04\00\00\00\01\00\00\00\0f\00\00\00\04\00\00\00\01") + (data (i32.const 2216) "\10\00\00\00\01\00\00\00\0f\00\00\00\10\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05") + (data (i32.const 2248) "\14\00\00\00\01\00\00\00\0f\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05") + (data (i32.const 2288) "\04\00\00\00\01\00\00\00\0f\00\00\00\04\00\00\00\05") + (data (i32.const 2312) "\10\00\00\00\01\00\00\00\0f\00\00\00\10\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04") + (data (i32.const 2344) "\14\00\00\00\01\00\00\00\0f\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05") + (data (i32.const 2384) "\08\00\00\00\01\00\00\00\0f\00\00\00\08\00\00\00\04\00\00\00\05") + (data (i32.const 2408) "\0c\00\00\00\01\00\00\00\0f\00\00\00\0c\00\00\00\01\00\00\00\02\00\00\00\03") + (data (i32.const 2440) "\14\00\00\00\01\00\00\00\0f\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05") + (data (i32.const 2480) "\04\00\00\00\01\00\00\00\0f\00\00\00\04\00\00\00\04") + (data (i32.const 2504) "\10\00\00\00\01\00\00\00\0f\00\00\00\10\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\05") + (data (i32.const 2536) "\14\00\00\00\01\00\00\00\0f\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05") + (data (i32.const 2576) "\04\00\00\00\01\00\00\00\0f\00\00\00\04\00\00\00\01") + (data (i32.const 2600) "\10\00\00\00\01\00\00\00\0f\00\00\00\10\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05") + (data (i32.const 2632) "\14\00\00\00\01\00\00\00\0f\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05") + (data (i32.const 2676) "\01\00\00\00\0f") + (data (i32.const 2688) "\14\00\00\00\01\00\00\00\0f\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05") + (data (i32.const 2728) "\14\00\00\00\01\00\00\00\0f\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05") + (data (i32.const 2772) "\01\00\00\00\0f") + (data (i32.const 2784) "\14\00\00\00\01\00\00\00\0f\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05") + (data (i32.const 2824) "\14\00\00\00\01\00\00\00\0f\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05") + (data (i32.const 2868) "\01\00\00\00\0f") + (data (i32.const 2880) "\14\00\00\00\01\00\00\00\0f\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05") + (data (i32.const 2920) "\14\00\00\00\01\00\00\00\0f\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05") + (data (i32.const 2964) "\01\00\00\00\0f") + (data (i32.const 2976) "\14\00\00\00\01\00\00\00\0f\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05") + (data (i32.const 3016) "\14\00\00\00\01\00\00\00\0f\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05") + (data (i32.const 3060) "\01\00\00\00\0f") + (data (i32.const 3072) "\14\00\00\00\01\00\00\00\0f\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05") + (data (i32.const 3112) "\18\00\00\00\01\00\00\00\10\00\00\00\18\00\00\00~\00l\00i\00b\00/\00m\00a\00t\00h\00.\00t\00s") + (data (i32.const 3152) "\ac\00\00\00\01\00\00\00\10\00\00\00\ac\00\00\00A\00B\00C\00D\00E\00F\00G\00H\00I\00J\00K\00L\00M\00N\00O\00P\00Q\00R\00S\00T\00U\00V\00W\00X\00Y\00Z\00a\00b\00c\00d\00e\00f\00g\00h\00i\00j\00k\00l\00m\00n\00o\00p\00q\00r\00s\00t\00u\00v\00w\00x\00y\00z\000\001\002\003\004\005\006\007\008\009\00_\00-\00,\00.\00+\00/\00\\\00[\00]\00{\00}\00(\00)\00<\00>\00*\00&\00$\00%\00^\00@\00#\00!\00?") (data (i32.const 3344) " \00\00\00\01\00\00\00\0f\00\00\00 \00\00\00\00\00\80?\00\00\c0\7f\00\00\80\ff\00\00\80?\00\00\00\00\00\00\80\bf\00\00\00\c0\00\00\80\7f") (data (i32.const 3392) " \00\00\00\01\00\00\00\0f\00\00\00 \00\00\00\00\00\80\ff\00\00\00\c0\00\00\80\bf\00\00\00\00\00\00\80?\00\00\80?\00\00\80\7f\00\00\c0\7f") - (data (i32.const 3440) "@\00\00\00\01\00\00\00\0f\00\00\00@\00\00\00\00\00\00\00\00\00\f0?\00\00\00\00\00\00\f8\7f\00\00\00\00\00\00\f0\ff\05\00\00\00\00\00\f0?\00\00\00\00\00\00\00\00\00\00\00\00\00\00\f0\bf\00\00\00\00\00\00\00\c0\00\00\00\00\00\00\f0\7f") - (data (i32.const 3520) "@\00\00\00\01\00\00\00\0f\00\00\00@\00\00\00\00\00\00\00\00\00\f0\ff\00\00\00\00\00\00\00\c0\00\00\00\00\00\00\f0\bf\00\00\00\00\00\00\00\00\00\00\00\00\00\00\f0?\05\00\00\00\00\00\f0?\00\00\00\00\00\00\f0\7f\00\00\00\00\00\00\f8\7f") - (data (i32.const 3600) "\14\00\00\00\01\00\00\00\0f\00\00\00\14\00\00\00\01\00\00\00\fe\ff\ff\ff\ff\ff\ff\ff\00\00\00\00\02\00\00\00") - (data (i32.const 3640) "\14\00\00\00\01\00\00\00\0f\00\00\00\14\00\00\00\fe\ff\ff\ff\ff\ff\ff\ff\00\00\00\00\01\00\00\00\02\00\00\00") - (data (i32.const 3680) "\14\00\00\00\01\00\00\00\0f\00\00\00\14\00\00\00\01\00\00\00\ff\ff\ff\ff\fe\ff\ff\ff\00\00\00\00\02\00\00\00") + (data (i32.const 3440) "@\00\00\00\01\00\00\00\0f\00\00\00@") + (data (i32.const 3462) "\f0?\00\00\00\00\00\00\f8\7f\00\00\00\00\00\00\f0\ff\05\00\00\00\00\00\f0?") + (data (i32.const 3502) "\f0\bf\00\00\00\00\00\00\00\c0\00\00\00\00\00\00\f0\7f") + (data (i32.const 3520) "@\00\00\00\01\00\00\00\0f\00\00\00@") + (data (i32.const 3542) "\f0\ff\00\00\00\00\00\00\00\c0\00\00\00\00\00\00\f0\bf") + (data (i32.const 3574) "\f0?\05\00\00\00\00\00\f0?\00\00\00\00\00\00\f0\7f\00\00\00\00\00\00\f8\7f") + (data (i32.const 3600) "\14\00\00\00\01\00\00\00\0f\00\00\00\14\00\00\00\01\00\00\00\fe\ff\ff\ff\ff\ff\ff\ff\00\00\00\00\02") + (data (i32.const 3640) "\14\00\00\00\01\00\00\00\0f\00\00\00\14\00\00\00\fe\ff\ff\ff\ff\ff\ff\ff\00\00\00\00\01\00\00\00\02") + (data (i32.const 3680) "\14\00\00\00\01\00\00\00\0f\00\00\00\14\00\00\00\01\00\00\00\ff\ff\ff\ff\fe\ff\ff\ff\00\00\00\00\02") (data (i32.const 3720) "\14\00\00\00\01\00\00\00\0f\00\00\00\14\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00\fe\ff\ff\ff\ff\ff\ff\ff") - (data (i32.const 3760) "\00\00\00\00\01\00\00\00\0f\00\00\00\00\00\00\00") - (data (i32.const 3776) "\04\00\00\00\01\00\00\00\0f\00\00\00\04\00\00\00\01\00\00\00") - (data (i32.const 3800) "\08\00\00\00\01\00\00\00\0f\00\00\00\08\00\00\00\02\00\00\00\01\00\00\00") - (data (i32.const 3824) "\10\00\00\00\01\00\00\00\0f\00\00\00\10\00\00\00\03\00\00\00\02\00\00\00\01\00\00\00\00\00\00\00") - (data (i32.const 3856) "\10\00\00\00\01\00\00\00\0f\00\00\00\10\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00") - (data (i32.const 3888) "(\00\00\00\01\00\00\00\10\00\00\00(\00\00\00P\00R\00N\00G\00 \00m\00u\00s\00t\00 \00b\00e\00 \00s\00e\00e\00d\00e\00d\00.\00") - (data (i32.const 3944) "\04\00\00\00\01\00\00\00\0f\00\00\00\04\00\00\00\01\00\00\00") - (data (i32.const 3968) "\08\00\00\00\01\00\00\00\0f\00\00\00\08\00\00\00\01\00\00\00\02\00\00\00") - (data (i32.const 3992) "^\00\00\00\01\00\00\00\10\00\00\00^\00\00\00E\00l\00e\00m\00e\00n\00t\00 \00t\00y\00p\00e\00 \00m\00u\00s\00t\00 \00b\00e\00 \00n\00u\00l\00l\00a\00b\00l\00e\00 \00i\00f\00 \00a\00r\00r\00a\00y\00 \00i\00s\00 \00h\00o\00l\00e\00y\00") - (data (i32.const 4104) "\"\00\00\00\01\00\00\00\10\00\00\00\"\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00c\00o\00m\00m\00o\00n\00.\00t\00s\00") - (data (i32.const 4160) "\02\00\00\00\01\00\00\00\10\00\00\00\02\00\00\00a\00") - (data (i32.const 4184) "\02\00\00\00\01\00\00\00\10\00\00\00\02\00\00\00b\00") - (data (i32.const 4208) "\04\00\00\00\01\00\00\00\10\00\00\00\04\00\00\00a\00b\00") - (data (i32.const 4232) "\04\00\00\00\01\00\00\00\10\00\00\00\04\00\00\00b\00a\00") - (data (i32.const 4256) "\00\00\00\00\01\00\00\00\10\00\00\00\00\00\00\00") - (data (i32.const 4272) "\1c\00\00\00\01\00\00\00\0f\00\00\00\1c\00\00\00P\10\00\00h\10\00\00P\10\00\00\80\10\00\00\98\10\00\00\b0\10\00\00\00\00\00\00") - (data (i32.const 4320) "\1c\00\00\00\01\00\00\00\0f\00\00\00\1c\00\00\00\b0\10\00\00P\10\00\00P\10\00\00\80\10\00\00h\10\00\00\98\10\00\00\00\00\00\00") - (data (i32.const 4368) "\1c\00\00\00\01\00\00\00\10\00\00\00\1c\00\00\00~\00l\00i\00b\00/\00s\00t\00r\00i\00n\00g\00.\00t\00s\00") - (data (i32.const 4416) "\08\00\00\00\01\00\00\00\10\00\00\00\08\00\00\00n\00u\00l\00l\00") - (data (i32.const 4440) "\02\00\00\00\01\00\00\00\0f\00\00\00\02\00\00\00\01\00") - (data (i32.const 4464) "\08\00\00\00\01\00\00\00\10\00\00\00\08\00\00\00t\00r\00u\00e\00") - (data (i32.const 4488) "\n\00\00\00\01\00\00\00\10\00\00\00\n\00\00\00f\00a\00l\00s\00e\00") - (data (i32.const 4520) "\02\00\00\00\01\00\00\00\10\00\00\00\02\00\00\00,\00") - (data (i32.const 4544) "\14\00\00\00\01\00\00\00\10\00\00\00\14\00\00\00t\00r\00u\00e\00,\00f\00a\00l\00s\00e\00") + (data (i32.const 3764) "\01\00\00\00\0f") + (data (i32.const 3776) "\04\00\00\00\01\00\00\00\0f\00\00\00\04\00\00\00\01") + (data (i32.const 3800) "\08\00\00\00\01\00\00\00\0f\00\00\00\08\00\00\00\02\00\00\00\01") + (data (i32.const 3824) "\10\00\00\00\01\00\00\00\0f\00\00\00\10\00\00\00\03\00\00\00\02\00\00\00\01") + (data (i32.const 3856) "\10\00\00\00\01\00\00\00\0f\00\00\00\10\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00\03") + (data (i32.const 3888) "(\00\00\00\01\00\00\00\10\00\00\00(\00\00\00P\00R\00N\00G\00 \00m\00u\00s\00t\00 \00b\00e\00 \00s\00e\00e\00d\00e\00d\00.") + (data (i32.const 3944) "\04\00\00\00\01\00\00\00\0f\00\00\00\04\00\00\00\01") + (data (i32.const 3968) "\08\00\00\00\01\00\00\00\0f\00\00\00\08\00\00\00\01\00\00\00\02") + (data (i32.const 3992) "^\00\00\00\01\00\00\00\10\00\00\00^\00\00\00E\00l\00e\00m\00e\00n\00t\00 \00t\00y\00p\00e\00 \00m\00u\00s\00t\00 \00b\00e\00 \00n\00u\00l\00l\00a\00b\00l\00e\00 \00i\00f\00 \00a\00r\00r\00a\00y\00 \00i\00s\00 \00h\00o\00l\00e\00y") + (data (i32.const 4104) "\"\00\00\00\01\00\00\00\10\00\00\00\"\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00c\00o\00m\00m\00o\00n\00.\00t\00s") + (data (i32.const 4160) "\02\00\00\00\01\00\00\00\10\00\00\00\02\00\00\00a") + (data (i32.const 4184) "\02\00\00\00\01\00\00\00\10\00\00\00\02\00\00\00b") + (data (i32.const 4208) "\04\00\00\00\01\00\00\00\10\00\00\00\04\00\00\00a\00b") + (data (i32.const 4232) "\04\00\00\00\01\00\00\00\10\00\00\00\04\00\00\00b\00a") + (data (i32.const 4260) "\01\00\00\00\10") + (data (i32.const 4272) "\1c\00\00\00\01\00\00\00\0f\00\00\00\1c\00\00\00P\10\00\00h\10\00\00P\10\00\00\80\10\00\00\98\10\00\00\b0\10") + (data (i32.const 4320) "\1c\00\00\00\01\00\00\00\0f\00\00\00\1c\00\00\00\b0\10\00\00P\10\00\00P\10\00\00\80\10\00\00h\10\00\00\98\10") + (data (i32.const 4368) "\1c\00\00\00\01\00\00\00\10\00\00\00\1c\00\00\00~\00l\00i\00b\00/\00s\00t\00r\00i\00n\00g\00.\00t\00s") + (data (i32.const 4416) "\08\00\00\00\01\00\00\00\10\00\00\00\08\00\00\00n\00u\00l\00l") + (data (i32.const 4440) "\02\00\00\00\01\00\00\00\0f\00\00\00\02\00\00\00\01") + (data (i32.const 4464) "\08\00\00\00\01\00\00\00\10\00\00\00\08\00\00\00t\00r\00u\00e") + (data (i32.const 4488) "\n\00\00\00\01\00\00\00\10\00\00\00\n\00\00\00f\00a\00l\00s\00e") + (data (i32.const 4520) "\02\00\00\00\01\00\00\00\10\00\00\00\02\00\00\00,") + (data (i32.const 4544) "\14\00\00\00\01\00\00\00\10\00\00\00\14\00\00\00t\00r\00u\00e\00,\00f\00a\00l\00s\00e") (data (i32.const 4584) "\0c\00\00\00\01\00\00\00\0f\00\00\00\0c\00\00\00\01\00\00\00\fe\ff\ff\ff\fd\ff\ff\ff") - (data (i32.const 4616) "\02\00\00\00\01\00\00\00\10\00\00\00\02\00\00\000\00") - (data (i32.const 4640) "\90\01\00\00\01\00\00\00\0f\00\00\00\90\01\00\000\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\00") - (data (i32.const 5056) "\10\00\00\00\01\00\00\00\15\00\00\00\10\00\00\000\12\00\000\12\00\00\90\01\00\00d\00\00\00") - (data (i32.const 5088) "\n\00\00\00\01\00\00\00\10\00\00\00\n\00\00\001\00-\002\00-\003\00") - (data (i32.const 5120) "\0c\00\00\00\01\00\00\00\0f\00\00\00\0c\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00") - (data (i32.const 5152) "\02\00\00\00\01\00\00\00\10\00\00\00\02\00\00\00-\00") + (data (i32.const 4616) "\02\00\00\00\01\00\00\00\10\00\00\00\02\00\00\000") + (data (i32.const 4640) "\90\01\00\00\01\00\00\00\0f\00\00\00\90\01\00\000\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009") + (data (i32.const 5056) "\10\00\00\00\01\00\00\00\15\00\00\00\10\00\00\000\12\00\000\12\00\00\90\01\00\00d") + (data (i32.const 5088) "\n\00\00\00\01\00\00\00\10\00\00\00\n\00\00\001\00-\002\00-\003") + (data (i32.const 5120) "\0c\00\00\00\01\00\00\00\0f\00\00\00\0c\00\00\00\01\00\00\00\02\00\00\00\03") + (data (i32.const 5152) "\02\00\00\00\01\00\00\00\10\00\00\00\02\00\00\00-") (data (i32.const 5176) "\08\00\00\00\01\00\00\00\0f\00\00\00\08\00\00\00\00\00\00\80\00\00\00\80") - (data (i32.const 5200) "\04\00\00\00\01\00\00\00\10\00\00\00\04\00\00\00_\00_\00") - (data (i32.const 5224) "0\00\00\00\01\00\00\00\10\00\00\000\00\00\00-\002\001\004\007\004\008\003\006\004\008\00_\00_\00-\002\001\004\007\004\008\003\006\004\008\00") - (data (i32.const 5288) "0\00\00\00\01\00\00\00\0f\00\00\000\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\f0?\00\00\00\00\00\00\00\c0\00\00\00\00\00\00\f8\7f\00\00\00\00\00\00\f0\ff\00\00\00\00\00\00\f0\7f") - (data (i32.const 5352) "\04\00\00\00\01\00\00\00\10\00\00\00\04\00\00\00,\00 \00") - (data (i32.const 5376) "\06\00\00\00\01\00\00\00\10\00\00\00\06\00\00\000\00.\000\00") - (data (i32.const 5400) "\06\00\00\00\01\00\00\00\10\00\00\00\06\00\00\00N\00a\00N\00") - (data (i32.const 5424) "\12\00\00\00\01\00\00\00\10\00\00\00\12\00\00\00-\00I\00n\00f\00i\00n\00i\00t\00y\00") - (data (i32.const 5464) "\10\00\00\00\01\00\00\00\10\00\00\00\10\00\00\00I\00n\00f\00i\00n\00i\00t\00y\00") + (data (i32.const 5200) "\04\00\00\00\01\00\00\00\10\00\00\00\04\00\00\00_\00_") + (data (i32.const 5224) "0\00\00\00\01\00\00\00\10\00\00\000\00\00\00-\002\001\004\007\004\008\003\006\004\008\00_\00_\00-\002\001\004\007\004\008\003\006\004\008") + (data (i32.const 5288) "0\00\00\00\01\00\00\00\0f\00\00\000") + (data (i32.const 5318) "\f0?\00\00\00\00\00\00\00\c0\00\00\00\00\00\00\f8\7f\00\00\00\00\00\00\f0\ff\00\00\00\00\00\00\f0\7f") + (data (i32.const 5352) "\04\00\00\00\01\00\00\00\10\00\00\00\04\00\00\00,\00 ") + (data (i32.const 5376) "\06\00\00\00\01\00\00\00\10\00\00\00\06\00\00\000\00.\000") + (data (i32.const 5400) "\06\00\00\00\01\00\00\00\10\00\00\00\06\00\00\00N\00a\00N") + (data (i32.const 5424) "\12\00\00\00\01\00\00\00\10\00\00\00\12\00\00\00-\00I\00n\00f\00i\00n\00i\00t\00y") + (data (i32.const 5464) "\10\00\00\00\01\00\00\00\10\00\00\00\10\00\00\00I\00n\00f\00i\00n\00i\00t\00y") (data (i32.const 5496) "\b8\02\00\00\01\00\00\00\0f\00\00\00\b8\02\00\00\88\02\1c\08\a0\d5\8f\fav\bf>\a2\7f\e1\ae\bav\acU0 \fb\16\8b\ea5\ce]J\89B\cf-;eU\aa\b0k\9a\dfE\1a=\03\cf\1a\e6\ca\c6\9a\c7\17\fep\abO\dc\bc\be\fc\b1w\ff\0c\d6kA\ef\91V\be<\fc\7f\90\ad\1f\d0\8d\83\9aU1(\\Q\d3\b5\c9\a6\ad\8f\acq\9d\cb\8b\ee#w\"\9c\eamSx@\91I\cc\aeW\ce\b6]y\12<\827V\fbM6\94\10\c2O\98H8o\ea\96\90\c7:\82%\cb\85t\d7\f4\97\bf\97\cd\cf\86\a0\e5\ac*\17\98\n4\ef\8e\b25*\fbg8\b2;?\c6\d2\df\d4\c8\84\ba\cd\d3\1a\'D\dd\c5\96\c9%\bb\ce\9fk\93\84\a5b}$l\ac\db\f6\da_\0dXf\ab\a3&\f1\c3\de\93\f8\e2\f3\b8\80\ff\aa\a8\ad\b5\b5\8bJ|l\05_b\87S0\c14`\ff\bc\c9U&\ba\91\8c\85N\96\bd~)p$w\f9\df\8f\b8\e5\b8\9f\bd\df\a6\94}t\88\cf_\a9\f8\cf\9b\a8\8f\93pD\b9k\15\0f\bf\f8\f0\08\8a\b611eU%\b0\cd\ac\7f{\d0\c6\e2?\99\06;+*\c4\10\\\e4\d3\92si\99$$\aa\0e\ca\00\83\f2\b5\87\fd\eb\1a\11\92d\08\e5\bc\cc\88Po\t\cc\bc\8c,e\19\e2X\17\b7\d1\00\00\00\00\00\00@\9c\00\00\00\00\10\a5\d4\e8\00\00b\ac\c5\ebx\ad\84\t\94\f8x9?\81\b3\15\07\c9{\ce\97\c0p\\\ea{\ce2~\8fh\80\e9\ab\a48\d2\d5E\"\9a\17&\'O\9f\'\fb\c4\d41\a2c\ed\a8\ad\c8\8c8e\de\b0\dbe\ab\1a\8e\08\c7\83\9a\1dqB\f9\1d]\c4X\e7\1b\a6,iM\92\ea\8dp\1ad\ee\01\daJw\ef\9a\99\a3m\a2\85k}\b4{x\t\f2w\18\ddy\a1\e4T\b4\c2\c5\9b[\92\86[\86=]\96\c8\c5S5\c8\b3\a0\97\fa\\\b4*\95\e3_\a0\99\bd\9fF\de%\8c9\db4\c2\9b\a5\\\9f\98\a3r\9a\c6\f6\ce\be\e9TS\bf\dc\b7\e2A\"\f2\17\f3\fc\88\a5x\\\d3\9b\ce \cc\dfS!{\f3Z\16\98:0\1f\97\dc\b5\a0\e2\96\b3\e3\\S\d1\d9\a8~anonymous|0 $~lib/util/sort/COMPARATOR~anonymous|0 $~lib/util/sort/COMPARATOR~anonymous|0 $~lib/util/sort/COMPARATOR~anonymous|0 $~lib/util/sort/COMPARATOR~anonymous|1 $start:std/array~anonymous|43 $start:std/array~anonymous|44 $start:std/array~anonymous|45 $start:std/array~anonymous|46 $start:std/array~anonymous|47 $start:std/array~anonymous|48 $~lib/util/sort/COMPARATOR<~lib/string/String | null>~anonymous|0 $~lib/util/sort/COMPARATOR<~lib/string/String>~anonymous|0) + (elem (i32.const 0) $null $start:std/array~anonymous|0 $start:std/array~anonymous|1 $start:std/array~anonymous|2 $start:std/array~anonymous|3 $start:std/array~anonymous|2 $start:std/array~anonymous|5 $start:std/array~anonymous|6 $start:std/array~anonymous|7 $start:std/array~anonymous|8 $start:std/array~anonymous|9 $start:std/array~anonymous|10 $start:std/array~anonymous|11 $start:std/array~anonymous|12 $start:std/array~anonymous|13 $start:std/array~anonymous|14 $start:std/array~anonymous|15 $start:std/array~anonymous|16 $start:std/array~anonymous|17 $start:std/array~anonymous|16 $start:std/array~anonymous|19 $start:std/array~anonymous|20 $start:std/array~anonymous|21 $start:std/array~anonymous|22 $start:std/array~anonymous|23 $start:std/array~anonymous|24 $start:std/array~anonymous|25 $start:std/array~anonymous|26 $start:std/array~anonymous|27 $start:std/array~anonymous|28 $start:std/array~anonymous|29 $start:std/array~anonymous|29 $start:std/array~anonymous|31 $start:std/array~anonymous|32 $start:std/array~anonymous|33 $start:std/array~anonymous|29 $start:std/array~anonymous|35 $start:std/array~anonymous|29 $start:std/array~anonymous|29 $start:std/array~anonymous|31 $start:std/array~anonymous|32 $start:std/array~anonymous|33 $start:std/array~anonymous|29 $start:std/array~anonymous|35 $~lib/util/sort/COMPARATOR~anonymous|0 $~lib/util/sort/COMPARATOR~anonymous|0 $~lib/util/sort/COMPARATOR~anonymous|0 $~lib/util/sort/COMPARATOR~anonymous|0 $~lib/util/sort/COMPARATOR~anonymous|0 $~lib/util/sort/COMPARATOR~anonymous|0 $start:std/array~anonymous|44 $~lib/util/sort/COMPARATOR~anonymous|0 $start:std/array~anonymous|44 $start:std/array~anonymous|47 $start:std/array~anonymous|48 $~lib/util/sort/COMPARATOR<~lib/string/String | null>~anonymous|0 $~lib/util/sort/COMPARATOR<~lib/string/String | null>~anonymous|0) (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) (global $std/array/arr (mut i32) (i32.const 0)) - (global $~lib/builtins/i32.MAX_VALUE i32 (i32.const 2147483647)) (global $std/array/i (mut i32) (i32.const 0)) (global $~lib/argc (mut i32) (i32.const 0)) (global $~lib/math/random_seeded (mut i32) (i32.const 0)) @@ -219,23 +221,16 @@ (global $~lib/math/random_state1_64 (mut i64) (i64.const 0)) (global $~lib/math/random_state0_32 (mut i32) (i32.const 0)) (global $~lib/math/random_state1_32 (mut i32) (i32.const 0)) - (global $std/array/charset i32 (i32.const 3168)) (global $~lib/rt/purerc/CUR (mut i32) (i32.const 0)) (global $~lib/rt/purerc/END (mut i32) (i32.const 0)) (global $~lib/rt/purerc/ROOTS (mut i32) (i32.const 0)) - (global $~lib/ASC_SHRINK_LEVEL i32 (i32.const 0)) - (global $~lib/builtins/i32.MIN_VALUE i32 (i32.const -2147483648)) (global $~lib/util/number/_frc_plus (mut i64) (i64.const 0)) (global $~lib/util/number/_frc_minus (mut i64) (i64.const 0)) (global $~lib/util/number/_exp (mut i32) (i32.const 0)) (global $~lib/util/number/_K (mut i32) (i32.const 0)) (global $~lib/util/number/_frc_pow (mut i64) (i64.const 0)) (global $~lib/util/number/_exp_pow (mut i32) (i32.const 0)) - (global $~lib/builtins/u32.MAX_VALUE i32 (i32.const -1)) - (global $~lib/builtins/i64.MAX_VALUE i64 (i64.const 9223372036854775807)) (global $~lib/started (mut i32) (i32.const 0)) - (global $~lib/builtins/RTTI_BASE i32 (i32.const 7720)) - (global $~lib/builtins/HEAP_BASE i32 (i32.const 8040)) (export "memory" (memory $0)) (export "main" (func $std/array/main)) (export "__alloc" (func $~lib/rt/tlsf/__alloc)) @@ -251,16 +246,9 @@ (local $3 i32) (local $4 i32) (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) - (local $10 i32) - (local $11 i32) local.get $1 i32.load - local.set $2 - local.get $2 + local.tee $3 i32.const 1 i32.and i32.eqz @@ -272,17 +260,14 @@ call $~lib/builtins/abort unreachable end - local.get $2 - i32.const 3 - i32.const -1 - i32.xor - i32.and - local.set $3 local.get $3 + i32.const -4 + i32.and + local.tee $2 i32.const 16 i32.ge_u if (result i32) - local.get $3 + local.get $2 i32.const 1073741808 i32.lt_u else @@ -297,44 +282,37 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $2 i32.const 256 i32.lt_u - if - i32.const 0 - local.set $4 - local.get $3 + if (result i32) + local.get $2 i32.const 4 i32.shr_u - local.set $5 + local.set $2 + i32.const 0 else + local.get $2 i32.const 31 - local.get $3 + local.get $2 i32.clz i32.sub - local.set $4 - local.get $3 - local.get $4 + local.tee $3 i32.const 4 i32.sub i32.shr_u - i32.const 1 - i32.const 4 - i32.shl + i32.const 16 i32.xor - local.set $5 - local.get $4 - i32.const 8 - i32.const 1 + local.set $2 + local.get $3 + i32.const 7 i32.sub - i32.sub - local.set $4 end - local.get $4 + local.tee $3 i32.const 23 i32.lt_u if (result i32) - local.get $5 + local.get $2 i32.const 16 i32.lt_u else @@ -350,111 +328,76 @@ unreachable end local.get $1 - i32.load offset=16 - local.set $6 - local.get $1 i32.load offset=20 - local.set $7 - local.get $6 + local.set $4 + local.get $1 + i32.load offset=16 + local.tee $5 if - local.get $6 - local.get $7 + local.get $5 + local.get $4 i32.store offset=20 end - local.get $7 + local.get $4 if - local.get $7 - local.get $6 + local.get $4 + local.get $5 i32.store offset=16 end + local.get $3 + i32.const 4 + i32.shl + local.get $2 + i32.add + i32.const 2 + i32.shl + local.get $0 + i32.add + i32.load offset=96 local.get $1 - block $~lib/rt/tlsf/GETHEAD|inlined.0 (result i32) - local.get $0 - local.set $10 - local.get $4 - local.set $9 - local.get $5 - local.set $8 - local.get $10 - local.get $9 + i32.eq + if + local.get $3 i32.const 4 i32.shl - local.get $8 + local.get $2 i32.add i32.const 2 i32.shl + local.get $0 i32.add - i32.load offset=96 - end - i32.eq - if - block $~lib/rt/tlsf/SETHEAD|inlined.1 - local.get $0 - local.set $11 - local.get $4 - local.set $10 - local.get $5 - local.set $9 - local.get $7 - local.set $8 - local.get $11 - local.get $10 - i32.const 4 - i32.shl - local.get $9 - i32.add - i32.const 2 - i32.shl - i32.add - local.get $8 - i32.store offset=96 - end - local.get $7 + local.get $4 + i32.store offset=96 + local.get $4 i32.eqz if - block $~lib/rt/tlsf/GETSL|inlined.0 (result i32) - local.get $0 - local.set $9 - local.get $4 - local.set $8 - local.get $9 - local.get $8 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - end - local.set $8 - block $~lib/rt/tlsf/SETSL|inlined.1 - local.get $0 - local.set $11 - local.get $4 - local.set $10 - local.get $8 - i32.const 1 - local.get $5 - i32.shl - i32.const -1 - i32.xor - i32.and - local.tee $8 - local.set $9 - local.get $11 - local.get $10 - i32.const 2 - i32.shl - i32.add - local.get $9 - i32.store offset=4 - end - local.get $8 + local.get $3 + i32.const 2 + i32.shl + local.get $0 + i32.add + local.get $3 + i32.const 2 + i32.shl + local.get $0 + i32.add + i32.load offset=4 + i32.const 1 + local.get $2 + i32.shl + i32.const -1 + i32.xor + i32.and + local.tee $1 + i32.store offset=4 + local.get $1 i32.eqz if local.get $0 local.get $0 i32.load i32.const 1 - local.get $4 + local.get $3 i32.shl i32.const -1 i32.xor @@ -471,12 +414,6 @@ (local $5 i32) (local $6 i32) (local $7 i32) - (local $8 i32) - (local $9 i32) - (local $10 i32) - (local $11 i32) - (local $12 i32) - (local $13 i32) local.get $1 i32.eqz if @@ -489,8 +426,7 @@ end local.get $1 i32.load - local.set $2 - local.get $2 + local.tee $3 i32.const 1 i32.and i32.eqz @@ -502,43 +438,30 @@ call $~lib/builtins/abort unreachable end - block $~lib/rt/tlsf/GETRIGHT|inlined.0 (result i32) - local.get $1 - local.set $3 - local.get $3 - i32.const 16 - i32.add - local.get $3 - i32.load - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.add - end - local.set $4 - local.get $4 + local.get $1 + i32.const 16 + i32.add + local.get $1 i32.load - local.set $5 - local.get $5 + i32.const -4 + i32.and + i32.add + local.tee $4 + i32.load + local.tee $5 i32.const 1 i32.and if - local.get $2 - i32.const 3 - i32.const -1 - i32.xor + local.get $3 + i32.const -4 i32.and i32.const 16 i32.add local.get $5 - i32.const 3 - i32.const -1 - i32.xor + i32.const -4 i32.and i32.add - local.set $3 - local.get $3 + local.tee $2 i32.const 1073741808 i32.lt_u if @@ -546,50 +469,37 @@ local.get $4 call $~lib/rt/tlsf/removeBlock local.get $1 - local.get $2 + local.get $3 i32.const 3 i32.and - local.get $3 + local.get $2 i32.or - local.tee $2 + local.tee $3 i32.store - block $~lib/rt/tlsf/GETRIGHT|inlined.1 (result i32) - local.get $1 - local.set $6 - local.get $6 - i32.const 16 - i32.add - local.get $6 - i32.load - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.add - end - local.set $4 - local.get $4 + local.get $1 + i32.const 16 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $4 i32.load local.set $5 end end - local.get $2 + local.get $3 i32.const 2 i32.and if - block $~lib/rt/tlsf/GETFREELEFT|inlined.0 (result i32) - local.get $1 - local.set $3 - local.get $3 - i32.const 4 - i32.sub - i32.load - end - local.set $3 - local.get $3 + local.get $1 + i32.const 4 + i32.sub i32.load - local.set $6 - local.get $6 + local.tee $2 + i32.load + local.tee $6 i32.const 1 i32.and i32.eqz @@ -602,54 +512,48 @@ unreachable end local.get $6 - i32.const 3 - i32.const -1 - i32.xor + i32.const -4 i32.and i32.const 16 i32.add - local.get $2 - i32.const 3 - i32.const -1 - i32.xor + local.get $3 + i32.const -4 i32.and i32.add - local.set $7 - local.get $7 + local.tee $7 i32.const 1073741808 i32.lt_u - if + if (result i32) local.get $0 - local.get $3 + local.get $2 call $~lib/rt/tlsf/removeBlock - local.get $3 + local.get $2 local.get $6 i32.const 3 i32.and local.get $7 i32.or - local.tee $2 + local.tee $3 i32.store - local.get $3 - local.set $1 + local.get $2 + else + local.get $1 end + local.set $1 end local.get $4 local.get $5 i32.const 2 i32.or i32.store - local.get $2 - i32.const 3 - i32.const -1 - i32.xor + local.get $3 + i32.const -4 i32.and - local.set $8 - local.get $8 + local.tee $2 i32.const 16 i32.ge_u if (result i32) - local.get $8 + local.get $2 i32.const 1073741808 i32.lt_u else @@ -664,14 +568,13 @@ call $~lib/builtins/abort unreachable end + local.get $4 local.get $1 i32.const 16 i32.add - local.get $8 + local.get $2 i32.add - local.get $4 - i32.eq - i32.eqz + i32.ne if i32.const 0 i32.const 128 @@ -685,44 +588,37 @@ i32.sub local.get $1 i32.store - local.get $8 + local.get $2 i32.const 256 i32.lt_u - if - i32.const 0 - local.set $9 - local.get $8 + if (result i32) + local.get $2 i32.const 4 i32.shr_u - local.set $10 + local.set $4 + i32.const 0 else + local.get $2 i32.const 31 - local.get $8 + local.get $2 i32.clz i32.sub - local.set $9 - local.get $8 - local.get $9 + local.tee $2 i32.const 4 i32.sub i32.shr_u - i32.const 1 - i32.const 4 - i32.shl + i32.const 16 i32.xor - local.set $10 - local.get $9 - i32.const 8 - i32.const 1 + local.set $4 + local.get $2 + i32.const 7 i32.sub - i32.sub - local.set $9 end - local.get $9 + local.tee $3 i32.const 23 i32.lt_u if (result i32) - local.get $10 + local.get $4 i32.const 16 i32.lt_u else @@ -737,124 +633,83 @@ call $~lib/builtins/abort unreachable end - block $~lib/rt/tlsf/GETHEAD|inlined.1 (result i32) - local.get $0 - local.set $3 - local.get $9 - local.set $6 - local.get $10 - local.set $7 - local.get $3 - local.get $6 - i32.const 4 - i32.shl - local.get $7 - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - end - local.set $11 + local.get $3 + i32.const 4 + i32.shl + local.get $4 + i32.add + i32.const 2 + i32.shl + local.get $0 + i32.add + i32.load offset=96 + local.set $2 local.get $1 i32.const 0 i32.store offset=16 local.get $1 - local.get $11 + local.get $2 i32.store offset=20 - local.get $11 + local.get $2 if - local.get $11 + local.get $2 local.get $1 i32.store offset=16 end - block $~lib/rt/tlsf/SETHEAD|inlined.2 - local.get $0 - local.set $12 - local.get $9 - local.set $3 - local.get $10 - local.set $6 - local.get $1 - local.set $7 - local.get $12 - local.get $3 - i32.const 4 - i32.shl - local.get $6 - i32.add - i32.const 2 - i32.shl - i32.add - local.get $7 - i32.store offset=96 - end + local.get $3 + i32.const 4 + i32.shl + local.get $4 + i32.add + i32.const 2 + i32.shl + local.get $0 + i32.add + local.get $1 + i32.store offset=96 local.get $0 local.get $0 i32.load i32.const 1 - local.get $9 + local.get $3 i32.shl i32.or i32.store - block $~lib/rt/tlsf/SETSL|inlined.2 - local.get $0 - local.set $3 - local.get $9 - local.set $6 - block $~lib/rt/tlsf/GETSL|inlined.1 (result i32) - local.get $0 - local.set $13 - local.get $9 - local.set $12 - local.get $13 - local.get $12 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - end - i32.const 1 - local.get $10 - i32.shl - i32.or - local.set $7 - local.get $3 - local.get $6 - i32.const 2 - i32.shl - i32.add - local.get $7 - i32.store offset=4 - end + local.get $3 + i32.const 2 + i32.shl + local.get $0 + i32.add + local.get $3 + i32.const 2 + i32.shl + local.get $0 + i32.add + i32.load offset=4 + i32.const 1 + local.get $4 + i32.shl + i32.or + i32.store offset=4 ) - (func $~lib/rt/tlsf/addMemory (; 7 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/rt/tlsf/addMemory (; 7 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $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 $2 + i32.const 15 + i32.and + i32.eqz + i32.const 0 + local.get $1 + i32.const 15 + i32.and + i32.eqz + i32.const 0 local.get $1 local.get $2 i32.le_u - if (result i32) - local.get $1 - i32.const 15 - i32.and - i32.eqz - else - i32.const 0 - end - if (result i32) - local.get $2 - i32.const 15 - i32.and - i32.eqz - else - i32.const 0 - end + select + select i32.eqz if i32.const 0 @@ -864,23 +719,15 @@ call $~lib/builtins/abort unreachable end - block $~lib/rt/tlsf/GETTAIL|inlined.0 (result i32) - local.get $0 - local.set $3 - local.get $3 - i32.load offset=1568 - end - local.set $4 - i32.const 0 - local.set $5 - local.get $4 + local.get $0 + i32.load offset=1568 + local.tee $3 if local.get $1 - local.get $4 + local.get $3 i32.const 16 i32.add - i32.ge_u - i32.eqz + i32.lt_u if i32.const 0 i32.const 128 @@ -892,26 +739,23 @@ local.get $1 i32.const 16 i32.sub - local.get $4 + local.get $3 i32.eq if + local.get $3 + i32.load + local.set $4 local.get $1 i32.const 16 i32.sub local.set $1 - local.get $4 - i32.load - local.set $5 - else - nop end else local.get $1 local.get $0 i32.const 1572 i32.add - i32.ge_u - i32.eqz + i32.lt_u if i32.const 0 i32.const 128 @@ -924,101 +768,54 @@ local.get $2 local.get $1 i32.sub - local.set $6 - local.get $6 + local.tee $2 i32.const 48 i32.lt_u if - i32.const 0 return end - local.get $6 - i32.const 2 - i32.const 16 - i32.mul - i32.sub - local.set $7 local.get $1 - local.set $8 - local.get $8 - local.get $7 - i32.const 1 - i32.or - local.get $5 + local.get $4 i32.const 2 i32.and + local.get $2 + i32.const 32 + i32.sub + i32.const 1 + i32.or i32.or i32.store - local.get $8 + local.get $1 i32.const 0 i32.store offset=16 - local.get $8 + local.get $1 i32.const 0 i32.store offset=20 local.get $1 - local.get $6 + local.get $2 i32.add i32.const 16 i32.sub - local.set $4 - local.get $4 - i32.const 0 + local.tee $2 i32.const 2 - i32.or i32.store - block $~lib/rt/tlsf/SETTAIL|inlined.1 - local.get $0 - local.set $9 - local.get $4 - local.set $3 - local.get $9 - local.get $3 - i32.store offset=1568 - end local.get $0 - local.get $8 + local.get $2 + i32.store offset=1568 + local.get $0 + local.get $1 call $~lib/rt/tlsf/insertBlock - i32.const 1 ) (func $~lib/rt/tlsf/initializeRoot (; 8 ;) (type $FUNCSIG$v) (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) - (local $9 i32) - global.get $~lib/builtins/HEAP_BASE - i32.const 15 - i32.add - i32.const 15 - i32.const -1 - i32.xor - i32.and - local.set $0 + i32.const 1 current_memory - local.set $1 - local.get $0 - i32.const 1572 - i32.add - i32.const 65535 - i32.add - i32.const 65535 - i32.const -1 - i32.xor - i32.and - i32.const 16 - i32.shr_u - local.set $2 - local.get $2 - local.get $1 + local.tee $0 i32.gt_s if (result i32) - local.get $2 - local.get $1 + i32.const 1 + local.get $0 i32.sub grow_memory i32.const 0 @@ -1029,113 +826,70 @@ if unreachable end - local.get $0 - local.set $3 - local.get $3 + i32.const 8048 i32.const 0 i32.store - block $~lib/rt/tlsf/SETTAIL|inlined.0 - local.get $3 - local.set $5 - i32.const 0 - local.set $4 - local.get $5 - local.get $4 - i32.store offset=1568 - end - block $break|0 - i32.const 0 - local.set $4 - loop $repeat|0 - local.get $4 + i32.const 9616 + i32.const 0 + i32.store + i32.const 0 + local.set $0 + loop $repeat|0 + block $break|0 + local.get $0 i32.const 23 - i32.lt_u - i32.eqz + i32.ge_u br_if $break|0 - block $~lib/rt/tlsf/SETSL|inlined.0 - local.get $3 - local.set $7 - local.get $4 - local.set $6 - i32.const 0 - local.set $5 - local.get $7 - local.get $6 - i32.const 2 - i32.shl - i32.add - local.get $5 - i32.store offset=4 - end - block $break|1 - i32.const 0 - local.set $5 - loop $repeat|1 - local.get $5 + local.get $0 + i32.const 2 + i32.shl + i32.const 8048 + i32.add + i32.const 0 + i32.store offset=4 + i32.const 0 + local.set $1 + loop $repeat|1 + block $break|1 + local.get $1 i32.const 16 - i32.lt_u - i32.eqz + i32.ge_u br_if $break|1 - block $~lib/rt/tlsf/SETHEAD|inlined.0 - local.get $3 - local.set $9 - local.get $4 - local.set $8 - local.get $5 - local.set $7 - i32.const 0 - local.set $6 - local.get $9 - local.get $8 - i32.const 4 - i32.shl - local.get $7 - i32.add - i32.const 2 - i32.shl - i32.add - local.get $6 - i32.store offset=96 - end - local.get $5 + local.get $0 + i32.const 4 + i32.shl + local.get $1 + i32.add + i32.const 2 + i32.shl + i32.const 8048 + i32.add + i32.const 0 + i32.store offset=96 + local.get $1 i32.const 1 i32.add - local.set $5 + local.set $1 br $repeat|1 - unreachable end - unreachable end - local.get $4 + local.get $0 i32.const 1 i32.add - local.set $4 + local.set $0 br $repeat|0 - unreachable end - unreachable end - local.get $3 - local.get $0 - i32.const 1572 - i32.add - i32.const 15 - i32.add - i32.const 15 - i32.const -1 - i32.xor - i32.and + i32.const 8048 + i32.const 9632 current_memory i32.const 16 i32.shl call $~lib/rt/tlsf/addMemory - drop - local.get $3 + i32.const 8048 global.set $~lib/rt/tlsf/ROOT ) (func $~lib/rt/tlsf/prepareSize (; 9 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) local.get $0 i32.const 1073741808 i32.ge_u @@ -1150,83 +904,64 @@ local.get $0 i32.const 15 i32.add - i32.const 15 - i32.const -1 - i32.xor + i32.const -16 i32.and - local.tee $1 + local.tee $0 + i32.const 16 + local.get $0 i32.const 16 - local.tee $2 - local.get $1 - local.get $2 i32.gt_u select ) (func $~lib/rt/tlsf/searchBlock (; 10 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result 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 $1 i32.const 256 i32.lt_u - if - i32.const 0 - local.set $2 + if (result i32) local.get $1 i32.const 4 i32.shr_u - local.set $3 + local.set $1 + i32.const 0 else local.get $1 i32.const 536870904 i32.lt_u - if (result i32) - local.get $1 + if i32.const 1 i32.const 27 local.get $1 i32.clz i32.sub i32.shl + local.get $1 i32.add i32.const 1 i32.sub - else - local.get $1 + local.set $1 end - local.set $4 + local.get $1 i32.const 31 - local.get $4 + local.get $1 i32.clz i32.sub - local.set $2 - local.get $4 - local.get $2 + local.tee $2 i32.const 4 i32.sub i32.shr_u - i32.const 1 - i32.const 4 - i32.shl + i32.const 16 i32.xor - local.set $3 + local.set $1 local.get $2 - i32.const 8 - i32.const 1 + i32.const 7 i32.sub - i32.sub - local.set $2 end - local.get $2 + local.tee $2 i32.const 23 i32.lt_u if (result i32) - local.get $3 + local.get $1 i32.const 16 i32.lt_u else @@ -1241,62 +976,49 @@ call $~lib/builtins/abort unreachable end - block $~lib/rt/tlsf/GETSL|inlined.2 (result i32) - local.get $0 - local.set $5 - local.get $2 - local.set $4 - local.get $5 - local.get $4 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - end - i32.const 0 + local.get $2 + i32.const 2 + i32.shl + local.get $0 + i32.add + i32.load offset=4 i32.const -1 - i32.xor - local.get $3 + local.get $1 i32.shl i32.and - local.set $6 - local.get $6 - i32.eqz - if + local.tee $1 + if (result i32) + local.get $1 + i32.ctz + local.get $2 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + local.get $0 + i32.add + i32.load offset=96 + else local.get $0 i32.load - i32.const 0 i32.const -1 - i32.xor local.get $2 i32.const 1 i32.add i32.shl i32.and - local.set $4 - local.get $4 - i32.eqz - if - i32.const 0 - local.set $7 - else - local.get $4 + local.tee $1 + if (result i32) + local.get $1 i32.ctz - local.set $2 - block $~lib/rt/tlsf/GETSL|inlined.3 (result i32) - local.get $0 - local.set $8 - local.get $2 - local.set $5 - local.get $8 - local.get $5 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - end - local.set $6 - local.get $6 + local.tee $1 + i32.const 2 + i32.shl + local.get $0 + i32.add + i32.load offset=4 + local.tee $2 i32.eqz if i32.const 0 @@ -1306,85 +1028,43 @@ call $~lib/builtins/abort unreachable end - block $~lib/rt/tlsf/GETHEAD|inlined.2 (result i32) - local.get $0 - local.set $9 - local.get $2 - local.set $8 - local.get $6 - i32.ctz - local.set $5 - local.get $9 - local.get $8 - i32.const 4 - i32.shl - local.get $5 - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - end - local.set $7 - end - else - block $~lib/rt/tlsf/GETHEAD|inlined.3 (result i32) - local.get $0 - local.set $8 local.get $2 - local.set $5 - local.get $6 i32.ctz - local.set $4 - local.get $8 - local.get $5 + local.get $1 i32.const 4 i32.shl - local.get $4 i32.add i32.const 2 i32.shl + local.get $0 i32.add i32.load offset=96 + else + i32.const 0 end - local.set $7 end - local.get $7 ) (func $~lib/rt/tlsf/growMemory (; 11 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) current_memory - local.set $2 + local.tee $2 local.get $1 i32.const 65535 i32.add - i32.const 65535 - i32.const -1 - i32.xor + i32.const -65536 i32.and i32.const 16 i32.shr_u - local.set $3 + local.tee $1 local.get $2 - local.tee $4 - local.get $3 - local.tee $5 - local.get $4 - local.get $5 + local.get $1 i32.gt_s select - local.set $6 - local.get $6 grow_memory i32.const 0 i32.lt_s if - local.get $3 + local.get $1 grow_memory i32.const 0 i32.lt_s @@ -1392,30 +1072,24 @@ unreachable end end - current_memory - local.set $7 local.get $0 local.get $2 i32.const 16 i32.shl - local.get $7 + current_memory i32.const 16 i32.shl call $~lib/rt/tlsf/addMemory - drop ) (func $~lib/rt/tlsf/prepareBlock (; 12 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) - (local $5 i32) local.get $1 i32.load local.set $3 local.get $2 i32.const 15 i32.and - i32.eqz - i32.eqz if i32.const 0 i32.const 128 @@ -1425,22 +1099,19 @@ unreachable end local.get $3 - i32.const 3 - i32.const -1 - i32.xor + i32.const -4 i32.and local.get $2 i32.sub - local.set $4 - local.get $4 + local.tee $4 i32.const 32 i32.ge_u if local.get $1 - local.get $2 local.get $3 i32.const 2 i32.and + local.get $2 i32.or i32.store local.get $1 @@ -1448,8 +1119,7 @@ i32.add local.get $2 i32.add - local.set $5 - local.get $5 + local.tee $1 local.get $4 i32.const 16 i32.sub @@ -1457,48 +1127,32 @@ i32.or i32.store local.get $0 - local.get $5 + local.get $1 call $~lib/rt/tlsf/insertBlock else local.get $1 local.get $3 - i32.const 1 - i32.const -1 - i32.xor + i32.const -2 i32.and i32.store - block $~lib/rt/tlsf/GETRIGHT|inlined.3 (result i32) - local.get $1 - local.set $5 - local.get $5 - i32.const 16 - i32.add - local.get $5 - i32.load - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.add - end - block $~lib/rt/tlsf/GETRIGHT|inlined.2 (result i32) - local.get $1 - local.set $5 - local.get $5 - i32.const 16 - i32.add - local.get $5 - i32.load - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.add - end + local.get $1 + i32.const 16 + i32.add + local.get $1 i32.load - i32.const 2 - i32.const -1 - i32.xor + i32.const -4 + i32.and + i32.add + local.get $1 + i32.const 16 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + i32.load + i32.const -3 i32.and i32.store end @@ -1506,24 +1160,21 @@ (func $~lib/rt/tlsf/allocateBlock (; 13 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) + local.get $0 local.get $1 call $~lib/rt/tlsf/prepareSize - local.set $2 - local.get $0 - local.get $2 + local.tee $3 call $~lib/rt/tlsf/searchBlock - local.set $3 - local.get $3 + local.tee $2 i32.eqz if local.get $0 - local.get $2 + local.get $3 call $~lib/rt/tlsf/growMemory local.get $0 - local.get $2 - call $~lib/rt/tlsf/searchBlock - local.set $3 local.get $3 + call $~lib/rt/tlsf/searchBlock + local.tee $2 i32.eqz if i32.const 0 @@ -1534,15 +1185,12 @@ unreachable end end - local.get $3 - i32.load - i32.const 3 - i32.const -1 - i32.xor - i32.and local.get $2 - i32.ge_u - i32.eqz + i32.load + i32.const -4 + i32.and + local.get $3 + i32.lt_u if i32.const 0 i32.const 128 @@ -1551,47 +1199,41 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $2 i32.const 0 i32.store offset=4 - local.get $3 + local.get $2 local.get $1 i32.store offset=12 local.get $0 - local.get $3 + local.get $2 call $~lib/rt/tlsf/removeBlock local.get $0 - local.get $3 local.get $2 - call $~lib/rt/tlsf/prepareBlock local.get $3 + call $~lib/rt/tlsf/prepareBlock + local.get $2 ) (func $~lib/rt/tlsf/__alloc (; 14 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) - (local $3 i32) global.get $~lib/rt/tlsf/ROOT - local.set $2 - local.get $2 - i32.eqz - if + local.tee $2 + if (result i32) + local.get $2 + else call $~lib/rt/tlsf/initializeRoot global.get $~lib/rt/tlsf/ROOT - local.set $2 end - local.get $2 local.get $0 call $~lib/rt/tlsf/allocateBlock - local.set $3 - local.get $3 + local.tee $0 local.get $1 i32.store offset=8 - local.get $3 + local.get $0 i32.const 16 i32.add ) (func $~lib/arraybuffer/ArrayBufferView#constructor (; 15 ;) (type $FUNCSIG$iiii) (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 @@ -1608,66 +1250,56 @@ local.get $1 local.get $2 i32.shl - local.tee $1 + local.tee $2 i32.const 15 call $~lib/rt/tlsf/__alloc - local.set $3 - block (result i32) - local.get $0 - i32.eqz - if - i32.const 12 - i32.const 14 - call $~lib/rt/tlsf/__alloc - call $~lib/rt/purerc/__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.set $1 + local.get $0 + i32.eqz + if + i32.const 12 + i32.const 14 + call $~lib/rt/tlsf/__alloc + call $~lib/rt/purerc/__retain + local.set $0 end - local.tee $4 - local.get $3 - local.get $4 + 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.get $1 + local.get $0 i32.load call $~lib/rt/purerc/__retainRelease i32.store local.get $0 - local.get $3 + local.get $1 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 (; 16 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - local.get $0 - if (result i32) - local.get $0 - else - i32.const 16 - i32.const 17 - call $~lib/rt/tlsf/__alloc - call $~lib/rt/purerc/__retain - end - local.get $1 + (func $~lib/array/Array#constructor (; 16 ;) (type $FUNCSIG$i) (result i32) + (local $0 i32) + i32.const 16 + i32.const 17 + call $~lib/rt/tlsf/__alloc + call $~lib/rt/purerc/__retain + i32.const 0 i32.const 2 call $~lib/arraybuffer/ArrayBufferView#constructor - local.tee $2 - local.set $0 - local.get $0 + local.tee $0 i32.const 0 i32.store offset=12 local.get $0 - local.get $1 + i32.const 0 i32.store offset=12 local.get $0 ) @@ -1677,134 +1309,31 @@ drop local.get $0 call $~lib/rt/purerc/__release - i32.const 1 - if (result i32) - local.get $0 - i32.const 0 - i32.ne - else - i32.const 0 - end + local.get $0 + i32.const 0 + i32.ne ) - (func $~lib/array/Array.isArray<~lib/array/Array> (; 18 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - local.get $0 - call $~lib/rt/purerc/__retain - drop - local.get $0 - call $~lib/rt/purerc/__release - i32.const 1 - if (result i32) - local.get $0 - i32.const 0 - i32.ne - else - i32.const 0 - end - ) - (func $std/array/P#constructor (; 19 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - local.get $0 - i32.eqz - if - i32.const 0 - i32.const 18 - call $~lib/rt/tlsf/__alloc - call $~lib/rt/purerc/__retain - local.set $0 - end - local.get $0 - ) - (func $~lib/array/Array.isArray (; 20 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/array/Array.isArray (; 18 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 call $~lib/rt/purerc/__retain drop local.get $0 call $~lib/rt/purerc/__release i32.const 0 - if (result i32) - local.get $0 - i32.const 0 - i32.ne - else - i32.const 0 - end ) - (func $~lib/typedarray/Uint8Array#constructor (; 21 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - local.get $0 - if (result i32) - local.get $0 - else - i32.const 12 - i32.const 19 - call $~lib/rt/tlsf/__alloc - call $~lib/rt/purerc/__retain - end - local.get $1 - i32.const 0 - call $~lib/arraybuffer/ArrayBufferView#constructor - local.tee $2 - local.set $0 - local.get $0 - ) - (func $~lib/array/Array.isArray<~lib/typedarray/Uint8Array> (; 22 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - local.get $0 - call $~lib/rt/purerc/__retain - drop - local.get $0 - call $~lib/rt/purerc/__release - i32.const 0 - if (result i32) - local.get $0 - i32.const 0 - i32.ne - else - i32.const 0 - end - ) - (func $~lib/array/Array.isArray (; 23 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - i32.const 0 - if (result i32) - local.get $0 - i32.const 0 - i32.ne - else - i32.const 0 - end - ) - (func $~lib/array/Array.isArray<~lib/string/String> (; 24 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - local.get $0 - call $~lib/rt/purerc/__retain - drop - local.get $0 - call $~lib/rt/purerc/__release - i32.const 0 - if (result i32) - local.get $0 - i32.const 0 - i32.ne - else - i32.const 0 - end - ) - (func $~lib/rt/purerc/increment (; 25 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $~lib/rt/purerc/increment (; 19 ;) (type $FUNCSIG$vi) (param $0 i32) (local $1 i32) local.get $0 i32.load offset=4 - local.set $1 - local.get $1 - i32.const 268435455 - i32.const -1 - i32.xor + local.tee $1 + i32.const -268435456 i32.and local.get $1 i32.const 1 i32.add - i32.const 268435455 - i32.const -1 - i32.xor + i32.const -268435456 i32.and - i32.eq - i32.eqz + i32.ne if i32.const 0 i32.const 320 @@ -1824,8 +1353,6 @@ i32.load i32.const 1 i32.and - i32.eqz - i32.eqz if i32.const 0 i32.const 320 @@ -1835,9 +1362,9 @@ unreachable end ) - (func $~lib/rt/purerc/__retain (; 26 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/rt/purerc/__retain (; 20 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 - global.get $~lib/builtins/HEAP_BASE + i32.const 8040 i32.gt_u if local.get $0 @@ -1847,580 +1374,494 @@ end local.get $0 ) - (func $~lib/memory/memory.copy (; 27 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/memory/memory.copy (; 21 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) - (local $5 i32) - (local $6 i32) block $~lib/util/memory/memmove|inlined.0 - local.get $0 - local.set $5 - local.get $1 - local.set $4 local.get $2 local.set $3 - local.get $5 - local.get $4 + local.get $0 + local.get $1 i32.eq - if - br $~lib/util/memory/memmove|inlined.0 - end - local.get $5 - local.get $4 + br_if $~lib/util/memory/memmove|inlined.0 + local.get $0 + local.get $1 i32.lt_u if - local.get $4 + local.get $1 i32.const 7 i32.and - local.get $5 + local.get $0 i32.const 7 i32.and i32.eq if - block $break|0 - loop $continue|0 - local.get $5 - i32.const 7 - i32.and - if - local.get $3 - i32.eqz - if - br $~lib/util/memory/memmove|inlined.0 - end - local.get $3 - i32.const 1 - i32.sub - local.set $3 - block (result i32) - local.get $5 - local.tee $6 - i32.const 1 - i32.add - local.set $5 - local.get $6 - end - block (result i32) - local.get $4 - local.tee $6 - i32.const 1 - i32.add - local.set $4 - local.get $6 - end - i32.load8_u - i32.store8 - br $continue|0 - end - end - end - block $break|1 - loop $continue|1 - local.get $3 - i32.const 8 - i32.ge_u - if - local.get $5 - local.get $4 - i64.load - i64.store - local.get $3 - i32.const 8 - i32.sub - local.set $3 - local.get $5 - i32.const 8 - i32.add - local.set $5 - local.get $4 - i32.const 8 - i32.add - local.set $4 - br $continue|1 - end - end - end - end - block $break|2 - loop $continue|2 - local.get $3 + loop $continue|0 + local.get $0 + i32.const 7 + i32.and if - block (result i32) - local.get $5 - local.tee $6 - i32.const 1 - i32.add - local.set $5 - local.get $6 - end - block (result i32) - local.get $4 - local.tee $6 - i32.const 1 - i32.add - local.set $4 - local.get $6 - end - i32.load8_u - i32.store8 + local.get $3 + i32.eqz + br_if $~lib/util/memory/memmove|inlined.0 local.get $3 i32.const 1 i32.sub local.set $3 - br $continue|2 + local.get $0 + local.tee $2 + i32.const 1 + i32.add + local.set $0 + local.get $1 + local.tee $4 + i32.const 1 + i32.add + local.set $1 + local.get $2 + local.get $4 + i32.load8_u + i32.store8 + br $continue|0 + end + end + loop $continue|1 + local.get $3 + i32.const 8 + i32.ge_u + if + local.get $0 + local.get $1 + i64.load + i64.store + local.get $3 + i32.const 8 + i32.sub + local.set $3 + local.get $0 + i32.const 8 + i32.add + local.set $0 + local.get $1 + i32.const 8 + i32.add + local.set $1 + br $continue|1 end end end + loop $continue|2 + local.get $3 + if + local.get $0 + local.tee $2 + i32.const 1 + i32.add + local.set $0 + local.get $1 + local.tee $4 + i32.const 1 + i32.add + local.set $1 + local.get $2 + local.get $4 + i32.load8_u + i32.store8 + local.get $3 + i32.const 1 + i32.sub + local.set $3 + br $continue|2 + end + end else - local.get $4 + local.get $1 i32.const 7 i32.and - local.get $5 + local.get $0 i32.const 7 i32.and i32.eq if - block $break|3 - loop $continue|3 - local.get $5 - local.get $3 - i32.add - i32.const 7 - i32.and - if - local.get $3 - i32.eqz - if - br $~lib/util/memory/memmove|inlined.0 - end - local.get $5 - local.get $3 - i32.const 1 - i32.sub - local.tee $3 - i32.add - local.get $4 - local.get $3 - i32.add - i32.load8_u - i32.store8 - br $continue|3 - end - end - end - block $break|4 - loop $continue|4 - local.get $3 - i32.const 8 - i32.ge_u - if - local.get $3 - i32.const 8 - i32.sub - local.set $3 - local.get $5 - local.get $3 - i32.add - local.get $4 - local.get $3 - i32.add - i64.load - i64.store - br $continue|4 - end - end - end - end - block $break|5 - loop $continue|5 + loop $continue|3 + local.get $0 local.get $3 + i32.add + i32.const 7 + i32.and if - local.get $5 + local.get $3 + i32.eqz + br_if $~lib/util/memory/memmove|inlined.0 + local.get $0 local.get $3 i32.const 1 i32.sub local.tee $3 i32.add - local.get $4 + local.get $1 local.get $3 i32.add i32.load8_u i32.store8 - br $continue|5 + br $continue|3 end end + loop $continue|4 + local.get $3 + i32.const 8 + i32.ge_u + if + local.get $0 + local.get $3 + i32.const 8 + i32.sub + local.tee $3 + i32.add + local.get $1 + local.get $3 + i32.add + i64.load + i64.store + br $continue|4 + end + end + end + loop $continue|5 + local.get $3 + if + local.get $0 + local.get $3 + i32.const 1 + i32.sub + local.tee $3 + i32.add + local.get $1 + local.get $3 + i32.add + i32.load8_u + i32.store8 + br $continue|5 + end end end end ) - (func $~lib/rt/common/__allocArray (; 28 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + (func $~lib/rt/common/__allocArray (; 22 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) (local $4 i32) - (local $5 i32) - (local $6 i32) i32.const 16 local.get $2 call $~lib/rt/tlsf/__alloc - local.set $4 + local.tee $2 local.get $0 local.get $1 i32.shl - local.set $5 - local.get $5 + local.tee $1 i32.const 15 call $~lib/rt/tlsf/__alloc - local.set $6 - local.get $4 - local.get $6 + local.tee $4 call $~lib/rt/purerc/__retain i32.store + local.get $2 local.get $4 - local.get $6 i32.store offset=4 - local.get $4 - local.get $5 + local.get $2 + local.get $1 i32.store offset=8 - local.get $4 + local.get $2 local.get $0 i32.store offset=12 local.get $3 if - local.get $6 + local.get $4 local.get $3 - local.get $5 + local.get $1 call $~lib/memory/memory.copy end - local.get $4 + local.get $2 ) - (func $~lib/memory/memory.fill (; 29 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/memory/memory.fill (; 23 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i64) + (local $4 i64) block $~lib/util/memory/memset|inlined.0 - local.get $0 - local.set $5 - local.get $1 - local.set $4 local.get $2 - local.set $3 - local.get $3 i32.eqz - if - br $~lib/util/memory/memset|inlined.0 - end - local.get $5 - local.get $4 + br_if $~lib/util/memory/memset|inlined.0 + local.get $0 + local.get $1 i32.store8 - local.get $5 - local.get $3 + local.get $0 + local.get $2 i32.add i32.const 1 i32.sub - local.get $4 + local.get $1 i32.store8 - local.get $3 + local.get $2 i32.const 2 i32.le_u - if - br $~lib/util/memory/memset|inlined.0 - end - local.get $5 + br_if $~lib/util/memory/memset|inlined.0 + local.get $0 i32.const 1 i32.add - local.get $4 + local.get $1 i32.store8 - local.get $5 + local.get $0 i32.const 2 i32.add - local.get $4 + local.get $1 i32.store8 - local.get $5 - local.get $3 + local.get $0 + local.get $2 i32.add + local.tee $3 i32.const 2 i32.sub - local.get $4 + local.get $1 i32.store8 - local.get $5 local.get $3 - i32.add i32.const 3 i32.sub - local.get $4 + local.get $1 i32.store8 - local.get $3 + local.get $2 i32.const 6 i32.le_u - if - br $~lib/util/memory/memset|inlined.0 - end - local.get $5 + br_if $~lib/util/memory/memset|inlined.0 + local.get $0 i32.const 3 i32.add - local.get $4 + local.get $1 i32.store8 - local.get $5 - local.get $3 + local.get $0 + local.get $2 i32.add i32.const 4 i32.sub - local.get $4 + local.get $1 i32.store8 - local.get $3 + local.get $2 i32.const 8 i32.le_u - if - br $~lib/util/memory/memset|inlined.0 - end + br_if $~lib/util/memory/memset|inlined.0 + local.get $2 i32.const 0 - local.get $5 + local.get $0 i32.sub i32.const 3 i32.and - local.set $6 - local.get $5 - local.get $6 - i32.add - local.set $5 - local.get $3 - local.get $6 + local.tee $2 i32.sub local.set $3 + local.get $0 + local.get $2 + i32.add + local.tee $2 + local.get $1 + i32.const 255 + i32.and + i32.const 16843009 + i32.mul + local.tee $0 + i32.store local.get $3 i32.const -4 i32.and - local.set $3 - i32.const -1 - i32.const 255 - i32.div_u - local.get $4 - i32.const 255 - i32.and - i32.mul - local.set $7 - local.get $5 - local.get $7 - i32.store - local.get $5 - local.get $3 + local.tee $3 + local.get $2 i32.add i32.const 4 i32.sub - local.get $7 + local.get $0 i32.store local.get $3 i32.const 8 i32.le_u - if - br $~lib/util/memory/memset|inlined.0 - end - local.get $5 + br_if $~lib/util/memory/memset|inlined.0 + local.get $2 i32.const 4 i32.add - local.get $7 + local.get $0 i32.store - local.get $5 + local.get $2 i32.const 8 i32.add - local.get $7 + local.get $0 i32.store - local.get $5 + local.get $2 local.get $3 i32.add + local.tee $1 i32.const 12 i32.sub - local.get $7 + local.get $0 i32.store - local.get $5 - local.get $3 - i32.add + local.get $1 i32.const 8 i32.sub - local.get $7 + local.get $0 i32.store local.get $3 i32.const 24 i32.le_u - if - br $~lib/util/memory/memset|inlined.0 - end - local.get $5 + br_if $~lib/util/memory/memset|inlined.0 + local.get $2 i32.const 12 i32.add - local.get $7 + local.get $0 i32.store - local.get $5 + local.get $2 i32.const 16 i32.add - local.get $7 + local.get $0 i32.store - local.get $5 + local.get $2 i32.const 20 i32.add - local.get $7 + local.get $0 i32.store - local.get $5 + local.get $2 i32.const 24 i32.add - local.get $7 + local.get $0 i32.store - local.get $5 + local.get $2 local.get $3 i32.add + local.tee $1 i32.const 28 i32.sub - local.get $7 + local.get $0 i32.store - local.get $5 - local.get $3 - i32.add + local.get $1 i32.const 24 i32.sub - local.get $7 + local.get $0 i32.store - local.get $5 - local.get $3 - i32.add + local.get $1 i32.const 20 i32.sub - local.get $7 + local.get $0 i32.store - local.get $5 - local.get $3 - i32.add + local.get $1 i32.const 16 i32.sub - local.get $7 + local.get $0 i32.store - i32.const 24 - local.get $5 + local.get $2 + local.get $2 i32.const 4 i32.and + i32.const 24 i32.add - local.set $6 - local.get $5 - local.get $6 + local.tee $2 i32.add - local.set $5 + local.set $1 local.get $3 - local.get $6 + local.get $2 i32.sub - local.set $3 - local.get $7 - i64.extend_i32_u - local.get $7 + local.set $2 + local.get $0 i64.extend_i32_u + local.tee $4 + local.get $4 i64.const 32 i64.shl i64.or - local.set $8 - block $break|0 - loop $continue|0 - local.get $3 + local.set $4 + loop $continue|0 + local.get $2 + i32.const 32 + i32.ge_u + if + local.get $1 + local.get $4 + i64.store + local.get $1 + i32.const 8 + i32.add + local.get $4 + i64.store + local.get $1 + i32.const 16 + i32.add + local.get $4 + i64.store + local.get $1 + i32.const 24 + i32.add + local.get $4 + i64.store + local.get $2 i32.const 32 - i32.ge_u - if - local.get $5 - local.get $8 - i64.store - local.get $5 - i32.const 8 - i32.add - local.get $8 - i64.store - local.get $5 - i32.const 16 - i32.add - local.get $8 - i64.store - local.get $5 - i32.const 24 - i32.add - local.get $8 - i64.store - local.get $3 - i32.const 32 - i32.sub - local.set $3 - local.get $5 - i32.const 32 - i32.add - local.set $5 - br $continue|0 - end + i32.sub + local.set $2 + local.get $1 + i32.const 32 + i32.add + local.set $1 + br $continue|0 end end end ) - (func $~lib/array/Array#fill (; 30 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + (func $~lib/array/Array#fill (; 24 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) (local $4 i32) (local $5 i32) - (local $6 i32) - (local $7 i32) local.get $0 i32.load offset=4 - local.set $4 + local.set $5 local.get $0 i32.load offset=12 - local.set $5 + local.set $4 local.get $2 i32.const 0 i32.lt_s if (result i32) - local.get $5 local.get $2 + local.get $4 i32.add - local.tee $6 + local.tee $2 + i32.const 0 + local.get $2 i32.const 0 - local.tee $7 - local.get $6 - local.get $7 i32.gt_s select else local.get $2 - local.tee $6 - local.get $5 - local.tee $7 - local.get $6 - local.get $7 - i32.lt_s - select - end - local.set $2 - local.get $3 - i32.const 0 - i32.lt_s - if (result i32) - local.get $5 - local.get $3 - i32.add - local.tee $6 - i32.const 0 - local.tee $7 - local.get $6 - local.get $7 - i32.gt_s - select - else - local.get $3 - local.tee $6 - local.get $5 - local.tee $7 - local.get $6 - local.get $7 - i32.lt_s - select - end - local.set $3 - local.get $2 - local.get $3 - i32.lt_s - if local.get $4 local.get $2 + local.get $4 + i32.lt_s + select + end + local.tee $2 + local.get $3 + i32.const 0 + i32.lt_s + if (result i32) + local.get $3 + local.get $4 + i32.add + local.tee $3 + i32.const 0 + local.get $3 + i32.const 0 + i32.gt_s + select + else + local.get $3 + local.get $4 + local.get $3 + local.get $4 + i32.lt_s + select + end + local.tee $3 + i32.lt_s + if + local.get $2 + local.get $5 i32.add local.get $1 local.get $3 @@ -2431,25 +1872,10 @@ local.get $0 call $~lib/rt/purerc/__retain ) - (func $~lib/array/Array#get:length (; 31 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - local.get $0 - i32.load offset=12 - ) - (func $~lib/array/Array#__unchecked_get (; 32 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - local.get $0 - i32.load offset=4 - local.get $1 - i32.const 0 - i32.shl - i32.add - i32.load8_u - ) - (func $~lib/array/Array#__get (; 33 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array#__get (; 25 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $1 local.get $0 i32.load offset=8 - i32.const 0 - i32.shr_u i32.ge_u if i32.const 400 @@ -2460,10 +1886,13 @@ unreachable end local.get $0 + i32.load offset=4 local.get $1 - call $~lib/array/Array#__unchecked_get + i32.add + i32.load8_u ) - (func $std/array/isArraysEqual (; 34 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/array/isArraysEqual (; 26 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) (local $3 i32) local.get $0 call $~lib/rt/purerc/__retain @@ -2471,68 +1900,47 @@ local.get $1 call $~lib/rt/purerc/__retain drop - local.get $2 - i32.eqz - if - local.get $0 - call $~lib/array/Array#get:length - local.set $2 - local.get $2 - local.get $1 - call $~lib/array/Array#get:length - i32.ne - if + block $folding-inner1 + block $folding-inner0 local.get $0 - call $~lib/rt/purerc/__release + i32.load offset=12 + local.tee $3 local.get $1 - call $~lib/rt/purerc/__release - i32.const 0 - return - end - local.get $0 - local.get $1 - i32.eq - if - local.get $0 - call $~lib/rt/purerc/__release - local.get $1 - call $~lib/rt/purerc/__release - i32.const 1 - return - end - end - block $break|0 - i32.const 0 - local.set $3 - loop $repeat|0 - local.get $3 - local.get $2 - i32.lt_s - i32.eqz - br_if $break|0 - local.get $0 - local.get $3 - call $~lib/array/Array#__get - local.get $1 - local.get $3 - call $~lib/array/Array#__get + i32.load offset=12 i32.ne - if - local.get $0 - call $~lib/rt/purerc/__release - local.get $1 - call $~lib/rt/purerc/__release - i32.const 0 - return + br_if $folding-inner0 + local.get $0 + local.get $1 + i32.eq + br_if $folding-inner1 + loop $repeat|0 + local.get $2 + local.get $3 + i32.lt_s + if + local.get $0 + local.get $2 + call $~lib/array/Array#__get + local.get $1 + local.get $2 + call $~lib/array/Array#__get + i32.ne + br_if $folding-inner0 + local.get $2 + i32.const 1 + i32.add + local.set $2 + br $repeat|0 + end end - local.get $3 - i32.const 1 - i32.add - local.set $3 - br $repeat|0 - unreachable + br $folding-inner1 end - unreachable + local.get $0 + call $~lib/rt/purerc/__release + local.get $1 + call $~lib/rt/purerc/__release + i32.const 0 + return end local.get $0 call $~lib/rt/purerc/__release @@ -2540,38 +1948,33 @@ call $~lib/rt/purerc/__release i32.const 1 ) - (func $~lib/array/Array#fill (; 35 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + (func $~lib/array/Array#fill (; 27 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) (local $4 i32) (local $5 i32) - (local $6 i32) - (local $7 i32) local.get $0 i32.load offset=4 - local.set $4 + local.set $5 local.get $0 i32.load offset=12 - local.set $5 + local.set $4 local.get $2 i32.const 0 i32.lt_s if (result i32) - local.get $5 local.get $2 + local.get $4 i32.add - local.tee $6 + local.tee $2 + i32.const 0 + local.get $2 i32.const 0 - local.tee $7 - local.get $6 - local.get $7 i32.gt_s select else local.get $2 - local.tee $6 - local.get $5 - local.tee $7 - local.get $6 - local.get $7 + local.get $4 + local.get $2 + local.get $4 i32.lt_s select end @@ -2580,38 +1983,34 @@ i32.const 0 i32.lt_s if (result i32) - local.get $5 local.get $3 + local.get $4 i32.add - local.tee $6 + local.tee $3 + i32.const 0 + local.get $3 i32.const 0 - local.tee $7 - local.get $6 - local.get $7 i32.gt_s select else local.get $3 - local.tee $6 - local.get $5 - local.tee $7 - local.get $6 - local.get $7 + local.get $4 + local.get $3 + local.get $4 i32.lt_s select end local.set $3 - block $break|0 - loop $repeat|0 - local.get $2 - local.get $3 - i32.lt_s - i32.eqz - br_if $break|0 - local.get $4 + loop $repeat|0 + local.get $2 + local.get $3 + i32.ge_s + i32.eqz + if local.get $2 i32.const 2 i32.shl + local.get $5 i32.add local.get $1 i32.store @@ -2620,27 +2019,12 @@ i32.add local.set $2 br $repeat|0 - unreachable end - unreachable end local.get $0 call $~lib/rt/purerc/__retain ) - (func $~lib/array/Array#get:length (; 36 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - local.get $0 - i32.load offset=12 - ) - (func $~lib/array/Array#__unchecked_get (; 37 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - local.get $0 - i32.load offset=4 - local.get $1 - i32.const 2 - i32.shl - i32.add - i32.load - ) - (func $~lib/array/Array#__get (; 38 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array#__get (; 28 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $1 local.get $0 i32.load offset=8 @@ -2656,10 +2040,14 @@ unreachable end local.get $0 + i32.load offset=4 local.get $1 - call $~lib/array/Array#__unchecked_get + i32.const 2 + i32.shl + i32.add + i32.load ) - (func $std/array/isArraysEqual (; 39 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/array/isArraysEqual (; 29 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) local.get $0 call $~lib/rt/purerc/__retain @@ -2667,68 +2055,53 @@ local.get $1 call $~lib/rt/purerc/__retain drop - local.get $2 - i32.eqz - if - local.get $0 - call $~lib/array/Array#get:length - local.set $2 - local.get $2 - local.get $1 - call $~lib/array/Array#get:length - i32.ne - if - local.get $0 - call $~lib/rt/purerc/__release - local.get $1 - call $~lib/rt/purerc/__release - i32.const 0 - return - end - local.get $0 - local.get $1 - i32.eq - if - local.get $0 - call $~lib/rt/purerc/__release - local.get $1 - call $~lib/rt/purerc/__release - i32.const 1 - return - end - end - block $break|0 - i32.const 0 - local.set $3 - loop $repeat|0 - local.get $3 + block $folding-inner1 + block $folding-inner0 local.get $2 - i32.lt_s i32.eqz - br_if $break|0 - local.get $0 - local.get $3 - call $~lib/array/Array#__get - local.get $1 - local.get $3 - call $~lib/array/Array#__get - i32.ne if local.get $0 - call $~lib/rt/purerc/__release + i32.load offset=12 + local.tee $2 local.get $1 - call $~lib/rt/purerc/__release - i32.const 0 - return + i32.load offset=12 + i32.ne + br_if $folding-inner0 + local.get $0 + local.get $1 + i32.eq + if + br $folding-inner1 + end end - local.get $3 - i32.const 1 - i32.add - local.set $3 - br $repeat|0 - unreachable + loop $repeat|0 + local.get $3 + local.get $2 + i32.lt_s + if + local.get $0 + local.get $3 + call $~lib/array/Array#__get + local.get $1 + local.get $3 + call $~lib/array/Array#__get + i32.ne + br_if $folding-inner0 + local.get $3 + i32.const 1 + i32.add + local.set $3 + br $repeat|0 + end + end + br $folding-inner1 end - unreachable + local.get $0 + call $~lib/rt/purerc/__release + local.get $1 + call $~lib/rt/purerc/__release + i32.const 0 + return end local.get $0 call $~lib/rt/purerc/__release @@ -2736,52 +2109,41 @@ call $~lib/rt/purerc/__release i32.const 1 ) - (func $~lib/array/Array#get:length (; 40 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - local.get $0 - i32.load offset=12 - ) - (func $~lib/arraybuffer/ArrayBuffer#get:byteLength (; 41 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - local.get $0 - i32.const 16 - i32.sub - i32.load offset=12 - ) - (func $std/array/internalCapacity (; 42 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $std/array/internalCapacity (; 30 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) + (local $2 i32) local.get $0 call $~lib/rt/purerc/__retain drop local.get $0 i32.load call $~lib/rt/purerc/__retain - local.set $1 + local.tee $1 + i32.const 16 + i32.sub + i32.load offset=12 + local.set $2 local.get $0 call $~lib/rt/purerc/__release local.get $1 call $~lib/rt/purerc/__release - local.get $1 - call $~lib/arraybuffer/ArrayBuffer#get:byteLength + local.get $2 i32.const 2 i32.shr_s ) - (func $~lib/rt/tlsf/reallocateBlock (; 43 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/rt/tlsf/reallocateBlock (; 31 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) (local $6 i32) - (local $7 i32) - (local $8 i32) local.get $2 call $~lib/rt/tlsf/prepareSize local.set $3 local.get $1 i32.load - local.set $4 - local.get $4 + local.tee $4 i32.const 1 i32.and - i32.eqz - i32.eqz if i32.const 0 i32.const 128 @@ -2806,43 +2168,30 @@ local.get $1 return end - block $~lib/rt/tlsf/GETRIGHT|inlined.4 (result i32) - local.get $1 - local.set $5 - local.get $5 - i32.const 16 - i32.add - local.get $5 - i32.load - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.add - end - local.set $6 - local.get $6 + local.get $1 + i32.const 16 + i32.add + local.get $1 i32.load - local.set $7 - local.get $7 + i32.const -4 + i32.and + i32.add + local.tee $6 + i32.load + local.tee $5 i32.const 1 i32.and if local.get $4 - i32.const 3 - i32.const -1 - i32.xor + i32.const -4 i32.and i32.const 16 i32.add - local.get $7 - i32.const 3 - i32.const -1 - i32.xor + local.get $5 + i32.const -4 i32.and i32.add - local.set $5 - local.get $5 + local.tee $5 local.get $3 i32.ge_u if @@ -2870,16 +2219,15 @@ local.get $0 local.get $2 call $~lib/rt/tlsf/allocateBlock - local.set $8 - local.get $8 + local.tee $3 local.get $1 i32.load offset=4 i32.store offset=4 - local.get $8 + local.get $3 local.get $1 i32.load offset=8 i32.store offset=8 - local.get $8 + local.get $3 i32.const 16 i32.add local.get $1 @@ -2897,9 +2245,9 @@ call $~lib/rt/tlsf/insertBlock local.get $1 call $~lib/rt/tlsf/onFree - local.get $8 + local.get $3 ) - (func $~lib/rt/tlsf/__realloc (; 44 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/rt/tlsf/__realloc (; 32 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) global.get $~lib/rt/tlsf/ROOT i32.eqz if @@ -2911,16 +2259,12 @@ unreachable end local.get $0 + i32.const 15 + i32.and + i32.eqz i32.const 0 - i32.ne - if (result i32) - local.get $0 - i32.const 15 - i32.and - i32.eqz - else - i32.const 0 - end + local.get $0 + select i32.eqz if i32.const 0 @@ -2939,24 +2283,20 @@ i32.const 16 i32.add ) - (func $~lib/array/ensureSize (; 45 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/array/ensureSize (; 33 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (local $2 i32) (local $3 i32) (local $4 i32) - (local $5 i32) - (local $6 i32) + local.get $1 local.get $0 i32.load offset=8 - local.set $3 - local.get $1 - local.get $3 - local.get $2 + local.tee $2 + i32.const 2 i32.shr_u i32.gt_u if local.get $1 - i32.const 1073741808 - local.get $2 - i32.shr_u + i32.const 268435452 i32.gt_u if i32.const 24 @@ -2968,53 +2308,47 @@ end local.get $0 i32.load - local.set $4 + local.tee $4 local.get $1 - local.get $2 + i32.const 2 i32.shl - local.set $5 - local.get $4 - local.get $5 + local.tee $3 call $~lib/rt/tlsf/__realloc - local.set $6 - local.get $6 - local.get $3 + local.tee $1 + local.get $2 i32.add i32.const 0 - local.get $5 local.get $3 + local.get $2 i32.sub call $~lib/memory/memory.fill - local.get $6 + local.get $1 local.get $4 i32.ne if local.get $0 - local.get $6 + local.get $1 call $~lib/rt/purerc/__retain i32.store local.get $0 - local.get $6 + local.get $1 i32.store offset=4 end local.get $0 - local.get $5 + local.get $3 i32.store offset=8 end ) - (func $~lib/array/Array#push (; 46 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array#push (; 34 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) local.get $0 + local.get $0 i32.load offset=12 - local.set $2 - local.get $2 + local.tee $2 i32.const 1 i32.add - local.set $3 - local.get $0 - local.get $3 - i32.const 2 + local.tee $3 call $~lib/array/ensureSize local.get $0 i32.load offset=4 @@ -3027,43 +2361,13 @@ local.get $0 local.get $3 i32.store offset=12 - local.get $3 ) - (func $~lib/array/Array#__unchecked_get (; 47 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - local.get $0 - i32.load offset=4 - local.get $1 - i32.const 2 - i32.shl - i32.add - i32.load - ) - (func $~lib/array/Array#__get (; 48 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - local.get $1 - local.get $0 - i32.load offset=8 - i32.const 2 - i32.shr_u - i32.ge_u - if - i32.const 400 - i32.const 456 - i32.const 100 - i32.const 61 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - call $~lib/array/Array#__unchecked_get - ) - (func $~lib/array/Array#pop (; 49 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/array/Array#pop (; 35 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) local.get $0 i32.load offset=12 - local.set $1 - local.get $1 + local.tee $1 i32.const 1 i32.lt_s if @@ -3090,104 +2394,78 @@ i32.store offset=12 local.get $2 ) - (func $~lib/array/Array#concat (; 50 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array#concat (; 36 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result 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 call $~lib/rt/purerc/__retain drop local.get $0 i32.load offset=12 - local.set $2 - i32.const 0 + local.tee $3 local.get $1 i32.load offset=12 - local.get $1 i32.const 0 - i32.eq + local.get $1 select - local.set $3 - local.get $2 - local.get $3 + local.tee $4 i32.add - local.set $4 - local.get $4 + local.tee $2 i32.const 268435452 i32.gt_u if local.get $1 call $~lib/rt/purerc/__release - block - i32.const 24 - i32.const 456 - i32.const 197 - i32.const 59 - call $~lib/builtins/abort - unreachable - unreachable - end + i32.const 24 + i32.const 456 + i32.const 197 + i32.const 59 + call $~lib/builtins/abort unreachable end - local.get $4 + local.get $2 i32.const 2 i32.const 17 i32.const 0 call $~lib/rt/common/__allocArray call $~lib/rt/purerc/__retain - local.set $5 - local.get $5 + local.tee $2 i32.load offset=4 - local.set $6 - local.get $2 - i32.const 2 - i32.shl - local.set $7 - local.get $6 + local.tee $5 local.get $0 i32.load offset=4 - local.get $7 + local.get $3 + i32.const 2 + i32.shl + local.tee $0 call $~lib/memory/memory.copy - local.get $6 - local.get $7 + local.get $0 + local.get $5 i32.add local.get $1 i32.load offset=4 - local.get $3 + local.get $4 i32.const 2 i32.shl call $~lib/memory/memory.copy - local.get $5 - local.set $8 local.get $1 call $~lib/rt/purerc/__release - local.get $8 + local.get $2 ) - (func $~lib/array/Array#copyWithin (; 51 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + (func $~lib/array/Array#copyWithin (; 37 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) (local $4 i32) (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) - (local $10 i32) - (local $11 i32) local.get $0 i32.load offset=4 - local.set $4 - local.get $0 - i32.load offset=12 local.set $5 local.get $3 - local.tee $6 - local.get $5 - local.tee $7 - local.get $6 - local.get $7 + local.get $0 + i32.load offset=12 + local.tee $4 + local.get $3 + local.get $4 i32.lt_s select local.set $3 @@ -3195,159 +2473,143 @@ i32.const 0 i32.lt_s if (result i32) - local.get $5 local.get $1 + local.get $4 i32.add - local.tee $6 + local.tee $1 + i32.const 0 + local.get $1 i32.const 0 - local.tee $7 - local.get $6 - local.get $7 i32.gt_s select else local.get $1 - local.tee $6 - local.get $5 - local.tee $7 - local.get $6 - local.get $7 + local.get $4 + local.get $1 + local.get $4 i32.lt_s select end - local.set $8 + local.set $1 local.get $2 i32.const 0 i32.lt_s if (result i32) - local.get $5 local.get $2 + local.get $4 i32.add - local.tee $6 + local.tee $2 + i32.const 0 + local.get $2 i32.const 0 - local.tee $7 - local.get $6 - local.get $7 i32.gt_s select else local.get $2 - local.tee $6 - local.get $5 - local.tee $7 - local.get $6 - local.get $7 + local.get $4 + local.get $2 + local.get $4 i32.lt_s select end - local.set $9 + local.set $2 local.get $3 i32.const 0 i32.lt_s if (result i32) - local.get $5 local.get $3 + local.get $4 i32.add - local.tee $6 + local.tee $3 + i32.const 0 + local.get $3 i32.const 0 - local.tee $7 - local.get $6 - local.get $7 i32.gt_s select else local.get $3 - local.tee $6 - local.get $5 - local.tee $7 - local.get $6 - local.get $7 + local.get $4 + local.get $3 + local.get $4 i32.lt_s select end - local.set $10 - local.get $10 - local.get $9 + local.get $2 i32.sub - local.tee $6 - local.get $5 - local.get $8 + local.tee $3 + local.get $4 + local.get $1 i32.sub - local.tee $7 - local.get $6 - local.get $7 + local.tee $4 + local.get $3 + local.get $4 i32.lt_s select - local.set $11 - local.get $9 - local.get $8 + local.set $3 + local.get $1 + local.get $2 + local.get $3 + i32.add i32.lt_s - if (result i32) - local.get $8 - local.get $9 - local.get $11 - i32.add - i32.lt_s - else - i32.const 0 - end + i32.const 0 + local.get $2 + local.get $1 + i32.lt_s + select if - local.get $9 - local.get $11 + local.get $3 i32.const 1 i32.sub + local.tee $4 + local.get $2 i32.add - local.set $9 - local.get $8 - local.get $11 - i32.const 1 - i32.sub + local.set $2 + local.get $1 + local.get $4 i32.add - local.set $8 - block $break|0 - loop $continue|0 - local.get $11 - if - local.get $4 - local.get $8 - i32.const 2 - i32.shl - i32.add - local.get $4 - local.get $9 - i32.const 2 - i32.shl - i32.add - i32.load - i32.store - local.get $9 - i32.const 1 - i32.sub - local.set $9 - local.get $8 - i32.const 1 - i32.sub - local.set $8 - local.get $11 - i32.const 1 - i32.sub - local.set $11 - br $continue|0 - end + local.set $1 + loop $continue|0 + local.get $3 + if + local.get $1 + i32.const 2 + i32.shl + local.get $5 + i32.add + local.get $2 + i32.const 2 + i32.shl + local.get $5 + i32.add + i32.load + i32.store + local.get $2 + i32.const 1 + i32.sub + local.set $2 + local.get $1 + i32.const 1 + i32.sub + local.set $1 + local.get $3 + i32.const 1 + i32.sub + local.set $3 + br $continue|0 end end else - local.get $4 - local.get $8 + local.get $1 i32.const 2 i32.shl + local.get $5 i32.add - local.get $4 - local.get $9 + local.get $2 i32.const 2 i32.shl + local.get $5 i32.add - local.get $11 + local.get $3 i32.const 2 i32.shl call $~lib/memory/memory.copy @@ -3355,99 +2617,19 @@ local.get $0 call $~lib/rt/purerc/__retain ) - (func $std/array/isArraysEqual (; 52 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - local.get $0 - call $~lib/rt/purerc/__retain - drop - local.get $1 - call $~lib/rt/purerc/__retain - drop - local.get $2 - i32.eqz - if - local.get $0 - call $~lib/array/Array#get:length - local.set $2 - local.get $2 - local.get $1 - call $~lib/array/Array#get:length - i32.ne - if - local.get $0 - call $~lib/rt/purerc/__release - local.get $1 - call $~lib/rt/purerc/__release - i32.const 0 - return - end - local.get $0 - local.get $1 - i32.eq - if - local.get $0 - call $~lib/rt/purerc/__release - local.get $1 - call $~lib/rt/purerc/__release - i32.const 1 - return - end - end - block $break|0 - i32.const 0 - local.set $3 - loop $repeat|0 - local.get $3 - local.get $2 - i32.lt_s - i32.eqz - br_if $break|0 - local.get $0 - local.get $3 - call $~lib/array/Array#__get - local.get $1 - local.get $3 - call $~lib/array/Array#__get - i32.ne - if - local.get $0 - call $~lib/rt/purerc/__release - local.get $1 - call $~lib/rt/purerc/__release - i32.const 0 - return - end - local.get $3 - i32.const 1 - i32.add - local.set $3 - br $repeat|0 - unreachable - end - unreachable - end - local.get $0 - call $~lib/rt/purerc/__release - local.get $1 - call $~lib/rt/purerc/__release - i32.const 1 - ) - (func $~lib/array/Array#unshift (; 53 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array#unshift (; 38 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) local.get $0 + local.get $0 i32.load offset=12 i32.const 1 i32.add - local.set $2 - local.get $0 - local.get $2 - i32.const 2 + local.tee $2 call $~lib/array/ensureSize local.get $0 i32.load offset=4 - local.set $3 - local.get $3 + local.tee $3 i32.const 4 i32.add local.get $3 @@ -3463,17 +2645,15 @@ local.get $0 local.get $2 i32.store offset=12 - local.get $2 ) - (func $~lib/array/Array#shift (; 54 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/array/Array#shift (; 39 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) local.get $0 i32.load offset=12 - local.set $1 - local.get $1 + local.tee $1 i32.const 1 i32.lt_s if @@ -3486,43 +2666,38 @@ end local.get $0 i32.load offset=4 - local.set $2 - local.get $2 + local.tee $2 i32.load local.set $3 - local.get $1 - i32.const 1 - i32.sub - local.set $4 local.get $2 local.get $2 i32.const 4 i32.add - local.get $4 + local.get $1 + i32.const 1 + i32.sub + local.tee $1 i32.const 2 i32.shl + local.tee $4 call $~lib/memory/memory.copy local.get $2 local.get $4 - i32.const 2 - i32.shl i32.add i32.const 0 i32.store local.get $0 - local.get $4 + local.get $1 i32.store offset=12 local.get $3 ) - (func $~lib/array/Array#reverse (; 55 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/array/Array#reverse (; 40 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) - (local $4 i32) local.get $0 i32.load offset=12 - local.set $1 - local.get $1 + local.tee $1 if local.get $0 i32.load offset=4 @@ -3535,56 +2710,48 @@ i32.const 2 i32.shl i32.add - local.set $3 - block $break|0 - loop $continue|0 + local.set $1 + loop $continue|0 + local.get $2 + local.get $1 + i32.lt_u + if local.get $2 + i32.load + local.set $3 + local.get $2 + local.get $1 + i32.load + i32.store + local.get $1 local.get $3 - i32.lt_u - if - local.get $2 - i32.load - local.set $4 - local.get $2 - local.get $3 - i32.load - i32.store - local.get $3 - local.get $4 - i32.store - local.get $2 - i32.const 4 - i32.add - local.set $2 - local.get $3 - i32.const 4 - i32.sub - local.set $3 - br $continue|0 - end + i32.store + local.get $2 + i32.const 4 + i32.add + local.set $2 + local.get $1 + i32.const 4 + i32.sub + local.set $1 + br $continue|0 end end end local.get $0 call $~lib/rt/purerc/__retain ) - (func $~lib/array/Array#indexOf (; 56 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/array/Array#indexOf (; 41 ;) (type $FUNCSIG$iiii) (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 $0 i32.load offset=12 - local.set $3 - local.get $3 - i32.const 0 - i32.eq + local.tee $3 if (result i32) - i32.const 1 - else local.get $2 local.get $3 i32.ge_s + else + i32.const 1 end if i32.const -1 @@ -3594,50 +2761,47 @@ i32.const 0 i32.lt_s if - local.get $3 local.get $2 + local.get $3 i32.add - local.tee $4 + local.tee $2 + i32.const 0 + local.get $2 i32.const 0 - local.tee $5 - local.get $4 - local.get $5 i32.gt_s select local.set $2 end local.get $0 i32.load offset=4 - local.set $6 - block $break|0 - loop $continue|0 + local.set $0 + loop $continue|0 + local.get $2 + local.get $3 + i32.lt_s + if local.get $2 - local.get $3 - i32.lt_s + i32.const 2 + i32.shl + local.get $0 + i32.add + i32.load + local.get $1 + i32.eq if - local.get $6 local.get $2 - i32.const 2 - i32.shl - i32.add - i32.load - local.get $1 - i32.eq - if - local.get $2 - return - end - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $continue|0 + return end + local.get $2 + i32.const 1 + i32.add + local.set $2 + br $continue|0 end end i32.const -1 ) - (func $~lib/array/Array#includes (; 57 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/array/Array#includes (; 42 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $0 local.get $1 local.get $2 @@ -3645,82 +2809,65 @@ i32.const 0 i32.ge_s ) - (func $~lib/array/Array#splice (; 58 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/array/Array#splice (; 43 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) - (local $10 i32) + local.get $2 local.get $0 i32.load offset=12 - local.set $3 + local.tee $3 local.get $1 i32.const 0 i32.lt_s if (result i32) - local.get $3 local.get $1 + local.get $3 i32.add - local.tee $4 + local.tee $1 + i32.const 0 + local.get $1 i32.const 0 - local.tee $5 - local.get $4 - local.get $5 i32.gt_s select else local.get $1 - local.tee $4 local.get $3 - local.tee $5 - local.get $4 - local.get $5 + local.get $1 + local.get $3 i32.lt_s select end - local.set $1 - local.get $2 - local.tee $4 - local.get $3 - local.get $1 + local.tee $1 i32.sub - local.tee $5 + local.tee $4 + local.get $2 local.get $4 - local.get $5 i32.lt_s select - local.tee $4 + local.tee $2 + i32.const 0 + local.get $2 i32.const 0 - local.tee $5 - local.get $4 - local.get $5 i32.gt_s select - local.set $2 - local.get $2 + local.tee $2 i32.const 2 i32.const 17 i32.const 0 call $~lib/rt/common/__allocArray call $~lib/rt/purerc/__retain - local.set $6 - local.get $6 + local.tee $4 i32.load offset=4 - local.set $7 local.get $0 i32.load offset=4 - local.set $8 - local.get $8 + local.tee $5 local.get $1 i32.const 2 i32.shl i32.add - local.set $9 - local.get $7 - local.get $9 + local.tee $6 local.get $2 i32.const 2 i32.shl @@ -3728,19 +2875,18 @@ local.get $1 local.get $2 i32.add - local.set $10 + local.tee $1 local.get $3 - local.get $10 i32.ne if - local.get $9 - local.get $8 - local.get $10 + local.get $6 + local.get $1 i32.const 2 i32.shl + local.get $5 i32.add local.get $3 - local.get $10 + local.get $1 i32.sub i32.const 2 i32.shl @@ -3751,19 +2897,9 @@ local.get $2 i32.sub i32.store offset=12 - local.get $6 + local.get $4 ) - (func $~lib/array/Array#__unchecked_set (; 59 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) - local.get $0 - i32.load offset=4 - local.get $1 - i32.const 2 - i32.shl - i32.add - local.get $2 - i32.store - ) - (func $~lib/array/Array#__set (; 60 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/array/Array#__set (; 44 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) local.get $0 i32.load offset=12 @@ -3772,12 +2908,15 @@ local.get $1 i32.const 1 i32.add - i32.const 2 call $~lib/array/ensureSize local.get $0 + i32.load offset=4 local.get $1 + i32.const 2 + i32.shl + i32.add local.get $2 - call $~lib/array/Array#__unchecked_set + i32.store local.get $1 local.get $3 i32.ge_s @@ -3789,130 +2928,97 @@ i32.store offset=12 end ) - (func $start:std/array~anonymous|0 (; 61 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) + (func $start:std/array~anonymous|0 (; 45 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $2 call $~lib/rt/purerc/__retain drop - local.get $0 - i32.const 0 - i32.eq - local.set $3 local.get $2 call $~lib/rt/purerc/__release - local.get $3 + local.get $0 + i32.eqz ) - (func $~lib/array/Array#findIndex (; 62 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array#findIndex (; 46 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) - (local $5 i32) - block $break|0 - block - i32.const 0 - local.set $2 - local.get $0 - i32.load offset=12 - local.set $3 - end - loop $repeat|0 + local.get $0 + i32.load offset=12 + local.set $3 + loop $repeat|0 + block $break|0 local.get $2 local.get $3 - local.tee $4 local.get $0 i32.load offset=12 - local.tee $5 + local.tee $4 + local.get $3 local.get $4 - local.get $5 i32.lt_s select - i32.lt_s - i32.eqz + i32.ge_s br_if $break|0 - block (result i32) - i32.const 3 - global.set $~lib/argc - local.get $0 - i32.load offset=4 - local.get $2 - i32.const 2 - i32.shl - i32.add - i32.load - local.get $2 - local.get $0 - local.get $1 - call_indirect (type $FUNCSIG$iiii) - end + i32.const 3 + global.set $~lib/argc + local.get $0 + i32.load offset=4 + local.get $2 + i32.const 2 + i32.shl + i32.add + i32.load + local.get $2 + local.get $0 + local.get $1 + call_indirect (type $FUNCSIG$iiii) if local.get $2 return + else + local.get $2 + i32.const 1 + i32.add + local.set $2 + br $repeat|0 end - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $repeat|0 unreachable end - unreachable end i32.const -1 ) - (func $start:std/array~anonymous|1 (; 63 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) + (func $start:std/array~anonymous|1 (; 47 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $2 call $~lib/rt/purerc/__retain drop + local.get $2 + call $~lib/rt/purerc/__release local.get $0 i32.const 1 i32.eq - local.set $3 - local.get $2 - call $~lib/rt/purerc/__release - local.get $3 ) - (func $start:std/array~anonymous|2 (; 64 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) + (func $start:std/array~anonymous|2 (; 48 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $2 call $~lib/rt/purerc/__retain drop + local.get $2 + call $~lib/rt/purerc/__release local.get $0 i32.const 100 i32.eq - local.set $3 - local.get $2 - call $~lib/rt/purerc/__release - local.get $3 ) - (func $start:std/array~anonymous|3 (; 65 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $start:std/array~anonymous|3 (; 49 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $2 call $~lib/rt/purerc/__retain drop local.get $2 i32.const 100 call $~lib/array/Array#push - drop local.get $2 call $~lib/rt/purerc/__release local.get $0 i32.const 100 i32.eq ) - (func $start:std/array~anonymous|4 (; 66 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - local.get $2 - call $~lib/rt/purerc/__retain - drop - local.get $0 - i32.const 100 - i32.eq - local.set $3 - local.get $2 - call $~lib/rt/purerc/__release - local.get $3 - ) - (func $start:std/array~anonymous|5 (; 67 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $start:std/array~anonymous|5 (; 50 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $2 call $~lib/rt/purerc/__retain drop @@ -3925,120 +3031,98 @@ i32.const 100 i32.eq ) - (func $start:std/array~anonymous|6 (; 68 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) + (func $start:std/array~anonymous|6 (; 51 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $2 call $~lib/rt/purerc/__retain drop + local.get $2 + call $~lib/rt/purerc/__release local.get $0 i32.const 0 i32.ge_s - local.set $3 - local.get $2 - call $~lib/rt/purerc/__release - local.get $3 ) - (func $~lib/array/Array#every (; 69 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array#every (; 52 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) - (local $5 i32) - block $break|0 - block - i32.const 0 - local.set $2 - local.get $0 - i32.load offset=12 - local.set $3 - end - loop $repeat|0 + local.get $0 + i32.load offset=12 + local.set $3 + loop $repeat|0 + block $break|0 local.get $2 local.get $3 - local.tee $4 local.get $0 i32.load offset=12 - local.tee $5 + local.tee $4 + local.get $3 local.get $4 - local.get $5 i32.lt_s select - i32.lt_s - i32.eqz + i32.ge_s br_if $break|0 - block (result i32) - i32.const 3 - global.set $~lib/argc - local.get $0 - i32.load offset=4 - local.get $2 - i32.const 2 - i32.shl - i32.add - i32.load - local.get $2 - local.get $0 - local.get $1 - call_indirect (type $FUNCSIG$iiii) - end - i32.const 0 - i32.ne - i32.eqz + i32.const 3 + global.set $~lib/argc + local.get $0 + i32.load offset=4 + local.get $2 + i32.const 2 + i32.shl + i32.add + i32.load + local.get $2 + local.get $0 + local.get $1 + call_indirect (type $FUNCSIG$iiii) if + local.get $2 + i32.const 1 + i32.add + local.set $2 + br $repeat|0 + else i32.const 0 return end - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $repeat|0 unreachable end - unreachable end i32.const 1 ) - (func $start:std/array~anonymous|7 (; 70 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) + (func $start:std/array~anonymous|7 (; 53 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $2 call $~lib/rt/purerc/__retain drop + local.get $2 + call $~lib/rt/purerc/__release local.get $0 i32.const 0 i32.le_s - local.set $3 - local.get $2 - call $~lib/rt/purerc/__release - local.get $3 ) - (func $start:std/array~anonymous|8 (; 71 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $start:std/array~anonymous|8 (; 54 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $2 call $~lib/rt/purerc/__retain drop local.get $2 i32.const 100 call $~lib/array/Array#push - drop local.get $2 call $~lib/rt/purerc/__release local.get $0 i32.const 10 i32.lt_s ) - (func $start:std/array~anonymous|9 (; 72 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) + (func $start:std/array~anonymous|9 (; 55 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $2 call $~lib/rt/purerc/__retain drop + local.get $2 + call $~lib/rt/purerc/__release local.get $0 i32.const 10 i32.lt_s - local.set $3 - local.get $2 - call $~lib/rt/purerc/__release - local.get $3 ) - (func $start:std/array~anonymous|10 (; 73 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $start:std/array~anonymous|10 (; 56 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $2 call $~lib/rt/purerc/__retain drop @@ -4051,117 +3135,98 @@ i32.const 3 i32.lt_s ) - (func $start:std/array~anonymous|11 (; 74 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) + (func $start:std/array~anonymous|11 (; 57 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $2 call $~lib/rt/purerc/__retain drop + local.get $2 + call $~lib/rt/purerc/__release local.get $0 i32.const 3 i32.ge_s - local.set $3 - local.get $2 - call $~lib/rt/purerc/__release - local.get $3 ) - (func $~lib/array/Array#some (; 75 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array#some (; 58 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) - (local $5 i32) - block $break|0 - block - i32.const 0 - local.set $2 - local.get $0 - i32.load offset=12 - local.set $3 - end - loop $repeat|0 + local.get $0 + i32.load offset=12 + local.set $3 + loop $repeat|0 + block $break|0 local.get $2 local.get $3 - local.tee $4 local.get $0 i32.load offset=12 - local.tee $5 + local.tee $4 + local.get $3 local.get $4 - local.get $5 i32.lt_s select - i32.lt_s - i32.eqz + i32.ge_s br_if $break|0 - block (result i32) - i32.const 3 - global.set $~lib/argc - local.get $0 - i32.load offset=4 - local.get $2 - i32.const 2 - i32.shl - i32.add - i32.load - local.get $2 - local.get $0 - local.get $1 - call_indirect (type $FUNCSIG$iiii) - end + i32.const 3 + global.set $~lib/argc + local.get $0 + i32.load offset=4 + local.get $2 + i32.const 2 + i32.shl + i32.add + i32.load + local.get $2 + local.get $0 + local.get $1 + call_indirect (type $FUNCSIG$iiii) if i32.const 1 return + else + local.get $2 + i32.const 1 + i32.add + local.set $2 + br $repeat|0 end - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $repeat|0 unreachable end - unreachable end i32.const 0 ) - (func $start:std/array~anonymous|12 (; 76 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) + (func $start:std/array~anonymous|12 (; 59 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $2 call $~lib/rt/purerc/__retain drop + local.get $2 + call $~lib/rt/purerc/__release local.get $0 i32.const -1 i32.le_s - local.set $3 - local.get $2 - call $~lib/rt/purerc/__release - local.get $3 ) - (func $start:std/array~anonymous|13 (; 77 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $start:std/array~anonymous|13 (; 60 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $2 call $~lib/rt/purerc/__retain drop local.get $2 i32.const 100 call $~lib/array/Array#push - drop local.get $2 call $~lib/rt/purerc/__release local.get $0 i32.const 10 i32.gt_s ) - (func $start:std/array~anonymous|14 (; 78 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) + (func $start:std/array~anonymous|14 (; 61 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $2 call $~lib/rt/purerc/__retain drop + local.get $2 + call $~lib/rt/purerc/__release local.get $0 i32.const 10 i32.gt_s - local.set $3 - local.get $2 - call $~lib/rt/purerc/__release - local.get $3 ) - (func $start:std/array~anonymous|15 (; 79 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $start:std/array~anonymous|15 (; 62 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $2 call $~lib/rt/purerc/__retain drop @@ -4174,7 +3239,7 @@ i32.const 3 i32.gt_s ) - (func $start:std/array~anonymous|16 (; 80 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $start:std/array~anonymous|16 (; 63 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) local.get $2 call $~lib/rt/purerc/__retain drop @@ -4185,32 +3250,25 @@ local.get $2 call $~lib/rt/purerc/__release ) - (func $~lib/array/Array#forEach (; 81 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/array/Array#forEach (; 64 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) - (local $5 i32) block $break|0 - block - i32.const 0 - local.set $2 - local.get $0 - i32.load offset=12 - local.set $3 - end + local.get $0 + i32.load offset=12 + local.set $3 loop $repeat|0 local.get $2 local.get $3 - local.tee $4 local.get $0 i32.load offset=12 - local.tee $5 + local.tee $4 + local.get $3 local.get $4 - local.get $5 i32.lt_s select - i32.lt_s - i32.eqz + i32.ge_s br_if $break|0 i32.const 3 global.set $~lib/argc @@ -4235,14 +3293,13 @@ unreachable end ) - (func $start:std/array~anonymous|17 (; 82 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $start:std/array~anonymous|17 (; 65 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) local.get $2 call $~lib/rt/purerc/__retain drop local.get $2 i32.const 100 call $~lib/array/Array#push - drop global.get $std/array/i local.get $0 i32.add @@ -4250,18 +3307,7 @@ local.get $2 call $~lib/rt/purerc/__release ) - (func $start:std/array~anonymous|18 (; 83 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) - local.get $2 - call $~lib/rt/purerc/__retain - drop - global.get $std/array/i - local.get $0 - i32.add - global.set $std/array/i - local.get $2 - call $~lib/rt/purerc/__release - ) - (func $start:std/array~anonymous|19 (; 84 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $start:std/array~anonymous|19 (; 66 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) local.get $2 call $~lib/rt/purerc/__retain drop @@ -4275,23 +3321,19 @@ local.get $2 call $~lib/rt/purerc/__release ) - (func $start:std/array~anonymous|20 (; 85 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $start:std/array~anonymous|20 (; 67 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) local.get $2 call $~lib/rt/purerc/__retain drop local.get $1 - i32.const 0 - i32.eq + i32.eqz if - block $break|0 - i32.const 0 - local.set $3 - loop $repeat|0 + loop $repeat|0 + block $break|0 local.get $3 i32.const 4 - i32.lt_s - i32.eqz + i32.ge_s br_if $break|0 local.get $2 call $~lib/array/Array#pop @@ -4301,42 +3343,35 @@ i32.add local.set $3 br $repeat|0 - unreachable end - unreachable end - block $break|1 - i32.const 0 - local.set $3 - loop $repeat|1 + i32.const 0 + local.set $3 + loop $repeat|1 + block $break|1 local.get $3 i32.const 100 - i32.lt_s - i32.eqz + i32.ge_s br_if $break|1 local.get $2 - i32.const 100 local.get $3 + i32.const 100 i32.add call $~lib/array/Array#push - drop local.get $3 i32.const 1 i32.add local.set $3 br $repeat|1 - unreachable end - unreachable end - block $break|2 - i32.const 0 - local.set $3 - loop $repeat|2 + i32.const 0 + local.set $3 + loop $repeat|2 + block $break|2 local.get $3 i32.const 100 - i32.lt_s - i32.eqz + i32.ge_s br_if $break|2 local.get $2 call $~lib/array/Array#pop @@ -4346,33 +3381,27 @@ i32.add local.set $3 br $repeat|2 - unreachable end - unreachable end - block $break|3 - i32.const 0 - local.set $3 - loop $repeat|3 + i32.const 0 + local.set $3 + loop $repeat|3 + block $break|3 local.get $3 i32.const 100 - i32.lt_s - i32.eqz + i32.ge_s br_if $break|3 local.get $2 local.get $3 i32.const 200 i32.add call $~lib/array/Array#push - drop local.get $3 i32.const 1 i32.add local.set $3 br $repeat|3 - unreachable end - unreachable end end local.get $1 @@ -4381,8 +3410,7 @@ if local.get $0 i32.const 202 - i32.eq - i32.eqz + i32.ne if i32.const 0 i32.const 232 @@ -4395,104 +3423,74 @@ local.get $2 call $~lib/rt/purerc/__release ) - (func $start:std/array~anonymous|21 (; 86 ;) (type $FUNCSIG$fiii) (param $0 i32) (param $1 i32) (param $2 i32) (result f32) - (local $3 f32) + (func $start:std/array~anonymous|21 (; 68 ;) (type $FUNCSIG$fiii) (param $0 i32) (param $1 i32) (param $2 i32) (result f32) local.get $2 call $~lib/rt/purerc/__retain drop - local.get $0 - f32.convert_i32_s - local.set $3 local.get $2 call $~lib/rt/purerc/__release - local.get $3 + local.get $0 + f32.convert_i32_s ) - (func $~lib/array/Array#map (; 87 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array#map (; 69 ;) (type $FUNCSIG$ii) (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 f32) + (local $6 f32) local.get $0 i32.load offset=12 - local.set $2 - local.get $2 + local.tee $3 i32.const 2 i32.const 22 i32.const 0 call $~lib/rt/common/__allocArray call $~lib/rt/purerc/__retain - local.set $3 - local.get $3 + local.tee $4 i32.load offset=4 - local.set $4 - block $break|0 - i32.const 0 - local.set $5 - loop $repeat|0 - local.get $5 - local.get $2 - local.tee $6 - local.get $0 - i32.load offset=12 - local.tee $7 - local.get $6 - local.get $7 - i32.lt_s - select - i32.lt_s - i32.eqz - br_if $break|0 - block (result f32) - i32.const 3 - global.set $~lib/argc - local.get $0 - i32.load offset=4 - local.get $5 - i32.const 2 - i32.shl - i32.add - i32.load - local.get $5 - local.get $0 - local.get $1 - call_indirect (type $FUNCSIG$fiii) - end - local.set $8 - local.get $4 - local.get $5 + local.set $5 + loop $repeat|0 + local.get $1 + local.get $3 + local.get $0 + i32.load offset=12 + local.tee $2 + local.get $3 + local.get $2 + i32.lt_s + select + i32.lt_s + if + i32.const 3 + global.set $~lib/argc + local.get $1 i32.const 2 i32.shl + local.tee $2 + local.get $0 + i32.load offset=4 i32.add - local.get $8 - f32.store + i32.load + local.get $1 + local.get $0 + call $start:std/array~anonymous|21 + local.set $6 + local.get $2 local.get $5 + i32.add + local.get $6 + f32.store + local.get $1 i32.const 1 i32.add - local.set $5 + local.set $1 br $repeat|0 - unreachable end - unreachable end - local.get $3 + local.get $4 ) - (func $~lib/array/Array#get:length (; 88 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - local.get $0 - i32.load offset=12 - ) - (func $~lib/array/Array#__unchecked_get (; 89 ;) (type $FUNCSIG$fii) (param $0 i32) (param $1 i32) (result f32) - local.get $0 - i32.load offset=4 - local.get $1 - i32.const 2 - i32.shl - i32.add - f32.load - ) - (func $~lib/array/Array#__get (; 90 ;) (type $FUNCSIG$fii) (param $0 i32) (param $1 i32) (result f32) + (func $~lib/array/Array#__get (; 70 ;) (type $FUNCSIG$fii) (param $0 i32) (param $1 i32) (result f32) local.get $1 local.get $0 i32.load offset=8 @@ -4508,17 +3506,20 @@ unreachable end local.get $0 + i32.load offset=4 local.get $1 - call $~lib/array/Array#__unchecked_get + i32.const 2 + i32.shl + i32.add + f32.load ) - (func $start:std/array~anonymous|22 (; 91 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $start:std/array~anonymous|22 (; 71 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $2 call $~lib/rt/purerc/__retain drop local.get $2 i32.const 100 call $~lib/array/Array#push - drop global.get $std/array/i local.get $0 i32.add @@ -4527,7 +3528,7 @@ call $~lib/rt/purerc/__release local.get $0 ) - (func $~lib/array/Array#map (; 92 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array#map (; 72 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -4536,69 +3537,58 @@ (local $7 i32) local.get $0 i32.load offset=12 - local.set $2 - local.get $2 + local.tee $4 i32.const 2 i32.const 17 i32.const 0 call $~lib/rt/common/__allocArray call $~lib/rt/purerc/__retain - local.set $3 - local.get $3 + local.tee $5 i32.load offset=4 - local.set $4 - block $break|0 - i32.const 0 - local.set $5 - loop $repeat|0 - local.get $5 + local.set $6 + loop $repeat|0 + block $break|0 local.get $2 - local.tee $6 + local.get $4 local.get $0 i32.load offset=12 - local.tee $7 - local.get $6 - local.get $7 + local.tee $3 + local.get $4 + local.get $3 i32.lt_s select - i32.lt_s - i32.eqz + i32.ge_s br_if $break|0 - block (result i32) - i32.const 3 - global.set $~lib/argc - local.get $0 - i32.load offset=4 - local.get $5 - i32.const 2 - i32.shl - i32.add - i32.load - local.get $5 - local.get $0 - local.get $1 - call_indirect (type $FUNCSIG$iiii) - end - local.set $6 - local.get $4 - local.get $5 + i32.const 3 + global.set $~lib/argc + local.get $2 i32.const 2 i32.shl + local.tee $3 + local.get $0 + i32.load offset=4 i32.add + i32.load + local.get $2 + local.get $0 + local.get $1 + call_indirect (type $FUNCSIG$iiii) + local.set $7 + local.get $3 local.get $6 + i32.add + local.get $7 i32.store - local.get $5 + local.get $2 i32.const 1 i32.add - local.set $5 + local.set $2 br $repeat|0 - unreachable end - unreachable end - local.get $3 + local.get $5 ) - (func $start:std/array~anonymous|23 (; 93 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $start:std/array~anonymous|23 (; 73 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $2 call $~lib/rt/purerc/__retain drop @@ -4610,7 +3600,7 @@ call $~lib/rt/purerc/__release local.get $0 ) - (func $start:std/array~anonymous|24 (; 94 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $start:std/array~anonymous|24 (; 74 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $2 call $~lib/rt/purerc/__retain drop @@ -4625,343 +3615,215 @@ call $~lib/rt/purerc/__release local.get $0 ) - (func $start:std/array~anonymous|25 (; 95 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) + (func $start:std/array~anonymous|25 (; 75 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $2 call $~lib/rt/purerc/__retain drop + local.get $2 + call $~lib/rt/purerc/__release local.get $0 i32.const 2 i32.ge_s - local.set $3 - local.get $2 - call $~lib/rt/purerc/__release - local.get $3 ) - (func $~lib/array/Array#filter (; 96 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array#filter (; 76 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) - (local $6 i32) i32.const 0 i32.const 2 i32.const 17 i32.const 0 call $~lib/rt/common/__allocArray call $~lib/rt/purerc/__retain - local.set $2 - block $break|0 - block - i32.const 0 - local.set $3 - local.get $0 - i32.load offset=12 - local.set $4 - end - loop $repeat|0 - local.get $3 - local.get $4 - local.tee $5 - local.get $0 - i32.load offset=12 - local.tee $6 + local.set $4 + local.get $0 + i32.load offset=12 + local.set $5 + loop $repeat|0 + block $break|0 + local.get $2 local.get $5 - local.get $6 + local.get $0 + i32.load offset=12 + local.tee $3 + local.get $5 + local.get $3 i32.lt_s select - i32.lt_s - i32.eqz + i32.ge_s br_if $break|0 local.get $0 i32.load offset=4 + local.get $2 + i32.const 2 + i32.shl + i32.add + i32.load + local.set $3 + i32.const 3 + global.set $~lib/argc + local.get $3 + local.get $2 + local.get $0 + local.get $1 + call_indirect (type $FUNCSIG$iiii) + if + local.get $4 + local.get $3 + call $~lib/array/Array#push + end + local.get $2 + i32.const 1 + i32.add + local.set $2 + br $repeat|0 + end + end + local.get $4 + ) + (func $start:std/array~anonymous|26 (; 77 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + local.get $2 + call $~lib/rt/purerc/__retain + drop + local.get $2 + i32.const 100 + call $~lib/array/Array#push + global.get $std/array/i + local.get $0 + i32.add + global.set $std/array/i + local.get $2 + call $~lib/rt/purerc/__release + local.get $0 + i32.const 2 + i32.ge_s + ) + (func $start:std/array~anonymous|27 (; 78 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + local.get $2 + call $~lib/rt/purerc/__retain + drop + global.get $std/array/i + local.get $0 + i32.add + global.set $std/array/i + local.get $2 + call $~lib/rt/purerc/__release + local.get $0 + i32.const 2 + i32.ge_s + ) + (func $start:std/array~anonymous|28 (; 79 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + local.get $2 + call $~lib/rt/purerc/__retain + drop + local.get $2 + call $~lib/array/Array#pop + drop + global.get $std/array/i + local.get $0 + i32.add + global.set $std/array/i + local.get $2 + call $~lib/rt/purerc/__release + local.get $0 + i32.const 2 + i32.ge_s + ) + (func $start:std/array~anonymous|29 (; 80 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + local.get $3 + call $~lib/rt/purerc/__retain + drop + local.get $3 + call $~lib/rt/purerc/__release + local.get $0 + local.get $1 + i32.add + ) + (func $~lib/array/Array#reduce (; 81 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $0 + i32.load offset=12 + local.set $4 + loop $repeat|0 + block $break|0 + local.get $3 + local.get $4 + local.get $0 + i32.load offset=12 + local.tee $5 + local.get $4 + local.get $5 + i32.lt_s + select + i32.ge_s + br_if $break|0 + i32.const 4 + global.set $~lib/argc + local.get $2 + local.get $0 + i32.load offset=4 local.get $3 i32.const 2 i32.shl i32.add i32.load - local.set $5 - block (result i32) - i32.const 3 - global.set $~lib/argc - local.get $5 - local.get $3 - local.get $0 - local.get $1 - call_indirect (type $FUNCSIG$iiii) - end - if - local.get $2 - local.get $5 - call $~lib/array/Array#push - drop - end + local.get $3 + local.get $0 + local.get $1 + call_indirect (type $FUNCSIG$iiiii) + local.set $2 local.get $3 i32.const 1 i32.add local.set $3 br $repeat|0 - unreachable end - unreachable end local.get $2 ) - (func $start:std/array~anonymous|26 (; 97 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - local.get $2 + (func $start:std/array~anonymous|31 (; 82 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + local.get $3 call $~lib/rt/purerc/__retain drop - local.get $2 + local.get $3 + call $~lib/rt/purerc/__release + i32.const 1 + local.get $1 + i32.const 2 + i32.gt_s + local.get $0 + select + ) + (func $start:std/array~anonymous|32 (; 83 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + local.get $3 + call $~lib/rt/purerc/__retain + drop + local.get $3 + call $~lib/rt/purerc/__release + i32.const 1 + local.get $1 i32.const 100 - call $~lib/array/Array#push - drop - global.get $std/array/i + i32.gt_s local.get $0 - i32.add - global.set $std/array/i - local.get $2 - call $~lib/rt/purerc/__release - local.get $0 - i32.const 2 - i32.ge_s + select ) - (func $start:std/array~anonymous|27 (; 98 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - local.get $2 - call $~lib/rt/purerc/__retain - drop - global.get $std/array/i - local.get $0 - i32.add - global.set $std/array/i - local.get $2 - call $~lib/rt/purerc/__release - local.get $0 - i32.const 2 - i32.ge_s - ) - (func $start:std/array~anonymous|28 (; 99 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - local.get $2 - call $~lib/rt/purerc/__retain - drop - local.get $2 - call $~lib/array/Array#pop - drop - global.get $std/array/i - local.get $0 - i32.add - global.set $std/array/i - local.get $2 - call $~lib/rt/purerc/__release - local.get $0 - i32.const 2 - i32.ge_s - ) - (func $start:std/array~anonymous|29 (; 100 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) - (local $4 i32) - local.get $3 - call $~lib/rt/purerc/__retain - drop - local.get $0 - local.get $1 - i32.add - local.set $4 - local.get $3 - call $~lib/rt/purerc/__release - local.get $4 - ) - (func $~lib/array/Array#reduce (; 101 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - local.get $2 - local.set $3 - block $break|0 - block - i32.const 0 - local.set $4 - local.get $0 - i32.load offset=12 - local.set $5 - end - loop $repeat|0 - local.get $4 - local.get $5 - local.tee $6 - local.get $0 - i32.load offset=12 - local.tee $7 - local.get $6 - local.get $7 - i32.lt_s - select - i32.lt_s - i32.eqz - br_if $break|0 - block (result i32) - i32.const 4 - global.set $~lib/argc - local.get $3 - local.get $0 - i32.load offset=4 - local.get $4 - i32.const 2 - i32.shl - i32.add - i32.load - local.get $4 - local.get $0 - local.get $1 - call_indirect (type $FUNCSIG$iiiii) - end - local.set $3 - local.get $4 - i32.const 1 - i32.add - local.set $4 - br $repeat|0 - unreachable - end - unreachable - end - local.get $3 - ) - (func $start:std/array~anonymous|30 (; 102 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) - (local $4 i32) - local.get $3 - call $~lib/rt/purerc/__retain - drop - local.get $0 - local.get $1 - i32.add - local.set $4 - local.get $3 - call $~lib/rt/purerc/__release - local.get $4 - ) - (func $start:std/array~anonymous|31 (; 103 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) - (local $4 i32) - local.get $3 - call $~lib/rt/purerc/__retain - drop - local.get $0 - if (result i32) - i32.const 1 - else - local.get $1 - i32.const 2 - i32.gt_s - end - local.set $4 - local.get $3 - call $~lib/rt/purerc/__release - local.get $4 - ) - (func $~lib/array/Array#reduce (; 104 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - local.get $2 - local.set $3 - block $break|0 - block - i32.const 0 - local.set $4 - local.get $0 - i32.load offset=12 - local.set $5 - end - loop $repeat|0 - local.get $4 - local.get $5 - local.tee $6 - local.get $0 - i32.load offset=12 - local.tee $7 - local.get $6 - local.get $7 - i32.lt_s - select - i32.lt_s - i32.eqz - br_if $break|0 - block (result i32) - i32.const 4 - global.set $~lib/argc - local.get $3 - local.get $0 - i32.load offset=4 - local.get $4 - i32.const 2 - i32.shl - i32.add - i32.load - local.get $4 - local.get $0 - local.get $1 - call_indirect (type $FUNCSIG$iiiii) - end - local.set $3 - local.get $4 - i32.const 1 - i32.add - local.set $4 - br $repeat|0 - unreachable - end - unreachable - end - local.get $3 - ) - (func $start:std/array~anonymous|32 (; 105 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) - (local $4 i32) - local.get $3 - call $~lib/rt/purerc/__retain - drop - local.get $0 - if (result i32) - i32.const 1 - else - local.get $1 - i32.const 100 - i32.gt_s - end - local.set $4 - local.get $3 - call $~lib/rt/purerc/__release - local.get $4 - ) - (func $start:std/array~anonymous|33 (; 106 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + (func $start:std/array~anonymous|33 (; 84 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) local.get $3 call $~lib/rt/purerc/__retain drop local.get $3 i32.const 1 call $~lib/array/Array#push - drop local.get $3 call $~lib/rt/purerc/__release local.get $0 local.get $1 i32.add ) - (func $start:std/array~anonymous|34 (; 107 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) - (local $4 i32) - local.get $3 - call $~lib/rt/purerc/__retain - drop - local.get $0 - local.get $1 - i32.add - local.set $4 - local.get $3 - call $~lib/rt/purerc/__release - local.get $4 - ) - (func $start:std/array~anonymous|35 (; 108 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + (func $start:std/array~anonymous|35 (; 85 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) local.get $3 call $~lib/rt/purerc/__retain drop @@ -4974,233 +3836,48 @@ local.get $1 i32.add ) - (func $start:std/array~anonymous|36 (; 109 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) - (local $4 i32) - local.get $3 - call $~lib/rt/purerc/__retain - drop - local.get $0 - local.get $1 - i32.add - local.set $4 - local.get $3 - call $~lib/rt/purerc/__release - local.get $4 - ) - (func $~lib/array/Array#reduceRight (; 110 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/array/Array#reduceRight (; 86 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) - (local $4 i32) - local.get $2 - local.set $3 - block $break|0 - local.get $0 - i32.load offset=12 - i32.const 1 - i32.sub - local.set $4 - loop $repeat|0 - local.get $4 - i32.const 0 - i32.ge_s - i32.eqz - br_if $break|0 - block (result i32) - i32.const 4 - global.set $~lib/argc - local.get $3 - local.get $0 - i32.load offset=4 - local.get $4 - i32.const 2 - i32.shl - i32.add - i32.load - local.get $4 - local.get $0 - local.get $1 - call_indirect (type $FUNCSIG$iiiii) - end - local.set $3 - local.get $4 - i32.const 1 - i32.sub - local.set $4 - br $repeat|0 - unreachable - end - unreachable - end - local.get $3 - ) - (func $start:std/array~anonymous|37 (; 111 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) - (local $4 i32) - local.get $3 - call $~lib/rt/purerc/__retain - drop local.get $0 - local.get $1 - i32.add - local.set $4 - local.get $3 - call $~lib/rt/purerc/__release - local.get $4 - ) - (func $start:std/array~anonymous|38 (; 112 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) - (local $4 i32) - local.get $3 - call $~lib/rt/purerc/__retain - drop - local.get $0 - if (result i32) - i32.const 1 - else - local.get $1 - i32.const 2 - i32.gt_s - end - local.set $4 - local.get $3 - call $~lib/rt/purerc/__release - local.get $4 - ) - (func $~lib/array/Array#reduceRight (; 113 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - (local $4 i32) - local.get $2 - local.set $3 - block $break|0 - local.get $0 - i32.load offset=12 - i32.const 1 - i32.sub - local.set $4 - loop $repeat|0 - local.get $4 - i32.const 0 - i32.ge_s - i32.eqz - br_if $break|0 - block (result i32) - i32.const 4 - global.set $~lib/argc - local.get $3 - local.get $0 - i32.load offset=4 - local.get $4 - i32.const 2 - i32.shl - i32.add - i32.load - local.get $4 - local.get $0 - local.get $1 - call_indirect (type $FUNCSIG$iiiii) - end - local.set $3 - local.get $4 - i32.const 1 - i32.sub - local.set $4 - br $repeat|0 - unreachable - end - unreachable - end - local.get $3 - ) - (func $start:std/array~anonymous|39 (; 114 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) - (local $4 i32) - local.get $3 - call $~lib/rt/purerc/__retain - drop - local.get $0 - if (result i32) - i32.const 1 - else - local.get $1 - i32.const 100 - i32.gt_s - end - local.set $4 - local.get $3 - call $~lib/rt/purerc/__release - local.get $4 - ) - (func $start:std/array~anonymous|40 (; 115 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) - local.get $3 - call $~lib/rt/purerc/__retain - drop - local.get $3 + i32.load offset=12 i32.const 1 - call $~lib/array/Array#push - drop - local.get $3 - call $~lib/rt/purerc/__release - local.get $0 - local.get $1 - i32.add + i32.sub + local.set $3 + loop $repeat|0 + block $break|0 + local.get $3 + i32.const 0 + i32.lt_s + br_if $break|0 + i32.const 4 + global.set $~lib/argc + local.get $2 + local.get $0 + i32.load offset=4 + local.get $3 + i32.const 2 + i32.shl + i32.add + i32.load + local.get $3 + local.get $0 + local.get $1 + call_indirect (type $FUNCSIG$iiiii) + local.set $2 + local.get $3 + i32.const 1 + i32.sub + local.set $3 + br $repeat|0 + end + end + local.get $2 ) - (func $start:std/array~anonymous|41 (; 116 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) - (local $4 i32) - local.get $3 - call $~lib/rt/purerc/__retain - drop - local.get $0 - local.get $1 - i32.add - local.set $4 - local.get $3 - call $~lib/rt/purerc/__release - local.get $4 - ) - (func $start:std/array~anonymous|42 (; 117 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) - local.get $3 - call $~lib/rt/purerc/__retain - drop - local.get $3 - call $~lib/array/Array#pop - drop - local.get $3 - call $~lib/rt/purerc/__release - local.get $0 - local.get $1 - i32.add - ) - (func $~lib/math/murmurHash3 (; 118 ;) (type $FUNCSIG$jj) (param $0 i64) (result i64) - local.get $0 - local.get $0 - i64.const 33 - i64.shr_u - i64.xor - local.set $0 - local.get $0 - i64.const -49064778989728563 - i64.mul - local.set $0 - local.get $0 - local.get $0 - i64.const 33 - i64.shr_u - i64.xor - local.set $0 - local.get $0 - i64.const -4265267296055464877 - i64.mul - local.set $0 - local.get $0 - local.get $0 - i64.const 33 - i64.shr_u - i64.xor - local.set $0 - local.get $0 - ) - (func $~lib/math/splitMix32 (; 119 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/math/splitMix32 (; 87 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.const 1831565813 i32.add - local.set $0 - local.get $0 + local.tee $0 local.get $0 i32.const 15 i32.shr_u @@ -5209,28 +3886,27 @@ i32.const 1 i32.or i32.mul - local.set $0 - local.get $0 - local.get $0 - local.get $0 - local.get $0 - i32.const 7 - i32.shr_u - i32.xor + local.tee $0 local.get $0 i32.const 61 i32.or + local.get $0 + i32.const 7 + i32.shr_u + local.get $0 + i32.xor i32.mul + local.get $0 i32.add i32.xor - local.set $0 - local.get $0 + local.tee $0 local.get $0 i32.const 14 i32.shr_u i32.xor ) - (func $~lib/math/NativeMath.seedRandom (; 120 ;) (type $FUNCSIG$vj) (param $0 i64) + (func $~lib/math/NativeMath.seedRandom (; 88 ;) (type $FUNCSIG$vj) (param $0 i64) + (local $1 i64) local.get $0 i64.eqz if @@ -5244,12 +3920,47 @@ i32.const 1 global.set $~lib/math/random_seeded local.get $0 - call $~lib/math/murmurHash3 + i64.const 33 + i64.shr_u + local.get $0 + i64.xor + i64.const -49064778989728563 + i64.mul + local.tee $1 + local.get $1 + i64.const 33 + i64.shr_u + i64.xor + i64.const -4265267296055464877 + i64.mul + local.tee $1 + local.get $1 + i64.const 33 + i64.shr_u + i64.xor global.set $~lib/math/random_state0_64 global.get $~lib/math/random_state0_64 i64.const -1 i64.xor - call $~lib/math/murmurHash3 + local.tee $1 + local.get $1 + i64.const 33 + i64.shr_u + i64.xor + i64.const -49064778989728563 + i64.mul + local.tee $1 + local.get $1 + i64.const 33 + i64.shr_u + i64.xor + i64.const -4265267296055464877 + i64.mul + local.tee $1 + local.get $1 + i64.const 33 + i64.shr_u + i64.xor global.set $~lib/math/random_state1_64 local.get $0 i32.wrap_i64 @@ -5259,87 +3970,77 @@ call $~lib/math/splitMix32 global.set $~lib/math/random_state1_32 ) - (func $~lib/util/sort/insertionSort (; 121 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/util/sort/insertionSort (; 89 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) - (local $4 f32) - (local $5 i32) + (local $4 i32) + (local $5 f32) (local $6 f32) (local $7 i32) block $break|0 - i32.const 0 - local.set $3 loop $repeat|0 local.get $3 local.get $1 - i32.lt_s - i32.eqz + i32.ge_s br_if $break|0 - local.get $0 local.get $3 i32.const 2 i32.shl + local.get $0 i32.add f32.load - local.set $4 + local.set $5 local.get $3 i32.const 1 i32.sub - local.set $5 - block $break|1 - loop $continue|1 - local.get $5 - i32.const 0 - i32.ge_s - if - local.get $0 - local.get $5 + local.set $4 + loop $continue|1 + local.get $4 + i32.const 0 + i32.ge_s + if + block $break|1 + local.get $4 i32.const 2 i32.shl + local.get $0 i32.add f32.load local.set $6 - block (result i32) - i32.const 2 - global.set $~lib/argc - local.get $4 - local.get $6 - local.get $2 - call_indirect (type $FUNCSIG$iff) - end + i32.const 2 + global.set $~lib/argc + local.get $5 + local.get $6 + local.get $2 + call_indirect (type $FUNCSIG$iff) i32.const 0 - i32.lt_s - if - local.get $0 - block (result i32) - local.get $5 - local.tee $7 - i32.const 1 - i32.sub - local.set $5 - local.get $7 - end - i32.const 1 - i32.add - i32.const 2 - i32.shl - i32.add - local.get $6 - f32.store - else - br $break|1 - end + i32.ge_s + br_if $break|1 + local.get $4 + local.tee $7 + i32.const 1 + i32.sub + local.set $4 + local.get $7 + i32.const 1 + i32.add + i32.const 2 + i32.shl + local.get $0 + i32.add + local.get $6 + f32.store br $continue|1 end end end - local.get $0 - local.get $5 + local.get $4 i32.const 1 i32.add i32.const 2 i32.shl + local.get $0 i32.add - local.get $4 + local.get $5 f32.store local.get $3 i32.const 1 @@ -5351,16 +4052,13 @@ unreachable end ) - (func $~lib/rt/tlsf/freeBlock (; 122 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/rt/tlsf/freeBlock (; 90 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) local.get $1 i32.load - local.set $2 - local.get $2 + local.tee $2 i32.const 1 i32.and - i32.eqz - i32.eqz if i32.const 0 i32.const 128 @@ -5380,7 +4078,7 @@ local.get $1 call $~lib/rt/tlsf/onFree ) - (func $~lib/rt/tlsf/__free (; 123 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $~lib/rt/tlsf/__free (; 91 ;) (type $FUNCSIG$vi) (param $0 i32) global.get $~lib/rt/tlsf/ROOT i32.eqz if @@ -5392,16 +4090,12 @@ unreachable end local.get $0 + i32.const 15 + i32.and + i32.eqz i32.const 0 - i32.ne - if (result i32) - local.get $0 - i32.const 15 - i32.and - i32.eqz - else - i32.const 0 - end + local.get $0 + select i32.eqz if i32.const 0 @@ -5417,15 +4111,13 @@ i32.sub call $~lib/rt/tlsf/freeBlock ) - (func $~lib/util/sort/weakHeapSort (; 124 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/util/sort/weakHeapSort (; 92 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) - (local $5 i32) + (local $5 f32) (local $6 i32) - (local $7 i32) - (local $8 f32) - (local $9 f32) - (local $10 f32) + (local $7 f32) + (local $8 i32) local.get $1 i32.const 31 i32.add @@ -5433,297 +4125,261 @@ i32.shr_s i32.const 2 i32.shl - local.set $3 - local.get $3 + local.tee $3 i32.const 0 call $~lib/rt/tlsf/__alloc - local.set $4 - local.get $4 + local.tee $6 i32.const 0 local.get $3 call $~lib/memory/memory.fill - block $break|0 - local.get $1 - i32.const 1 - i32.sub - local.set $5 - loop $repeat|0 - local.get $5 + local.get $1 + i32.const 1 + i32.sub + local.set $4 + loop $repeat|0 + block $break|0 + local.get $4 i32.const 0 - i32.gt_s - i32.eqz + i32.le_s br_if $break|0 - local.get $5 - local.set $6 - block $break|1 - loop $continue|1 - local.get $6 - i32.const 1 - i32.and - local.get $4 - local.get $6 - i32.const 6 - i32.shr_s - i32.const 2 - i32.shl - i32.add - i32.load - local.get $6 + local.get $4 + local.set $3 + loop $continue|1 + local.get $3 + i32.const 1 + i32.and + local.get $3 + i32.const 6 + i32.shr_s + i32.const 2 + i32.shl + local.get $6 + i32.add + i32.load + local.get $3 + i32.const 1 + i32.shr_s + i32.const 31 + i32.and + i32.shr_u + i32.const 1 + i32.and + i32.eq + if + local.get $3 i32.const 1 i32.shr_s - i32.const 31 - i32.and - i32.shr_u - i32.const 1 - i32.and - i32.eq - if - local.get $6 - i32.const 1 - i32.shr_s - local.set $6 - br $continue|1 - end + local.set $3 + br $continue|1 end end - local.get $6 + local.get $3 i32.const 1 i32.shr_s + local.tee $3 + i32.const 2 + i32.shl + local.get $0 + i32.add + f32.load + local.set $5 + local.get $4 + i32.const 2 + i32.shl + local.get $0 + i32.add + f32.load local.set $7 - local.get $0 - local.get $7 i32.const 2 - i32.shl - i32.add - f32.load - local.set $8 - local.get $0 + global.set $~lib/argc local.get $5 - i32.const 2 - i32.shl - i32.add - f32.load - local.set $9 - block (result i32) - i32.const 2 - global.set $~lib/argc - local.get $8 - local.get $9 - local.get $2 - call_indirect (type $FUNCSIG$iff) - end + local.get $7 + local.get $2 + call_indirect (type $FUNCSIG$iff) i32.const 0 i32.lt_s if local.get $4 - local.get $5 - i32.const 5 - i32.shr_s - i32.const 2 - i32.shl - i32.add - local.get $4 - local.get $5 i32.const 5 i32.shr_s i32.const 2 i32.shl + local.get $6 i32.add + local.tee $8 + local.get $8 i32.load i32.const 1 - local.get $5 + local.get $4 i32.const 31 i32.and i32.shl i32.xor i32.store + local.get $4 + i32.const 2 + i32.shl local.get $0 + i32.add local.get $5 - i32.const 2 - i32.shl - i32.add - local.get $8 f32.store - local.get $0 - local.get $7 + local.get $3 i32.const 2 i32.shl + local.get $0 i32.add - local.get $9 + local.get $7 f32.store end - local.get $5 + local.get $4 i32.const 1 i32.sub - local.set $5 + local.set $4 br $repeat|0 - unreachable end - unreachable end - block $break|2 - local.get $1 - i32.const 1 - i32.sub - local.set $7 - loop $repeat|2 - local.get $7 + local.get $1 + i32.const 1 + i32.sub + local.set $4 + loop $repeat|2 + block $break|2 + local.get $4 i32.const 2 - i32.ge_s - i32.eqz + i32.lt_s br_if $break|2 local.get $0 f32.load - local.set $9 + local.set $5 local.get $0 - local.get $0 - local.get $7 + local.get $4 i32.const 2 i32.shl + local.get $0 i32.add + local.tee $1 f32.load f32.store - local.get $0 - local.get $7 - i32.const 2 - i32.shl - i32.add - local.get $9 + local.get $1 + local.get $5 f32.store i32.const 1 - local.set $6 - block $break|3 - loop $continue|3 - local.get $6 - i32.const 1 - i32.shl - local.get $4 - local.get $6 - i32.const 5 - i32.shr_s + local.set $3 + loop $continue|3 + local.get $3 + i32.const 5 + i32.shr_s + i32.const 2 + i32.shl + local.get $6 + i32.add + i32.load + local.get $3 + i32.const 31 + i32.and + i32.shr_u + i32.const 1 + i32.and + local.get $3 + i32.const 1 + i32.shl + i32.add + local.tee $1 + local.get $4 + i32.lt_s + if + local.get $1 + local.set $3 + br $continue|3 + end + end + loop $continue|4 + local.get $3 + i32.const 0 + i32.gt_s + if + local.get $0 + f32.load + local.set $5 + local.get $3 i32.const 2 i32.shl + local.get $0 i32.add - i32.load - local.get $6 - i32.const 31 - i32.and - i32.shr_u - i32.const 1 - i32.and - i32.add - local.tee $5 + f32.load + local.set $7 + i32.const 2 + global.set $~lib/argc + local.get $5 local.get $7 + local.get $2 + call_indirect (type $FUNCSIG$iff) + i32.const 0 i32.lt_s if - local.get $5 - local.set $6 - br $continue|3 - end - end - end - block $break|4 - loop $continue|4 - local.get $6 - i32.const 0 - i32.gt_s - if - local.get $0 - f32.load - local.set $9 - local.get $0 - local.get $6 + local.get $3 + i32.const 5 + i32.shr_s i32.const 2 i32.shl - i32.add - f32.load - local.set $8 - block (result i32) - i32.const 2 - global.set $~lib/argc - local.get $9 - local.get $8 - local.get $2 - call_indirect (type $FUNCSIG$iff) - end - i32.const 0 - i32.lt_s - if - local.get $4 - local.get $6 - i32.const 5 - i32.shr_s - i32.const 2 - i32.shl - i32.add - local.get $4 - local.get $6 - i32.const 5 - i32.shr_s - i32.const 2 - i32.shl - i32.add - i32.load - i32.const 1 - local.get $6 - i32.const 31 - i32.and - i32.shl - i32.xor - i32.store - local.get $0 - local.get $6 - i32.const 2 - i32.shl - i32.add - local.get $9 - f32.store - local.get $0 - local.get $8 - f32.store - end local.get $6 + i32.add + local.tee $1 + local.get $1 + i32.load i32.const 1 - i32.shr_s - local.set $6 - br $continue|4 + local.get $3 + i32.const 31 + i32.and + i32.shl + i32.xor + i32.store + local.get $3 + i32.const 2 + i32.shl + local.get $0 + i32.add + local.get $5 + f32.store + local.get $0 + local.get $7 + f32.store end + local.get $3 + i32.const 1 + i32.shr_s + local.set $3 + br $continue|4 end end - local.get $7 + local.get $4 i32.const 1 i32.sub - local.set $7 + local.set $4 br $repeat|2 - unreachable end - unreachable end - local.get $4 + local.get $6 call $~lib/rt/tlsf/__free local.get $0 f32.load offset=4 - local.set $10 + local.set $5 local.get $0 local.get $0 f32.load f32.store offset=4 local.get $0 - local.get $10 + local.get $5 f32.store ) - (func $~lib/array/Array#sort (; 125 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array#sort (; 93 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 f32) (local $5 f32) - (local $6 i32) - (local $7 i32) - (local $8 i32) local.get $0 i32.load offset=12 - local.set $2 - local.get $2 + local.tee $3 i32.const 1 i32.le_s if @@ -5733,32 +4389,30 @@ end local.get $0 i32.load offset=4 - local.set $3 - local.get $2 + local.set $2 + local.get $3 i32.const 2 i32.eq if - local.get $3 + local.get $2 f32.load offset=4 local.set $4 - local.get $3 + local.get $2 f32.load local.set $5 - block (result i32) - i32.const 2 - global.set $~lib/argc - local.get $4 - local.get $5 - local.get $1 - call_indirect (type $FUNCSIG$iff) - end + i32.const 2 + global.set $~lib/argc + local.get $4 + local.get $5 + local.get $1 + call_indirect (type $FUNCSIG$iff) i32.const 0 i32.lt_s if - local.get $3 + local.get $2 local.get $5 f32.store offset=4 - local.get $3 + local.get $2 local.get $4 f32.store end @@ -5766,172 +4420,118 @@ call $~lib/rt/purerc/__retain return end - block $~lib/util/sort/SORT|inlined.0 - local.get $3 - local.set $8 + local.get $3 + i32.const 256 + i32.lt_s + if local.get $2 - local.set $7 + local.get $3 local.get $1 - local.set $6 - local.get $7 - i32.const 256 - i32.lt_s - if - local.get $8 - local.get $7 - local.get $6 - call $~lib/util/sort/insertionSort - else - local.get $8 - local.get $7 - local.get $6 - call $~lib/util/sort/weakHeapSort - end + call $~lib/util/sort/insertionSort + else + local.get $2 + local.get $3 + local.get $1 + call $~lib/util/sort/weakHeapSort end local.get $0 call $~lib/rt/purerc/__retain ) - (func $~lib/util/sort/COMPARATOR~anonymous|0 (; 126 ;) (type $FUNCSIG$iff) (param $0 f32) (param $1 f32) (result i32) + (func $~lib/util/sort/COMPARATOR~anonymous|0 (; 94 ;) (type $FUNCSIG$iff) (param $0 f32) (param $1 f32) (result i32) (local $2 i32) (local $3 i32) local.get $0 i32.reinterpret_f32 - local.set $2 + local.tee $2 + local.get $2 + i32.const 31 + i32.shr_s + i32.const 1 + i32.shr_u + i32.xor + local.tee $2 local.get $1 i32.reinterpret_f32 - local.set $3 - local.get $2 - local.get $2 - i32.const 31 - i32.shr_s - i32.const 1 - i32.shr_u - i32.xor - local.set $2 - local.get $3 + local.tee $3 local.get $3 i32.const 31 i32.shr_s i32.const 1 i32.shr_u i32.xor - local.set $3 - local.get $2 - local.get $3 + local.tee $3 i32.gt_s local.get $2 local.get $3 i32.lt_s i32.sub ) - (func $~lib/array/Array#sort|trampoline (; 127 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - block $1of1 - block $0of1 - block $outOfRange - global.get $~lib/argc - br_table $0of1 $1of1 $outOfRange - end - unreachable - end - block $~lib/util/sort/COMPARATOR|inlined.0 (result i32) - i32.const 44 - br $~lib/util/sort/COMPARATOR|inlined.0 - end - local.set $1 - end - local.get $0 - local.get $1 - call $~lib/array/Array#sort - ) - (func $~lib/builtins/isNaN (; 128 ;) (type $FUNCSIG$if) (param $0 f32) (result i32) - local.get $0 - local.get $0 - f32.ne - ) - (func $std/array/isArraysEqual (; 129 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) + (func $std/array/isArraysEqual (; 95 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 f32) + (local $4 i32) local.get $0 call $~lib/rt/purerc/__retain drop local.get $1 call $~lib/rt/purerc/__retain drop - local.get $2 - i32.eqz - if - local.get $0 - call $~lib/array/Array#get:length - local.set $2 - local.get $2 - local.get $1 - call $~lib/array/Array#get:length - i32.ne - if + block $folding-inner1 + block $folding-inner0 local.get $0 - call $~lib/rt/purerc/__release + i32.load offset=12 + local.tee $4 local.get $1 - call $~lib/rt/purerc/__release - i32.const 0 - return - end - local.get $0 - local.get $1 - i32.eq - if + i32.load offset=12 + i32.ne + br_if $folding-inner0 local.get $0 - call $~lib/rt/purerc/__release local.get $1 - call $~lib/rt/purerc/__release - i32.const 1 - return - end - end - block $break|0 - i32.const 0 - local.set $3 - loop $repeat|0 - block $continue|0 - local.get $3 + i32.eq + br_if $folding-inner1 + loop $repeat|0 local.get $2 + local.get $4 i32.lt_s - i32.eqz - br_if $break|0 - local.get $0 - local.get $3 - call $~lib/array/Array#__get - call $~lib/builtins/isNaN - local.get $1 - local.get $3 - call $~lib/array/Array#__get - call $~lib/builtins/isNaN - i32.eq - if - br $continue|0 - end - local.get $0 - local.get $3 - call $~lib/array/Array#__get - local.get $1 - local.get $3 - call $~lib/array/Array#__get - f32.ne if local.get $0 - call $~lib/rt/purerc/__release + local.get $2 + call $~lib/array/Array#__get + local.tee $3 + local.get $3 + f32.ne local.get $1 - call $~lib/rt/purerc/__release - i32.const 0 - return + local.get $2 + call $~lib/array/Array#__get + local.tee $3 + local.get $3 + f32.ne + i32.ne + if + local.get $0 + local.get $2 + call $~lib/array/Array#__get + local.get $1 + local.get $2 + call $~lib/array/Array#__get + f32.ne + br_if $folding-inner0 + end + local.get $2 + i32.const 1 + i32.add + local.set $2 + br $repeat|0 end end - local.get $3 - i32.const 1 - i32.add - local.set $3 - br $repeat|0 - unreachable + br $folding-inner1 end - unreachable + local.get $0 + call $~lib/rt/purerc/__release + local.get $1 + call $~lib/rt/purerc/__release + i32.const 0 + return end local.get $0 call $~lib/rt/purerc/__release @@ -5939,87 +4539,77 @@ call $~lib/rt/purerc/__release i32.const 1 ) - (func $~lib/util/sort/insertionSort (; 130 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/util/sort/insertionSort (; 96 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) - (local $4 f64) - (local $5 i32) + (local $4 i32) + (local $5 f64) (local $6 f64) (local $7 i32) block $break|0 - i32.const 0 - local.set $3 loop $repeat|0 local.get $3 local.get $1 - i32.lt_s - i32.eqz + i32.ge_s br_if $break|0 - local.get $0 local.get $3 i32.const 3 i32.shl + local.get $0 i32.add f64.load - local.set $4 + local.set $5 local.get $3 i32.const 1 i32.sub - local.set $5 - block $break|1 - loop $continue|1 - local.get $5 - i32.const 0 - i32.ge_s - if - local.get $0 - local.get $5 + local.set $4 + loop $continue|1 + local.get $4 + i32.const 0 + i32.ge_s + if + block $break|1 + local.get $4 i32.const 3 i32.shl + local.get $0 i32.add f64.load local.set $6 - block (result i32) - i32.const 2 - global.set $~lib/argc - local.get $4 - local.get $6 - local.get $2 - call_indirect (type $FUNCSIG$idd) - end + i32.const 2 + global.set $~lib/argc + local.get $5 + local.get $6 + local.get $2 + call_indirect (type $FUNCSIG$idd) i32.const 0 - i32.lt_s - if - local.get $0 - block (result i32) - local.get $5 - local.tee $7 - i32.const 1 - i32.sub - local.set $5 - local.get $7 - end - i32.const 1 - i32.add - i32.const 3 - i32.shl - i32.add - local.get $6 - f64.store - else - br $break|1 - end + i32.ge_s + br_if $break|1 + local.get $4 + local.tee $7 + i32.const 1 + i32.sub + local.set $4 + local.get $7 + i32.const 1 + i32.add + i32.const 3 + i32.shl + local.get $0 + i32.add + local.get $6 + f64.store br $continue|1 end end end - local.get $0 - local.get $5 + local.get $4 i32.const 1 i32.add i32.const 3 i32.shl + local.get $0 i32.add - local.get $4 + local.get $5 f64.store local.get $3 i32.const 1 @@ -6031,15 +4621,13 @@ unreachable end ) - (func $~lib/util/sort/weakHeapSort (; 131 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/util/sort/weakHeapSort (; 97 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) - (local $5 i32) + (local $5 f64) (local $6 i32) - (local $7 i32) - (local $8 f64) - (local $9 f64) - (local $10 f64) + (local $7 f64) + (local $8 i32) local.get $1 i32.const 31 i32.add @@ -6047,297 +4635,261 @@ i32.shr_s i32.const 2 i32.shl - local.set $3 - local.get $3 + local.tee $3 i32.const 0 call $~lib/rt/tlsf/__alloc - local.set $4 - local.get $4 + local.tee $6 i32.const 0 local.get $3 call $~lib/memory/memory.fill - block $break|0 - local.get $1 - i32.const 1 - i32.sub - local.set $5 - loop $repeat|0 - local.get $5 + local.get $1 + i32.const 1 + i32.sub + local.set $4 + loop $repeat|0 + block $break|0 + local.get $4 i32.const 0 - i32.gt_s - i32.eqz + i32.le_s br_if $break|0 - local.get $5 - local.set $6 - block $break|1 - loop $continue|1 - local.get $6 - i32.const 1 - i32.and - local.get $4 - local.get $6 - i32.const 6 - i32.shr_s - i32.const 2 - i32.shl - i32.add - i32.load - local.get $6 + local.get $4 + local.set $3 + loop $continue|1 + local.get $3 + i32.const 1 + i32.and + local.get $3 + i32.const 6 + i32.shr_s + i32.const 2 + i32.shl + local.get $6 + i32.add + i32.load + local.get $3 + i32.const 1 + i32.shr_s + i32.const 31 + i32.and + i32.shr_u + i32.const 1 + i32.and + i32.eq + if + local.get $3 i32.const 1 i32.shr_s - i32.const 31 - i32.and - i32.shr_u - i32.const 1 - i32.and - i32.eq - if - local.get $6 - i32.const 1 - i32.shr_s - local.set $6 - br $continue|1 - end + local.set $3 + br $continue|1 end end - local.get $6 + local.get $3 i32.const 1 i32.shr_s + local.tee $3 + i32.const 3 + i32.shl + local.get $0 + i32.add + f64.load + local.set $5 + local.get $4 + i32.const 3 + i32.shl + local.get $0 + i32.add + f64.load local.set $7 - local.get $0 - local.get $7 - i32.const 3 - i32.shl - i32.add - f64.load - local.set $8 - local.get $0 + i32.const 2 + global.set $~lib/argc local.get $5 - i32.const 3 - i32.shl - i32.add - f64.load - local.set $9 - block (result i32) - i32.const 2 - global.set $~lib/argc - local.get $8 - local.get $9 - local.get $2 - call_indirect (type $FUNCSIG$idd) - end + local.get $7 + local.get $2 + call_indirect (type $FUNCSIG$idd) i32.const 0 i32.lt_s if local.get $4 - local.get $5 - i32.const 5 - i32.shr_s - i32.const 2 - i32.shl - i32.add - local.get $4 - local.get $5 i32.const 5 i32.shr_s i32.const 2 i32.shl + local.get $6 i32.add + local.tee $8 + local.get $8 i32.load i32.const 1 - local.get $5 + local.get $4 i32.const 31 i32.and i32.shl i32.xor i32.store + local.get $4 + i32.const 3 + i32.shl local.get $0 + i32.add local.get $5 - i32.const 3 - i32.shl - i32.add - local.get $8 f64.store - local.get $0 - local.get $7 + local.get $3 i32.const 3 i32.shl + local.get $0 i32.add - local.get $9 + local.get $7 f64.store end - local.get $5 + local.get $4 i32.const 1 i32.sub - local.set $5 + local.set $4 br $repeat|0 - unreachable end - unreachable end - block $break|2 - local.get $1 - i32.const 1 - i32.sub - local.set $7 - loop $repeat|2 - local.get $7 + local.get $1 + i32.const 1 + i32.sub + local.set $4 + loop $repeat|2 + block $break|2 + local.get $4 i32.const 2 - i32.ge_s - i32.eqz + i32.lt_s br_if $break|2 local.get $0 f64.load - local.set $9 + local.set $5 local.get $0 - local.get $0 - local.get $7 + local.get $4 i32.const 3 i32.shl + local.get $0 i32.add + local.tee $1 f64.load f64.store - local.get $0 - local.get $7 - i32.const 3 - i32.shl - i32.add - local.get $9 + local.get $1 + local.get $5 f64.store i32.const 1 - local.set $6 - block $break|3 - loop $continue|3 - local.get $6 - i32.const 1 + local.set $3 + loop $continue|3 + local.get $3 + i32.const 5 + i32.shr_s + i32.const 2 + i32.shl + local.get $6 + i32.add + i32.load + local.get $3 + i32.const 31 + i32.and + i32.shr_u + i32.const 1 + i32.and + local.get $3 + i32.const 1 + i32.shl + i32.add + local.tee $1 + local.get $4 + i32.lt_s + if + local.get $1 + local.set $3 + br $continue|3 + end + end + loop $continue|4 + local.get $3 + i32.const 0 + i32.gt_s + if + local.get $0 + f64.load + local.set $5 + local.get $3 + i32.const 3 i32.shl - local.get $4 - local.get $6 - i32.const 5 - i32.shr_s + local.get $0 + i32.add + f64.load + local.set $7 i32.const 2 - i32.shl - i32.add - i32.load - local.get $6 - i32.const 31 - i32.and - i32.shr_u - i32.const 1 - i32.and - i32.add - local.tee $5 + global.set $~lib/argc + local.get $5 local.get $7 + local.get $2 + call_indirect (type $FUNCSIG$idd) + i32.const 0 i32.lt_s if - local.get $5 - local.set $6 - br $continue|3 - end - end - end - block $break|4 - loop $continue|4 - local.get $6 - i32.const 0 - i32.gt_s - if - local.get $0 - f64.load - local.set $9 - local.get $0 + local.get $3 + i32.const 5 + i32.shr_s + i32.const 2 + i32.shl local.get $6 + i32.add + local.tee $1 + local.get $1 + i32.load + i32.const 1 + local.get $3 + i32.const 31 + i32.and + i32.shl + i32.xor + i32.store + local.get $3 i32.const 3 i32.shl + local.get $0 i32.add - f64.load - local.set $8 - block (result i32) - i32.const 2 - global.set $~lib/argc - local.get $9 - local.get $8 - local.get $2 - call_indirect (type $FUNCSIG$idd) - end - i32.const 0 - i32.lt_s - if - local.get $4 - local.get $6 - i32.const 5 - i32.shr_s - i32.const 2 - i32.shl - i32.add - local.get $4 - local.get $6 - i32.const 5 - i32.shr_s - i32.const 2 - i32.shl - i32.add - i32.load - i32.const 1 - local.get $6 - i32.const 31 - i32.and - i32.shl - i32.xor - i32.store - local.get $0 - local.get $6 - i32.const 3 - i32.shl - i32.add - local.get $9 - f64.store - local.get $0 - local.get $8 - f64.store - end - local.get $6 - i32.const 1 - i32.shr_s - local.set $6 - br $continue|4 + local.get $5 + f64.store + local.get $0 + local.get $7 + f64.store end + local.get $3 + i32.const 1 + i32.shr_s + local.set $3 + br $continue|4 end end - local.get $7 + local.get $4 i32.const 1 i32.sub - local.set $7 + local.set $4 br $repeat|2 - unreachable end - unreachable end - local.get $4 + local.get $6 call $~lib/rt/tlsf/__free local.get $0 f64.load offset=8 - local.set $10 + local.set $5 local.get $0 local.get $0 f64.load f64.store offset=8 local.get $0 - local.get $10 + local.get $5 f64.store ) - (func $~lib/array/Array#sort (; 132 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array#sort (; 98 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 f64) (local $5 f64) - (local $6 i32) - (local $7 i32) - (local $8 i32) local.get $0 i32.load offset=12 - local.set $2 - local.get $2 + local.tee $3 i32.const 1 i32.le_s if @@ -6347,32 +4899,30 @@ end local.get $0 i32.load offset=4 - local.set $3 - local.get $2 + local.set $2 + local.get $3 i32.const 2 i32.eq if - local.get $3 + local.get $2 f64.load offset=8 local.set $4 - local.get $3 + local.get $2 f64.load local.set $5 - block (result i32) - i32.const 2 - global.set $~lib/argc - local.get $4 - local.get $5 - local.get $1 - call_indirect (type $FUNCSIG$idd) - end + i32.const 2 + global.set $~lib/argc + local.get $4 + local.get $5 + local.get $1 + call_indirect (type $FUNCSIG$idd) i32.const 0 i32.lt_s if - local.get $3 + local.get $2 local.get $5 f64.store offset=8 - local.get $3 + local.get $2 local.get $4 f64.store end @@ -6380,97 +4930,53 @@ call $~lib/rt/purerc/__retain return end - block $~lib/util/sort/SORT|inlined.0 - local.get $3 - local.set $8 + local.get $3 + i32.const 256 + i32.lt_s + if local.get $2 - local.set $7 + local.get $3 local.get $1 - local.set $6 - local.get $7 - i32.const 256 - i32.lt_s - if - local.get $8 - local.get $7 - local.get $6 - call $~lib/util/sort/insertionSort - else - local.get $8 - local.get $7 - local.get $6 - call $~lib/util/sort/weakHeapSort - end + call $~lib/util/sort/insertionSort + else + local.get $2 + local.get $3 + local.get $1 + call $~lib/util/sort/weakHeapSort end local.get $0 call $~lib/rt/purerc/__retain ) - (func $~lib/util/sort/COMPARATOR~anonymous|0 (; 133 ;) (type $FUNCSIG$idd) (param $0 f64) (param $1 f64) (result i32) + (func $~lib/util/sort/COMPARATOR~anonymous|0 (; 99 ;) (type $FUNCSIG$idd) (param $0 f64) (param $1 f64) (result i32) (local $2 i64) (local $3 i64) local.get $0 i64.reinterpret_f64 - local.set $2 + local.tee $2 + local.get $2 + i64.const 63 + i64.shr_s + i64.const 1 + i64.shr_u + i64.xor + local.tee $2 local.get $1 i64.reinterpret_f64 - local.set $3 - local.get $2 - local.get $2 - i64.const 63 - i64.shr_s - i64.const 1 - i64.shr_u - i64.xor - local.set $2 - local.get $3 + local.tee $3 local.get $3 i64.const 63 i64.shr_s i64.const 1 i64.shr_u i64.xor - local.set $3 - local.get $2 - local.get $3 + local.tee $3 i64.gt_s local.get $2 local.get $3 i64.lt_s i32.sub ) - (func $~lib/array/Array#sort|trampoline (; 134 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - block $1of1 - block $0of1 - block $outOfRange - global.get $~lib/argc - br_table $0of1 $1of1 $outOfRange - end - unreachable - end - block $~lib/util/sort/COMPARATOR|inlined.0 (result i32) - i32.const 45 - br $~lib/util/sort/COMPARATOR|inlined.0 - end - local.set $1 - end - local.get $0 - local.get $1 - call $~lib/array/Array#sort - ) - (func $~lib/array/Array#get:length (; 135 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - local.get $0 - i32.load offset=12 - ) - (func $~lib/array/Array#__unchecked_get (; 136 ;) (type $FUNCSIG$dii) (param $0 i32) (param $1 i32) (result f64) - local.get $0 - i32.load offset=4 - local.get $1 - i32.const 3 - i32.shl - i32.add - f64.load - ) - (func $~lib/array/Array#__get (; 137 ;) (type $FUNCSIG$dii) (param $0 i32) (param $1 i32) (result f64) + (func $~lib/array/Array#__get (; 100 ;) (type $FUNCSIG$dii) (param $0 i32) (param $1 i32) (result f64) local.get $1 local.get $0 i32.load offset=8 @@ -6486,98 +4992,79 @@ unreachable end local.get $0 + i32.load offset=4 local.get $1 - call $~lib/array/Array#__unchecked_get + i32.const 3 + i32.shl + i32.add + f64.load ) - (func $~lib/builtins/isNaN (; 138 ;) (type $FUNCSIG$id) (param $0 f64) (result i32) - local.get $0 - local.get $0 - f64.ne - ) - (func $std/array/isArraysEqual (; 139 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) + (func $std/array/isArraysEqual (; 101 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 f64) + (local $4 i32) local.get $0 call $~lib/rt/purerc/__retain drop local.get $1 call $~lib/rt/purerc/__retain drop - local.get $2 - i32.eqz - if - local.get $0 - call $~lib/array/Array#get:length - local.set $2 - local.get $2 - local.get $1 - call $~lib/array/Array#get:length - i32.ne - if + block $folding-inner1 + block $folding-inner0 local.get $0 - call $~lib/rt/purerc/__release + i32.load offset=12 + local.tee $4 local.get $1 - call $~lib/rt/purerc/__release - i32.const 0 - return - end - local.get $0 - local.get $1 - i32.eq - if + i32.load offset=12 + i32.ne + br_if $folding-inner0 local.get $0 - call $~lib/rt/purerc/__release local.get $1 - call $~lib/rt/purerc/__release - i32.const 1 - return - end - end - block $break|0 - i32.const 0 - local.set $3 - loop $repeat|0 - block $continue|0 - local.get $3 + i32.eq + br_if $folding-inner1 + loop $repeat|0 local.get $2 + local.get $4 i32.lt_s - i32.eqz - br_if $break|0 - local.get $0 - local.get $3 - call $~lib/array/Array#__get - call $~lib/builtins/isNaN - local.get $1 - local.get $3 - call $~lib/array/Array#__get - call $~lib/builtins/isNaN - i32.eq - if - br $continue|0 - end - local.get $0 - local.get $3 - call $~lib/array/Array#__get - local.get $1 - local.get $3 - call $~lib/array/Array#__get - f64.ne if local.get $0 - call $~lib/rt/purerc/__release + local.get $2 + call $~lib/array/Array#__get + local.tee $3 + local.get $3 + f64.ne local.get $1 - call $~lib/rt/purerc/__release - i32.const 0 - return + local.get $2 + call $~lib/array/Array#__get + local.tee $3 + local.get $3 + f64.ne + i32.ne + if + local.get $0 + local.get $2 + call $~lib/array/Array#__get + local.get $1 + local.get $2 + call $~lib/array/Array#__get + f64.ne + br_if $folding-inner0 + end + local.get $2 + i32.const 1 + i32.add + local.set $2 + br $repeat|0 end end - local.get $3 - i32.const 1 - i32.add - local.set $3 - br $repeat|0 - unreachable + br $folding-inner1 end - unreachable + local.get $0 + call $~lib/rt/purerc/__release + local.get $1 + call $~lib/rt/purerc/__release + i32.const 0 + return end local.get $0 call $~lib/rt/purerc/__release @@ -6585,87 +5072,77 @@ call $~lib/rt/purerc/__release i32.const 1 ) - (func $~lib/util/sort/insertionSort (; 140 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/util/sort/insertionSort (; 102 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) (local $6 i32) (local $7 i32) block $break|0 - i32.const 0 - local.set $3 loop $repeat|0 local.get $3 local.get $1 - i32.lt_s - i32.eqz + i32.ge_s br_if $break|0 - local.get $0 local.get $3 i32.const 2 i32.shl + local.get $0 i32.add i32.load - local.set $4 + local.set $5 local.get $3 i32.const 1 i32.sub - local.set $5 - block $break|1 - loop $continue|1 - local.get $5 - i32.const 0 - i32.ge_s - if - local.get $0 - local.get $5 + local.set $4 + loop $continue|1 + local.get $4 + i32.const 0 + i32.ge_s + if + block $break|1 + local.get $4 i32.const 2 i32.shl + local.get $0 i32.add i32.load local.set $6 - block (result i32) - i32.const 2 - global.set $~lib/argc - local.get $4 - local.get $6 - local.get $2 - call_indirect (type $FUNCSIG$iii) - end + i32.const 2 + global.set $~lib/argc + local.get $5 + local.get $6 + local.get $2 + call_indirect (type $FUNCSIG$iii) i32.const 0 - i32.lt_s - if - local.get $0 - block (result i32) - local.get $5 - local.tee $7 - i32.const 1 - i32.sub - local.set $5 - local.get $7 - end - i32.const 1 - i32.add - i32.const 2 - i32.shl - i32.add - local.get $6 - i32.store - else - br $break|1 - end + i32.ge_s + br_if $break|1 + local.get $4 + local.tee $7 + i32.const 1 + i32.sub + local.set $4 + local.get $7 + i32.const 1 + i32.add + i32.const 2 + i32.shl + local.get $0 + i32.add + local.get $6 + i32.store br $continue|1 end end end - local.get $0 - local.get $5 + local.get $4 i32.const 1 i32.add i32.const 2 i32.shl + local.get $0 i32.add - local.get $4 + local.get $5 i32.store local.get $3 i32.const 1 @@ -6677,15 +5154,13 @@ unreachable end ) - (func $~lib/util/sort/weakHeapSort (; 141 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/util/sort/weakHeapSort (; 103 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) (local $6 i32) (local $7 i32) (local $8 i32) - (local $9 i32) - (local $10 i32) local.get $1 i32.const 31 i32.add @@ -6693,295 +5168,260 @@ i32.shr_s i32.const 2 i32.shl - local.set $3 - local.get $3 + local.tee $3 i32.const 0 call $~lib/rt/tlsf/__alloc - local.set $4 - local.get $4 + local.tee $5 i32.const 0 local.get $3 call $~lib/memory/memory.fill - block $break|0 - local.get $1 - i32.const 1 - i32.sub - local.set $5 - loop $repeat|0 - local.get $5 + local.get $1 + i32.const 1 + i32.sub + local.set $3 + loop $repeat|0 + block $break|0 + local.get $3 i32.const 0 - i32.gt_s - i32.eqz + i32.le_s br_if $break|0 - local.get $5 - local.set $6 - block $break|1 - loop $continue|1 - local.get $6 - i32.const 1 - i32.and + local.get $3 + local.set $4 + loop $continue|1 + local.get $4 + i32.const 1 + i32.and + local.get $4 + i32.const 6 + i32.shr_s + i32.const 2 + i32.shl + local.get $5 + i32.add + i32.load + local.get $4 + i32.const 1 + i32.shr_s + i32.const 31 + i32.and + i32.shr_u + i32.const 1 + i32.and + i32.eq + if local.get $4 - local.get $6 - i32.const 6 - i32.shr_s - i32.const 2 - i32.shl - i32.add - i32.load - local.get $6 i32.const 1 i32.shr_s - i32.const 31 - i32.and - i32.shr_u - i32.const 1 - i32.and - i32.eq - if - local.get $6 - i32.const 1 - i32.shr_s - local.set $6 - br $continue|1 - end + local.set $4 + br $continue|1 end end - local.get $6 + local.get $4 i32.const 1 i32.shr_s - local.set $7 - local.get $0 - local.get $7 + local.tee $7 i32.const 2 i32.shl + local.get $0 i32.add i32.load - local.set $8 - local.get $0 - local.get $5 + local.set $4 + local.get $3 i32.const 2 i32.shl + local.get $0 i32.add i32.load - local.set $9 - block (result i32) - i32.const 2 - global.set $~lib/argc - local.get $8 - local.get $9 - local.get $2 - call_indirect (type $FUNCSIG$iii) - end + local.set $6 + i32.const 2 + global.set $~lib/argc + local.get $4 + local.get $6 + local.get $2 + call_indirect (type $FUNCSIG$iii) i32.const 0 i32.lt_s if - local.get $4 - local.get $5 + local.get $3 i32.const 5 i32.shr_s i32.const 2 i32.shl - i32.add - local.get $4 local.get $5 - i32.const 5 - i32.shr_s - i32.const 2 - i32.shl i32.add + local.tee $8 + local.get $8 i32.load i32.const 1 - local.get $5 + local.get $3 i32.const 31 i32.and i32.shl i32.xor i32.store - local.get $0 - local.get $5 + local.get $3 i32.const 2 i32.shl - i32.add - local.get $8 - i32.store local.get $0 + i32.add + local.get $4 + i32.store local.get $7 i32.const 2 i32.shl + local.get $0 i32.add - local.get $9 + local.get $6 i32.store end - local.get $5 + local.get $3 i32.const 1 i32.sub - local.set $5 + local.set $3 br $repeat|0 - unreachable end - unreachable end - block $break|2 - local.get $1 - i32.const 1 - i32.sub - local.set $9 - loop $repeat|2 - local.get $9 + local.get $1 + i32.const 1 + i32.sub + local.set $4 + loop $repeat|2 + block $break|2 + local.get $4 i32.const 2 - i32.ge_s - i32.eqz + i32.lt_s br_if $break|2 local.get $0 i32.load - local.set $8 + local.set $1 local.get $0 - local.get $0 - local.get $9 + local.get $4 i32.const 2 i32.shl + local.get $0 i32.add + local.tee $3 i32.load i32.store - local.get $0 - local.get $9 - i32.const 2 - i32.shl - i32.add - local.get $8 + local.get $3 + local.get $1 i32.store i32.const 1 - local.set $7 - block $break|3 - loop $continue|3 - local.get $7 - i32.const 1 - i32.shl - local.get $4 - local.get $7 - i32.const 5 - i32.shr_s + local.set $1 + loop $continue|3 + local.get $1 + i32.const 5 + i32.shr_s + i32.const 2 + i32.shl + local.get $5 + i32.add + i32.load + local.get $1 + i32.const 31 + i32.and + i32.shr_u + i32.const 1 + i32.and + local.get $1 + i32.const 1 + i32.shl + i32.add + local.tee $3 + local.get $4 + i32.lt_s + if + local.get $3 + local.set $1 + br $continue|3 + end + end + loop $continue|4 + local.get $1 + i32.const 0 + i32.gt_s + if + local.get $0 + i32.load + local.set $3 + local.get $1 i32.const 2 i32.shl + local.get $0 i32.add i32.load - local.get $7 - i32.const 31 - i32.and - i32.shr_u - i32.const 1 - i32.and - i32.add - local.tee $6 - local.get $9 + local.set $6 + i32.const 2 + global.set $~lib/argc + local.get $3 + local.get $6 + local.get $2 + call_indirect (type $FUNCSIG$iii) + i32.const 0 i32.lt_s if - local.get $6 - local.set $7 - br $continue|3 - end - end - end - block $break|4 - loop $continue|4 - local.get $7 - i32.const 0 - i32.gt_s - if - local.get $0 - i32.load - local.set $8 - local.get $0 - local.get $7 + local.get $1 + i32.const 5 + i32.shr_s i32.const 2 i32.shl + local.get $5 i32.add - i32.load - local.set $5 - block (result i32) - i32.const 2 - global.set $~lib/argc - local.get $8 - local.get $5 - local.get $2 - call_indirect (type $FUNCSIG$iii) - end - i32.const 0 - i32.lt_s - if - local.get $4 - local.get $7 - i32.const 5 - i32.shr_s - i32.const 2 - i32.shl - i32.add - local.get $4 - local.get $7 - i32.const 5 - i32.shr_s - i32.const 2 - i32.shl - i32.add - i32.load - i32.const 1 - local.get $7 - i32.const 31 - i32.and - i32.shl - i32.xor - i32.store - local.get $0 - local.get $7 - i32.const 2 - i32.shl - i32.add - local.get $8 - i32.store - local.get $0 - local.get $5 - i32.store - end + local.tee $7 local.get $7 + i32.load i32.const 1 - i32.shr_s - local.set $7 - br $continue|4 + local.get $1 + i32.const 31 + i32.and + i32.shl + i32.xor + i32.store + local.get $1 + i32.const 2 + i32.shl + local.get $0 + i32.add + local.get $3 + i32.store + local.get $0 + local.get $6 + i32.store end + local.get $1 + i32.const 1 + i32.shr_s + local.set $1 + br $continue|4 end end - local.get $9 + local.get $4 i32.const 1 i32.sub - local.set $9 + local.set $4 br $repeat|2 - unreachable end - unreachable end - local.get $4 + local.get $5 call $~lib/rt/tlsf/__free local.get $0 i32.load offset=4 - local.set $10 + local.set $1 local.get $0 local.get $0 i32.load i32.store offset=4 local.get $0 - local.get $10 + local.get $1 i32.store ) - (func $~lib/array/Array#sort (; 142 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array#sort (; 104 ;) (type $FUNCSIG$iii) (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 $0 i32.load offset=12 - local.set $2 - local.get $2 + local.tee $2 i32.const 1 i32.le_s if @@ -6998,546 +5438,53 @@ if local.get $3 i32.load offset=4 - local.set $4 + local.set $2 local.get $3 i32.load - local.set $5 - block (result i32) - i32.const 2 - global.set $~lib/argc - local.get $4 - local.get $5 - local.get $1 - call_indirect (type $FUNCSIG$iii) - end + local.set $4 + i32.const 2 + global.set $~lib/argc + local.get $2 + local.get $4 + local.get $1 + call_indirect (type $FUNCSIG$iii) i32.const 0 i32.lt_s if local.get $3 - local.get $5 + local.get $4 i32.store offset=4 local.get $3 - local.get $4 + local.get $2 i32.store end local.get $0 call $~lib/rt/purerc/__retain return end - block $~lib/util/sort/SORT|inlined.0 + local.get $2 + i32.const 256 + i32.lt_s + if local.get $3 - local.set $6 local.get $2 - local.set $4 local.get $1 - local.set $5 - local.get $4 - i32.const 256 - i32.lt_s - if - local.get $6 - local.get $4 - local.get $5 - call $~lib/util/sort/insertionSort - else - local.get $6 - local.get $4 - local.get $5 - call $~lib/util/sort/weakHeapSort - end + call $~lib/util/sort/insertionSort + else + local.get $3 + local.get $2 + local.get $1 + call $~lib/util/sort/weakHeapSort end local.get $0 call $~lib/rt/purerc/__retain ) - (func $~lib/util/sort/COMPARATOR~anonymous|0 (; 143 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/util/sort/COMPARATOR~anonymous|0 (; 105 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $0 local.get $1 i32.sub ) - (func $~lib/array/Array#sort|trampoline (; 144 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - block $1of1 - block $0of1 - block $outOfRange - global.get $~lib/argc - br_table $0of1 $1of1 $outOfRange - end - unreachable - end - block $~lib/util/sort/COMPARATOR|inlined.0 (result i32) - i32.const 46 - br $~lib/util/sort/COMPARATOR|inlined.0 - end - local.set $1 - end - local.get $0 - local.get $1 - call $~lib/array/Array#sort - ) - (func $~lib/util/sort/insertionSort (; 145 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - block $break|0 - i32.const 0 - local.set $3 - loop $repeat|0 - local.get $3 - local.get $1 - i32.lt_s - i32.eqz - br_if $break|0 - local.get $0 - local.get $3 - i32.const 2 - i32.shl - i32.add - i32.load - local.set $4 - local.get $3 - i32.const 1 - i32.sub - local.set $5 - block $break|1 - loop $continue|1 - local.get $5 - i32.const 0 - i32.ge_s - if - local.get $0 - local.get $5 - i32.const 2 - i32.shl - i32.add - i32.load - local.set $6 - block (result i32) - i32.const 2 - global.set $~lib/argc - local.get $4 - local.get $6 - local.get $2 - call_indirect (type $FUNCSIG$iii) - end - i32.const 0 - i32.lt_s - if - local.get $0 - block (result i32) - local.get $5 - local.tee $7 - i32.const 1 - i32.sub - local.set $5 - local.get $7 - end - i32.const 1 - i32.add - i32.const 2 - i32.shl - i32.add - local.get $6 - i32.store - else - br $break|1 - end - br $continue|1 - end - end - end - local.get $0 - local.get $5 - i32.const 1 - i32.add - i32.const 2 - i32.shl - i32.add - local.get $4 - i32.store - local.get $3 - i32.const 1 - i32.add - local.set $3 - br $repeat|0 - unreachable - end - unreachable - end - ) - (func $~lib/util/sort/weakHeapSort (; 146 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) - (local $10 i32) - local.get $1 - i32.const 31 - i32.add - i32.const 5 - i32.shr_s - i32.const 2 - i32.shl - local.set $3 - local.get $3 - i32.const 0 - call $~lib/rt/tlsf/__alloc - local.set $4 - local.get $4 - i32.const 0 - local.get $3 - call $~lib/memory/memory.fill - block $break|0 - local.get $1 - i32.const 1 - i32.sub - local.set $5 - loop $repeat|0 - local.get $5 - i32.const 0 - i32.gt_s - i32.eqz - br_if $break|0 - local.get $5 - local.set $6 - block $break|1 - loop $continue|1 - local.get $6 - i32.const 1 - i32.and - local.get $4 - local.get $6 - i32.const 6 - i32.shr_s - i32.const 2 - i32.shl - i32.add - i32.load - local.get $6 - i32.const 1 - i32.shr_s - i32.const 31 - i32.and - i32.shr_u - i32.const 1 - i32.and - i32.eq - if - local.get $6 - i32.const 1 - i32.shr_s - local.set $6 - br $continue|1 - end - end - end - local.get $6 - i32.const 1 - i32.shr_s - local.set $7 - local.get $0 - local.get $7 - i32.const 2 - i32.shl - i32.add - i32.load - local.set $8 - local.get $0 - local.get $5 - i32.const 2 - i32.shl - i32.add - i32.load - local.set $9 - block (result i32) - i32.const 2 - global.set $~lib/argc - local.get $8 - local.get $9 - local.get $2 - call_indirect (type $FUNCSIG$iii) - end - i32.const 0 - i32.lt_s - if - local.get $4 - local.get $5 - i32.const 5 - i32.shr_s - i32.const 2 - i32.shl - i32.add - local.get $4 - local.get $5 - i32.const 5 - i32.shr_s - i32.const 2 - i32.shl - i32.add - i32.load - i32.const 1 - local.get $5 - i32.const 31 - i32.and - i32.shl - i32.xor - i32.store - local.get $0 - local.get $5 - i32.const 2 - i32.shl - i32.add - local.get $8 - i32.store - local.get $0 - local.get $7 - i32.const 2 - i32.shl - i32.add - local.get $9 - i32.store - end - local.get $5 - i32.const 1 - i32.sub - local.set $5 - br $repeat|0 - unreachable - end - unreachable - end - block $break|2 - local.get $1 - i32.const 1 - i32.sub - local.set $9 - loop $repeat|2 - local.get $9 - i32.const 2 - i32.ge_s - i32.eqz - br_if $break|2 - local.get $0 - i32.load - local.set $8 - local.get $0 - local.get $0 - local.get $9 - i32.const 2 - i32.shl - i32.add - i32.load - i32.store - local.get $0 - local.get $9 - i32.const 2 - i32.shl - i32.add - local.get $8 - i32.store - i32.const 1 - local.set $7 - block $break|3 - loop $continue|3 - local.get $7 - i32.const 1 - i32.shl - local.get $4 - local.get $7 - i32.const 5 - i32.shr_s - i32.const 2 - i32.shl - i32.add - i32.load - local.get $7 - i32.const 31 - i32.and - i32.shr_u - i32.const 1 - i32.and - i32.add - local.tee $6 - local.get $9 - i32.lt_s - if - local.get $6 - local.set $7 - br $continue|3 - end - end - end - block $break|4 - loop $continue|4 - local.get $7 - i32.const 0 - i32.gt_s - if - local.get $0 - i32.load - local.set $8 - local.get $0 - local.get $7 - i32.const 2 - i32.shl - i32.add - i32.load - local.set $5 - block (result i32) - i32.const 2 - global.set $~lib/argc - local.get $8 - local.get $5 - local.get $2 - call_indirect (type $FUNCSIG$iii) - end - i32.const 0 - i32.lt_s - if - local.get $4 - local.get $7 - i32.const 5 - i32.shr_s - i32.const 2 - i32.shl - i32.add - local.get $4 - local.get $7 - i32.const 5 - i32.shr_s - i32.const 2 - i32.shl - i32.add - i32.load - i32.const 1 - local.get $7 - i32.const 31 - i32.and - i32.shl - i32.xor - i32.store - local.get $0 - local.get $7 - i32.const 2 - i32.shl - i32.add - local.get $8 - i32.store - local.get $0 - local.get $5 - i32.store - end - local.get $7 - i32.const 1 - i32.shr_s - local.set $7 - br $continue|4 - end - end - end - local.get $9 - i32.const 1 - i32.sub - local.set $9 - br $repeat|2 - unreachable - end - unreachable - end - local.get $4 - call $~lib/rt/tlsf/__free - local.get $0 - i32.load offset=4 - local.set $10 - local.get $0 - local.get $0 - i32.load - i32.store offset=4 - local.get $0 - local.get $10 - i32.store - ) - (func $~lib/array/Array#sort (; 147 ;) (type $FUNCSIG$iii) (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 $0 - i32.load offset=12 - local.set $2 - local.get $2 - i32.const 1 - i32.le_s - if - local.get $0 - call $~lib/rt/purerc/__retain - return - end - local.get $0 - i32.load offset=4 - local.set $3 - local.get $2 - i32.const 2 - i32.eq - if - local.get $3 - i32.load offset=4 - local.set $4 - local.get $3 - i32.load - local.set $5 - block (result i32) - i32.const 2 - global.set $~lib/argc - local.get $4 - local.get $5 - local.get $1 - call_indirect (type $FUNCSIG$iii) - end - i32.const 0 - i32.lt_s - if - local.get $3 - local.get $5 - i32.store offset=4 - local.get $3 - local.get $4 - i32.store - end - local.get $0 - call $~lib/rt/purerc/__retain - return - end - block $~lib/util/sort/SORT|inlined.0 - local.get $3 - local.set $6 - local.get $2 - local.set $4 - local.get $1 - local.set $5 - local.get $4 - i32.const 256 - i32.lt_s - if - local.get $6 - local.get $4 - local.get $5 - call $~lib/util/sort/insertionSort - else - local.get $6 - local.get $4 - local.get $5 - call $~lib/util/sort/weakHeapSort - end - end - local.get $0 - call $~lib/rt/purerc/__retain - ) - (func $~lib/util/sort/COMPARATOR~anonymous|0 (; 148 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/util/sort/COMPARATOR~anonymous|0 (; 106 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $0 local.get $1 i32.gt_u @@ -7546,27 +5493,7 @@ i32.lt_u i32.sub ) - (func $~lib/array/Array#sort|trampoline (; 149 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - block $1of1 - block $0of1 - block $outOfRange - global.get $~lib/argc - br_table $0of1 $1of1 $outOfRange - end - unreachable - end - block $~lib/util/sort/COMPARATOR|inlined.0 (result i32) - i32.const 47 - br $~lib/util/sort/COMPARATOR|inlined.0 - end - local.set $1 - end - local.get $0 - local.get $1 - call $~lib/array/Array#sort - ) - (func $~lib/array/Array.create (; 150 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - (local $1 i32) + (func $~lib/array/Array.create (; 107 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.const 268435452 i32.gt_u @@ -7584,56 +5511,49 @@ i32.const 0 call $~lib/rt/common/__allocArray call $~lib/rt/purerc/__retain - local.set $1 - local.get $1 + local.tee $0 i32.const 0 i32.store offset=12 - local.get $1 + local.get $0 i32.load offset=4 i32.const 0 - local.get $1 + local.get $0 i32.load offset=8 call $~lib/memory/memory.fill - local.get $1 + local.get $0 ) - (func $std/array/createReverseOrderedArray (; 151 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $std/array/createReverseOrderedArray (; 108 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) local.get $0 call $~lib/array/Array.create - local.set $1 - block $break|0 - i32.const 0 - local.set $2 - loop $repeat|0 - local.get $2 - local.get $0 - i32.lt_s - i32.eqz - br_if $break|0 + local.set $2 + loop $repeat|0 + block $break|0 local.get $1 + local.get $0 + i32.ge_s + br_if $break|0 local.get $2 + local.get $1 local.get $0 i32.const 1 i32.sub - local.get $2 + local.get $1 i32.sub call $~lib/array/Array#__set - local.get $2 + local.get $1 i32.const 1 i32.add - local.set $2 + local.set $1 br $repeat|0 - unreachable end - unreachable end - local.get $1 + local.get $2 ) - (func $~lib/math/NativeMath.random (; 152 ;) (type $FUNCSIG$d) (result f64) + (func $~lib/math/NativeMath.random (; 109 ;) (type $FUNCSIG$d) (result f64) (local $0 i64) (local $1 i64) - (local $2 i64) global.get $~lib/math/random_seeded i32.eqz if @@ -7647,119 +5567,94 @@ global.get $~lib/math/random_state0_64 local.set $0 global.get $~lib/math/random_state1_64 - local.set $1 - local.get $1 + local.tee $1 global.set $~lib/math/random_state0_64 local.get $0 - local.get $0 i64.const 23 i64.shl - i64.xor - local.set $0 local.get $0 + i64.xor + local.tee $0 local.get $0 i64.const 17 i64.shr_u i64.xor - local.set $0 - local.get $0 local.get $1 i64.xor - local.set $0 - local.get $0 local.get $1 i64.const 26 i64.shr_u i64.xor - local.set $0 - local.get $0 + local.tee $0 global.set $~lib/math/random_state1_64 - local.get $1 local.get $0 + local.get $1 i64.add i64.const 4503599627370495 i64.and i64.const 4607182418800017408 i64.or - local.set $2 - local.get $2 f64.reinterpret_i64 f64.const 1 f64.sub ) - (func $std/array/createRandomOrderedArray (; 153 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $std/array/createRandomOrderedArray (; 110 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) local.get $0 call $~lib/array/Array.create - local.set $1 - block $break|0 - i32.const 0 - local.set $2 - loop $repeat|0 - local.get $2 - local.get $0 - i32.lt_s - i32.eqz - br_if $break|0 + local.set $2 + loop $repeat|0 + block $break|0 local.get $1 + local.get $0 + i32.ge_s + br_if $break|0 local.get $2 + local.get $1 call $~lib/math/NativeMath.random local.get $0 f64.convert_i32_s f64.mul i32.trunc_f64_s call $~lib/array/Array#__set - local.get $2 + local.get $1 i32.const 1 i32.add - local.set $2 + local.set $1 br $repeat|0 - unreachable end - unreachable end - local.get $1 + local.get $2 ) - (func $~lib/util/sort/COMPARATOR~anonymous|1 (; 154 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - local.get $0 - local.get $1 - i32.sub - ) - (func $std/array/isSorted (; 155 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $std/array/isSorted (; 111 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) local.get $0 call $~lib/rt/purerc/__retain drop - block $break|0 - block - i32.const 1 - local.set $2 + i32.const 1 + local.set $2 + local.get $0 + i32.load offset=12 + local.set $3 + loop $repeat|0 + local.get $2 + local.get $3 + i32.lt_s + if + i32.const 2 + global.set $~lib/argc local.get $0 - call $~lib/array/Array#get:length - local.set $3 - end - loop $repeat|0 local.get $2 - local.get $3 - i32.lt_s - i32.eqz - br_if $break|0 - block (result i32) - i32.const 2 - global.set $~lib/argc - local.get $0 - local.get $2 - i32.const 1 - i32.sub - call $~lib/array/Array#__get - local.get $0 - local.get $2 - call $~lib/array/Array#__get - local.get $1 - call_indirect (type $FUNCSIG$iii) - end + i32.const 1 + i32.sub + call $~lib/array/Array#__get + local.get $0 + local.get $2 + call $~lib/array/Array#__get + local.get $1 + call_indirect (type $FUNCSIG$iii) i32.const 0 i32.gt_s if @@ -7767,21 +5662,21 @@ call $~lib/rt/purerc/__release i32.const 0 return + else + local.get $2 + i32.const 1 + i32.add + local.set $2 + br $repeat|0 end - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $repeat|0 unreachable end - unreachable end local.get $0 call $~lib/rt/purerc/__release i32.const 1 ) - (func $std/array/assertSorted (; 156 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $std/array/assertSorted (; 112 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) local.get $0 call $~lib/rt/purerc/__retain @@ -7806,83 +5701,49 @@ local.get $0 call $~lib/rt/purerc/__release ) - (func $std/array/assertSortedDefault (; 157 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $std/array/assertSortedDefault (; 113 ;) (type $FUNCSIG$vi) (param $0 i32) local.get $0 call $~lib/rt/purerc/__retain drop local.get $0 - block $~lib/util/sort/COMPARATOR|inlined.1 (result i32) - i32.const 48 - br $~lib/util/sort/COMPARATOR|inlined.1 - end + i32.const 48 call $std/array/assertSorted local.get $0 call $~lib/rt/purerc/__release ) - (func $start:std/array~anonymous|43 (; 158 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - local.get $0 - local.get $1 - i32.sub - ) - (func $start:std/array~anonymous|44 (; 159 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $start:std/array~anonymous|44 (; 114 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $1 local.get $0 i32.sub ) - (func $start:std/array~anonymous|45 (; 160 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - local.get $0 - local.get $1 - i32.sub - ) - (func $start:std/array~anonymous|46 (; 161 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - local.get $1 - local.get $0 - i32.sub - ) - (func $~lib/array/Array.create<~lib/array/Array> (; 162 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - (local $1 i32) - local.get $0 - i32.const 268435452 - i32.gt_u - if - i32.const 24 - i32.const 456 - i32.const 45 - i32.const 61 - call $~lib/builtins/abort - unreachable - end - local.get $0 + (func $~lib/array/Array.create<~lib/array/Array> (; 115 ;) (type $FUNCSIG$i) (result i32) + (local $0 i32) + i32.const 2 i32.const 2 i32.const 24 i32.const 0 call $~lib/rt/common/__allocArray call $~lib/rt/purerc/__retain - local.set $1 - local.get $1 + local.tee $0 i32.const 0 i32.store offset=12 - local.get $1 + local.get $0 i32.load offset=4 i32.const 0 - local.get $1 + local.get $0 i32.load offset=8 call $~lib/memory/memory.fill - local.get $1 - ) - (func $~lib/rt/common/__typeinfo (; 163 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - (local $1 i32) - global.get $~lib/builtins/RTTI_BASE - local.set $1 local.get $0 - i32.eqz + ) + (func $~lib/rt/common/__typeinfo (; 116 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + local.get $0 if (result i32) - i32.const 1 - else local.get $0 - local.get $1 + i32.const 7720 i32.load i32.gt_u + else + i32.const 1 end if i32.const 400 @@ -7892,63 +5753,53 @@ call $~lib/builtins/abort unreachable end - local.get $1 local.get $0 - i32.const 8 - i32.mul + i32.const 3 + i32.shl + i32.const 7720 i32.add i32.load ) - (func $~lib/rt/purerc/growRoots (; 164 ;) (type $FUNCSIG$v) + (func $~lib/rt/purerc/growRoots (; 117 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) (local $3 i32) - (local $4 i32) - (local $5 i32) - global.get $~lib/rt/purerc/ROOTS - local.set $0 global.get $~lib/rt/purerc/CUR - local.get $0 - i32.sub - local.set $1 - local.get $1 - i32.const 2 - i32.mul + global.get $~lib/rt/purerc/ROOTS local.tee $2 - i32.const 64 - i32.const 2 + i32.sub + local.tee $1 + i32.const 1 i32.shl - local.tee $3 - local.get $2 - local.get $3 + local.tee $0 + i32.const 256 + local.get $0 + i32.const 256 i32.gt_u select - local.set $4 - local.get $4 + local.tee $3 i32.const 0 call $~lib/rt/tlsf/__alloc - local.set $5 - local.get $5 - local.get $0 + local.tee $0 + local.get $2 local.get $1 call $~lib/memory/memory.copy - local.get $5 + local.get $0 global.set $~lib/rt/purerc/ROOTS - local.get $5 + local.get $0 local.get $1 i32.add global.set $~lib/rt/purerc/CUR - local.get $5 - local.get $4 + local.get $0 + local.get $3 i32.add global.set $~lib/rt/purerc/END ) - (func $~lib/rt/purerc/appendRoot (; 165 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $~lib/rt/purerc/appendRoot (; 118 ;) (type $FUNCSIG$vi) (param $0 i32) (local $1 i32) global.get $~lib/rt/purerc/CUR - local.set $1 - local.get $1 + local.tee $1 global.get $~lib/rt/purerc/END i32.ge_u if @@ -7964,24 +5815,21 @@ i32.add global.set $~lib/rt/purerc/CUR ) - (func $~lib/rt/purerc/decrement (; 166 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $~lib/rt/purerc/decrement (; 119 ;) (type $FUNCSIG$vi) (param $0 i32) (local $1 i32) (local $2 i32) local.get $0 i32.load offset=4 - local.set $1 - local.get $1 + local.tee $2 i32.const 268435455 i32.and - local.set $2 + local.set $1 local.get $0 call $~lib/rt/purerc/onDecrement local.get $0 i32.load i32.const 1 i32.and - i32.eqz - i32.eqz if i32.const 0 i32.const 320 @@ -7990,7 +5838,7 @@ call $~lib/builtins/abort unreachable end - local.get $2 + local.get $1 i32.const 1 i32.eq if @@ -7999,28 +5847,22 @@ i32.add i32.const 1 call $~lib/builtins/__visit_members - local.get $1 + local.get $2 i32.const -2147483648 i32.and - i32.eqz if + local.get $0 + i32.const -2147483648 + i32.store offset=4 + else global.get $~lib/rt/tlsf/ROOT local.get $0 call $~lib/rt/tlsf/freeBlock - else - local.get $0 - i32.const -2147483648 - i32.const 0 - i32.or - i32.const 0 - i32.or - i32.store offset=4 end else - local.get $2 + local.get $1 i32.const 0 - i32.gt_u - i32.eqz + i32.le_u if i32.const 0 i32.const 320 @@ -8034,18 +5876,25 @@ call $~lib/rt/common/__typeinfo i32.const 8 i32.and - i32.eqz if local.get $0 - i32.const -2147483648 - i32.const 805306368 - i32.or - local.get $2 + local.get $1 i32.const 1 i32.sub + local.get $2 + i32.const -268435456 + i32.and i32.or i32.store offset=4 + else + local.get $0 local.get $1 + i32.const 1 + i32.sub + i32.const -1342177280 + i32.or + i32.store offset=4 + local.get $2 i32.const -2147483648 i32.and i32.eqz @@ -8053,31 +5902,16 @@ local.get $0 call $~lib/rt/purerc/appendRoot end - else - local.get $0 - local.get $1 - i32.const 268435455 - i32.const -1 - i32.xor - i32.and - local.get $2 - i32.const 1 - i32.sub - i32.or - i32.store offset=4 end end ) - (func $~lib/rt/purerc/__retainRelease (; 167 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) + (func $~lib/rt/purerc/__retainRelease (; 120 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $0 local.get $1 i32.ne if - global.get $~lib/builtins/HEAP_BASE - local.set $2 local.get $0 - local.get $2 + i32.const 8040 i32.gt_u if local.get $0 @@ -8086,7 +5920,7 @@ call $~lib/rt/purerc/increment end local.get $1 - local.get $2 + i32.const 8040 i32.gt_u if local.get $1 @@ -8097,8 +5931,7 @@ end local.get $0 ) - (func $~lib/array/Array<~lib/array/Array>#__unchecked_set (; 168 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) + (func $~lib/array/Array<~lib/array/Array>#__unchecked_set (; 121 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) local.get $2 call $~lib/rt/purerc/__retain drop @@ -8108,46 +5941,39 @@ i32.const 2 i32.shl i32.add - local.set $3 - local.get $3 + local.tee $0 local.get $2 - local.get $3 + local.get $0 i32.load call $~lib/rt/purerc/__retainRelease i32.store local.get $2 call $~lib/rt/purerc/__release ) - (func $~lib/array/Array<~lib/array/Array>#__set (; 169 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/array/Array<~lib/array/Array>#__set (; 122 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) local.get $2 call $~lib/rt/purerc/__retain drop + local.get $1 local.get $0 i32.load offset=12 - local.set $3 - local.get $1 - local.get $3 + local.tee $3 i32.gt_u if local.get $2 call $~lib/rt/purerc/__release - block - i32.const 4008 - i32.const 456 - i32.const 112 - i32.const 38 - call $~lib/builtins/abort - unreachable - unreachable - end + i32.const 4008 + i32.const 456 + i32.const 112 + i32.const 38 + call $~lib/builtins/abort unreachable end local.get $0 local.get $1 i32.const 1 i32.add - i32.const 2 call $~lib/array/ensureSize local.get $0 local.get $1 @@ -8166,51 +5992,41 @@ local.get $2 call $~lib/rt/purerc/__release ) - (func $std/array/createReverseOrderedNestedArray (; 170 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $std/array/createReverseOrderedNestedArray (; 123 ;) (type $FUNCSIG$i) (result i32) + (local $0 i32) (local $1 i32) (local $2 i32) - (local $3 i32) - local.get $0 call $~lib/array/Array.create<~lib/array/Array> local.set $1 - block $break|0 - i32.const 0 - local.set $2 - loop $repeat|0 - local.get $2 - local.get $0 - i32.lt_s - i32.eqz - br_if $break|0 + loop $repeat|0 + local.get $0 + i32.const 2 + i32.lt_s + if i32.const 1 call $~lib/array/Array.create - local.set $3 - local.get $3 + local.tee $2 i32.const 0 - local.get $0 i32.const 1 - i32.sub - local.get $2 + local.get $0 i32.sub call $~lib/array/Array#__set local.get $1 + local.get $0 local.get $2 - local.get $3 call $~lib/array/Array<~lib/array/Array>#__set - local.get $3 - call $~lib/rt/purerc/__release local.get $2 + call $~lib/rt/purerc/__release + local.get $0 i32.const 1 i32.add - local.set $2 + local.set $0 br $repeat|0 - unreachable end - unreachable end local.get $1 ) - (func $start:std/array~anonymous|47 (; 171 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $start:std/array~anonymous|47 (; 124 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) local.get $0 call $~lib/rt/purerc/__retain @@ -8220,10 +6036,10 @@ drop local.get $0 i32.const 0 - call $~lib/array/Array#__get + call $~lib/array/Array#__get local.get $1 i32.const 0 - call $~lib/array/Array#__get + call $~lib/array/Array#__get i32.sub local.set $2 local.get $0 @@ -8232,95 +6048,88 @@ call $~lib/rt/purerc/__release local.get $2 ) - (func $~lib/util/sort/insertionSort<~lib/array/Array> (; 172 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/util/sort/insertionSort<~lib/array/Array> (; 125 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) (local $6 i32) (local $7 i32) block $break|0 - i32.const 0 - local.set $3 loop $repeat|0 local.get $3 local.get $1 - i32.lt_s - i32.eqz + i32.ge_s br_if $break|0 - local.get $0 local.get $3 i32.const 2 i32.shl + local.get $0 i32.add i32.load call $~lib/rt/purerc/__retain - local.set $4 + local.set $6 local.get $3 i32.const 1 i32.sub - local.set $5 - block $break|1 - loop $continue|1 - local.get $5 - i32.const 0 - i32.ge_s - if - local.get $0 - local.get $5 + local.set $4 + loop $continue|1 + local.get $4 + i32.const 0 + i32.ge_s + if + block $break|1 + local.get $4 i32.const 2 i32.shl + local.get $0 i32.add i32.load call $~lib/rt/purerc/__retain - local.set $6 - block (result i32) - i32.const 2 - global.set $~lib/argc - local.get $4 - local.get $6 - local.get $2 - call_indirect (type $FUNCSIG$iii) - end + local.set $5 + i32.const 2 + global.set $~lib/argc + local.get $6 + local.get $5 + local.get $2 + call_indirect (type $FUNCSIG$iii) i32.const 0 i32.lt_s if - local.get $0 - block (result i32) - local.get $5 - local.tee $7 - i32.const 1 - i32.sub - local.set $5 - local.get $7 - end + local.get $4 + local.tee $7 + i32.const 1 + i32.sub + local.set $4 + local.get $7 i32.const 1 i32.add i32.const 2 i32.shl + local.get $0 i32.add - local.get $6 + local.get $5 i32.store else - local.get $6 + local.get $5 call $~lib/rt/purerc/__release br $break|1 end - local.get $6 + local.get $5 call $~lib/rt/purerc/__release br $continue|1 end end end - local.get $0 - local.get $5 + local.get $4 i32.const 1 i32.add i32.const 2 i32.shl + local.get $0 i32.add - local.get $4 + local.get $6 i32.store - local.get $4 + local.get $6 call $~lib/rt/purerc/__release local.get $3 i32.const 1 @@ -8332,16 +6141,13 @@ unreachable end ) - (func $~lib/array/Array<~lib/array/Array>#sort (; 173 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array<~lib/array/Array>#sort (; 126 ;) (type $FUNCSIG$iii) (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 $0 i32.load offset=12 - local.set $2 - local.get $2 + local.tee $2 i32.const 1 i32.le_s if @@ -8359,59 +6165,45 @@ local.get $3 i32.load offset=4 call $~lib/rt/purerc/__retain - local.set $4 + local.set $2 local.get $3 i32.load call $~lib/rt/purerc/__retain - local.set $5 - block (result i32) - i32.const 2 - global.set $~lib/argc - local.get $4 - local.get $5 - local.get $1 - call_indirect (type $FUNCSIG$iii) - end + local.set $4 + i32.const 2 + global.set $~lib/argc + local.get $2 + local.get $4 + local.get $1 + call_indirect (type $FUNCSIG$iii) i32.const 0 i32.lt_s if local.get $3 - local.get $5 + local.get $4 i32.store offset=4 local.get $3 - local.get $4 + local.get $2 i32.store end local.get $0 call $~lib/rt/purerc/__retain - local.set $6 + local.set $0 + local.get $2 + call $~lib/rt/purerc/__release local.get $4 call $~lib/rt/purerc/__release - local.get $5 - call $~lib/rt/purerc/__release - local.get $6 + local.get $0 return end - block $~lib/util/sort/SORT<~lib/array/Array>|inlined.0 - local.get $3 - local.set $6 - local.get $2 - local.set $4 - local.get $1 - local.set $5 - local.get $6 - local.get $4 - local.get $5 - call $~lib/util/sort/insertionSort<~lib/array/Array> - end + local.get $3 + local.get $2 + local.get $1 + call $~lib/util/sort/insertionSort<~lib/array/Array> local.get $0 call $~lib/rt/purerc/__retain ) - (func $~lib/array/Array<~lib/array/Array>#get:length (; 174 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - local.get $0 - i32.load offset=12 - ) - (func $~lib/array/Array<~lib/array/Array>#__unchecked_get (; 175 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array<~lib/array/Array>#__unchecked_get (; 127 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $0 i32.load offset=4 local.get $1 @@ -8421,7 +6213,7 @@ i32.load call $~lib/rt/purerc/__retain ) - (func $~lib/array/Array<~lib/array/Array>#__get (; 176 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array<~lib/array/Array>#__get (; 128 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $1 local.get $0 i32.load offset=12 @@ -8452,7 +6244,7 @@ local.get $1 call $~lib/array/Array<~lib/array/Array>#__unchecked_get ) - (func $std/array/isSorted<~lib/array/Array> (; 177 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $std/array/isSorted<~lib/array/Array> (; 129 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -8460,66 +6252,60 @@ local.get $0 call $~lib/rt/purerc/__retain drop - block $break|0 - block - i32.const 1 - local.set $2 + i32.const 1 + local.set $2 + local.get $0 + i32.load offset=12 + local.set $5 + loop $repeat|0 + local.get $2 + local.get $5 + i32.lt_s + if + i32.const 2 + global.set $~lib/argc local.get $0 - call $~lib/array/Array<~lib/array/Array>#get:length - local.set $3 - end - loop $repeat|0 local.get $2 - local.get $3 - i32.lt_s - i32.eqz - br_if $break|0 - block (result i32) - i32.const 2 - global.set $~lib/argc - local.get $0 - local.get $2 - i32.const 1 - i32.sub - call $~lib/array/Array<~lib/array/Array>#__get - local.tee $4 - local.get $0 - local.get $2 - call $~lib/array/Array<~lib/array/Array>#__get - local.tee $5 - local.get $1 - call_indirect (type $FUNCSIG$iii) - end + i32.const 1 + i32.sub + call $~lib/array/Array<~lib/array/Array>#__get + local.tee $3 + local.get $0 + local.get $2 + call $~lib/array/Array<~lib/array/Array>#__get + local.tee $4 + local.get $1 + call_indirect (type $FUNCSIG$iii) i32.const 0 i32.gt_s if local.get $0 call $~lib/rt/purerc/__release - local.get $4 + local.get $3 call $~lib/rt/purerc/__release - local.get $5 + local.get $4 call $~lib/rt/purerc/__release i32.const 0 return + else + local.get $3 + call $~lib/rt/purerc/__release + local.get $4 + call $~lib/rt/purerc/__release + local.get $2 + i32.const 1 + i32.add + local.set $2 + br $repeat|0 end - local.get $4 - call $~lib/rt/purerc/__release - local.get $5 - call $~lib/rt/purerc/__release - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $repeat|0 unreachable end - unreachable end local.get $0 call $~lib/rt/purerc/__release i32.const 1 ) - (func $std/array/assertSorted<~lib/array/Array> (; 178 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $std/array/assertSorted<~lib/array/Array> (; 130 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) local.get $0 call $~lib/rt/purerc/__retain @@ -8544,162 +6330,61 @@ local.get $0 call $~lib/rt/purerc/__release ) - (func $~lib/array/Array.create> (; 179 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - (local $1 i32) - local.get $0 - i32.const 268435452 - i32.gt_u - if - i32.const 24 - i32.const 456 - i32.const 45 - i32.const 61 - call $~lib/builtins/abort - unreachable - end - local.get $0 + (func $~lib/array/Array.create> (; 131 ;) (type $FUNCSIG$i) (result i32) + (local $0 i32) + i32.const 512 i32.const 2 i32.const 26 i32.const 0 call $~lib/rt/common/__allocArray call $~lib/rt/purerc/__retain - local.set $1 - local.get $1 + local.tee $0 i32.const 0 i32.store offset=12 - local.get $1 + local.get $0 i32.load offset=4 i32.const 0 - local.get $1 + local.get $0 i32.load offset=8 call $~lib/memory/memory.fill - local.get $1 - ) - (func $std/array/Proxy#constructor (; 180 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - local.get $0 - i32.eqz - if - i32.const 4 - i32.const 25 - call $~lib/rt/tlsf/__alloc - call $~lib/rt/purerc/__retain - local.set $0 - end - local.get $0 - local.get $1 - i32.store local.get $0 ) - (func $~lib/array/Array>#__unchecked_set (; 181 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - local.get $2 - call $~lib/rt/purerc/__retain - drop - local.get $0 - i32.load offset=4 - local.get $1 - i32.const 2 - i32.shl - i32.add - local.set $3 - local.get $3 - local.get $2 - local.get $3 - i32.load - call $~lib/rt/purerc/__retainRelease - i32.store - local.get $2 - call $~lib/rt/purerc/__release - ) - (func $~lib/array/Array>#__set (; 182 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - local.get $2 - call $~lib/rt/purerc/__retain - drop - local.get $0 - i32.load offset=12 - local.set $3 - local.get $1 - local.get $3 - i32.gt_u - if - local.get $2 - call $~lib/rt/purerc/__release - block - i32.const 4008 - i32.const 456 - i32.const 112 - i32.const 38 - call $~lib/builtins/abort - unreachable - unreachable - end - unreachable - end - local.get $0 - local.get $1 - i32.const 1 - i32.add - i32.const 2 - call $~lib/array/ensureSize - local.get $0 - local.get $1 - local.get $2 - call $~lib/array/Array>#__unchecked_set - local.get $1 - local.get $3 - i32.ge_s - if - local.get $0 - local.get $1 - i32.const 1 - i32.add - i32.store offset=12 - end - local.get $2 - call $~lib/rt/purerc/__release - ) - (func $std/array/createReverseOrderedElementsArray (; 183 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $std/array/createReverseOrderedElementsArray (; 132 ;) (type $FUNCSIG$i) (result i32) + (local $0 i32) (local $1 i32) (local $2 i32) - (local $3 i32) - local.get $0 call $~lib/array/Array.create> local.set $1 - block $break|0 - i32.const 0 - local.set $2 - loop $repeat|0 - local.get $2 + loop $repeat|0 + local.get $0 + i32.const 512 + i32.lt_s + if + i32.const 4 + i32.const 25 + call $~lib/rt/tlsf/__alloc + call $~lib/rt/purerc/__retain + local.tee $2 + i32.const 511 local.get $0 - i32.lt_s - i32.eqz - br_if $break|0 + i32.sub + i32.store local.get $1 - local.get $2 - i32.const 0 local.get $0 - i32.const 1 - i32.sub local.get $2 - i32.sub - call $std/array/Proxy#constructor - local.tee $3 - call $~lib/array/Array>#__set - local.get $3 + call $~lib/array/Array<~lib/array/Array>#__set + local.get $2 call $~lib/rt/purerc/__release - local.get $2 + local.get $0 i32.const 1 i32.add - local.set $2 + local.set $0 br $repeat|0 - unreachable end - unreachable end local.get $1 ) - (func $start:std/array~anonymous|48 (; 184 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $start:std/array~anonymous|48 (; 133 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) local.get $0 call $~lib/rt/purerc/__retain @@ -8719,208 +6404,7 @@ call $~lib/rt/purerc/__release local.get $2 ) - (func $~lib/util/sort/insertionSort> (; 185 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - block $break|0 - i32.const 0 - local.set $3 - loop $repeat|0 - local.get $3 - local.get $1 - i32.lt_s - i32.eqz - br_if $break|0 - local.get $0 - local.get $3 - i32.const 2 - i32.shl - i32.add - i32.load - call $~lib/rt/purerc/__retain - local.set $4 - local.get $3 - i32.const 1 - i32.sub - local.set $5 - block $break|1 - loop $continue|1 - local.get $5 - i32.const 0 - i32.ge_s - if - local.get $0 - local.get $5 - i32.const 2 - i32.shl - i32.add - i32.load - call $~lib/rt/purerc/__retain - local.set $6 - block (result i32) - i32.const 2 - global.set $~lib/argc - local.get $4 - local.get $6 - local.get $2 - call_indirect (type $FUNCSIG$iii) - end - i32.const 0 - i32.lt_s - if - local.get $0 - block (result i32) - local.get $5 - local.tee $7 - i32.const 1 - i32.sub - local.set $5 - local.get $7 - end - i32.const 1 - i32.add - i32.const 2 - i32.shl - i32.add - local.get $6 - i32.store - else - local.get $6 - call $~lib/rt/purerc/__release - br $break|1 - end - local.get $6 - call $~lib/rt/purerc/__release - br $continue|1 - end - end - end - local.get $0 - local.get $5 - i32.const 1 - i32.add - i32.const 2 - i32.shl - i32.add - local.get $4 - i32.store - local.get $4 - call $~lib/rt/purerc/__release - local.get $3 - i32.const 1 - i32.add - local.set $3 - br $repeat|0 - unreachable - end - unreachable - end - ) - (func $~lib/array/Array>#sort (; 186 ;) (type $FUNCSIG$iii) (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 $0 - i32.load offset=12 - local.set $2 - local.get $2 - i32.const 1 - i32.le_s - if - local.get $0 - call $~lib/rt/purerc/__retain - return - end - local.get $0 - i32.load offset=4 - local.set $3 - local.get $2 - i32.const 2 - i32.eq - if - local.get $3 - i32.load offset=4 - call $~lib/rt/purerc/__retain - local.set $4 - local.get $3 - i32.load - call $~lib/rt/purerc/__retain - local.set $5 - block (result i32) - i32.const 2 - global.set $~lib/argc - local.get $4 - local.get $5 - local.get $1 - call_indirect (type $FUNCSIG$iii) - end - i32.const 0 - i32.lt_s - if - local.get $3 - local.get $5 - i32.store offset=4 - local.get $3 - local.get $4 - i32.store - end - local.get $0 - call $~lib/rt/purerc/__retain - local.set $6 - local.get $4 - call $~lib/rt/purerc/__release - local.get $5 - call $~lib/rt/purerc/__release - local.get $6 - return - end - block $~lib/util/sort/SORT>|inlined.0 - local.get $3 - local.set $6 - local.get $2 - local.set $4 - local.get $1 - local.set $5 - local.get $6 - local.get $4 - local.get $5 - call $~lib/util/sort/insertionSort> - end - local.get $0 - call $~lib/rt/purerc/__retain - ) - (func $~lib/array/Array>#get:length (; 187 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - local.get $0 - i32.load offset=12 - ) - (func $~lib/array/Array>#__unchecked_get (; 188 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - local.get $0 - i32.load offset=4 - local.get $1 - i32.const 2 - i32.shl - i32.add - i32.load - call $~lib/rt/purerc/__retain - ) - (func $~lib/array/Array>#__get (; 189 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - local.get $1 - local.get $0 - i32.load offset=12 - i32.ge_u - if - i32.const 4008 - i32.const 456 - i32.const 97 - i32.const 45 - call $~lib/builtins/abort - unreachable - end + (func $~lib/array/Array<~lib/string/String | null>#__get (; 134 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $1 local.get $0 i32.load offset=8 @@ -8937,9 +6421,9 @@ end local.get $0 local.get $1 - call $~lib/array/Array>#__unchecked_get + call $~lib/array/Array<~lib/array/Array>#__unchecked_get ) - (func $std/array/isSorted> (; 190 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $std/array/isSorted<~lib/string/String | null> (; 135 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -8947,373 +6431,67 @@ local.get $0 call $~lib/rt/purerc/__retain drop - block $break|0 - block - i32.const 1 - local.set $2 - local.get $0 - call $~lib/array/Array>#get:length - local.set $3 - end - loop $repeat|0 - local.get $2 - local.get $3 - i32.lt_s - i32.eqz - br_if $break|0 - block (result i32) - i32.const 2 - global.set $~lib/argc - local.get $0 - local.get $2 - i32.const 1 - i32.sub - call $~lib/array/Array>#__get - local.tee $4 - local.get $0 - local.get $2 - call $~lib/array/Array>#__get - local.tee $5 - local.get $1 - call_indirect (type $FUNCSIG$iii) - end - i32.const 0 - i32.gt_s - if - local.get $0 - call $~lib/rt/purerc/__release - local.get $4 - call $~lib/rt/purerc/__release - local.get $5 - call $~lib/rt/purerc/__release - i32.const 0 - return - end - local.get $4 - call $~lib/rt/purerc/__release - local.get $5 - call $~lib/rt/purerc/__release - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $repeat|0 - unreachable - end - unreachable - end - local.get $0 - call $~lib/rt/purerc/__release i32.const 1 - ) - (func $std/array/assertSorted> (; 191 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) - (local $2 i32) - local.get $0 - call $~lib/rt/purerc/__retain - drop - local.get $0 - local.get $1 - call $~lib/array/Array>#sort - local.tee $2 - local.get $1 - call $std/array/isSorted> - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 832 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $2 - call $~lib/rt/purerc/__release - local.get $0 - call $~lib/rt/purerc/__release - ) - (func $~lib/util/sort/insertionSort<~lib/string/String | null> (; 192 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - block $break|0 - i32.const 0 - local.set $3 - loop $repeat|0 - local.get $3 - local.get $1 - i32.lt_s - i32.eqz - br_if $break|0 - local.get $0 - local.get $3 - i32.const 2 - i32.shl - i32.add - i32.load - call $~lib/rt/purerc/__retain - local.set $4 - local.get $3 - i32.const 1 - i32.sub - local.set $5 - block $break|1 - loop $continue|1 - local.get $5 - i32.const 0 - i32.ge_s - if - local.get $0 - local.get $5 - i32.const 2 - i32.shl - i32.add - i32.load - call $~lib/rt/purerc/__retain - local.set $6 - block (result i32) - i32.const 2 - global.set $~lib/argc - local.get $4 - local.get $6 - local.get $2 - call_indirect (type $FUNCSIG$iii) - end - i32.const 0 - i32.lt_s - if - local.get $0 - block (result i32) - local.get $5 - local.tee $7 - i32.const 1 - i32.sub - local.set $5 - local.get $7 - end - i32.const 1 - i32.add - i32.const 2 - i32.shl - i32.add - local.get $6 - i32.store - else - local.get $6 - call $~lib/rt/purerc/__release - br $break|1 - end - local.get $6 - call $~lib/rt/purerc/__release - br $continue|1 - end - end - end - local.get $0 - local.get $5 - i32.const 1 - i32.add - i32.const 2 - i32.shl - i32.add - local.get $4 - i32.store - local.get $4 - call $~lib/rt/purerc/__release - local.get $3 - i32.const 1 - i32.add - local.set $3 - br $repeat|0 - unreachable - end - unreachable - end - ) - (func $~lib/array/Array<~lib/string/String | null>#sort (; 193 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) + local.set $2 local.get $0 i32.load offset=12 - local.set $2 - local.get $2 - i32.const 1 - i32.le_s - if - local.get $0 - call $~lib/rt/purerc/__retain - return - end - local.get $0 - i32.load offset=4 - local.set $3 - local.get $2 - i32.const 2 - i32.eq - if - local.get $3 - i32.load offset=4 - call $~lib/rt/purerc/__retain - local.set $4 - local.get $3 - i32.load - call $~lib/rt/purerc/__retain - local.set $5 - block (result i32) - i32.const 2 - global.set $~lib/argc - local.get $4 - local.get $5 - local.get $1 - call_indirect (type $FUNCSIG$iii) - end - i32.const 0 + local.set $5 + loop $repeat|0 + local.get $2 + local.get $5 i32.lt_s if - local.get $3 - local.get $5 - i32.store offset=4 - local.get $3 - local.get $4 - i32.store - end - local.get $0 - call $~lib/rt/purerc/__retain - local.set $6 - local.get $4 - call $~lib/rt/purerc/__release - local.get $5 - call $~lib/rt/purerc/__release - local.get $6 - return - end - block $~lib/util/sort/SORT<~lib/string/String | null>|inlined.0 - local.get $3 - local.set $6 - local.get $2 - local.set $4 - local.get $1 - local.set $5 - local.get $6 - local.get $4 - local.get $5 - call $~lib/util/sort/insertionSort<~lib/string/String | null> - end - local.get $0 - call $~lib/rt/purerc/__retain - ) - (func $~lib/array/Array<~lib/string/String | null>#get:length (; 194 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - local.get $0 - i32.load offset=12 - ) - (func $~lib/array/Array<~lib/string/String | null>#__unchecked_get (; 195 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - local.get $0 - i32.load offset=4 - local.get $1 - i32.const 2 - i32.shl - i32.add - i32.load - call $~lib/rt/purerc/__retain - ) - (func $~lib/array/Array<~lib/string/String | null>#__get (; 196 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - local.get $1 - local.get $0 - i32.load offset=8 - i32.const 2 - i32.shr_u - i32.ge_u - if - i32.const 400 - i32.const 456 - i32.const 100 - i32.const 61 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - call $~lib/array/Array<~lib/string/String | null>#__unchecked_get - ) - (func $std/array/isSorted<~lib/string/String | null> (; 197 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $0 - call $~lib/rt/purerc/__retain - drop - block $break|0 - block - i32.const 1 - local.set $2 + i32.const 2 + global.set $~lib/argc local.get $0 - call $~lib/array/Array<~lib/string/String | null>#get:length - local.set $3 - end - loop $repeat|0 local.get $2 - local.get $3 - i32.lt_s - i32.eqz - br_if $break|0 - block (result i32) - i32.const 2 - global.set $~lib/argc - local.get $0 - local.get $2 - i32.const 1 - i32.sub - call $~lib/array/Array<~lib/string/String | null>#__get - local.tee $4 - local.get $0 - local.get $2 - call $~lib/array/Array<~lib/string/String | null>#__get - local.tee $5 - local.get $1 - call_indirect (type $FUNCSIG$iii) - end + i32.const 1 + i32.sub + call $~lib/array/Array<~lib/string/String | null>#__get + local.tee $3 + local.get $0 + local.get $2 + call $~lib/array/Array<~lib/string/String | null>#__get + local.tee $4 + local.get $1 + call_indirect (type $FUNCSIG$iii) i32.const 0 i32.gt_s if local.get $0 call $~lib/rt/purerc/__release - local.get $4 + local.get $3 call $~lib/rt/purerc/__release - local.get $5 + local.get $4 call $~lib/rt/purerc/__release i32.const 0 return + else + local.get $3 + call $~lib/rt/purerc/__release + local.get $4 + call $~lib/rt/purerc/__release + local.get $2 + i32.const 1 + i32.add + local.set $2 + br $repeat|0 end - local.get $4 - call $~lib/rt/purerc/__release - local.get $5 - call $~lib/rt/purerc/__release - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $repeat|0 unreachable end - unreachable end local.get $0 call $~lib/rt/purerc/__release i32.const 1 ) - (func $std/array/assertSorted<~lib/string/String | null> (; 198 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $std/array/assertSorted<~lib/string/String | null> (; 136 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) local.get $0 call $~lib/rt/purerc/__retain drop local.get $0 local.get $1 - call $~lib/array/Array<~lib/string/String | null>#sort + call $~lib/array/Array<~lib/array/Array>#sort local.tee $2 local.get $1 call $std/array/isSorted<~lib/string/String | null> @@ -9331,76 +6509,218 @@ local.get $0 call $~lib/rt/purerc/__release ) - (func $~lib/string/String#get:length (; 199 ;) (type $FUNCSIG$ii) (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 (; 200 ;) (type $FUNCSIG$iiiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (result i32) + (func $~lib/util/string/compareImpl (; 137 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + (local $4 i32) (local $5 i32) - (local $6 i32) - (local $7 i32) local.get $0 call $~lib/rt/purerc/__retain drop - local.get $2 - call $~lib/rt/purerc/__retain - drop - i32.const 0 - local.set $5 - local.get $0 local.get $1 - i32.const 1 - i32.shl - i32.add - local.set $6 - local.get $2 - local.get $3 - i32.const 1 - i32.shl - i32.add - local.set $7 - block $break|0 - loop $continue|0 + call $~lib/rt/purerc/__retain + drop + local.get $0 + local.set $3 + local.get $1 + local.set $4 + loop $continue|0 + local.get $2 + if (result i32) + local.get $3 + i32.load16_u local.get $4 - if (result i32) - local.get $6 - i32.load16_u - local.get $7 - i32.load16_u - i32.sub - local.tee $5 - i32.eqz - else - i32.const 0 - end - if - local.get $4 - i32.const 1 - i32.sub - local.set $4 - local.get $6 - i32.const 2 - i32.add - local.set $6 - local.get $7 - i32.const 2 - i32.add - local.set $7 - br $continue|0 - end + i32.load16_u + i32.sub + local.tee $5 + i32.eqz + else + i32.const 0 + end + if + local.get $2 + i32.const 1 + i32.sub + local.set $2 + local.get $3 + i32.const 2 + i32.add + local.set $3 + local.get $4 + i32.const 2 + i32.add + local.set $4 + br $continue|0 end end local.get $0 call $~lib/rt/purerc/__release - local.get $2 + local.get $1 call $~lib/rt/purerc/__release local.get $5 ) - (func $~lib/util/sort/COMPARATOR<~lib/string/String | null>~anonymous|0 (; 201 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/util/sort/COMPARATOR<~lib/string/String | null>~anonymous|0 (; 138 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + local.get $0 + call $~lib/rt/purerc/__retain + drop + local.get $1 + call $~lib/rt/purerc/__retain + drop + block $folding-inner0 + i32.const 1 + local.get $1 + i32.eqz + i32.const 1 + local.get $0 + i32.eqz + local.get $0 + local.get $1 + i32.eq + select + select + br_if $folding-inner0 + i32.const 0 + local.get $1 + i32.const 16 + i32.sub + i32.load offset=12 + i32.const 1 + i32.shr_u + local.tee $2 + i32.eqz + local.get $0 + i32.const 16 + i32.sub + i32.load offset=12 + i32.const 1 + i32.shr_u + local.tee $3 + select + br_if $folding-inner0 + local.get $3 + i32.eqz + if + local.get $0 + call $~lib/rt/purerc/__release + local.get $1 + call $~lib/rt/purerc/__release + i32.const -1 + return + end + local.get $2 + i32.eqz + if + local.get $0 + call $~lib/rt/purerc/__release + local.get $1 + call $~lib/rt/purerc/__release + i32.const 1 + return + end + local.get $0 + local.get $1 + local.get $3 + local.get $2 + local.get $3 + local.get $2 + i32.lt_s + select + call $~lib/util/string/compareImpl + local.set $2 + local.get $0 + call $~lib/rt/purerc/__release + local.get $1 + call $~lib/rt/purerc/__release + local.get $2 + return + end + local.get $0 + call $~lib/rt/purerc/__release + local.get $1 + call $~lib/rt/purerc/__release + i32.const 0 + ) + (func $~lib/string/String.__eq (; 139 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + local.get $0 + call $~lib/rt/purerc/__retain + drop + local.get $1 + call $~lib/rt/purerc/__retain + drop + local.get $0 + local.get $1 + i32.eq + if + local.get $0 + call $~lib/rt/purerc/__release + local.get $1 + call $~lib/rt/purerc/__release + i32.const 1 + return + end + block $folding-inner0 + local.get $1 + i32.eqz + i32.const 1 + local.get $0 + select + br_if $folding-inner0 + local.get $0 + i32.const 16 + i32.sub + i32.load offset=12 + i32.const 1 + i32.shr_u + local.tee $2 + local.get $1 + i32.const 16 + i32.sub + i32.load offset=12 + i32.const 1 + i32.shr_u + i32.ne + br_if $folding-inner0 + local.get $0 + local.get $1 + local.get $2 + call $~lib/util/string/compareImpl + i32.eqz + local.set $2 + local.get $0 + call $~lib/rt/purerc/__release + local.get $1 + call $~lib/rt/purerc/__release + local.get $2 + return + end + local.get $0 + call $~lib/rt/purerc/__release + local.get $1 + call $~lib/rt/purerc/__release + i32.const 0 + ) + (func $~lib/string/String.__ne (; 140 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + local.get $0 + call $~lib/rt/purerc/__retain + drop + local.get $1 + call $~lib/rt/purerc/__retain + drop + local.get $0 + local.get $1 + call $~lib/string/String.__eq + i32.eqz + local.set $2 + local.get $0 + call $~lib/rt/purerc/__release + local.get $1 + call $~lib/rt/purerc/__release + local.get $2 + ) + (func $std/array/isArraysEqual<~lib/string/String | null> (; 141 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -9412,154 +6732,10 @@ call $~lib/rt/purerc/__retain drop local.get $0 - local.get $1 - i32.eq - if (result i32) - i32.const 1 - else - local.get $0 - i32.const 0 - i32.eq - end - if (result i32) - i32.const 1 - else - local.get $1 - i32.const 0 - i32.eq - end - if - local.get $0 - call $~lib/rt/purerc/__release - local.get $1 - call $~lib/rt/purerc/__release - i32.const 0 - return - end - local.get $0 - call $~lib/string/String#get:length - local.set $2 - local.get $1 - call $~lib/string/String#get:length - local.set $3 - local.get $2 - i32.eqz - if (result i32) - local.get $3 - i32.eqz - else - i32.const 0 - end - if - local.get $0 - call $~lib/rt/purerc/__release - local.get $1 - call $~lib/rt/purerc/__release - i32.const 0 - return - end - local.get $2 - i32.eqz - if - local.get $0 - call $~lib/rt/purerc/__release - local.get $1 - call $~lib/rt/purerc/__release - i32.const -1 - return - end - local.get $3 - i32.eqz - if - local.get $0 - call $~lib/rt/purerc/__release - local.get $1 - call $~lib/rt/purerc/__release - i32.const 1 - return - end - local.get $0 - call $~lib/rt/purerc/__release - local.get $1 - call $~lib/rt/purerc/__release - local.get $0 - i32.const 0 - local.get $1 - i32.const 0 - local.get $2 - local.tee $4 - local.get $3 + i32.load offset=12 local.tee $5 - local.get $4 - local.get $5 - i32.lt_s - select - call $~lib/util/string/compareImpl - ) - (func $std/array/assertSorted<~lib/string/String | null>|trampoline (; 202 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) - block $1of1 - block $0of1 - block $outOfRange - global.get $~lib/argc - i32.const 1 - i32.sub - br_table $0of1 $1of1 $outOfRange - end - unreachable - end - block $~lib/util/sort/COMPARATOR<~lib/string/String | null>|inlined.0 (result i32) - i32.const 55 - br $~lib/util/sort/COMPARATOR<~lib/string/String | null>|inlined.0 - end - local.set $1 - end - local.get $0 local.get $1 - call $std/array/assertSorted<~lib/string/String | null> - ) - (func $~lib/string/String.__eq (; 203 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - local.get $0 - call $~lib/rt/purerc/__retain - drop - local.get $1 - call $~lib/rt/purerc/__retain - drop - local.get $0 - local.get $1 - i32.eq - if - local.get $0 - call $~lib/rt/purerc/__release - local.get $1 - call $~lib/rt/purerc/__release - i32.const 1 - return - end - local.get $0 - i32.const 0 - i32.eq - if (result i32) - i32.const 1 - else - local.get $1 - i32.const 0 - i32.eq - end - if - local.get $0 - call $~lib/rt/purerc/__release - local.get $1 - call $~lib/rt/purerc/__release - i32.const 0 - return - end - local.get $0 - call $~lib/string/String#get:length - local.set $2 - local.get $2 - local.get $1 - call $~lib/string/String#get:length + i32.load offset=12 i32.ne if local.get $0 @@ -9570,115 +6746,54 @@ return end local.get $0 - call $~lib/rt/purerc/__release local.get $1 - call $~lib/rt/purerc/__release - local.get $0 - i32.const 0 - local.get $1 - i32.const 0 - local.get $2 - call $~lib/util/string/compareImpl - i32.eqz - ) - (func $~lib/string/String.__ne (; 204 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - local.get $0 - call $~lib/rt/purerc/__retain - drop - local.get $1 - call $~lib/rt/purerc/__retain - drop - local.get $0 - call $~lib/rt/purerc/__release - local.get $1 - call $~lib/rt/purerc/__release - local.get $0 - local.get $1 - call $~lib/string/String.__eq - i32.eqz - ) - (func $std/array/isArraysEqual<~lib/string/String | null> (; 205 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $0 - call $~lib/rt/purerc/__retain - drop - local.get $1 - call $~lib/rt/purerc/__retain - drop - local.get $2 - i32.eqz + i32.eq if local.get $0 - call $~lib/array/Array<~lib/string/String | null>#get:length - local.set $2 - local.get $2 + call $~lib/rt/purerc/__release local.get $1 - call $~lib/array/Array<~lib/string/String | null>#get:length - i32.ne - if - local.get $0 - call $~lib/rt/purerc/__release - local.get $1 - call $~lib/rt/purerc/__release - i32.const 0 - return - end - local.get $0 - local.get $1 - i32.eq - if - local.get $0 - call $~lib/rt/purerc/__release - local.get $1 - call $~lib/rt/purerc/__release - i32.const 1 - return - end + call $~lib/rt/purerc/__release + i32.const 1 + return end - block $break|0 - i32.const 0 - local.set $3 - loop $repeat|0 - local.get $3 - local.get $2 - i32.lt_s - i32.eqz - br_if $break|0 + loop $repeat|0 + local.get $2 + local.get $5 + i32.lt_s + if local.get $0 - local.get $3 + local.get $2 + call $~lib/array/Array<~lib/string/String | null>#__get + local.tee $3 + local.get $1 + local.get $2 call $~lib/array/Array<~lib/string/String | null>#__get local.tee $4 - local.get $1 - local.get $3 - call $~lib/array/Array<~lib/string/String | null>#__get - local.tee $5 call $~lib/string/String.__ne if local.get $0 call $~lib/rt/purerc/__release local.get $1 call $~lib/rt/purerc/__release - local.get $4 + local.get $3 call $~lib/rt/purerc/__release - local.get $5 + local.get $4 call $~lib/rt/purerc/__release i32.const 0 return + else + local.get $3 + call $~lib/rt/purerc/__release + local.get $4 + call $~lib/rt/purerc/__release + local.get $2 + i32.const 1 + i32.add + local.set $2 + br $repeat|0 end - local.get $4 - call $~lib/rt/purerc/__release - local.get $5 - call $~lib/rt/purerc/__release - local.get $3 - i32.const 1 - i32.add - local.set $3 - br $repeat|0 unreachable end - unreachable end local.get $0 call $~lib/rt/purerc/__release @@ -9686,54 +6801,32 @@ call $~lib/rt/purerc/__release i32.const 1 ) - (func $~lib/array/Array.create<~lib/string/String> (; 206 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - (local $1 i32) - local.get $0 - i32.const 268435452 - i32.gt_u - if - i32.const 24 - i32.const 456 - i32.const 45 - i32.const 61 - call $~lib/builtins/abort - unreachable - end - local.get $0 + (func $~lib/array/Array.create<~lib/string/String> (; 142 ;) (type $FUNCSIG$i) (result i32) + (local $0 i32) + i32.const 400 i32.const 2 i32.const 28 i32.const 0 call $~lib/rt/common/__allocArray call $~lib/rt/purerc/__retain - local.set $1 - local.get $1 + local.tee $0 i32.const 0 i32.store offset=12 - local.get $1 + local.get $0 i32.load offset=4 i32.const 0 - local.get $1 + local.get $0 i32.load offset=8 call $~lib/memory/memory.fill - local.get $1 + local.get $0 ) - (func $~lib/string/String#charAt (; 207 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) + (func $~lib/string/String#charAt (; 143 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) local.get $0 - i32.const 0 - i32.ne - i32.eqz - if - i32.const 0 - i32.const 4384 - i32.const 40 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $1 - local.get $0 - call $~lib/string/String#get:length + i32.const 3164 + i32.load + i32.const 1 + i32.shr_u i32.ge_u if i32.const 4272 @@ -9743,84 +6836,83 @@ i32.const 2 i32.const 16 call $~lib/rt/tlsf/__alloc - local.set $2 - local.get $2 + local.tee $1 local.get $0 - local.get $1 i32.const 1 i32.shl + i32.const 3168 i32.add i32.load16_u i32.store16 - local.get $2 + local.get $1 call $~lib/rt/purerc/__retain ) - (func $~lib/string/String#concat (; 208 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/string/String#concat (; 144 ;) (type $FUNCSIG$iii) (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 call $~lib/rt/purerc/__retain drop - local.get $1 - i32.const 0 - i32.eq - if - i32.const 4432 + block (result i32) local.get $1 - call $~lib/rt/purerc/__retainRelease - local.set $1 + i32.eqz + if + i32.const 4432 + local.get $1 + call $~lib/rt/purerc/__retainRelease + local.set $1 + end + local.get $1 + i32.const 16 + i32.sub + i32.load offset=12 + i32.const 1 + i32.shr_u + i32.const 1 + i32.shl + local.tee $4 + local.get $0 + i32.const 16 + i32.sub + i32.load offset=12 + i32.const 1 + i32.shr_u + i32.const 1 + i32.shl + local.tee $3 + i32.add + local.tee $2 + i32.eqz end - local.get $0 - call $~lib/string/String#get:length - i32.const 1 - i32.shl - local.set $2 - local.get $1 - call $~lib/string/String#get:length - i32.const 1 - i32.shl - local.set $3 - local.get $2 - local.get $3 - i32.add - local.set $4 - local.get $4 - i32.const 0 - i32.eq if i32.const 4272 call $~lib/rt/purerc/__retain - local.set $5 + local.set $0 local.get $1 call $~lib/rt/purerc/__release - local.get $5 + local.get $0 return end - local.get $4 + local.get $2 i32.const 16 call $~lib/rt/tlsf/__alloc call $~lib/rt/purerc/__retain - local.set $6 - local.get $6 + local.tee $2 local.get $0 - local.get $2 - call $~lib/memory/memory.copy - local.get $6 - local.get $2 - i32.add - local.get $1 local.get $3 call $~lib/memory/memory.copy - local.get $6 - local.set $5 + local.get $2 + local.get $3 + i32.add + local.get $1 + local.get $4 + call $~lib/memory/memory.copy local.get $1 call $~lib/rt/purerc/__release - local.get $5 + local.get $2 ) - (func $~lib/string/String.__concat (; 209 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/string/String.__concat (; 145 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) local.get $0 call $~lib/rt/purerc/__retain @@ -9831,8 +6923,6 @@ local.get $0 i32.const 4432 local.get $0 - i32.const 0 - i32.ne select local.get $1 call $~lib/string/String#concat @@ -9843,607 +6933,84 @@ call $~lib/rt/purerc/__release local.get $2 ) - (func $std/array/createRandomString (; 210 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $std/array/createRandomString (; 146 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) - (local $3 f64) + (local $3 i32) (local $4 i32) - (local $5 i32) i32.const 4272 call $~lib/rt/purerc/__retain local.set $1 - block $break|0 - i32.const 0 - local.set $2 - loop $repeat|0 - local.get $2 - local.get $0 - i32.lt_s - i32.eqz - br_if $break|0 + loop $repeat|0 + local.get $2 + local.get $0 + i32.lt_s + if local.get $1 - global.get $std/array/charset - block $~lib/math/NativeMath.floor|inlined.0 (result f64) - call $~lib/math/NativeMath.random - global.get $std/array/charset - call $~lib/string/String#get:length - f64.convert_i32_s - f64.mul - local.set $3 - local.get $3 - f64.floor - end + call $~lib/math/NativeMath.random + i32.const 3164 + i32.load + i32.const 1 + i32.shr_u + f64.convert_i32_s + f64.mul + f64.floor i32.trunc_f64_s call $~lib/string/String#charAt - local.tee $4 + local.tee $3 call $~lib/string/String.__concat - local.tee $5 + local.tee $4 local.get $1 call $~lib/rt/purerc/__retainRelease local.set $1 - local.get $4 + local.get $3 call $~lib/rt/purerc/__release - local.get $5 + local.get $4 call $~lib/rt/purerc/__release local.get $2 i32.const 1 i32.add local.set $2 br $repeat|0 - unreachable end - unreachable end local.get $1 ) - (func $~lib/array/Array<~lib/string/String>#__unchecked_set (; 211 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - local.get $2 - call $~lib/rt/purerc/__retain - drop - local.get $0 - i32.load offset=4 - local.get $1 - i32.const 2 - i32.shl - i32.add - local.set $3 - local.get $3 - local.get $2 - local.get $3 - i32.load - call $~lib/rt/purerc/__retainRelease - i32.store - local.get $2 - call $~lib/rt/purerc/__release - ) - (func $~lib/array/Array<~lib/string/String>#__set (; 212 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - local.get $2 - call $~lib/rt/purerc/__retain - drop - local.get $0 - i32.load offset=12 - local.set $3 - local.get $1 - local.get $3 - i32.gt_u - if - local.get $2 - call $~lib/rt/purerc/__release - block - i32.const 4008 - i32.const 456 - i32.const 112 - i32.const 38 - call $~lib/builtins/abort - unreachable - unreachable - end - unreachable - end - local.get $0 - local.get $1 - i32.const 1 - i32.add - i32.const 2 - call $~lib/array/ensureSize - local.get $0 - local.get $1 - local.get $2 - call $~lib/array/Array<~lib/string/String>#__unchecked_set - local.get $1 - local.get $3 - i32.ge_s - if - local.get $0 - local.get $1 - i32.const 1 - i32.add - i32.store offset=12 - end - local.get $2 - call $~lib/rt/purerc/__release - ) - (func $std/array/createRandomStringArray (; 213 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $std/array/createRandomStringArray (; 147 ;) (type $FUNCSIG$i) (result i32) + (local $0 i32) (local $1 i32) (local $2 i32) - (local $3 i32) - local.get $0 call $~lib/array/Array.create<~lib/string/String> local.set $1 - block $break|0 - i32.const 0 - local.set $2 - loop $repeat|0 - local.get $2 - local.get $0 - i32.lt_s - i32.eqz - br_if $break|0 + loop $repeat|0 + local.get $0 + i32.const 400 + i32.lt_s + if local.get $1 - local.get $2 + local.get $0 call $~lib/math/NativeMath.random f64.const 32 f64.mul i32.trunc_f64_s call $std/array/createRandomString - local.tee $3 - call $~lib/array/Array<~lib/string/String>#__set - local.get $3 - call $~lib/rt/purerc/__release + local.tee $2 + call $~lib/array/Array<~lib/array/Array>#__set local.get $2 - i32.const 1 - i32.add - local.set $2 - br $repeat|0 - unreachable - end - unreachable - end - local.get $1 - ) - (func $~lib/util/sort/insertionSort<~lib/string/String> (; 214 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - block $break|0 - i32.const 0 - local.set $3 - loop $repeat|0 - local.get $3 - local.get $1 - i32.lt_s - i32.eqz - br_if $break|0 - local.get $0 - local.get $3 - i32.const 2 - i32.shl - i32.add - i32.load - call $~lib/rt/purerc/__retain - local.set $4 - local.get $3 - i32.const 1 - i32.sub - local.set $5 - block $break|1 - loop $continue|1 - local.get $5 - i32.const 0 - i32.ge_s - if - local.get $0 - local.get $5 - i32.const 2 - i32.shl - i32.add - i32.load - call $~lib/rt/purerc/__retain - local.set $6 - block (result i32) - i32.const 2 - global.set $~lib/argc - local.get $4 - local.get $6 - local.get $2 - call_indirect (type $FUNCSIG$iii) - end - i32.const 0 - i32.lt_s - if - local.get $0 - block (result i32) - local.get $5 - local.tee $7 - i32.const 1 - i32.sub - local.set $5 - local.get $7 - end - i32.const 1 - i32.add - i32.const 2 - i32.shl - i32.add - local.get $6 - i32.store - else - local.get $6 - call $~lib/rt/purerc/__release - br $break|1 - end - local.get $6 - call $~lib/rt/purerc/__release - br $continue|1 - end - end - end - local.get $0 - local.get $5 - i32.const 1 - i32.add - i32.const 2 - i32.shl - i32.add - local.get $4 - i32.store - local.get $4 call $~lib/rt/purerc/__release - local.get $3 - i32.const 1 - i32.add - local.set $3 - br $repeat|0 - unreachable - end - unreachable - end - ) - (func $~lib/array/Array<~lib/string/String>#sort (; 215 ;) (type $FUNCSIG$iii) (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 $0 - i32.load offset=12 - local.set $2 - local.get $2 - i32.const 1 - i32.le_s - if - local.get $0 - call $~lib/rt/purerc/__retain - return - end - local.get $0 - i32.load offset=4 - local.set $3 - local.get $2 - i32.const 2 - i32.eq - if - local.get $3 - i32.load offset=4 - call $~lib/rt/purerc/__retain - local.set $4 - local.get $3 - i32.load - call $~lib/rt/purerc/__retain - local.set $5 - block (result i32) - i32.const 2 - global.set $~lib/argc - local.get $4 - local.get $5 - local.get $1 - call_indirect (type $FUNCSIG$iii) - end - i32.const 0 - i32.lt_s - if - local.get $3 - local.get $5 - i32.store offset=4 - local.get $3 - local.get $4 - i32.store - end - local.get $0 - call $~lib/rt/purerc/__retain - local.set $6 - local.get $4 - call $~lib/rt/purerc/__release - local.get $5 - call $~lib/rt/purerc/__release - local.get $6 - return - end - block $~lib/util/sort/SORT<~lib/string/String>|inlined.0 - local.get $3 - local.set $6 - local.get $2 - local.set $4 - local.get $1 - local.set $5 - local.get $6 - local.get $4 - local.get $5 - call $~lib/util/sort/insertionSort<~lib/string/String> - end - local.get $0 - call $~lib/rt/purerc/__retain - ) - (func $~lib/array/Array<~lib/string/String>#get:length (; 216 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - local.get $0 - i32.load offset=12 - ) - (func $~lib/array/Array<~lib/string/String>#__unchecked_get (; 217 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - local.get $0 - i32.load offset=4 - local.get $1 - i32.const 2 - i32.shl - i32.add - i32.load - call $~lib/rt/purerc/__retain - ) - (func $~lib/array/Array<~lib/string/String>#__get (; 218 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - local.get $1 - local.get $0 - i32.load offset=12 - i32.ge_u - if - i32.const 4008 - i32.const 456 - i32.const 97 - i32.const 45 - call $~lib/builtins/abort - unreachable - end - local.get $1 - local.get $0 - i32.load offset=8 - i32.const 2 - i32.shr_u - i32.ge_u - if - i32.const 400 - i32.const 456 - i32.const 100 - i32.const 61 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - call $~lib/array/Array<~lib/string/String>#__unchecked_get - ) - (func $std/array/isSorted<~lib/string/String> (; 219 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $0 - call $~lib/rt/purerc/__retain - drop - block $break|0 - block - i32.const 1 - local.set $2 local.get $0 - call $~lib/array/Array<~lib/string/String>#get:length - local.set $3 - end - loop $repeat|0 - local.get $2 - local.get $3 - i32.lt_s - i32.eqz - br_if $break|0 - block (result i32) - i32.const 2 - global.set $~lib/argc - local.get $0 - local.get $2 - i32.const 1 - i32.sub - call $~lib/array/Array<~lib/string/String>#__get - local.tee $4 - local.get $0 - local.get $2 - call $~lib/array/Array<~lib/string/String>#__get - local.tee $5 - local.get $1 - call_indirect (type $FUNCSIG$iii) - end - i32.const 0 - i32.gt_s - if - local.get $0 - call $~lib/rt/purerc/__release - local.get $4 - call $~lib/rt/purerc/__release - local.get $5 - call $~lib/rt/purerc/__release - i32.const 0 - return - end - local.get $4 - call $~lib/rt/purerc/__release - local.get $5 - call $~lib/rt/purerc/__release - local.get $2 i32.const 1 i32.add - local.set $2 + local.set $0 br $repeat|0 - unreachable end - unreachable end - local.get $0 - call $~lib/rt/purerc/__release - i32.const 1 - ) - (func $std/array/assertSorted<~lib/string/String> (; 220 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) - (local $2 i32) - local.get $0 - call $~lib/rt/purerc/__retain - drop - local.get $0 local.get $1 - call $~lib/array/Array<~lib/string/String>#sort - local.tee $2 - local.get $1 - call $std/array/isSorted<~lib/string/String> - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 832 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $2 - call $~lib/rt/purerc/__release - local.get $0 - call $~lib/rt/purerc/__release ) - (func $~lib/util/sort/COMPARATOR<~lib/string/String>~anonymous|0 (; 221 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/string/String#substring (; 148 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) - (local $4 i32) - (local $5 i32) local.get $0 - call $~lib/rt/purerc/__retain - drop - local.get $1 - call $~lib/rt/purerc/__retain - drop - local.get $0 - local.get $1 - i32.eq - if (result i32) - i32.const 1 - else - local.get $0 - i32.const 0 - i32.eq - end - if (result i32) - i32.const 1 - else - local.get $1 - i32.const 0 - i32.eq - end - if - local.get $0 - call $~lib/rt/purerc/__release - local.get $1 - call $~lib/rt/purerc/__release - i32.const 0 - return - end - local.get $0 - call $~lib/string/String#get:length - local.set $2 - local.get $1 - call $~lib/string/String#get:length - local.set $3 - local.get $2 - i32.eqz - if (result i32) - local.get $3 - i32.eqz - else - i32.const 0 - end - if - local.get $0 - call $~lib/rt/purerc/__release - local.get $1 - call $~lib/rt/purerc/__release - i32.const 0 - return - end - local.get $2 - i32.eqz - if - local.get $0 - call $~lib/rt/purerc/__release - local.get $1 - call $~lib/rt/purerc/__release - i32.const -1 - return - end - local.get $3 - i32.eqz - if - local.get $0 - call $~lib/rt/purerc/__release - local.get $1 - call $~lib/rt/purerc/__release - i32.const 1 - return - end - local.get $0 - call $~lib/rt/purerc/__release - local.get $1 - call $~lib/rt/purerc/__release - local.get $0 - i32.const 0 - local.get $1 - i32.const 0 - local.get $2 - local.tee $4 - local.get $3 - local.tee $5 - local.get $4 - local.get $5 - i32.lt_s - select - call $~lib/util/string/compareImpl - ) - (func $std/array/assertSorted<~lib/string/String>|trampoline (; 222 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) - block $1of1 - block $0of1 - block $outOfRange - global.get $~lib/argc - i32.const 1 - i32.sub - br_table $0of1 $1of1 $outOfRange - end - unreachable - end - block $~lib/util/sort/COMPARATOR<~lib/string/String>|inlined.0 (result i32) - i32.const 56 - br $~lib/util/sort/COMPARATOR<~lib/string/String>|inlined.0 - end - local.set $1 - end - local.get $0 - local.get $1 - call $std/array/assertSorted<~lib/string/String> - ) - (func $~lib/string/String#substring (; 223 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) - (local $10 i32) - local.get $0 - i32.const 0 - i32.ne i32.eqz if i32.const 0 @@ -10453,105 +7020,90 @@ call $~lib/builtins/abort unreachable end + i32.const 0 local.get $0 - call $~lib/string/String#get:length - local.set $3 - local.get $1 - local.tee $4 - i32.const 0 - local.tee $5 - local.get $4 - local.get $5 - i32.gt_s - select - local.tee $4 - local.get $3 - local.tee $5 - local.get $4 - local.get $5 - i32.lt_s - select - local.set $6 - local.get $2 - local.tee $4 - i32.const 0 - local.tee $5 - local.get $4 - local.get $5 - i32.gt_s - select - local.tee $4 - local.get $3 - local.tee $5 - local.get $4 - local.get $5 - i32.lt_s - select - local.set $7 - local.get $6 - local.tee $4 - local.get $7 - local.tee $5 - local.get $4 - local.get $5 - i32.lt_s - select - i32.const 1 - i32.shl - local.set $8 - local.get $6 - local.tee $4 - local.get $7 - local.tee $5 - local.get $4 - local.get $5 - i32.gt_s - select - i32.const 1 - i32.shl - local.set $9 - local.get $9 - local.get $8 + i32.const 16 i32.sub - local.set $3 + i32.load offset=12 + i32.const 1 + i32.shr_u + local.tee $2 + i32.const 0 + local.get $2 + i32.lt_s + select + local.tee $3 + local.get $1 + i32.const 0 + local.get $1 + i32.const 0 + i32.gt_s + select + local.tee $1 + local.get $2 + local.get $1 + local.get $2 + i32.lt_s + select + local.tee $2 local.get $3 + local.get $2 + i32.gt_s + select + i32.const 1 + i32.shl + local.tee $1 + local.get $3 + local.get $2 + local.get $3 + local.get $2 + i32.lt_s + select + i32.const 1 + i32.shl + local.tee $3 + i32.sub + local.tee $2 i32.eqz if i32.const 4272 call $~lib/rt/purerc/__retain return end - local.get $8 - i32.eqz + local.get $3 if (result i32) - local.get $9 + i32.const 0 + else local.get $0 - call $~lib/string/String#get:length + i32.const 16 + i32.sub + i32.load offset=12 + i32.const 1 + i32.shr_u i32.const 1 i32.shl + local.get $1 i32.eq - else - i32.const 0 end if local.get $0 call $~lib/rt/purerc/__retain return end - local.get $3 + local.get $2 i32.const 16 call $~lib/rt/tlsf/__alloc - local.set $10 - local.get $10 + local.tee $1 local.get $0 - local.get $8 - i32.add local.get $3 + i32.add + local.get $2 call $~lib/memory/memory.copy - local.get $10 + local.get $1 call $~lib/rt/purerc/__retain ) - (func $~lib/array/Array#join_bool (; 224 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array#join_bool (; 149 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -10559,332 +7111,264 @@ (local $6 i32) (local $7 i32) (local $8 i32) - (local $9 i32) - (local $10 i32) - local.get $1 + i32.const 4536 call $~lib/rt/purerc/__retain drop local.get $0 i32.load offset=12 i32.const 1 i32.sub - local.set $2 - local.get $2 + local.tee $1 i32.const 0 i32.lt_s if i32.const 4272 call $~lib/rt/purerc/__retain - local.set $3 - local.get $1 + local.set $0 + i32.const 4536 call $~lib/rt/purerc/__release - local.get $3 + local.get $0 return end local.get $0 i32.load offset=4 - local.set $4 - local.get $2 + local.set $3 + local.get $1 i32.eqz if i32.const 4480 i32.const 4504 - local.get $4 + local.get $3 i32.load8_u select call $~lib/rt/purerc/__retain - local.set $3 - local.get $1 + local.set $0 + i32.const 4536 call $~lib/rt/purerc/__release - local.get $3 + local.get $0 return end - local.get $1 - call $~lib/string/String#get:length - local.set $5 + i32.const 4532 + i32.load + i32.const 1 + i32.shr_u + local.tee $4 i32.const 5 - local.set $6 - local.get $6 - local.get $5 i32.add - local.get $2 + local.get $1 i32.mul - local.get $6 + i32.const 5 i32.add - local.set $7 - local.get $7 + local.tee $7 i32.const 1 i32.shl i32.const 16 call $~lib/rt/tlsf/__alloc call $~lib/rt/purerc/__retain - local.set $8 + local.set $2 i32.const 0 - local.set $9 - block $break|0 - i32.const 0 - local.set $3 - loop $repeat|0 - local.get $3 - local.get $2 - i32.lt_s - i32.eqz - br_if $break|0 - local.get $4 + local.set $0 + loop $repeat|0 + local.get $5 + local.get $1 + i32.lt_s + if local.get $3 + local.get $5 i32.add i32.load8_u - local.set $10 - i32.const 4 - local.get $10 - i32.const 0 - i32.ne + local.tee $8 i32.eqz + i32.const 4 i32.add local.set $6 - local.get $8 - local.get $9 + local.get $0 i32.const 1 i32.shl + local.get $2 i32.add i32.const 4480 i32.const 4504 - local.get $10 + local.get $8 select local.get $6 i32.const 1 i32.shl call $~lib/memory/memory.copy - local.get $9 + local.get $0 local.get $6 i32.add - local.set $9 - local.get $5 + local.set $0 + local.get $4 if - local.get $8 - local.get $9 + local.get $0 i32.const 1 i32.shl + local.get $2 i32.add - local.get $1 - local.get $5 + i32.const 4536 + local.get $4 i32.const 1 i32.shl call $~lib/memory/memory.copy - local.get $9 - local.get $5 + local.get $0 + local.get $4 i32.add - local.set $9 + local.set $0 end - local.get $3 + local.get $5 i32.const 1 i32.add - local.set $3 + local.set $5 br $repeat|0 - unreachable end - unreachable end - local.get $4 - local.get $2 + local.get $1 + local.get $3 i32.add i32.load8_u - local.set $10 - i32.const 4 - local.get $10 - i32.const 0 - i32.ne + local.tee $3 i32.eqz + i32.const 4 i32.add - local.set $6 - local.get $8 - local.get $9 + local.set $1 + local.get $0 i32.const 1 i32.shl + local.get $2 i32.add i32.const 4480 i32.const 4504 - local.get $10 + local.get $3 select - local.get $6 + local.get $1 i32.const 1 i32.shl call $~lib/memory/memory.copy - local.get $9 - local.get $6 - i32.add - local.set $9 local.get $7 - local.get $9 - i32.gt_s - if - local.get $8 - i32.const 0 - local.get $9 - call $~lib/string/String#substring - local.set $3 - local.get $1 - call $~lib/rt/purerc/__release - local.get $8 - call $~lib/rt/purerc/__release - local.get $3 - return - end - local.get $8 - local.set $3 - local.get $1 - call $~lib/rt/purerc/__release - local.get $3 - ) - (func $~lib/array/Array#join (; 225 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - local.get $1 - call $~lib/rt/purerc/__retain - drop local.get $0 local.get $1 - call $~lib/array/Array#join_bool - local.set $2 - local.get $1 + i32.add + local.tee $0 + i32.gt_s + if + local.get $2 + local.get $0 + call $~lib/string/String#substring + local.set $0 + i32.const 4536 + call $~lib/rt/purerc/__release + local.get $2 + call $~lib/rt/purerc/__release + local.get $0 + return + end + i32.const 4536 call $~lib/rt/purerc/__release local.get $2 - return ) - (func $~lib/util/number/decimalCount32 (; 226 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - (local $1 i32) + (func $~lib/util/number/decimalCount32 (; 150 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.const 100000 i32.lt_u - if + if (result i32) local.get $0 i32.const 100 i32.lt_u - if + if (result i32) i32.const 1 i32.const 2 local.get $0 i32.const 10 i32.lt_u select - return else + i32.const 3 i32.const 4 i32.const 5 local.get $0 i32.const 10000 i32.lt_u select - local.set $1 - i32.const 3 - local.get $1 local.get $0 i32.const 1000 i32.lt_u select - return end - unreachable - unreachable else local.get $0 i32.const 10000000 i32.lt_u - if + if (result i32) i32.const 6 i32.const 7 local.get $0 i32.const 1000000 i32.lt_u select - return else + i32.const 8 i32.const 9 i32.const 10 local.get $0 i32.const 1000000000 i32.lt_u select - local.set $1 - i32.const 8 - local.get $1 local.get $0 i32.const 100000000 i32.lt_u select - return end - unreachable - unreachable end - unreachable - unreachable ) - (func $~lib/util/number/utoa32_lut (; 227 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/util/number/utoa32_lut (; 151 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i64) - (local $9 i64) - i32.const 5072 - i32.load offset=4 + i32.const 5076 + i32.load local.set $3 - block $break|0 - loop $continue|0 + loop $continue|0 + local.get $1 + i32.const 10000 + i32.ge_u + if local.get $1 i32.const 10000 - i32.ge_u - if - local.get $1 - i32.const 10000 - i32.div_u - local.set $4 - local.get $1 - i32.const 10000 - i32.rem_u - local.set $5 - local.get $4 - local.set $1 - local.get $5 - i32.const 100 - i32.div_u - local.set $6 - local.get $5 - i32.const 100 - i32.rem_u - local.set $7 - local.get $3 - local.get $6 - i32.const 2 - i32.shl - i32.add - i64.load32_u - local.set $8 - local.get $3 - local.get $7 - i32.const 2 - i32.shl - i32.add - i64.load32_u - local.set $9 - local.get $2 - i32.const 4 - i32.sub - local.set $2 - local.get $0 - local.get $2 - i32.const 1 - i32.shl - i32.add - local.get $8 - local.get $9 - i64.const 32 - i64.shl - i64.or - i64.store - br $continue|0 - end + i32.rem_u + local.set $4 + local.get $1 + i32.const 10000 + i32.div_u + local.set $1 + local.get $2 + i32.const 4 + i32.sub + local.tee $2 + i32.const 1 + i32.shl + local.get $0 + i32.add + local.get $4 + i32.const 100 + i32.div_u + i32.const 2 + i32.shl + local.get $3 + i32.add + i64.load32_u + local.get $4 + i32.const 100 + i32.rem_u + i32.const 2 + i32.shl + local.get $3 + i32.add + i64.load32_u + i64.const 32 + i64.shl + i64.or + i64.store + br $continue|0 end end local.get $1 @@ -10893,31 +7377,26 @@ if local.get $1 i32.const 100 - i32.div_u - local.set $7 + i32.rem_u + local.set $4 local.get $1 i32.const 100 - i32.rem_u - local.set $6 - local.get $7 + i32.div_u local.set $1 local.get $2 i32.const 2 i32.sub - local.set $2 - local.get $3 - local.get $6 - i32.const 2 - i32.shl - i32.add - i32.load - local.set $5 - local.get $0 - local.get $2 + local.tee $2 i32.const 1 i32.shl + local.get $0 i32.add - local.get $5 + local.get $4 + i32.const 2 + i32.shl + local.get $3 + i32.add + i32.load i32.store end local.get $1 @@ -10927,46 +7406,35 @@ local.get $2 i32.const 2 i32.sub - local.set $2 - local.get $3 + i32.const 1 + i32.shl + local.get $0 + i32.add local.get $1 i32.const 2 i32.shl + local.get $3 i32.add i32.load - local.set $5 - local.get $0 - local.get $2 - i32.const 1 - i32.shl - i32.add - local.get $5 i32.store else local.get $2 i32.const 1 i32.sub - local.set $2 - i32.const 48 - local.get $1 - i32.add - local.set $5 - local.get $0 - local.get $2 i32.const 1 i32.shl + local.get $0 + i32.add + local.get $1 + i32.const 48 i32.add - local.get $5 i32.store16 end ) - (func $~lib/util/number/itoa32 (; 228 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/util/number/itoa32 (; 152 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) local.get $0 i32.eqz if @@ -10977,8 +7445,7 @@ local.get $0 i32.const 0 i32.lt_s - local.set $1 - local.get $1 + local.tee $1 if i32.const 0 local.get $0 @@ -10989,49 +7456,29 @@ call $~lib/util/number/decimalCount32 local.get $1 i32.add - local.set $2 - local.get $2 + local.tee $3 i32.const 1 i32.shl i32.const 16 call $~lib/rt/tlsf/__alloc - local.set $3 - block $~lib/util/number/utoa32_core|inlined.0 - local.get $3 - local.set $6 - local.get $0 - local.set $5 - local.get $2 - local.set $4 - local.get $6 - local.get $5 - local.get $4 - call $~lib/util/number/utoa32_lut - end + local.tee $2 + local.get $0 + local.get $3 + call $~lib/util/number/utoa32_lut local.get $1 if - local.get $3 + local.get $2 i32.const 45 i32.store16 end - local.get $3 + local.get $2 call $~lib/rt/purerc/__retain ) - (func $~lib/util/number/itoa (; 229 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - local.get $0 - call $~lib/util/number/itoa32 - return - ) - (func $~lib/util/number/itoa_stream (; 230 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - local.get $0 + (func $~lib/util/number/itoa_stream (; 153 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $1 i32.const 1 i32.shl + local.get $0 i32.add local.set $0 local.get $2 @@ -11043,54 +7490,41 @@ i32.const 1 return end - i32.const 0 - local.set $3 - local.get $2 - i32.const 0 - i32.lt_s - local.set $4 - local.get $4 - if - i32.const 0 + local.get $0 + block (result i32) + local.get $2 + i32.const 0 + i32.lt_s + local.tee $1 + if + i32.const 0 + local.get $2 + i32.sub + local.set $2 + end local.get $2 - i32.sub - local.set $2 end local.get $2 call $~lib/util/number/decimalCount32 - local.get $4 + local.get $1 i32.add - local.set $3 - block $~lib/util/number/utoa32_core|inlined.1 - local.get $0 - local.set $7 - local.get $2 - local.set $6 - local.get $3 - local.set $5 - local.get $7 - local.get $6 - local.get $5 - call $~lib/util/number/utoa32_lut - end - local.get $4 + local.tee $2 + call $~lib/util/number/utoa32_lut + local.get $1 if local.get $0 i32.const 45 i32.store16 end - local.get $3 + local.get $2 ) - (func $~lib/array/Array#join_int (; 231 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array#join_int (; 154 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result 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 $10 i32) local.get $1 call $~lib/rt/purerc/__retain drop @@ -11098,163 +7532,145 @@ i32.load offset=12 i32.const 1 i32.sub - local.set $2 - local.get $2 + local.tee $3 i32.const 0 i32.lt_s if i32.const 4272 call $~lib/rt/purerc/__retain - local.set $3 + local.set $0 local.get $1 call $~lib/rt/purerc/__release - local.get $3 + local.get $0 return end local.get $0 i32.load offset=4 local.set $4 - local.get $2 + local.get $3 i32.eqz if local.get $4 i32.load - call $~lib/util/number/itoa - local.tee $3 + call $~lib/util/number/itoa32 + local.tee $0 call $~lib/rt/purerc/__retain - local.set $5 - local.get $3 + local.set $2 + local.get $0 call $~lib/rt/purerc/__release local.get $1 call $~lib/rt/purerc/__release - local.get $5 + local.get $2 return end local.get $1 - call $~lib/string/String#get:length - local.set $6 + i32.const 16 + i32.sub + i32.load offset=12 + i32.const 1 + i32.shr_u + local.tee $5 i32.const 11 - local.get $6 i32.add - local.get $2 + local.get $3 i32.mul i32.const 11 i32.add - local.set $7 - local.get $7 + local.tee $7 i32.const 1 i32.shl i32.const 16 call $~lib/rt/tlsf/__alloc call $~lib/rt/purerc/__retain - local.set $8 + local.set $2 i32.const 0 - local.set $9 - block $break|0 - i32.const 0 - local.set $3 - loop $repeat|0 - local.get $3 + local.set $0 + loop $repeat|0 + local.get $6 + local.get $3 + i32.lt_s + if local.get $2 - i32.lt_s - i32.eqz - br_if $break|0 - local.get $4 - local.get $3 + local.get $0 + local.get $6 i32.const 2 i32.shl + local.get $4 i32.add i32.load - local.set $10 - local.get $9 - local.get $8 - local.get $9 - local.get $10 call $~lib/util/number/itoa_stream + local.get $0 i32.add - local.set $9 - local.get $6 + local.set $0 + local.get $5 if - local.get $8 - local.get $9 + local.get $0 i32.const 1 i32.shl + local.get $2 i32.add local.get $1 - local.get $6 + local.get $5 i32.const 1 i32.shl call $~lib/memory/memory.copy - local.get $9 - local.get $6 + local.get $0 + local.get $5 i32.add - local.set $9 + local.set $0 end - local.get $3 + local.get $6 i32.const 1 i32.add - local.set $3 + local.set $6 br $repeat|0 - unreachable end - unreachable end - local.get $4 + local.get $7 local.get $2 + local.get $0 + local.get $3 i32.const 2 i32.shl + local.get $4 i32.add i32.load - local.set $10 - local.get $9 - local.get $8 - local.get $9 - local.get $10 call $~lib/util/number/itoa_stream + local.get $0 i32.add - local.set $9 - local.get $7 - local.get $9 + local.tee $0 i32.gt_s if - local.get $8 - i32.const 0 - local.get $9 + local.get $2 + local.get $0 call $~lib/string/String#substring - local.set $3 + local.set $0 local.get $1 call $~lib/rt/purerc/__release - local.get $8 + local.get $2 call $~lib/rt/purerc/__release - local.get $3 + local.get $0 return end - local.get $8 - local.set $3 local.get $1 call $~lib/rt/purerc/__release - local.get $3 + local.get $2 ) - (func $~lib/array/Array#join (; 232 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) + (func $~lib/array/Array#join (; 155 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $1 call $~lib/rt/purerc/__retain drop local.get $0 local.get $1 call $~lib/array/Array#join_int - local.set $2 + local.set $0 local.get $1 call $~lib/rt/purerc/__release - local.get $2 - return + local.get $0 ) - (func $~lib/util/number/utoa32 (; 233 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/util/number/utoa32 (; 156 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) local.get $0 i32.eqz if @@ -11264,42 +7680,23 @@ end local.get $0 call $~lib/util/number/decimalCount32 - local.set $1 - local.get $1 + local.tee $1 i32.const 1 i32.shl i32.const 16 call $~lib/rt/tlsf/__alloc - local.set $2 - block $~lib/util/number/utoa32_core|inlined.2 - local.get $2 - local.set $5 - local.get $0 - local.set $4 - local.get $1 - local.set $3 - local.get $5 - local.get $4 - local.get $3 - call $~lib/util/number/utoa32_lut - end + local.tee $2 + local.get $0 + local.get $1 + call $~lib/util/number/utoa32_lut local.get $2 call $~lib/rt/purerc/__retain ) - (func $~lib/util/number/itoa (; 234 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - local.get $0 - call $~lib/util/number/utoa32 - return - ) - (func $~lib/util/number/itoa_stream (; 235 ;) (type $FUNCSIG$iiii) (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 $0 + (func $~lib/util/number/itoa_stream (; 157 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $1 i32.const 1 i32.shl + local.get $0 i32.add local.set $0 local.get $2 @@ -11311,35 +7708,21 @@ i32.const 1 return end - i32.const 0 - local.set $3 + local.get $0 + local.get $2 local.get $2 call $~lib/util/number/decimalCount32 - local.set $3 - block $~lib/util/number/utoa32_core|inlined.3 - local.get $0 - local.set $6 - local.get $2 - local.set $5 - local.get $3 - local.set $4 - local.get $6 - local.get $5 - local.get $4 - call $~lib/util/number/utoa32_lut - end - local.get $3 + local.tee $0 + call $~lib/util/number/utoa32_lut + local.get $0 ) - (func $~lib/array/Array#join_int (; 236 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array#join_int (; 158 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result 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 $10 i32) local.get $1 call $~lib/rt/purerc/__retain drop @@ -11347,761 +7730,558 @@ i32.load offset=12 i32.const 1 i32.sub - local.set $2 - local.get $2 + local.tee $3 i32.const 0 i32.lt_s if i32.const 4272 call $~lib/rt/purerc/__retain - local.set $3 + local.set $0 local.get $1 call $~lib/rt/purerc/__release - local.get $3 + local.get $0 return end local.get $0 i32.load offset=4 local.set $4 - local.get $2 + local.get $3 i32.eqz if local.get $4 i32.load - call $~lib/util/number/itoa - local.tee $3 + call $~lib/util/number/utoa32 + local.tee $0 call $~lib/rt/purerc/__retain - local.set $5 - local.get $3 + local.set $2 + local.get $0 call $~lib/rt/purerc/__release local.get $1 call $~lib/rt/purerc/__release - local.get $5 + local.get $2 return end local.get $1 - call $~lib/string/String#get:length - local.set $6 + i32.const 16 + i32.sub + i32.load offset=12 + i32.const 1 + i32.shr_u + local.tee $5 i32.const 10 - local.get $6 i32.add - local.get $2 + local.get $3 i32.mul i32.const 10 i32.add - local.set $7 - local.get $7 + local.tee $7 i32.const 1 i32.shl i32.const 16 call $~lib/rt/tlsf/__alloc call $~lib/rt/purerc/__retain - local.set $8 + local.set $2 i32.const 0 - local.set $9 - block $break|0 - i32.const 0 - local.set $3 - loop $repeat|0 - local.get $3 + local.set $0 + loop $repeat|0 + local.get $6 + local.get $3 + i32.lt_s + if local.get $2 - i32.lt_s - i32.eqz - br_if $break|0 - local.get $4 - local.get $3 + local.get $0 + local.get $6 i32.const 2 i32.shl + local.get $4 i32.add i32.load - local.set $10 - local.get $9 - local.get $8 - local.get $9 - local.get $10 call $~lib/util/number/itoa_stream + local.get $0 i32.add - local.set $9 - local.get $6 + local.set $0 + local.get $5 if - local.get $8 - local.get $9 + local.get $0 i32.const 1 i32.shl + local.get $2 i32.add local.get $1 - local.get $6 + local.get $5 i32.const 1 i32.shl call $~lib/memory/memory.copy - local.get $9 - local.get $6 + local.get $0 + local.get $5 i32.add - local.set $9 + local.set $0 end - local.get $3 + local.get $6 i32.const 1 i32.add - local.set $3 + local.set $6 br $repeat|0 - unreachable end - unreachable end - local.get $4 + local.get $7 local.get $2 + local.get $0 + local.get $3 i32.const 2 i32.shl + local.get $4 i32.add i32.load - local.set $10 - local.get $9 - local.get $8 - local.get $9 - local.get $10 call $~lib/util/number/itoa_stream + local.get $0 i32.add - local.set $9 - local.get $7 - local.get $9 + local.tee $0 i32.gt_s if - local.get $8 - i32.const 0 - local.get $9 + local.get $2 + local.get $0 call $~lib/string/String#substring - local.set $3 + local.set $0 local.get $1 call $~lib/rt/purerc/__release - local.get $8 + local.get $2 call $~lib/rt/purerc/__release - local.get $3 + local.get $0 return end - local.get $8 - local.set $3 local.get $1 call $~lib/rt/purerc/__release - local.get $3 + local.get $2 ) - (func $~lib/array/Array#join (; 237 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) + (func $~lib/array/Array#join (; 159 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $1 call $~lib/rt/purerc/__retain drop local.get $0 local.get $1 call $~lib/array/Array#join_int - local.set $2 + local.set $0 local.get $1 call $~lib/rt/purerc/__release - local.get $2 - return - ) - (func $~lib/builtins/isFinite (; 238 ;) (type $FUNCSIG$id) (param $0 f64) (result i32) local.get $0 - local.get $0 - f64.sub - f64.const 0 - f64.eq ) - (func $~lib/array/Array#__unchecked_get (; 239 ;) (type $FUNCSIG$jii) (param $0 i32) (param $1 i32) (result i64) - local.get $0 - i32.load offset=4 - local.get $1 - i32.const 3 - i32.shl - i32.add - i64.load - ) - (func $~lib/array/Array#__unchecked_get (; 240 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - local.get $0 - i32.load offset=4 - local.get $1 - i32.const 1 - i32.shl - i32.add - i32.load16_s - ) - (func $~lib/util/number/genDigits (; 241 ;) (type $FUNCSIG$iijijiji) (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 (; 160 ;) (type $FUNCSIG$iijijiji) (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 $8 i32) (local $9 i64) (local $10 i64) - (local $11 i32) + (local $11 i64) (local $12 i32) - (local $13 i64) - (local $14 i32) - (local $15 i32) - (local $16 i32) - (local $17 i32) - (local $18 i32) - (local $19 i64) - (local $20 i32) - (local $21 i64) - (local $22 i64) - (local $23 i64) - (local $24 i64) - (local $25 i32) - (local $26 i32) + (local $13 i32) + (local $14 i64) + local.get $3 + local.get $1 + i64.sub + local.set $9 + i64.const 1 i32.const 0 local.get $4 i32.sub - local.set $7 - i64.const 1 - local.get $7 + local.tee $12 i64.extend_i32_s + local.tee $1 i64.shl - local.set $8 - local.get $8 + local.tee $10 i64.const 1 i64.sub - local.set $9 + local.tee $14 local.get $3 - local.get $1 - i64.sub - local.set $10 - local.get $4 + i64.and local.set $11 local.get $3 - local.get $7 - i64.extend_i32_s + local.get $1 i64.shr_u i32.wrap_i64 - local.set $12 - local.get $3 - local.get $9 - i64.and - local.set $13 - local.get $12 + local.tee $7 call $~lib/util/number/decimalCount32 - local.set $14 - local.get $6 - local.set $15 - i32.const 6536 - i32.load offset=4 - local.set $16 - block $break|0 - loop $continue|0 - local.get $14 - i32.const 0 - i32.gt_s - if - block $break|1 - block $case10|1 - block $case9|1 - block $case8|1 - block $case7|1 - block $case6|1 - block $case5|1 - block $case4|1 - block $case3|1 - block $case2|1 - block $case1|1 - block $case0|1 - local.get $14 - local.set $18 - local.get $18 - i32.const 10 - i32.eq - br_if $case0|1 - local.get $18 - i32.const 9 - i32.eq - br_if $case1|1 - local.get $18 - i32.const 8 - i32.eq - br_if $case2|1 - local.get $18 - i32.const 7 - i32.eq - br_if $case3|1 - local.get $18 - i32.const 6 - i32.eq - br_if $case4|1 - local.get $18 - i32.const 5 - i32.eq - br_if $case5|1 - local.get $18 - i32.const 4 - i32.eq - br_if $case6|1 - local.get $18 - i32.const 3 - i32.eq - br_if $case7|1 - local.get $18 - i32.const 2 - i32.eq - br_if $case8|1 - local.get $18 + local.set $4 + i32.const 6540 + i32.load + local.set $13 + loop $continue|0 + local.get $4 + i32.const 0 + i32.gt_s + if + block $break|1 + block $case10|1 + block $case9|1 + block $case8|1 + block $case7|1 + block $case6|1 + block $case5|1 + block $case4|1 + block $case3|1 + block $case2|1 + block $case1|1 + local.get $4 + i32.const 10 + i32.ne + if + local.get $4 + i32.const 9 + i32.eq + br_if $case1|1 + block $tablify|0 + local.get $4 i32.const 1 - i32.eq - br_if $case9|1 - br $case10|1 + i32.sub + br_table $case9|1 $case8|1 $case7|1 $case6|1 $case5|1 $case4|1 $case3|1 $case2|1 $tablify|0 end - block - local.get $12 - i32.const 1000000000 - i32.div_u - local.set $17 - local.get $12 - i32.const 1000000000 - i32.rem_u - local.set $12 - br $break|1 - unreachable - end - unreachable + br $case10|1 end - block - local.get $12 - i32.const 100000000 - i32.div_u - local.set $17 - local.get $12 - i32.const 100000000 - i32.rem_u - local.set $12 - br $break|1 - unreachable - end - unreachable - end - block - local.get $12 - i32.const 10000000 + local.get $7 + i32.const 1000000000 i32.div_u - local.set $17 - local.get $12 - i32.const 10000000 + local.set $8 + local.get $7 + i32.const 1000000000 i32.rem_u - local.set $12 + local.set $7 br $break|1 - unreachable end - unreachable - end - block - local.get $12 - i32.const 1000000 + local.get $7 + i32.const 100000000 i32.div_u - local.set $17 - local.get $12 - i32.const 1000000 + local.set $8 + local.get $7 + i32.const 100000000 i32.rem_u - local.set $12 + local.set $7 br $break|1 - unreachable end - unreachable - end - block - local.get $12 - i32.const 100000 + local.get $7 + i32.const 10000000 i32.div_u - local.set $17 - local.get $12 - i32.const 100000 + local.set $8 + local.get $7 + i32.const 10000000 i32.rem_u - local.set $12 + local.set $7 br $break|1 - unreachable end - unreachable - end - block - local.get $12 - i32.const 10000 + local.get $7 + i32.const 1000000 i32.div_u - local.set $17 - local.get $12 - i32.const 10000 + local.set $8 + local.get $7 + i32.const 1000000 i32.rem_u - local.set $12 + local.set $7 br $break|1 - unreachable end - unreachable - end - block - local.get $12 - i32.const 1000 + local.get $7 + i32.const 100000 i32.div_u - local.set $17 - local.get $12 - i32.const 1000 + local.set $8 + local.get $7 + i32.const 100000 i32.rem_u - local.set $12 + local.set $7 br $break|1 - unreachable end - unreachable - end - block - local.get $12 - i32.const 100 + local.get $7 + i32.const 10000 i32.div_u - local.set $17 - local.get $12 - i32.const 100 + local.set $8 + local.get $7 + i32.const 10000 i32.rem_u - local.set $12 + local.set $7 br $break|1 - unreachable end - unreachable - end - block - local.get $12 - i32.const 10 + local.get $7 + i32.const 1000 i32.div_u - local.set $17 - local.get $12 - i32.const 10 + local.set $8 + local.get $7 + i32.const 1000 i32.rem_u - local.set $12 + local.set $7 br $break|1 - unreachable end - unreachable - end - block - local.get $12 - local.set $17 - i32.const 0 - local.set $12 + local.get $7 + i32.const 100 + i32.div_u + local.set $8 + local.get $7 + i32.const 100 + i32.rem_u + local.set $7 br $break|1 - unreachable end - unreachable - end - block - i32.const 0 - local.set $17 + local.get $7 + i32.const 10 + i32.div_u + local.set $8 + local.get $7 + i32.const 10 + i32.rem_u + local.set $7 br $break|1 - unreachable end - unreachable + local.get $7 + local.set $8 + i32.const 0 + local.set $7 + br $break|1 end - local.get $17 - local.get $15 - i32.or - if - local.get $0 - block (result i32) - local.get $15 - local.tee $18 - i32.const 1 - i32.add - local.set $15 - local.get $18 - end - i32.const 1 - i32.shl - i32.add - i32.const 48 - local.get $17 - i32.const 65535 - i32.and - i32.add - i32.store16 - end - local.get $14 + i32.const 0 + local.set $8 + end + local.get $6 + local.get $8 + i32.or + if + local.get $6 + local.tee $2 i32.const 1 - i32.sub - local.set $14 + i32.add + local.set $6 + local.get $2 + i32.const 1 + i32.shl + local.get $0 + i32.add + local.get $8 + i32.const 65535 + i32.and + i32.const 48 + i32.add + i32.store16 + end + local.get $4 + i32.const 1 + i32.sub + local.set $4 + local.get $7 + i64.extend_i32_u + local.get $12 + i64.extend_i32_s + i64.shl + local.get $11 + i64.add + local.tee $1 + local.get $5 + i64.le_u + if + global.get $~lib/util/number/_K + local.get $4 + i32.add + global.set $~lib/util/number/_K + local.get $4 + i32.const 2 + i32.shl + local.get $13 + i32.add + i64.load32_u local.get $12 - i64.extend_i32_u - local.get $7 i64.extend_i32_s i64.shl - local.get $13 - i64.add - local.set $19 - local.get $19 - local.get $5 - i64.le_u - if - global.get $~lib/util/number/_K - local.get $14 - i32.add - global.set $~lib/util/number/_K - block $~lib/util/number/grisuRound|inlined.0 - local.get $0 - local.set $20 - local.get $15 - local.set $18 - local.get $5 - local.set $24 - local.get $19 - local.set $23 - local.get $16 - local.get $14 - i32.const 2 - i32.shl - i32.add - i64.load32_u - local.get $7 - i64.extend_i32_s - i64.shl - local.set $22 - local.get $10 - local.set $21 - local.get $20 - local.get $18 - i32.const 1 - i32.sub - i32.const 1 - i32.shl - i32.add - local.set $25 - local.get $25 - i32.load16_u - local.set $26 - block $break|2 - loop $continue|2 - local.get $23 - local.get $21 - i64.lt_u - if (result i32) - local.get $24 - local.get $23 - i64.sub - local.get $22 - i64.ge_u - else - i32.const 0 - end - if (result i32) - local.get $23 - local.get $22 - i64.add - local.get $21 - i64.lt_u - if (result i32) - i32.const 1 - else - local.get $21 - local.get $23 - i64.sub - local.get $23 - local.get $22 - i64.add - local.get $21 - i64.sub - i64.gt_u - end - else - i32.const 0 - end - if - local.get $26 - i32.const 1 - i32.sub - local.set $26 - local.get $23 - local.get $22 - i64.add - local.set $23 - br $continue|2 - end - end - end - local.get $25 - local.get $26 - i32.store16 - end - local.get $15 - return - end - br $continue|0 - end - end - end - block $break|3 - loop $continue|3 - i32.const 1 - if - local.get $13 - i64.const 10 - i64.mul - local.set $13 - local.get $5 - i64.const 10 - i64.mul - local.set $5 - local.get $13 - local.get $7 - i64.extend_i32_s - i64.shr_u - local.set $19 - local.get $19 - local.get $15 - i64.extend_i32_s - i64.or - i64.const 0 - i64.ne - if - local.get $0 - block (result i32) - local.get $15 - local.tee $17 - i32.const 1 - i32.add - local.set $15 - local.get $17 - end - i32.const 1 - i32.shl - i32.add - i32.const 48 - local.get $19 - i32.wrap_i64 - i32.const 65535 - i32.and - i32.add - i32.store16 - end - local.get $13 - local.get $9 - i64.and - local.set $13 - local.get $14 + local.set $3 + local.get $6 i32.const 1 i32.sub - local.set $14 - local.get $13 - local.get $5 - i64.lt_u - if - global.get $~lib/util/number/_K - local.get $14 - i32.add - global.set $~lib/util/number/_K - local.get $10 - local.get $16 + i32.const 1 + i32.shl + local.get $0 + i32.add + local.tee $2 + i32.load16_u + local.set $4 + loop $continue|2 + local.get $5 + local.get $1 + i64.sub + local.get $3 + i64.ge_u i32.const 0 - local.get $14 - i32.sub - i32.const 2 - i32.shl - i32.add - i64.load32_u - i64.mul - local.set $10 - block $~lib/util/number/grisuRound|inlined.1 - local.get $0 - local.set $26 - local.get $15 - local.set $17 - local.get $5 - local.set $24 - local.get $13 - local.set $23 - local.get $8 - local.set $22 - local.get $10 - local.set $21 - local.get $26 - local.get $17 + local.get $1 + local.get $9 + i64.lt_u + select + if (result i32) + i32.const 1 + local.get $9 + local.get $1 + i64.sub + local.get $1 + local.get $3 + i64.add + local.get $9 + i64.sub + i64.gt_u + local.get $1 + local.get $3 + i64.add + local.get $9 + i64.lt_u + select + else + i32.const 0 + end + if + local.get $4 i32.const 1 i32.sub - i32.const 1 - i32.shl - i32.add - local.set $25 - local.get $25 - i32.load16_u - local.set $18 - block $break|4 - loop $continue|4 - local.get $23 - local.get $21 - i64.lt_u - if (result i32) - local.get $24 - local.get $23 - i64.sub - local.get $22 - i64.ge_u - else - i32.const 0 - end - if (result i32) - local.get $23 - local.get $22 - i64.add - local.get $21 - i64.lt_u - if (result i32) - i32.const 1 - else - local.get $21 - local.get $23 - i64.sub - local.get $23 - local.get $22 - i64.add - local.get $21 - i64.sub - i64.gt_u - end - else - i32.const 0 - end - if - local.get $18 - i32.const 1 - i32.sub - local.set $18 - local.get $23 - local.get $22 - i64.add - local.set $23 - br $continue|4 - end - end - end - local.get $25 - local.get $18 - i32.store16 + local.set $4 + local.get $1 + local.get $3 + i64.add + local.set $1 + br $continue|2 end - local.get $15 - return end - br $continue|3 + local.get $2 + local.get $4 + i32.store16 + local.get $6 + return end + br $continue|0 end end - local.get $15 + loop $continue|3 (result i32) + local.get $5 + i64.const 10 + i64.mul + local.set $5 + local.get $11 + i64.const 10 + i64.mul + local.tee $3 + local.get $12 + i64.extend_i32_s + i64.shr_u + local.tee $1 + local.get $6 + i64.extend_i32_s + i64.or + i64.const 0 + i64.ne + if + local.get $6 + local.tee $2 + i32.const 1 + i32.add + local.set $6 + local.get $2 + i32.const 1 + i32.shl + local.get $0 + i32.add + local.get $1 + i32.wrap_i64 + i32.const 65535 + i32.and + i32.const 48 + i32.add + i32.store16 + end + local.get $4 + i32.const 1 + i32.sub + local.set $4 + local.get $3 + local.get $14 + i64.and + local.tee $11 + local.get $5 + i64.ge_u + br_if $continue|3 + global.get $~lib/util/number/_K + local.get $4 + i32.add + global.set $~lib/util/number/_K + local.get $11 + local.set $1 + i32.const 0 + local.get $4 + i32.sub + i32.const 2 + i32.shl + local.get $13 + i32.add + i64.load32_u + local.get $9 + i64.mul + local.set $3 + local.get $6 + i32.const 1 + i32.sub + i32.const 1 + i32.shl + local.get $0 + i32.add + local.tee $2 + i32.load16_u + local.set $4 + loop $continue|4 + local.get $5 + local.get $1 + i64.sub + local.get $10 + i64.ge_u + i32.const 0 + local.get $1 + local.get $3 + i64.lt_u + select + if (result i32) + i32.const 1 + local.get $3 + local.get $1 + i64.sub + local.get $1 + local.get $10 + i64.add + local.get $3 + i64.sub + i64.gt_u + local.get $1 + local.get $10 + i64.add + local.get $3 + i64.lt_u + select + else + i32.const 0 + end + if + local.get $4 + i32.const 1 + i32.sub + local.set $4 + local.get $1 + local.get $10 + i64.add + local.set $1 + br $continue|4 + end + end + local.get $2 + local.get $4 + i32.store16 + local.get $6 + end ) - (func $~lib/util/number/prettify (; 242 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/util/number/prettify (; 161 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) - (local $10 i32) - (local $11 i32) local.get $2 i32.eqz if - local.get $0 local.get $1 i32.const 1 i32.shl + local.get $0 i32.add - i32.const 46 - i32.const 48 - i32.const 16 - i32.shl - i32.or + i32.const 3145774 i32.store local.get $1 i32.const 2 @@ -12109,11 +8289,10 @@ return end local.get $1 + local.get $1 local.get $2 i32.add - local.set $3 - local.get $1 - local.get $3 + local.tee $3 i32.le_s if (result i32) local.get $3 @@ -12122,69 +8301,56 @@ else i32.const 0 end - if - block $break|0 - local.get $1 - local.set $4 - loop $repeat|0 - local.get $4 + if (result i32) + loop $repeat|0 + block $break|0 + local.get $1 local.get $3 - i32.lt_s - i32.eqz + i32.ge_s br_if $break|0 - local.get $0 - local.get $4 + local.get $1 i32.const 1 i32.shl + local.get $0 i32.add i32.const 48 i32.store16 - local.get $4 + local.get $1 i32.const 1 i32.add - local.set $4 + local.set $1 br $repeat|0 - unreachable end - unreachable end - local.get $0 local.get $3 i32.const 1 i32.shl + local.get $0 i32.add - i32.const 46 - i32.const 48 - i32.const 16 - i32.shl - i32.or + i32.const 3145774 i32.store local.get $3 i32.const 2 i32.add - return else + local.get $3 + i32.const 21 + i32.le_s + i32.const 0 local.get $3 i32.const 0 i32.gt_s + select if (result i32) - local.get $3 - i32.const 21 - i32.le_s - else - i32.const 0 - end - if - local.get $0 local.get $3 i32.const 1 i32.shl + local.get $0 i32.add - local.set $4 - local.get $4 + local.tee $0 i32.const 2 i32.add - local.get $4 + local.get $0 i32.const 0 local.get $2 i32.sub @@ -12192,36 +8358,28 @@ i32.shl call $~lib/memory/memory.copy local.get $0 - local.get $3 - i32.const 1 - i32.shl - i32.add i32.const 46 i32.store16 local.get $1 i32.const 1 i32.add - return else + local.get $3 + i32.const 0 + i32.le_s + i32.const 0 i32.const -6 local.get $3 i32.lt_s + select if (result i32) - local.get $3 - i32.const 0 - i32.le_s - else - i32.const 0 - end - if i32.const 2 local.get $3 i32.sub - local.set $4 - local.get $0 - local.get $4 + local.tee $3 i32.const 1 i32.shl + local.get $0 i32.add local.get $0 local.get $1 @@ -12229,111 +8387,87 @@ i32.shl call $~lib/memory/memory.copy local.get $0 - i32.const 48 - i32.const 46 - i32.const 16 - i32.shl - i32.or + i32.const 3014704 i32.store - block $break|1 - i32.const 2 - local.set $5 - loop $repeat|1 - local.get $5 - local.get $4 - i32.lt_s - i32.eqz + i32.const 2 + local.set $2 + loop $repeat|1 + block $break|1 + local.get $2 + local.get $3 + i32.ge_s br_if $break|1 - local.get $0 - local.get $5 + local.get $2 i32.const 1 i32.shl + local.get $0 i32.add i32.const 48 i32.store16 - local.get $5 + local.get $2 i32.const 1 i32.add - local.set $5 + local.set $2 br $repeat|1 - unreachable end - unreachable end local.get $1 - local.get $4 + local.get $3 i32.add - return else local.get $1 i32.const 1 i32.eq - if + if (result i32) local.get $0 i32.const 101 i32.store16 offset=2 - block $~lib/util/number/genExponent|inlined.0 (result i32) - local.get $0 - i32.const 4 - i32.add - local.set $5 + local.get $0 + i32.const 4 + i32.add + local.tee $0 + block (result i32) local.get $3 i32.const 1 i32.sub - local.set $4 - local.get $4 + local.tee $1 i32.const 0 i32.lt_s - local.set $6 - local.get $6 + local.tee $2 if i32.const 0 - local.get $4 + local.get $1 i32.sub - local.set $4 + local.set $1 end - local.get $4 - call $~lib/util/number/decimalCount32 - i32.const 1 - i32.add - local.set $7 - block $~lib/util/number/utoa32_core|inlined.4 - local.get $5 - local.set $10 - local.get $4 - local.set $9 - local.get $7 - local.set $8 - local.get $10 - local.get $9 - local.get $8 - call $~lib/util/number/utoa32_lut - end - local.get $5 - i32.const 45 - i32.const 43 - local.get $6 - select - i32.store16 - local.get $7 + local.get $1 end - local.set $1 + local.get $1 + call $~lib/util/number/decimalCount32 + i32.const 1 + i32.add + local.tee $1 + call $~lib/util/number/utoa32_lut + local.get $0 + i32.const 45 + i32.const 43 + local.get $2 + select + i32.store16 local.get $1 i32.const 2 i32.add - return else - local.get $1 - i32.const 1 - i32.shl - local.set $7 local.get $0 i32.const 4 i32.add local.get $0 i32.const 2 i32.add - local.get $7 + local.get $1 + i32.const 1 + i32.shl + local.tee $2 i32.const 2 i32.sub call $~lib/memory/memory.copy @@ -12341,516 +8475,344 @@ i32.const 46 i32.store16 offset=2 local.get $0 - local.get $7 + local.get $2 i32.add + local.tee $0 i32.const 101 i32.store16 offset=2 - local.get $1 - block $~lib/util/number/genExponent|inlined.1 (result i32) - local.get $0 - local.get $7 - i32.add - i32.const 4 - i32.add - local.set $4 + local.get $0 + i32.const 4 + i32.add + local.tee $2 + block (result i32) local.get $3 i32.const 1 i32.sub - local.set $6 - local.get $6 + local.tee $0 i32.const 0 i32.lt_s - local.set $5 - local.get $5 + local.tee $3 if i32.const 0 - local.get $6 + local.get $0 i32.sub - local.set $6 + local.set $0 end - local.get $6 - call $~lib/util/number/decimalCount32 - i32.const 1 - i32.add - local.set $8 - block $~lib/util/number/utoa32_core|inlined.5 - local.get $4 - local.set $11 - local.get $6 - local.set $10 - local.get $8 - local.set $9 - local.get $11 - local.get $10 - local.get $9 - call $~lib/util/number/utoa32_lut - end - local.get $4 - i32.const 45 - i32.const 43 - local.get $5 - select - i32.store16 - local.get $8 + local.get $0 end + local.get $0 + call $~lib/util/number/decimalCount32 + i32.const 1 i32.add - local.set $1 + local.tee $0 + call $~lib/util/number/utoa32_lut + local.get $2 + i32.const 45 + i32.const 43 + local.get $3 + select + i32.store16 + local.get $0 local.get $1 + i32.add i32.const 2 i32.add - return end - unreachable end - unreachable end - unreachable end - unreachable - unreachable ) - (func $~lib/util/number/dtoa_core (; 243 ;) (type $FUNCSIG$iid) (param $0 i32) (param $1 f64) (result i32) - (local $2 i32) - (local $3 f64) - (local $4 i32) - (local $5 i32) + (func $~lib/util/number/dtoa_core (; 162 ;) (type $FUNCSIG$iid) (param $0 i32) (param $1 f64) (result i32) + (local $2 i64) + (local $3 i32) + (local $4 i64) + (local $5 i64) (local $6 i64) (local $7 i32) (local $8 i64) (local $9 i64) - (local $10 i64) + (local $10 i32) (local $11 i32) - (local $12 i64) - (local $13 i32) - (local $14 i32) - (local $15 i32) - (local $16 f64) - (local $17 i64) - (local $18 i64) - (local $19 i64) - (local $20 i64) - (local $21 i64) - (local $22 i64) - (local $23 i64) - (local $24 i64) - (local $25 i64) - (local $26 i32) - (local $27 i64) - (local $28 i32) local.get $1 f64.const 0 f64.lt - local.set $2 - local.get $2 + local.tee $10 if - local.get $1 - f64.neg - local.set $1 local.get $0 i32.const 45 i32.store16 - end - block $~lib/util/number/grisu2|inlined.0 (result i32) local.get $1 - local.set $3 - local.get $0 - local.set $5 - local.get $2 - local.set $4 - local.get $3 - i64.reinterpret_f64 - local.set $6 - local.get $6 - i64.const 9218868437227405312 - i64.and - i64.const 52 - i64.shr_u - i32.wrap_i64 - local.set $7 - local.get $6 - i64.const 4503599627370495 - i64.and - local.set $8 - local.get $7 - i32.const 0 - i32.ne - i64.extend_i32_u - i64.const 52 - i64.shl - local.get $8 - i64.add - local.set $9 - local.get $7 - i32.const 1 - local.get $7 - i32.const 0 - i32.ne - select - i32.const 1023 - i32.const 52 - i32.add - i32.sub - local.set $7 - block $~lib/util/number/normalizedBoundaries|inlined.0 - local.get $9 - local.set $10 - local.get $7 - local.set $11 - local.get $10 - i64.const 1 - i64.shl - i64.const 1 - i64.add - local.set $12 - local.get $11 - i32.const 1 - i32.sub - local.set $13 - local.get $12 - i64.clz - i32.wrap_i64 - local.set $14 - local.get $12 - local.get $14 - i64.extend_i32_s - i64.shl - local.set $12 - local.get $13 - local.get $14 - i32.sub - local.set $13 - i32.const 1 - local.get $10 - i64.const 4503599627370496 - i64.eq - i32.add - local.set $15 - local.get $12 - global.set $~lib/util/number/_frc_plus - local.get $10 - local.get $15 - i64.extend_i32_s - i64.shl - i64.const 1 - i64.sub - local.get $11 - local.get $15 - i32.sub - local.get $13 - i32.sub - i64.extend_i32_s - i64.shl - global.set $~lib/util/number/_frc_minus - local.get $13 - global.set $~lib/util/number/_exp - end - block $~lib/util/number/getCachedPower|inlined.0 - global.get $~lib/util/number/_exp - local.set $15 - i32.const -61 - local.get $15 - i32.sub - f64.convert_i32_s - f64.const 0.30102999566398114 - f64.mul - f64.const 347 - f64.add - local.set $16 - local.get $16 - i32.trunc_f64_s - local.set $14 - local.get $14 - local.get $14 - f64.convert_i32_s - local.get $16 - f64.ne - i32.add - local.set $14 - local.get $14 - i32.const 3 - i32.shr_s - i32.const 1 - i32.add - local.set $13 - i32.const 348 - local.get $13 - i32.const 3 - i32.shl - i32.sub - global.set $~lib/util/number/_K - i32.const 6224 - local.get $13 - call $~lib/array/Array#__unchecked_get - global.set $~lib/util/number/_frc_pow - i32.const 6448 - local.get $13 - call $~lib/array/Array#__unchecked_get - global.set $~lib/util/number/_exp_pow - end - local.get $9 - i64.clz - i32.wrap_i64 - local.set $13 - local.get $9 - local.get $13 - i64.extend_i32_s - i64.shl - local.set $9 - local.get $7 - local.get $13 - i32.sub - local.set $7 - global.get $~lib/util/number/_frc_pow - local.set $12 - global.get $~lib/util/number/_exp_pow - local.set $14 - block $~lib/util/number/umul64f|inlined.0 (result i64) - local.get $9 - local.set $17 - local.get $12 - local.set $10 - local.get $17 - i64.const 4294967295 - i64.and - local.set $18 - local.get $10 - i64.const 4294967295 - i64.and - local.set $19 - local.get $17 - i64.const 32 - i64.shr_u - local.set $20 - local.get $10 - i64.const 32 - i64.shr_u - local.set $21 - local.get $18 - local.get $19 - i64.mul - local.set $22 - local.get $20 - local.get $19 - i64.mul - local.get $22 - i64.const 32 - i64.shr_u - i64.add - local.set $23 - local.get $18 - local.get $21 - i64.mul - local.get $23 - i64.const 4294967295 - i64.and - i64.add - local.set $24 - local.get $24 - i64.const 2147483647 - i64.add - local.set $24 - local.get $23 - i64.const 32 - i64.shr_u - local.set $23 - local.get $24 - i64.const 32 - i64.shr_u - local.set $24 - local.get $20 - local.get $21 - i64.mul - local.get $23 - i64.add - local.get $24 - i64.add - end - local.set $24 - block $~lib/util/number/umul64e|inlined.0 (result i32) - local.get $7 - local.set $11 - local.get $14 - local.set $15 - local.get $11 - local.get $15 - i32.add - i32.const 64 - i32.add - end - local.set $15 - block $~lib/util/number/umul64f|inlined.1 (result i64) - global.get $~lib/util/number/_frc_plus - local.set $22 - local.get $12 - local.set $23 - local.get $22 - i64.const 4294967295 - i64.and - local.set $21 - local.get $23 - i64.const 4294967295 - i64.and - local.set $20 - local.get $22 - i64.const 32 - i64.shr_u - local.set $19 - local.get $23 - i64.const 32 - i64.shr_u - local.set $18 - local.get $21 - local.get $20 - i64.mul - local.set $10 - local.get $19 - local.get $20 - i64.mul - local.get $10 - i64.const 32 - i64.shr_u - i64.add - local.set $17 - local.get $21 - local.get $18 - i64.mul - local.get $17 - i64.const 4294967295 - i64.and - i64.add - local.set $25 - local.get $25 - i64.const 2147483647 - i64.add - local.set $25 - local.get $17 - i64.const 32 - i64.shr_u - local.set $17 - local.get $25 - i64.const 32 - i64.shr_u - local.set $25 - local.get $19 - local.get $18 - i64.mul - local.get $17 - i64.add - local.get $25 - i64.add - end - i64.const 1 - i64.sub - local.set $25 - block $~lib/util/number/umul64e|inlined.1 (result i32) - global.get $~lib/util/number/_exp - local.set $26 - local.get $14 - local.set $11 - local.get $26 - local.get $11 - i32.add - i32.const 64 - i32.add - end - local.set $11 - block $~lib/util/number/umul64f|inlined.2 (result i64) - global.get $~lib/util/number/_frc_minus - local.set $10 - local.get $12 - local.set $17 - local.get $10 - i64.const 4294967295 - i64.and - local.set $18 - local.get $17 - i64.const 4294967295 - i64.and - local.set $19 - local.get $10 - i64.const 32 - i64.shr_u - local.set $20 - local.get $17 - i64.const 32 - i64.shr_u - local.set $21 - local.get $18 - local.get $19 - i64.mul - local.set $23 - local.get $20 - local.get $19 - i64.mul - local.get $23 - i64.const 32 - i64.shr_u - i64.add - local.set $22 - local.get $18 - local.get $21 - i64.mul - local.get $22 - i64.const 4294967295 - i64.and - i64.add - local.set $27 - local.get $27 - i64.const 2147483647 - i64.add - local.set $27 - local.get $22 - i64.const 32 - i64.shr_u - local.set $22 - local.get $27 - i64.const 32 - i64.shr_u - local.set $27 - local.get $20 - local.get $21 - i64.mul - local.get $22 - i64.add - local.get $27 - i64.add - end - i64.const 1 - i64.add - local.set $27 - local.get $25 - local.get $27 - i64.sub - local.set $22 - local.get $5 - local.get $24 - local.get $15 - local.get $25 - local.get $11 - local.get $22 - local.get $4 - call $~lib/util/number/genDigits + f64.neg + local.set $1 end - local.set $28 - local.get $0 + local.get $1 + i64.reinterpret_f64 + local.tee $2 + i64.const 9218868437227405312 + i64.and + i64.const 52 + i64.shr_u + i32.wrap_i64 + local.tee $11 + i32.const 0 + i32.ne + local.set $7 local.get $2 + i64.const 4503599627370495 + i64.and + local.get $7 + i64.extend_i32_u + i64.const 52 + i64.shl + i64.add + local.tee $5 + i64.const 1 + i64.shl + i64.const 1 + i64.add + local.tee $2 + i64.clz + i32.wrap_i64 + local.set $3 + local.get $2 + local.get $3 + i64.extend_i32_s + i64.shl + global.set $~lib/util/number/_frc_plus + local.get $11 + i32.const 1 + local.get $7 + select + i32.const 1075 + i32.sub + local.tee $7 + i32.const 1 + i32.sub + local.get $3 + i32.sub + local.set $3 + local.get $5 + local.get $5 + i64.const 4503599627370496 + i64.eq + i32.const 1 + i32.add + local.tee $11 + i64.extend_i32_s + i64.shl + i64.const 1 + i64.sub + local.get $7 + local.get $11 + i32.sub + local.get $3 + i32.sub + i64.extend_i32_s + i64.shl + global.set $~lib/util/number/_frc_minus + local.get $3 + global.set $~lib/util/number/_exp + i32.const 348 + i32.const -61 + global.get $~lib/util/number/_exp + i32.sub + f64.convert_i32_s + f64.const 0.30102999566398114 + f64.mul + f64.const 347 + f64.add + local.tee $1 + i32.trunc_f64_s + local.tee $3 + local.get $3 + f64.convert_i32_s + local.get $1 + f64.ne + i32.add + i32.const 3 + i32.shr_s + i32.const 1 + i32.add + local.tee $3 + i32.const 3 + i32.shl + i32.sub + global.set $~lib/util/number/_K + i32.const 6228 + i32.load + local.get $3 + i32.const 3 + i32.shl + i32.add + i64.load + global.set $~lib/util/number/_frc_pow + i32.const 6452 + i32.load + local.get $3 i32.const 1 i32.shl i32.add - local.get $28 + i32.load16_s + global.set $~lib/util/number/_exp_pow + global.get $~lib/util/number/_frc_pow + local.tee $6 + i64.const 4294967295 + i64.and + local.set $2 + global.get $~lib/util/number/_frc_plus + local.tee $8 + i64.const 4294967295 + i64.and + local.tee $4 + local.get $6 + i64.const 32 + i64.shr_u + local.tee $6 + i64.mul + local.get $8 + i64.const 32 + i64.shr_u + local.tee $8 local.get $2 + i64.mul + local.get $2 + local.get $4 + i64.mul + i64.const 32 + i64.shr_u + i64.add + local.tee $4 + i64.const 4294967295 + i64.and + i64.add + i64.const 2147483647 + i64.add + i64.const 32 + i64.shr_u + local.get $6 + local.get $8 + i64.mul + local.get $4 + i64.const 32 + i64.shr_u + i64.add + i64.add + i64.const 1 + i64.sub + local.tee $8 + local.get $6 + global.get $~lib/util/number/_frc_minus + local.tee $4 + i64.const 4294967295 + i64.and + local.tee $9 + i64.mul + local.get $4 + i64.const 32 + i64.shr_u + local.tee $4 + local.get $2 + i64.mul + local.get $2 + local.get $9 + i64.mul + i64.const 32 + i64.shr_u + i64.add + local.tee $9 + i64.const 4294967295 + i64.and + i64.add + i64.const 2147483647 + i64.add + i64.const 32 + i64.shr_u + local.get $4 + local.get $6 + i64.mul + local.get $9 + i64.const 32 + i64.shr_u + i64.add + i64.add + i64.const 1 + i64.add + i64.sub + local.set $4 + local.get $10 + i32.const 1 + i32.shl + local.get $0 + i32.add + local.get $0 + local.get $6 + local.get $5 + local.get $5 + i64.clz + i32.wrap_i64 + local.tee $0 + i64.extend_i32_s + i64.shl + local.tee $5 + i64.const 4294967295 + i64.and + local.tee $9 + i64.mul + local.get $5 + i64.const 32 + i64.shr_u + local.tee $5 + local.get $2 + i64.mul + local.get $2 + local.get $9 + i64.mul + i64.const 32 + i64.shr_u + i64.add + local.tee $2 + i64.const 4294967295 + i64.and + i64.add + i64.const 2147483647 + i64.add + i64.const 32 + i64.shr_u + local.get $5 + local.get $6 + i64.mul + local.get $2 + i64.const 32 + i64.shr_u + i64.add + i64.add + global.get $~lib/util/number/_exp_pow + local.tee $3 + local.get $7 + local.get $0 + i32.sub + i32.add + i32.const -64 + i32.sub + local.get $8 + global.get $~lib/util/number/_exp + local.get $3 + i32.add + i32.const -64 + i32.sub + local.get $4 + local.get $10 + call $~lib/util/number/genDigits + local.get $10 i32.sub global.get $~lib/util/number/_K call $~lib/util/number/prettify - local.set $28 - local.get $28 - local.get $2 + local.get $10 i32.add ) - (func $~lib/util/number/dtoa (; 244 ;) (type $FUNCSIG$id) (param $0 f64) (result i32) + (func $~lib/util/number/dtoa (; 163 ;) (type $FUNCSIG$id) (param $0 f64) (result i32) (local $1 i32) (local $2 i32) - (local $3 i32) local.get $0 f64.const 0 f64.eq @@ -12860,11 +8822,14 @@ return end local.get $0 - call $~lib/builtins/isFinite - i32.eqz + local.get $0 + f64.sub + f64.const 0 + f64.ne if local.get $0 - call $~lib/builtins/isNaN + local.get $0 + f64.ne if i32.const 5416 call $~lib/rt/purerc/__retain @@ -12879,17 +8844,13 @@ call $~lib/rt/purerc/__retain return end - i32.const 28 - i32.const 1 - i32.shl + i32.const 56 i32.const 16 call $~lib/rt/tlsf/__alloc - local.set $1 - local.get $1 + local.tee $1 local.get $0 call $~lib/util/number/dtoa_core - local.set $2 - local.get $2 + local.tee $2 i32.const 28 i32.eq if @@ -12898,21 +8859,19 @@ return end local.get $1 - i32.const 0 local.get $2 call $~lib/string/String#substring - local.set $3 + local.set $2 local.get $1 call $~lib/rt/tlsf/__free - local.get $3 + local.get $2 ) - (func $~lib/util/number/dtoa_stream (; 245 ;) (type $FUNCSIG$iiid) (param $0 i32) (param $1 i32) (param $2 f64) (result i32) + (func $~lib/util/number/dtoa_stream (; 164 ;) (type $FUNCSIG$iiid) (param $0 i32) (param $1 i32) (param $2 f64) (result i32) (local $3 i32) - (local $4 i32) - local.get $0 local.get $1 i32.const 1 i32.shl + local.get $0 i32.add local.set $0 local.get $2 @@ -12932,11 +8891,14 @@ return end local.get $2 - call $~lib/builtins/isFinite - i32.eqz + local.get $2 + f64.sub + f64.const 0 + f64.ne if local.get $2 - call $~lib/builtins/isNaN + local.get $2 + f64.ne if local.get $0 i32.const 78 @@ -12953,199 +8915,165 @@ local.get $2 f64.const 0 f64.lt - local.set $3 + local.tee $3 i32.const 8 - local.get $3 i32.add - local.set $4 + local.set $1 local.get $0 i32.const 5440 i32.const 5480 local.get $3 select - local.get $4 + local.get $1 i32.const 1 i32.shl call $~lib/memory/memory.copy - local.get $4 + local.get $1 return end unreachable - unreachable end local.get $0 local.get $2 call $~lib/util/number/dtoa_core ) - (func $~lib/array/Array#join_flt (; 246 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array#join_flt (; 165 ;) (type $FUNCSIG$ii) (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 $10 f64) - local.get $1 + i32.const 5368 call $~lib/rt/purerc/__retain drop local.get $0 i32.load offset=12 i32.const 1 i32.sub - local.set $2 - local.get $2 + local.tee $2 i32.const 0 i32.lt_s if i32.const 4272 call $~lib/rt/purerc/__retain - local.set $3 - local.get $1 + local.set $0 + i32.const 5368 call $~lib/rt/purerc/__release - local.get $3 + local.get $0 return end local.get $0 i32.load offset=4 - local.set $4 + local.set $3 local.get $2 i32.eqz if - local.get $4 + local.get $3 f64.load call $~lib/util/number/dtoa - local.tee $3 + local.tee $0 call $~lib/rt/purerc/__retain - local.set $5 - local.get $3 + local.set $1 + local.get $0 + call $~lib/rt/purerc/__release + i32.const 5368 call $~lib/rt/purerc/__release local.get $1 - call $~lib/rt/purerc/__release - local.get $5 return end - local.get $1 - call $~lib/string/String#get:length - local.set $6 + i32.const 5364 + i32.load + i32.const 1 + i32.shr_u + local.tee $4 i32.const 28 - local.get $6 i32.add local.get $2 i32.mul i32.const 28 i32.add - local.set $7 - local.get $7 + local.tee $6 i32.const 1 i32.shl i32.const 16 call $~lib/rt/tlsf/__alloc call $~lib/rt/purerc/__retain - local.set $8 + local.set $1 i32.const 0 - local.set $9 - block $break|0 - i32.const 0 - local.set $3 - loop $repeat|0 - local.get $3 - local.get $2 - i32.lt_s - i32.eqz - br_if $break|0 - local.get $4 - local.get $3 + local.set $0 + loop $repeat|0 + local.get $5 + local.get $2 + i32.lt_s + if + local.get $1 + local.get $0 + local.get $5 i32.const 3 i32.shl + local.get $3 i32.add f64.load - local.set $10 - local.get $9 - local.get $8 - local.get $9 - local.get $10 call $~lib/util/number/dtoa_stream + local.get $0 i32.add - local.set $9 - local.get $6 + local.set $0 + local.get $4 if - local.get $8 - local.get $9 + local.get $0 i32.const 1 i32.shl - i32.add local.get $1 - local.get $6 + i32.add + i32.const 5368 + local.get $4 i32.const 1 i32.shl call $~lib/memory/memory.copy - local.get $9 - local.get $6 + local.get $0 + local.get $4 i32.add - local.set $9 + local.set $0 end - local.get $3 + local.get $5 i32.const 1 i32.add - local.set $3 + local.set $5 br $repeat|0 - unreachable end - unreachable end - local.get $4 + local.get $6 + local.get $1 + local.get $0 local.get $2 i32.const 3 i32.shl + local.get $3 i32.add f64.load - local.set $10 - local.get $9 - local.get $8 - local.get $9 - local.get $10 call $~lib/util/number/dtoa_stream + local.get $0 i32.add - local.set $9 - local.get $7 - local.get $9 + local.tee $0 i32.gt_s if - local.get $8 - i32.const 0 - local.get $9 + local.get $1 + local.get $0 call $~lib/string/String#substring - local.set $3 + local.set $0 + i32.const 5368 + call $~lib/rt/purerc/__release local.get $1 call $~lib/rt/purerc/__release - local.get $8 - call $~lib/rt/purerc/__release - local.get $3 + local.get $0 return end - local.get $8 - local.set $3 - local.get $1 + i32.const 5368 call $~lib/rt/purerc/__release - local.get $3 + local.get $1 ) - (func $~lib/array/Array#join (; 247 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - local.get $1 - call $~lib/rt/purerc/__retain - drop - local.get $0 - local.get $1 - call $~lib/array/Array#join_flt - local.set $2 - local.get $1 - call $~lib/rt/purerc/__release - local.get $2 - return - ) - (func $~lib/array/Array<~lib/string/String>#join_str (; 248 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array<~lib/string/String>#join_str (; 166 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -13153,8 +9081,6 @@ (local $6 i32) (local $7 i32) (local $8 i32) - (local $9 i32) - (local $10 i32) local.get $1 call $~lib/rt/purerc/__retain drop @@ -13162,441 +9088,377 @@ i32.load offset=12 i32.const 1 i32.sub - local.set $2 - local.get $2 + local.tee $5 i32.const 0 i32.lt_s if i32.const 4272 call $~lib/rt/purerc/__retain - local.set $3 + local.set $0 local.get $1 call $~lib/rt/purerc/__release - local.get $3 + local.get $0 return end local.get $0 i32.load offset=4 - local.set $4 - local.get $2 + local.set $6 + local.get $5 i32.eqz if - local.get $4 + local.get $6 i32.load call $~lib/rt/purerc/__retain - local.set $3 + local.set $0 local.get $1 call $~lib/rt/purerc/__release - local.get $3 + local.get $0 return end local.get $1 - call $~lib/string/String#get:length - local.set $5 - i32.const 0 - local.set $6 - i32.const 0 + i32.const 16 + i32.sub + i32.load offset=12 + i32.const 1 + i32.shr_u local.set $7 - block $break|0 - block - i32.const 0 - local.set $3 + i32.const 0 + local.set $0 + local.get $5 + i32.const 1 + i32.add + local.set $4 + loop $repeat|0 + local.get $2 + local.get $4 + i32.lt_s + if + local.get $2 + i32.const 2 + i32.shl + local.get $6 + i32.add + i32.load + local.get $0 + call $~lib/rt/purerc/__retainRelease + local.tee $0 + if + local.get $0 + i32.const 16 + i32.sub + i32.load offset=12 + i32.const 1 + i32.shr_u + local.get $3 + i32.add + local.set $3 + end local.get $2 i32.const 1 i32.add - local.set $8 - end - loop $repeat|0 - local.get $3 - local.get $8 - i32.lt_s - i32.eqz - br_if $break|0 - local.get $4 - local.get $3 - i32.const 2 - i32.shl - i32.add - i32.load - local.get $7 - call $~lib/rt/purerc/__retainRelease - local.set $7 - local.get $7 - i32.const 0 - i32.ne - if - local.get $6 - local.get $7 - call $~lib/string/String#get:length - i32.add - local.set $6 - end - local.get $3 - i32.const 1 - i32.add - local.set $3 + local.set $2 br $repeat|0 - unreachable end - unreachable end i32.const 0 - local.set $9 - local.get $6 + local.set $2 local.get $5 - local.get $2 + local.get $7 i32.mul + local.get $3 i32.add i32.const 1 i32.shl i32.const 16 call $~lib/rt/tlsf/__alloc call $~lib/rt/purerc/__retain - local.set $10 - block $break|1 - i32.const 0 - local.set $8 - loop $repeat|1 - local.get $8 - local.get $2 - i32.lt_s - i32.eqz - br_if $break|1 + local.set $3 + i32.const 0 + local.set $4 + loop $repeat|1 + local.get $4 + local.get $5 + i32.lt_s + if local.get $4 - local.get $8 i32.const 2 i32.shl + local.get $6 i32.add i32.load - local.get $7 + local.get $0 call $~lib/rt/purerc/__retainRelease - local.set $7 - local.get $7 - i32.const 0 - i32.ne + local.tee $0 if - local.get $7 - call $~lib/string/String#get:length - local.set $3 - local.get $10 - local.get $9 + local.get $2 i32.const 1 i32.shl - i32.add - local.get $7 local.get $3 + i32.add + local.get $0 + local.get $0 + i32.const 16 + i32.sub + i32.load offset=12 + i32.const 1 + i32.shr_u + local.tee $8 i32.const 1 i32.shl call $~lib/memory/memory.copy - local.get $9 - local.get $3 + local.get $2 + local.get $8 i32.add - local.set $9 + local.set $2 end - local.get $5 + local.get $7 if - local.get $10 - local.get $9 + local.get $2 i32.const 1 i32.shl + local.get $3 i32.add local.get $1 - local.get $5 + local.get $7 i32.const 1 i32.shl call $~lib/memory/memory.copy - local.get $9 - local.get $5 + local.get $2 + local.get $7 i32.add - local.set $9 + local.set $2 end - local.get $8 + local.get $4 i32.const 1 i32.add - local.set $8 + local.set $4 br $repeat|1 - unreachable end - unreachable end - local.get $4 - local.get $2 + local.get $5 i32.const 2 i32.shl + local.get $6 i32.add i32.load - local.get $7 + local.get $0 call $~lib/rt/purerc/__retainRelease - local.set $7 - local.get $7 - i32.const 0 - i32.ne + local.tee $0 if - local.get $10 - local.get $9 + local.get $2 i32.const 1 i32.shl + local.get $3 i32.add - local.get $7 - local.get $7 - call $~lib/string/String#get:length + local.get $0 + local.get $0 + i32.const 16 + i32.sub + i32.load offset=12 + i32.const 1 + i32.shr_u i32.const 1 i32.shl call $~lib/memory/memory.copy end - local.get $10 - local.set $8 local.get $1 call $~lib/rt/purerc/__release - local.get $7 + local.get $0 call $~lib/rt/purerc/__release - local.get $8 + local.get $3 ) - (func $~lib/array/Array<~lib/string/String>#join (; 249 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) + (func $~lib/array/Array<~lib/string/String>#join (; 167 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $1 call $~lib/rt/purerc/__retain drop local.get $0 local.get $1 call $~lib/array/Array<~lib/string/String>#join_str - local.set $2 + local.set $0 local.get $1 call $~lib/rt/purerc/__release - local.get $2 - return - ) - (func $std/array/Ref#constructor (; 250 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - local.get $0 - i32.eqz - if - i32.const 0 - i32.const 32 - call $~lib/rt/tlsf/__alloc - call $~lib/rt/purerc/__retain - local.set $0 - end local.get $0 ) - (func $~lib/array/Array#join_ref (; 251 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $std/array/Ref#constructor (; 168 ;) (type $FUNCSIG$i) (result i32) + i32.const 0 + i32.const 32 + call $~lib/rt/tlsf/__alloc + call $~lib/rt/purerc/__retain + ) + (func $~lib/array/Array#join_ref (; 169 ;) (type $FUNCSIG$ii) (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 $1 + i32.const 4536 call $~lib/rt/purerc/__retain drop local.get $0 i32.load offset=12 i32.const 1 i32.sub - local.set $2 - local.get $2 + local.tee $2 i32.const 0 i32.lt_s if i32.const 4272 call $~lib/rt/purerc/__retain - local.set $3 - local.get $1 + local.set $0 + i32.const 4536 call $~lib/rt/purerc/__release - local.get $3 + local.get $0 return end local.get $0 i32.load offset=4 - local.set $4 + local.set $6 local.get $2 i32.eqz if i32.const 6720 call $~lib/rt/purerc/__retain - local.set $3 - local.get $1 + local.set $0 + i32.const 4536 call $~lib/rt/purerc/__release - local.get $3 + local.get $0 return end - local.get $1 - call $~lib/string/String#get:length - local.set $5 + i32.const 4532 + i32.load + i32.const 1 + i32.shr_u + local.tee $3 i32.const 15 - local.get $5 i32.add local.get $2 i32.mul i32.const 15 i32.add - local.set $6 - local.get $6 + local.tee $7 i32.const 1 i32.shl i32.const 16 call $~lib/rt/tlsf/__alloc call $~lib/rt/purerc/__retain - local.set $7 + local.set $1 i32.const 0 - local.set $8 - i32.const 0 - local.set $9 - block $break|0 - i32.const 0 - local.set $3 - loop $repeat|0 - local.get $3 - local.get $2 - i32.lt_s - i32.eqz - br_if $break|0 + local.set $0 + loop $repeat|0 + local.get $4 + local.get $2 + i32.lt_s + if local.get $4 - local.get $3 i32.const 2 i32.shl + local.get $6 i32.add i32.load - local.get $9 + local.get $5 call $~lib/rt/purerc/__retainRelease - local.set $9 - local.get $9 + local.tee $5 if - local.get $7 - local.get $8 + local.get $0 i32.const 1 i32.shl + local.get $1 i32.add i32.const 6720 - i32.const 15 - i32.const 1 - i32.shl + i32.const 30 call $~lib/memory/memory.copy - local.get $8 + local.get $0 i32.const 15 i32.add - local.set $8 - end - local.get $5 - if - local.get $7 - local.get $8 - i32.const 1 - i32.shl - i32.add - local.get $1 - local.get $5 - i32.const 1 - i32.shl - call $~lib/memory/memory.copy - local.get $8 - local.get $5 - i32.add - local.set $8 + local.set $0 end local.get $3 + if + local.get $0 + i32.const 1 + i32.shl + local.get $1 + i32.add + i32.const 4536 + local.get $3 + i32.const 1 + i32.shl + call $~lib/memory/memory.copy + local.get $0 + local.get $3 + i32.add + local.set $0 + end + local.get $4 i32.const 1 i32.add - local.set $3 + local.set $4 br $repeat|0 - unreachable end - unreachable end - local.get $4 - local.get $2 - i32.const 2 - i32.shl - i32.add - i32.load - if + block (result i32) + local.get $2 + i32.const 2 + i32.shl + local.get $6 + i32.add + i32.load + if + local.get $0 + i32.const 1 + i32.shl + local.get $1 + i32.add + i32.const 6720 + i32.const 30 + call $~lib/memory/memory.copy + local.get $0 + i32.const 15 + i32.add + local.set $0 + end local.get $7 - local.get $8 - i32.const 1 - i32.shl - i32.add - i32.const 6720 - i32.const 15 - i32.const 1 - i32.shl - call $~lib/memory/memory.copy - local.get $8 - i32.const 15 - i32.add - local.set $8 + local.get $0 + i32.gt_s end - local.get $6 - local.get $8 - i32.gt_s if - local.get $7 - i32.const 0 - local.get $8 + local.get $1 + local.get $0 call $~lib/string/String#substring - local.set $3 + local.set $0 + i32.const 4536 + call $~lib/rt/purerc/__release local.get $1 call $~lib/rt/purerc/__release - local.get $7 + local.get $5 call $~lib/rt/purerc/__release - local.get $9 - call $~lib/rt/purerc/__release - local.get $3 + local.get $0 return end - local.get $7 - local.set $3 + i32.const 4536 + call $~lib/rt/purerc/__release + local.get $5 + call $~lib/rt/purerc/__release local.get $1 - call $~lib/rt/purerc/__release - local.get $9 - call $~lib/rt/purerc/__release - local.get $3 ) - (func $~lib/array/Array#join (; 252 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - local.get $1 - call $~lib/rt/purerc/__retain - drop - local.get $0 - local.get $1 - call $~lib/array/Array#join_ref - local.set $2 - local.get $1 - call $~lib/rt/purerc/__release - local.get $2 - return - ) - (func $~lib/array/Array#toString (; 253 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/array/Array#toString (; 170 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.const 4536 call $~lib/array/Array#join ) - (func $~lib/util/number/itoa (; 254 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - local.get $0 - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s - call $~lib/util/number/itoa32 - return - ) - (func $~lib/util/number/itoa_stream (; 255 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/util/number/itoa_stream (; 171 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - local.get $0 local.get $1 i32.const 1 i32.shl + local.get $0 i32.add local.set $0 local.get $2 - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s + i32.const 255 + i32.and i32.eqz if local.get $0 @@ -13605,8 +9467,6 @@ i32.const 1 return end - i32.const 0 - local.set $3 local.get $2 i32.const 24 i32.shl @@ -13614,8 +9474,7 @@ i32.shr_s i32.const 0 i32.lt_s - local.set $4 - local.get $4 + local.tee $1 if i32.const 0 local.get $2 @@ -13627,223 +9486,160 @@ i32.shl i32.const 24 i32.shr_s + local.tee $3 call $~lib/util/number/decimalCount32 - local.get $4 + local.get $1 i32.add - local.set $3 - block $~lib/util/number/utoa32_core|inlined.6 - local.get $0 - local.set $7 - local.get $2 - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s - local.set $6 - local.get $3 - local.set $5 - local.get $7 - local.get $6 - local.get $5 - call $~lib/util/number/utoa32_lut - end - local.get $4 + local.set $2 + local.get $0 + local.get $3 + local.get $2 + call $~lib/util/number/utoa32_lut + local.get $1 if local.get $0 i32.const 45 i32.store16 end - local.get $3 + local.get $2 ) - (func $~lib/array/Array#join_int (; 256 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array#join_int (; 172 ;) (type $FUNCSIG$ii) (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 $10 i32) - local.get $1 + i32.const 4536 call $~lib/rt/purerc/__retain drop local.get $0 i32.load offset=12 i32.const 1 i32.sub - local.set $2 - local.get $2 + local.tee $2 i32.const 0 i32.lt_s if i32.const 4272 call $~lib/rt/purerc/__retain - local.set $3 - local.get $1 + local.set $0 + i32.const 4536 call $~lib/rt/purerc/__release - local.get $3 + local.get $0 return end local.get $0 i32.load offset=4 - local.set $4 + local.set $3 local.get $2 i32.eqz if - local.get $4 - i32.load8_s - call $~lib/util/number/itoa - local.tee $3 - call $~lib/rt/purerc/__retain - local.set $5 local.get $3 + i32.load8_s + call $~lib/util/number/itoa32 + local.tee $0 + call $~lib/rt/purerc/__retain + local.set $1 + local.get $0 + call $~lib/rt/purerc/__release + i32.const 4536 call $~lib/rt/purerc/__release local.get $1 - call $~lib/rt/purerc/__release - local.get $5 return end - local.get $1 - call $~lib/string/String#get:length - local.set $6 + i32.const 4532 + i32.load + i32.const 1 + i32.shr_u + local.tee $4 i32.const 11 - local.get $6 i32.add local.get $2 i32.mul i32.const 11 i32.add - local.set $7 - local.get $7 + local.tee $6 i32.const 1 i32.shl i32.const 16 call $~lib/rt/tlsf/__alloc call $~lib/rt/purerc/__retain - local.set $8 + local.set $1 i32.const 0 - local.set $9 - block $break|0 - i32.const 0 - local.set $3 - loop $repeat|0 + local.set $0 + loop $repeat|0 + local.get $5 + local.get $2 + i32.lt_s + if + local.get $1 + local.get $0 local.get $3 - local.get $2 - i32.lt_s - i32.eqz - br_if $break|0 - local.get $4 - local.get $3 - i32.const 0 - i32.shl + local.get $5 i32.add i32.load8_s - local.set $10 - local.get $9 - local.get $8 - local.get $9 - local.get $10 call $~lib/util/number/itoa_stream + local.get $0 i32.add - local.set $9 - local.get $6 + local.set $0 + local.get $4 if - local.get $8 - local.get $9 + local.get $0 i32.const 1 i32.shl - i32.add local.get $1 - local.get $6 + i32.add + i32.const 4536 + local.get $4 i32.const 1 i32.shl call $~lib/memory/memory.copy - local.get $9 - local.get $6 + local.get $0 + local.get $4 i32.add - local.set $9 + local.set $0 end - local.get $3 + local.get $5 i32.const 1 i32.add - local.set $3 + local.set $5 br $repeat|0 - unreachable end - unreachable end - local.get $4 + local.get $6 + local.get $1 + local.get $0 local.get $2 - i32.const 0 - i32.shl + local.get $3 i32.add i32.load8_s - local.set $10 - local.get $9 - local.get $8 - local.get $9 - local.get $10 call $~lib/util/number/itoa_stream + local.get $0 i32.add - local.set $9 - local.get $7 - local.get $9 + local.tee $0 i32.gt_s if - local.get $8 - i32.const 0 - local.get $9 + local.get $1 + local.get $0 call $~lib/string/String#substring - local.set $3 + local.set $0 + i32.const 4536 + call $~lib/rt/purerc/__release local.get $1 call $~lib/rt/purerc/__release - local.get $8 - call $~lib/rt/purerc/__release - local.get $3 + local.get $0 return end - local.get $8 - local.set $3 - local.get $1 - call $~lib/rt/purerc/__release - local.get $3 - ) - (func $~lib/array/Array#join (; 257 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - local.get $1 - call $~lib/rt/purerc/__retain - drop - local.get $0 - local.get $1 - call $~lib/array/Array#join_int - local.set $2 - local.get $1 - call $~lib/rt/purerc/__release - local.get $2 - return - ) - (func $~lib/array/Array#toString (; 258 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - local.get $0 i32.const 4536 - call $~lib/array/Array#join + call $~lib/rt/purerc/__release + local.get $1 ) - (func $~lib/util/number/itoa (; 259 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - local.get $0 - i32.const 65535 - i32.and - call $~lib/util/number/utoa32 - return - ) - (func $~lib/util/number/itoa_stream (; 260 ;) (type $FUNCSIG$iiii) (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 $0 + (func $~lib/util/number/itoa_stream (; 173 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $1 i32.const 1 i32.shl + local.get $0 i32.add local.set $0 local.get $2 @@ -13857,389 +9653,297 @@ i32.const 1 return end - i32.const 0 - local.set $3 local.get $2 i32.const 65535 i32.and + local.tee $2 call $~lib/util/number/decimalCount32 - local.set $3 - block $~lib/util/number/utoa32_core|inlined.7 - local.get $0 - local.set $6 - local.get $2 - i32.const 65535 - i32.and - local.set $5 - local.get $3 - local.set $4 - local.get $6 - local.get $5 - local.get $4 - call $~lib/util/number/utoa32_lut - end - local.get $3 + local.set $1 + local.get $0 + local.get $2 + local.get $1 + call $~lib/util/number/utoa32_lut + local.get $1 ) - (func $~lib/array/Array#join_int (; 261 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array#join_int (; 174 ;) (type $FUNCSIG$ii) (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 $10 i32) - local.get $1 + i32.const 4536 call $~lib/rt/purerc/__retain drop local.get $0 i32.load offset=12 i32.const 1 i32.sub - local.set $2 - local.get $2 + local.tee $2 i32.const 0 i32.lt_s if i32.const 4272 call $~lib/rt/purerc/__retain - local.set $3 - local.get $1 + local.set $0 + i32.const 4536 call $~lib/rt/purerc/__release - local.get $3 + local.get $0 return end local.get $0 i32.load offset=4 - local.set $4 + local.set $3 local.get $2 i32.eqz if - local.get $4 - i32.load16_u - call $~lib/util/number/itoa - local.tee $3 - call $~lib/rt/purerc/__retain - local.set $5 local.get $3 + i32.load16_u + call $~lib/util/number/utoa32 + local.tee $0 + call $~lib/rt/purerc/__retain + local.set $1 + local.get $0 + call $~lib/rt/purerc/__release + i32.const 4536 call $~lib/rt/purerc/__release local.get $1 - call $~lib/rt/purerc/__release - local.get $5 return end - local.get $1 - call $~lib/string/String#get:length - local.set $6 + i32.const 4532 + i32.load + i32.const 1 + i32.shr_u + local.tee $4 i32.const 10 - local.get $6 i32.add local.get $2 i32.mul i32.const 10 i32.add - local.set $7 - local.get $7 + local.tee $6 i32.const 1 i32.shl i32.const 16 call $~lib/rt/tlsf/__alloc call $~lib/rt/purerc/__retain - local.set $8 + local.set $1 i32.const 0 - local.set $9 - block $break|0 - i32.const 0 - local.set $3 - loop $repeat|0 - local.get $3 - local.get $2 - i32.lt_s - i32.eqz - br_if $break|0 - local.get $4 - local.get $3 + local.set $0 + loop $repeat|0 + local.get $5 + local.get $2 + i32.lt_s + if + local.get $1 + local.get $0 + local.get $5 i32.const 1 i32.shl + local.get $3 i32.add i32.load16_u - local.set $10 - local.get $9 - local.get $8 - local.get $9 - local.get $10 call $~lib/util/number/itoa_stream + local.get $0 i32.add - local.set $9 - local.get $6 + local.set $0 + local.get $4 if - local.get $8 - local.get $9 + local.get $0 i32.const 1 i32.shl - i32.add local.get $1 - local.get $6 + i32.add + i32.const 4536 + local.get $4 i32.const 1 i32.shl call $~lib/memory/memory.copy - local.get $9 - local.get $6 + local.get $0 + local.get $4 i32.add - local.set $9 + local.set $0 end - local.get $3 + local.get $5 i32.const 1 i32.add - local.set $3 + local.set $5 br $repeat|0 - unreachable end - unreachable end - local.get $4 + local.get $6 + local.get $1 + local.get $0 local.get $2 i32.const 1 i32.shl + local.get $3 i32.add i32.load16_u - local.set $10 - local.get $9 - local.get $8 - local.get $9 - local.get $10 call $~lib/util/number/itoa_stream + local.get $0 i32.add - local.set $9 - local.get $7 - local.get $9 + local.tee $0 i32.gt_s if - local.get $8 - i32.const 0 - local.get $9 + local.get $1 + local.get $0 call $~lib/string/String#substring - local.set $3 + local.set $0 + i32.const 4536 + call $~lib/rt/purerc/__release local.get $1 call $~lib/rt/purerc/__release - local.get $8 - call $~lib/rt/purerc/__release - local.get $3 + local.get $0 return end - local.get $8 - local.set $3 - local.get $1 - call $~lib/rt/purerc/__release - local.get $3 - ) - (func $~lib/array/Array#join (; 262 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - local.get $1 - call $~lib/rt/purerc/__retain - drop - local.get $0 - local.get $1 - call $~lib/array/Array#join_int - local.set $2 - local.get $1 - call $~lib/rt/purerc/__release - local.get $2 - return - ) - (func $~lib/array/Array#toString (; 263 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - local.get $0 i32.const 4536 - call $~lib/array/Array#join + call $~lib/rt/purerc/__release + local.get $1 ) - (func $~lib/util/number/decimalCount64 (; 264 ;) (type $FUNCSIG$ij) (param $0 i64) (result i32) - (local $1 i32) + (func $~lib/util/number/decimalCount64 (; 175 ;) (type $FUNCSIG$ij) (param $0 i64) (result i32) local.get $0 i64.const 1000000000000000 i64.lt_u - if + if (result i32) local.get $0 i64.const 1000000000000 i64.lt_u - if + if (result i32) i32.const 11 i32.const 12 local.get $0 i64.const 100000000000 i64.lt_u select - return else + i32.const 13 i32.const 14 i32.const 15 local.get $0 i64.const 100000000000000 i64.lt_u select - local.set $1 - i32.const 13 - local.get $1 local.get $0 i64.const 10000000000000 i64.lt_u select - return end - unreachable - unreachable else local.get $0 i64.const 100000000000000000 i64.lt_u - if + if (result i32) i32.const 16 i32.const 17 local.get $0 i64.const 10000000000000000 i64.lt_u select - return else + i32.const 18 i32.const 19 i32.const 20 local.get $0 i64.const -8446744073709551616 i64.lt_u select - local.set $1 - i32.const 18 - local.get $1 local.get $0 i64.const 1000000000000000000 i64.lt_u select - return end - unreachable - unreachable end - unreachable - unreachable ) - (func $~lib/util/number/utoa64_lut (; 265 ;) (type $FUNCSIG$viji) (param $0 i32) (param $1 i64) (param $2 i32) + (func $~lib/util/number/utoa64_lut (; 176 ;) (type $FUNCSIG$viji) (param $0 i32) (param $1 i64) (param $2 i32) (local $3 i32) - (local $4 i64) + (local $4 i32) (local $5 i32) (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) - (local $10 i32) - (local $11 i32) - (local $12 i64) - (local $13 i64) - i32.const 5072 - i32.load offset=4 + i32.const 5076 + i32.load local.set $3 - block $break|0 - loop $continue|0 + loop $continue|0 + local.get $1 + i64.const 100000000 + i64.ge_u + if + local.get $1 local.get $1 i64.const 100000000 - i64.ge_u - if - local.get $1 - i64.const 100000000 - i64.div_u - local.set $4 - local.get $1 - local.get $4 - i64.const 100000000 - i64.mul - i64.sub - i32.wrap_i64 - local.set $5 - local.get $4 - local.set $1 - local.get $5 - i32.const 10000 - i32.div_u - local.set $6 - local.get $5 - i32.const 10000 - i32.rem_u - local.set $7 - local.get $6 - i32.const 100 - i32.div_u - local.set $8 - local.get $6 - i32.const 100 - i32.rem_u - local.set $9 - local.get $7 - i32.const 100 - i32.div_u - local.set $10 - local.get $7 - i32.const 100 - i32.rem_u - local.set $11 - local.get $3 - local.get $10 - i32.const 2 - i32.shl - i32.add - i64.load32_u - local.set $12 - local.get $3 - local.get $11 - i32.const 2 - i32.shl - i32.add - i64.load32_u - local.set $13 - local.get $2 - i32.const 4 - i32.sub - local.set $2 - local.get $0 - local.get $2 - i32.const 1 - i32.shl - i32.add - local.get $12 - local.get $13 - i64.const 32 - i64.shl - i64.or - i64.store - local.get $3 - local.get $8 - i32.const 2 - i32.shl - i32.add - i64.load32_u - local.set $12 - local.get $3 - local.get $9 - i32.const 2 - i32.shl - i32.add - i64.load32_u - local.set $13 - local.get $2 - i32.const 4 - i32.sub - local.set $2 - local.get $0 - local.get $2 - i32.const 1 - i32.shl - i32.add - local.get $12 - local.get $13 - i64.const 32 - i64.shl - i64.or - i64.store - br $continue|0 - end + i64.div_u + local.tee $1 + i64.const 100000000 + i64.mul + i64.sub + i32.wrap_i64 + local.tee $4 + i32.const 10000 + i32.div_u + local.tee $5 + i32.const 100 + i32.div_u + local.set $6 + local.get $5 + i32.const 100 + i32.rem_u + local.set $5 + local.get $2 + i32.const 4 + i32.sub + local.tee $2 + i32.const 1 + i32.shl + local.get $0 + i32.add + local.get $4 + i32.const 10000 + i32.rem_u + local.tee $4 + i32.const 100 + i32.div_u + i32.const 2 + i32.shl + local.get $3 + i32.add + i64.load32_u + local.get $4 + i32.const 100 + i32.rem_u + i32.const 2 + i32.shl + local.get $3 + i32.add + i64.load32_u + i64.const 32 + i64.shl + i64.or + i64.store + local.get $2 + i32.const 4 + i32.sub + local.tee $2 + i32.const 1 + i32.shl + local.get $0 + i32.add + local.get $6 + i32.const 2 + i32.shl + local.get $3 + i32.add + i64.load32_u + local.get $5 + i32.const 2 + i32.shl + local.get $3 + i32.add + i64.load32_u + i64.const 32 + i64.shl + i64.or + i64.store + br $continue|0 end end local.get $0 @@ -14248,14 +9952,10 @@ local.get $2 call $~lib/util/number/utoa32_lut ) - (func $~lib/util/number/utoa64 (; 266 ;) (type $FUNCSIG$ij) (param $0 i64) (result i32) + (func $~lib/util/number/utoa64 (; 177 ;) (type $FUNCSIG$ij) (param $0 i64) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i64) local.get $0 i64.eqz if @@ -14269,70 +9969,39 @@ if local.get $0 i32.wrap_i64 - local.set $2 - local.get $2 + local.tee $1 call $~lib/util/number/decimalCount32 - local.set $3 - local.get $3 + local.tee $3 i32.const 1 i32.shl i32.const 16 call $~lib/rt/tlsf/__alloc - local.set $1 - block $~lib/util/number/utoa32_core|inlined.8 - local.get $1 - local.set $6 - local.get $2 - local.set $5 - local.get $3 - local.set $4 - local.get $6 - local.get $5 - local.get $4 - call $~lib/util/number/utoa32_lut - end + local.tee $2 + local.get $1 + local.get $3 + call $~lib/util/number/utoa32_lut else local.get $0 call $~lib/util/number/decimalCount64 - local.set $3 - local.get $3 + local.tee $1 i32.const 1 i32.shl i32.const 16 call $~lib/rt/tlsf/__alloc - local.set $1 - block $~lib/util/number/utoa64_core|inlined.0 - local.get $1 - local.set $4 - local.get $0 - local.set $7 - local.get $3 - local.set $2 - local.get $4 - local.get $7 - local.get $2 - call $~lib/util/number/utoa64_lut - end + local.tee $2 + local.get $0 + local.get $1 + call $~lib/util/number/utoa64_lut end - local.get $1 + local.get $2 call $~lib/rt/purerc/__retain ) - (func $~lib/util/number/itoa (; 267 ;) (type $FUNCSIG$ij) (param $0 i64) (result i32) - local.get $0 - call $~lib/util/number/utoa64 - return - ) - (func $~lib/util/number/itoa_stream (; 268 ;) (type $FUNCSIG$iiij) (param $0 i32) (param $1 i32) (param $2 i64) (result i32) + (func $~lib/util/number/itoa_stream (; 178 ;) (type $FUNCSIG$iiij) (param $0 i32) (param $1 i32) (param $2 i64) (result i32) (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i64) - local.get $0 local.get $1 i32.const 1 i32.shl + local.get $0 i32.add local.set $0 local.get $2 @@ -14344,330 +10013,239 @@ i32.const 1 return end - i32.const 0 - local.set $3 local.get $2 i64.const 4294967295 i64.le_u if local.get $2 i32.wrap_i64 - local.set $4 - local.get $4 + local.tee $3 call $~lib/util/number/decimalCount32 - local.set $3 - block $~lib/util/number/utoa32_core|inlined.9 - local.get $0 - local.set $7 - local.get $4 - local.set $6 - local.get $3 - local.set $5 - local.get $7 - local.get $6 - local.get $5 - call $~lib/util/number/utoa32_lut - end + local.set $1 + local.get $0 + local.get $3 + local.get $1 + call $~lib/util/number/utoa32_lut else + local.get $0 + local.get $2 local.get $2 call $~lib/util/number/decimalCount64 - local.set $3 - block $~lib/util/number/utoa64_core|inlined.1 - local.get $0 - local.set $5 - local.get $2 - local.set $8 - local.get $3 - local.set $4 - local.get $5 - local.get $8 - local.get $4 - call $~lib/util/number/utoa64_lut - end + local.tee $1 + call $~lib/util/number/utoa64_lut end - local.get $3 + local.get $1 ) - (func $~lib/array/Array#join_int (; 269 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result 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 $10 i64) - local.get $1 - call $~lib/rt/purerc/__retain - drop - local.get $0 - i32.load offset=12 - i32.const 1 - i32.sub - local.set $2 - local.get $2 - i32.const 0 - i32.lt_s - if - i32.const 4272 - call $~lib/rt/purerc/__retain - local.set $3 - local.get $1 - call $~lib/rt/purerc/__release - local.get $3 - return - end - local.get $0 - i32.load offset=4 - local.set $4 - local.get $2 - i32.eqz - if - local.get $4 - i64.load - call $~lib/util/number/itoa - local.tee $3 - call $~lib/rt/purerc/__retain - local.set $5 - local.get $3 - call $~lib/rt/purerc/__release - local.get $1 - call $~lib/rt/purerc/__release - local.get $5 - return - end - local.get $1 - call $~lib/string/String#get:length - local.set $6 - i32.const 20 - local.get $6 - i32.add - local.get $2 - i32.mul - i32.const 20 - i32.add - local.set $7 - local.get $7 - i32.const 1 - i32.shl - i32.const 16 - call $~lib/rt/tlsf/__alloc - call $~lib/rt/purerc/__retain - local.set $8 - i32.const 0 - local.set $9 - block $break|0 - i32.const 0 - local.set $3 - loop $repeat|0 - local.get $3 - local.get $2 - i32.lt_s - i32.eqz - br_if $break|0 - local.get $4 - local.get $3 - i32.const 3 - i32.shl - i32.add - i64.load - local.set $10 - local.get $9 - local.get $8 - local.get $9 - local.get $10 - call $~lib/util/number/itoa_stream - i32.add - local.set $9 - local.get $6 - if - local.get $8 - local.get $9 - i32.const 1 - i32.shl - i32.add - local.get $1 - local.get $6 - i32.const 1 - i32.shl - call $~lib/memory/memory.copy - local.get $9 - local.get $6 - i32.add - local.set $9 - end - local.get $3 - i32.const 1 - i32.add - local.set $3 - br $repeat|0 - unreachable - end - unreachable - end - local.get $4 - local.get $2 - i32.const 3 - i32.shl - i32.add - i64.load - local.set $10 - local.get $9 - local.get $8 - local.get $9 - local.get $10 - call $~lib/util/number/itoa_stream - i32.add - local.set $9 - local.get $7 - local.get $9 - i32.gt_s - if - local.get $8 - i32.const 0 - local.get $9 - call $~lib/string/String#substring - local.set $3 - local.get $1 - call $~lib/rt/purerc/__release - local.get $8 - call $~lib/rt/purerc/__release - local.get $3 - return - end - local.get $8 - local.set $3 - local.get $1 - call $~lib/rt/purerc/__release - local.get $3 - ) - (func $~lib/array/Array#join (; 270 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - local.get $1 - call $~lib/rt/purerc/__retain - drop - local.get $0 - local.get $1 - call $~lib/array/Array#join_int - local.set $2 - local.get $1 - call $~lib/rt/purerc/__release - local.get $2 - return - ) - (func $~lib/array/Array#toString (; 271 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - local.get $0 - i32.const 4536 - call $~lib/array/Array#join - ) - (func $~lib/util/number/itoa64 (; 272 ;) (type $FUNCSIG$ij) (param $0 i64) (result i32) + (func $~lib/array/Array#join_int (; 179 ;) (type $FUNCSIG$ii) (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 i64) + i32.const 4536 + call $~lib/rt/purerc/__retain + drop local.get $0 - i64.eqz + i32.load offset=12 + i32.const 1 + i32.sub + local.tee $2 + i32.const 0 + i32.lt_s if - i32.const 4632 + i32.const 4272 call $~lib/rt/purerc/__retain - return - end - local.get $0 - i64.const 0 - i64.lt_s - local.set $1 - local.get $1 - if - i64.const 0 - local.get $0 - i64.sub local.set $0 + i32.const 4536 + call $~lib/rt/purerc/__release + local.get $0 + return end local.get $0 - i64.const 4294967295 - i64.le_u + i32.load offset=4 + local.set $3 + local.get $2 + i32.eqz + if + local.get $3 + i64.load + call $~lib/util/number/utoa64 + local.tee $0 + call $~lib/rt/purerc/__retain + local.set $1 + local.get $0 + call $~lib/rt/purerc/__release + i32.const 4536 + call $~lib/rt/purerc/__release + local.get $1 + return + end + i32.const 4532 + i32.load + i32.const 1 + i32.shr_u + local.tee $4 + i32.const 20 + i32.add + local.get $2 + i32.mul + i32.const 20 + i32.add + local.tee $6 + i32.const 1 + i32.shl + i32.const 16 + call $~lib/rt/tlsf/__alloc + call $~lib/rt/purerc/__retain + local.set $1 + i32.const 0 + local.set $0 + loop $repeat|0 + local.get $5 + local.get $2 + i32.lt_s + if + local.get $1 + local.get $0 + local.get $5 + i32.const 3 + i32.shl + local.get $3 + i32.add + i64.load + call $~lib/util/number/itoa_stream + local.get $0 + i32.add + local.set $0 + local.get $4 + if + local.get $0 + i32.const 1 + i32.shl + local.get $1 + i32.add + i32.const 4536 + local.get $4 + i32.const 1 + i32.shl + call $~lib/memory/memory.copy + local.get $0 + local.get $4 + i32.add + local.set $0 + end + local.get $5 + i32.const 1 + i32.add + local.set $5 + br $repeat|0 + end + end + local.get $6 + local.get $1 + local.get $0 + local.get $2 + i32.const 3 + i32.shl + local.get $3 + i32.add + i64.load + call $~lib/util/number/itoa_stream + local.get $0 + i32.add + local.tee $0 + i32.gt_s + if + local.get $1 + local.get $0 + call $~lib/string/String#substring + local.set $0 + i32.const 4536 + call $~lib/rt/purerc/__release + local.get $1 + call $~lib/rt/purerc/__release + local.get $0 + return + end + i32.const 4536 + call $~lib/rt/purerc/__release + local.get $1 + ) + (func $~lib/util/number/itoa64 (; 180 ;) (type $FUNCSIG$ij) (param $0 i64) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + local.get $0 + i64.eqz + if + i32.const 4632 + call $~lib/rt/purerc/__retain + return + end + block (result i32) + local.get $0 + i64.const 0 + i64.lt_s + local.tee $1 + if + i64.const 0 + local.get $0 + i64.sub + local.set $0 + end + local.get $0 + i64.const 4294967295 + i64.le_u + end if local.get $0 i32.wrap_i64 - local.set $3 - local.get $3 + local.tee $2 call $~lib/util/number/decimalCount32 local.get $1 i32.add - local.set $4 - local.get $4 + local.tee $4 i32.const 1 i32.shl i32.const 16 call $~lib/rt/tlsf/__alloc - local.set $2 - block $~lib/util/number/utoa32_core|inlined.10 - local.get $2 - local.set $7 - local.get $3 - local.set $6 - local.get $4 - local.set $5 - local.get $7 - local.get $6 - local.get $5 - call $~lib/util/number/utoa32_lut - end + local.tee $3 + local.get $2 + local.get $4 + call $~lib/util/number/utoa32_lut else local.get $0 call $~lib/util/number/decimalCount64 local.get $1 i32.add - local.set $4 - local.get $4 + local.tee $2 i32.const 1 i32.shl i32.const 16 call $~lib/rt/tlsf/__alloc - local.set $2 - block $~lib/util/number/utoa64_core|inlined.2 - local.get $2 - local.set $5 - local.get $0 - local.set $8 - local.get $4 - local.set $3 - local.get $5 - local.get $8 - local.get $3 - call $~lib/util/number/utoa64_lut - end + local.tee $3 + local.get $0 + local.get $2 + call $~lib/util/number/utoa64_lut end local.get $1 if - local.get $2 + local.get $3 i32.const 45 i32.store16 end - local.get $2 + local.get $3 call $~lib/rt/purerc/__retain ) - (func $~lib/util/number/itoa (; 273 ;) (type $FUNCSIG$ij) (param $0 i64) (result i32) - local.get $0 - call $~lib/util/number/itoa64 - return - ) - (func $~lib/util/number/itoa_stream (; 274 ;) (type $FUNCSIG$iiij) (param $0 i32) (param $1 i32) (param $2 i64) (result i32) + (func $~lib/util/number/itoa_stream (; 181 ;) (type $FUNCSIG$iiij) (param $0 i32) (param $1 i32) (param $2 i64) (result i32) (local $3 i32) (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i64) - local.get $0 local.get $1 i32.const 1 i32.shl + local.get $0 i32.add local.set $0 local.get $2 @@ -14679,63 +10257,44 @@ i32.const 1 return end - i32.const 0 - local.set $3 - local.get $2 - i64.const 0 - i64.lt_s - local.set $4 - local.get $4 - if - i64.const 0 + block (result i32) local.get $2 - i64.sub - local.set $2 + i64.const 0 + i64.lt_s + local.tee $1 + if + i64.const 0 + local.get $2 + i64.sub + local.set $2 + end + local.get $2 + i64.const 4294967295 + i64.le_u end - local.get $2 - i64.const 4294967295 - i64.le_u if local.get $2 i32.wrap_i64 - local.set $5 - local.get $5 + local.tee $4 call $~lib/util/number/decimalCount32 - local.get $4 + local.get $1 i32.add local.set $3 - block $~lib/util/number/utoa32_core|inlined.11 - local.get $0 - local.set $8 - local.get $5 - local.set $7 - local.get $3 - local.set $6 - local.get $8 - local.get $7 - local.get $6 - call $~lib/util/number/utoa32_lut - end + local.get $0 + local.get $4 + local.get $3 + call $~lib/util/number/utoa32_lut else + local.get $0 + local.get $2 local.get $2 call $~lib/util/number/decimalCount64 - local.get $4 + local.get $1 i32.add - local.set $3 - block $~lib/util/number/utoa64_core|inlined.3 - local.get $0 - local.set $6 - local.get $2 - local.set $9 - local.get $3 - local.set $5 - local.get $6 - local.get $9 - local.get $5 - call $~lib/util/number/utoa64_lut - end + local.tee $3 + call $~lib/util/number/utoa64_lut end - local.get $4 + local.get $1 if local.get $0 i32.const 45 @@ -14743,602 +10302,298 @@ end local.get $3 ) - (func $~lib/array/Array#join_int (; 275 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array#join_int (; 182 ;) (type $FUNCSIG$ii) (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 $10 i64) - local.get $1 + i32.const 4536 call $~lib/rt/purerc/__retain drop local.get $0 i32.load offset=12 i32.const 1 i32.sub - local.set $2 - local.get $2 + local.tee $2 i32.const 0 i32.lt_s if i32.const 4272 call $~lib/rt/purerc/__retain - local.set $3 - local.get $1 + local.set $0 + i32.const 4536 call $~lib/rt/purerc/__release - local.get $3 + local.get $0 return end local.get $0 i32.load offset=4 - local.set $4 + local.set $3 local.get $2 i32.eqz if - local.get $4 - i64.load - call $~lib/util/number/itoa - local.tee $3 - call $~lib/rt/purerc/__retain - local.set $5 local.get $3 + i64.load + call $~lib/util/number/itoa64 + local.tee $0 + call $~lib/rt/purerc/__retain + local.set $1 + local.get $0 + call $~lib/rt/purerc/__release + i32.const 4536 call $~lib/rt/purerc/__release local.get $1 - call $~lib/rt/purerc/__release - local.get $5 return end - local.get $1 - call $~lib/string/String#get:length - local.set $6 + i32.const 4532 + i32.load + i32.const 1 + i32.shr_u + local.tee $4 i32.const 21 - local.get $6 i32.add local.get $2 i32.mul i32.const 21 i32.add - local.set $7 - local.get $7 + local.tee $6 i32.const 1 i32.shl i32.const 16 call $~lib/rt/tlsf/__alloc call $~lib/rt/purerc/__retain - local.set $8 + local.set $1 i32.const 0 - local.set $9 - block $break|0 - i32.const 0 - local.set $3 - loop $repeat|0 - local.get $3 - local.get $2 - i32.lt_s - i32.eqz - br_if $break|0 - local.get $4 - local.get $3 + local.set $0 + loop $repeat|0 + local.get $5 + local.get $2 + i32.lt_s + if + local.get $1 + local.get $0 + local.get $5 i32.const 3 i32.shl + local.get $3 i32.add i64.load - local.set $10 - local.get $9 - local.get $8 - local.get $9 - local.get $10 call $~lib/util/number/itoa_stream + local.get $0 i32.add - local.set $9 - local.get $6 + local.set $0 + local.get $4 if - local.get $8 - local.get $9 + local.get $0 i32.const 1 i32.shl - i32.add local.get $1 - local.get $6 + i32.add + i32.const 4536 + local.get $4 i32.const 1 i32.shl call $~lib/memory/memory.copy - local.get $9 - local.get $6 + local.get $0 + local.get $4 i32.add - local.set $9 + local.set $0 end - local.get $3 + local.get $5 i32.const 1 i32.add - local.set $3 + local.set $5 br $repeat|0 - unreachable end - unreachable end - local.get $4 + local.get $6 + local.get $1 + local.get $0 local.get $2 i32.const 3 i32.shl + local.get $3 i32.add i64.load - local.set $10 - local.get $9 - local.get $8 - local.get $9 - local.get $10 call $~lib/util/number/itoa_stream + local.get $0 i32.add - local.set $9 - local.get $7 - local.get $9 + local.tee $0 i32.gt_s if - local.get $8 - i32.const 0 - local.get $9 + local.get $1 + local.get $0 call $~lib/string/String#substring - local.set $3 + local.set $0 + i32.const 4536 + call $~lib/rt/purerc/__release local.get $1 call $~lib/rt/purerc/__release - local.get $8 - call $~lib/rt/purerc/__release - local.get $3 + local.get $0 return end - local.get $8 - local.set $3 - local.get $1 - call $~lib/rt/purerc/__release - local.get $3 - ) - (func $~lib/array/Array#join (; 276 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - local.get $1 - call $~lib/rt/purerc/__retain - drop - local.get $0 - local.get $1 - call $~lib/array/Array#join_int - local.set $2 - local.get $1 - call $~lib/rt/purerc/__release - local.get $2 - return - ) - (func $~lib/array/Array#toString (; 277 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - local.get $0 i32.const 4536 - call $~lib/array/Array#join - ) - (func $~lib/array/Array<~lib/string/String | null>#join_str (; 278 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result 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 $10 i32) - local.get $1 - call $~lib/rt/purerc/__retain - drop - local.get $0 - i32.load offset=12 - i32.const 1 - i32.sub - local.set $2 - local.get $2 - i32.const 0 - i32.lt_s - if - i32.const 4272 - call $~lib/rt/purerc/__retain - local.set $3 - local.get $1 - call $~lib/rt/purerc/__release - local.get $3 - return - end - local.get $0 - i32.load offset=4 - local.set $4 - local.get $2 - i32.eqz - if - local.get $4 - i32.load - call $~lib/rt/purerc/__retain - local.set $3 - local.get $1 - call $~lib/rt/purerc/__release - local.get $3 - return - end - local.get $1 - call $~lib/string/String#get:length - local.set $5 - i32.const 0 - local.set $6 - i32.const 0 - local.set $7 - block $break|0 - block - i32.const 0 - local.set $3 - local.get $2 - i32.const 1 - i32.add - local.set $8 - end - loop $repeat|0 - local.get $3 - local.get $8 - i32.lt_s - i32.eqz - br_if $break|0 - local.get $4 - local.get $3 - i32.const 2 - i32.shl - i32.add - i32.load - local.get $7 - call $~lib/rt/purerc/__retainRelease - local.set $7 - local.get $7 - i32.const 0 - i32.ne - if - local.get $6 - local.get $7 - call $~lib/string/String#get:length - i32.add - local.set $6 - end - local.get $3 - i32.const 1 - i32.add - local.set $3 - br $repeat|0 - unreachable - end - unreachable - end - i32.const 0 - local.set $9 - local.get $6 - local.get $5 - local.get $2 - i32.mul - i32.add - i32.const 1 - i32.shl - i32.const 16 - call $~lib/rt/tlsf/__alloc - call $~lib/rt/purerc/__retain - local.set $10 - block $break|1 - i32.const 0 - local.set $8 - loop $repeat|1 - local.get $8 - local.get $2 - i32.lt_s - i32.eqz - br_if $break|1 - local.get $4 - local.get $8 - i32.const 2 - i32.shl - i32.add - i32.load - local.get $7 - call $~lib/rt/purerc/__retainRelease - local.set $7 - local.get $7 - i32.const 0 - i32.ne - if - local.get $7 - call $~lib/string/String#get:length - local.set $3 - local.get $10 - local.get $9 - i32.const 1 - i32.shl - i32.add - local.get $7 - local.get $3 - i32.const 1 - i32.shl - call $~lib/memory/memory.copy - local.get $9 - local.get $3 - i32.add - local.set $9 - end - local.get $5 - if - local.get $10 - local.get $9 - i32.const 1 - i32.shl - i32.add - local.get $1 - local.get $5 - i32.const 1 - i32.shl - call $~lib/memory/memory.copy - local.get $9 - local.get $5 - i32.add - local.set $9 - end - local.get $8 - i32.const 1 - i32.add - local.set $8 - br $repeat|1 - unreachable - end - unreachable - end - local.get $4 - local.get $2 - i32.const 2 - i32.shl - i32.add - i32.load - local.get $7 - call $~lib/rt/purerc/__retainRelease - local.set $7 - local.get $7 - i32.const 0 - i32.ne - if - local.get $10 - local.get $9 - i32.const 1 - i32.shl - i32.add - local.get $7 - local.get $7 - call $~lib/string/String#get:length - i32.const 1 - i32.shl - call $~lib/memory/memory.copy - end - local.get $10 - local.set $8 - local.get $1 call $~lib/rt/purerc/__release - local.get $7 - call $~lib/rt/purerc/__release - local.get $8 - ) - (func $~lib/array/Array<~lib/string/String | null>#join (; 279 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) local.get $1 - call $~lib/rt/purerc/__retain - drop - local.get $0 - local.get $1 - call $~lib/array/Array<~lib/string/String | null>#join_str - local.set $2 - local.get $1 - call $~lib/rt/purerc/__release - local.get $2 - return ) - (func $~lib/array/Array<~lib/string/String | null>#toString (; 280 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - local.get $0 - i32.const 4536 - call $~lib/array/Array<~lib/string/String | null>#join - ) - (func $~lib/array/Array<~lib/string/String>#toString (; 281 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/array/Array<~lib/string/String | null>#toString (; 183 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.const 4536 call $~lib/array/Array<~lib/string/String>#join ) - (func $~lib/array/Array<~lib/array/Array>#join_arr (; 282 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array<~lib/array/Array>#join_arr (; 184 ;) (type $FUNCSIG$ii) (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 $1 + i32.const 4536 call $~lib/rt/purerc/__retain drop local.get $0 i32.load offset=12 i32.const 1 i32.sub - local.set $2 - local.get $2 + local.tee $2 i32.const 0 i32.lt_s if i32.const 4272 call $~lib/rt/purerc/__retain - local.set $3 - local.get $1 + local.set $0 + i32.const 4536 call $~lib/rt/purerc/__release - local.get $3 + local.get $0 return end i32.const 4272 call $~lib/rt/purerc/__retain - local.set $4 - local.get $1 - call $~lib/string/String#get:length - local.set $5 + local.set $1 + i32.const 4532 + i32.load + i32.const 1 + i32.shr_u + local.set $6 local.get $0 i32.load offset=4 - local.set $6 + local.set $3 i32.const 0 - local.set $7 + local.set $0 local.get $2 i32.eqz if - local.get $6 + local.get $3 i32.load - local.get $7 + i32.const 0 call $~lib/rt/purerc/__retainRelease - local.set $7 - local.get $7 + local.tee $0 if (result i32) - local.get $7 - local.get $1 + local.get $0 + i32.const 4536 call $~lib/array/Array#join else i32.const 4272 call $~lib/rt/purerc/__retain end - local.set $3 + local.set $2 + i32.const 4536 + call $~lib/rt/purerc/__release local.get $1 call $~lib/rt/purerc/__release - local.get $4 + local.get $0 call $~lib/rt/purerc/__release - local.get $7 - call $~lib/rt/purerc/__release - local.get $3 + local.get $2 return end - block $break|0 - i32.const 0 - local.set $3 - loop $repeat|0 - local.get $3 - local.get $2 - i32.lt_s - i32.eqz - br_if $break|0 - local.get $6 - local.get $3 + loop $repeat|0 + local.get $4 + local.get $2 + i32.lt_s + if + local.get $4 i32.const 2 i32.shl + local.get $3 i32.add i32.load - local.get $7 + local.get $0 call $~lib/rt/purerc/__retainRelease - local.set $7 - local.get $7 + local.tee $0 if - local.get $4 - local.get $7 local.get $1 + local.get $0 + i32.const 4536 call $~lib/array/Array#join - local.tee $8 + local.tee $5 call $~lib/string/String.__concat - local.tee $9 - local.get $4 - call $~lib/rt/purerc/__retainRelease - local.set $4 - local.get $8 - call $~lib/rt/purerc/__release - local.get $9 - call $~lib/rt/purerc/__release - end - local.get $5 - if - local.get $4 + local.tee $7 local.get $1 - call $~lib/string/String.__concat - local.tee $9 - local.get $4 call $~lib/rt/purerc/__retainRelease - local.set $4 - local.get $9 + local.set $1 + local.get $5 + call $~lib/rt/purerc/__release + local.get $7 call $~lib/rt/purerc/__release end - local.get $3 + local.get $6 + if + local.get $1 + i32.const 4536 + call $~lib/string/String.__concat + local.tee $5 + local.get $1 + call $~lib/rt/purerc/__retainRelease + local.set $1 + local.get $5 + call $~lib/rt/purerc/__release + end + local.get $4 i32.const 1 i32.add - local.set $3 + local.set $4 br $repeat|0 - unreachable end - unreachable end - local.get $6 local.get $2 i32.const 2 i32.shl + local.get $3 i32.add i32.load - local.get $7 + local.get $0 call $~lib/rt/purerc/__retainRelease - local.set $7 - local.get $7 + local.tee $0 if - local.get $4 - local.get $7 local.get $1 + local.get $0 + i32.const 4536 call $~lib/array/Array#join - local.tee $3 + local.tee $2 call $~lib/string/String.__concat - local.tee $9 - local.get $4 + local.tee $3 + local.get $1 call $~lib/rt/purerc/__retainRelease - local.set $4 + local.set $1 + local.get $2 + call $~lib/rt/purerc/__release local.get $3 call $~lib/rt/purerc/__release - local.get $9 - call $~lib/rt/purerc/__release end - local.get $4 - local.set $9 - local.get $1 - call $~lib/rt/purerc/__release - local.get $7 - call $~lib/rt/purerc/__release - local.get $9 - ) - (func $~lib/array/Array<~lib/array/Array>#join (; 283 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - local.get $1 - call $~lib/rt/purerc/__retain - drop - local.get $0 - local.get $1 - call $~lib/array/Array<~lib/array/Array>#join_arr - local.set $2 - local.get $1 - call $~lib/rt/purerc/__release - local.get $2 - return - ) - (func $~lib/array/Array<~lib/array/Array>#toString (; 284 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - local.get $0 i32.const 4536 - call $~lib/array/Array<~lib/array/Array>#join - ) - (func $~lib/util/number/itoa (; 285 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + call $~lib/rt/purerc/__release local.get $0 - i32.const 255 - i32.and - call $~lib/util/number/utoa32 - return + call $~lib/rt/purerc/__release + local.get $1 ) - (func $~lib/util/number/itoa_stream (; 286 ;) (type $FUNCSIG$iiii) (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 $0 + (func $~lib/util/number/itoa_stream (; 185 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $1 i32.const 1 i32.shl + local.get $0 i32.add local.set $0 local.get $2 @@ -15352,721 +10607,616 @@ i32.const 1 return end - i32.const 0 - local.set $3 local.get $2 i32.const 255 i32.and + local.tee $2 call $~lib/util/number/decimalCount32 - local.set $3 - block $~lib/util/number/utoa32_core|inlined.12 - local.get $0 - local.set $6 - local.get $2 - i32.const 255 - i32.and - local.set $5 - local.get $3 - local.set $4 - local.get $6 - local.get $5 - local.get $4 - call $~lib/util/number/utoa32_lut - end - local.get $3 + local.set $1 + local.get $0 + local.get $2 + local.get $1 + call $~lib/util/number/utoa32_lut + local.get $1 ) - (func $~lib/array/Array#join_int (; 287 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array#join_int (; 186 ;) (type $FUNCSIG$ii) (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 $10 i32) - local.get $1 + i32.const 4536 call $~lib/rt/purerc/__retain drop local.get $0 i32.load offset=12 i32.const 1 i32.sub - local.set $2 - local.get $2 + local.tee $2 i32.const 0 i32.lt_s if i32.const 4272 call $~lib/rt/purerc/__retain - local.set $3 - local.get $1 + local.set $0 + i32.const 4536 call $~lib/rt/purerc/__release - local.get $3 + local.get $0 return end local.get $0 i32.load offset=4 - local.set $4 + local.set $3 local.get $2 i32.eqz if - local.get $4 - i32.load8_u - call $~lib/util/number/itoa - local.tee $3 - call $~lib/rt/purerc/__retain - local.set $5 local.get $3 + i32.load8_u + call $~lib/util/number/utoa32 + local.tee $0 + call $~lib/rt/purerc/__retain + local.set $1 + local.get $0 + call $~lib/rt/purerc/__release + i32.const 4536 call $~lib/rt/purerc/__release local.get $1 - call $~lib/rt/purerc/__release - local.get $5 return end - local.get $1 - call $~lib/string/String#get:length - local.set $6 + i32.const 4532 + i32.load + i32.const 1 + i32.shr_u + local.tee $4 i32.const 10 - local.get $6 i32.add local.get $2 i32.mul i32.const 10 i32.add - local.set $7 - local.get $7 + local.tee $6 i32.const 1 i32.shl i32.const 16 call $~lib/rt/tlsf/__alloc call $~lib/rt/purerc/__retain - local.set $8 + local.set $1 i32.const 0 - local.set $9 - block $break|0 - i32.const 0 - local.set $3 - loop $repeat|0 + local.set $0 + loop $repeat|0 + local.get $5 + local.get $2 + i32.lt_s + if + local.get $1 + local.get $0 local.get $3 - local.get $2 - i32.lt_s - i32.eqz - br_if $break|0 - local.get $4 - local.get $3 - i32.const 0 - i32.shl + local.get $5 i32.add i32.load8_u - local.set $10 - local.get $9 - local.get $8 - local.get $9 - local.get $10 call $~lib/util/number/itoa_stream + local.get $0 i32.add - local.set $9 - local.get $6 + local.set $0 + local.get $4 if - local.get $8 - local.get $9 + local.get $0 i32.const 1 i32.shl - i32.add local.get $1 - local.get $6 + i32.add + i32.const 4536 + local.get $4 i32.const 1 i32.shl call $~lib/memory/memory.copy - local.get $9 - local.get $6 + local.get $0 + local.get $4 i32.add - local.set $9 + local.set $0 end - local.get $3 + local.get $5 i32.const 1 i32.add - local.set $3 + local.set $5 br $repeat|0 - unreachable end - unreachable end - local.get $4 + local.get $6 + local.get $1 + local.get $0 local.get $2 - i32.const 0 - i32.shl + local.get $3 i32.add i32.load8_u - local.set $10 - local.get $9 - local.get $8 - local.get $9 - local.get $10 call $~lib/util/number/itoa_stream + local.get $0 i32.add - local.set $9 - local.get $7 - local.get $9 + local.tee $0 i32.gt_s if - local.get $8 - i32.const 0 - local.get $9 + local.get $1 + local.get $0 call $~lib/string/String#substring - local.set $3 + local.set $0 + i32.const 4536 + call $~lib/rt/purerc/__release local.get $1 call $~lib/rt/purerc/__release - local.get $8 - call $~lib/rt/purerc/__release - local.get $3 + local.get $0 return end - local.get $8 - local.set $3 - local.get $1 + i32.const 4536 call $~lib/rt/purerc/__release - local.get $3 - ) - (func $~lib/array/Array#join (; 288 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) local.get $1 + ) + (func $~lib/array/Array#join (; 187 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + i32.const 4536 call $~lib/rt/purerc/__retain drop local.get $0 - local.get $1 call $~lib/array/Array#join_int - local.set $2 - local.get $1 + local.set $0 + i32.const 4536 call $~lib/rt/purerc/__release - local.get $2 - return + local.get $0 ) - (func $~lib/array/Array<~lib/array/Array>#join_arr (; 289 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array<~lib/array/Array>#join_arr (; 188 ;) (type $FUNCSIG$ii) (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 $1 + i32.const 4536 call $~lib/rt/purerc/__retain drop local.get $0 i32.load offset=12 i32.const 1 i32.sub - local.set $2 - local.get $2 + local.tee $2 i32.const 0 i32.lt_s if i32.const 4272 call $~lib/rt/purerc/__retain - local.set $3 - local.get $1 + local.set $0 + i32.const 4536 call $~lib/rt/purerc/__release - local.get $3 + local.get $0 return end i32.const 4272 call $~lib/rt/purerc/__retain - local.set $4 - local.get $1 - call $~lib/string/String#get:length - local.set $5 + local.set $1 + i32.const 4532 + i32.load + i32.const 1 + i32.shr_u + local.set $6 local.get $0 i32.load offset=4 - local.set $6 + local.set $3 i32.const 0 - local.set $7 + local.set $0 local.get $2 i32.eqz if - local.get $6 + local.get $3 i32.load - local.get $7 + i32.const 0 call $~lib/rt/purerc/__retainRelease - local.set $7 - local.get $7 + local.tee $0 if (result i32) - local.get $7 - local.get $1 + local.get $0 call $~lib/array/Array#join else i32.const 4272 call $~lib/rt/purerc/__retain end - local.set $3 + local.set $2 + i32.const 4536 + call $~lib/rt/purerc/__release local.get $1 call $~lib/rt/purerc/__release - local.get $4 + local.get $0 call $~lib/rt/purerc/__release - local.get $7 - call $~lib/rt/purerc/__release - local.get $3 + local.get $2 return end - block $break|0 - i32.const 0 - local.set $3 - loop $repeat|0 - local.get $3 - local.get $2 - i32.lt_s - i32.eqz - br_if $break|0 - local.get $6 - local.get $3 + loop $repeat|0 + local.get $4 + local.get $2 + i32.lt_s + if + local.get $4 i32.const 2 i32.shl + local.get $3 i32.add i32.load - local.get $7 + local.get $0 call $~lib/rt/purerc/__retainRelease - local.set $7 - local.get $7 + local.tee $0 if - local.get $4 - local.get $7 local.get $1 + local.get $0 call $~lib/array/Array#join - local.tee $8 + local.tee $5 call $~lib/string/String.__concat - local.tee $9 - local.get $4 - call $~lib/rt/purerc/__retainRelease - local.set $4 - local.get $8 - call $~lib/rt/purerc/__release - local.get $9 - call $~lib/rt/purerc/__release - end - local.get $5 - if - local.get $4 + local.tee $7 local.get $1 - call $~lib/string/String.__concat - local.tee $9 - local.get $4 call $~lib/rt/purerc/__retainRelease - local.set $4 - local.get $9 + local.set $1 + local.get $5 + call $~lib/rt/purerc/__release + local.get $7 call $~lib/rt/purerc/__release end - local.get $3 + local.get $6 + if + local.get $1 + i32.const 4536 + call $~lib/string/String.__concat + local.tee $5 + local.get $1 + call $~lib/rt/purerc/__retainRelease + local.set $1 + local.get $5 + call $~lib/rt/purerc/__release + end + local.get $4 i32.const 1 i32.add - local.set $3 + local.set $4 br $repeat|0 - unreachable end - unreachable end - local.get $6 local.get $2 i32.const 2 i32.shl + local.get $3 i32.add i32.load - local.get $7 + local.get $0 call $~lib/rt/purerc/__retainRelease - local.set $7 - local.get $7 + local.tee $0 if - local.get $4 - local.get $7 local.get $1 + local.get $0 call $~lib/array/Array#join - local.tee $3 + local.tee $2 call $~lib/string/String.__concat - local.tee $9 - local.get $4 + local.tee $3 + local.get $1 call $~lib/rt/purerc/__retainRelease - local.set $4 + local.set $1 + local.get $2 + call $~lib/rt/purerc/__release local.get $3 call $~lib/rt/purerc/__release - local.get $9 - call $~lib/rt/purerc/__release end - local.get $4 - local.set $9 - local.get $1 - call $~lib/rt/purerc/__release - local.get $7 - call $~lib/rt/purerc/__release - local.get $9 - ) - (func $~lib/array/Array<~lib/array/Array>#join (; 290 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - local.get $1 - call $~lib/rt/purerc/__retain - drop - local.get $0 - local.get $1 - call $~lib/array/Array<~lib/array/Array>#join_arr - local.set $2 - local.get $1 - call $~lib/rt/purerc/__release - local.get $2 - return - ) - (func $~lib/array/Array<~lib/array/Array>#toString (; 291 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - local.get $0 i32.const 4536 - call $~lib/array/Array<~lib/array/Array>#join + call $~lib/rt/purerc/__release + local.get $0 + call $~lib/rt/purerc/__release + local.get $1 ) - (func $~lib/array/Array<~lib/array/Array>#join_arr (; 292 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array<~lib/array/Array>#join_arr (; 189 ;) (type $FUNCSIG$ii) (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 $1 + i32.const 4536 call $~lib/rt/purerc/__retain drop local.get $0 i32.load offset=12 i32.const 1 i32.sub - local.set $2 - local.get $2 + local.tee $2 i32.const 0 i32.lt_s if i32.const 4272 call $~lib/rt/purerc/__retain - local.set $3 - local.get $1 + local.set $0 + i32.const 4536 call $~lib/rt/purerc/__release - local.get $3 + local.get $0 return end i32.const 4272 call $~lib/rt/purerc/__retain - local.set $4 - local.get $1 - call $~lib/string/String#get:length - local.set $5 + local.set $1 + i32.const 4532 + i32.load + i32.const 1 + i32.shr_u + local.set $6 local.get $0 i32.load offset=4 - local.set $6 + local.set $3 i32.const 0 - local.set $7 + local.set $0 local.get $2 i32.eqz if - local.get $6 + local.get $3 i32.load - local.get $7 + i32.const 0 call $~lib/rt/purerc/__retainRelease - local.set $7 - local.get $7 + local.tee $0 if (result i32) - local.get $7 - local.get $1 + local.get $0 + i32.const 4536 call $~lib/array/Array#join else i32.const 4272 call $~lib/rt/purerc/__retain end - local.set $3 + local.set $2 + i32.const 4536 + call $~lib/rt/purerc/__release local.get $1 call $~lib/rt/purerc/__release - local.get $4 + local.get $0 call $~lib/rt/purerc/__release - local.get $7 - call $~lib/rt/purerc/__release - local.get $3 + local.get $2 return end - block $break|0 - i32.const 0 - local.set $3 - loop $repeat|0 - local.get $3 - local.get $2 - i32.lt_s - i32.eqz - br_if $break|0 - local.get $6 - local.get $3 + loop $repeat|0 + local.get $4 + local.get $2 + i32.lt_s + if + local.get $4 i32.const 2 i32.shl + local.get $3 i32.add i32.load - local.get $7 + local.get $0 call $~lib/rt/purerc/__retainRelease - local.set $7 - local.get $7 + local.tee $0 if - local.get $4 - local.get $7 local.get $1 + local.get $0 + i32.const 4536 call $~lib/array/Array#join - local.tee $8 + local.tee $5 call $~lib/string/String.__concat - local.tee $9 - local.get $4 - call $~lib/rt/purerc/__retainRelease - local.set $4 - local.get $8 - call $~lib/rt/purerc/__release - local.get $9 - call $~lib/rt/purerc/__release - end - local.get $5 - if - local.get $4 + local.tee $7 local.get $1 - call $~lib/string/String.__concat - local.tee $9 - local.get $4 call $~lib/rt/purerc/__retainRelease - local.set $4 - local.get $9 + local.set $1 + local.get $5 + call $~lib/rt/purerc/__release + local.get $7 call $~lib/rt/purerc/__release end - local.get $3 + local.get $6 + if + local.get $1 + i32.const 4536 + call $~lib/string/String.__concat + local.tee $5 + local.get $1 + call $~lib/rt/purerc/__retainRelease + local.set $1 + local.get $5 + call $~lib/rt/purerc/__release + end + local.get $4 i32.const 1 i32.add - local.set $3 + local.set $4 br $repeat|0 - unreachable end - unreachable end - local.get $6 local.get $2 i32.const 2 i32.shl + local.get $3 i32.add i32.load - local.get $7 + local.get $0 call $~lib/rt/purerc/__retainRelease - local.set $7 - local.get $7 + local.tee $0 if - local.get $4 - local.get $7 local.get $1 + local.get $0 + i32.const 4536 call $~lib/array/Array#join - local.tee $3 + local.tee $2 call $~lib/string/String.__concat - local.tee $9 - local.get $4 + local.tee $3 + local.get $1 call $~lib/rt/purerc/__retainRelease - local.set $4 + local.set $1 + local.get $2 + call $~lib/rt/purerc/__release local.get $3 call $~lib/rt/purerc/__release - local.get $9 - call $~lib/rt/purerc/__release end - local.get $4 - local.set $9 + i32.const 4536 + call $~lib/rt/purerc/__release + local.get $0 + call $~lib/rt/purerc/__release local.get $1 - call $~lib/rt/purerc/__release - local.get $7 - call $~lib/rt/purerc/__release - local.get $9 ) - (func $~lib/array/Array<~lib/array/Array>#join (; 293 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - local.get $1 + (func $~lib/array/Array<~lib/array/Array>#join (; 190 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + i32.const 4536 call $~lib/rt/purerc/__retain drop local.get $0 - local.get $1 call $~lib/array/Array<~lib/array/Array>#join_arr - local.set $2 - local.get $1 + local.set $0 + i32.const 4536 call $~lib/rt/purerc/__release - local.get $2 - return + local.get $0 ) - (func $~lib/array/Array<~lib/array/Array<~lib/array/Array>>#join_arr (; 294 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array<~lib/array/Array<~lib/array/Array>>#join_arr (; 191 ;) (type $FUNCSIG$ii) (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 $1 + i32.const 4536 call $~lib/rt/purerc/__retain drop local.get $0 i32.load offset=12 i32.const 1 i32.sub - local.set $2 - local.get $2 + local.tee $2 i32.const 0 i32.lt_s if i32.const 4272 call $~lib/rt/purerc/__retain - local.set $3 - local.get $1 + local.set $0 + i32.const 4536 call $~lib/rt/purerc/__release - local.get $3 + local.get $0 return end i32.const 4272 call $~lib/rt/purerc/__retain - local.set $4 - local.get $1 - call $~lib/string/String#get:length - local.set $5 + local.set $1 + i32.const 4532 + i32.load + i32.const 1 + i32.shr_u + local.set $6 local.get $0 i32.load offset=4 - local.set $6 + local.set $3 i32.const 0 - local.set $7 + local.set $0 local.get $2 i32.eqz if - local.get $6 + local.get $3 i32.load - local.get $7 + i32.const 0 call $~lib/rt/purerc/__retainRelease - local.set $7 - local.get $7 + local.tee $0 if (result i32) - local.get $7 - local.get $1 + local.get $0 call $~lib/array/Array<~lib/array/Array>#join else i32.const 4272 call $~lib/rt/purerc/__retain end - local.set $3 + local.set $2 + i32.const 4536 + call $~lib/rt/purerc/__release local.get $1 call $~lib/rt/purerc/__release - local.get $4 + local.get $0 call $~lib/rt/purerc/__release - local.get $7 - call $~lib/rt/purerc/__release - local.get $3 + local.get $2 return end - block $break|0 - i32.const 0 - local.set $3 - loop $repeat|0 - local.get $3 - local.get $2 - i32.lt_s - i32.eqz - br_if $break|0 - local.get $6 - local.get $3 + loop $repeat|0 + local.get $4 + local.get $2 + i32.lt_s + if + local.get $4 i32.const 2 i32.shl + local.get $3 i32.add i32.load - local.get $7 + local.get $0 call $~lib/rt/purerc/__retainRelease - local.set $7 - local.get $7 + local.tee $0 if - local.get $4 - local.get $7 local.get $1 + local.get $0 call $~lib/array/Array<~lib/array/Array>#join - local.tee $8 + local.tee $5 call $~lib/string/String.__concat - local.tee $9 - local.get $4 - call $~lib/rt/purerc/__retainRelease - local.set $4 - local.get $8 - call $~lib/rt/purerc/__release - local.get $9 - call $~lib/rt/purerc/__release - end - local.get $5 - if - local.get $4 + local.tee $7 local.get $1 - call $~lib/string/String.__concat - local.tee $9 - local.get $4 call $~lib/rt/purerc/__retainRelease - local.set $4 - local.get $9 + local.set $1 + local.get $5 + call $~lib/rt/purerc/__release + local.get $7 call $~lib/rt/purerc/__release end - local.get $3 + local.get $6 + if + local.get $1 + i32.const 4536 + call $~lib/string/String.__concat + local.tee $5 + local.get $1 + call $~lib/rt/purerc/__retainRelease + local.set $1 + local.get $5 + call $~lib/rt/purerc/__release + end + local.get $4 i32.const 1 i32.add - local.set $3 + local.set $4 br $repeat|0 - unreachable end - unreachable end - local.get $6 local.get $2 i32.const 2 i32.shl + local.get $3 i32.add i32.load - local.get $7 + local.get $0 call $~lib/rt/purerc/__retainRelease - local.set $7 - local.get $7 + local.tee $0 if - local.get $4 - local.get $7 local.get $1 + local.get $0 call $~lib/array/Array<~lib/array/Array>#join - local.tee $3 + local.tee $2 call $~lib/string/String.__concat - local.tee $9 - local.get $4 + local.tee $3 + local.get $1 call $~lib/rt/purerc/__retainRelease - local.set $4 + local.set $1 + local.get $2 + call $~lib/rt/purerc/__release local.get $3 call $~lib/rt/purerc/__release - local.get $9 - call $~lib/rt/purerc/__release end - local.get $4 - local.set $9 - local.get $1 - call $~lib/rt/purerc/__release - local.get $7 - call $~lib/rt/purerc/__release - local.get $9 - ) - (func $~lib/array/Array<~lib/array/Array<~lib/array/Array>>#join (; 295 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - local.get $1 - call $~lib/rt/purerc/__retain - drop - local.get $0 - local.get $1 - call $~lib/array/Array<~lib/array/Array<~lib/array/Array>>#join_arr - local.set $2 - local.get $1 - call $~lib/rt/purerc/__release - local.get $2 - return - ) - (func $~lib/array/Array<~lib/array/Array<~lib/array/Array>>#toString (; 296 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - local.get $0 i32.const 4536 - call $~lib/array/Array<~lib/array/Array<~lib/array/Array>>#join + call $~lib/rt/purerc/__release + local.get $0 + call $~lib/rt/purerc/__release + local.get $1 ) - (func $start:std/array (; 297 ;) (type $FUNCSIG$v) + (func $~lib/rt/purerc/__release (; 192 ;) (type $FUNCSIG$vi) (param $0 i32) + local.get $0 + i32.const 8040 + i32.gt_u + if + local.get $0 + i32.const 16 + i32.sub + call $~lib/rt/purerc/decrement + end + ) + (func $start:std/array (; 193 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -16120,5517 +11270,5213 @@ (local $50 i32) (local $51 i32) (local $52 i32) - (local $53 i32) - (local $54 i32) - (local $55 i32) - (local $56 i32) - i32.const 0 - i32.const 0 call $~lib/array/Array#constructor global.set $std/array/arr - block + i32.const 0 + call $~lib/array/Array.isArray<~lib/array/Array | null> + if i32.const 0 - call $~lib/array/Array.isArray<~lib/array/Array | null> - i32.const 0 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 37 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - call $~lib/array/Array.isArray<~lib/array/Array> - i32.const 1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 38 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - call $std/array/P#constructor - local.tee $0 - call $~lib/array/Array.isArray - i32.const 0 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 39 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - i32.const 1 - call $~lib/typedarray/Uint8Array#constructor - local.tee $1 - call $~lib/array/Array.isArray<~lib/typedarray/Uint8Array> - i32.const 0 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 40 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - i32.const 1 - call $~lib/array/Array.isArray - i32.const 0 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 41 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - i32.const 272 - call $~lib/array/Array.isArray<~lib/string/String> - i32.const 0 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 42 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $0 - call $~lib/rt/purerc/__release - local.get $1 - call $~lib/rt/purerc/__release - end - block - i32.const 5 - i32.const 0 - i32.const 20 - i32.const 296 - call $~lib/rt/common/__allocArray - call $~lib/rt/purerc/__retain - local.tee $0 - call $~lib/rt/purerc/__retain - local.set $1 - local.get $1 - i32.const 1 - i32.const 1 - i32.const 3 - call $~lib/array/Array#fill - call $~lib/rt/purerc/__release - local.get $1 - i32.const 5 - i32.const 0 - i32.const 20 - i32.const 376 - call $~lib/rt/common/__allocArray - call $~lib/rt/purerc/__retain - local.tee $3 - i32.const 0 - call $std/array/isArraysEqual - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 50 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 0 - i32.const 0 - global.get $~lib/builtins/i32.MAX_VALUE - call $~lib/array/Array#fill - call $~lib/rt/purerc/__release - local.get $1 - i32.const 5 - i32.const 0 - i32.const 20 - i32.const 504 - call $~lib/rt/common/__allocArray - call $~lib/rt/purerc/__retain - local.tee $4 - i32.const 0 - call $std/array/isArraysEqual - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 53 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 1 - i32.const 0 - i32.const -3 - call $~lib/array/Array#fill - call $~lib/rt/purerc/__release - local.get $1 - i32.const 5 - i32.const 0 - i32.const 20 - i32.const 528 - call $~lib/rt/common/__allocArray - call $~lib/rt/purerc/__retain - local.tee $5 - i32.const 0 - call $std/array/isArraysEqual - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 56 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 2 - i32.const -2 - global.get $~lib/builtins/i32.MAX_VALUE - call $~lib/array/Array#fill - call $~lib/rt/purerc/__release - local.get $1 - i32.const 5 - i32.const 0 - i32.const 20 - i32.const 552 - call $~lib/rt/common/__allocArray - call $~lib/rt/purerc/__retain - local.tee $6 - i32.const 0 - call $std/array/isArraysEqual - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 59 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 0 - i32.const 1 - i32.const 0 - call $~lib/array/Array#fill - call $~lib/rt/purerc/__release - local.get $1 - i32.const 5 - i32.const 0 - i32.const 20 - i32.const 576 - call $~lib/rt/common/__allocArray - call $~lib/rt/purerc/__retain - local.tee $7 - i32.const 0 - call $std/array/isArraysEqual - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 62 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $0 - call $~lib/rt/purerc/__release - local.get $1 - call $~lib/rt/purerc/__release - local.get $3 - call $~lib/rt/purerc/__release - local.get $4 - call $~lib/rt/purerc/__release - local.get $5 - call $~lib/rt/purerc/__release - local.get $6 - call $~lib/rt/purerc/__release - local.get $7 - call $~lib/rt/purerc/__release - end - block - i32.const 5 - i32.const 2 - i32.const 21 - i32.const 600 - call $~lib/rt/common/__allocArray - call $~lib/rt/purerc/__retain - local.tee $6 - call $~lib/rt/purerc/__retain - local.set $7 - local.get $7 - i32.const 1 - i32.const 1 - i32.const 3 - call $~lib/array/Array#fill - call $~lib/rt/purerc/__release - local.get $7 - i32.const 5 - i32.const 2 - i32.const 21 - i32.const 640 - call $~lib/rt/common/__allocArray - call $~lib/rt/purerc/__retain - local.tee $4 - i32.const 0 - call $std/array/isArraysEqual - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 69 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $7 - i32.const 0 - i32.const 0 - global.get $~lib/builtins/i32.MAX_VALUE - call $~lib/array/Array#fill - call $~lib/rt/purerc/__release - local.get $7 - i32.const 5 - i32.const 2 - i32.const 21 - i32.const 680 - call $~lib/rt/common/__allocArray - call $~lib/rt/purerc/__retain - local.tee $3 - i32.const 0 - call $std/array/isArraysEqual - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 72 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $7 - i32.const 1 - i32.const 0 - i32.const -3 - call $~lib/array/Array#fill - call $~lib/rt/purerc/__release - local.get $7 - i32.const 5 - i32.const 2 - i32.const 21 - i32.const 720 - call $~lib/rt/common/__allocArray - call $~lib/rt/purerc/__retain - local.tee $1 - i32.const 0 - call $std/array/isArraysEqual - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 75 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $7 - i32.const 2 - i32.const -2 - global.get $~lib/builtins/i32.MAX_VALUE - call $~lib/array/Array#fill - call $~lib/rt/purerc/__release - local.get $7 - i32.const 5 - i32.const 2 - i32.const 21 - i32.const 760 - call $~lib/rt/common/__allocArray - call $~lib/rt/purerc/__retain - local.tee $0 - i32.const 0 - call $std/array/isArraysEqual - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 78 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $7 - i32.const 0 - i32.const 1 - i32.const 0 - call $~lib/array/Array#fill - call $~lib/rt/purerc/__release - local.get $7 - i32.const 5 - i32.const 2 - i32.const 21 - i32.const 800 - call $~lib/rt/common/__allocArray - call $~lib/rt/purerc/__retain - local.tee $2 - i32.const 0 - call $std/array/isArraysEqual - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 81 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $6 - call $~lib/rt/purerc/__release - local.get $7 - call $~lib/rt/purerc/__release - local.get $4 - call $~lib/rt/purerc/__release - local.get $3 - call $~lib/rt/purerc/__release - local.get $1 - call $~lib/rt/purerc/__release - local.get $0 - call $~lib/rt/purerc/__release - local.get $2 - call $~lib/rt/purerc/__release - end - block - global.get $std/array/arr - call $~lib/array/Array#get:length - i32.const 0 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 87 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - call $std/array/internalCapacity - i32.const 0 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 88 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - i32.const 42 - call $~lib/array/Array#push - drop - global.get $std/array/arr - i32.const 0 - call $~lib/array/Array#__get - i32.const 42 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 92 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - call $~lib/array/Array#get:length - i32.const 1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 93 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - call $std/array/internalCapacity - i32.const 1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 94 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - call $~lib/array/Array#pop - local.set $2 - local.get $2 - i32.const 42 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 98 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - call $~lib/array/Array#get:length - i32.const 0 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 99 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - call $std/array/internalCapacity - i32.const 1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 100 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - i32.const 43 - call $~lib/array/Array#push - drop - global.get $std/array/arr - call $~lib/array/Array#get:length - i32.const 1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 104 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - call $std/array/internalCapacity - i32.const 1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 105 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - i32.const 0 - call $~lib/array/Array#__get - i32.const 43 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 106 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - i32.const 44 - call $~lib/array/Array#push - drop - global.get $std/array/arr - call $~lib/array/Array#get:length - i32.const 2 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 110 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - call $std/array/internalCapacity - i32.const 2 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 111 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - i32.const 0 - call $~lib/array/Array#__get - i32.const 43 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 112 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - i32.const 1 - call $~lib/array/Array#__get - i32.const 44 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 113 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - i32.const 45 - call $~lib/array/Array#push - drop - global.get $std/array/arr - call $~lib/array/Array#get:length - i32.const 3 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 117 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - call $std/array/internalCapacity - i32.const 3 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 118 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - i32.const 0 - call $~lib/array/Array#__get - i32.const 43 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 119 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - i32.const 1 - call $~lib/array/Array#__get - i32.const 44 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 120 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - i32.const 2 - call $~lib/array/Array#__get - i32.const 45 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 121 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - end - block - i32.const 0 - i32.const 0 - call $~lib/array/Array#constructor - local.set $2 - global.get $std/array/arr - local.get $2 - call $~lib/array/Array#concat - local.set $0 - global.get $std/array/arr - call $std/array/internalCapacity - i32.const 3 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 130 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - call $~lib/array/Array#get:length - i32.const 3 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 131 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $0 - call $~lib/array/Array#get:length - i32.const 3 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 132 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 0 - i32.const 2 - i32.const 17 - i32.const 888 - call $~lib/rt/common/__allocArray - call $~lib/rt/purerc/__retain - local.tee $3 - call $~lib/array/Array#concat - call $~lib/rt/purerc/__release - global.get $std/array/arr - call $std/array/internalCapacity - i32.const 3 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 135 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 0 - call $~lib/array/Array#__get - i32.const 43 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 137 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 1 - call $~lib/array/Array#__get - i32.const 44 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 138 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 2 - call $~lib/array/Array#__get - i32.const 45 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 139 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.const 46 - call $~lib/array/Array#push - drop - local.get $2 - i32.const 47 - call $~lib/array/Array#push - drop - block (result i32) - local.get $0 - call $~lib/rt/purerc/__release - global.get $std/array/arr - local.get $2 - call $~lib/array/Array#concat - end - local.set $0 - global.get $std/array/arr - call $std/array/internalCapacity - i32.const 3 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 146 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $2 - call $~lib/array/Array#get:length - i32.const 2 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 147 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $0 - call $~lib/array/Array#get:length - i32.const 5 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 148 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 0 - call $~lib/array/Array#__get - i32.const 43 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 149 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 1 - call $~lib/array/Array#__get - i32.const 44 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 150 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 2 - call $~lib/array/Array#__get - i32.const 45 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 151 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 3 - call $~lib/array/Array#__get - i32.const 46 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 152 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 4 - call $~lib/array/Array#__get - i32.const 47 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 153 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $0 - call $~lib/array/Array#pop - drop - local.get $0 - call $~lib/array/Array#get:length - i32.const 4 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 156 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - block (result i32) - local.get $0 - call $~lib/rt/purerc/__release - global.get $std/array/arr - i32.const 0 - call $~lib/array/Array#concat - end - local.set $0 - local.get $0 - call $~lib/array/Array#get:length - i32.const 3 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 159 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 2 - call $~lib/array/Array#__get - i32.const 45 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 160 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - i32.const 2 - i32.const 17 - i32.const 904 - call $~lib/rt/common/__allocArray - call $~lib/rt/purerc/__retain - local.tee $4 - call $~lib/rt/purerc/__retain - local.set $1 - local.get $1 - call $~lib/array/Array#get:length - i32.const 0 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 163 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - block (result i32) - local.get $0 - call $~lib/rt/purerc/__release - local.get $1 - global.get $std/array/arr - call $~lib/array/Array#concat - end - local.set $0 - local.get $0 - call $~lib/array/Array#get:length - i32.const 3 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 165 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $1 - call $~lib/array/Array#get:length - i32.const 0 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 166 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $2 - call $~lib/rt/purerc/__release - local.get $0 - call $~lib/rt/purerc/__release - local.get $3 - call $~lib/rt/purerc/__release - local.get $4 - call $~lib/rt/purerc/__release - local.get $1 - call $~lib/rt/purerc/__release - end - block - i32.const 0 - local.set $1 - i32.const 5 - i32.const 2 - i32.const 17 - i32.const 920 - call $~lib/rt/common/__allocArray - call $~lib/rt/purerc/__retain - local.tee $3 - local.get $1 - call $~lib/rt/purerc/__retainRelease - local.set $1 - local.get $1 - i32.const 0 - i32.const 3 - global.get $~lib/builtins/i32.MAX_VALUE - call $~lib/array/Array#copyWithin - local.tee $4 - i32.const 5 - i32.const 2 - i32.const 17 - i32.const 960 - call $~lib/rt/common/__allocArray - call $~lib/rt/purerc/__retain - local.tee $2 - i32.const 0 - call $std/array/isArraysEqual - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 174 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - i32.const 5 - i32.const 2 - i32.const 17 - i32.const 1000 - call $~lib/rt/common/__allocArray - call $~lib/rt/purerc/__retain - local.tee $7 - local.get $1 - call $~lib/rt/purerc/__retainRelease - local.set $1 - local.get $1 - i32.const 1 - i32.const 3 - global.get $~lib/builtins/i32.MAX_VALUE - call $~lib/array/Array#copyWithin - local.tee $0 - i32.const 5 - i32.const 2 - i32.const 17 - i32.const 1040 - call $~lib/rt/common/__allocArray - call $~lib/rt/purerc/__retain - local.tee $5 - i32.const 0 - call $std/array/isArraysEqual - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 176 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - i32.const 5 - i32.const 2 - i32.const 17 - i32.const 1080 - call $~lib/rt/common/__allocArray - call $~lib/rt/purerc/__retain - local.tee $8 - local.get $1 - call $~lib/rt/purerc/__retainRelease - local.set $1 - local.get $1 - i32.const 1 - i32.const 2 - global.get $~lib/builtins/i32.MAX_VALUE - call $~lib/array/Array#copyWithin - local.tee $6 - i32.const 5 - i32.const 2 - i32.const 17 - i32.const 1120 - call $~lib/rt/common/__allocArray - call $~lib/rt/purerc/__retain - local.tee $10 - i32.const 0 - call $std/array/isArraysEqual - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 178 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - i32.const 5 - i32.const 2 - i32.const 17 - i32.const 1160 - call $~lib/rt/common/__allocArray - call $~lib/rt/purerc/__retain - local.tee $11 - local.get $1 - call $~lib/rt/purerc/__retainRelease - local.set $1 - local.get $1 - i32.const 2 - i32.const 2 - global.get $~lib/builtins/i32.MAX_VALUE - call $~lib/array/Array#copyWithin - local.tee $9 - i32.const 5 - i32.const 2 - i32.const 17 - i32.const 1200 - call $~lib/rt/common/__allocArray - call $~lib/rt/purerc/__retain - local.tee $13 - i32.const 0 - call $std/array/isArraysEqual - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 180 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - i32.const 5 - i32.const 2 - i32.const 17 - i32.const 1240 - call $~lib/rt/common/__allocArray - call $~lib/rt/purerc/__retain - local.tee $14 - local.get $1 - call $~lib/rt/purerc/__retainRelease - local.set $1 - local.get $1 - i32.const 0 - i32.const 3 - i32.const 4 - call $~lib/array/Array#copyWithin - local.tee $12 - i32.const 5 - i32.const 2 - i32.const 17 - i32.const 1280 - call $~lib/rt/common/__allocArray - call $~lib/rt/purerc/__retain - local.tee $16 - i32.const 0 - call $std/array/isArraysEqual - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 182 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - i32.const 5 - i32.const 2 - i32.const 17 - i32.const 1320 - call $~lib/rt/common/__allocArray - call $~lib/rt/purerc/__retain - local.tee $17 - local.get $1 - call $~lib/rt/purerc/__retainRelease - local.set $1 - local.get $1 - i32.const 1 - i32.const 3 - i32.const 4 - call $~lib/array/Array#copyWithin - local.tee $15 - i32.const 5 - i32.const 2 - i32.const 17 - i32.const 1360 - call $~lib/rt/common/__allocArray - call $~lib/rt/purerc/__retain - local.tee $19 - i32.const 0 - call $std/array/isArraysEqual - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 184 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - i32.const 5 - i32.const 2 - i32.const 17 - i32.const 1400 - call $~lib/rt/common/__allocArray - call $~lib/rt/purerc/__retain - local.tee $20 - local.get $1 - call $~lib/rt/purerc/__retainRelease - local.set $1 - local.get $1 - i32.const 1 - i32.const 2 - i32.const 4 - call $~lib/array/Array#copyWithin - local.tee $18 - i32.const 5 - i32.const 2 - i32.const 17 - i32.const 1440 - call $~lib/rt/common/__allocArray - call $~lib/rt/purerc/__retain - local.tee $22 - i32.const 0 - call $std/array/isArraysEqual - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 186 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - i32.const 5 - i32.const 2 - i32.const 17 - i32.const 1480 - call $~lib/rt/common/__allocArray - call $~lib/rt/purerc/__retain - local.tee $23 - local.get $1 - call $~lib/rt/purerc/__retainRelease - local.set $1 - local.get $1 - i32.const 0 - i32.const -2 - global.get $~lib/builtins/i32.MAX_VALUE - call $~lib/array/Array#copyWithin - local.tee $21 - i32.const 5 - i32.const 2 - i32.const 17 - i32.const 1520 - call $~lib/rt/common/__allocArray - call $~lib/rt/purerc/__retain - local.tee $25 - i32.const 0 - call $std/array/isArraysEqual - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 188 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - i32.const 5 - i32.const 2 - i32.const 17 - i32.const 1560 - call $~lib/rt/common/__allocArray - call $~lib/rt/purerc/__retain - local.tee $26 - local.get $1 - call $~lib/rt/purerc/__retainRelease - local.set $1 - local.get $1 - i32.const 0 - i32.const -2 - i32.const -1 - call $~lib/array/Array#copyWithin - local.tee $24 - i32.const 5 - i32.const 2 - i32.const 17 - i32.const 1600 - call $~lib/rt/common/__allocArray - call $~lib/rt/purerc/__retain - local.tee $28 - i32.const 0 - call $std/array/isArraysEqual - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 190 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - i32.const 5 - i32.const 2 - i32.const 17 - i32.const 1640 - call $~lib/rt/common/__allocArray - call $~lib/rt/purerc/__retain - local.tee $29 - local.get $1 - call $~lib/rt/purerc/__retainRelease - local.set $1 - local.get $1 - i32.const -4 - i32.const -3 - i32.const -2 - call $~lib/array/Array#copyWithin - local.tee $27 - i32.const 5 - i32.const 2 - i32.const 17 - i32.const 1680 - call $~lib/rt/common/__allocArray - call $~lib/rt/purerc/__retain - local.tee $31 - i32.const 0 - call $std/array/isArraysEqual - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 192 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - i32.const 5 - i32.const 2 - i32.const 17 - i32.const 1720 - call $~lib/rt/common/__allocArray - call $~lib/rt/purerc/__retain - local.tee $32 - local.get $1 - call $~lib/rt/purerc/__retainRelease - local.set $1 - local.get $1 - i32.const -4 - i32.const -3 - i32.const -1 - call $~lib/array/Array#copyWithin - local.tee $30 - i32.const 5 - i32.const 2 - i32.const 17 - i32.const 1760 - call $~lib/rt/common/__allocArray - call $~lib/rt/purerc/__retain - local.tee $34 - i32.const 0 - call $std/array/isArraysEqual - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 194 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - i32.const 5 - i32.const 2 - i32.const 17 - i32.const 1800 - call $~lib/rt/common/__allocArray - call $~lib/rt/purerc/__retain - local.tee $35 - local.get $1 - call $~lib/rt/purerc/__retainRelease - local.set $1 - local.get $1 - i32.const -4 - i32.const -3 - global.get $~lib/builtins/i32.MAX_VALUE - call $~lib/array/Array#copyWithin - local.tee $33 - i32.const 5 - i32.const 2 - i32.const 17 - i32.const 1840 - call $~lib/rt/common/__allocArray - call $~lib/rt/purerc/__retain - local.tee $37 - i32.const 0 - call $std/array/isArraysEqual - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 196 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $1 - call $~lib/rt/purerc/__release - local.get $3 - call $~lib/rt/purerc/__release - local.get $4 - call $~lib/rt/purerc/__release - local.get $2 - call $~lib/rt/purerc/__release - local.get $7 - call $~lib/rt/purerc/__release - local.get $0 - call $~lib/rt/purerc/__release - local.get $5 - call $~lib/rt/purerc/__release - local.get $8 - call $~lib/rt/purerc/__release - local.get $6 - call $~lib/rt/purerc/__release - local.get $10 - call $~lib/rt/purerc/__release - local.get $11 - call $~lib/rt/purerc/__release - local.get $9 - call $~lib/rt/purerc/__release - local.get $13 - call $~lib/rt/purerc/__release - local.get $14 - call $~lib/rt/purerc/__release - local.get $12 - call $~lib/rt/purerc/__release - local.get $16 - call $~lib/rt/purerc/__release - local.get $17 - call $~lib/rt/purerc/__release - local.get $15 - call $~lib/rt/purerc/__release - local.get $19 - call $~lib/rt/purerc/__release - local.get $20 - call $~lib/rt/purerc/__release - local.get $18 - call $~lib/rt/purerc/__release - local.get $22 - call $~lib/rt/purerc/__release - local.get $23 - call $~lib/rt/purerc/__release - local.get $21 - call $~lib/rt/purerc/__release - local.get $25 - call $~lib/rt/purerc/__release - local.get $26 - call $~lib/rt/purerc/__release - local.get $24 - call $~lib/rt/purerc/__release - local.get $28 - call $~lib/rt/purerc/__release - local.get $29 - call $~lib/rt/purerc/__release - local.get $27 - call $~lib/rt/purerc/__release - local.get $31 - call $~lib/rt/purerc/__release - local.get $32 - call $~lib/rt/purerc/__release - local.get $30 - call $~lib/rt/purerc/__release - local.get $34 - call $~lib/rt/purerc/__release - local.get $35 - call $~lib/rt/purerc/__release - local.get $33 - call $~lib/rt/purerc/__release - local.get $37 - call $~lib/rt/purerc/__release - end - block - global.get $std/array/arr - i32.const 42 - call $~lib/array/Array#unshift - drop - global.get $std/array/arr - call $~lib/array/Array#get:length - i32.const 4 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 204 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - call $std/array/internalCapacity - i32.const 4 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 205 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - i32.const 0 - call $~lib/array/Array#__get - i32.const 42 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 206 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - i32.const 1 - call $~lib/array/Array#__get - i32.const 43 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 207 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - i32.const 2 - call $~lib/array/Array#__get - i32.const 44 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 208 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - i32.const 3 - call $~lib/array/Array#__get - i32.const 45 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 209 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - i32.const 41 - call $~lib/array/Array#unshift - drop - global.get $std/array/arr - call $~lib/array/Array#get:length - i32.const 5 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 213 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - call $std/array/internalCapacity - i32.const 5 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 214 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - i32.const 0 - call $~lib/array/Array#__get - i32.const 41 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 215 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - i32.const 1 - call $~lib/array/Array#__get - i32.const 42 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 216 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - i32.const 2 - call $~lib/array/Array#__get - i32.const 43 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 217 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - i32.const 3 - call $~lib/array/Array#__get - i32.const 44 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 218 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - i32.const 4 - call $~lib/array/Array#__get - i32.const 45 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 219 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - end - block - global.get $std/array/arr - call $~lib/array/Array#shift - global.set $std/array/i - global.get $std/array/i - i32.const 41 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 228 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - call $~lib/array/Array#get:length - i32.const 4 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 229 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - call $std/array/internalCapacity - i32.const 5 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 230 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - i32.const 0 - call $~lib/array/Array#__get - i32.const 42 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 231 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - i32.const 1 - call $~lib/array/Array#__get - i32.const 43 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 232 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - i32.const 2 - call $~lib/array/Array#__get - i32.const 44 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 233 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - i32.const 3 - call $~lib/array/Array#__get - i32.const 45 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 234 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - call $~lib/array/Array#pop - global.set $std/array/i - global.get $std/array/i - i32.const 45 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 238 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - call $~lib/array/Array#get:length - i32.const 3 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 239 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - call $std/array/internalCapacity - i32.const 5 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 240 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - i32.const 0 - call $~lib/array/Array#__get - i32.const 42 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 241 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - i32.const 1 - call $~lib/array/Array#__get - i32.const 43 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 242 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - i32.const 2 - call $~lib/array/Array#__get - i32.const 44 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 243 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - end - block - global.get $std/array/arr - call $~lib/array/Array#reverse - call $~lib/rt/purerc/__release - global.get $std/array/arr - call $~lib/array/Array#get:length - i32.const 3 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 251 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - call $std/array/internalCapacity - i32.const 5 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 252 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - i32.const 0 - call $~lib/array/Array#__get - i32.const 44 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 253 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - i32.const 1 - call $~lib/array/Array#__get - i32.const 43 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 254 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - i32.const 2 - call $~lib/array/Array#__get - i32.const 42 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 255 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - i32.const 43 - call $~lib/array/Array#push - drop - global.get $std/array/arr - i32.const 44 - call $~lib/array/Array#push - drop - end - block - global.get $std/array/arr - i32.const 44 - i32.const 0 - call $~lib/array/Array#indexOf - global.set $std/array/i - global.get $std/array/i - i32.const 0 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 265 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - i32.const 42 - i32.const 0 - call $~lib/array/Array#indexOf - global.set $std/array/i - global.get $std/array/i - i32.const 2 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 268 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - i32.const 45 - i32.const 0 - call $~lib/array/Array#indexOf - global.set $std/array/i - global.get $std/array/i - i32.const -1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 271 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - i32.const 43 - i32.const 100 - call $~lib/array/Array#indexOf - global.set $std/array/i - global.get $std/array/i - i32.const -1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 274 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - i32.const 43 - i32.const -100 - call $~lib/array/Array#indexOf - global.set $std/array/i - global.get $std/array/i - i32.const 1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 277 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - i32.const 43 - i32.const -2 - call $~lib/array/Array#indexOf - global.set $std/array/i - global.get $std/array/i - i32.const 3 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 280 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - i32.const 43 - i32.const -4 - call $~lib/array/Array#indexOf - global.set $std/array/i - global.get $std/array/i - i32.const 1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 283 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - i32.const 43 - i32.const 0 - call $~lib/array/Array#indexOf - global.set $std/array/i - global.get $std/array/i - i32.const 1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 286 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - i32.const 43 - i32.const 1 - call $~lib/array/Array#indexOf - global.set $std/array/i - global.get $std/array/i - i32.const 1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 289 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - i32.const 43 - i32.const 2 - call $~lib/array/Array#indexOf - global.set $std/array/i - global.get $std/array/i - i32.const 3 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 292 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - end - block - global.get $std/array/arr - i32.const 44 - i32.const 0 - call $~lib/array/Array#includes - local.set $37 - local.get $37 - i32.const 1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 299 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - i32.const 42 - i32.const 0 - call $~lib/array/Array#includes - local.set $37 - local.get $37 - i32.const 1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 302 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - i32.const 45 - i32.const 0 - call $~lib/array/Array#includes - local.set $37 - local.get $37 - i32.const 0 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 305 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - i32.const 43 - i32.const 100 - call $~lib/array/Array#includes - local.set $37 - local.get $37 - i32.const 0 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 308 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - i32.const 43 - i32.const -100 - call $~lib/array/Array#includes - local.set $37 - local.get $37 - i32.const 1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 311 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - i32.const 43 - i32.const -2 - call $~lib/array/Array#includes - local.set $37 - local.get $37 - i32.const 1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 314 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - i32.const 43 - i32.const -4 - call $~lib/array/Array#includes - local.set $37 - local.get $37 - i32.const 1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 317 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - i32.const 43 - i32.const 0 - call $~lib/array/Array#includes - local.set $37 - local.get $37 - i32.const 1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 320 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - i32.const 43 - i32.const 1 - call $~lib/array/Array#includes - local.set $37 - local.get $37 - i32.const 1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 323 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - i32.const 43 - i32.const 2 - call $~lib/array/Array#includes - local.set $37 - local.get $37 - i32.const 1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 326 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - i32.const 1 - i32.const 1 - call $~lib/array/Array#splice - call $~lib/rt/purerc/__release - global.get $std/array/arr - call $~lib/array/Array#get:length - i32.const 4 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 330 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - call $std/array/internalCapacity - i32.const 5 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 331 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - i32.const 0 - call $~lib/array/Array#__get - i32.const 44 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 332 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - i32.const 1 - call $~lib/array/Array#__get - i32.const 42 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 333 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - end - block - i32.const 5 - i32.const 2 - i32.const 17 - i32.const 1880 - call $~lib/rt/common/__allocArray - call $~lib/rt/purerc/__retain - local.tee $33 - call $~lib/rt/purerc/__retain - local.set $37 - local.get $37 - i32.const 0 - global.get $~lib/builtins/i32.MAX_VALUE - call $~lib/array/Array#splice - local.tee $35 - i32.const 5 - i32.const 2 - i32.const 17 - i32.const 1920 - call $~lib/rt/common/__allocArray - call $~lib/rt/purerc/__retain - local.tee $30 - i32.const 0 - call $std/array/isArraysEqual - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 340 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $37 - i32.const 0 - i32.const 2 - i32.const 17 - i32.const 1960 - call $~lib/rt/common/__allocArray - call $~lib/rt/purerc/__retain - local.tee $32 - i32.const 0 - call $std/array/isArraysEqual - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 341 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - i32.const 5 - i32.const 2 - i32.const 17 - i32.const 1976 - call $~lib/rt/common/__allocArray - call $~lib/rt/purerc/__retain - local.tee $31 - local.get $37 - call $~lib/rt/purerc/__retainRelease - local.set $37 - local.get $37 - i32.const 2 - global.get $~lib/builtins/i32.MAX_VALUE - call $~lib/array/Array#splice - local.tee $34 - i32.const 3 - i32.const 2 - i32.const 17 - i32.const 2016 - call $~lib/rt/common/__allocArray - call $~lib/rt/purerc/__retain - local.tee $29 - i32.const 0 - call $std/array/isArraysEqual - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 344 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $37 - i32.const 2 - i32.const 2 - i32.const 17 - i32.const 2048 - call $~lib/rt/common/__allocArray - call $~lib/rt/purerc/__retain - local.tee $28 - i32.const 0 - call $std/array/isArraysEqual - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 345 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - i32.const 5 - i32.const 2 - i32.const 17 - i32.const 2072 - call $~lib/rt/common/__allocArray - call $~lib/rt/purerc/__retain - local.tee $24 - local.get $37 - call $~lib/rt/purerc/__retainRelease - local.set $37 - local.get $37 - i32.const 2 - i32.const 2 - call $~lib/array/Array#splice - local.tee $27 - i32.const 2 - i32.const 2 - i32.const 17 - i32.const 2112 - call $~lib/rt/common/__allocArray - call $~lib/rt/purerc/__retain - local.tee $25 - i32.const 0 - call $std/array/isArraysEqual - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 348 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $37 - i32.const 3 - i32.const 2 - i32.const 17 - i32.const 2136 - call $~lib/rt/common/__allocArray - call $~lib/rt/purerc/__retain - local.tee $21 - i32.const 0 - call $std/array/isArraysEqual - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 349 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - i32.const 5 - i32.const 2 - i32.const 17 - i32.const 2168 - call $~lib/rt/common/__allocArray - call $~lib/rt/purerc/__retain - local.tee $23 - local.get $37 - call $~lib/rt/purerc/__retainRelease - local.set $37 - local.get $37 - i32.const 0 - i32.const 1 - call $~lib/array/Array#splice - local.tee $26 - i32.const 1 - i32.const 2 - i32.const 17 - i32.const 2208 - call $~lib/rt/common/__allocArray - call $~lib/rt/purerc/__retain - local.tee $18 - i32.const 0 - call $std/array/isArraysEqual - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 352 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $37 - i32.const 4 - i32.const 2 - i32.const 17 - i32.const 2232 - call $~lib/rt/common/__allocArray - call $~lib/rt/purerc/__retain - local.tee $20 - i32.const 0 - call $std/array/isArraysEqual - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 353 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - i32.const 5 - i32.const 2 - i32.const 17 - i32.const 2264 - call $~lib/rt/common/__allocArray - call $~lib/rt/purerc/__retain - local.tee $19 - local.get $37 - call $~lib/rt/purerc/__retainRelease - local.set $37 - local.get $37 - i32.const -1 - global.get $~lib/builtins/i32.MAX_VALUE - call $~lib/array/Array#splice - local.tee $22 - i32.const 1 - i32.const 2 - i32.const 17 - i32.const 2304 - call $~lib/rt/common/__allocArray - call $~lib/rt/purerc/__retain - local.tee $17 - i32.const 0 - call $std/array/isArraysEqual - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 356 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $37 - i32.const 4 - i32.const 2 - i32.const 17 - i32.const 2328 - call $~lib/rt/common/__allocArray - call $~lib/rt/purerc/__retain - local.tee $16 - i32.const 0 - call $std/array/isArraysEqual - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 357 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - i32.const 5 - i32.const 2 - i32.const 17 - i32.const 2360 - call $~lib/rt/common/__allocArray - call $~lib/rt/purerc/__retain - local.tee $12 - local.get $37 - call $~lib/rt/purerc/__retainRelease - local.set $37 - local.get $37 - i32.const -2 - global.get $~lib/builtins/i32.MAX_VALUE - call $~lib/array/Array#splice - local.tee $15 - i32.const 2 - i32.const 2 - i32.const 17 - i32.const 2400 - call $~lib/rt/common/__allocArray - call $~lib/rt/purerc/__retain - local.tee $13 - i32.const 0 - call $std/array/isArraysEqual - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 360 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $37 - i32.const 3 - i32.const 2 - i32.const 17 - i32.const 2424 - call $~lib/rt/common/__allocArray - call $~lib/rt/purerc/__retain - local.tee $9 - i32.const 0 - call $std/array/isArraysEqual - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 361 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - i32.const 5 - i32.const 2 - i32.const 17 - i32.const 2456 - call $~lib/rt/common/__allocArray - call $~lib/rt/purerc/__retain - local.tee $11 - local.get $37 - call $~lib/rt/purerc/__retainRelease - local.set $37 - local.get $37 - i32.const -2 - i32.const 1 - call $~lib/array/Array#splice - local.tee $14 - i32.const 1 - i32.const 2 - i32.const 17 - i32.const 2496 - call $~lib/rt/common/__allocArray - call $~lib/rt/purerc/__retain - local.tee $6 - i32.const 0 - call $std/array/isArraysEqual - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 364 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $37 - i32.const 4 - i32.const 2 - i32.const 17 - i32.const 2520 - call $~lib/rt/common/__allocArray - call $~lib/rt/purerc/__retain - local.tee $8 - i32.const 0 - call $std/array/isArraysEqual - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 365 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - i32.const 5 - i32.const 2 - i32.const 17 - i32.const 2552 - call $~lib/rt/common/__allocArray - call $~lib/rt/purerc/__retain - local.tee $5 - local.get $37 - call $~lib/rt/purerc/__retainRelease - local.set $37 - local.get $37 - i32.const -7 - i32.const 1 - call $~lib/array/Array#splice - local.tee $10 - i32.const 1 - i32.const 2 - i32.const 17 - i32.const 2592 - call $~lib/rt/common/__allocArray - call $~lib/rt/purerc/__retain - local.tee $7 - i32.const 0 - call $std/array/isArraysEqual - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 368 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $37 - i32.const 4 - i32.const 2 - i32.const 17 - i32.const 2616 - call $~lib/rt/common/__allocArray - call $~lib/rt/purerc/__retain - local.tee $2 - i32.const 0 - call $std/array/isArraysEqual - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 369 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - i32.const 5 - i32.const 2 - i32.const 17 - i32.const 2648 - call $~lib/rt/common/__allocArray - call $~lib/rt/purerc/__retain - local.tee $4 - local.get $37 - call $~lib/rt/purerc/__retainRelease - local.set $37 - local.get $37 - i32.const -2 - i32.const -1 - call $~lib/array/Array#splice - local.tee $0 - i32.const 0 - i32.const 2 - i32.const 17 - i32.const 2688 - call $~lib/rt/common/__allocArray - call $~lib/rt/purerc/__retain - local.tee $1 - i32.const 0 - call $std/array/isArraysEqual - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 372 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $37 - i32.const 5 - i32.const 2 - i32.const 17 - i32.const 2704 - call $~lib/rt/common/__allocArray - call $~lib/rt/purerc/__retain - local.tee $36 - i32.const 0 - call $std/array/isArraysEqual - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 373 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - i32.const 5 - i32.const 2 - i32.const 17 - i32.const 2744 - call $~lib/rt/common/__allocArray - call $~lib/rt/purerc/__retain - local.tee $38 - local.get $37 - call $~lib/rt/purerc/__retainRelease - local.set $37 - local.get $37 - i32.const 1 - i32.const -2 - call $~lib/array/Array#splice - local.tee $3 - i32.const 0 - i32.const 2 - i32.const 17 - i32.const 2784 - call $~lib/rt/common/__allocArray - call $~lib/rt/purerc/__retain - local.tee $40 - i32.const 0 - call $std/array/isArraysEqual - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 376 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $37 - i32.const 5 - i32.const 2 - i32.const 17 - i32.const 2800 - call $~lib/rt/common/__allocArray - call $~lib/rt/purerc/__retain - local.tee $41 - i32.const 0 - call $std/array/isArraysEqual - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 377 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - i32.const 5 - i32.const 2 - i32.const 17 - i32.const 2840 - call $~lib/rt/common/__allocArray - call $~lib/rt/purerc/__retain - local.tee $42 - local.get $37 - call $~lib/rt/purerc/__retainRelease - local.set $37 - local.get $37 - i32.const 4 - i32.const 0 - call $~lib/array/Array#splice - local.tee $39 - i32.const 0 - i32.const 2 - i32.const 17 - i32.const 2880 - call $~lib/rt/common/__allocArray - call $~lib/rt/purerc/__retain - local.tee $44 - i32.const 0 - call $std/array/isArraysEqual - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 380 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $37 - i32.const 5 - i32.const 2 - i32.const 17 - i32.const 2896 - call $~lib/rt/common/__allocArray - call $~lib/rt/purerc/__retain - local.tee $45 - i32.const 0 - call $std/array/isArraysEqual - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 381 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - i32.const 5 - i32.const 2 - i32.const 17 - i32.const 2936 - call $~lib/rt/common/__allocArray - call $~lib/rt/purerc/__retain - local.tee $46 - local.get $37 - call $~lib/rt/purerc/__retainRelease - local.set $37 - local.get $37 - i32.const 7 - i32.const 0 - call $~lib/array/Array#splice - local.tee $43 - i32.const 0 - i32.const 2 - i32.const 17 - i32.const 2976 - call $~lib/rt/common/__allocArray - call $~lib/rt/purerc/__retain - local.tee $48 - i32.const 0 - call $std/array/isArraysEqual - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 384 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $37 - i32.const 5 - i32.const 2 - i32.const 17 - i32.const 2992 - call $~lib/rt/common/__allocArray - call $~lib/rt/purerc/__retain - local.tee $49 - i32.const 0 - call $std/array/isArraysEqual - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 385 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - i32.const 5 - i32.const 2 - i32.const 17 - i32.const 3032 - call $~lib/rt/common/__allocArray - call $~lib/rt/purerc/__retain - local.tee $50 - local.get $37 - call $~lib/rt/purerc/__retainRelease - local.set $37 - local.get $37 - i32.const 7 - i32.const 5 - call $~lib/array/Array#splice - local.tee $47 - i32.const 0 - i32.const 2 - i32.const 17 - i32.const 3072 - call $~lib/rt/common/__allocArray - call $~lib/rt/purerc/__retain - local.tee $52 - i32.const 0 - call $std/array/isArraysEqual - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 388 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $37 - i32.const 5 - i32.const 2 - i32.const 17 - i32.const 3088 - call $~lib/rt/common/__allocArray - call $~lib/rt/purerc/__retain - local.tee $53 - i32.const 0 - call $std/array/isArraysEqual - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 389 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $33 - call $~lib/rt/purerc/__release - local.get $37 - call $~lib/rt/purerc/__release - local.get $35 - call $~lib/rt/purerc/__release - local.get $30 - call $~lib/rt/purerc/__release - local.get $32 - call $~lib/rt/purerc/__release - local.get $31 - call $~lib/rt/purerc/__release - local.get $34 - call $~lib/rt/purerc/__release - local.get $29 - call $~lib/rt/purerc/__release - local.get $28 - call $~lib/rt/purerc/__release - local.get $24 - call $~lib/rt/purerc/__release - local.get $27 - call $~lib/rt/purerc/__release - local.get $25 - call $~lib/rt/purerc/__release - local.get $21 - call $~lib/rt/purerc/__release - local.get $23 - call $~lib/rt/purerc/__release - local.get $26 - call $~lib/rt/purerc/__release - local.get $18 - call $~lib/rt/purerc/__release - local.get $20 - call $~lib/rt/purerc/__release - local.get $19 - call $~lib/rt/purerc/__release - local.get $22 - call $~lib/rt/purerc/__release - local.get $17 - call $~lib/rt/purerc/__release - local.get $16 - call $~lib/rt/purerc/__release - local.get $12 - call $~lib/rt/purerc/__release - local.get $15 - call $~lib/rt/purerc/__release - local.get $13 - call $~lib/rt/purerc/__release - local.get $9 - call $~lib/rt/purerc/__release - local.get $11 - call $~lib/rt/purerc/__release - local.get $14 - call $~lib/rt/purerc/__release - local.get $6 - call $~lib/rt/purerc/__release - local.get $8 - call $~lib/rt/purerc/__release - local.get $5 - call $~lib/rt/purerc/__release - local.get $10 - call $~lib/rt/purerc/__release - local.get $7 - call $~lib/rt/purerc/__release - local.get $2 - call $~lib/rt/purerc/__release - local.get $4 - call $~lib/rt/purerc/__release - local.get $0 - call $~lib/rt/purerc/__release - local.get $1 - call $~lib/rt/purerc/__release - local.get $36 - call $~lib/rt/purerc/__release - local.get $38 - call $~lib/rt/purerc/__release - local.get $3 - call $~lib/rt/purerc/__release - local.get $40 - call $~lib/rt/purerc/__release - local.get $41 - call $~lib/rt/purerc/__release - local.get $42 - call $~lib/rt/purerc/__release - local.get $39 - call $~lib/rt/purerc/__release - local.get $44 - call $~lib/rt/purerc/__release - local.get $45 - call $~lib/rt/purerc/__release - local.get $46 - call $~lib/rt/purerc/__release - local.get $43 - call $~lib/rt/purerc/__release - local.get $48 - call $~lib/rt/purerc/__release - local.get $49 - call $~lib/rt/purerc/__release - local.get $50 - call $~lib/rt/purerc/__release - local.get $47 - call $~lib/rt/purerc/__release - local.get $52 - call $~lib/rt/purerc/__release - local.get $53 - call $~lib/rt/purerc/__release - end - block - global.get $std/array/arr - i32.const 0 - i32.const 0 - call $~lib/array/Array#__set - global.get $std/array/arr - i32.const 1 - i32.const 1 - call $~lib/array/Array#__set - global.get $std/array/arr - i32.const 2 - i32.const 2 - call $~lib/array/Array#__set - global.get $std/array/arr - i32.const 3 - i32.const 3 - call $~lib/array/Array#__set - global.get $std/array/arr - i32.const 1 - call $~lib/array/Array#findIndex - global.set $std/array/i - global.get $std/array/i - i32.const 0 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 402 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - i32.const 2 - call $~lib/array/Array#findIndex - global.set $std/array/i - global.get $std/array/i - i32.const 1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 405 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - i32.const 3 - call $~lib/array/Array#findIndex - global.set $std/array/i - global.get $std/array/i - i32.const -1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 408 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - i32.const 4 - call $~lib/array/Array#findIndex - global.set $std/array/i - global.get $std/array/i - i32.const -1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 416 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - call $~lib/array/Array#get:length - i32.const 8 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 417 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - i32.const 5 - call $~lib/array/Array#findIndex - global.set $std/array/i - global.get $std/array/i - i32.const -1 - i32.ne - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 419 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - call $~lib/array/Array#pop - drop - global.get $std/array/arr - call $~lib/array/Array#pop - drop - global.get $std/array/arr - call $~lib/array/Array#pop - drop - global.get $std/array/arr - call $~lib/array/Array#pop - drop - global.get $std/array/arr - i32.const 6 - call $~lib/array/Array#findIndex - global.set $std/array/i - global.get $std/array/i - i32.const -1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 432 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - call $~lib/array/Array#get:length - i32.const 2 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 433 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - i32.const 2 - call $~lib/array/Array#push - drop - global.get $std/array/arr - i32.const 3 - call $~lib/array/Array#push - drop - end - block - global.get $std/array/arr - i32.const 7 - call $~lib/array/Array#every - local.set $53 - local.get $53 - i32.const 1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 443 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - i32.const 8 - call $~lib/array/Array#every - local.set $53 - local.get $53 - i32.const 0 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 446 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - i32.const 9 - call $~lib/array/Array#every - local.set $53 - local.get $53 - i32.const 1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 454 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - call $~lib/array/Array#get:length - i32.const 8 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 455 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - i32.const 10 - call $~lib/array/Array#every - local.set $53 - local.get $53 - i32.const 0 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 457 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - call $~lib/array/Array#pop - drop - global.get $std/array/arr - call $~lib/array/Array#pop - drop - global.get $std/array/arr - call $~lib/array/Array#pop - drop - global.get $std/array/arr - call $~lib/array/Array#pop - drop - global.get $std/array/arr - i32.const 11 - call $~lib/array/Array#every - local.set $53 - local.get $53 - i32.const 1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 470 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - call $~lib/array/Array#get:length - i32.const 2 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 471 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - i32.const 2 - call $~lib/array/Array#push - drop - global.get $std/array/arr - i32.const 3 - call $~lib/array/Array#push - drop - end - block - global.get $std/array/arr - i32.const 12 - call $~lib/array/Array#some - local.set $53 - local.get $53 - i32.const 1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 481 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - i32.const 13 - call $~lib/array/Array#some - local.set $53 - local.get $53 - i32.const 0 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 484 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - i32.const 14 - call $~lib/array/Array#some - local.set $53 - local.get $53 - i32.const 0 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 492 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - call $~lib/array/Array#get:length - i32.const 8 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 493 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - i32.const 15 - call $~lib/array/Array#some - local.set $53 - local.get $53 - i32.const 1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 495 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - call $~lib/array/Array#pop - drop - global.get $std/array/arr - call $~lib/array/Array#pop - drop - global.get $std/array/arr - call $~lib/array/Array#pop - drop - global.get $std/array/arr - call $~lib/array/Array#pop - drop - global.get $std/array/arr - i32.const 16 - call $~lib/array/Array#some - local.set $53 - local.get $53 - i32.const 0 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 508 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - call $~lib/array/Array#get:length - i32.const 2 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 509 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - i32.const 2 - call $~lib/array/Array#push - drop - global.get $std/array/arr - i32.const 3 - call $~lib/array/Array#push - drop - end - block - i32.const 0 - global.set $std/array/i - global.get $std/array/arr - i32.const 17 - call $~lib/array/Array#forEach - global.get $std/array/i - i32.const 6 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 520 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - global.set $std/array/i - global.get $std/array/arr - i32.const 18 - call $~lib/array/Array#forEach - global.get $std/array/i - i32.const 6 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 529 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - call $~lib/array/Array#get:length - i32.const 8 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 530 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - global.set $std/array/i - global.get $std/array/arr - i32.const 19 - call $~lib/array/Array#forEach - global.get $std/array/i - i32.const 406 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 533 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - call $~lib/array/Array#pop - drop - global.get $std/array/arr - call $~lib/array/Array#pop - drop - global.get $std/array/arr - call $~lib/array/Array#pop - drop - global.get $std/array/arr - call $~lib/array/Array#pop - drop - i32.const 0 - global.set $std/array/i - global.get $std/array/arr - i32.const 20 - call $~lib/array/Array#forEach - global.get $std/array/i - i32.const 1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 547 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - call $~lib/array/Array#get:length - i32.const 2 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 548 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - i32.const 2 - call $~lib/array/Array#push - drop - global.get $std/array/arr - i32.const 3 - call $~lib/array/Array#push - drop - global.get $std/array/arr - i32.const 21 - call $~lib/array/Array#forEach - global.get $std/array/arr - call $~lib/array/Array#get:length - i32.const 100 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 573 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - block $break|0 - i32.const 0 - local.set $53 - loop $repeat|0 - local.get $53 - i32.const 100 - i32.lt_s - i32.eqz - br_if $break|0 - global.get $std/array/arr - call $~lib/array/Array#pop - drop - local.get $53 - i32.const 1 - i32.add - local.set $53 - br $repeat|0 - unreachable - end - unreachable - end - global.get $std/array/arr - i32.const 0 - call $~lib/array/Array#push - drop - global.get $std/array/arr - i32.const 1 - call $~lib/array/Array#push - drop - global.get $std/array/arr - i32.const 2 - call $~lib/array/Array#push - drop - global.get $std/array/arr - i32.const 3 - call $~lib/array/Array#push - drop - end - block - global.get $std/array/arr - i32.const 22 - call $~lib/array/Array#map - local.set $53 - local.get $53 - call $~lib/array/Array#get:length - i32.const 4 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 587 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $53 - i32.const 0 - call $~lib/array/Array#__get - global.get $std/array/arr - i32.const 0 - call $~lib/array/Array#__get - f32.convert_i32_s - f32.eq - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 588 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - global.set $std/array/i - global.get $std/array/arr - i32.const 23 - call $~lib/array/Array#map - call $~lib/rt/purerc/__release - global.get $std/array/i - i32.const 6 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 597 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - call $~lib/array/Array#get:length - i32.const 8 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 598 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - global.set $std/array/i - global.get $std/array/arr - i32.const 24 - call $~lib/array/Array#map - call $~lib/rt/purerc/__release - global.get $std/array/i - i32.const 406 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 605 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - call $~lib/array/Array#pop - drop - global.get $std/array/arr - call $~lib/array/Array#pop - drop - global.get $std/array/arr - call $~lib/array/Array#pop - drop - global.get $std/array/arr - call $~lib/array/Array#pop - drop - i32.const 0 - global.set $std/array/i - global.get $std/array/arr - i32.const 25 - call $~lib/array/Array#map - call $~lib/rt/purerc/__release - global.get $std/array/i - i32.const 1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 620 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - call $~lib/array/Array#get:length - i32.const 2 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 621 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - i32.const 2 - call $~lib/array/Array#push - drop - global.get $std/array/arr - i32.const 3 - call $~lib/array/Array#push - drop - local.get $53 - call $~lib/rt/purerc/__release - end - block - global.get $std/array/arr - i32.const 26 - call $~lib/array/Array#filter - local.set $53 - local.get $53 - call $~lib/array/Array#get:length - i32.const 2 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 631 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - global.set $std/array/i - global.get $std/array/arr - i32.const 27 - call $~lib/array/Array#filter - call $~lib/rt/purerc/__release - global.get $std/array/i - i32.const 6 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 640 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - call $~lib/array/Array#get:length - i32.const 8 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 641 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - global.set $std/array/i - global.get $std/array/arr - i32.const 28 - call $~lib/array/Array#filter - call $~lib/rt/purerc/__release - global.get $std/array/i - i32.const 406 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 648 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - call $~lib/array/Array#pop - drop - global.get $std/array/arr - call $~lib/array/Array#pop - drop - global.get $std/array/arr - call $~lib/array/Array#pop - drop - global.get $std/array/arr - call $~lib/array/Array#pop - drop - i32.const 0 - global.set $std/array/i - global.get $std/array/arr - i32.const 29 - call $~lib/array/Array#filter - call $~lib/rt/purerc/__release - global.get $std/array/i - i32.const 1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 663 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - call $~lib/array/Array#get:length - i32.const 2 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 664 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - i32.const 2 - call $~lib/array/Array#push - drop - global.get $std/array/arr - i32.const 3 - call $~lib/array/Array#push - drop - local.get $53 - call $~lib/rt/purerc/__release - end - block - global.get $std/array/arr - i32.const 30 - i32.const 0 - call $~lib/array/Array#reduce - global.set $std/array/i - global.get $std/array/i - i32.const 6 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 674 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - i32.const 31 - i32.const 4 - call $~lib/array/Array#reduce - global.set $std/array/i - global.get $std/array/i - i32.const 10 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 678 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - i32.const 32 - i32.const 0 - call $~lib/array/Array#reduce - local.set $53 - local.get $53 - i32.const 0 - i32.ne - i32.const 1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 681 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - i32.const 33 - i32.const 0 - call $~lib/array/Array#reduce - local.set $53 - local.get $53 - i32.const 0 - i32.ne - i32.const 0 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 684 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - i32.const 34 - i32.const 0 - call $~lib/array/Array#reduce - global.set $std/array/i - global.get $std/array/i - i32.const 6 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 692 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - call $~lib/array/Array#get:length - i32.const 8 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 693 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - i32.const 35 - i32.const 0 - call $~lib/array/Array#reduce - global.set $std/array/i - global.get $std/array/i - i32.const 10 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 695 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - call $~lib/array/Array#pop - drop - global.get $std/array/arr - call $~lib/array/Array#pop - drop - global.get $std/array/arr - call $~lib/array/Array#pop - drop - global.get $std/array/arr - call $~lib/array/Array#pop - drop - global.get $std/array/arr - i32.const 36 - i32.const 0 - call $~lib/array/Array#reduce - global.set $std/array/i - global.get $std/array/i - i32.const 1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 708 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - call $~lib/array/Array#get:length - i32.const 2 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 709 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - i32.const 2 - call $~lib/array/Array#push - drop - global.get $std/array/arr - i32.const 3 - call $~lib/array/Array#push - drop - end - block - global.get $std/array/arr + i32.const 232 i32.const 37 - i32.const 0 - call $~lib/array/Array#reduceRight - global.set $std/array/i - global.get $std/array/i - i32.const 6 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 719 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - i32.const 38 - i32.const 4 - call $~lib/array/Array#reduceRight - global.set $std/array/i - global.get $std/array/i - i32.const 10 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 723 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - i32.const 39 - i32.const 0 - call $~lib/array/Array#reduceRight - local.set $53 - local.get $53 - i32.const 0 - i32.ne - i32.const 1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 726 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - i32.const 40 - i32.const 0 - call $~lib/array/Array#reduceRight - local.set $53 - local.get $53 - i32.const 0 - i32.ne - i32.const 0 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 729 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - i32.const 41 - i32.const 0 - call $~lib/array/Array#reduceRight - global.set $std/array/i - global.get $std/array/i - i32.const 6 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 737 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - call $~lib/array/Array#get:length - i32.const 8 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 738 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - i32.const 42 - i32.const 0 - call $~lib/array/Array#reduceRight - global.set $std/array/i - global.get $std/array/i - i32.const 10 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 740 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - call $~lib/array/Array#pop - drop - global.get $std/array/arr - call $~lib/array/Array#pop - drop - global.get $std/array/arr - call $~lib/array/Array#pop - drop - global.get $std/array/arr - call $~lib/array/Array#pop - drop - global.get $std/array/arr - i32.const 43 - i32.const 0 - call $~lib/array/Array#reduceRight - global.set $std/array/i - global.get $std/array/i - i32.const 6 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 753 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - call $~lib/array/Array#get:length - i32.const 0 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 754 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - i32.const 0 - call $~lib/array/Array#push - drop - global.get $std/array/arr - i32.const 1 - call $~lib/array/Array#push - drop - global.get $std/array/arr i32.const 2 - call $~lib/array/Array#push - drop - global.get $std/array/arr - i32.const 3 - call $~lib/array/Array#push - drop + call $~lib/builtins/abort + unreachable end + global.get $std/array/arr + call $~lib/array/Array.isArray<~lib/array/Array | null> + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 232 + i32.const 38 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + i32.const 18 + call $~lib/rt/tlsf/__alloc + call $~lib/rt/purerc/__retain + local.tee $0 + local.set $1 + local.get $0 + call $~lib/array/Array.isArray + if + i32.const 0 + i32.const 232 + i32.const 39 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + i32.const 12 + i32.const 19 + call $~lib/rt/tlsf/__alloc + call $~lib/rt/purerc/__retain + i32.const 1 + i32.const 0 + call $~lib/arraybuffer/ArrayBufferView#constructor + local.tee $3 + local.set $0 + local.get $3 + call $~lib/array/Array.isArray + if + i32.const 0 + i32.const 232 + i32.const 40 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + i32.const 272 + call $~lib/array/Array.isArray + if + i32.const 0 + i32.const 232 + i32.const 42 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $1 + call $~lib/rt/purerc/__release + local.get $0 + call $~lib/rt/purerc/__release + i32.const 5 + i32.const 0 + i32.const 20 + i32.const 296 + call $~lib/rt/common/__allocArray + call $~lib/rt/purerc/__retain + local.tee $6 + call $~lib/rt/purerc/__retain + local.tee $2 + i32.const 1 + i32.const 1 + i32.const 3 + call $~lib/array/Array#fill + call $~lib/rt/purerc/__release + local.get $2 + i32.const 5 + i32.const 0 + i32.const 20 + i32.const 376 + call $~lib/rt/common/__allocArray + call $~lib/rt/purerc/__retain + local.tee $4 + call $std/array/isArraysEqual + i32.eqz + if + i32.const 0 + i32.const 232 + i32.const 50 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $2 + i32.const 0 + i32.const 0 + i32.const 2147483647 + call $~lib/array/Array#fill + call $~lib/rt/purerc/__release + local.get $2 + i32.const 5 + i32.const 0 + i32.const 20 + i32.const 504 + call $~lib/rt/common/__allocArray + call $~lib/rt/purerc/__retain + local.tee $5 + call $std/array/isArraysEqual + i32.eqz + if + i32.const 0 + i32.const 232 + i32.const 53 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $2 + i32.const 1 + i32.const 0 + i32.const -3 + call $~lib/array/Array#fill + call $~lib/rt/purerc/__release + local.get $2 + i32.const 5 + i32.const 0 + i32.const 20 + i32.const 528 + call $~lib/rt/common/__allocArray + call $~lib/rt/purerc/__retain + local.tee $1 + call $std/array/isArraysEqual + i32.eqz + if + i32.const 0 + i32.const 232 + i32.const 56 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $2 + i32.const 2 + i32.const -2 + i32.const 2147483647 + call $~lib/array/Array#fill + call $~lib/rt/purerc/__release + local.get $2 + i32.const 5 + i32.const 0 + i32.const 20 + i32.const 552 + call $~lib/rt/common/__allocArray + call $~lib/rt/purerc/__retain + local.tee $3 + call $std/array/isArraysEqual + i32.eqz + if + i32.const 0 + i32.const 232 + i32.const 59 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $2 + i32.const 0 + i32.const 1 + i32.const 0 + call $~lib/array/Array#fill + call $~lib/rt/purerc/__release + local.get $2 + i32.const 5 + i32.const 0 + i32.const 20 + i32.const 576 + call $~lib/rt/common/__allocArray + call $~lib/rt/purerc/__retain + local.tee $0 + call $std/array/isArraysEqual + i32.eqz + if + i32.const 0 + i32.const 232 + i32.const 62 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $6 + call $~lib/rt/purerc/__release + local.get $2 + call $~lib/rt/purerc/__release + local.get $4 + call $~lib/rt/purerc/__release + local.get $5 + call $~lib/rt/purerc/__release + local.get $1 + call $~lib/rt/purerc/__release + local.get $3 + call $~lib/rt/purerc/__release + local.get $0 + call $~lib/rt/purerc/__release + i32.const 5 + i32.const 2 + i32.const 21 + i32.const 600 + call $~lib/rt/common/__allocArray + call $~lib/rt/purerc/__retain + local.tee $6 + call $~lib/rt/purerc/__retain + local.tee $2 + i32.const 1 + i32.const 1 + i32.const 3 + call $~lib/array/Array#fill + call $~lib/rt/purerc/__release + local.get $2 + i32.const 5 + i32.const 2 + i32.const 21 + i32.const 640 + call $~lib/rt/common/__allocArray + call $~lib/rt/purerc/__retain + local.tee $4 + i32.const 0 + call $std/array/isArraysEqual + i32.eqz + if + i32.const 0 + i32.const 232 + i32.const 69 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $2 + i32.const 0 + i32.const 0 + i32.const 2147483647 + call $~lib/array/Array#fill + call $~lib/rt/purerc/__release + local.get $2 + i32.const 5 + i32.const 2 + i32.const 21 + i32.const 680 + call $~lib/rt/common/__allocArray + call $~lib/rt/purerc/__retain + local.tee $5 + i32.const 0 + call $std/array/isArraysEqual + i32.eqz + if + i32.const 0 + i32.const 232 + i32.const 72 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $2 + i32.const 1 + i32.const 0 + i32.const -3 + call $~lib/array/Array#fill + call $~lib/rt/purerc/__release + local.get $2 + i32.const 5 + i32.const 2 + i32.const 21 + i32.const 720 + call $~lib/rt/common/__allocArray + call $~lib/rt/purerc/__retain + local.tee $1 + i32.const 0 + call $std/array/isArraysEqual + i32.eqz + if + i32.const 0 + i32.const 232 + i32.const 75 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $2 + i32.const 2 + i32.const -2 + i32.const 2147483647 + call $~lib/array/Array#fill + call $~lib/rt/purerc/__release + local.get $2 + i32.const 5 + i32.const 2 + i32.const 21 + i32.const 760 + call $~lib/rt/common/__allocArray + call $~lib/rt/purerc/__retain + local.tee $3 + i32.const 0 + call $std/array/isArraysEqual + i32.eqz + if + i32.const 0 + i32.const 232 + i32.const 78 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $2 + i32.const 0 + i32.const 1 + i32.const 0 + call $~lib/array/Array#fill + call $~lib/rt/purerc/__release + local.get $2 + i32.const 5 + i32.const 2 + i32.const 21 + i32.const 800 + call $~lib/rt/common/__allocArray + call $~lib/rt/purerc/__retain + local.tee $0 + i32.const 0 + call $std/array/isArraysEqual + i32.eqz + if + i32.const 0 + i32.const 232 + i32.const 81 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $6 + call $~lib/rt/purerc/__release + local.get $2 + call $~lib/rt/purerc/__release + local.get $4 + call $~lib/rt/purerc/__release + local.get $5 + call $~lib/rt/purerc/__release + local.get $1 + call $~lib/rt/purerc/__release + local.get $3 + call $~lib/rt/purerc/__release + local.get $0 + call $~lib/rt/purerc/__release + global.get $std/array/arr + i32.load offset=12 + if + i32.const 0 + i32.const 232 + i32.const 87 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + global.get $std/array/arr + call $std/array/internalCapacity + if + i32.const 0 + i32.const 232 + i32.const 88 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + global.get $std/array/arr + i32.const 42 + call $~lib/array/Array#push + global.get $std/array/arr + i32.const 0 + call $~lib/array/Array#__get + i32.const 42 + i32.ne + if + i32.const 0 + i32.const 232 + i32.const 92 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + global.get $std/array/arr + i32.load offset=12 + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 232 + i32.const 93 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + global.get $std/array/arr + call $std/array/internalCapacity + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 232 + i32.const 94 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + global.get $std/array/arr + call $~lib/array/Array#pop + i32.const 42 + i32.ne + if + i32.const 0 + i32.const 232 + i32.const 98 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + global.get $std/array/arr + i32.load offset=12 + if + i32.const 0 + i32.const 232 + i32.const 99 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + global.get $std/array/arr + call $std/array/internalCapacity + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 232 + i32.const 100 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + global.get $std/array/arr + i32.const 43 + call $~lib/array/Array#push + global.get $std/array/arr + i32.load offset=12 + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 232 + i32.const 104 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + global.get $std/array/arr + call $std/array/internalCapacity + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 232 + i32.const 105 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + global.get $std/array/arr + i32.const 0 + call $~lib/array/Array#__get + i32.const 43 + i32.ne + if + i32.const 0 + i32.const 232 + i32.const 106 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + global.get $std/array/arr + i32.const 44 + call $~lib/array/Array#push + global.get $std/array/arr + i32.load offset=12 + i32.const 2 + i32.ne + if + i32.const 0 + i32.const 232 + i32.const 110 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + global.get $std/array/arr + call $std/array/internalCapacity + i32.const 2 + i32.ne + if + i32.const 0 + i32.const 232 + i32.const 111 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + global.get $std/array/arr + i32.const 0 + call $~lib/array/Array#__get + i32.const 43 + i32.ne + if + i32.const 0 + i32.const 232 + i32.const 112 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + global.get $std/array/arr + i32.const 1 + call $~lib/array/Array#__get + i32.const 44 + i32.ne + if + i32.const 0 + i32.const 232 + i32.const 113 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + global.get $std/array/arr + i32.const 45 + call $~lib/array/Array#push + global.get $std/array/arr + i32.load offset=12 + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 232 + i32.const 117 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + global.get $std/array/arr + call $std/array/internalCapacity + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 232 + i32.const 118 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + global.get $std/array/arr + i32.const 0 + call $~lib/array/Array#__get + i32.const 43 + i32.ne + if + i32.const 0 + i32.const 232 + i32.const 119 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + global.get $std/array/arr + i32.const 1 + call $~lib/array/Array#__get + i32.const 44 + i32.ne + if + i32.const 0 + i32.const 232 + i32.const 120 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + global.get $std/array/arr + i32.const 2 + call $~lib/array/Array#__get + i32.const 45 + i32.ne + if + i32.const 0 + i32.const 232 + i32.const 121 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + call $~lib/array/Array#constructor + local.set $4 + global.get $std/array/arr + local.get $4 + call $~lib/array/Array#concat + local.set $0 + global.get $std/array/arr + call $std/array/internalCapacity + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 232 + i32.const 130 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + global.get $std/array/arr + i32.load offset=12 + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 232 + i32.const 131 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load offset=12 + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 232 + i32.const 132 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 0 + i32.const 2 + i32.const 17 + i32.const 888 + call $~lib/rt/common/__allocArray + call $~lib/rt/purerc/__retain + local.tee $1 + call $~lib/array/Array#concat + call $~lib/rt/purerc/__release + global.get $std/array/arr + call $std/array/internalCapacity + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 232 + i32.const 135 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 0 + call $~lib/array/Array#__get + i32.const 43 + i32.ne + if + i32.const 0 + i32.const 232 + i32.const 137 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 1 + call $~lib/array/Array#__get + i32.const 44 + i32.ne + if + i32.const 0 + i32.const 232 + i32.const 138 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 2 + call $~lib/array/Array#__get + i32.const 45 + i32.ne + if + i32.const 0 + i32.const 232 + i32.const 139 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $4 + i32.const 46 + call $~lib/array/Array#push + local.get $4 + i32.const 47 + call $~lib/array/Array#push + local.get $0 + call $~lib/rt/purerc/__release + global.get $std/array/arr + local.get $4 + call $~lib/array/Array#concat + local.set $0 + global.get $std/array/arr + call $std/array/internalCapacity + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 232 + i32.const 146 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $4 + i32.load offset=12 + i32.const 2 + i32.ne + if + i32.const 0 + i32.const 232 + i32.const 147 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load offset=12 + i32.const 5 + i32.ne + if + i32.const 0 + i32.const 232 + i32.const 148 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 0 + call $~lib/array/Array#__get + i32.const 43 + i32.ne + if + i32.const 0 + i32.const 232 + i32.const 149 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 1 + call $~lib/array/Array#__get + i32.const 44 + i32.ne + if + i32.const 0 + i32.const 232 + i32.const 150 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 2 + call $~lib/array/Array#__get + i32.const 45 + i32.ne + if + i32.const 0 + i32.const 232 + i32.const 151 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 3 + call $~lib/array/Array#__get + i32.const 46 + i32.ne + if + i32.const 0 + i32.const 232 + i32.const 152 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 4 + call $~lib/array/Array#__get + i32.const 47 + i32.ne + if + i32.const 0 + i32.const 232 + i32.const 153 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $0 + call $~lib/array/Array#pop + drop + local.get $0 + i32.load offset=12 + i32.const 4 + i32.ne + if + i32.const 0 + i32.const 232 + i32.const 156 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $0 + call $~lib/rt/purerc/__release + global.get $std/array/arr + i32.const 0 + call $~lib/array/Array#concat + local.tee $0 + i32.load offset=12 + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 232 + i32.const 159 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 2 + call $~lib/array/Array#__get + i32.const 45 + i32.ne + if + i32.const 0 + i32.const 232 + i32.const 160 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + i32.const 2 + i32.const 17 + i32.const 904 + call $~lib/rt/common/__allocArray + call $~lib/rt/purerc/__retain + local.tee $3 + call $~lib/rt/purerc/__retain + local.tee $5 + i32.load offset=12 + if + i32.const 0 + i32.const 232 + i32.const 163 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $0 + call $~lib/rt/purerc/__release + local.get $5 + global.get $std/array/arr + call $~lib/array/Array#concat + local.tee $0 + i32.load offset=12 + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 232 + i32.const 165 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $5 + i32.load offset=12 + if + i32.const 0 + i32.const 232 + i32.const 166 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $4 + call $~lib/rt/purerc/__release + local.get $0 + call $~lib/rt/purerc/__release + local.get $1 + call $~lib/rt/purerc/__release + local.get $3 + call $~lib/rt/purerc/__release + local.get $5 + call $~lib/rt/purerc/__release + i32.const 5 + i32.const 2 + i32.const 17 + i32.const 920 + call $~lib/rt/common/__allocArray + call $~lib/rt/purerc/__retain + local.tee $29 + i32.const 0 + call $~lib/rt/purerc/__retainRelease + local.tee $0 + i32.const 0 + i32.const 3 + i32.const 2147483647 + call $~lib/array/Array#copyWithin + local.tee $30 + i32.const 5 + i32.const 2 + i32.const 17 + i32.const 960 + call $~lib/rt/common/__allocArray + call $~lib/rt/purerc/__retain + local.tee $31 + i32.const 0 + call $std/array/isArraysEqual + i32.eqz + if + i32.const 0 + i32.const 232 + i32.const 174 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + i32.const 5 + i32.const 2 + i32.const 17 + i32.const 1000 + call $~lib/rt/common/__allocArray + call $~lib/rt/purerc/__retain + local.tee $32 + local.get $0 + call $~lib/rt/purerc/__retainRelease + local.tee $0 + i32.const 1 + i32.const 3 + i32.const 2147483647 + call $~lib/array/Array#copyWithin + local.tee $33 + i32.const 5 + i32.const 2 + i32.const 17 + i32.const 1040 + call $~lib/rt/common/__allocArray + call $~lib/rt/purerc/__retain + local.tee $34 + i32.const 0 + call $std/array/isArraysEqual + i32.eqz + if + i32.const 0 + i32.const 232 + i32.const 176 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + i32.const 5 + i32.const 2 + i32.const 17 + i32.const 1080 + call $~lib/rt/common/__allocArray + call $~lib/rt/purerc/__retain + local.tee $35 + local.get $0 + call $~lib/rt/purerc/__retainRelease + local.tee $0 + i32.const 1 + i32.const 2 + i32.const 2147483647 + call $~lib/array/Array#copyWithin + local.tee $36 + i32.const 5 + i32.const 2 + i32.const 17 + i32.const 1120 + call $~lib/rt/common/__allocArray + call $~lib/rt/purerc/__retain + local.tee $7 + i32.const 0 + call $std/array/isArraysEqual + i32.eqz + if + i32.const 0 + i32.const 232 + i32.const 178 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + i32.const 5 + i32.const 2 + i32.const 17 + i32.const 1160 + call $~lib/rt/common/__allocArray + call $~lib/rt/purerc/__retain + local.tee $10 + local.get $0 + call $~lib/rt/purerc/__retainRelease + local.tee $0 + i32.const 2 + i32.const 2 + i32.const 2147483647 + call $~lib/array/Array#copyWithin + local.tee $15 + i32.const 5 + i32.const 2 + i32.const 17 + i32.const 1200 + call $~lib/rt/common/__allocArray + call $~lib/rt/purerc/__retain + local.tee $16 + i32.const 0 + call $std/array/isArraysEqual + i32.eqz + if + i32.const 0 + i32.const 232 + i32.const 180 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + i32.const 5 + i32.const 2 + i32.const 17 + i32.const 1240 + call $~lib/rt/common/__allocArray + call $~lib/rt/purerc/__retain + local.tee $17 + local.get $0 + call $~lib/rt/purerc/__retainRelease + local.tee $0 + i32.const 0 + i32.const 3 + i32.const 4 + call $~lib/array/Array#copyWithin + local.tee $18 + i32.const 5 + i32.const 2 + i32.const 17 + i32.const 1280 + call $~lib/rt/common/__allocArray + call $~lib/rt/purerc/__retain + local.tee $19 + i32.const 0 + call $std/array/isArraysEqual + i32.eqz + if + i32.const 0 + i32.const 232 + i32.const 182 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + i32.const 5 + i32.const 2 + i32.const 17 + i32.const 1320 + call $~lib/rt/common/__allocArray + call $~lib/rt/purerc/__retain + local.tee $20 + local.get $0 + call $~lib/rt/purerc/__retainRelease + local.tee $0 + i32.const 1 + i32.const 3 + i32.const 4 + call $~lib/array/Array#copyWithin + local.tee $21 + i32.const 5 + i32.const 2 + i32.const 17 + i32.const 1360 + call $~lib/rt/common/__allocArray + call $~lib/rt/purerc/__retain + local.tee $22 + i32.const 0 + call $std/array/isArraysEqual + i32.eqz + if + i32.const 0 + i32.const 232 + i32.const 184 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + i32.const 5 + i32.const 2 + i32.const 17 + i32.const 1400 + call $~lib/rt/common/__allocArray + call $~lib/rt/purerc/__retain + local.tee $23 + local.get $0 + call $~lib/rt/purerc/__retainRelease + local.tee $0 + i32.const 1 + i32.const 2 + i32.const 4 + call $~lib/array/Array#copyWithin + local.tee $24 + i32.const 5 + i32.const 2 + i32.const 17 + i32.const 1440 + call $~lib/rt/common/__allocArray + call $~lib/rt/purerc/__retain + local.tee $28 + i32.const 0 + call $std/array/isArraysEqual + i32.eqz + if + i32.const 0 + i32.const 232 + i32.const 186 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + i32.const 5 + i32.const 2 + i32.const 17 + i32.const 1480 + call $~lib/rt/common/__allocArray + call $~lib/rt/purerc/__retain + local.tee $9 + local.get $0 + call $~lib/rt/purerc/__retainRelease + local.tee $0 + i32.const 0 + i32.const -2 + i32.const 2147483647 + call $~lib/array/Array#copyWithin + local.tee $11 + i32.const 5 + i32.const 2 + i32.const 17 + i32.const 1520 + call $~lib/rt/common/__allocArray + call $~lib/rt/purerc/__retain + local.tee $12 + i32.const 0 + call $std/array/isArraysEqual + i32.eqz + if + i32.const 0 + i32.const 232 + i32.const 188 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + i32.const 5 + i32.const 2 + i32.const 17 + i32.const 1560 + call $~lib/rt/common/__allocArray + call $~lib/rt/purerc/__retain + local.tee $13 + local.get $0 + call $~lib/rt/purerc/__retainRelease + local.tee $0 + i32.const 0 + i32.const -2 + i32.const -1 + call $~lib/array/Array#copyWithin + local.tee $14 + i32.const 5 + i32.const 2 + i32.const 17 + i32.const 1600 + call $~lib/rt/common/__allocArray + call $~lib/rt/purerc/__retain + local.tee $25 + i32.const 0 + call $std/array/isArraysEqual + i32.eqz + if + i32.const 0 + i32.const 232 + i32.const 190 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + i32.const 5 + i32.const 2 + i32.const 17 + i32.const 1640 + call $~lib/rt/common/__allocArray + call $~lib/rt/purerc/__retain + local.tee $26 + local.get $0 + call $~lib/rt/purerc/__retainRelease + local.tee $0 + i32.const -4 + i32.const -3 + i32.const -2 + call $~lib/array/Array#copyWithin + local.tee $8 + i32.const 5 + i32.const 2 + i32.const 17 + i32.const 1680 + call $~lib/rt/common/__allocArray + call $~lib/rt/purerc/__retain + local.tee $27 + i32.const 0 + call $std/array/isArraysEqual + i32.eqz + if + i32.const 0 + i32.const 232 + i32.const 192 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + i32.const 5 + i32.const 2 + i32.const 17 + i32.const 1720 + call $~lib/rt/common/__allocArray + call $~lib/rt/purerc/__retain + local.tee $2 + local.get $0 + call $~lib/rt/purerc/__retainRelease + local.tee $0 + i32.const -4 + i32.const -3 + i32.const -1 + call $~lib/array/Array#copyWithin + local.tee $6 + i32.const 5 + i32.const 2 + i32.const 17 + i32.const 1760 + call $~lib/rt/common/__allocArray + call $~lib/rt/purerc/__retain + local.tee $4 + i32.const 0 + call $std/array/isArraysEqual + i32.eqz + if + i32.const 0 + i32.const 232 + i32.const 194 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + i32.const 5 + i32.const 2 + i32.const 17 + i32.const 1800 + call $~lib/rt/common/__allocArray + call $~lib/rt/purerc/__retain + local.tee $5 + local.get $0 + call $~lib/rt/purerc/__retainRelease + local.tee $1 + i32.const -4 + i32.const -3 + i32.const 2147483647 + call $~lib/array/Array#copyWithin + local.tee $3 + i32.const 5 + i32.const 2 + i32.const 17 + i32.const 1840 + call $~lib/rt/common/__allocArray + call $~lib/rt/purerc/__retain + local.tee $0 + i32.const 0 + call $std/array/isArraysEqual + i32.eqz + if + i32.const 0 + i32.const 232 + i32.const 196 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $1 + call $~lib/rt/purerc/__release + local.get $29 + call $~lib/rt/purerc/__release + local.get $30 + call $~lib/rt/purerc/__release + local.get $31 + call $~lib/rt/purerc/__release + local.get $32 + call $~lib/rt/purerc/__release + local.get $33 + call $~lib/rt/purerc/__release + local.get $34 + call $~lib/rt/purerc/__release + local.get $35 + call $~lib/rt/purerc/__release + local.get $36 + call $~lib/rt/purerc/__release + local.get $7 + call $~lib/rt/purerc/__release + local.get $10 + call $~lib/rt/purerc/__release + local.get $15 + call $~lib/rt/purerc/__release + local.get $16 + call $~lib/rt/purerc/__release + local.get $17 + call $~lib/rt/purerc/__release + local.get $18 + call $~lib/rt/purerc/__release + local.get $19 + call $~lib/rt/purerc/__release + local.get $20 + call $~lib/rt/purerc/__release + local.get $21 + call $~lib/rt/purerc/__release + local.get $22 + call $~lib/rt/purerc/__release + local.get $23 + call $~lib/rt/purerc/__release + local.get $24 + call $~lib/rt/purerc/__release + local.get $28 + call $~lib/rt/purerc/__release + local.get $9 + call $~lib/rt/purerc/__release + local.get $11 + call $~lib/rt/purerc/__release + local.get $12 + call $~lib/rt/purerc/__release + local.get $13 + call $~lib/rt/purerc/__release + local.get $14 + call $~lib/rt/purerc/__release + local.get $25 + call $~lib/rt/purerc/__release + local.get $26 + call $~lib/rt/purerc/__release + local.get $8 + call $~lib/rt/purerc/__release + local.get $27 + call $~lib/rt/purerc/__release + local.get $2 + call $~lib/rt/purerc/__release + local.get $6 + call $~lib/rt/purerc/__release + local.get $4 + call $~lib/rt/purerc/__release + local.get $5 + call $~lib/rt/purerc/__release + local.get $3 + call $~lib/rt/purerc/__release + local.get $0 + call $~lib/rt/purerc/__release + global.get $std/array/arr + i32.const 42 + call $~lib/array/Array#unshift + global.get $std/array/arr + i32.load offset=12 + i32.const 4 + i32.ne + if + i32.const 0 + i32.const 232 + i32.const 204 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + global.get $std/array/arr + call $std/array/internalCapacity + i32.const 4 + i32.ne + if + i32.const 0 + i32.const 232 + i32.const 205 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + global.get $std/array/arr + i32.const 0 + call $~lib/array/Array#__get + i32.const 42 + i32.ne + if + i32.const 0 + i32.const 232 + i32.const 206 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + global.get $std/array/arr + i32.const 1 + call $~lib/array/Array#__get + i32.const 43 + i32.ne + if + i32.const 0 + i32.const 232 + i32.const 207 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + global.get $std/array/arr + i32.const 2 + call $~lib/array/Array#__get + i32.const 44 + i32.ne + if + i32.const 0 + i32.const 232 + i32.const 208 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + global.get $std/array/arr + i32.const 3 + call $~lib/array/Array#__get + i32.const 45 + i32.ne + if + i32.const 0 + i32.const 232 + i32.const 209 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + global.get $std/array/arr + i32.const 41 + call $~lib/array/Array#unshift + global.get $std/array/arr + i32.load offset=12 + i32.const 5 + i32.ne + if + i32.const 0 + i32.const 232 + i32.const 213 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + global.get $std/array/arr + call $std/array/internalCapacity + i32.const 5 + i32.ne + if + i32.const 0 + i32.const 232 + i32.const 214 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + global.get $std/array/arr + i32.const 0 + call $~lib/array/Array#__get + i32.const 41 + i32.ne + if + i32.const 0 + i32.const 232 + i32.const 215 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + global.get $std/array/arr + i32.const 1 + call $~lib/array/Array#__get + i32.const 42 + i32.ne + if + i32.const 0 + i32.const 232 + i32.const 216 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + global.get $std/array/arr + i32.const 2 + call $~lib/array/Array#__get + i32.const 43 + i32.ne + if + i32.const 0 + i32.const 232 + i32.const 217 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + global.get $std/array/arr + i32.const 3 + call $~lib/array/Array#__get + i32.const 44 + i32.ne + if + i32.const 0 + i32.const 232 + i32.const 218 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + global.get $std/array/arr + i32.const 4 + call $~lib/array/Array#__get + i32.const 45 + i32.ne + if + i32.const 0 + i32.const 232 + i32.const 219 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + global.get $std/array/arr + call $~lib/array/Array#shift + global.set $std/array/i + global.get $std/array/i + i32.const 41 + i32.ne + if + i32.const 0 + i32.const 232 + i32.const 228 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + global.get $std/array/arr + i32.load offset=12 + i32.const 4 + i32.ne + if + i32.const 0 + i32.const 232 + i32.const 229 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + global.get $std/array/arr + call $std/array/internalCapacity + i32.const 5 + i32.ne + if + i32.const 0 + i32.const 232 + i32.const 230 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + global.get $std/array/arr + i32.const 0 + call $~lib/array/Array#__get + i32.const 42 + i32.ne + if + i32.const 0 + i32.const 232 + i32.const 231 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + global.get $std/array/arr + i32.const 1 + call $~lib/array/Array#__get + i32.const 43 + i32.ne + if + i32.const 0 + i32.const 232 + i32.const 232 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + global.get $std/array/arr + i32.const 2 + call $~lib/array/Array#__get + i32.const 44 + i32.ne + if + i32.const 0 + i32.const 232 + i32.const 233 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + global.get $std/array/arr + i32.const 3 + call $~lib/array/Array#__get + i32.const 45 + i32.ne + if + i32.const 0 + i32.const 232 + i32.const 234 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + global.get $std/array/arr + call $~lib/array/Array#pop + global.set $std/array/i + global.get $std/array/i + i32.const 45 + i32.ne + if + i32.const 0 + i32.const 232 + i32.const 238 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + global.get $std/array/arr + i32.load offset=12 + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 232 + i32.const 239 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + global.get $std/array/arr + call $std/array/internalCapacity + i32.const 5 + i32.ne + if + i32.const 0 + i32.const 232 + i32.const 240 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + global.get $std/array/arr + i32.const 0 + call $~lib/array/Array#__get + i32.const 42 + i32.ne + if + i32.const 0 + i32.const 232 + i32.const 241 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + global.get $std/array/arr + i32.const 1 + call $~lib/array/Array#__get + i32.const 43 + i32.ne + if + i32.const 0 + i32.const 232 + i32.const 242 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + global.get $std/array/arr + i32.const 2 + call $~lib/array/Array#__get + i32.const 44 + i32.ne + if + i32.const 0 + i32.const 232 + i32.const 243 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + global.get $std/array/arr + call $~lib/array/Array#reverse + call $~lib/rt/purerc/__release + global.get $std/array/arr + i32.load offset=12 + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 232 + i32.const 251 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + global.get $std/array/arr + call $std/array/internalCapacity + i32.const 5 + i32.ne + if + i32.const 0 + i32.const 232 + i32.const 252 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + global.get $std/array/arr + i32.const 0 + call $~lib/array/Array#__get + i32.const 44 + i32.ne + if + i32.const 0 + i32.const 232 + i32.const 253 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + global.get $std/array/arr + i32.const 1 + call $~lib/array/Array#__get + i32.const 43 + i32.ne + if + i32.const 0 + i32.const 232 + i32.const 254 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + global.get $std/array/arr + i32.const 2 + call $~lib/array/Array#__get + i32.const 42 + i32.ne + if + i32.const 0 + i32.const 232 + i32.const 255 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + global.get $std/array/arr + i32.const 43 + call $~lib/array/Array#push + global.get $std/array/arr + i32.const 44 + call $~lib/array/Array#push + global.get $std/array/arr + i32.const 44 + i32.const 0 + call $~lib/array/Array#indexOf + global.set $std/array/i + global.get $std/array/i + if + i32.const 0 + i32.const 232 + i32.const 265 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + global.get $std/array/arr + i32.const 42 + i32.const 0 + call $~lib/array/Array#indexOf + global.set $std/array/i + global.get $std/array/i + i32.const 2 + i32.ne + if + i32.const 0 + i32.const 232 + i32.const 268 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + global.get $std/array/arr + i32.const 45 + i32.const 0 + call $~lib/array/Array#indexOf + global.set $std/array/i + global.get $std/array/i + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 232 + i32.const 271 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + global.get $std/array/arr + i32.const 43 + i32.const 100 + call $~lib/array/Array#indexOf + global.set $std/array/i + global.get $std/array/i + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 232 + i32.const 274 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + global.get $std/array/arr + i32.const 43 + i32.const -100 + call $~lib/array/Array#indexOf + global.set $std/array/i + global.get $std/array/i + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 232 + i32.const 277 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + global.get $std/array/arr + i32.const 43 + i32.const -2 + call $~lib/array/Array#indexOf + global.set $std/array/i + global.get $std/array/i + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 232 + i32.const 280 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + global.get $std/array/arr + i32.const 43 + i32.const -4 + call $~lib/array/Array#indexOf + global.set $std/array/i + global.get $std/array/i + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 232 + i32.const 283 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + global.get $std/array/arr + i32.const 43 + i32.const 0 + call $~lib/array/Array#indexOf + global.set $std/array/i + global.get $std/array/i + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 232 + i32.const 286 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + global.get $std/array/arr + i32.const 43 + i32.const 1 + call $~lib/array/Array#indexOf + global.set $std/array/i + global.get $std/array/i + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 232 + i32.const 289 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + global.get $std/array/arr + i32.const 43 + i32.const 2 + call $~lib/array/Array#indexOf + global.set $std/array/i + global.get $std/array/i + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 232 + i32.const 292 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + global.get $std/array/arr + i32.const 44 + i32.const 0 + call $~lib/array/Array#includes + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 232 + i32.const 299 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + global.get $std/array/arr + i32.const 42 + i32.const 0 + call $~lib/array/Array#includes + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 232 + i32.const 302 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + global.get $std/array/arr + i32.const 45 + i32.const 0 + call $~lib/array/Array#includes + if + i32.const 0 + i32.const 232 + i32.const 305 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + global.get $std/array/arr + i32.const 43 + i32.const 100 + call $~lib/array/Array#includes + if + i32.const 0 + i32.const 232 + i32.const 308 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + global.get $std/array/arr + i32.const 43 + i32.const -100 + call $~lib/array/Array#includes + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 232 + i32.const 311 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + global.get $std/array/arr + i32.const 43 + i32.const -2 + call $~lib/array/Array#includes + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 232 + i32.const 314 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + global.get $std/array/arr + i32.const 43 + i32.const -4 + call $~lib/array/Array#includes + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 232 + i32.const 317 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + global.get $std/array/arr + i32.const 43 + i32.const 0 + call $~lib/array/Array#includes + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 232 + i32.const 320 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + global.get $std/array/arr + i32.const 43 + i32.const 1 + call $~lib/array/Array#includes + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 232 + i32.const 323 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + global.get $std/array/arr + i32.const 43 + i32.const 2 + call $~lib/array/Array#includes + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 232 + i32.const 326 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + global.get $std/array/arr + i32.const 1 + i32.const 1 + call $~lib/array/Array#splice + call $~lib/rt/purerc/__release + global.get $std/array/arr + i32.load offset=12 + i32.const 4 + i32.ne + if + i32.const 0 + i32.const 232 + i32.const 330 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + global.get $std/array/arr + call $std/array/internalCapacity + i32.const 5 + i32.ne + if + i32.const 0 + i32.const 232 + i32.const 331 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + global.get $std/array/arr + i32.const 0 + call $~lib/array/Array#__get + i32.const 44 + i32.ne + if + i32.const 0 + i32.const 232 + i32.const 332 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + global.get $std/array/arr + i32.const 1 + call $~lib/array/Array#__get + i32.const 42 + i32.ne + if + i32.const 0 + i32.const 232 + i32.const 333 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + i32.const 5 + i32.const 2 + i32.const 17 + i32.const 1880 + call $~lib/rt/common/__allocArray + call $~lib/rt/purerc/__retain + local.tee $38 + call $~lib/rt/purerc/__retain + local.tee $0 + i32.const 0 + i32.const 2147483647 + call $~lib/array/Array#splice + local.tee $39 + i32.const 5 + i32.const 2 + i32.const 17 + i32.const 1920 + call $~lib/rt/common/__allocArray + call $~lib/rt/purerc/__retain + local.tee $40 + i32.const 0 + call $std/array/isArraysEqual + i32.eqz + if + i32.const 0 + i32.const 232 + i32.const 340 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 0 + i32.const 2 + i32.const 17 + i32.const 1960 + call $~lib/rt/common/__allocArray + call $~lib/rt/purerc/__retain + local.tee $41 + i32.const 0 + call $std/array/isArraysEqual + i32.eqz + if + i32.const 0 + i32.const 232 + i32.const 341 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + i32.const 5 + i32.const 2 + i32.const 17 + i32.const 1976 + call $~lib/rt/common/__allocArray + call $~lib/rt/purerc/__retain + local.tee $42 + local.get $0 + call $~lib/rt/purerc/__retainRelease + local.tee $0 + i32.const 2 + i32.const 2147483647 + call $~lib/array/Array#splice + local.tee $43 + i32.const 3 + i32.const 2 + i32.const 17 + i32.const 2016 + call $~lib/rt/common/__allocArray + call $~lib/rt/purerc/__retain + local.tee $44 + i32.const 0 + call $std/array/isArraysEqual + i32.eqz + if + i32.const 0 + i32.const 232 + i32.const 344 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 2 + i32.const 2 + i32.const 17 + i32.const 2048 + call $~lib/rt/common/__allocArray + call $~lib/rt/purerc/__retain + local.tee $45 + i32.const 0 + call $std/array/isArraysEqual + i32.eqz + if + i32.const 0 + i32.const 232 + i32.const 345 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + i32.const 5 + i32.const 2 + i32.const 17 + i32.const 2072 + call $~lib/rt/common/__allocArray + call $~lib/rt/purerc/__retain + local.tee $46 + local.get $0 + call $~lib/rt/purerc/__retainRelease + local.tee $0 + i32.const 2 + i32.const 2 + call $~lib/array/Array#splice + local.tee $47 + i32.const 2 + i32.const 2 + i32.const 17 + i32.const 2112 + call $~lib/rt/common/__allocArray + call $~lib/rt/purerc/__retain + local.tee $48 + i32.const 0 + call $std/array/isArraysEqual + i32.eqz + if + i32.const 0 + i32.const 232 + i32.const 348 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 3 + i32.const 2 + i32.const 17 + i32.const 2136 + call $~lib/rt/common/__allocArray + call $~lib/rt/purerc/__retain + local.tee $49 + i32.const 0 + call $std/array/isArraysEqual + i32.eqz + if + i32.const 0 + i32.const 232 + i32.const 349 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + i32.const 5 + i32.const 2 + i32.const 17 + i32.const 2168 + call $~lib/rt/common/__allocArray + call $~lib/rt/purerc/__retain + local.tee $50 + local.get $0 + call $~lib/rt/purerc/__retainRelease + local.tee $0 + i32.const 0 + i32.const 1 + call $~lib/array/Array#splice + local.tee $51 + i32.const 1 + i32.const 2 + i32.const 17 + i32.const 2208 + call $~lib/rt/common/__allocArray + call $~lib/rt/purerc/__retain + local.tee $52 + i32.const 0 + call $std/array/isArraysEqual + i32.eqz + if + i32.const 0 + i32.const 232 + i32.const 352 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 4 + i32.const 2 + i32.const 17 + i32.const 2232 + call $~lib/rt/common/__allocArray + call $~lib/rt/purerc/__retain + local.tee $29 + i32.const 0 + call $std/array/isArraysEqual + i32.eqz + if + i32.const 0 + i32.const 232 + i32.const 353 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + i32.const 5 + i32.const 2 + i32.const 17 + i32.const 2264 + call $~lib/rt/common/__allocArray + call $~lib/rt/purerc/__retain + local.tee $30 + local.get $0 + call $~lib/rt/purerc/__retainRelease + local.tee $0 + i32.const -1 + i32.const 2147483647 + call $~lib/array/Array#splice + local.tee $31 + i32.const 1 + i32.const 2 + i32.const 17 + i32.const 2304 + call $~lib/rt/common/__allocArray + call $~lib/rt/purerc/__retain + local.tee $32 + i32.const 0 + call $std/array/isArraysEqual + i32.eqz + if + i32.const 0 + i32.const 232 + i32.const 356 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 4 + i32.const 2 + i32.const 17 + i32.const 2328 + call $~lib/rt/common/__allocArray + call $~lib/rt/purerc/__retain + local.tee $33 + i32.const 0 + call $std/array/isArraysEqual + i32.eqz + if + i32.const 0 + i32.const 232 + i32.const 357 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + i32.const 5 + i32.const 2 + i32.const 17 + i32.const 2360 + call $~lib/rt/common/__allocArray + call $~lib/rt/purerc/__retain + local.tee $34 + local.get $0 + call $~lib/rt/purerc/__retainRelease + local.tee $0 + i32.const -2 + i32.const 2147483647 + call $~lib/array/Array#splice + local.tee $35 + i32.const 2 + i32.const 2 + i32.const 17 + i32.const 2400 + call $~lib/rt/common/__allocArray + call $~lib/rt/purerc/__retain + local.tee $36 + i32.const 0 + call $std/array/isArraysEqual + i32.eqz + if + i32.const 0 + i32.const 232 + i32.const 360 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 3 + i32.const 2 + i32.const 17 + i32.const 2424 + call $~lib/rt/common/__allocArray + call $~lib/rt/purerc/__retain + local.tee $7 + i32.const 0 + call $std/array/isArraysEqual + i32.eqz + if + i32.const 0 + i32.const 232 + i32.const 361 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + i32.const 5 + i32.const 2 + i32.const 17 + i32.const 2456 + call $~lib/rt/common/__allocArray + call $~lib/rt/purerc/__retain + local.tee $10 + local.get $0 + call $~lib/rt/purerc/__retainRelease + local.tee $0 + i32.const -2 + i32.const 1 + call $~lib/array/Array#splice + local.tee $15 + i32.const 1 + i32.const 2 + i32.const 17 + i32.const 2496 + call $~lib/rt/common/__allocArray + call $~lib/rt/purerc/__retain + local.tee $16 + i32.const 0 + call $std/array/isArraysEqual + i32.eqz + if + i32.const 0 + i32.const 232 + i32.const 364 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 4 + i32.const 2 + i32.const 17 + i32.const 2520 + call $~lib/rt/common/__allocArray + call $~lib/rt/purerc/__retain + local.tee $17 + i32.const 0 + call $std/array/isArraysEqual + i32.eqz + if + i32.const 0 + i32.const 232 + i32.const 365 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + i32.const 5 + i32.const 2 + i32.const 17 + i32.const 2552 + call $~lib/rt/common/__allocArray + call $~lib/rt/purerc/__retain + local.tee $18 + local.get $0 + call $~lib/rt/purerc/__retainRelease + local.tee $0 + i32.const -7 + i32.const 1 + call $~lib/array/Array#splice + local.tee $19 + i32.const 1 + i32.const 2 + i32.const 17 + i32.const 2592 + call $~lib/rt/common/__allocArray + call $~lib/rt/purerc/__retain + local.tee $20 + i32.const 0 + call $std/array/isArraysEqual + i32.eqz + if + i32.const 0 + i32.const 232 + i32.const 368 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 4 + i32.const 2 + i32.const 17 + i32.const 2616 + call $~lib/rt/common/__allocArray + call $~lib/rt/purerc/__retain + local.tee $21 + i32.const 0 + call $std/array/isArraysEqual + i32.eqz + if + i32.const 0 + i32.const 232 + i32.const 369 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + i32.const 5 + i32.const 2 + i32.const 17 + i32.const 2648 + call $~lib/rt/common/__allocArray + call $~lib/rt/purerc/__retain + local.tee $22 + local.get $0 + call $~lib/rt/purerc/__retainRelease + local.tee $0 + i32.const -2 + i32.const -1 + call $~lib/array/Array#splice + local.tee $23 + i32.const 0 + i32.const 2 + i32.const 17 + i32.const 2688 + call $~lib/rt/common/__allocArray + call $~lib/rt/purerc/__retain + local.tee $24 + i32.const 0 + call $std/array/isArraysEqual + i32.eqz + if + i32.const 0 + i32.const 232 + i32.const 372 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 5 + i32.const 2 + i32.const 17 + i32.const 2704 + call $~lib/rt/common/__allocArray + call $~lib/rt/purerc/__retain + local.tee $28 + i32.const 0 + call $std/array/isArraysEqual + i32.eqz + if + i32.const 0 + i32.const 232 + i32.const 373 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + i32.const 5 + i32.const 2 + i32.const 17 + i32.const 2744 + call $~lib/rt/common/__allocArray + call $~lib/rt/purerc/__retain + local.tee $9 + local.get $0 + call $~lib/rt/purerc/__retainRelease + local.tee $0 + i32.const 1 + i32.const -2 + call $~lib/array/Array#splice + local.tee $11 + i32.const 0 + i32.const 2 + i32.const 17 + i32.const 2784 + call $~lib/rt/common/__allocArray + call $~lib/rt/purerc/__retain + local.tee $12 + i32.const 0 + call $std/array/isArraysEqual + i32.eqz + if + i32.const 0 + i32.const 232 + i32.const 376 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 5 + i32.const 2 + i32.const 17 + i32.const 2800 + call $~lib/rt/common/__allocArray + call $~lib/rt/purerc/__retain + local.tee $13 + i32.const 0 + call $std/array/isArraysEqual + i32.eqz + if + i32.const 0 + i32.const 232 + i32.const 377 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + i32.const 5 + i32.const 2 + i32.const 17 + i32.const 2840 + call $~lib/rt/common/__allocArray + call $~lib/rt/purerc/__retain + local.tee $14 + local.get $0 + call $~lib/rt/purerc/__retainRelease + local.tee $0 + i32.const 4 + i32.const 0 + call $~lib/array/Array#splice + local.tee $25 + i32.const 0 + i32.const 2 + i32.const 17 + i32.const 2880 + call $~lib/rt/common/__allocArray + call $~lib/rt/purerc/__retain + local.tee $26 + i32.const 0 + call $std/array/isArraysEqual + i32.eqz + if + i32.const 0 + i32.const 232 + i32.const 380 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 5 + i32.const 2 + i32.const 17 + i32.const 2896 + call $~lib/rt/common/__allocArray + call $~lib/rt/purerc/__retain + local.tee $8 + i32.const 0 + call $std/array/isArraysEqual + i32.eqz + if + i32.const 0 + i32.const 232 + i32.const 381 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + i32.const 5 + i32.const 2 + i32.const 17 + i32.const 2936 + call $~lib/rt/common/__allocArray + call $~lib/rt/purerc/__retain + local.tee $27 + local.get $0 + call $~lib/rt/purerc/__retainRelease + local.tee $0 + i32.const 7 + i32.const 0 + call $~lib/array/Array#splice + local.tee $2 + i32.const 0 + i32.const 2 + i32.const 17 + i32.const 2976 + call $~lib/rt/common/__allocArray + call $~lib/rt/purerc/__retain + local.tee $6 + i32.const 0 + call $std/array/isArraysEqual + i32.eqz + if + i32.const 0 + i32.const 232 + i32.const 384 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 5 + i32.const 2 + i32.const 17 + i32.const 2992 + call $~lib/rt/common/__allocArray + call $~lib/rt/purerc/__retain + local.tee $4 + i32.const 0 + call $std/array/isArraysEqual + i32.eqz + if + i32.const 0 + i32.const 232 + i32.const 385 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + i32.const 5 + i32.const 2 + i32.const 17 + i32.const 3032 + call $~lib/rt/common/__allocArray + call $~lib/rt/purerc/__retain + local.tee $5 + local.get $0 + call $~lib/rt/purerc/__retainRelease + local.tee $37 + i32.const 7 + i32.const 5 + call $~lib/array/Array#splice + local.tee $1 + i32.const 0 + i32.const 2 + i32.const 17 + i32.const 3072 + call $~lib/rt/common/__allocArray + call $~lib/rt/purerc/__retain + local.tee $3 + i32.const 0 + call $std/array/isArraysEqual + i32.eqz + if + i32.const 0 + i32.const 232 + i32.const 388 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $37 + i32.const 5 + i32.const 2 + i32.const 17 + i32.const 3088 + call $~lib/rt/common/__allocArray + call $~lib/rt/purerc/__retain + local.tee $0 + i32.const 0 + call $std/array/isArraysEqual + i32.eqz + if + i32.const 0 + i32.const 232 + i32.const 389 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $38 + call $~lib/rt/purerc/__release + local.get $37 + call $~lib/rt/purerc/__release + local.get $39 + call $~lib/rt/purerc/__release + local.get $40 + call $~lib/rt/purerc/__release + local.get $41 + call $~lib/rt/purerc/__release + local.get $42 + call $~lib/rt/purerc/__release + local.get $43 + call $~lib/rt/purerc/__release + local.get $44 + call $~lib/rt/purerc/__release + local.get $45 + call $~lib/rt/purerc/__release + local.get $46 + call $~lib/rt/purerc/__release + local.get $47 + call $~lib/rt/purerc/__release + local.get $48 + call $~lib/rt/purerc/__release + local.get $49 + call $~lib/rt/purerc/__release + local.get $50 + call $~lib/rt/purerc/__release + local.get $51 + call $~lib/rt/purerc/__release + local.get $52 + call $~lib/rt/purerc/__release + local.get $29 + call $~lib/rt/purerc/__release + local.get $30 + call $~lib/rt/purerc/__release + local.get $31 + call $~lib/rt/purerc/__release + local.get $32 + call $~lib/rt/purerc/__release + local.get $33 + call $~lib/rt/purerc/__release + local.get $34 + call $~lib/rt/purerc/__release + local.get $35 + call $~lib/rt/purerc/__release + local.get $36 + call $~lib/rt/purerc/__release + local.get $7 + call $~lib/rt/purerc/__release + local.get $10 + call $~lib/rt/purerc/__release + local.get $15 + call $~lib/rt/purerc/__release + local.get $16 + call $~lib/rt/purerc/__release + local.get $17 + call $~lib/rt/purerc/__release + local.get $18 + call $~lib/rt/purerc/__release + local.get $19 + call $~lib/rt/purerc/__release + local.get $20 + call $~lib/rt/purerc/__release + local.get $21 + call $~lib/rt/purerc/__release + local.get $22 + call $~lib/rt/purerc/__release + local.get $23 + call $~lib/rt/purerc/__release + local.get $24 + call $~lib/rt/purerc/__release + local.get $28 + call $~lib/rt/purerc/__release + local.get $9 + call $~lib/rt/purerc/__release + local.get $11 + call $~lib/rt/purerc/__release + local.get $12 + call $~lib/rt/purerc/__release + local.get $13 + call $~lib/rt/purerc/__release + local.get $14 + call $~lib/rt/purerc/__release + local.get $25 + call $~lib/rt/purerc/__release + local.get $26 + call $~lib/rt/purerc/__release + local.get $8 + call $~lib/rt/purerc/__release + local.get $27 + call $~lib/rt/purerc/__release + local.get $2 + call $~lib/rt/purerc/__release + local.get $6 + call $~lib/rt/purerc/__release + local.get $4 + call $~lib/rt/purerc/__release + local.get $5 + call $~lib/rt/purerc/__release + local.get $1 + call $~lib/rt/purerc/__release + local.get $3 + call $~lib/rt/purerc/__release + local.get $0 + call $~lib/rt/purerc/__release + global.get $std/array/arr + i32.const 0 + i32.const 0 + call $~lib/array/Array#__set + global.get $std/array/arr + i32.const 1 + i32.const 1 + call $~lib/array/Array#__set + global.get $std/array/arr + i32.const 2 + i32.const 2 + call $~lib/array/Array#__set + global.get $std/array/arr + i32.const 3 + i32.const 3 + call $~lib/array/Array#__set + global.get $std/array/arr + i32.const 1 + call $~lib/array/Array#findIndex + global.set $std/array/i + global.get $std/array/i + if + i32.const 0 + i32.const 232 + i32.const 402 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + global.get $std/array/arr + i32.const 2 + call $~lib/array/Array#findIndex + global.set $std/array/i + global.get $std/array/i + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 232 + i32.const 405 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + global.get $std/array/arr + i32.const 3 + call $~lib/array/Array#findIndex + global.set $std/array/i + global.get $std/array/i + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 232 + i32.const 408 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + global.get $std/array/arr + i32.const 4 + call $~lib/array/Array#findIndex + global.set $std/array/i + global.get $std/array/i + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 232 + i32.const 416 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + global.get $std/array/arr + i32.load offset=12 + i32.const 8 + i32.ne + if + i32.const 0 + i32.const 232 + i32.const 417 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + global.get $std/array/arr + i32.const 5 + call $~lib/array/Array#findIndex + global.set $std/array/i + global.get $std/array/i + i32.const -1 + i32.eq + if + i32.const 0 + i32.const 232 + i32.const 419 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + global.get $std/array/arr + call $~lib/array/Array#pop + drop + global.get $std/array/arr + call $~lib/array/Array#pop + drop + global.get $std/array/arr + call $~lib/array/Array#pop + drop + global.get $std/array/arr + call $~lib/array/Array#pop + drop + global.get $std/array/arr + i32.const 6 + call $~lib/array/Array#findIndex + global.set $std/array/i + global.get $std/array/i + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 232 + i32.const 432 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + global.get $std/array/arr + i32.load offset=12 + i32.const 2 + i32.ne + if + i32.const 0 + i32.const 232 + i32.const 433 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + global.get $std/array/arr + i32.const 2 + call $~lib/array/Array#push + global.get $std/array/arr + i32.const 3 + call $~lib/array/Array#push + global.get $std/array/arr + i32.const 7 + call $~lib/array/Array#every + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 232 + i32.const 443 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + global.get $std/array/arr + i32.const 8 + call $~lib/array/Array#every + if + i32.const 0 + i32.const 232 + i32.const 446 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + global.get $std/array/arr + i32.const 9 + call $~lib/array/Array#every + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 232 + i32.const 454 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + global.get $std/array/arr + i32.load offset=12 + i32.const 8 + i32.ne + if + i32.const 0 + i32.const 232 + i32.const 455 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + global.get $std/array/arr + i32.const 10 + call $~lib/array/Array#every + if + i32.const 0 + i32.const 232 + i32.const 457 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + global.get $std/array/arr + call $~lib/array/Array#pop + drop + global.get $std/array/arr + call $~lib/array/Array#pop + drop + global.get $std/array/arr + call $~lib/array/Array#pop + drop + global.get $std/array/arr + call $~lib/array/Array#pop + drop + global.get $std/array/arr + i32.const 11 + call $~lib/array/Array#every + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 232 + i32.const 470 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + global.get $std/array/arr + i32.load offset=12 + i32.const 2 + i32.ne + if + i32.const 0 + i32.const 232 + i32.const 471 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + global.get $std/array/arr + i32.const 2 + call $~lib/array/Array#push + global.get $std/array/arr + i32.const 3 + call $~lib/array/Array#push + global.get $std/array/arr + i32.const 12 + call $~lib/array/Array#some + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 232 + i32.const 481 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + global.get $std/array/arr + i32.const 13 + call $~lib/array/Array#some + if + i32.const 0 + i32.const 232 + i32.const 484 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + global.get $std/array/arr + i32.const 14 + call $~lib/array/Array#some + if + i32.const 0 + i32.const 232 + i32.const 492 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + global.get $std/array/arr + i32.load offset=12 + i32.const 8 + i32.ne + if + i32.const 0 + i32.const 232 + i32.const 493 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + global.get $std/array/arr + i32.const 15 + call $~lib/array/Array#some + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 232 + i32.const 495 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + global.get $std/array/arr + call $~lib/array/Array#pop + drop + global.get $std/array/arr + call $~lib/array/Array#pop + drop + global.get $std/array/arr + call $~lib/array/Array#pop + drop + global.get $std/array/arr + call $~lib/array/Array#pop + drop + global.get $std/array/arr + i32.const 16 + call $~lib/array/Array#some + if + i32.const 0 + i32.const 232 + i32.const 508 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + global.get $std/array/arr + i32.load offset=12 + i32.const 2 + i32.ne + if + i32.const 0 + i32.const 232 + i32.const 509 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + global.get $std/array/arr + i32.const 2 + call $~lib/array/Array#push + global.get $std/array/arr + i32.const 3 + call $~lib/array/Array#push + i32.const 0 + global.set $std/array/i + global.get $std/array/arr + i32.const 17 + call $~lib/array/Array#forEach + global.get $std/array/i + i32.const 6 + i32.ne + if + i32.const 0 + i32.const 232 + i32.const 520 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + global.set $std/array/i + global.get $std/array/arr + i32.const 18 + call $~lib/array/Array#forEach + global.get $std/array/i + i32.const 6 + i32.ne + if + i32.const 0 + i32.const 232 + i32.const 529 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + global.get $std/array/arr + i32.load offset=12 + i32.const 8 + i32.ne + if + i32.const 0 + i32.const 232 + i32.const 530 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + global.set $std/array/i + global.get $std/array/arr + i32.const 19 + call $~lib/array/Array#forEach + global.get $std/array/i + i32.const 406 + i32.ne + if + i32.const 0 + i32.const 232 + i32.const 533 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + global.get $std/array/arr + call $~lib/array/Array#pop + drop + global.get $std/array/arr + call $~lib/array/Array#pop + drop + global.get $std/array/arr + call $~lib/array/Array#pop + drop + global.get $std/array/arr + call $~lib/array/Array#pop + drop + i32.const 0 + global.set $std/array/i + global.get $std/array/arr + i32.const 20 + call $~lib/array/Array#forEach + global.get $std/array/i + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 232 + i32.const 547 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + global.get $std/array/arr + i32.load offset=12 + i32.const 2 + i32.ne + if + i32.const 0 + i32.const 232 + i32.const 548 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + global.get $std/array/arr + i32.const 2 + call $~lib/array/Array#push + global.get $std/array/arr + i32.const 3 + call $~lib/array/Array#push + global.get $std/array/arr + i32.const 21 + call $~lib/array/Array#forEach + global.get $std/array/arr + i32.load offset=12 + i32.const 100 + i32.ne + if + i32.const 0 + i32.const 232 + i32.const 573 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + local.set $1 + loop $repeat|0 + local.get $1 + i32.const 100 + i32.lt_s + if + global.get $std/array/arr + call $~lib/array/Array#pop + drop + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $repeat|0 + end + end + global.get $std/array/arr + i32.const 0 + call $~lib/array/Array#push + global.get $std/array/arr + i32.const 1 + call $~lib/array/Array#push + global.get $std/array/arr + i32.const 2 + call $~lib/array/Array#push + global.get $std/array/arr + i32.const 3 + call $~lib/array/Array#push + global.get $std/array/arr + call $~lib/array/Array#map + local.tee $0 + i32.load offset=12 + i32.const 4 + i32.ne + if + i32.const 0 + i32.const 232 + i32.const 587 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 0 + call $~lib/array/Array#__get + global.get $std/array/arr + i32.const 0 + call $~lib/array/Array#__get + f32.convert_i32_s + f32.ne + if + i32.const 0 + i32.const 232 + i32.const 588 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + global.set $std/array/i + global.get $std/array/arr + i32.const 23 + call $~lib/array/Array#map + call $~lib/rt/purerc/__release + global.get $std/array/i + i32.const 6 + i32.ne + if + i32.const 0 + i32.const 232 + i32.const 597 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + global.get $std/array/arr + i32.load offset=12 + i32.const 8 + i32.ne + if + i32.const 0 + i32.const 232 + i32.const 598 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + global.set $std/array/i + global.get $std/array/arr + i32.const 24 + call $~lib/array/Array#map + call $~lib/rt/purerc/__release + global.get $std/array/i + i32.const 406 + i32.ne + if + i32.const 0 + i32.const 232 + i32.const 605 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + global.get $std/array/arr + call $~lib/array/Array#pop + drop + global.get $std/array/arr + call $~lib/array/Array#pop + drop + global.get $std/array/arr + call $~lib/array/Array#pop + drop + global.get $std/array/arr + call $~lib/array/Array#pop + drop + i32.const 0 + global.set $std/array/i + global.get $std/array/arr + i32.const 25 + call $~lib/array/Array#map + call $~lib/rt/purerc/__release + global.get $std/array/i + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 232 + i32.const 620 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + global.get $std/array/arr + i32.load offset=12 + i32.const 2 + i32.ne + if + i32.const 0 + i32.const 232 + i32.const 621 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + global.get $std/array/arr + i32.const 2 + call $~lib/array/Array#push + global.get $std/array/arr + i32.const 3 + call $~lib/array/Array#push + local.get $0 + call $~lib/rt/purerc/__release + global.get $std/array/arr + i32.const 26 + call $~lib/array/Array#filter + local.tee $0 + i32.load offset=12 + i32.const 2 + i32.ne + if + i32.const 0 + i32.const 232 + i32.const 631 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + global.set $std/array/i + global.get $std/array/arr + i32.const 27 + call $~lib/array/Array#filter + call $~lib/rt/purerc/__release + global.get $std/array/i + i32.const 6 + i32.ne + if + i32.const 0 + i32.const 232 + i32.const 640 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + global.get $std/array/arr + i32.load offset=12 + i32.const 8 + i32.ne + if + i32.const 0 + i32.const 232 + i32.const 641 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + global.set $std/array/i + global.get $std/array/arr + i32.const 28 + call $~lib/array/Array#filter + call $~lib/rt/purerc/__release + global.get $std/array/i + i32.const 406 + i32.ne + if + i32.const 0 + i32.const 232 + i32.const 648 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + global.get $std/array/arr + call $~lib/array/Array#pop + drop + global.get $std/array/arr + call $~lib/array/Array#pop + drop + global.get $std/array/arr + call $~lib/array/Array#pop + drop + global.get $std/array/arr + call $~lib/array/Array#pop + drop + i32.const 0 + global.set $std/array/i + global.get $std/array/arr + i32.const 29 + call $~lib/array/Array#filter + call $~lib/rt/purerc/__release + global.get $std/array/i + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 232 + i32.const 663 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + global.get $std/array/arr + i32.load offset=12 + i32.const 2 + i32.ne + if + i32.const 0 + i32.const 232 + i32.const 664 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + global.get $std/array/arr + i32.const 2 + call $~lib/array/Array#push + global.get $std/array/arr + i32.const 3 + call $~lib/array/Array#push + local.get $0 + call $~lib/rt/purerc/__release + global.get $std/array/arr + i32.const 30 + i32.const 0 + call $~lib/array/Array#reduce + global.set $std/array/i + global.get $std/array/i + i32.const 6 + i32.ne + if + i32.const 0 + i32.const 232 + i32.const 674 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + global.get $std/array/arr + i32.const 31 + i32.const 4 + call $~lib/array/Array#reduce + global.set $std/array/i + global.get $std/array/i + i32.const 10 + i32.ne + if + i32.const 0 + i32.const 232 + i32.const 678 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + global.get $std/array/arr + i32.const 32 + i32.const 0 + call $~lib/array/Array#reduce + i32.const 0 + i32.ne + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 232 + i32.const 681 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + global.get $std/array/arr + i32.const 33 + i32.const 0 + call $~lib/array/Array#reduce + if + i32.const 0 + i32.const 232 + i32.const 684 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + global.get $std/array/arr + i32.const 34 + i32.const 0 + call $~lib/array/Array#reduce + global.set $std/array/i + global.get $std/array/i + i32.const 6 + i32.ne + if + i32.const 0 + i32.const 232 + i32.const 692 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + global.get $std/array/arr + i32.load offset=12 + i32.const 8 + i32.ne + if + i32.const 0 + i32.const 232 + i32.const 693 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + global.get $std/array/arr + i32.const 35 + i32.const 0 + call $~lib/array/Array#reduce + global.set $std/array/i + global.get $std/array/i + i32.const 10 + i32.ne + if + i32.const 0 + i32.const 232 + i32.const 695 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + global.get $std/array/arr + call $~lib/array/Array#pop + drop + global.get $std/array/arr + call $~lib/array/Array#pop + drop + global.get $std/array/arr + call $~lib/array/Array#pop + drop + global.get $std/array/arr + call $~lib/array/Array#pop + drop + global.get $std/array/arr + i32.const 36 + i32.const 0 + call $~lib/array/Array#reduce + global.set $std/array/i + global.get $std/array/i + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 232 + i32.const 708 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + global.get $std/array/arr + i32.load offset=12 + i32.const 2 + i32.ne + if + i32.const 0 + i32.const 232 + i32.const 709 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + global.get $std/array/arr + i32.const 2 + call $~lib/array/Array#push + global.get $std/array/arr + i32.const 3 + call $~lib/array/Array#push + global.get $std/array/arr + i32.const 37 + i32.const 0 + call $~lib/array/Array#reduceRight + global.set $std/array/i + global.get $std/array/i + i32.const 6 + i32.ne + if + i32.const 0 + i32.const 232 + i32.const 719 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + global.get $std/array/arr + i32.const 38 + i32.const 4 + call $~lib/array/Array#reduceRight + global.set $std/array/i + global.get $std/array/i + i32.const 10 + i32.ne + if + i32.const 0 + i32.const 232 + i32.const 723 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + global.get $std/array/arr + i32.const 39 + i32.const 0 + call $~lib/array/Array#reduceRight + i32.const 0 + i32.ne + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 232 + i32.const 726 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + global.get $std/array/arr + i32.const 40 + i32.const 0 + call $~lib/array/Array#reduceRight + if + i32.const 0 + i32.const 232 + i32.const 729 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + global.get $std/array/arr + i32.const 41 + i32.const 0 + call $~lib/array/Array#reduceRight + global.set $std/array/i + global.get $std/array/i + i32.const 6 + i32.ne + if + i32.const 0 + i32.const 232 + i32.const 737 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + global.get $std/array/arr + i32.load offset=12 + i32.const 8 + i32.ne + if + i32.const 0 + i32.const 232 + i32.const 738 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + global.get $std/array/arr + i32.const 42 + i32.const 0 + call $~lib/array/Array#reduceRight + global.set $std/array/i + global.get $std/array/i + i32.const 10 + i32.ne + if + i32.const 0 + i32.const 232 + i32.const 740 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + global.get $std/array/arr + call $~lib/array/Array#pop + drop + global.get $std/array/arr + call $~lib/array/Array#pop + drop + global.get $std/array/arr + call $~lib/array/Array#pop + drop + global.get $std/array/arr + call $~lib/array/Array#pop + drop + global.get $std/array/arr + i32.const 43 + i32.const 0 + call $~lib/array/Array#reduceRight + global.set $std/array/i + global.get $std/array/i + i32.const 6 + i32.ne + if + i32.const 0 + i32.const 232 + i32.const 753 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + global.get $std/array/arr + i32.load offset=12 + if + i32.const 0 + i32.const 232 + i32.const 754 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + global.get $std/array/arr + i32.const 0 + call $~lib/array/Array#push + global.get $std/array/arr + i32.const 1 + call $~lib/array/Array#push + global.get $std/array/arr + i32.const 2 + call $~lib/array/Array#push + global.get $std/array/arr + i32.const 3 + call $~lib/array/Array#push call $~lib/bindings/Math/random i64.reinterpret_f64 call $~lib/math/NativeMath.seedRandom - block - i32.const 8 - i32.const 2 - i32.const 22 - i32.const 3360 - call $~lib/rt/common/__allocArray - call $~lib/rt/purerc/__retain - local.tee $52 - call $~lib/rt/purerc/__retain - local.set $53 - i32.const 0 - global.set $~lib/argc - local.get $53 - i32.const 0 - call $~lib/array/Array#sort|trampoline - call $~lib/rt/purerc/__release - local.get $53 - i32.const 8 - i32.const 2 - i32.const 22 - i32.const 3408 - call $~lib/rt/common/__allocArray - call $~lib/rt/purerc/__retain - local.tee $50 - i32.const 0 - call $std/array/isArraysEqual - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 843 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - i32.const 8 - i32.const 3 - i32.const 23 - i32.const 3456 - call $~lib/rt/common/__allocArray - call $~lib/rt/purerc/__retain - local.tee $49 - call $~lib/rt/purerc/__retain - local.set $47 - i32.const 0 - global.set $~lib/argc - local.get $47 - i32.const 0 - call $~lib/array/Array#sort|trampoline - call $~lib/rt/purerc/__release - local.get $47 - i32.const 8 - i32.const 3 - i32.const 23 - i32.const 3536 - call $~lib/rt/common/__allocArray - call $~lib/rt/purerc/__retain - local.tee $43 - i32.const 0 - call $std/array/isArraysEqual - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 847 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - i32.const 5 - i32.const 2 - i32.const 17 - i32.const 3616 - call $~lib/rt/common/__allocArray - call $~lib/rt/purerc/__retain - local.tee $46 - call $~lib/rt/purerc/__retain - local.set $48 - i32.const 0 - global.set $~lib/argc - local.get $48 - i32.const 0 - call $~lib/array/Array#sort|trampoline - call $~lib/rt/purerc/__release - local.get $48 - i32.const 5 - i32.const 2 - i32.const 17 - i32.const 3656 - call $~lib/rt/common/__allocArray - call $~lib/rt/purerc/__retain - local.tee $44 - i32.const 0 - call $std/array/isArraysEqual - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 851 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - i32.const 5 - i32.const 2 - i32.const 21 - i32.const 3696 - call $~lib/rt/common/__allocArray - call $~lib/rt/purerc/__retain - local.tee $39 - call $~lib/rt/purerc/__retain - local.set $45 - i32.const 0 - global.set $~lib/argc - local.get $45 - i32.const 0 - call $~lib/array/Array#sort|trampoline - call $~lib/rt/purerc/__release - local.get $45 - i32.const 5 - i32.const 2 - i32.const 21 - i32.const 3736 - call $~lib/rt/common/__allocArray - call $~lib/rt/purerc/__retain - local.tee $41 - i32.const 0 - call $std/array/isArraysEqual - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 855 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - i32.const 2 - i32.const 17 - i32.const 3776 - call $~lib/rt/common/__allocArray - call $~lib/rt/purerc/__retain - local.tee $40 - call $~lib/rt/purerc/__retain - local.set $42 - i32.const 1 - i32.const 2 - i32.const 17 - i32.const 3792 - call $~lib/rt/common/__allocArray - call $~lib/rt/purerc/__retain - local.tee $38 - call $~lib/rt/purerc/__retain - local.set $3 - i32.const 2 - i32.const 2 - i32.const 17 - i32.const 3816 - call $~lib/rt/common/__allocArray - call $~lib/rt/purerc/__retain - local.tee $1 - call $~lib/rt/purerc/__retain - local.set $36 - i32.const 4 - i32.const 2 - i32.const 17 - i32.const 3840 - call $~lib/rt/common/__allocArray - call $~lib/rt/purerc/__retain - local.tee $4 - call $~lib/rt/purerc/__retain - local.set $0 - i32.const 4 - i32.const 2 - i32.const 17 - i32.const 3872 - call $~lib/rt/common/__allocArray - call $~lib/rt/purerc/__retain - local.tee $7 - call $~lib/rt/purerc/__retain - local.set $2 - i32.const 64 - call $std/array/createReverseOrderedArray - local.set $10 - i32.const 128 - call $std/array/createReverseOrderedArray - local.set $5 - i32.const 1024 - call $std/array/createReverseOrderedArray - local.set $8 - i32.const 10000 - call $std/array/createReverseOrderedArray - local.set $6 - i32.const 512 - call $std/array/createRandomOrderedArray - local.set $14 - local.get $42 - call $std/array/assertSortedDefault - local.get $3 - call $std/array/assertSortedDefault - local.get $3 - i32.const 1 - i32.const 2 - i32.const 17 - i32.const 3960 - call $~lib/rt/common/__allocArray - call $~lib/rt/purerc/__retain - local.tee $9 - i32.const 0 - call $std/array/isArraysEqual - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 875 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $36 - call $std/array/assertSortedDefault - local.get $36 - i32.const 2 - i32.const 2 - i32.const 17 - i32.const 3984 - call $~lib/rt/common/__allocArray - call $~lib/rt/purerc/__retain - local.tee $13 - i32.const 0 - call $std/array/isArraysEqual - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 878 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $0 - call $std/array/assertSortedDefault - local.get $0 - local.get $2 - i32.const 0 - call $std/array/isArraysEqual - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 881 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $10 - call $std/array/assertSortedDefault - local.get $10 - local.get $2 - i32.const 4 - call $std/array/isArraysEqual - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 884 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $5 - call $std/array/assertSortedDefault - local.get $5 - local.get $2 - i32.const 4 - call $std/array/isArraysEqual - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 887 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $8 - call $std/array/assertSortedDefault - local.get $8 - local.get $2 - i32.const 4 - call $std/array/isArraysEqual - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 890 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $6 - call $std/array/assertSortedDefault - local.get $6 - local.get $2 - i32.const 4 - call $std/array/isArraysEqual - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 893 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $14 - call $std/array/assertSortedDefault - local.get $52 - call $~lib/rt/purerc/__release - local.get $53 - call $~lib/rt/purerc/__release - local.get $50 - call $~lib/rt/purerc/__release - local.get $49 - call $~lib/rt/purerc/__release - local.get $47 - call $~lib/rt/purerc/__release - local.get $43 - call $~lib/rt/purerc/__release - local.get $46 - call $~lib/rt/purerc/__release - local.get $48 - call $~lib/rt/purerc/__release - local.get $44 - call $~lib/rt/purerc/__release - local.get $39 - call $~lib/rt/purerc/__release - local.get $45 - call $~lib/rt/purerc/__release - local.get $41 - call $~lib/rt/purerc/__release - local.get $40 - call $~lib/rt/purerc/__release - local.get $42 - call $~lib/rt/purerc/__release - local.get $38 - call $~lib/rt/purerc/__release - local.get $3 - call $~lib/rt/purerc/__release - local.get $1 - call $~lib/rt/purerc/__release - local.get $36 - call $~lib/rt/purerc/__release - local.get $4 - call $~lib/rt/purerc/__release - local.get $0 - call $~lib/rt/purerc/__release - local.get $7 - call $~lib/rt/purerc/__release - local.get $2 - call $~lib/rt/purerc/__release - local.get $10 - call $~lib/rt/purerc/__release - local.get $5 - call $~lib/rt/purerc/__release - local.get $8 - call $~lib/rt/purerc/__release - local.get $6 - call $~lib/rt/purerc/__release - local.get $14 - call $~lib/rt/purerc/__release - local.get $9 - call $~lib/rt/purerc/__release - local.get $13 - call $~lib/rt/purerc/__release - end - block - i32.const 64 - call $std/array/createRandomOrderedArray - local.set $13 - i32.const 257 - call $std/array/createRandomOrderedArray - local.set $9 - local.get $13 - i32.const 49 - call $std/array/assertSorted - local.get $13 - i32.const 50 - call $std/array/assertSorted - local.get $9 - i32.const 51 - call $std/array/assertSorted - local.get $9 - i32.const 52 - call $std/array/assertSorted - local.get $13 - call $~lib/rt/purerc/__release - local.get $9 - call $~lib/rt/purerc/__release - end - block - i32.const 2 - call $std/array/createReverseOrderedNestedArray - local.set $9 - local.get $9 - i32.const 53 - call $std/array/assertSorted<~lib/array/Array> - local.get $9 - call $~lib/rt/purerc/__release - end - block - i32.const 512 - call $std/array/createReverseOrderedElementsArray - local.set $9 - local.get $9 - i32.const 54 - call $std/array/assertSorted> - local.get $9 - call $~lib/rt/purerc/__release - end - block - i32.const 7 - i32.const 2 - i32.const 27 - i32.const 4288 - call $~lib/rt/common/__allocArray - call $~lib/rt/purerc/__retain - local.tee $13 - call $~lib/rt/purerc/__retain - local.set $9 - i32.const 7 - i32.const 2 - i32.const 27 - i32.const 4336 - call $~lib/rt/common/__allocArray - call $~lib/rt/purerc/__retain - local.tee $6 - call $~lib/rt/purerc/__retain - local.set $14 - i32.const 1 - global.set $~lib/argc - local.get $9 - i32.const 0 - call $std/array/assertSorted<~lib/string/String | null>|trampoline - local.get $9 - local.get $14 - i32.const 0 - call $std/array/isArraysEqual<~lib/string/String | null> - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 930 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - i32.const 400 - call $std/array/createRandomStringArray - local.set $8 - i32.const 1 - global.set $~lib/argc - local.get $8 - i32.const 0 - call $std/array/assertSorted<~lib/string/String>|trampoline - local.get $13 - call $~lib/rt/purerc/__release - local.get $9 - call $~lib/rt/purerc/__release - local.get $6 - call $~lib/rt/purerc/__release - local.get $14 - call $~lib/rt/purerc/__release - local.get $8 - call $~lib/rt/purerc/__release - end - block - i32.const 2 - i32.const 0 - i32.const 29 - i32.const 4456 - call $~lib/rt/common/__allocArray - call $~lib/rt/purerc/__retain - local.tee $14 - i32.const 4536 - call $~lib/array/Array#join - local.tee $8 - i32.const 4560 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 941 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - i32.const 3 - i32.const 2 - i32.const 17 - i32.const 4600 - call $~lib/rt/common/__allocArray - call $~lib/rt/purerc/__retain - local.tee $9 - i32.const 4272 - call $~lib/array/Array#join - local.tee $6 - i32.const 5104 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 942 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - i32.const 3 - i32.const 2 - i32.const 21 - i32.const 5136 - call $~lib/rt/common/__allocArray - call $~lib/rt/purerc/__retain - local.tee $5 - i32.const 5168 - call $~lib/array/Array#join - local.tee $13 - i32.const 5104 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 943 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - i32.const 2 - i32.const 2 - i32.const 17 - i32.const 5192 - call $~lib/rt/common/__allocArray - call $~lib/rt/purerc/__retain - local.tee $2 - i32.const 5216 - call $~lib/array/Array#join - local.tee $10 - i32.const 5240 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 944 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - i32.const 6 - i32.const 3 - i32.const 23 - i32.const 5304 - call $~lib/rt/common/__allocArray - call $~lib/rt/purerc/__retain - local.tee $0 - i32.const 5368 - call $~lib/array/Array#join - local.tee $7 - i32.const 6568 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 945 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - i32.const 3 - i32.const 2 - i32.const 28 - i32.const 6688 - call $~lib/rt/common/__allocArray - call $~lib/rt/purerc/__retain - local.tee $36 - i32.const 4272 - call $~lib/array/Array<~lib/string/String>#join - local.tee $4 - i32.const 6664 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 946 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - block (result i32) - i32.const 3 - i32.const 2 - i32.const 33 - i32.const 0 - call $~lib/rt/common/__allocArray - local.set $1 - local.get $1 - i32.load offset=4 - local.set $3 - local.get $3 - i32.const 0 - call $std/array/Ref#constructor - local.tee $38 - call $~lib/rt/purerc/__retain - i32.store - local.get $3 - i32.const 0 - call $~lib/rt/purerc/__retain - i32.store offset=4 - local.get $3 - i32.const 0 - call $std/array/Ref#constructor - local.tee $42 - call $~lib/rt/purerc/__retain - i32.store offset=8 - local.get $1 - end - call $~lib/rt/purerc/__retain - local.set $3 - local.get $3 - i32.const 4536 - call $~lib/array/Array#join - local.tee $1 - i32.const 6768 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 948 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $14 - call $~lib/rt/purerc/__release - local.get $8 - call $~lib/rt/purerc/__release - local.get $9 - call $~lib/rt/purerc/__release - local.get $6 - call $~lib/rt/purerc/__release - local.get $5 - call $~lib/rt/purerc/__release - local.get $13 - call $~lib/rt/purerc/__release - local.get $2 - call $~lib/rt/purerc/__release - local.get $10 - call $~lib/rt/purerc/__release - local.get $0 - call $~lib/rt/purerc/__release - local.get $7 - call $~lib/rt/purerc/__release - local.get $36 - call $~lib/rt/purerc/__release - local.get $4 - call $~lib/rt/purerc/__release - local.get $38 - call $~lib/rt/purerc/__release - local.get $42 - call $~lib/rt/purerc/__release - local.get $3 - call $~lib/rt/purerc/__release - local.get $1 - call $~lib/rt/purerc/__release - end - block - i32.const 0 - i32.const 2 - i32.const 17 - i32.const 6848 - call $~lib/rt/common/__allocArray - call $~lib/rt/purerc/__retain - local.tee $3 - call $~lib/rt/purerc/__retain - local.set $1 - i32.const 1 - i32.const 2 - i32.const 17 - i32.const 6864 - call $~lib/rt/common/__allocArray - call $~lib/rt/purerc/__retain - local.tee $38 - call $~lib/rt/purerc/__retain - local.set $42 - i32.const 2 - i32.const 2 - i32.const 17 - i32.const 6888 - call $~lib/rt/common/__allocArray - call $~lib/rt/purerc/__retain - local.tee $36 - call $~lib/rt/purerc/__retain - local.set $4 - i32.const 4 - i32.const 2 - i32.const 17 - i32.const 6912 - call $~lib/rt/common/__allocArray - call $~lib/rt/purerc/__retain - local.tee $0 - call $~lib/rt/purerc/__retain - local.set $7 - local.get $1 - call $~lib/array/Array#toString - local.tee $10 - i32.const 4272 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 958 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $42 - call $~lib/array/Array#toString - local.tee $2 - i32.const 6664 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 959 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $4 - call $~lib/array/Array#toString - local.tee $13 - i32.const 6944 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 960 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $7 - call $~lib/array/Array#toString - local.tee $5 - i32.const 6968 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 961 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - i32.const 3 - i32.const 0 - i32.const 34 - i32.const 7000 - call $~lib/rt/common/__allocArray - call $~lib/rt/purerc/__retain - local.tee $9 - call $~lib/array/Array#toString - local.tee $6 - i32.const 7024 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 963 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - i32.const 3 - i32.const 1 - i32.const 35 - i32.const 7056 - call $~lib/rt/common/__allocArray - call $~lib/rt/purerc/__retain - local.tee $14 - call $~lib/array/Array#toString - local.tee $8 - i32.const 7080 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 964 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - i32.const 3 - i32.const 3 - i32.const 30 - i32.const 7120 - call $~lib/rt/common/__allocArray - call $~lib/rt/purerc/__retain - local.tee $41 - call $~lib/array/Array#toString - local.tee $40 - i32.const 7160 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 965 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - i32.const 4 - i32.const 3 - i32.const 36 - i32.const 7224 - call $~lib/rt/common/__allocArray - call $~lib/rt/purerc/__retain - local.tee $39 - call $~lib/array/Array#toString - local.tee $45 - i32.const 7272 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 966 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - i32.const 7 - i32.const 2 - i32.const 27 - i32.const 7376 - call $~lib/rt/common/__allocArray - call $~lib/rt/purerc/__retain - local.tee $48 - call $~lib/rt/purerc/__retain - local.set $44 - local.get $44 - call $~lib/array/Array<~lib/string/String | null>#toString - local.tee $46 - i32.const 7424 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 970 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - i32.const 4 - i32.const 2 - i32.const 28 - i32.const 7520 - call $~lib/rt/common/__allocArray - call $~lib/rt/purerc/__retain - local.tee $47 - call $~lib/array/Array<~lib/string/String>#toString - local.tee $43 - i32.const 7552 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 971 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - block (result i32) - i32.const 2 - i32.const 2 - i32.const 24 - i32.const 0 - call $~lib/rt/common/__allocArray - local.set $49 - local.get $49 - i32.load offset=4 - local.set $50 - local.get $50 - i32.const 2 - i32.const 2 - i32.const 17 - i32.const 7584 - call $~lib/rt/common/__allocArray - call $~lib/rt/purerc/__retain - local.tee $52 - call $~lib/rt/purerc/__retain - i32.store - local.get $50 - i32.const 2 - i32.const 2 - i32.const 17 - i32.const 7608 - call $~lib/rt/common/__allocArray - call $~lib/rt/purerc/__retain - local.tee $11 - call $~lib/rt/purerc/__retain - i32.store offset=4 - local.get $49 - end - call $~lib/rt/purerc/__retain - local.set $54 - local.get $54 - call $~lib/array/Array<~lib/array/Array>#toString - local.tee $50 - i32.const 7632 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 974 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - block (result i32) - i32.const 2 - i32.const 2 - i32.const 37 - i32.const 0 - call $~lib/rt/common/__allocArray - local.set $49 - local.get $49 - i32.load offset=4 - local.set $53 - local.get $53 - i32.const 2 - i32.const 0 - i32.const 20 - i32.const 7664 - call $~lib/rt/common/__allocArray - call $~lib/rt/purerc/__retain - local.tee $12 - call $~lib/rt/purerc/__retain - i32.store - local.get $53 - i32.const 2 - i32.const 0 - i32.const 20 - i32.const 7688 - call $~lib/rt/common/__allocArray - call $~lib/rt/purerc/__retain - local.tee $16 - call $~lib/rt/purerc/__retain - i32.store offset=4 - local.get $49 - end - call $~lib/rt/purerc/__retain - local.set $55 - local.get $55 - call $~lib/array/Array<~lib/array/Array>#toString - local.tee $53 - i32.const 7632 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 977 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - block (result i32) - i32.const 1 - i32.const 2 - i32.const 39 - i32.const 0 - call $~lib/rt/common/__allocArray - local.set $49 - local.get $49 - i32.load offset=4 - local.set $15 - local.get $15 - block (result i32) - i32.const 1 - i32.const 2 - i32.const 38 - i32.const 0 - call $~lib/rt/common/__allocArray - local.set $17 - local.get $17 - i32.load offset=4 - local.set $22 - local.get $22 - i32.const 1 - i32.const 2 - i32.const 21 - i32.const 7712 - call $~lib/rt/common/__allocArray - call $~lib/rt/purerc/__retain - local.tee $20 - call $~lib/rt/purerc/__retain - i32.store - local.get $17 + i32.const 8 + i32.const 2 + i32.const 22 + i32.const 3360 + call $~lib/rt/common/__allocArray + call $~lib/rt/purerc/__retain + local.tee $11 + call $~lib/rt/purerc/__retain + local.set $10 + i32.const 0 + global.set $~lib/argc + i32.const 0 + local.set $1 + block $1of1 + block $0of1 + block $outOfRange + global.get $~lib/argc + br_table $0of1 $1of1 $outOfRange end - call $~lib/rt/purerc/__retain - i32.store - local.get $49 - end - call $~lib/rt/purerc/__retain - local.set $56 - local.get $56 - call $~lib/array/Array<~lib/array/Array<~lib/array/Array>>#toString - local.tee $15 - i32.const 6664 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 980 - i32.const 2 - call $~lib/builtins/abort unreachable end - local.get $3 - call $~lib/rt/purerc/__release - local.get $1 - call $~lib/rt/purerc/__release - local.get $38 - call $~lib/rt/purerc/__release - local.get $42 - call $~lib/rt/purerc/__release - local.get $36 - call $~lib/rt/purerc/__release - local.get $4 - call $~lib/rt/purerc/__release - local.get $0 - call $~lib/rt/purerc/__release - local.get $7 - call $~lib/rt/purerc/__release - local.get $10 - call $~lib/rt/purerc/__release - local.get $2 - call $~lib/rt/purerc/__release - local.get $13 - call $~lib/rt/purerc/__release - local.get $5 - call $~lib/rt/purerc/__release - local.get $9 - call $~lib/rt/purerc/__release - local.get $6 - call $~lib/rt/purerc/__release - local.get $14 - call $~lib/rt/purerc/__release - local.get $8 - call $~lib/rt/purerc/__release - local.get $41 - call $~lib/rt/purerc/__release - local.get $40 - call $~lib/rt/purerc/__release - local.get $39 - call $~lib/rt/purerc/__release - local.get $45 - call $~lib/rt/purerc/__release - local.get $48 - call $~lib/rt/purerc/__release - local.get $44 - call $~lib/rt/purerc/__release - local.get $46 - call $~lib/rt/purerc/__release - local.get $47 - call $~lib/rt/purerc/__release - local.get $43 - call $~lib/rt/purerc/__release - local.get $52 - call $~lib/rt/purerc/__release - local.get $11 - call $~lib/rt/purerc/__release - local.get $50 - call $~lib/rt/purerc/__release - local.get $12 - call $~lib/rt/purerc/__release - local.get $16 - call $~lib/rt/purerc/__release - local.get $53 - call $~lib/rt/purerc/__release - local.get $20 - call $~lib/rt/purerc/__release - local.get $15 - call $~lib/rt/purerc/__release + i32.const 44 + local.set $1 + end + local.get $10 + local.get $1 + call $~lib/array/Array#sort + call $~lib/rt/purerc/__release + local.get $10 + i32.const 8 + i32.const 2 + i32.const 22 + i32.const 3408 + call $~lib/rt/common/__allocArray + call $~lib/rt/purerc/__retain + local.tee $12 + call $std/array/isArraysEqual + i32.eqz + if + i32.const 0 + i32.const 232 + i32.const 843 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + i32.const 8 + i32.const 3 + i32.const 23 + i32.const 3456 + call $~lib/rt/common/__allocArray + call $~lib/rt/purerc/__retain + local.tee $13 + call $~lib/rt/purerc/__retain + local.set $15 + i32.const 0 + global.set $~lib/argc + i32.const 0 + local.set $1 + block $1of139 + block $0of140 + block $outOfRange41 + global.get $~lib/argc + br_table $0of140 $1of139 $outOfRange41 + end + unreachable + end + i32.const 45 + local.set $1 + end + local.get $15 + local.get $1 + call $~lib/array/Array#sort + call $~lib/rt/purerc/__release + local.get $15 + i32.const 8 + i32.const 3 + i32.const 23 + i32.const 3536 + call $~lib/rt/common/__allocArray + call $~lib/rt/purerc/__retain + local.tee $14 + call $std/array/isArraysEqual + i32.eqz + if + i32.const 0 + i32.const 232 + i32.const 847 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + i32.const 5 + i32.const 2 + i32.const 17 + i32.const 3616 + call $~lib/rt/common/__allocArray + call $~lib/rt/purerc/__retain + local.tee $25 + call $~lib/rt/purerc/__retain + local.set $16 + i32.const 0 + global.set $~lib/argc + i32.const 0 + local.set $1 + block $1of142 + block $0of143 + block $outOfRange44 + global.get $~lib/argc + br_table $0of143 $1of142 $outOfRange44 + end + unreachable + end + i32.const 46 + local.set $1 + end + local.get $16 + local.get $1 + call $~lib/array/Array#sort + call $~lib/rt/purerc/__release + local.get $16 + i32.const 5 + i32.const 2 + i32.const 17 + i32.const 3656 + call $~lib/rt/common/__allocArray + call $~lib/rt/purerc/__retain + local.tee $26 + i32.const 0 + call $std/array/isArraysEqual + i32.eqz + if + i32.const 0 + i32.const 232 + i32.const 851 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + i32.const 5 + i32.const 2 + i32.const 21 + i32.const 3696 + call $~lib/rt/common/__allocArray + call $~lib/rt/purerc/__retain + local.tee $8 + call $~lib/rt/purerc/__retain + local.set $17 + i32.const 0 + global.set $~lib/argc + i32.const 0 + local.set $6 + block $1of145 + block $0of146 + block $outOfRange47 + global.get $~lib/argc + br_table $0of146 $1of145 $outOfRange47 + end + unreachable + end + i32.const 47 + local.set $6 + end + local.get $17 + local.get $6 + call $~lib/array/Array#sort + call $~lib/rt/purerc/__release + local.get $17 + i32.const 5 + i32.const 2 + i32.const 21 + i32.const 3736 + call $~lib/rt/common/__allocArray + call $~lib/rt/purerc/__retain + local.tee $27 + i32.const 0 + call $std/array/isArraysEqual + i32.eqz + if + i32.const 0 + i32.const 232 + i32.const 855 + i32.const 2 + call $~lib/builtins/abort + unreachable end i32.const 0 + i32.const 2 + i32.const 17 + i32.const 3776 + call $~lib/rt/common/__allocArray + call $~lib/rt/purerc/__retain + local.tee $2 + call $~lib/rt/purerc/__retain + local.set $28 + i32.const 1 + i32.const 2 + i32.const 17 + i32.const 3792 + call $~lib/rt/common/__allocArray + call $~lib/rt/purerc/__retain + local.tee $6 + call $~lib/rt/purerc/__retain + local.set $18 + i32.const 2 + i32.const 2 + i32.const 17 + i32.const 3816 + call $~lib/rt/common/__allocArray + call $~lib/rt/purerc/__retain + local.tee $4 + call $~lib/rt/purerc/__retain + local.set $19 + i32.const 4 + i32.const 2 + i32.const 17 + i32.const 3840 + call $~lib/rt/common/__allocArray + call $~lib/rt/purerc/__retain + local.tee $5 + call $~lib/rt/purerc/__retain + local.set $20 + i32.const 4 + i32.const 2 + i32.const 17 + i32.const 3872 + call $~lib/rt/common/__allocArray + call $~lib/rt/purerc/__retain + local.tee $1 + call $~lib/rt/purerc/__retain + local.set $7 + i32.const 64 + call $std/array/createReverseOrderedArray + local.set $21 + i32.const 128 + call $std/array/createReverseOrderedArray + local.set $22 + i32.const 1024 + call $std/array/createReverseOrderedArray + local.set $23 + i32.const 10000 + call $std/array/createReverseOrderedArray + local.set $24 + i32.const 512 + call $std/array/createRandomOrderedArray + local.set $9 + local.get $28 + call $std/array/assertSortedDefault + local.get $18 + call $std/array/assertSortedDefault + local.get $18 + i32.const 1 + i32.const 2 + i32.const 17 + i32.const 3960 + call $~lib/rt/common/__allocArray + call $~lib/rt/purerc/__retain + local.tee $3 + i32.const 0 + call $std/array/isArraysEqual + i32.eqz + if + i32.const 0 + i32.const 232 + i32.const 875 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $19 + call $std/array/assertSortedDefault + local.get $19 + i32.const 2 + i32.const 2 + i32.const 17 + i32.const 3984 + call $~lib/rt/common/__allocArray + call $~lib/rt/purerc/__retain + local.tee $0 + i32.const 0 + call $std/array/isArraysEqual + i32.eqz + if + i32.const 0 + i32.const 232 + i32.const 878 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $20 + call $std/array/assertSortedDefault + local.get $20 + local.get $7 + i32.const 0 + call $std/array/isArraysEqual + i32.eqz + if + i32.const 0 + i32.const 232 + i32.const 881 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $21 + call $std/array/assertSortedDefault + local.get $21 + local.get $7 + i32.const 4 + call $std/array/isArraysEqual + i32.eqz + if + i32.const 0 + i32.const 232 + i32.const 884 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $22 + call $std/array/assertSortedDefault + local.get $22 + local.get $7 + i32.const 4 + call $std/array/isArraysEqual + i32.eqz + if + i32.const 0 + i32.const 232 + i32.const 887 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $23 + call $std/array/assertSortedDefault + local.get $23 + local.get $7 + i32.const 4 + call $std/array/isArraysEqual + i32.eqz + if + i32.const 0 + i32.const 232 + i32.const 890 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $24 + call $std/array/assertSortedDefault + local.get $24 + local.get $7 + i32.const 4 + call $std/array/isArraysEqual + i32.eqz + if + i32.const 0 + i32.const 232 + i32.const 893 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $9 + call $std/array/assertSortedDefault + local.get $11 + call $~lib/rt/purerc/__release + local.get $10 + call $~lib/rt/purerc/__release + local.get $12 + call $~lib/rt/purerc/__release + local.get $13 + call $~lib/rt/purerc/__release + local.get $15 + call $~lib/rt/purerc/__release + local.get $14 + call $~lib/rt/purerc/__release + local.get $25 + call $~lib/rt/purerc/__release + local.get $16 + call $~lib/rt/purerc/__release + local.get $26 + call $~lib/rt/purerc/__release + local.get $8 + call $~lib/rt/purerc/__release + local.get $17 + call $~lib/rt/purerc/__release + local.get $27 + call $~lib/rt/purerc/__release + local.get $2 + call $~lib/rt/purerc/__release + local.get $28 + call $~lib/rt/purerc/__release + local.get $6 + call $~lib/rt/purerc/__release + local.get $18 + call $~lib/rt/purerc/__release + local.get $4 + call $~lib/rt/purerc/__release + local.get $19 + call $~lib/rt/purerc/__release + local.get $5 + call $~lib/rt/purerc/__release + local.get $20 + call $~lib/rt/purerc/__release + local.get $1 + call $~lib/rt/purerc/__release + local.get $7 + call $~lib/rt/purerc/__release + local.get $21 + call $~lib/rt/purerc/__release + local.get $22 + call $~lib/rt/purerc/__release + local.get $23 + call $~lib/rt/purerc/__release + local.get $24 + call $~lib/rt/purerc/__release + local.get $9 + call $~lib/rt/purerc/__release + local.get $3 + call $~lib/rt/purerc/__release + local.get $0 + call $~lib/rt/purerc/__release + i32.const 64 + call $std/array/createRandomOrderedArray + local.set $3 + i32.const 257 + call $std/array/createRandomOrderedArray + local.set $0 + local.get $3 + i32.const 49 + call $std/array/assertSorted + local.get $3 + i32.const 50 + call $std/array/assertSorted + local.get $0 + i32.const 51 + call $std/array/assertSorted + local.get $0 + i32.const 52 + call $std/array/assertSorted + local.get $3 + call $~lib/rt/purerc/__release + local.get $0 + call $~lib/rt/purerc/__release + call $std/array/createReverseOrderedNestedArray + local.tee $0 + i32.const 53 + call $std/array/assertSorted<~lib/array/Array> + local.get $0 + call $~lib/rt/purerc/__release + call $std/array/createReverseOrderedElementsArray + local.tee $0 + i32.const 54 + call $std/array/assertSorted<~lib/array/Array> + local.get $0 + call $~lib/rt/purerc/__release + i32.const 7 + i32.const 2 + i32.const 27 + i32.const 4288 + call $~lib/rt/common/__allocArray + call $~lib/rt/purerc/__retain + local.tee $3 + call $~lib/rt/purerc/__retain + local.set $4 + i32.const 7 + i32.const 2 + i32.const 27 + i32.const 4336 + call $~lib/rt/common/__allocArray + call $~lib/rt/purerc/__retain + local.tee $0 + call $~lib/rt/purerc/__retain + local.set $5 + i32.const 1 + global.set $~lib/argc + i32.const 0 + local.set $1 + block $1of148 + block $0of149 + block $outOfRange50 + global.get $~lib/argc + i32.const 1 + i32.sub + br_table $0of149 $1of148 $outOfRange50 + end + unreachable + end + i32.const 55 + local.set $1 + end + local.get $4 + local.get $1 + call $std/array/assertSorted<~lib/string/String | null> + local.get $4 + local.get $5 + call $std/array/isArraysEqual<~lib/string/String | null> + i32.eqz + if + i32.const 0 + i32.const 232 + i32.const 930 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + call $std/array/createRandomStringArray + local.set $1 + i32.const 1 + global.set $~lib/argc + i32.const 0 + local.set $6 + block $1of151 + block $0of152 + block $outOfRange53 + global.get $~lib/argc + i32.const 1 + i32.sub + br_table $0of152 $1of151 $outOfRange53 + end + unreachable + end + i32.const 56 + local.set $6 + end + local.get $1 + local.get $6 + call $std/array/assertSorted<~lib/array/Array> + local.get $3 + call $~lib/rt/purerc/__release + local.get $4 + call $~lib/rt/purerc/__release + local.get $0 + call $~lib/rt/purerc/__release + local.get $5 + call $~lib/rt/purerc/__release + local.get $1 + call $~lib/rt/purerc/__release + i32.const 2 + i32.const 0 + i32.const 29 + i32.const 4456 + call $~lib/rt/common/__allocArray + call $~lib/rt/purerc/__retain + local.set $9 + i32.const 4536 + call $~lib/rt/purerc/__retain + drop + local.get $9 + call $~lib/array/Array#join_bool + local.set $11 + i32.const 4536 + call $~lib/rt/purerc/__release + local.get $11 + i32.const 4560 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 232 + i32.const 941 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + i32.const 3 + i32.const 2 + i32.const 17 + i32.const 4600 + call $~lib/rt/common/__allocArray + call $~lib/rt/purerc/__retain + local.tee $25 + i32.const 4272 + call $~lib/array/Array#join + local.tee $26 + i32.const 5104 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 232 + i32.const 942 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + i32.const 3 + i32.const 2 + i32.const 21 + i32.const 5136 + call $~lib/rt/common/__allocArray + call $~lib/rt/purerc/__retain + local.tee $8 + i32.const 5168 + call $~lib/array/Array#join + local.tee $27 + i32.const 5104 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 232 + i32.const 943 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + i32.const 2 + i32.const 2 + i32.const 17 + i32.const 5192 + call $~lib/rt/common/__allocArray + call $~lib/rt/purerc/__retain + local.tee $2 + i32.const 5216 + call $~lib/array/Array#join + local.tee $6 + i32.const 5240 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 232 + i32.const 944 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + i32.const 6 + i32.const 3 + i32.const 23 + i32.const 5304 + call $~lib/rt/common/__allocArray + call $~lib/rt/purerc/__retain + local.set $12 + i32.const 5368 + call $~lib/rt/purerc/__retain + drop + local.get $12 + call $~lib/array/Array#join_flt + local.set $13 + i32.const 5368 + call $~lib/rt/purerc/__release + local.get $13 + i32.const 6568 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 232 + i32.const 945 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + i32.const 3 + i32.const 2 + i32.const 28 + i32.const 6688 + call $~lib/rt/common/__allocArray + call $~lib/rt/purerc/__retain + local.tee $4 + i32.const 4272 + call $~lib/array/Array<~lib/string/String>#join + local.tee $5 + i32.const 6664 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 232 + i32.const 946 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + i32.const 3 + i32.const 2 + i32.const 33 + i32.const 0 + call $~lib/rt/common/__allocArray + local.tee $1 + i32.load offset=4 + local.tee $0 + call $std/array/Ref#constructor + local.tee $3 + call $~lib/rt/purerc/__retain + i32.store + local.get $0 + i32.const 0 + call $~lib/rt/purerc/__retain + i32.store offset=4 + local.get $0 + call $std/array/Ref#constructor + local.tee $0 + call $~lib/rt/purerc/__retain + i32.store offset=8 + local.get $1 + call $~lib/rt/purerc/__retain + local.set $14 + i32.const 4536 + call $~lib/rt/purerc/__retain + drop + local.get $14 + call $~lib/array/Array#join_ref + local.set $1 + i32.const 4536 + call $~lib/rt/purerc/__release + local.get $1 + i32.const 6768 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 232 + i32.const 948 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $9 + call $~lib/rt/purerc/__release + local.get $11 + call $~lib/rt/purerc/__release + local.get $25 + call $~lib/rt/purerc/__release + local.get $26 + call $~lib/rt/purerc/__release + local.get $8 + call $~lib/rt/purerc/__release + local.get $27 + call $~lib/rt/purerc/__release + local.get $2 + call $~lib/rt/purerc/__release + local.get $6 + call $~lib/rt/purerc/__release + local.get $12 + call $~lib/rt/purerc/__release + local.get $13 + call $~lib/rt/purerc/__release + local.get $4 + call $~lib/rt/purerc/__release + local.get $5 + call $~lib/rt/purerc/__release + local.get $3 + call $~lib/rt/purerc/__release + local.get $0 + call $~lib/rt/purerc/__release + local.get $14 + call $~lib/rt/purerc/__release + local.get $1 + call $~lib/rt/purerc/__release + i32.const 0 + i32.const 2 + i32.const 17 + i32.const 6848 + call $~lib/rt/common/__allocArray + call $~lib/rt/purerc/__retain + local.tee $15 + call $~lib/rt/purerc/__retain + local.set $29 + i32.const 1 + i32.const 2 + i32.const 17 + i32.const 6864 + call $~lib/rt/common/__allocArray + call $~lib/rt/purerc/__retain + local.tee $16 + call $~lib/rt/purerc/__retain + local.set $30 + i32.const 2 + i32.const 2 + i32.const 17 + i32.const 6888 + call $~lib/rt/common/__allocArray + call $~lib/rt/purerc/__retain + local.tee $17 + call $~lib/rt/purerc/__retain + local.set $31 + i32.const 4 + i32.const 2 + i32.const 17 + i32.const 6912 + call $~lib/rt/common/__allocArray + call $~lib/rt/purerc/__retain + local.tee $18 + call $~lib/rt/purerc/__retain + local.set $32 + local.get $29 + call $~lib/array/Array#toString + local.tee $19 + i32.const 4272 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 232 + i32.const 958 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $30 + call $~lib/array/Array#toString + local.tee $20 + i32.const 6664 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 232 + i32.const 959 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $31 + call $~lib/array/Array#toString + local.tee $21 + i32.const 6944 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 232 + i32.const 960 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $32 + call $~lib/array/Array#toString + local.tee $22 + i32.const 6968 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 232 + i32.const 961 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + i32.const 3 + i32.const 0 + i32.const 34 + i32.const 7000 + call $~lib/rt/common/__allocArray + call $~lib/rt/purerc/__retain + local.set $33 + i32.const 4536 + call $~lib/rt/purerc/__retain + drop + local.get $33 + call $~lib/array/Array#join_int + local.set $2 + i32.const 4536 + call $~lib/rt/purerc/__release + local.get $2 + i32.const 7024 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 232 + i32.const 963 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + i32.const 3 + i32.const 1 + i32.const 35 + i32.const 7056 + call $~lib/rt/common/__allocArray + call $~lib/rt/purerc/__retain + local.set $34 + i32.const 4536 + call $~lib/rt/purerc/__retain + drop + local.get $34 + call $~lib/array/Array#join_int + local.set $6 + i32.const 4536 + call $~lib/rt/purerc/__release + local.get $6 + i32.const 7080 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 232 + i32.const 964 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + i32.const 3 + i32.const 3 + i32.const 30 + i32.const 7120 + call $~lib/rt/common/__allocArray + call $~lib/rt/purerc/__retain + local.set $35 + i32.const 4536 + call $~lib/rt/purerc/__retain + drop + local.get $35 + call $~lib/array/Array#join_int + local.set $4 + i32.const 4536 + call $~lib/rt/purerc/__release + local.get $4 + i32.const 7160 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 232 + i32.const 965 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + i32.const 4 + i32.const 3 + i32.const 36 + i32.const 7224 + call $~lib/rt/common/__allocArray + call $~lib/rt/purerc/__retain + local.set $36 + i32.const 4536 + call $~lib/rt/purerc/__retain + drop + local.get $36 + call $~lib/array/Array#join_int + local.set $5 + i32.const 4536 + call $~lib/rt/purerc/__release + local.get $5 + i32.const 7272 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 232 + i32.const 966 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + i32.const 7 + i32.const 2 + i32.const 27 + i32.const 7376 + call $~lib/rt/common/__allocArray + call $~lib/rt/purerc/__retain + local.tee $23 + call $~lib/rt/purerc/__retain + local.tee $24 + call $~lib/array/Array<~lib/string/String | null>#toString + local.tee $28 + i32.const 7424 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 232 + i32.const 970 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + i32.const 4 + i32.const 2 + i32.const 28 + i32.const 7520 + call $~lib/rt/common/__allocArray + call $~lib/rt/purerc/__retain + local.tee $9 + call $~lib/array/Array<~lib/string/String | null>#toString + local.tee $11 + i32.const 7552 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 232 + i32.const 971 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + i32.const 2 + i32.const 2 + i32.const 24 + i32.const 0 + call $~lib/rt/common/__allocArray + local.tee $3 + i32.load offset=4 + local.tee $0 + i32.const 2 + i32.const 2 + i32.const 17 + i32.const 7584 + call $~lib/rt/common/__allocArray + call $~lib/rt/purerc/__retain + local.tee $12 + call $~lib/rt/purerc/__retain + i32.store + local.get $0 + i32.const 2 + i32.const 2 + i32.const 17 + i32.const 7608 + call $~lib/rt/common/__allocArray + call $~lib/rt/purerc/__retain + local.tee $13 + call $~lib/rt/purerc/__retain + i32.store offset=4 + local.get $3 + call $~lib/rt/purerc/__retain + local.set $7 + i32.const 4536 + call $~lib/rt/purerc/__retain + drop + local.get $7 + call $~lib/array/Array<~lib/array/Array>#join_arr + local.set $1 + i32.const 4536 + call $~lib/rt/purerc/__release + local.get $1 + i32.const 7632 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 232 + i32.const 974 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + i32.const 2 + i32.const 2 + i32.const 37 + i32.const 0 + call $~lib/rt/common/__allocArray + local.tee $3 + i32.load offset=4 + local.tee $0 + i32.const 2 + i32.const 0 + i32.const 20 + i32.const 7664 + call $~lib/rt/common/__allocArray + call $~lib/rt/purerc/__retain + local.tee $14 + call $~lib/rt/purerc/__retain + i32.store + local.get $0 + i32.const 2 + i32.const 0 + i32.const 20 + i32.const 7688 + call $~lib/rt/common/__allocArray + call $~lib/rt/purerc/__retain + local.tee $25 + call $~lib/rt/purerc/__retain + i32.store offset=4 + local.get $3 + call $~lib/rt/purerc/__retain + local.set $10 + i32.const 4536 + call $~lib/rt/purerc/__retain + drop + local.get $10 + call $~lib/array/Array<~lib/array/Array>#join_arr + local.set $3 + i32.const 4536 + call $~lib/rt/purerc/__release + local.get $3 + i32.const 7632 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 232 + i32.const 977 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + i32.const 1 + i32.const 2 + i32.const 39 + i32.const 0 + call $~lib/rt/common/__allocArray + local.tee $26 + i32.load offset=4 + local.set $8 + i32.const 1 + i32.const 2 + i32.const 38 + i32.const 0 + call $~lib/rt/common/__allocArray + local.tee $0 + i32.load offset=4 + i32.const 1 + i32.const 2 + i32.const 21 + i32.const 7712 + call $~lib/rt/common/__allocArray + call $~lib/rt/purerc/__retain + local.tee $27 + call $~lib/rt/purerc/__retain + i32.store + local.get $8 + local.get $0 + call $~lib/rt/purerc/__retain + i32.store + local.get $26 + call $~lib/rt/purerc/__retain + local.set $8 + i32.const 4536 + call $~lib/rt/purerc/__retain + drop + local.get $8 + call $~lib/array/Array<~lib/array/Array<~lib/array/Array>>#join_arr + local.set $0 + i32.const 4536 + call $~lib/rt/purerc/__release + local.get $0 + i32.const 6664 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 232 + i32.const 980 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $15 + call $~lib/rt/purerc/__release + local.get $29 + call $~lib/rt/purerc/__release + local.get $16 + call $~lib/rt/purerc/__release + local.get $30 + call $~lib/rt/purerc/__release + local.get $17 + call $~lib/rt/purerc/__release + local.get $31 + call $~lib/rt/purerc/__release + local.get $18 + call $~lib/rt/purerc/__release + local.get $32 + call $~lib/rt/purerc/__release + local.get $19 + call $~lib/rt/purerc/__release + local.get $20 + call $~lib/rt/purerc/__release + local.get $21 + call $~lib/rt/purerc/__release + local.get $22 + call $~lib/rt/purerc/__release + local.get $33 + call $~lib/rt/purerc/__release + local.get $2 + call $~lib/rt/purerc/__release + local.get $34 + call $~lib/rt/purerc/__release + local.get $6 + call $~lib/rt/purerc/__release + local.get $35 + call $~lib/rt/purerc/__release + local.get $4 + call $~lib/rt/purerc/__release + local.get $36 + call $~lib/rt/purerc/__release + local.get $5 + call $~lib/rt/purerc/__release + local.get $23 + call $~lib/rt/purerc/__release + local.get $24 + call $~lib/rt/purerc/__release + local.get $28 + call $~lib/rt/purerc/__release + local.get $9 + call $~lib/rt/purerc/__release + local.get $11 + call $~lib/rt/purerc/__release + local.get $12 + call $~lib/rt/purerc/__release + local.get $13 + call $~lib/rt/purerc/__release + local.get $1 + call $~lib/rt/purerc/__release + local.get $14 + call $~lib/rt/purerc/__release + local.get $25 + call $~lib/rt/purerc/__release + local.get $3 + call $~lib/rt/purerc/__release + local.get $27 + call $~lib/rt/purerc/__release + local.get $0 + call $~lib/rt/purerc/__release global.get $std/array/arr - call $~lib/rt/purerc/__retainRelease - global.set $std/array/arr - local.get $54 call $~lib/rt/purerc/__release - local.get $55 + local.get $7 call $~lib/rt/purerc/__release - local.get $56 + local.get $10 + call $~lib/rt/purerc/__release + local.get $8 call $~lib/rt/purerc/__release ) - (func $std/array/main (; 298 ;) (type $FUNCSIG$v) + (func $std/array/main (; 194 ;) (type $FUNCSIG$v) global.get $~lib/started i32.eqz if - call $start + call $start:std/array i32.const 1 global.set $~lib/started end ) - (func $~lib/rt/purerc/__release (; 299 ;) (type $FUNCSIG$vi) (param $0 i32) - local.get $0 - global.get $~lib/builtins/HEAP_BASE - i32.gt_u - if - local.get $0 - i32.const 16 - i32.sub - call $~lib/rt/purerc/decrement - end - ) - (func $~lib/rt/purerc/markGray (; 300 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $~lib/rt/purerc/markGray (; 195 ;) (type $FUNCSIG$vi) (param $0 i32) (local $1 i32) local.get $0 i32.load offset=4 - local.set $1 - local.get $1 + local.tee $1 i32.const 1879048192 i32.and i32.const 268435456 @@ -21638,9 +16484,7 @@ if local.get $0 local.get $1 - i32.const 1879048192 - i32.const -1 - i32.xor + i32.const -1879048193 i32.and i32.const 268435456 i32.or @@ -21652,16 +16496,12 @@ call $~lib/builtins/__visit_members end ) - (func $~lib/rt/purerc/scanBlack (; 301 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $~lib/rt/purerc/scanBlack (; 196 ;) (type $FUNCSIG$vi) (param $0 i32) local.get $0 local.get $0 i32.load offset=4 - i32.const 1879048192 - i32.const -1 - i32.xor + i32.const -1879048193 i32.and - i32.const 0 - i32.or i32.store offset=4 local.get $0 i32.const 16 @@ -21669,12 +16509,11 @@ i32.const 4 call $~lib/builtins/__visit_members ) - (func $~lib/rt/purerc/scan (; 302 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $~lib/rt/purerc/scan (; 197 ;) (type $FUNCSIG$vi) (param $0 i32) (local $1 i32) local.get $0 i32.load offset=4 - local.set $1 - local.get $1 + local.tee $1 i32.const 1879048192 i32.and i32.const 268435456 @@ -21691,9 +16530,7 @@ else local.get $0 local.get $1 - i32.const 1879048192 - i32.const -1 - i32.xor + i32.const -1879048193 i32.and i32.const 536870912 i32.or @@ -21706,12 +16543,11 @@ end end ) - (func $~lib/rt/purerc/collectWhite (; 303 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $~lib/rt/purerc/collectWhite (; 198 ;) (type $FUNCSIG$vi) (param $0 i32) (local $1 i32) local.get $0 i32.load offset=4 - local.set $1 - local.get $1 + local.tee $1 i32.const 1879048192 i32.and i32.const 536870912 @@ -21735,7 +16571,7 @@ local.get $0 call $~lib/rt/tlsf/freeBlock ) - (func $~lib/rt/purerc/__collect (; 304 ;) (type $FUNCSIG$v) + (func $~lib/rt/purerc/__collect (; 199 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -21743,35 +16579,28 @@ (local $4 i32) (local $5 i32) global.get $~lib/rt/purerc/ROOTS + local.tee $5 + local.tee $2 + local.set $3 + global.get $~lib/rt/purerc/CUR local.set $0 - local.get $0 - local.set $1 - block $break|0 - block - local.get $1 - local.set $2 - global.get $~lib/rt/purerc/CUR - local.set $3 - end - loop $repeat|0 - local.get $2 + loop $repeat|0 + block $break|0 local.get $3 - i32.lt_u - i32.eqz + local.get $0 + i32.ge_u br_if $break|0 - local.get $2 + local.get $3 i32.load - local.set $4 - local.get $4 + local.tee $4 i32.load offset=4 - local.set $5 - local.get $5 + local.tee $1 i32.const 1879048192 i32.and i32.const 805306368 i32.eq if (result i32) - local.get $5 + local.get $1 i32.const 268435455 i32.and i32.const 0 @@ -21782,121 +16611,99 @@ if local.get $4 call $~lib/rt/purerc/markGray - local.get $1 + local.get $2 local.get $4 i32.store - local.get $1 + local.get $2 i32.const 4 i32.add - local.set $1 + local.set $2 else - local.get $5 + i32.const 0 + local.get $1 + i32.const 268435455 + i32.and + i32.eqz + local.get $1 i32.const 1879048192 i32.and - i32.const 0 - i32.eq - if (result i32) - local.get $5 - i32.const 268435455 - i32.and - i32.eqz - else - i32.const 0 - end + select if global.get $~lib/rt/tlsf/ROOT local.get $4 call $~lib/rt/tlsf/freeBlock else local.get $4 - local.get $5 - i32.const -2147483648 - i32.const -1 - i32.xor + local.get $1 + i32.const 2147483647 i32.and i32.store offset=4 end end - local.get $2 + local.get $3 i32.const 4 i32.add - local.set $2 + local.set $3 br $repeat|0 - unreachable end - unreachable end - local.get $1 + local.get $2 global.set $~lib/rt/purerc/CUR - block $break|1 - local.get $0 - local.set $5 - loop $repeat|1 - local.get $5 - local.get $1 - i32.lt_u - i32.eqz + local.get $5 + local.set $0 + loop $repeat|1 + block $break|1 + local.get $0 + local.get $2 + i32.ge_u br_if $break|1 - local.get $5 + local.get $0 i32.load call $~lib/rt/purerc/scan - local.get $5 + local.get $0 i32.const 4 i32.add - local.set $5 + local.set $0 br $repeat|1 - unreachable end - unreachable end - block $break|2 - local.get $0 - local.set $5 - loop $repeat|2 - local.get $5 - local.get $1 - i32.lt_u - i32.eqz + local.get $5 + local.set $0 + loop $repeat|2 + block $break|2 + local.get $0 + local.get $2 + i32.ge_u br_if $break|2 - local.get $5 + local.get $0 i32.load - local.set $4 - local.get $4 - local.get $4 + local.tee $1 + local.get $1 i32.load offset=4 - i32.const -2147483648 - i32.const -1 - i32.xor + i32.const 2147483647 i32.and i32.store offset=4 - local.get $4 + local.get $1 call $~lib/rt/purerc/collectWhite - local.get $5 + local.get $0 i32.const 4 i32.add - local.set $5 + local.set $0 br $repeat|2 - unreachable end - unreachable end - local.get $0 + local.get $5 global.set $~lib/rt/purerc/CUR ) - (func $~lib/rt/common/__instanceof (; 305 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) + (func $~lib/rt/common/__instanceof (; 200 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $0 i32.const 16 i32.sub i32.load offset=8 - local.set $2 - global.get $~lib/builtins/RTTI_BASE - local.set $3 - local.get $2 + local.tee $0 if (result i32) - local.get $2 - local.get $3 + local.get $0 + i32.const 7720 i32.load i32.le_u else @@ -21904,48 +16711,28 @@ end if loop $continue|0 - local.get $2 + local.get $0 local.get $1 i32.eq if i32.const 1 return end - local.get $3 - local.get $2 - i32.const 8 - i32.mul + local.get $0 + i32.const 3 + i32.shl + i32.const 7720 i32.add i32.load offset=4 - local.tee $2 + local.tee $0 br_if $continue|0 end end i32.const 0 ) - (func $start (; 306 ;) (type $FUNCSIG$v) - call $start:std/array - ) - (func $~lib/array/Array#__visit_impl (; 307 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) - nop - ) - (func $~lib/array/Array#__visit_impl (; 308 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) - nop - ) - (func $~lib/array/Array#__visit_impl (; 309 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) - nop - ) - (func $~lib/array/Array#__visit_impl (; 310 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) - nop - ) - (func $~lib/array/Array#__visit_impl (; 311 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) - nop - ) - (func $~lib/rt/purerc/__visit (; 312 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) + (func $~lib/rt/purerc/__visit (; 201 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) local.get $0 - global.get $~lib/builtins/HEAP_BASE + i32.const 8040 i32.lt_u if return @@ -21953,856 +16740,210 @@ local.get $0 i32.const 16 i32.sub - local.set $2 + local.set $0 block $break|0 block $case5|0 block $case4|0 block $case3|0 block $case2|0 block $case1|0 - block $case0|0 + local.get $1 + i32.const 1 + i32.ne + if local.get $1 - local.set $3 - local.get $3 - i32.const 1 - i32.eq - br_if $case0|0 - local.get $3 i32.const 2 i32.eq br_if $case1|0 - local.get $3 - i32.const 3 - i32.eq - br_if $case2|0 - local.get $3 - i32.const 4 - i32.eq - br_if $case3|0 - local.get $3 - i32.const 5 - i32.eq - br_if $case4|0 + block $tablify|0 + local.get $1 + i32.const 3 + i32.sub + br_table $case2|0 $case3|0 $case4|0 $tablify|0 + end br $case5|0 end - block - local.get $2 - call $~lib/rt/purerc/decrement - br $break|0 - unreachable - end - unreachable - end - block - local.get $2 - i32.load offset=4 - i32.const 268435455 - i32.and - i32.const 0 - i32.gt_u - i32.eqz - if - i32.const 0 - i32.const 320 - i32.const 74 - i32.const 17 - call $~lib/builtins/abort - unreachable - end - local.get $2 - local.get $2 - i32.load offset=4 - i32.const 1 - i32.sub - i32.store offset=4 - local.get $2 - call $~lib/rt/purerc/markGray + local.get $0 + call $~lib/rt/purerc/decrement br $break|0 + end + local.get $0 + i32.load offset=4 + i32.const 268435455 + i32.and + i32.const 0 + i32.le_u + if + i32.const 0 + i32.const 320 + i32.const 74 + i32.const 17 + call $~lib/builtins/abort unreachable end - unreachable - end - block - local.get $2 - call $~lib/rt/purerc/scan + local.get $0 + local.get $0 + i32.load offset=4 + i32.const 1 + i32.sub + i32.store offset=4 + local.get $0 + call $~lib/rt/purerc/markGray br $break|0 - unreachable - end - unreachable - end - block - local.get $2 - i32.load offset=4 - local.set $3 - local.get $3 - i32.const 268435455 - i32.const -1 - i32.xor - i32.and - local.get $3 - i32.const 1 - i32.add - i32.const 268435455 - i32.const -1 - i32.xor - i32.and - i32.eq - i32.eqz - if - i32.const 0 - i32.const 320 - i32.const 85 - i32.const 6 - call $~lib/builtins/abort - unreachable - end - local.get $2 - local.get $3 - i32.const 1 - i32.add - i32.store offset=4 - local.get $3 - i32.const 1879048192 - i32.and - i32.const 0 - i32.ne - if - local.get $2 - call $~lib/rt/purerc/scanBlack end + local.get $0 + call $~lib/rt/purerc/scan br $break|0 + end + local.get $0 + i32.load offset=4 + local.tee $1 + i32.const -268435456 + i32.and + local.get $1 + i32.const 1 + i32.add + i32.const -268435456 + i32.and + i32.ne + if + i32.const 0 + i32.const 320 + i32.const 85 + i32.const 6 + call $~lib/builtins/abort unreachable end - unreachable - end - block - local.get $2 - call $~lib/rt/purerc/collectWhite + local.get $0 + local.get $1 + i32.const 1 + i32.add + i32.store offset=4 + local.get $1 + i32.const 1879048192 + i32.and + if + local.get $0 + call $~lib/rt/purerc/scanBlack + end br $break|0 - unreachable end - unreachable + local.get $0 + call $~lib/rt/purerc/collectWhite + br $break|0 end i32.const 0 - i32.eqz + i32.const 320 + i32.const 96 + i32.const 24 + call $~lib/builtins/abort + unreachable + end + ) + (func $~lib/array/Array<~lib/array/Array>#__visit_impl (; 202 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + local.get $0 + i32.load offset=4 + local.tee $2 + local.get $0 + i32.load offset=8 + i32.add + local.set $0 + loop $continue|0 + local.get $2 + local.get $0 + i32.lt_u if - i32.const 0 - i32.const 320 - i32.const 96 - i32.const 24 - call $~lib/builtins/abort - unreachable - end - end - ) - (func $~lib/array/Array<~lib/array/Array>#__visit_impl (; 313 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - local.get $0 - i32.load offset=4 - local.set $2 - local.get $2 - local.get $0 - i32.load offset=8 - i32.add - local.set $3 - block $break|0 - loop $continue|0 local.get $2 - local.get $3 - i32.lt_u - if - local.get $2 - i32.load - local.set $4 - local.get $4 - if - local.get $4 - local.get $1 - call $~lib/rt/purerc/__visit - end - local.get $2 - i32.const 4 - i32.add - local.set $2 - br $continue|0 - end - end - end - ) - (func $~lib/array/Array>#__visit_impl (; 314 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - local.get $0 - i32.load offset=4 - local.set $2 - local.get $2 - local.get $0 - i32.load offset=8 - i32.add - local.set $3 - block $break|0 - loop $continue|0 - local.get $2 - local.get $3 - i32.lt_u - if - local.get $2 - i32.load - local.set $4 - local.get $4 - if - local.get $4 - local.get $1 - call $~lib/rt/purerc/__visit - end - local.get $2 - i32.const 4 - i32.add - local.set $2 - br $continue|0 - end - end - end - ) - (func $~lib/array/Array<~lib/string/String | null>#__visit_impl (; 315 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - local.get $0 - i32.load offset=4 - local.set $2 - local.get $2 - local.get $0 - i32.load offset=8 - i32.add - local.set $3 - block $break|0 - loop $continue|0 - local.get $2 - local.get $3 - i32.lt_u - if - local.get $2 - i32.load - local.set $4 - local.get $4 - if - local.get $4 - local.get $1 - call $~lib/rt/purerc/__visit - end - local.get $2 - i32.const 4 - i32.add - local.set $2 - br $continue|0 - end - end - end - ) - (func $~lib/array/Array<~lib/string/String>#__visit_impl (; 316 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - local.get $0 - i32.load offset=4 - local.set $2 - local.get $2 - local.get $0 - i32.load offset=8 - i32.add - local.set $3 - block $break|0 - loop $continue|0 - local.get $2 - local.get $3 - i32.lt_u - if - local.get $2 - i32.load - local.set $4 - local.get $4 - if - local.get $4 - local.get $1 - call $~lib/rt/purerc/__visit - end - local.get $2 - i32.const 4 - i32.add - local.set $2 - br $continue|0 - end - end - end - ) - (func $~lib/array/Array#__visit_impl (; 317 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) - nop - ) - (func $~lib/array/Array#__visit_impl (; 318 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) - nop - ) - (func $~lib/array/Array#__visit_impl (; 319 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) - nop - ) - (func $~lib/array/Array#__visit_impl (; 320 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - local.get $0 - i32.load offset=4 - local.set $2 - local.get $2 - local.get $0 - i32.load offset=8 - i32.add - local.set $3 - block $break|0 - loop $continue|0 - local.get $2 - local.get $3 - i32.lt_u - if - local.get $2 - i32.load - local.set $4 - local.get $4 - if - local.get $4 - local.get $1 - call $~lib/rt/purerc/__visit - end - local.get $2 - i32.const 4 - i32.add - local.set $2 - br $continue|0 - end - end - end - ) - (func $~lib/array/Array#__visit_impl (; 321 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) - nop - ) - (func $~lib/array/Array#__visit_impl (; 322 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) - nop - ) - (func $~lib/array/Array#__visit_impl (; 323 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) - nop - ) - (func $~lib/array/Array<~lib/array/Array>#__visit_impl (; 324 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - local.get $0 - i32.load offset=4 - local.set $2 - local.get $2 - local.get $0 - i32.load offset=8 - i32.add - local.set $3 - block $break|0 - loop $continue|0 - local.get $2 - local.get $3 - i32.lt_u - if - local.get $2 - i32.load - local.set $4 - local.get $4 - if - local.get $4 - local.get $1 - call $~lib/rt/purerc/__visit - end - local.get $2 - i32.const 4 - i32.add - local.set $2 - br $continue|0 - end - end - end - ) - (func $~lib/array/Array<~lib/array/Array>#__visit_impl (; 325 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - local.get $0 - i32.load offset=4 - local.set $2 - local.get $2 - local.get $0 - i32.load offset=8 - i32.add - local.set $3 - block $break|0 - loop $continue|0 - local.get $2 - local.get $3 - i32.lt_u - if - local.get $2 - i32.load - local.set $4 - local.get $4 - if - local.get $4 - local.get $1 - call $~lib/rt/purerc/__visit - end - local.get $2 - i32.const 4 - i32.add - local.set $2 - br $continue|0 - end - end - end - ) - (func $~lib/array/Array<~lib/array/Array<~lib/array/Array>>#__visit_impl (; 326 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - local.get $0 - i32.load offset=4 - local.set $2 - local.get $2 - local.get $0 - i32.load offset=8 - i32.add - local.set $3 - block $break|0 - loop $continue|0 - local.get $2 - local.get $3 - i32.lt_u - if - local.get $2 - i32.load - local.set $4 - local.get $4 - if - local.get $4 - local.get $1 - call $~lib/rt/purerc/__visit - end - local.get $2 - i32.const 4 - i32.add - local.set $2 - br $continue|0 - end - end - end - ) - (func $~lib/builtins/__visit_members (; 327 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) - (local $2 i32) - block $block$16$break - block - end - block $switch$1$leave - block $switch$1$case$41 - block $switch$1$case$40 - block $switch$1$case$39 - block $switch$1$case$38 - block $switch$1$case$37 - block $switch$1$case$36 - block $switch$1$case$35 - 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$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$19 - block $switch$1$case$16 - block $switch$1$case$3 - block $switch$1$default - local.get $0 - i32.const 8 - i32.sub - i32.load - br_table $switch$1$default $switch$1$case$3 $switch$1$case$3 $switch$1$case$3 $switch$1$case$3 $switch$1$case$3 $switch$1$case$3 $switch$1$case$3 $switch$1$case$3 $switch$1$case$3 $switch$1$case$3 $switch$1$case$3 $switch$1$case$3 $switch$1$case$3 $switch$1$case$16 $switch$1$case$3 $switch$1$case$3 $switch$1$case$19 $switch$1$case$3 $switch$1$case$16 $switch$1$case$22 $switch$1$case$23 $switch$1$case$24 $switch$1$case$25 $switch$1$case$26 $switch$1$case$3 $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$case$3 $switch$1$case$35 $switch$1$case$36 $switch$1$case$37 $switch$1$case$38 $switch$1$case$39 $switch$1$case$40 $switch$1$case$41 $switch$1$default - end - block - block - unreachable - unreachable - end - unreachable - unreachable - end - unreachable - end - block - block - return - unreachable - end - unreachable - unreachable - end - unreachable - end - block - br $block$16$break - unreachable - end - unreachable - end - block - block - local.get $0 - local.get $1 - call $~lib/array/Array#__visit_impl - block - br $block$16$break - unreachable - end - unreachable - unreachable - end - unreachable - unreachable - end - unreachable - end - block - block - local.get $0 - local.get $1 - call $~lib/array/Array#__visit_impl - block - br $block$16$break - unreachable - end - unreachable - unreachable - end - unreachable - unreachable - end - unreachable - end - block - block - local.get $0 - local.get $1 - call $~lib/array/Array#__visit_impl - block - br $block$16$break - unreachable - end - unreachable - unreachable - end - unreachable - unreachable - end - unreachable - end - block - block - local.get $0 - local.get $1 - call $~lib/array/Array#__visit_impl - block - br $block$16$break - unreachable - end - unreachable - unreachable - end - unreachable - unreachable - end - unreachable - end - block - block - local.get $0 - local.get $1 - call $~lib/array/Array#__visit_impl - block - br $block$16$break - unreachable - end - unreachable - unreachable - end - unreachable - unreachable - end - unreachable - end - block - block - local.get $0 - local.get $1 - call $~lib/array/Array<~lib/array/Array>#__visit_impl - block - br $block$16$break - unreachable - end - unreachable - unreachable - end - unreachable - unreachable - end - unreachable - end - block - block - local.get $0 - local.get $1 - call $~lib/array/Array>#__visit_impl - block - br $block$16$break - unreachable - end - unreachable - unreachable - end - unreachable - unreachable - end - unreachable - end - block - block - local.get $0 - local.get $1 - call $~lib/array/Array<~lib/string/String | null>#__visit_impl - block - br $block$16$break - unreachable - end - unreachable - unreachable - end - unreachable - unreachable - end - unreachable - end - block - block - local.get $0 - local.get $1 - call $~lib/array/Array<~lib/string/String>#__visit_impl - block - br $block$16$break - unreachable - end - unreachable - unreachable - end - unreachable - unreachable - end - unreachable - end - block - block - local.get $0 - local.get $1 - call $~lib/array/Array#__visit_impl - block - br $block$16$break - unreachable - end - unreachable - unreachable - end - unreachable - unreachable - end - unreachable - end - block - block - local.get $0 - local.get $1 - call $~lib/array/Array#__visit_impl - block - br $block$16$break - unreachable - end - unreachable - unreachable - end - unreachable - unreachable - end - unreachable - end - block - block - local.get $0 - local.get $1 - call $~lib/array/Array#__visit_impl - block - br $block$16$break - unreachable - end - unreachable - unreachable - end - unreachable - unreachable - end - unreachable - end - block - block - local.get $0 - local.get $1 - call $~lib/array/Array#__visit_impl - block - br $block$16$break - unreachable - end - unreachable - unreachable - end - unreachable - unreachable - end - unreachable - end - block - block - local.get $0 - local.get $1 - call $~lib/array/Array#__visit_impl - block - br $block$16$break - unreachable - end - unreachable - unreachable - end - unreachable - unreachable - end - unreachable - end - block - block - local.get $0 - local.get $1 - call $~lib/array/Array#__visit_impl - block - br $block$16$break - unreachable - end - unreachable - unreachable - end - unreachable - unreachable - end - unreachable - end - block - block - local.get $0 - local.get $1 - call $~lib/array/Array#__visit_impl - block - br $block$16$break - unreachable - end - unreachable - unreachable - end - unreachable - unreachable - end - unreachable - end - block - block - local.get $0 - local.get $1 - call $~lib/array/Array<~lib/array/Array>#__visit_impl - block - br $block$16$break - unreachable - end - unreachable - unreachable - end - unreachable - unreachable - end - unreachable - end - block - block - local.get $0 - local.get $1 - call $~lib/array/Array<~lib/array/Array>#__visit_impl - block - br $block$16$break - unreachable - end - unreachable - unreachable - end - unreachable - unreachable - end - unreachable - end - block - block - local.get $0 - local.get $1 - call $~lib/array/Array<~lib/array/Array<~lib/array/Array>>#__visit_impl - block - br $block$16$break - unreachable - end - unreachable - unreachable - end - unreachable - unreachable - end - unreachable - end - end - block - block - local.get $0 i32.load - local.tee $2 + local.tee $3 if - local.get $2 + local.get $3 local.get $1 call $~lib/rt/purerc/__visit end - return - unreachable + local.get $2 + i32.const 4 + i32.add + local.set $2 + br $continue|0 end - unreachable - unreachable end - unreachable ) - (func $null (; 328 ;) (type $FUNCSIG$v) + (func $~lib/builtins/__visit_members (; 203 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + block $block$16$break + block $switch$1$case$41 + block $switch$1$case$40 + block $switch$1$case$39 + block $switch$1$case$35 + block $switch$1$case$30 + block $switch$1$case$29 + block $switch$1$case$28 + block $switch$1$case$26 + block $switch$1$case$3 + block $switch$1$default + local.get $0 + i32.const 8 + i32.sub + i32.load + i32.const 1 + i32.sub + br_table $switch$1$case$3 $switch$1$case$3 $switch$1$case$3 $switch$1$case$3 $switch$1$case$3 $switch$1$case$3 $switch$1$case$3 $switch$1$case$3 $switch$1$case$3 $switch$1$case$3 $switch$1$case$3 $switch$1$case$3 $switch$1$case$3 $block$16$break $switch$1$case$3 $switch$1$case$3 $block$16$break $switch$1$case$3 $block$16$break $block$16$break $block$16$break $block$16$break $block$16$break $switch$1$case$26 $switch$1$case$3 $switch$1$case$28 $switch$1$case$29 $switch$1$case$30 $block$16$break $block$16$break $block$16$break $switch$1$case$3 $switch$1$case$35 $block$16$break $block$16$break $block$16$break $switch$1$case$39 $switch$1$case$40 $switch$1$case$41 $switch$1$default + end + unreachable + end + return + end + local.get $0 + local.get $1 + call $~lib/array/Array<~lib/array/Array>#__visit_impl + br $block$16$break + end + local.get $0 + local.get $1 + call $~lib/array/Array<~lib/array/Array>#__visit_impl + br $block$16$break + end + local.get $0 + local.get $1 + call $~lib/array/Array<~lib/array/Array>#__visit_impl + br $block$16$break + end + local.get $0 + local.get $1 + call $~lib/array/Array<~lib/array/Array>#__visit_impl + br $block$16$break + end + local.get $0 + local.get $1 + call $~lib/array/Array<~lib/array/Array>#__visit_impl + br $block$16$break + end + local.get $0 + local.get $1 + call $~lib/array/Array<~lib/array/Array>#__visit_impl + br $block$16$break + end + local.get $0 + local.get $1 + call $~lib/array/Array<~lib/array/Array>#__visit_impl + br $block$16$break + end + local.get $0 + local.get $1 + call $~lib/array/Array<~lib/array/Array>#__visit_impl + end + local.get $0 + i32.load + local.tee $0 + if + local.get $0 + local.get $1 + call $~lib/rt/purerc/__visit + end + ) + (func $null (; 204 ;) (type $FUNCSIG$v) + nop ) ) diff --git a/tests/compiler/std/array.ts b/tests/compiler/std/array.ts index bfdc7c31..d7cef2eb 100644 --- a/tests/compiler/std/array.ts +++ b/tests/compiler/std/array.ts @@ -980,6 +980,5 @@ class Ref { constructor() {} } assert(subarrU32.toString() == "1"); } -// Unleak globals that'd otherwise retain a reference - -arr = changetype(0); +// Unleak globals +__release(changetype(arr)); diff --git a/tests/compiler/std/array.untouched.wat b/tests/compiler/std/array.untouched.wat index 9cf78a70..4c0441e0 100644 --- a/tests/compiler/std/array.untouched.wat +++ b/tests/compiler/std/array.untouched.wat @@ -1672,11 +1672,10 @@ local.get $0 ) (func $~lib/array/Array.isArray<~lib/array/Array | null> (; 17 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) local.get $0 call $~lib/rt/purerc/__retain drop - local.get $0 - call $~lib/rt/purerc/__release i32.const 1 if (result i32) local.get $0 @@ -1685,13 +1684,16 @@ else i32.const 0 end + local.set $1 + local.get $0 + call $~lib/rt/purerc/__release + local.get $1 ) (func $~lib/array/Array.isArray<~lib/array/Array> (; 18 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) local.get $0 call $~lib/rt/purerc/__retain drop - local.get $0 - call $~lib/rt/purerc/__release i32.const 1 if (result i32) local.get $0 @@ -1700,6 +1702,10 @@ else i32.const 0 end + local.set $1 + local.get $0 + call $~lib/rt/purerc/__release + local.get $1 ) (func $std/array/P#constructor (; 19 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 @@ -1714,11 +1720,10 @@ local.get $0 ) (func $~lib/array/Array.isArray (; 20 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) local.get $0 call $~lib/rt/purerc/__retain drop - local.get $0 - call $~lib/rt/purerc/__release i32.const 0 if (result i32) local.get $0 @@ -1727,6 +1732,10 @@ else i32.const 0 end + local.set $1 + local.get $0 + call $~lib/rt/purerc/__release + local.get $1 ) (func $~lib/typedarray/Uint8Array#constructor (; 21 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) @@ -1747,11 +1756,10 @@ local.get $0 ) (func $~lib/array/Array.isArray<~lib/typedarray/Uint8Array> (; 22 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) local.get $0 call $~lib/rt/purerc/__retain drop - local.get $0 - call $~lib/rt/purerc/__release i32.const 0 if (result i32) local.get $0 @@ -1760,6 +1768,10 @@ else i32.const 0 end + local.set $1 + local.get $0 + call $~lib/rt/purerc/__release + local.get $1 ) (func $~lib/array/Array.isArray (; 23 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) i32.const 0 @@ -1772,11 +1784,10 @@ end ) (func $~lib/array/Array.isArray<~lib/string/String> (; 24 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) local.get $0 call $~lib/rt/purerc/__retain drop - local.get $0 - call $~lib/rt/purerc/__release i32.const 0 if (result i32) local.get $0 @@ -1785,6 +1796,10 @@ else i32.const 0 end + local.set $1 + local.get $0 + call $~lib/rt/purerc/__release + local.get $1 ) (func $~lib/rt/purerc/increment (; 25 ;) (type $FUNCSIG$vi) (param $0 i32) (local $1 i32) @@ -2465,6 +2480,7 @@ ) (func $std/array/isArraysEqual (; 34 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) + (local $4 i32) local.get $0 call $~lib/rt/purerc/__retain drop @@ -2482,22 +2498,26 @@ call $~lib/array/Array#get:length i32.ne if + i32.const 0 + local.set $3 local.get $0 call $~lib/rt/purerc/__release local.get $1 call $~lib/rt/purerc/__release - i32.const 0 + local.get $3 return end local.get $0 local.get $1 i32.eq if + i32.const 1 + local.set $3 local.get $0 call $~lib/rt/purerc/__release local.get $1 call $~lib/rt/purerc/__release - i32.const 1 + local.get $3 return end end @@ -2518,11 +2538,13 @@ call $~lib/array/Array#__get i32.ne if + i32.const 0 + local.set $4 local.get $0 call $~lib/rt/purerc/__release local.get $1 call $~lib/rt/purerc/__release - i32.const 0 + local.get $4 return end local.get $3 @@ -2534,11 +2556,13 @@ end unreachable end + i32.const 1 + local.set $3 local.get $0 call $~lib/rt/purerc/__release local.get $1 call $~lib/rt/purerc/__release - i32.const 1 + local.get $3 ) (func $~lib/array/Array#fill (; 35 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) (local $4 i32) @@ -2661,6 +2685,7 @@ ) (func $std/array/isArraysEqual (; 39 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) + (local $4 i32) local.get $0 call $~lib/rt/purerc/__retain drop @@ -2678,22 +2703,26 @@ call $~lib/array/Array#get:length i32.ne if + i32.const 0 + local.set $3 local.get $0 call $~lib/rt/purerc/__release local.get $1 call $~lib/rt/purerc/__release - i32.const 0 + local.get $3 return end local.get $0 local.get $1 i32.eq if + i32.const 1 + local.set $3 local.get $0 call $~lib/rt/purerc/__release local.get $1 call $~lib/rt/purerc/__release - i32.const 1 + local.get $3 return end end @@ -2714,11 +2743,13 @@ call $~lib/array/Array#__get i32.ne if + i32.const 0 + local.set $4 local.get $0 call $~lib/rt/purerc/__release local.get $1 call $~lib/rt/purerc/__release - i32.const 0 + local.get $4 return end local.get $3 @@ -2730,11 +2761,13 @@ end unreachable end + i32.const 1 + local.set $3 local.get $0 call $~lib/rt/purerc/__release local.get $1 call $~lib/rt/purerc/__release - i32.const 1 + local.get $3 ) (func $~lib/array/Array#get:length (; 40 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 @@ -2748,6 +2781,7 @@ ) (func $std/array/internalCapacity (; 42 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) + (local $2 i32) local.get $0 call $~lib/rt/purerc/__retain drop @@ -2755,14 +2789,16 @@ i32.load call $~lib/rt/purerc/__retain local.set $1 - local.get $0 - call $~lib/rt/purerc/__release - local.get $1 - call $~lib/rt/purerc/__release local.get $1 call $~lib/arraybuffer/ArrayBuffer#get:byteLength i32.const 2 i32.shr_s + local.set $2 + local.get $0 + call $~lib/rt/purerc/__release + local.get $1 + call $~lib/rt/purerc/__release + local.get $2 ) (func $~lib/rt/tlsf/reallocateBlock (; 43 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) @@ -3357,6 +3393,7 @@ ) (func $std/array/isArraysEqual (; 52 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) + (local $4 i32) local.get $0 call $~lib/rt/purerc/__retain drop @@ -3374,22 +3411,26 @@ call $~lib/array/Array#get:length i32.ne if + i32.const 0 + local.set $3 local.get $0 call $~lib/rt/purerc/__release local.get $1 call $~lib/rt/purerc/__release - i32.const 0 + local.get $3 return end local.get $0 local.get $1 i32.eq if + i32.const 1 + local.set $3 local.get $0 call $~lib/rt/purerc/__release local.get $1 call $~lib/rt/purerc/__release - i32.const 1 + local.get $3 return end end @@ -3410,11 +3451,13 @@ call $~lib/array/Array#__get i32.ne if + i32.const 0 + local.set $4 local.get $0 call $~lib/rt/purerc/__release local.get $1 call $~lib/rt/purerc/__release - i32.const 0 + local.get $4 return end local.get $3 @@ -3426,11 +3469,13 @@ end unreachable end + i32.const 1 + local.set $3 local.get $0 call $~lib/rt/purerc/__release local.get $1 call $~lib/rt/purerc/__release - i32.const 1 + local.get $3 ) (func $~lib/array/Array#unshift (; 53 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) @@ -3886,6 +3931,7 @@ local.get $3 ) (func $start:std/array~anonymous|3 (; 65 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) local.get $2 call $~lib/rt/purerc/__retain drop @@ -3893,11 +3939,13 @@ i32.const 100 call $~lib/array/Array#push drop - local.get $2 - call $~lib/rt/purerc/__release local.get $0 i32.const 100 i32.eq + local.set $3 + local.get $2 + call $~lib/rt/purerc/__release + local.get $3 ) (func $start:std/array~anonymous|4 (; 66 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) @@ -3913,17 +3961,20 @@ local.get $3 ) (func $start:std/array~anonymous|5 (; 67 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) local.get $2 call $~lib/rt/purerc/__retain drop local.get $2 call $~lib/array/Array#pop drop - local.get $2 - call $~lib/rt/purerc/__release local.get $0 i32.const 100 i32.eq + local.set $3 + local.get $2 + call $~lib/rt/purerc/__release + local.get $3 ) (func $start:std/array~anonymous|6 (; 68 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) @@ -4012,6 +4063,7 @@ local.get $3 ) (func $start:std/array~anonymous|8 (; 71 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) local.get $2 call $~lib/rt/purerc/__retain drop @@ -4019,11 +4071,13 @@ i32.const 100 call $~lib/array/Array#push drop - local.get $2 - call $~lib/rt/purerc/__release local.get $0 i32.const 10 i32.lt_s + local.set $3 + local.get $2 + call $~lib/rt/purerc/__release + local.get $3 ) (func $start:std/array~anonymous|9 (; 72 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) @@ -4039,17 +4093,20 @@ local.get $3 ) (func $start:std/array~anonymous|10 (; 73 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) local.get $2 call $~lib/rt/purerc/__retain drop local.get $2 call $~lib/array/Array#pop drop - local.get $2 - call $~lib/rt/purerc/__release local.get $0 i32.const 3 i32.lt_s + local.set $3 + local.get $2 + call $~lib/rt/purerc/__release + local.get $3 ) (func $start:std/array~anonymous|11 (; 74 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) @@ -4135,6 +4192,7 @@ local.get $3 ) (func $start:std/array~anonymous|13 (; 77 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) local.get $2 call $~lib/rt/purerc/__retain drop @@ -4142,11 +4200,13 @@ i32.const 100 call $~lib/array/Array#push drop - local.get $2 - call $~lib/rt/purerc/__release local.get $0 i32.const 10 i32.gt_s + local.set $3 + local.get $2 + call $~lib/rt/purerc/__release + local.get $3 ) (func $start:std/array~anonymous|14 (; 78 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) @@ -4162,17 +4222,20 @@ local.get $3 ) (func $start:std/array~anonymous|15 (; 79 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) local.get $2 call $~lib/rt/purerc/__retain drop local.get $2 call $~lib/array/Array#pop drop - local.get $2 - call $~lib/rt/purerc/__release local.get $0 i32.const 3 i32.gt_s + local.set $3 + local.get $2 + call $~lib/rt/purerc/__release + local.get $3 ) (func $start:std/array~anonymous|16 (; 80 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) local.get $2 @@ -4512,6 +4575,7 @@ call $~lib/array/Array#__unchecked_get ) (func $start:std/array~anonymous|22 (; 91 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) local.get $2 call $~lib/rt/purerc/__retain drop @@ -4523,9 +4587,11 @@ local.get $0 i32.add global.set $std/array/i + local.get $0 + local.set $3 local.get $2 call $~lib/rt/purerc/__release - local.get $0 + local.get $3 ) (func $~lib/array/Array#map (; 92 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) @@ -4599,6 +4665,7 @@ local.get $3 ) (func $start:std/array~anonymous|23 (; 93 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) local.get $2 call $~lib/rt/purerc/__retain drop @@ -4606,11 +4673,14 @@ local.get $0 i32.add global.set $std/array/i + local.get $0 + local.set $3 local.get $2 call $~lib/rt/purerc/__release - local.get $0 + local.get $3 ) (func $start:std/array~anonymous|24 (; 94 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) local.get $2 call $~lib/rt/purerc/__retain drop @@ -4621,9 +4691,11 @@ local.get $0 i32.add global.set $std/array/i + local.get $0 + local.set $3 local.get $2 call $~lib/rt/purerc/__release - local.get $0 + local.get $3 ) (func $start:std/array~anonymous|25 (; 95 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) @@ -4708,6 +4780,7 @@ local.get $2 ) (func $start:std/array~anonymous|26 (; 97 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) local.get $2 call $~lib/rt/purerc/__retain drop @@ -4719,13 +4792,16 @@ local.get $0 i32.add global.set $std/array/i - local.get $2 - call $~lib/rt/purerc/__release local.get $0 i32.const 2 i32.ge_s + local.set $3 + local.get $2 + call $~lib/rt/purerc/__release + local.get $3 ) (func $start:std/array~anonymous|27 (; 98 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) local.get $2 call $~lib/rt/purerc/__retain drop @@ -4733,13 +4809,16 @@ local.get $0 i32.add global.set $std/array/i - local.get $2 - call $~lib/rt/purerc/__release local.get $0 i32.const 2 i32.ge_s + local.set $3 + local.get $2 + call $~lib/rt/purerc/__release + local.get $3 ) (func $start:std/array~anonymous|28 (; 99 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) local.get $2 call $~lib/rt/purerc/__retain drop @@ -4750,11 +4829,13 @@ local.get $0 i32.add global.set $std/array/i - local.get $2 - call $~lib/rt/purerc/__release local.get $0 i32.const 2 i32.ge_s + local.set $3 + local.get $2 + call $~lib/rt/purerc/__release + local.get $3 ) (func $start:std/array~anonymous|29 (; 100 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) (local $4 i32) @@ -4935,6 +5016,7 @@ local.get $4 ) (func $start:std/array~anonymous|33 (; 106 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + (local $4 i32) local.get $3 call $~lib/rt/purerc/__retain drop @@ -4942,11 +5024,13 @@ i32.const 1 call $~lib/array/Array#push drop - local.get $3 - call $~lib/rt/purerc/__release local.get $0 local.get $1 i32.add + local.set $4 + local.get $3 + call $~lib/rt/purerc/__release + local.get $4 ) (func $start:std/array~anonymous|34 (; 107 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) (local $4 i32) @@ -4962,17 +5046,20 @@ local.get $4 ) (func $start:std/array~anonymous|35 (; 108 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + (local $4 i32) local.get $3 call $~lib/rt/purerc/__retain drop local.get $3 call $~lib/array/Array#pop drop - local.get $3 - call $~lib/rt/purerc/__release local.get $0 local.get $1 i32.add + local.set $4 + local.get $3 + call $~lib/rt/purerc/__release + local.get $4 ) (func $start:std/array~anonymous|36 (; 109 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) (local $4 i32) @@ -5127,6 +5214,7 @@ local.get $4 ) (func $start:std/array~anonymous|40 (; 115 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + (local $4 i32) local.get $3 call $~lib/rt/purerc/__retain drop @@ -5134,11 +5222,13 @@ i32.const 1 call $~lib/array/Array#push drop - local.get $3 - call $~lib/rt/purerc/__release local.get $0 local.get $1 i32.add + local.set $4 + local.get $3 + call $~lib/rt/purerc/__release + local.get $4 ) (func $start:std/array~anonymous|41 (; 116 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) (local $4 i32) @@ -5154,17 +5244,20 @@ local.get $4 ) (func $start:std/array~anonymous|42 (; 117 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + (local $4 i32) local.get $3 call $~lib/rt/purerc/__retain drop local.get $3 call $~lib/array/Array#pop drop - local.get $3 - call $~lib/rt/purerc/__release local.get $0 local.get $1 i32.add + local.set $4 + local.get $3 + call $~lib/rt/purerc/__release + local.get $4 ) (func $~lib/math/murmurHash3 (; 118 ;) (type $FUNCSIG$jj) (param $0 i64) (result i64) local.get $0 @@ -5850,6 +5943,7 @@ ) (func $std/array/isArraysEqual (; 129 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) + (local $4 i32) local.get $0 call $~lib/rt/purerc/__retain drop @@ -5867,22 +5961,26 @@ call $~lib/array/Array#get:length i32.ne if + i32.const 0 + local.set $3 local.get $0 call $~lib/rt/purerc/__release local.get $1 call $~lib/rt/purerc/__release - i32.const 0 + local.get $3 return end local.get $0 local.get $1 i32.eq if + i32.const 1 + local.set $3 local.get $0 call $~lib/rt/purerc/__release local.get $1 call $~lib/rt/purerc/__release - i32.const 1 + local.get $3 return end end @@ -5916,11 +6014,13 @@ call $~lib/array/Array#__get f32.ne if + i32.const 0 + local.set $4 local.get $0 call $~lib/rt/purerc/__release local.get $1 call $~lib/rt/purerc/__release - i32.const 0 + local.get $4 return end end @@ -5933,11 +6033,13 @@ end unreachable end + i32.const 1 + local.set $3 local.get $0 call $~lib/rt/purerc/__release local.get $1 call $~lib/rt/purerc/__release - i32.const 1 + local.get $3 ) (func $~lib/util/sort/insertionSort (; 130 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) @@ -6496,6 +6598,7 @@ ) (func $std/array/isArraysEqual (; 139 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) + (local $4 i32) local.get $0 call $~lib/rt/purerc/__retain drop @@ -6513,22 +6616,26 @@ call $~lib/array/Array#get:length i32.ne if + i32.const 0 + local.set $3 local.get $0 call $~lib/rt/purerc/__release local.get $1 call $~lib/rt/purerc/__release - i32.const 0 + local.get $3 return end local.get $0 local.get $1 i32.eq if + i32.const 1 + local.set $3 local.get $0 call $~lib/rt/purerc/__release local.get $1 call $~lib/rt/purerc/__release - i32.const 1 + local.get $3 return end end @@ -6562,11 +6669,13 @@ call $~lib/array/Array#__get f64.ne if + i32.const 0 + local.set $4 local.get $0 call $~lib/rt/purerc/__release local.get $1 call $~lib/rt/purerc/__release - i32.const 0 + local.get $4 return end end @@ -6579,11 +6688,13 @@ end unreachable end + i32.const 1 + local.set $3 local.get $0 call $~lib/rt/purerc/__release local.get $1 call $~lib/rt/purerc/__release - i32.const 1 + local.get $3 ) (func $~lib/util/sort/insertionSort (; 140 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) @@ -7729,6 +7840,7 @@ (func $std/array/isSorted (; 155 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) + (local $4 i32) local.get $0 call $~lib/rt/purerc/__retain drop @@ -7763,9 +7875,11 @@ i32.const 0 i32.gt_s if + i32.const 0 + local.set $4 local.get $0 call $~lib/rt/purerc/__release - i32.const 0 + local.get $4 return end local.get $2 @@ -7777,9 +7891,11 @@ end unreachable end + i32.const 1 + local.set $3 local.get $0 call $~lib/rt/purerc/__release - i32.const 1 + local.get $3 ) (func $std/array/assertSorted (; 156 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) @@ -8457,6 +8573,7 @@ (local $3 i32) (local $4 i32) (local $5 i32) + (local $6 i32) local.get $0 call $~lib/rt/purerc/__retain drop @@ -8493,13 +8610,15 @@ i32.const 0 i32.gt_s if + i32.const 0 + local.set $6 local.get $0 call $~lib/rt/purerc/__release local.get $4 call $~lib/rt/purerc/__release local.get $5 call $~lib/rt/purerc/__release - i32.const 0 + local.get $6 return end local.get $4 @@ -8515,9 +8634,11 @@ end unreachable end + i32.const 1 + local.set $5 local.get $0 call $~lib/rt/purerc/__release - i32.const 1 + local.get $5 ) (func $std/array/assertSorted<~lib/array/Array> (; 178 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) @@ -8944,6 +9065,7 @@ (local $3 i32) (local $4 i32) (local $5 i32) + (local $6 i32) local.get $0 call $~lib/rt/purerc/__retain drop @@ -8980,13 +9102,15 @@ i32.const 0 i32.gt_s if + i32.const 0 + local.set $6 local.get $0 call $~lib/rt/purerc/__release local.get $4 call $~lib/rt/purerc/__release local.get $5 call $~lib/rt/purerc/__release - i32.const 0 + local.get $6 return end local.get $4 @@ -9002,9 +9126,11 @@ end unreachable end + i32.const 1 + local.set $5 local.get $0 call $~lib/rt/purerc/__release - i32.const 1 + local.get $5 ) (func $std/array/assertSorted> (; 191 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) @@ -9244,6 +9370,7 @@ (local $3 i32) (local $4 i32) (local $5 i32) + (local $6 i32) local.get $0 call $~lib/rt/purerc/__retain drop @@ -9280,13 +9407,15 @@ i32.const 0 i32.gt_s if + i32.const 0 + local.set $6 local.get $0 call $~lib/rt/purerc/__release local.get $4 call $~lib/rt/purerc/__release local.get $5 call $~lib/rt/purerc/__release - i32.const 0 + local.get $6 return end local.get $4 @@ -9302,9 +9431,11 @@ end unreachable end + i32.const 1 + local.set $5 local.get $0 call $~lib/rt/purerc/__release - i32.const 1 + local.get $5 ) (func $std/array/assertSorted<~lib/string/String | null> (; 198 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) @@ -9343,6 +9474,7 @@ (local $5 i32) (local $6 i32) (local $7 i32) + (local $8 i32) local.get $0 call $~lib/rt/purerc/__retain drop @@ -9394,11 +9526,13 @@ end end end + local.get $5 + local.set $8 local.get $0 call $~lib/rt/purerc/__release local.get $2 call $~lib/rt/purerc/__release - local.get $5 + local.get $8 ) (func $~lib/util/sort/COMPARATOR<~lib/string/String | null>~anonymous|0 (; 201 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) @@ -9429,72 +9563,82 @@ i32.eq end if + i32.const 0 + local.set $2 local.get $0 call $~lib/rt/purerc/__release local.get $1 call $~lib/rt/purerc/__release - i32.const 0 + local.get $2 return end local.get $0 call $~lib/string/String#get:length - local.set $2 + local.set $3 local.get $1 call $~lib/string/String#get:length - local.set $3 - local.get $2 + local.set $4 + local.get $3 i32.eqz if (result i32) - local.get $3 + local.get $4 i32.eqz else i32.const 0 end if - local.get $0 - call $~lib/rt/purerc/__release - local.get $1 - call $~lib/rt/purerc/__release i32.const 0 - return - end - local.get $2 - i32.eqz - if + local.set $2 local.get $0 call $~lib/rt/purerc/__release local.get $1 call $~lib/rt/purerc/__release + local.get $2 + return + end + local.get $3 + i32.eqz + if i32.const -1 - return - end - local.get $3 - i32.eqz - if + local.set $2 local.get $0 call $~lib/rt/purerc/__release local.get $1 call $~lib/rt/purerc/__release + local.get $2 + return + end + local.get $4 + i32.eqz + if i32.const 1 + local.set $2 + local.get $0 + call $~lib/rt/purerc/__release + local.get $1 + call $~lib/rt/purerc/__release + local.get $2 return end local.get $0 - call $~lib/rt/purerc/__release - local.get $1 - call $~lib/rt/purerc/__release - local.get $0 i32.const 0 local.get $1 i32.const 0 - local.get $2 - local.tee $4 local.get $3 - local.tee $5 + local.tee $2 local.get $4 + local.tee $5 + local.get $2 local.get $5 i32.lt_s select call $~lib/util/string/compareImpl + local.set $2 + local.get $0 + call $~lib/rt/purerc/__release + local.get $1 + call $~lib/rt/purerc/__release + local.get $2 ) (func $std/array/assertSorted<~lib/string/String | null>|trampoline (; 202 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) block $1of1 @@ -9519,6 +9663,7 @@ ) (func $~lib/string/String.__eq (; 203 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) + (local $3 i32) local.get $0 call $~lib/rt/purerc/__retain drop @@ -9529,11 +9674,13 @@ local.get $1 i32.eq if + i32.const 1 + local.set $2 local.get $0 call $~lib/rt/purerc/__release local.get $1 call $~lib/rt/purerc/__release - i32.const 1 + local.get $2 return end local.get $0 @@ -9547,41 +9694,48 @@ i32.eq end if + i32.const 0 + local.set $2 local.get $0 call $~lib/rt/purerc/__release local.get $1 call $~lib/rt/purerc/__release - i32.const 0 + local.get $2 return end local.get $0 call $~lib/string/String#get:length - local.set $2 - local.get $2 + local.set $3 + local.get $3 local.get $1 call $~lib/string/String#get:length i32.ne if + i32.const 0 + local.set $2 local.get $0 call $~lib/rt/purerc/__release local.get $1 call $~lib/rt/purerc/__release - i32.const 0 + local.get $2 return end local.get $0 - call $~lib/rt/purerc/__release - local.get $1 - call $~lib/rt/purerc/__release - local.get $0 i32.const 0 local.get $1 i32.const 0 - local.get $2 + local.get $3 call $~lib/util/string/compareImpl i32.eqz + local.set $2 + local.get $0 + call $~lib/rt/purerc/__release + local.get $1 + call $~lib/rt/purerc/__release + local.get $2 ) (func $~lib/string/String.__ne (; 204 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) local.get $0 call $~lib/rt/purerc/__retain drop @@ -9589,18 +9743,21 @@ call $~lib/rt/purerc/__retain drop local.get $0 - call $~lib/rt/purerc/__release - local.get $1 - call $~lib/rt/purerc/__release - local.get $0 local.get $1 call $~lib/string/String.__eq i32.eqz + local.set $2 + local.get $0 + call $~lib/rt/purerc/__release + local.get $1 + call $~lib/rt/purerc/__release + local.get $2 ) (func $std/array/isArraysEqual<~lib/string/String | null> (; 205 ;) (type $FUNCSIG$iiii) (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 $0 call $~lib/rt/purerc/__retain drop @@ -9618,22 +9775,26 @@ call $~lib/array/Array<~lib/string/String | null>#get:length i32.ne if + i32.const 0 + local.set $3 local.get $0 call $~lib/rt/purerc/__release local.get $1 call $~lib/rt/purerc/__release - i32.const 0 + local.get $3 return end local.get $0 local.get $1 i32.eq if + i32.const 1 + local.set $3 local.get $0 call $~lib/rt/purerc/__release local.get $1 call $~lib/rt/purerc/__release - i32.const 1 + local.get $3 return end end @@ -9656,6 +9817,8 @@ local.tee $5 call $~lib/string/String.__ne if + i32.const 0 + local.set $6 local.get $0 call $~lib/rt/purerc/__release local.get $1 @@ -9664,7 +9827,7 @@ call $~lib/rt/purerc/__release local.get $5 call $~lib/rt/purerc/__release - i32.const 0 + local.get $6 return end local.get $4 @@ -9680,11 +9843,13 @@ end unreachable end + i32.const 1 + local.set $5 local.get $0 call $~lib/rt/purerc/__release local.get $1 call $~lib/rt/purerc/__release - i32.const 1 + local.get $5 ) (func $~lib/array/Array.create<~lib/string/String> (; 206 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) @@ -10228,6 +10393,7 @@ (local $3 i32) (local $4 i32) (local $5 i32) + (local $6 i32) local.get $0 call $~lib/rt/purerc/__retain drop @@ -10264,13 +10430,15 @@ i32.const 0 i32.gt_s if + i32.const 0 + local.set $6 local.get $0 call $~lib/rt/purerc/__release local.get $4 call $~lib/rt/purerc/__release local.get $5 call $~lib/rt/purerc/__release - i32.const 0 + local.get $6 return end local.get $4 @@ -10286,9 +10454,11 @@ end unreachable end + i32.const 1 + local.set $5 local.get $0 call $~lib/rt/purerc/__release - i32.const 1 + local.get $5 ) (func $std/array/assertSorted<~lib/string/String> (; 220 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) @@ -10344,72 +10514,82 @@ i32.eq end if + i32.const 0 + local.set $2 local.get $0 call $~lib/rt/purerc/__release local.get $1 call $~lib/rt/purerc/__release - i32.const 0 + local.get $2 return end local.get $0 call $~lib/string/String#get:length - local.set $2 + local.set $3 local.get $1 call $~lib/string/String#get:length - local.set $3 - local.get $2 + local.set $4 + local.get $3 i32.eqz if (result i32) - local.get $3 + local.get $4 i32.eqz else i32.const 0 end if - local.get $0 - call $~lib/rt/purerc/__release - local.get $1 - call $~lib/rt/purerc/__release i32.const 0 - return - end - local.get $2 - i32.eqz - if + local.set $2 local.get $0 call $~lib/rt/purerc/__release local.get $1 call $~lib/rt/purerc/__release + local.get $2 + return + end + local.get $3 + i32.eqz + if i32.const -1 - return - end - local.get $3 - i32.eqz - if + local.set $2 local.get $0 call $~lib/rt/purerc/__release local.get $1 call $~lib/rt/purerc/__release + local.get $2 + return + end + local.get $4 + i32.eqz + if i32.const 1 + local.set $2 + local.get $0 + call $~lib/rt/purerc/__release + local.get $1 + call $~lib/rt/purerc/__release + local.get $2 return end local.get $0 - call $~lib/rt/purerc/__release - local.get $1 - call $~lib/rt/purerc/__release - local.get $0 i32.const 0 local.get $1 i32.const 0 - local.get $2 - local.tee $4 local.get $3 - local.tee $5 + local.tee $2 local.get $4 + local.tee $5 + local.get $2 local.get $5 i32.lt_s select call $~lib/util/string/compareImpl + local.set $2 + local.get $0 + call $~lib/rt/purerc/__release + local.get $1 + call $~lib/rt/purerc/__release + local.get $2 ) (func $std/array/assertSorted<~lib/string/String>|trampoline (; 222 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) block $1of1 @@ -16066,7 +16246,18 @@ i32.const 4536 call $~lib/array/Array<~lib/array/Array<~lib/array/Array>>#join ) - (func $start:std/array (; 297 ;) (type $FUNCSIG$v) + (func $~lib/rt/purerc/__release (; 297 ;) (type $FUNCSIG$vi) (param $0 i32) + local.get $0 + global.get $~lib/builtins/HEAP_BASE + i32.gt_u + if + local.get $0 + i32.const 16 + i32.sub + call $~lib/rt/purerc/decrement + end + ) + (func $start:std/array (; 298 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -21594,10 +21785,8 @@ local.get $15 call $~lib/rt/purerc/__release end - i32.const 0 global.get $std/array/arr - call $~lib/rt/purerc/__retainRelease - global.set $std/array/arr + call $~lib/rt/purerc/__release local.get $54 call $~lib/rt/purerc/__release local.get $55 @@ -21605,7 +21794,7 @@ local.get $56 call $~lib/rt/purerc/__release ) - (func $std/array/main (; 298 ;) (type $FUNCSIG$v) + (func $std/array/main (; 299 ;) (type $FUNCSIG$v) global.get $~lib/started i32.eqz if @@ -21614,17 +21803,6 @@ global.set $~lib/started end ) - (func $~lib/rt/purerc/__release (; 299 ;) (type $FUNCSIG$vi) (param $0 i32) - local.get $0 - global.get $~lib/builtins/HEAP_BASE - i32.gt_u - if - local.get $0 - i32.const 16 - i32.sub - call $~lib/rt/purerc/decrement - end - ) (func $~lib/rt/purerc/markGray (; 300 ;) (type $FUNCSIG$vi) (param $0 i32) (local $1 i32) local.get $0 diff --git a/tests/compiler/std/map.optimized.wat b/tests/compiler/std/map.optimized.wat index e372c05a..1a5c4f1f 100644 --- a/tests/compiler/std/map.optimized.wat +++ b/tests/compiler/std/map.optimized.wat @@ -17,28 +17,28 @@ (type $FUNCSIG$iid (func (param i32 f64) (result i32))) (type $FUNCSIG$iidi (func (param i32 f64 i32) (result i32))) (type $FUNCSIG$vidi (func (param i32 f64 i32))) + (type $FUNCSIG$i (func (result i32))) + (type $FUNCSIG$vij (func (param i32 i64))) + (type $FUNCSIG$vif (func (param i32 f32))) + (type $FUNCSIG$vid (func (param i32 f64))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (import "rtrace" "retain" (func $~lib/rt/purerc/onIncrement (param i32))) (import "rtrace" "release" (func $~lib/rt/purerc/onDecrement (param i32))) (import "rtrace" "free" (func $~lib/rt/tlsf/onFree (param i32))) (memory $0 1) - (data (i32.const 8) "\1c\00\00\00\01\00\00\00\10\00\00\00\1c\00\00\00I\00n\00v\00a\00l\00i\00d\00 \00l\00e\00n\00g\00t\00h\00") - (data (i32.const 56) "&\00\00\00\01\00\00\00\10\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 112) "\1e\00\00\00\01\00\00\00\10\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\10\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 216) "\14\00\00\00\01\00\00\00\10\00\00\00\14\00\00\00s\00t\00d\00/\00m\00a\00p\00.\00t\00s\00") - (data (i32.const 256) "\"\00\00\00\01\00\00\00\10\00\00\00\"\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00p\00u\00r\00e\00r\00c\00.\00t\00s\00") - (data (i32.const 312) "$\00\00\00\01\00\00\00\10\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 368) "\"\00\00\00\01\00\00\00\10\00\00\00\"\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00c\00o\00m\00m\00o\00n\00.\00t\00s\00") - (data (i32.const 424) "\1a\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00L\08\00\00\00\00\00\00L\08\00\00\00\00\00\00L\10\00\00\00\00\00\00L\10\00\00\00\00\00\00L \00\00\00\00\00\00L \00\00\00\00\00\00L@\00\00\00\00\00\00L@\00\00\00\00\00\00L \00\00\00\00\00\00L@\00\00\00\00\00\00") - (table $0 1 funcref) - (elem (i32.const 0) $null) + (data (i32.const 8) "\1c\00\00\00\01\00\00\00\10\00\00\00\1c\00\00\00I\00n\00v\00a\00l\00i\00d\00 \00l\00e\00n\00g\00t\00h") + (data (i32.const 56) "&\00\00\00\01\00\00\00\10\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 112) "\1e\00\00\00\01\00\00\00\10\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s") + (data (i32.const 160) "(\00\00\00\01\00\00\00\10\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 216) "\14\00\00\00\01\00\00\00\10\00\00\00\14\00\00\00s\00t\00d\00/\00m\00a\00p\00.\00t\00s") + (data (i32.const 256) "\"\00\00\00\01\00\00\00\10\00\00\00\"\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00p\00u\00r\00e\00r\00c\00.\00t\00s") + (data (i32.const 312) "$\00\00\00\01\00\00\00\10\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 368) "\"\00\00\00\01\00\00\00\10\00\00\00\"\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00c\00o\00m\00m\00o\00n\00.\00t\00s") + (data (i32.const 424) "\1a\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00L\08\00\00\00\00\00\00L\08\00\00\00\00\00\00L\10\00\00\00\00\00\00L\10\00\00\00\00\00\00L \00\00\00\00\00\00L \00\00\00\00\00\00L@\00\00\00\00\00\00L@\00\00\00\00\00\00L \00\00\00\00\00\00L@") (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) (global $~lib/rt/purerc/CUR (mut i32) (i32.const 0)) (global $~lib/rt/purerc/END (mut i32) (i32.const 0)) (global $~lib/rt/purerc/ROOTS (mut i32) (i32.const 0)) - (global $~lib/builtins/RTTI_BASE i32 (i32.const 424)) - (global $~lib/builtins/HEAP_BASE i32 (i32.const 640)) (export "memory" (memory $0)) (start $start) (func $~lib/rt/tlsf/removeBlock (; 4 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) @@ -46,16 +46,9 @@ (local $3 i32) (local $4 i32) (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) - (local $10 i32) - (local $11 i32) local.get $1 i32.load - local.set $2 - local.get $2 + local.tee $3 i32.const 1 i32.and i32.eqz @@ -67,17 +60,14 @@ call $~lib/builtins/abort unreachable end - local.get $2 - i32.const 3 - i32.const -1 - i32.xor - i32.and - local.set $3 local.get $3 + i32.const -4 + i32.and + local.tee $2 i32.const 16 i32.ge_u if (result i32) - local.get $3 + local.get $2 i32.const 1073741808 i32.lt_u else @@ -92,44 +82,37 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $2 i32.const 256 i32.lt_u - if - i32.const 0 - local.set $4 - local.get $3 + if (result i32) + local.get $2 i32.const 4 i32.shr_u - local.set $5 + local.set $2 + i32.const 0 else + local.get $2 i32.const 31 - local.get $3 + local.get $2 i32.clz i32.sub - local.set $4 - local.get $3 - local.get $4 + local.tee $3 i32.const 4 i32.sub i32.shr_u - i32.const 1 - i32.const 4 - i32.shl + i32.const 16 i32.xor - local.set $5 - local.get $4 - i32.const 8 - i32.const 1 + local.set $2 + local.get $3 + i32.const 7 i32.sub - i32.sub - local.set $4 end - local.get $4 + local.tee $3 i32.const 23 i32.lt_u if (result i32) - local.get $5 + local.get $2 i32.const 16 i32.lt_u else @@ -145,111 +128,76 @@ unreachable end local.get $1 - i32.load offset=16 - local.set $6 - local.get $1 i32.load offset=20 - local.set $7 - local.get $6 + local.set $4 + local.get $1 + i32.load offset=16 + local.tee $5 if - local.get $6 - local.get $7 + local.get $5 + local.get $4 i32.store offset=20 end - local.get $7 + local.get $4 if - local.get $7 - local.get $6 + local.get $4 + local.get $5 i32.store offset=16 end + local.get $3 + i32.const 4 + i32.shl + local.get $2 + i32.add + i32.const 2 + i32.shl + local.get $0 + i32.add + i32.load offset=96 local.get $1 - block $~lib/rt/tlsf/GETHEAD|inlined.0 (result i32) - local.get $0 - local.set $10 - local.get $4 - local.set $9 - local.get $5 - local.set $8 - local.get $10 - local.get $9 + i32.eq + if + local.get $3 i32.const 4 i32.shl - local.get $8 + local.get $2 i32.add i32.const 2 i32.shl + local.get $0 i32.add - i32.load offset=96 - end - i32.eq - if - block $~lib/rt/tlsf/SETHEAD|inlined.1 - local.get $0 - local.set $11 - local.get $4 - local.set $10 - local.get $5 - local.set $9 - local.get $7 - local.set $8 - local.get $11 - local.get $10 - i32.const 4 - i32.shl - local.get $9 - i32.add - i32.const 2 - i32.shl - i32.add - local.get $8 - i32.store offset=96 - end - local.get $7 + local.get $4 + i32.store offset=96 + local.get $4 i32.eqz if - block $~lib/rt/tlsf/GETSL|inlined.0 (result i32) - local.get $0 - local.set $9 - local.get $4 - local.set $8 - local.get $9 - local.get $8 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - end - local.set $8 - block $~lib/rt/tlsf/SETSL|inlined.1 - local.get $0 - local.set $11 - local.get $4 - local.set $10 - local.get $8 - i32.const 1 - local.get $5 - i32.shl - i32.const -1 - i32.xor - i32.and - local.tee $8 - local.set $9 - local.get $11 - local.get $10 - i32.const 2 - i32.shl - i32.add - local.get $9 - i32.store offset=4 - end - local.get $8 + local.get $3 + i32.const 2 + i32.shl + local.get $0 + i32.add + local.get $3 + i32.const 2 + i32.shl + local.get $0 + i32.add + i32.load offset=4 + i32.const 1 + local.get $2 + i32.shl + i32.const -1 + i32.xor + i32.and + local.tee $1 + i32.store offset=4 + local.get $1 i32.eqz if local.get $0 local.get $0 i32.load i32.const 1 - local.get $4 + local.get $3 i32.shl i32.const -1 i32.xor @@ -266,12 +214,6 @@ (local $5 i32) (local $6 i32) (local $7 i32) - (local $8 i32) - (local $9 i32) - (local $10 i32) - (local $11 i32) - (local $12 i32) - (local $13 i32) local.get $1 i32.eqz if @@ -284,8 +226,7 @@ end local.get $1 i32.load - local.set $2 - local.get $2 + local.tee $3 i32.const 1 i32.and i32.eqz @@ -297,43 +238,30 @@ call $~lib/builtins/abort unreachable end - block $~lib/rt/tlsf/GETRIGHT|inlined.0 (result i32) - local.get $1 - local.set $3 - local.get $3 - i32.const 16 - i32.add - local.get $3 - i32.load - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.add - end - local.set $4 - local.get $4 + local.get $1 + i32.const 16 + i32.add + local.get $1 i32.load - local.set $5 - local.get $5 + i32.const -4 + i32.and + i32.add + local.tee $4 + i32.load + local.tee $5 i32.const 1 i32.and if - local.get $2 - i32.const 3 - i32.const -1 - i32.xor + local.get $3 + i32.const -4 i32.and i32.const 16 i32.add local.get $5 - i32.const 3 - i32.const -1 - i32.xor + i32.const -4 i32.and i32.add - local.set $3 - local.get $3 + local.tee $2 i32.const 1073741808 i32.lt_u if @@ -341,50 +269,37 @@ local.get $4 call $~lib/rt/tlsf/removeBlock local.get $1 - local.get $2 + local.get $3 i32.const 3 i32.and - local.get $3 + local.get $2 i32.or - local.tee $2 + local.tee $3 i32.store - block $~lib/rt/tlsf/GETRIGHT|inlined.1 (result i32) - local.get $1 - local.set $6 - local.get $6 - i32.const 16 - i32.add - local.get $6 - i32.load - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.add - end - local.set $4 - local.get $4 + local.get $1 + i32.const 16 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $4 i32.load local.set $5 end end - local.get $2 + local.get $3 i32.const 2 i32.and if - block $~lib/rt/tlsf/GETFREELEFT|inlined.0 (result i32) - local.get $1 - local.set $3 - local.get $3 - i32.const 4 - i32.sub - i32.load - end - local.set $3 - local.get $3 + local.get $1 + i32.const 4 + i32.sub i32.load - local.set $6 - local.get $6 + local.tee $2 + i32.load + local.tee $6 i32.const 1 i32.and i32.eqz @@ -397,54 +312,48 @@ unreachable end local.get $6 - i32.const 3 - i32.const -1 - i32.xor + i32.const -4 i32.and i32.const 16 i32.add - local.get $2 - i32.const 3 - i32.const -1 - i32.xor + local.get $3 + i32.const -4 i32.and i32.add - local.set $7 - local.get $7 + local.tee $7 i32.const 1073741808 i32.lt_u - if + if (result i32) local.get $0 - local.get $3 + local.get $2 call $~lib/rt/tlsf/removeBlock - local.get $3 + local.get $2 local.get $6 i32.const 3 i32.and local.get $7 i32.or - local.tee $2 + local.tee $3 i32.store - local.get $3 - local.set $1 + local.get $2 + else + local.get $1 end + local.set $1 end local.get $4 local.get $5 i32.const 2 i32.or i32.store - local.get $2 - i32.const 3 - i32.const -1 - i32.xor + local.get $3 + i32.const -4 i32.and - local.set $8 - local.get $8 + local.tee $2 i32.const 16 i32.ge_u if (result i32) - local.get $8 + local.get $2 i32.const 1073741808 i32.lt_u else @@ -459,14 +368,13 @@ call $~lib/builtins/abort unreachable end + local.get $4 local.get $1 i32.const 16 i32.add - local.get $8 + local.get $2 i32.add - local.get $4 - i32.eq - i32.eqz + i32.ne if i32.const 0 i32.const 128 @@ -480,44 +388,37 @@ i32.sub local.get $1 i32.store - local.get $8 + local.get $2 i32.const 256 i32.lt_u - if - i32.const 0 - local.set $9 - local.get $8 + if (result i32) + local.get $2 i32.const 4 i32.shr_u - local.set $10 + local.set $4 + i32.const 0 else + local.get $2 i32.const 31 - local.get $8 + local.get $2 i32.clz i32.sub - local.set $9 - local.get $8 - local.get $9 + local.tee $2 i32.const 4 i32.sub i32.shr_u - i32.const 1 - i32.const 4 - i32.shl + i32.const 16 i32.xor - local.set $10 - local.get $9 - i32.const 8 - i32.const 1 + local.set $4 + local.get $2 + i32.const 7 i32.sub - i32.sub - local.set $9 end - local.get $9 + local.tee $3 i32.const 23 i32.lt_u if (result i32) - local.get $10 + local.get $4 i32.const 16 i32.lt_u else @@ -532,124 +433,83 @@ call $~lib/builtins/abort unreachable end - block $~lib/rt/tlsf/GETHEAD|inlined.1 (result i32) - local.get $0 - local.set $3 - local.get $9 - local.set $6 - local.get $10 - local.set $7 - local.get $3 - local.get $6 - i32.const 4 - i32.shl - local.get $7 - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - end - local.set $11 + local.get $3 + i32.const 4 + i32.shl + local.get $4 + i32.add + i32.const 2 + i32.shl + local.get $0 + i32.add + i32.load offset=96 + local.set $2 local.get $1 i32.const 0 i32.store offset=16 local.get $1 - local.get $11 + local.get $2 i32.store offset=20 - local.get $11 + local.get $2 if - local.get $11 + local.get $2 local.get $1 i32.store offset=16 end - block $~lib/rt/tlsf/SETHEAD|inlined.2 - local.get $0 - local.set $12 - local.get $9 - local.set $3 - local.get $10 - local.set $6 - local.get $1 - local.set $7 - local.get $12 - local.get $3 - i32.const 4 - i32.shl - local.get $6 - i32.add - i32.const 2 - i32.shl - i32.add - local.get $7 - i32.store offset=96 - end + local.get $3 + i32.const 4 + i32.shl + local.get $4 + i32.add + i32.const 2 + i32.shl + local.get $0 + i32.add + local.get $1 + i32.store offset=96 local.get $0 local.get $0 i32.load i32.const 1 - local.get $9 + local.get $3 i32.shl i32.or i32.store - block $~lib/rt/tlsf/SETSL|inlined.2 - local.get $0 - local.set $3 - local.get $9 - local.set $6 - block $~lib/rt/tlsf/GETSL|inlined.1 (result i32) - local.get $0 - local.set $13 - local.get $9 - local.set $12 - local.get $13 - local.get $12 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - end - i32.const 1 - local.get $10 - i32.shl - i32.or - local.set $7 - local.get $3 - local.get $6 - i32.const 2 - i32.shl - i32.add - local.get $7 - i32.store offset=4 - end + local.get $3 + i32.const 2 + i32.shl + local.get $0 + i32.add + local.get $3 + i32.const 2 + i32.shl + local.get $0 + i32.add + i32.load offset=4 + i32.const 1 + local.get $4 + i32.shl + i32.or + i32.store offset=4 ) - (func $~lib/rt/tlsf/addMemory (; 6 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/rt/tlsf/addMemory (; 6 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $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 $2 + i32.const 15 + i32.and + i32.eqz + i32.const 0 + local.get $1 + i32.const 15 + i32.and + i32.eqz + i32.const 0 local.get $1 local.get $2 i32.le_u - if (result i32) - local.get $1 - i32.const 15 - i32.and - i32.eqz - else - i32.const 0 - end - if (result i32) - local.get $2 - i32.const 15 - i32.and - i32.eqz - else - i32.const 0 - end + select + select i32.eqz if i32.const 0 @@ -659,23 +519,15 @@ call $~lib/builtins/abort unreachable end - block $~lib/rt/tlsf/GETTAIL|inlined.0 (result i32) - local.get $0 - local.set $3 - local.get $3 - i32.load offset=1568 - end - local.set $4 - i32.const 0 - local.set $5 - local.get $4 + local.get $0 + i32.load offset=1568 + local.tee $3 if local.get $1 - local.get $4 + local.get $3 i32.const 16 i32.add - i32.ge_u - i32.eqz + i32.lt_u if i32.const 0 i32.const 128 @@ -687,26 +539,23 @@ local.get $1 i32.const 16 i32.sub - local.get $4 + local.get $3 i32.eq if + local.get $3 + i32.load + local.set $4 local.get $1 i32.const 16 i32.sub local.set $1 - local.get $4 - i32.load - local.set $5 - else - nop end else local.get $1 local.get $0 i32.const 1572 i32.add - i32.ge_u - i32.eqz + i32.lt_u if i32.const 0 i32.const 128 @@ -719,101 +568,54 @@ local.get $2 local.get $1 i32.sub - local.set $6 - local.get $6 + local.tee $2 i32.const 48 i32.lt_u if - i32.const 0 return end - local.get $6 - i32.const 2 - i32.const 16 - i32.mul - i32.sub - local.set $7 local.get $1 - local.set $8 - local.get $8 - local.get $7 - i32.const 1 - i32.or - local.get $5 + local.get $4 i32.const 2 i32.and + local.get $2 + i32.const 32 + i32.sub + i32.const 1 + i32.or i32.or i32.store - local.get $8 + local.get $1 i32.const 0 i32.store offset=16 - local.get $8 + local.get $1 i32.const 0 i32.store offset=20 local.get $1 - local.get $6 + local.get $2 i32.add i32.const 16 i32.sub - local.set $4 - local.get $4 - i32.const 0 + local.tee $2 i32.const 2 - i32.or i32.store - block $~lib/rt/tlsf/SETTAIL|inlined.1 - local.get $0 - local.set $9 - local.get $4 - local.set $3 - local.get $9 - local.get $3 - i32.store offset=1568 - end local.get $0 - local.get $8 + local.get $2 + i32.store offset=1568 + local.get $0 + local.get $1 call $~lib/rt/tlsf/insertBlock - i32.const 1 ) (func $~lib/rt/tlsf/initializeRoot (; 7 ;) (type $FUNCSIG$v) (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) - (local $9 i32) - global.get $~lib/builtins/HEAP_BASE - i32.const 15 - i32.add - i32.const 15 - i32.const -1 - i32.xor - i32.and - local.set $0 + i32.const 1 current_memory - local.set $1 - local.get $0 - i32.const 1572 - i32.add - i32.const 65535 - i32.add - i32.const 65535 - i32.const -1 - i32.xor - i32.and - i32.const 16 - i32.shr_u - local.set $2 - local.get $2 - local.get $1 + local.tee $0 i32.gt_s if (result i32) - local.get $2 - local.get $1 + i32.const 1 + local.get $0 i32.sub grow_memory i32.const 0 @@ -824,113 +626,70 @@ if unreachable end - local.get $0 - local.set $3 - local.get $3 + i32.const 640 i32.const 0 i32.store - block $~lib/rt/tlsf/SETTAIL|inlined.0 - local.get $3 - local.set $5 - i32.const 0 - local.set $4 - local.get $5 - local.get $4 - i32.store offset=1568 - end - block $break|0 - i32.const 0 - local.set $4 - loop $repeat|0 - local.get $4 + i32.const 2208 + i32.const 0 + i32.store + i32.const 0 + local.set $0 + loop $repeat|0 + block $break|0 + local.get $0 i32.const 23 - i32.lt_u - i32.eqz + i32.ge_u br_if $break|0 - block $~lib/rt/tlsf/SETSL|inlined.0 - local.get $3 - local.set $7 - local.get $4 - local.set $6 - i32.const 0 - local.set $5 - local.get $7 - local.get $6 - i32.const 2 - i32.shl - i32.add - local.get $5 - i32.store offset=4 - end - block $break|1 - i32.const 0 - local.set $5 - loop $repeat|1 - local.get $5 + local.get $0 + i32.const 2 + i32.shl + i32.const 640 + i32.add + i32.const 0 + i32.store offset=4 + i32.const 0 + local.set $1 + loop $repeat|1 + block $break|1 + local.get $1 i32.const 16 - i32.lt_u - i32.eqz + i32.ge_u br_if $break|1 - block $~lib/rt/tlsf/SETHEAD|inlined.0 - local.get $3 - local.set $9 - local.get $4 - local.set $8 - local.get $5 - local.set $7 - i32.const 0 - local.set $6 - local.get $9 - local.get $8 - i32.const 4 - i32.shl - local.get $7 - i32.add - i32.const 2 - i32.shl - i32.add - local.get $6 - i32.store offset=96 - end - local.get $5 + local.get $0 + i32.const 4 + i32.shl + local.get $1 + i32.add + i32.const 2 + i32.shl + i32.const 640 + i32.add + i32.const 0 + i32.store offset=96 + local.get $1 i32.const 1 i32.add - local.set $5 + local.set $1 br $repeat|1 - unreachable end - unreachable end - local.get $4 + local.get $0 i32.const 1 i32.add - local.set $4 + local.set $0 br $repeat|0 - unreachable end - unreachable end - local.get $3 - local.get $0 - i32.const 1572 - i32.add - i32.const 15 - i32.add - i32.const 15 - i32.const -1 - i32.xor - i32.and + i32.const 640 + i32.const 2224 current_memory i32.const 16 i32.shl call $~lib/rt/tlsf/addMemory - drop - local.get $3 + i32.const 640 global.set $~lib/rt/tlsf/ROOT ) (func $~lib/rt/tlsf/prepareSize (; 8 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) local.get $0 i32.const 1073741808 i32.ge_u @@ -945,83 +704,64 @@ local.get $0 i32.const 15 i32.add - i32.const 15 - i32.const -1 - i32.xor + i32.const -16 i32.and - local.tee $1 + local.tee $0 + i32.const 16 + local.get $0 i32.const 16 - local.tee $2 - local.get $1 - local.get $2 i32.gt_u select ) (func $~lib/rt/tlsf/searchBlock (; 9 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result 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 $1 i32.const 256 i32.lt_u - if - i32.const 0 - local.set $2 + if (result i32) local.get $1 i32.const 4 i32.shr_u - local.set $3 + local.set $1 + i32.const 0 else local.get $1 i32.const 536870904 i32.lt_u - if (result i32) - local.get $1 + if i32.const 1 i32.const 27 local.get $1 i32.clz i32.sub i32.shl + local.get $1 i32.add i32.const 1 i32.sub - else - local.get $1 + local.set $1 end - local.set $4 + local.get $1 i32.const 31 - local.get $4 + local.get $1 i32.clz i32.sub - local.set $2 - local.get $4 - local.get $2 + local.tee $2 i32.const 4 i32.sub i32.shr_u - i32.const 1 - i32.const 4 - i32.shl + i32.const 16 i32.xor - local.set $3 + local.set $1 local.get $2 - i32.const 8 - i32.const 1 + i32.const 7 i32.sub - i32.sub - local.set $2 end - local.get $2 + local.tee $2 i32.const 23 i32.lt_u if (result i32) - local.get $3 + local.get $1 i32.const 16 i32.lt_u else @@ -1036,62 +776,49 @@ call $~lib/builtins/abort unreachable end - block $~lib/rt/tlsf/GETSL|inlined.2 (result i32) - local.get $0 - local.set $5 - local.get $2 - local.set $4 - local.get $5 - local.get $4 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - end - i32.const 0 + local.get $2 + i32.const 2 + i32.shl + local.get $0 + i32.add + i32.load offset=4 i32.const -1 - i32.xor - local.get $3 + local.get $1 i32.shl i32.and - local.set $6 - local.get $6 - i32.eqz - if + local.tee $1 + if (result i32) + local.get $1 + i32.ctz + local.get $2 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + local.get $0 + i32.add + i32.load offset=96 + else local.get $0 i32.load - i32.const 0 i32.const -1 - i32.xor local.get $2 i32.const 1 i32.add i32.shl i32.and - local.set $4 - local.get $4 - i32.eqz - if - i32.const 0 - local.set $7 - else - local.get $4 + local.tee $1 + if (result i32) + local.get $1 i32.ctz - local.set $2 - block $~lib/rt/tlsf/GETSL|inlined.3 (result i32) - local.get $0 - local.set $8 - local.get $2 - local.set $5 - local.get $8 - local.get $5 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - end - local.set $6 - local.get $6 + local.tee $1 + i32.const 2 + i32.shl + local.get $0 + i32.add + i32.load offset=4 + local.tee $2 i32.eqz if i32.const 0 @@ -1101,85 +828,43 @@ call $~lib/builtins/abort unreachable end - block $~lib/rt/tlsf/GETHEAD|inlined.2 (result i32) - local.get $0 - local.set $9 - local.get $2 - local.set $8 - local.get $6 - i32.ctz - local.set $5 - local.get $9 - local.get $8 - i32.const 4 - i32.shl - local.get $5 - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - end - local.set $7 - end - else - block $~lib/rt/tlsf/GETHEAD|inlined.3 (result i32) - local.get $0 - local.set $8 local.get $2 - local.set $5 - local.get $6 i32.ctz - local.set $4 - local.get $8 - local.get $5 + local.get $1 i32.const 4 i32.shl - local.get $4 i32.add i32.const 2 i32.shl + local.get $0 i32.add i32.load offset=96 + else + i32.const 0 end - local.set $7 end - local.get $7 ) (func $~lib/rt/tlsf/growMemory (; 10 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) current_memory - local.set $2 + local.tee $2 local.get $1 i32.const 65535 i32.add - i32.const 65535 - i32.const -1 - i32.xor + i32.const -65536 i32.and i32.const 16 i32.shr_u - local.set $3 + local.tee $1 local.get $2 - local.tee $4 - local.get $3 - local.tee $5 - local.get $4 - local.get $5 + local.get $1 i32.gt_s select - local.set $6 - local.get $6 grow_memory i32.const 0 i32.lt_s if - local.get $3 + local.get $1 grow_memory i32.const 0 i32.lt_s @@ -1187,30 +872,24 @@ unreachable end end - current_memory - local.set $7 local.get $0 local.get $2 i32.const 16 i32.shl - local.get $7 + current_memory i32.const 16 i32.shl call $~lib/rt/tlsf/addMemory - drop ) (func $~lib/rt/tlsf/prepareBlock (; 11 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) - (local $5 i32) local.get $1 i32.load local.set $3 local.get $2 i32.const 15 i32.and - i32.eqz - i32.eqz if i32.const 0 i32.const 128 @@ -1220,22 +899,19 @@ unreachable end local.get $3 - i32.const 3 - i32.const -1 - i32.xor + i32.const -4 i32.and local.get $2 i32.sub - local.set $4 - local.get $4 + local.tee $4 i32.const 32 i32.ge_u if local.get $1 - local.get $2 local.get $3 i32.const 2 i32.and + local.get $2 i32.or i32.store local.get $1 @@ -1243,8 +919,7 @@ i32.add local.get $2 i32.add - local.set $5 - local.get $5 + local.tee $1 local.get $4 i32.const 16 i32.sub @@ -1252,48 +927,32 @@ i32.or i32.store local.get $0 - local.get $5 + local.get $1 call $~lib/rt/tlsf/insertBlock else local.get $1 local.get $3 - i32.const 1 - i32.const -1 - i32.xor + i32.const -2 i32.and i32.store - block $~lib/rt/tlsf/GETRIGHT|inlined.3 (result i32) - local.get $1 - local.set $5 - local.get $5 - i32.const 16 - i32.add - local.get $5 - i32.load - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.add - end - block $~lib/rt/tlsf/GETRIGHT|inlined.2 (result i32) - local.get $1 - local.set $5 - local.get $5 - i32.const 16 - i32.add - local.get $5 - i32.load - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.add - end + local.get $1 + i32.const 16 + i32.add + local.get $1 i32.load - i32.const 2 - i32.const -1 - i32.xor + i32.const -4 + i32.and + i32.add + local.get $1 + i32.const 16 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + i32.load + i32.const -3 i32.and i32.store end @@ -1301,24 +960,21 @@ (func $~lib/rt/tlsf/allocateBlock (; 12 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) + local.get $0 local.get $1 call $~lib/rt/tlsf/prepareSize - local.set $2 - local.get $0 - local.get $2 + local.tee $3 call $~lib/rt/tlsf/searchBlock - local.set $3 - local.get $3 + local.tee $2 i32.eqz if local.get $0 - local.get $2 + local.get $3 call $~lib/rt/tlsf/growMemory local.get $0 - local.get $2 - call $~lib/rt/tlsf/searchBlock - local.set $3 local.get $3 + call $~lib/rt/tlsf/searchBlock + local.tee $2 i32.eqz if i32.const 0 @@ -1329,15 +985,12 @@ unreachable end end - local.get $3 - i32.load - i32.const 3 - i32.const -1 - i32.xor - i32.and local.get $2 - i32.ge_u - i32.eqz + i32.load + i32.const -4 + i32.and + local.get $3 + i32.lt_u if i32.const 0 i32.const 128 @@ -1346,310 +999,254 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $2 i32.const 0 i32.store offset=4 - local.get $3 + local.get $2 local.get $1 i32.store offset=12 local.get $0 - local.get $3 + local.get $2 call $~lib/rt/tlsf/removeBlock local.get $0 - local.get $3 local.get $2 - call $~lib/rt/tlsf/prepareBlock local.get $3 + call $~lib/rt/tlsf/prepareBlock + local.get $2 ) (func $~lib/rt/tlsf/__alloc (; 13 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) - (local $3 i32) global.get $~lib/rt/tlsf/ROOT - local.set $2 - local.get $2 - i32.eqz - if + local.tee $2 + if (result i32) + local.get $2 + else call $~lib/rt/tlsf/initializeRoot global.get $~lib/rt/tlsf/ROOT - local.set $2 end - local.get $2 local.get $0 call $~lib/rt/tlsf/allocateBlock - local.set $3 - local.get $3 + local.tee $0 local.get $1 i32.store offset=8 - local.get $3 + local.get $0 i32.const 16 i32.add ) - (func $~lib/memory/memory.fill (; 14 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i64) + (func $~lib/memory/memory.fill (; 14 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (local $2 i32) block $~lib/util/memory/memset|inlined.0 - local.get $0 - local.set $5 local.get $1 - local.set $4 - local.get $2 - local.set $3 - local.get $3 i32.eqz - if - br $~lib/util/memory/memset|inlined.0 - end - local.get $5 - local.get $4 + br_if $~lib/util/memory/memset|inlined.0 + local.get $0 + i32.const 0 i32.store8 - local.get $5 - local.get $3 + local.get $0 + local.get $1 i32.add i32.const 1 i32.sub - local.get $4 + i32.const 0 i32.store8 - local.get $3 + local.get $1 i32.const 2 i32.le_u - if - br $~lib/util/memory/memset|inlined.0 - end - local.get $5 + br_if $~lib/util/memory/memset|inlined.0 + local.get $0 i32.const 1 i32.add - local.get $4 + i32.const 0 i32.store8 - local.get $5 + local.get $0 i32.const 2 i32.add - local.get $4 + i32.const 0 i32.store8 - local.get $5 - local.get $3 + local.get $0 + local.get $1 i32.add + local.tee $2 i32.const 2 i32.sub - local.get $4 + i32.const 0 i32.store8 - local.get $5 - local.get $3 - i32.add + local.get $2 i32.const 3 i32.sub - local.get $4 + i32.const 0 i32.store8 - local.get $3 + local.get $1 i32.const 6 i32.le_u - if - br $~lib/util/memory/memset|inlined.0 - end - local.get $5 + br_if $~lib/util/memory/memset|inlined.0 + local.get $0 i32.const 3 i32.add - local.get $4 + i32.const 0 i32.store8 - local.get $5 - local.get $3 + local.get $0 + local.get $1 i32.add i32.const 4 i32.sub - local.get $4 + i32.const 0 i32.store8 - local.get $3 + local.get $1 i32.const 8 i32.le_u - if - br $~lib/util/memory/memset|inlined.0 - end + br_if $~lib/util/memory/memset|inlined.0 + local.get $1 i32.const 0 - local.get $5 + local.get $0 i32.sub i32.const 3 i32.and - local.set $6 - local.get $5 - local.get $6 - i32.add - local.set $5 - local.get $3 - local.get $6 + local.tee $1 i32.sub - local.set $3 - local.get $3 + local.set $2 + local.get $0 + local.get $1 + i32.add + local.tee $0 + i32.const 0 + i32.store + local.get $2 i32.const -4 i32.and - local.set $3 - i32.const -1 - i32.const 255 - i32.div_u - local.get $4 - i32.const 255 - i32.and - i32.mul - local.set $7 - local.get $5 - local.get $7 - i32.store - local.get $5 - local.get $3 + local.tee $1 + local.get $0 i32.add i32.const 4 i32.sub - local.get $7 + i32.const 0 i32.store - local.get $3 + local.get $1 i32.const 8 i32.le_u - if - br $~lib/util/memory/memset|inlined.0 - end - local.get $5 + br_if $~lib/util/memory/memset|inlined.0 + local.get $0 i32.const 4 i32.add - local.get $7 + i32.const 0 i32.store - local.get $5 + local.get $0 i32.const 8 i32.add - local.get $7 + i32.const 0 i32.store - local.get $5 - local.get $3 + local.get $0 + local.get $1 i32.add + local.tee $2 i32.const 12 i32.sub - local.get $7 + i32.const 0 i32.store - local.get $5 - local.get $3 - i32.add + local.get $2 i32.const 8 i32.sub - local.get $7 + i32.const 0 i32.store - local.get $3 + local.get $1 i32.const 24 i32.le_u - if - br $~lib/util/memory/memset|inlined.0 - end - local.get $5 + br_if $~lib/util/memory/memset|inlined.0 + local.get $0 i32.const 12 i32.add - local.get $7 + i32.const 0 i32.store - local.get $5 + local.get $0 i32.const 16 i32.add - local.get $7 + i32.const 0 i32.store - local.get $5 + local.get $0 i32.const 20 i32.add - local.get $7 + i32.const 0 i32.store - local.get $5 + local.get $0 i32.const 24 i32.add - local.get $7 + i32.const 0 i32.store - local.get $5 - local.get $3 + local.get $0 + local.get $1 i32.add + local.tee $2 i32.const 28 i32.sub - local.get $7 + i32.const 0 i32.store - local.get $5 - local.get $3 - i32.add + local.get $2 i32.const 24 i32.sub - local.get $7 + i32.const 0 i32.store - local.get $5 - local.get $3 - i32.add + local.get $2 i32.const 20 i32.sub - local.get $7 + i32.const 0 i32.store - local.get $5 - local.get $3 - i32.add + local.get $2 i32.const 16 i32.sub - local.get $7 + i32.const 0 i32.store - i32.const 24 - local.get $5 + local.get $0 i32.const 4 i32.and + i32.const 24 i32.add - local.set $6 - local.get $5 - local.get $6 + local.tee $2 + local.get $0 i32.add - local.set $5 - local.get $3 - local.get $6 + local.set $0 + local.get $1 + local.get $2 i32.sub - local.set $3 - local.get $7 - i64.extend_i32_u - local.get $7 - i64.extend_i32_u - i64.const 32 - i64.shl - i64.or - local.set $8 - block $break|0 - loop $continue|0 - local.get $3 + local.set $1 + loop $continue|0 + local.get $1 + i32.const 32 + i32.ge_u + if + local.get $0 + i64.const 0 + i64.store + local.get $0 + i32.const 8 + i32.add + i64.const 0 + i64.store + local.get $0 + i32.const 16 + i32.add + i64.const 0 + i64.store + local.get $0 + i32.const 24 + i32.add + i64.const 0 + i64.store + local.get $1 i32.const 32 - i32.ge_u - if - local.get $5 - local.get $8 - i64.store - local.get $5 - i32.const 8 - i32.add - local.get $8 - i64.store - local.get $5 - i32.const 16 - i32.add - local.get $8 - i64.store - local.get $5 - i32.const 24 - i32.add - local.get $8 - i64.store - local.get $3 - i32.const 32 - i32.sub - local.set $3 - local.get $5 - i32.const 32 - i32.add - local.set $5 - br $continue|0 - end + i32.sub + local.set $1 + local.get $0 + i32.const 32 + i32.add + local.set $0 + br $continue|0 end end end ) - (func $~lib/arraybuffer/ArrayBuffer#constructor (; 15 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - local.get $1 + (func $~lib/arraybuffer/ArrayBuffer#constructor (; 15 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + local.get $0 i32.const 1073741808 i32.gt_u if @@ -1660,45 +1257,32 @@ call $~lib/builtins/abort unreachable end - local.get $1 + local.get $0 i32.const 15 call $~lib/rt/tlsf/__alloc - local.set $2 - local.get $2 - i32.const 0 - local.get $1 + local.tee $1 + local.get $0 call $~lib/memory/memory.fill - local.get $2 + local.get $1 call $~lib/rt/purerc/__retain ) (func $~lib/map/Map#clear (; 16 ;) (type $FUNCSIG$vi) (param $0 i32) - (local $1 i32) local.get $0 - local.tee $1 - block (result i32) - local.get $1 - i32.load - call $~lib/rt/purerc/__release - i32.const 0 - i32.const 16 - call $~lib/arraybuffer/ArrayBuffer#constructor - end + i32.load + call $~lib/rt/purerc/__release + local.get $0 + i32.const 16 + call $~lib/arraybuffer/ArrayBuffer#constructor i32.store local.get $0 - i32.const 4 - i32.const 1 - i32.sub + i32.const 3 i32.store offset=4 local.get $0 - local.tee $1 - block (result i32) - local.get $1 - i32.load offset=8 - call $~lib/rt/purerc/__release - i32.const 0 - i32.const 48 - call $~lib/arraybuffer/ArrayBuffer#constructor - end + i32.load offset=8 + call $~lib/rt/purerc/__release + local.get $0 + i32.const 48 + call $~lib/arraybuffer/ArrayBuffer#constructor i32.store offset=8 local.get $0 i32.const 4 @@ -1710,118 +1294,94 @@ i32.const 0 i32.store offset=20 ) - (func $~lib/map/Map#constructor (; 17 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - block (result i32) - local.get $0 - i32.eqz - if - i32.const 24 - i32.const 17 - call $~lib/rt/tlsf/__alloc - call $~lib/rt/purerc/__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 - i32.const 0 - i32.store offset=16 - local.get $0 - i32.const 0 - i32.store offset=20 - local.get $0 - end + (func $~lib/map/Map#constructor (; 17 ;) (type $FUNCSIG$i) (result i32) + (local $0 i32) + i32.const 24 + i32.const 17 + call $~lib/rt/tlsf/__alloc + call $~lib/rt/purerc/__retain + local.tee $0 + i32.const 0 + i32.store + local.get $0 + i32.const 0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=8 + local.get $0 + i32.const 0 + i32.store offset=12 + local.get $0 + i32.const 0 + i32.store offset=16 + local.get $0 + i32.const 0 + i32.store offset=20 + local.get $0 call $~lib/map/Map#clear local.get $0 ) - (func $~lib/util/hash/hash8 (; 18 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - i32.const -2128831035 - local.get $0 - i32.xor - i32.const 16777619 - i32.mul - ) - (func $~lib/map/Map#find (; 19 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) + (func $~lib/map/Map#find (; 18 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $0 i32.load - local.get $2 local.get $0 i32.load offset=4 + local.get $2 i32.and - i32.const 4 - i32.mul + i32.const 2 + i32.shl i32.add i32.load - local.set $3 - block $break|0 - loop $continue|0 - local.get $3 - if - local.get $3 - i32.load offset=8 - i32.const 1 + local.set $0 + loop $continue|0 + local.get $0 + if + local.get $0 + i32.load offset=8 + i32.const 1 + i32.and + if (result i32) + i32.const 0 + else + local.get $0 + i32.load8_u + local.get $1 + i32.const 255 i32.and - i32.eqz - if (result i32) - local.get $3 - i32.load8_s - local.get $1 - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s - i32.eq - else - i32.const 0 - end - if - local.get $3 - return - end - local.get $3 - i32.load offset=8 - i32.const 1 - i32.const -1 - i32.xor - i32.and - local.set $3 - br $continue|0 + i32.eq end + if + local.get $0 + return + end + local.get $0 + i32.load offset=8 + i32.const -2 + i32.and + local.set $0 + br $continue|0 end end i32.const 0 ) - (func $~lib/map/Map#has (; 20 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) + (func $~lib/map/Map#has (; 19 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $0 local.get $1 - block $~lib/util/hash/HASH|inlined.0 (result i32) - local.get $1 - local.set $2 - local.get $2 - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s - call $~lib/util/hash/hash8 - br $~lib/util/hash/HASH|inlined.0 - end + local.get $1 + i32.const 24 + i32.shl + i32.const 24 + i32.shr_s + i32.const -2128831035 + i32.xor + i32.const 16777619 + i32.mul call $~lib/map/Map#find i32.const 0 i32.ne ) - (func $~lib/map/Map#rehash (; 21 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/map/Map#rehash (; 20 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -1829,117 +1389,88 @@ (local $6 i32) (local $7 i32) (local $8 i32) - (local $9 i32) - (local $10 i32) - (local $11 i32) - (local $12 i32) local.get $1 i32.const 1 i32.add - local.set $2 - i32.const 0 - local.get $2 - i32.const 4 - i32.mul + local.tee $2 + i32.const 2 + i32.shl call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $3 + local.set $4 local.get $2 f64.convert_i32_s f64.const 2.6666666666666665 f64.mul i32.trunc_f64_s - local.set $4 - i32.const 0 - local.get $4 - block $~lib/map/ENTRY_SIZE|inlined.1 (result i32) - i32.const 12 - end + local.tee $6 + i32.const 12 i32.mul call $~lib/arraybuffer/ArrayBuffer#constructor local.set $5 local.get $0 i32.load offset=8 - local.set $6 - local.get $6 + local.tee $3 local.get $0 i32.load offset=16 - block $~lib/map/ENTRY_SIZE|inlined.2 (result i32) - i32.const 12 - end + i32.const 12 i32.mul i32.add local.set $7 local.get $5 - local.set $8 - block $break|0 - loop $continue|0 - local.get $6 - local.get $7 - i32.ne + local.set $2 + loop $continue|0 + local.get $3 + local.get $7 + i32.ne + if + local.get $3 + i32.load offset=8 + i32.const 1 + i32.and + i32.eqz if - local.get $6 - local.set $9 - local.get $9 - i32.load offset=8 - i32.const 1 + local.get $2 + local.get $3 + i32.load8_s + i32.store8 + local.get $2 + local.get $3 + i32.load offset=4 + i32.store offset=4 + local.get $2 + local.get $3 + i32.load8_s + i32.const -2128831035 + i32.xor + i32.const 16777619 + i32.mul + local.get $1 i32.and - i32.eqz - if - local.get $8 - local.set $10 - local.get $10 - local.get $9 - i32.load8_s - i32.store8 - local.get $10 - local.get $9 - i32.load offset=4 - i32.store offset=4 - block $~lib/util/hash/HASH|inlined.2 (result i32) - local.get $9 - i32.load8_s - local.set $11 - local.get $11 - call $~lib/util/hash/hash8 - br $~lib/util/hash/HASH|inlined.2 - end - local.get $1 - i32.and - local.set $11 - local.get $3 - local.get $11 - i32.const 4 - i32.mul - i32.add - local.set $12 - local.get $10 - local.get $12 - i32.load - i32.store offset=8 - local.get $12 - local.get $8 - i32.store - local.get $8 - block $~lib/map/ENTRY_SIZE|inlined.3 (result i32) - i32.const 12 - end - i32.add - local.set $8 - end - local.get $6 - block $~lib/map/ENTRY_SIZE|inlined.4 (result i32) - i32.const 12 - end + i32.const 2 + i32.shl + local.get $4 i32.add - local.set $6 - br $continue|0 + local.tee $8 + i32.load + i32.store offset=8 + local.get $8 + local.get $2 + i32.store + local.get $2 + i32.const 12 + i32.add + local.set $2 end + local.get $3 + i32.const 12 + i32.add + local.set $3 + br $continue|0 end end local.get $0 - local.tee $9 - local.get $3 - local.get $9 + local.get $4 + local.get $0 i32.load call $~lib/rt/purerc/__retainRelease i32.store @@ -1947,49 +1478,45 @@ local.get $1 i32.store offset=4 local.get $0 - local.tee $9 local.get $5 - local.get $9 + local.get $0 i32.load offset=8 call $~lib/rt/purerc/__retainRelease i32.store offset=8 local.get $0 - local.get $4 + local.get $6 i32.store offset=12 local.get $0 local.get $0 i32.load offset=20 i32.store offset=16 - local.get $3 + local.get $4 call $~lib/rt/purerc/__release local.get $5 call $~lib/rt/purerc/__release ) - (func $~lib/map/Map#set (; 22 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/map/Map#set (; 21 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) - (local $6 i32) - block $~lib/util/hash/HASH|inlined.1 (result i32) - local.get $1 - local.set $3 - local.get $3 - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s - call $~lib/util/hash/hash8 - br $~lib/util/hash/HASH|inlined.1 - end - local.set $4 + local.get $1 + i32.const 24 + i32.shl + i32.const 24 + i32.shr_s + i32.const -2128831035 + i32.xor + i32.const 16777619 + i32.mul + local.tee $3 + local.set $5 local.get $0 local.get $1 - local.get $4 + local.get $3 call $~lib/map/Map#find - local.set $5 - local.get $5 + local.tee $3 if - local.get $5 + local.get $3 local.get $2 i32.store offset=4 else @@ -2025,28 +1552,23 @@ local.get $0 i32.load offset=8 call $~lib/rt/purerc/__retain - local.set $3 - local.get $3 - block (result i32) - local.get $0 - local.get $0 - i32.load offset=16 - local.tee $6 - i32.const 1 - i32.add - i32.store offset=16 - local.get $6 - end - block $~lib/map/ENTRY_SIZE|inlined.5 (result i32) - i32.const 12 - end - i32.mul + local.set $4 + local.get $0 + local.get $0 + i32.load offset=16 + local.tee $3 + i32.const 1 i32.add - local.set $5 - local.get $5 + i32.store offset=16 + local.get $3 + i32.const 12 + i32.mul + local.get $4 + i32.add + local.tee $3 local.get $1 i32.store8 - local.get $5 + local.get $3 local.get $2 i32.store offset=4 local.get $0 @@ -2055,85 +1577,68 @@ i32.const 1 i32.add i32.store offset=20 + local.get $3 local.get $0 i32.load - local.get $4 local.get $0 i32.load offset=4 - i32.and - i32.const 4 - i32.mul - i32.add - local.set $6 local.get $5 - local.get $6 + i32.and + i32.const 2 + i32.shl + i32.add + local.tee $0 i32.load i32.store offset=8 - local.get $6 - local.get $5 - i32.store + local.get $0 local.get $3 + i32.store + local.get $4 call $~lib/rt/purerc/__release end ) - (func $~lib/map/Map#get (; 23 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) + (func $~lib/map/Map#get (; 22 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $0 local.get $1 - block $~lib/util/hash/HASH|inlined.3 (result i32) - local.get $1 - local.set $2 - local.get $2 - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s - call $~lib/util/hash/hash8 - br $~lib/util/hash/HASH|inlined.3 - end + local.get $1 + i32.const 24 + i32.shl + i32.const 24 + i32.shr_s + i32.const -2128831035 + i32.xor + i32.const 16777619 + i32.mul call $~lib/map/Map#find - local.set $3 - local.get $3 + local.tee $0 if (result i32) - local.get $3 + local.get $0 i32.load offset=4 else unreachable end ) - (func $~lib/map/Map#get:size (; 24 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - local.get $0 - i32.load offset=20 - ) - (func $~lib/map/Map#delete (; 25 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/map/Map#delete (; 23 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) local.get $0 local.get $1 - block $~lib/util/hash/HASH|inlined.4 (result i32) - local.get $1 - local.set $2 - local.get $2 - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s - call $~lib/util/hash/hash8 - br $~lib/util/hash/HASH|inlined.4 - end + local.get $1 + i32.const 24 + i32.shl + i32.const 24 + i32.shr_s + i32.const -2128831035 + i32.xor + i32.const 16777619 + i32.mul call $~lib/map/Map#find - local.set $3 - local.get $3 + local.tee $1 i32.eqz if - i32.const 0 return end - local.get $3 - local.get $3 + local.get $1 + local.get $1 i32.load offset=8 i32.const 1 i32.or @@ -2148,17 +1653,15 @@ i32.load offset=4 i32.const 1 i32.shr_u - local.set $4 - local.get $4 + local.tee $2 i32.const 1 i32.add i32.const 4 - local.tee $2 local.get $0 i32.load offset=20 - local.tee $5 - local.get $2 - local.get $5 + local.tee $1 + i32.const 4 + local.get $1 i32.gt_u select i32.ge_u @@ -2177,30 +1680,44 @@ end if local.get $0 - local.get $4 + local.get $2 call $~lib/map/Map#rehash end - i32.const 1 ) - (func $std/map/testNumeric (; 26 ;) (type $FUNCSIG$v) + (func $std/map/testNumeric (; 24 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) - i32.const 0 call $~lib/map/Map#constructor - local.set $0 - block $break|0 - i32.const 0 - local.set $1 - loop $repeat|0 + local.set $1 + loop $repeat|0 + local.get $0 + i32.const 100 + i32.lt_s + if + local.get $1 + local.get $0 + call $~lib/map/Map#has + if + i32.const 0 + i32.const 232 + i32.const 6 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.get $0 + local.get $0 + i32.const 24 + i32.shl + i32.const 24 + i32.shr_s + i32.const 10 + i32.add + call $~lib/map/Map#set local.get $1 - i32.const 100 - i32.lt_s - i32.eqz - br_if $break|0 local.get $0 - local.get $1 call $~lib/map/Map#has - i32.eqz i32.eqz if i32.const 0 @@ -2210,102 +1727,97 @@ call $~lib/builtins/abort unreachable end + local.get $1 local.get $0 - local.get $1 - i32.const 10 - local.get $1 - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s - i32.add - call $~lib/map/Map#set - local.get $0 - local.get $1 - call $~lib/map/Map#has - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 10 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 call $~lib/map/Map#get - i32.const 10 - local.get $1 + local.get $0 i32.const 24 i32.shl i32.const 24 i32.shr_s + i32.const 10 i32.add - i32.eq - i32.eqz + i32.ne if i32.const 0 i32.const 232 - i32.const 11 + i32.const 9 i32.const 4 call $~lib/builtins/abort unreachable + else + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $repeat|0 end - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $repeat|0 unreachable end - unreachable end - local.get $0 - call $~lib/map/Map#get:size + local.get $1 + i32.load offset=20 i32.const 100 - i32.eq - i32.eqz + i32.ne if i32.const 0 i32.const 232 - i32.const 13 + i32.const 11 i32.const 2 call $~lib/builtins/abort unreachable end - block $break|1 - i32.const 0 - local.set $1 - loop $repeat|1 + i32.const 0 + local.set $0 + loop $repeat|1 + local.get $0 + i32.const 100 + i32.lt_s + if local.get $1 - i32.const 100 - i32.lt_s - i32.eqz - br_if $break|1 local.get $0 - local.get $1 call $~lib/map/Map#has i32.eqz if i32.const 0 i32.const 232 - i32.const 17 + i32.const 15 i32.const 4 call $~lib/builtins/abort unreachable end + local.get $1 local.get $0 - local.get $1 call $~lib/map/Map#get - i32.const 10 - local.get $1 + local.get $0 i32.const 24 i32.shl i32.const 24 i32.shr_s + i32.const 10 i32.add - i32.eq + i32.ne + if + i32.const 0 + i32.const 232 + i32.const 16 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.get $0 + local.get $0 + i32.const 24 + i32.shl + i32.const 24 + i32.shr_s + i32.const 20 + i32.add + call $~lib/map/Map#set + local.get $1 + local.get $0 + call $~lib/map/Map#has i32.eqz if i32.const 0 @@ -2315,103 +1827,90 @@ call $~lib/builtins/abort unreachable end + local.get $1 local.get $0 - local.get $1 - i32.const 20 - local.get $1 - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s - i32.add - call $~lib/map/Map#set - local.get $0 - local.get $1 - call $~lib/map/Map#has - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 20 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 call $~lib/map/Map#get - i32.const 20 - local.get $1 + local.get $0 i32.const 24 i32.shl i32.const 24 i32.shr_s + i32.const 20 i32.add - i32.eq - i32.eqz + i32.ne if i32.const 0 i32.const 232 - i32.const 21 + i32.const 19 i32.const 4 call $~lib/builtins/abort unreachable + else + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $repeat|1 end - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $repeat|1 unreachable end - unreachable end - local.get $0 - call $~lib/map/Map#get:size + local.get $1 + i32.load offset=20 i32.const 100 - i32.eq - i32.eqz + i32.ne if i32.const 0 i32.const 232 - i32.const 23 + i32.const 21 i32.const 2 call $~lib/builtins/abort unreachable end - block $break|2 - i32.const 0 - local.set $1 - loop $repeat|2 + i32.const 0 + local.set $0 + loop $repeat|2 + local.get $0 + i32.const 50 + i32.lt_s + if local.get $1 - i32.const 50 - i32.lt_s - i32.eqz - br_if $break|2 local.get $0 - local.get $1 call $~lib/map/Map#has i32.eqz if i32.const 0 i32.const 232 - i32.const 27 + i32.const 25 i32.const 4 call $~lib/builtins/abort unreachable end + local.get $1 local.get $0 - local.get $1 call $~lib/map/Map#get - i32.const 20 - local.get $1 + local.get $0 i32.const 24 i32.shl i32.const 24 i32.shr_s + i32.const 20 i32.add - i32.eq - i32.eqz + i32.ne + if + i32.const 0 + i32.const 232 + i32.const 26 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.get $0 + call $~lib/map/Map#delete + local.get $1 + local.get $0 + call $~lib/map/Map#has if i32.const 0 i32.const 232 @@ -2419,60 +1918,60 @@ i32.const 4 call $~lib/builtins/abort unreachable + else + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $repeat|2 end - local.get $0 + unreachable + end + end + local.get $1 + i32.load offset=20 + i32.const 50 + i32.ne + if + i32.const 0 + i32.const 232 + i32.const 30 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + local.set $0 + loop $repeat|3 + local.get $0 + i32.const 50 + i32.lt_s + if local.get $1 - call $~lib/map/Map#delete - drop local.get $0 - local.get $1 call $~lib/map/Map#has - i32.eqz - i32.eqz if i32.const 0 i32.const 232 - i32.const 30 + i32.const 34 i32.const 4 call $~lib/builtins/abort unreachable end local.get $1 - i32.const 1 - i32.add - local.set $1 - br $repeat|2 - unreachable - end - unreachable - end - local.get $0 - call $~lib/map/Map#get:size - i32.const 50 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 32 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - block $break|3 - i32.const 0 - local.set $1 - loop $repeat|3 - local.get $1 - i32.const 50 - i32.lt_s - i32.eqz - br_if $break|3 local.get $0 + local.get $0 + i32.const 24 + i32.shl + i32.const 24 + i32.shr_s + i32.const 10 + i32.add + call $~lib/map/Map#set local.get $1 + local.get $0 call $~lib/map/Map#has i32.eqz - i32.eqz if i32.const 0 i32.const 232 @@ -2481,20 +1980,12 @@ call $~lib/builtins/abort unreachable end + local.get $1 local.get $0 + call $~lib/map/Map#delete local.get $1 - i32.const 10 - local.get $1 - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s - i32.add - call $~lib/map/Map#set local.get $0 - local.get $1 call $~lib/map/Map#has - i32.eqz if i32.const 0 i32.const 232 @@ -2502,95 +1993,60 @@ i32.const 4 call $~lib/builtins/abort unreachable + else + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $repeat|3 end - local.get $0 - local.get $1 - call $~lib/map/Map#delete - drop - local.get $0 - local.get $1 - call $~lib/map/Map#has - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 40 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $repeat|3 unreachable end - unreachable end - local.get $0 - call $~lib/map/Map#get:size + local.get $1 + i32.load offset=20 i32.const 50 - i32.eq - i32.eqz + i32.ne if i32.const 0 i32.const 232 - i32.const 42 + i32.const 40 i32.const 2 call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 call $~lib/map/Map#clear - local.get $0 - call $~lib/map/Map#get:size - i32.const 0 - i32.eq - i32.eqz + local.get $1 + i32.load offset=20 if i32.const 0 i32.const 232 - i32.const 46 + i32.const 44 i32.const 2 call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 call $~lib/rt/purerc/__release ) - (func $~lib/map/Map#clear (; 27 ;) (type $FUNCSIG$vi) (param $0 i32) - (local $1 i32) - local.get $0 - local.tee $1 - block (result i32) - local.get $1 - i32.load - call $~lib/rt/purerc/__release - i32.const 0 - i32.const 16 - call $~lib/arraybuffer/ArrayBuffer#constructor - end + (func $~lib/map/Map#constructor (; 25 ;) (type $FUNCSIG$i) (result i32) + (local $0 i32) + i32.const 24 + i32.const 18 + call $~lib/rt/tlsf/__alloc + call $~lib/rt/purerc/__retain + local.tee $0 + i32.const 0 i32.store local.get $0 - i32.const 4 - i32.const 1 - i32.sub + i32.const 0 i32.store offset=4 local.get $0 - local.tee $1 - block (result i32) - local.get $1 - i32.load offset=8 - call $~lib/rt/purerc/__release - i32.const 0 - i32.const 48 - call $~lib/arraybuffer/ArrayBuffer#constructor - end + i32.const 0 i32.store offset=8 local.get $0 - i32.const 4 + i32.const 0 i32.store offset=12 local.get $0 i32.const 0 @@ -2598,108 +2054,25 @@ local.get $0 i32.const 0 i32.store offset=20 - ) - (func $~lib/map/Map#constructor (; 28 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - block (result i32) - local.get $0 - i32.eqz - if - i32.const 24 - i32.const 18 - call $~lib/rt/tlsf/__alloc - call $~lib/rt/purerc/__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 - i32.const 0 - i32.store offset=16 - local.get $0 - i32.const 0 - i32.store offset=20 - local.get $0 - end - call $~lib/map/Map#clear + local.get $0 + call $~lib/map/Map#clear local.get $0 ) - (func $~lib/map/Map#find (; 29 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - local.get $0 - i32.load - local.get $2 - local.get $0 - i32.load offset=4 - i32.and - i32.const 4 - i32.mul - i32.add - i32.load - local.set $3 - block $break|0 - loop $continue|0 - local.get $3 - if - local.get $3 - i32.load offset=8 - i32.const 1 - i32.and - i32.eqz - if (result i32) - local.get $3 - i32.load8_u - local.get $1 - i32.const 255 - i32.and - i32.eq - else - i32.const 0 - end - if - local.get $3 - return - end - local.get $3 - i32.load offset=8 - i32.const 1 - i32.const -1 - i32.xor - i32.and - local.set $3 - br $continue|0 - end - end - end - i32.const 0 - ) - (func $~lib/map/Map#has (; 30 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) + (func $~lib/map/Map#has (; 26 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $0 local.get $1 - block $~lib/util/hash/HASH|inlined.0 (result i32) - local.get $1 - local.set $2 - local.get $2 - i32.const 255 - i32.and - call $~lib/util/hash/hash8 - br $~lib/util/hash/HASH|inlined.0 - end - call $~lib/map/Map#find + local.get $1 + i32.const 255 + i32.and + i32.const -2128831035 + i32.xor + i32.const 16777619 + i32.mul + call $~lib/map/Map#find i32.const 0 i32.ne ) - (func $~lib/map/Map#rehash (; 31 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/map/Map#rehash (; 27 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -2707,117 +2080,88 @@ (local $6 i32) (local $7 i32) (local $8 i32) - (local $9 i32) - (local $10 i32) - (local $11 i32) - (local $12 i32) local.get $1 i32.const 1 i32.add - local.set $2 - i32.const 0 - local.get $2 - i32.const 4 - i32.mul + local.tee $2 + i32.const 2 + i32.shl call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $3 + local.set $4 local.get $2 f64.convert_i32_s f64.const 2.6666666666666665 f64.mul i32.trunc_f64_s - local.set $4 - i32.const 0 - local.get $4 - block $~lib/map/ENTRY_SIZE|inlined.1 (result i32) - i32.const 12 - end + local.tee $6 + i32.const 12 i32.mul call $~lib/arraybuffer/ArrayBuffer#constructor local.set $5 local.get $0 i32.load offset=8 - local.set $6 - local.get $6 + local.tee $3 local.get $0 i32.load offset=16 - block $~lib/map/ENTRY_SIZE|inlined.2 (result i32) - i32.const 12 - end + i32.const 12 i32.mul i32.add local.set $7 local.get $5 - local.set $8 - block $break|0 - loop $continue|0 - local.get $6 - local.get $7 - i32.ne + local.set $2 + loop $continue|0 + local.get $3 + local.get $7 + i32.ne + if + local.get $3 + i32.load offset=8 + i32.const 1 + i32.and + i32.eqz if - local.get $6 - local.set $9 - local.get $9 - i32.load offset=8 - i32.const 1 + local.get $2 + local.get $3 + i32.load8_u + i32.store8 + local.get $2 + local.get $3 + i32.load offset=4 + i32.store offset=4 + local.get $2 + local.get $3 + i32.load8_u + i32.const -2128831035 + i32.xor + i32.const 16777619 + i32.mul + local.get $1 i32.and - i32.eqz - if - local.get $8 - local.set $10 - local.get $10 - local.get $9 - i32.load8_u - i32.store8 - local.get $10 - local.get $9 - i32.load offset=4 - i32.store offset=4 - block $~lib/util/hash/HASH|inlined.2 (result i32) - local.get $9 - i32.load8_u - local.set $11 - local.get $11 - call $~lib/util/hash/hash8 - br $~lib/util/hash/HASH|inlined.2 - end - local.get $1 - i32.and - local.set $11 - local.get $3 - local.get $11 - i32.const 4 - i32.mul - i32.add - local.set $12 - local.get $10 - local.get $12 - i32.load - i32.store offset=8 - local.get $12 - local.get $8 - i32.store - local.get $8 - block $~lib/map/ENTRY_SIZE|inlined.3 (result i32) - i32.const 12 - end - i32.add - local.set $8 - end - local.get $6 - block $~lib/map/ENTRY_SIZE|inlined.4 (result i32) - i32.const 12 - end + i32.const 2 + i32.shl + local.get $4 i32.add - local.set $6 - br $continue|0 + local.tee $8 + i32.load + i32.store offset=8 + local.get $8 + local.get $2 + i32.store + local.get $2 + i32.const 12 + i32.add + local.set $2 end + local.get $3 + i32.const 12 + i32.add + local.set $3 + br $continue|0 end end local.get $0 - local.tee $9 - local.get $3 - local.get $9 + local.get $4 + local.get $0 i32.load call $~lib/rt/purerc/__retainRelease i32.store @@ -2825,47 +2169,43 @@ local.get $1 i32.store offset=4 local.get $0 - local.tee $9 local.get $5 - local.get $9 + local.get $0 i32.load offset=8 call $~lib/rt/purerc/__retainRelease i32.store offset=8 local.get $0 - local.get $4 + local.get $6 i32.store offset=12 local.get $0 local.get $0 i32.load offset=20 i32.store offset=16 - local.get $3 + local.get $4 call $~lib/rt/purerc/__release local.get $5 call $~lib/rt/purerc/__release ) - (func $~lib/map/Map#set (; 32 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/map/Map#set (; 28 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) - (local $6 i32) - block $~lib/util/hash/HASH|inlined.1 (result i32) - local.get $1 - local.set $3 - local.get $3 - i32.const 255 - i32.and - call $~lib/util/hash/hash8 - br $~lib/util/hash/HASH|inlined.1 - end - local.set $4 + local.get $1 + i32.const 255 + i32.and + i32.const -2128831035 + i32.xor + i32.const 16777619 + i32.mul + local.tee $3 + local.set $5 local.get $0 local.get $1 - local.get $4 - call $~lib/map/Map#find - local.set $5 - local.get $5 + local.get $3 + call $~lib/map/Map#find + local.tee $3 if - local.get $5 + local.get $3 local.get $2 i32.store offset=4 else @@ -2901,28 +2241,23 @@ local.get $0 i32.load offset=8 call $~lib/rt/purerc/__retain - local.set $3 - local.get $3 - block (result i32) - local.get $0 - local.get $0 - i32.load offset=16 - local.tee $6 - i32.const 1 - i32.add - i32.store offset=16 - local.get $6 - end - block $~lib/map/ENTRY_SIZE|inlined.5 (result i32) - i32.const 12 - end - i32.mul + local.set $4 + local.get $0 + local.get $0 + i32.load offset=16 + local.tee $3 + i32.const 1 i32.add - local.set $5 - local.get $5 + i32.store offset=16 + local.get $3 + i32.const 12 + i32.mul + local.get $4 + i32.add + local.tee $3 local.get $1 i32.store8 - local.get $5 + local.get $3 local.get $2 i32.store offset=4 local.get $0 @@ -2931,81 +2266,64 @@ i32.const 1 i32.add i32.store offset=20 + local.get $3 local.get $0 i32.load - local.get $4 local.get $0 i32.load offset=4 - i32.and - i32.const 4 - i32.mul - i32.add - local.set $6 local.get $5 - local.get $6 + i32.and + i32.const 2 + i32.shl + i32.add + local.tee $0 i32.load i32.store offset=8 - local.get $6 - local.get $5 - i32.store + local.get $0 local.get $3 + i32.store + local.get $4 call $~lib/rt/purerc/__release end ) - (func $~lib/map/Map#get (; 33 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) + (func $~lib/map/Map#get (; 29 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $0 local.get $1 - block $~lib/util/hash/HASH|inlined.3 (result i32) - local.get $1 - local.set $2 - local.get $2 - i32.const 255 - i32.and - call $~lib/util/hash/hash8 - br $~lib/util/hash/HASH|inlined.3 - end - call $~lib/map/Map#find - local.set $3 - local.get $3 + local.get $1 + i32.const 255 + i32.and + i32.const -2128831035 + i32.xor + i32.const 16777619 + i32.mul + call $~lib/map/Map#find + local.tee $0 if (result i32) - local.get $3 + local.get $0 i32.load offset=4 else unreachable end ) - (func $~lib/map/Map#get:size (; 34 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - local.get $0 - i32.load offset=20 - ) - (func $~lib/map/Map#delete (; 35 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/map/Map#delete (; 30 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) local.get $0 local.get $1 - block $~lib/util/hash/HASH|inlined.4 (result i32) - local.get $1 - local.set $2 - local.get $2 - i32.const 255 - i32.and - call $~lib/util/hash/hash8 - br $~lib/util/hash/HASH|inlined.4 - end - call $~lib/map/Map#find - local.set $3 - local.get $3 + local.get $1 + i32.const 255 + i32.and + i32.const -2128831035 + i32.xor + i32.const 16777619 + i32.mul + call $~lib/map/Map#find + local.tee $1 i32.eqz if - i32.const 0 return end - local.get $3 - local.get $3 + local.get $1 + local.get $1 i32.load offset=8 i32.const 1 i32.or @@ -3020,17 +2338,15 @@ i32.load offset=4 i32.const 1 i32.shr_u - local.set $4 - local.get $4 + local.tee $2 i32.const 1 i32.add i32.const 4 - local.tee $2 local.get $0 i32.load offset=20 - local.tee $5 - local.get $2 - local.get $5 + local.tee $1 + i32.const 4 + local.get $1 i32.gt_u select i32.ge_u @@ -3049,30 +2365,42 @@ end if local.get $0 - local.get $4 + local.get $2 call $~lib/map/Map#rehash end - i32.const 1 ) - (func $std/map/testNumeric (; 36 ;) (type $FUNCSIG$v) + (func $std/map/testNumeric (; 31 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) - i32.const 0 call $~lib/map/Map#constructor - local.set $0 - block $break|0 - i32.const 0 - local.set $1 - loop $repeat|0 + local.set $1 + loop $repeat|0 + local.get $0 + i32.const 100 + i32.lt_u + if + local.get $1 + local.get $0 + call $~lib/map/Map#has + if + i32.const 0 + i32.const 232 + i32.const 6 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.get $0 + local.get $0 + i32.const 255 + i32.and + i32.const 10 + i32.add + call $~lib/map/Map#set local.get $1 - i32.const 100 - i32.lt_u - i32.eqz - br_if $break|0 local.get $0 - local.get $1 call $~lib/map/Map#has - i32.eqz i32.eqz if i32.const 0 @@ -3082,96 +2410,91 @@ call $~lib/builtins/abort unreachable end + local.get $1 local.get $0 - local.get $1 - i32.const 10 - local.get $1 - i32.const 255 - i32.and - i32.add - call $~lib/map/Map#set - local.get $0 - local.get $1 - call $~lib/map/Map#has - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 10 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 call $~lib/map/Map#get - i32.const 10 - local.get $1 + local.get $0 i32.const 255 i32.and + i32.const 10 i32.add - i32.eq - i32.eqz + i32.ne if i32.const 0 i32.const 232 - i32.const 11 + i32.const 9 i32.const 4 call $~lib/builtins/abort unreachable + else + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $repeat|0 end - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $repeat|0 unreachable end - unreachable end - local.get $0 - call $~lib/map/Map#get:size + local.get $1 + i32.load offset=20 i32.const 100 - i32.eq - i32.eqz + i32.ne if i32.const 0 i32.const 232 - i32.const 13 + i32.const 11 i32.const 2 call $~lib/builtins/abort unreachable end - block $break|1 - i32.const 0 - local.set $1 - loop $repeat|1 + i32.const 0 + local.set $0 + loop $repeat|1 + local.get $0 + i32.const 100 + i32.lt_u + if local.get $1 - i32.const 100 - i32.lt_u - i32.eqz - br_if $break|1 local.get $0 - local.get $1 call $~lib/map/Map#has i32.eqz if i32.const 0 i32.const 232 - i32.const 17 + i32.const 15 i32.const 4 call $~lib/builtins/abort unreachable end + local.get $1 local.get $0 - local.get $1 call $~lib/map/Map#get - i32.const 10 - local.get $1 + local.get $0 i32.const 255 i32.and + i32.const 10 i32.add - i32.eq + i32.ne + if + i32.const 0 + i32.const 232 + i32.const 16 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.get $0 + local.get $0 + i32.const 255 + i32.and + i32.const 20 + i32.add + call $~lib/map/Map#set + local.get $1 + local.get $0 + call $~lib/map/Map#has i32.eqz if i32.const 0 @@ -3181,97 +2504,86 @@ call $~lib/builtins/abort unreachable end + local.get $1 local.get $0 - local.get $1 - i32.const 20 - local.get $1 - i32.const 255 - i32.and - i32.add - call $~lib/map/Map#set - local.get $0 - local.get $1 - call $~lib/map/Map#has - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 20 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 call $~lib/map/Map#get - i32.const 20 - local.get $1 + local.get $0 i32.const 255 i32.and + i32.const 20 i32.add - i32.eq - i32.eqz + i32.ne if i32.const 0 i32.const 232 - i32.const 21 + i32.const 19 i32.const 4 call $~lib/builtins/abort unreachable + else + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $repeat|1 end - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $repeat|1 unreachable end - unreachable end - local.get $0 - call $~lib/map/Map#get:size + local.get $1 + i32.load offset=20 i32.const 100 - i32.eq - i32.eqz + i32.ne if i32.const 0 i32.const 232 - i32.const 23 + i32.const 21 i32.const 2 call $~lib/builtins/abort unreachable end - block $break|2 - i32.const 0 - local.set $1 - loop $repeat|2 + i32.const 0 + local.set $0 + loop $repeat|2 + local.get $0 + i32.const 50 + i32.lt_u + if local.get $1 - i32.const 50 - i32.lt_u - i32.eqz - br_if $break|2 local.get $0 - local.get $1 call $~lib/map/Map#has i32.eqz if i32.const 0 i32.const 232 - i32.const 27 + i32.const 25 i32.const 4 call $~lib/builtins/abort unreachable end + local.get $1 local.get $0 - local.get $1 call $~lib/map/Map#get - i32.const 20 - local.get $1 + local.get $0 i32.const 255 i32.and + i32.const 20 i32.add - i32.eq - i32.eqz + i32.ne + if + i32.const 0 + i32.const 232 + i32.const 26 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.get $0 + call $~lib/map/Map#delete + local.get $1 + local.get $0 + call $~lib/map/Map#has if i32.const 0 i32.const 232 @@ -3279,60 +2591,58 @@ i32.const 4 call $~lib/builtins/abort unreachable + else + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $repeat|2 end - local.get $0 + unreachable + end + end + local.get $1 + i32.load offset=20 + i32.const 50 + i32.ne + if + i32.const 0 + i32.const 232 + i32.const 30 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + local.set $0 + loop $repeat|3 + local.get $0 + i32.const 50 + i32.lt_u + if local.get $1 - call $~lib/map/Map#delete - drop local.get $0 - local.get $1 call $~lib/map/Map#has - i32.eqz - i32.eqz if i32.const 0 i32.const 232 - i32.const 30 + i32.const 34 i32.const 4 call $~lib/builtins/abort unreachable end local.get $1 - i32.const 1 - i32.add - local.set $1 - br $repeat|2 - unreachable - end - unreachable - end - local.get $0 - call $~lib/map/Map#get:size - i32.const 50 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 32 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - block $break|3 - i32.const 0 - local.set $1 - loop $repeat|3 - local.get $1 - i32.const 50 - i32.lt_u - i32.eqz - br_if $break|3 local.get $0 + local.get $0 + i32.const 255 + i32.and + i32.const 10 + i32.add + call $~lib/map/Map#set local.get $1 + local.get $0 call $~lib/map/Map#has i32.eqz - i32.eqz if i32.const 0 i32.const 232 @@ -3341,18 +2651,12 @@ call $~lib/builtins/abort unreachable end + local.get $1 local.get $0 + call $~lib/map/Map#delete local.get $1 - i32.const 10 - local.get $1 - i32.const 255 - i32.and - i32.add - call $~lib/map/Map#set local.get $0 - local.get $1 call $~lib/map/Map#has - i32.eqz if i32.const 0 i32.const 232 @@ -3360,95 +2664,60 @@ i32.const 4 call $~lib/builtins/abort unreachable + else + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $repeat|3 end - local.get $0 - local.get $1 - call $~lib/map/Map#delete - drop - local.get $0 - local.get $1 - call $~lib/map/Map#has - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 40 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $repeat|3 unreachable end - unreachable end - local.get $0 - call $~lib/map/Map#get:size + local.get $1 + i32.load offset=20 i32.const 50 - i32.eq - i32.eqz + i32.ne if i32.const 0 i32.const 232 - i32.const 42 + i32.const 40 i32.const 2 call $~lib/builtins/abort unreachable end - local.get $0 - call $~lib/map/Map#clear - local.get $0 - call $~lib/map/Map#get:size - i32.const 0 - i32.eq - i32.eqz + local.get $1 + call $~lib/map/Map#clear + local.get $1 + i32.load offset=20 if i32.const 0 i32.const 232 - i32.const 46 + i32.const 44 i32.const 2 call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 call $~lib/rt/purerc/__release ) - (func $~lib/map/Map#clear (; 37 ;) (type $FUNCSIG$vi) (param $0 i32) - (local $1 i32) - local.get $0 - local.tee $1 - block (result i32) - local.get $1 - i32.load - call $~lib/rt/purerc/__release - i32.const 0 - i32.const 16 - call $~lib/arraybuffer/ArrayBuffer#constructor - end + (func $~lib/map/Map#constructor (; 32 ;) (type $FUNCSIG$i) (result i32) + (local $0 i32) + i32.const 24 + i32.const 19 + call $~lib/rt/tlsf/__alloc + call $~lib/rt/purerc/__retain + local.tee $0 + i32.const 0 i32.store local.get $0 - i32.const 4 - i32.const 1 - i32.sub + i32.const 0 i32.store offset=4 local.get $0 - local.tee $1 - block (result i32) - local.get $1 - i32.load offset=8 - call $~lib/rt/purerc/__release - i32.const 0 - i32.const 48 - call $~lib/arraybuffer/ArrayBuffer#constructor - end + i32.const 0 i32.store offset=8 local.get $0 - i32.const 4 + i32.const 0 i32.store offset=12 local.get $0 i32.const 0 @@ -3456,134 +2725,79 @@ local.get $0 i32.const 0 i32.store offset=20 + local.get $0 + call $~lib/map/Map#clear + local.get $0 ) - (func $~lib/map/Map#constructor (; 38 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - block (result i32) + (func $~lib/map/Map#find (; 33 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + local.get $0 + i32.load + local.get $0 + i32.load offset=4 + local.get $2 + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $0 + loop $continue|0 local.get $0 - i32.eqz if - i32.const 24 - i32.const 19 - call $~lib/rt/tlsf/__alloc - call $~lib/rt/purerc/__retain + local.get $0 + i32.load offset=8 + i32.const 1 + i32.and + if (result i32) + i32.const 0 + else + local.get $0 + i32.load16_u + local.get $1 + i32.const 65535 + i32.and + i32.eq + end + if + local.get $0 + return + end + local.get $0 + i32.load offset=8 + i32.const -2 + i32.and local.set $0 + br $continue|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 - i32.const 0 - i32.store offset=16 - local.get $0 - i32.const 0 - i32.store offset=20 - local.get $0 end - call $~lib/map/Map#clear - local.get $0 + i32.const 0 ) - (func $~lib/util/hash/hash16 (; 39 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - (local $1 i32) - i32.const -2128831035 - local.set $1 - local.get $1 + (func $~lib/map/Map#has (; 34 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $0 + local.get $1 + local.get $1 + i32.const 16 + i32.shl + i32.const 16 + i32.shr_s + local.tee $0 i32.const 255 i32.and + i32.const -2128831035 i32.xor i32.const 16777619 i32.mul - local.set $1 - local.get $1 local.get $0 i32.const 8 i32.shr_u i32.xor i32.const 16777619 i32.mul - local.set $1 - local.get $1 - ) - (func $~lib/map/Map#find (; 40 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - local.get $0 - i32.load - local.get $2 - local.get $0 - i32.load offset=4 - i32.and - i32.const 4 - i32.mul - i32.add - i32.load - local.set $3 - block $break|0 - loop $continue|0 - local.get $3 - if - local.get $3 - i32.load offset=8 - i32.const 1 - i32.and - i32.eqz - if (result i32) - local.get $3 - i32.load16_s - local.get $1 - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s - i32.eq - else - i32.const 0 - end - if - local.get $3 - return - end - local.get $3 - i32.load offset=8 - i32.const 1 - i32.const -1 - i32.xor - i32.and - local.set $3 - br $continue|0 - end - end - end - i32.const 0 - ) - (func $~lib/map/Map#has (; 41 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - local.get $0 - local.get $1 - block $~lib/util/hash/HASH|inlined.0 (result i32) - local.get $1 - local.set $2 - local.get $2 - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s - call $~lib/util/hash/hash16 - br $~lib/util/hash/HASH|inlined.0 - end call $~lib/map/Map#find i32.const 0 i32.ne ) - (func $~lib/map/Map#rehash (; 42 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/map/Map#rehash (; 35 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -3591,117 +2805,97 @@ (local $6 i32) (local $7 i32) (local $8 i32) - (local $9 i32) - (local $10 i32) - (local $11 i32) - (local $12 i32) local.get $1 i32.const 1 i32.add - local.set $2 - i32.const 0 - local.get $2 - i32.const 4 - i32.mul + local.tee $2 + i32.const 2 + i32.shl call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $3 + local.set $4 local.get $2 f64.convert_i32_s f64.const 2.6666666666666665 f64.mul i32.trunc_f64_s - local.set $4 - i32.const 0 - local.get $4 - block $~lib/map/ENTRY_SIZE|inlined.1 (result i32) - i32.const 12 - end + local.tee $7 + i32.const 12 i32.mul call $~lib/arraybuffer/ArrayBuffer#constructor local.set $5 local.get $0 i32.load offset=8 - local.set $6 - local.get $6 + local.tee $3 local.get $0 i32.load offset=16 - block $~lib/map/ENTRY_SIZE|inlined.2 (result i32) - i32.const 12 - end + i32.const 12 i32.mul i32.add - local.set $7 - local.get $5 local.set $8 - block $break|0 - loop $continue|0 - local.get $6 - local.get $7 - i32.ne + local.get $5 + local.set $2 + loop $continue|0 + local.get $3 + local.get $8 + i32.ne + if + local.get $3 + i32.load offset=8 + i32.const 1 + i32.and + i32.eqz if - local.get $6 - local.set $9 - local.get $9 - i32.load offset=8 - i32.const 1 + local.get $2 + local.get $3 + i32.load16_s + i32.store16 + local.get $2 + local.get $3 + i32.load offset=4 + i32.store offset=4 + local.get $2 + local.get $3 + i32.load16_s + local.tee $6 + i32.const 255 i32.and - i32.eqz - if - local.get $8 - local.set $10 - local.get $10 - local.get $9 - i32.load16_s - i32.store16 - local.get $10 - local.get $9 - i32.load offset=4 - i32.store offset=4 - block $~lib/util/hash/HASH|inlined.2 (result i32) - local.get $9 - i32.load16_s - local.set $11 - local.get $11 - call $~lib/util/hash/hash16 - br $~lib/util/hash/HASH|inlined.2 - end - local.get $1 - i32.and - local.set $11 - local.get $3 - local.get $11 - i32.const 4 - i32.mul - i32.add - local.set $12 - local.get $10 - local.get $12 - i32.load - i32.store offset=8 - local.get $12 - local.get $8 - i32.store - local.get $8 - block $~lib/map/ENTRY_SIZE|inlined.3 (result i32) - i32.const 12 - end - i32.add - local.set $8 - end + i32.const -2128831035 + i32.xor + i32.const 16777619 + i32.mul local.get $6 - block $~lib/map/ENTRY_SIZE|inlined.4 (result i32) - i32.const 12 - end + i32.const 8 + i32.shr_u + i32.xor + i32.const 16777619 + i32.mul + local.get $1 + i32.and + i32.const 2 + i32.shl + local.get $4 i32.add - local.set $6 - br $continue|0 + local.tee $6 + i32.load + i32.store offset=8 + local.get $6 + local.get $2 + i32.store + local.get $2 + i32.const 12 + i32.add + local.set $2 end + local.get $3 + i32.const 12 + i32.add + local.set $3 + br $continue|0 end end local.get $0 - local.tee $9 - local.get $3 - local.get $9 + local.get $4 + local.get $0 i32.load call $~lib/rt/purerc/__retainRelease i32.store @@ -3709,49 +2903,54 @@ local.get $1 i32.store offset=4 local.get $0 - local.tee $9 local.get $5 - local.get $9 + local.get $0 i32.load offset=8 call $~lib/rt/purerc/__retainRelease i32.store offset=8 local.get $0 - local.get $4 + local.get $7 i32.store offset=12 local.get $0 local.get $0 i32.load offset=20 i32.store offset=16 - local.get $3 + local.get $4 call $~lib/rt/purerc/__release local.get $5 call $~lib/rt/purerc/__release ) - (func $~lib/map/Map#set (; 43 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/map/Map#set (; 36 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) - (local $6 i32) - block $~lib/util/hash/HASH|inlined.1 (result i32) - local.get $1 - local.set $3 - local.get $3 - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s - call $~lib/util/hash/hash16 - br $~lib/util/hash/HASH|inlined.1 - end - local.set $4 + local.get $1 + i32.const 16 + i32.shl + i32.const 16 + i32.shr_s + local.tee $3 + i32.const 255 + i32.and + i32.const -2128831035 + i32.xor + i32.const 16777619 + i32.mul + local.get $3 + i32.const 8 + i32.shr_u + i32.xor + i32.const 16777619 + i32.mul + local.tee $3 + local.set $5 local.get $0 local.get $1 - local.get $4 + local.get $3 call $~lib/map/Map#find - local.set $5 - local.get $5 + local.tee $3 if - local.get $5 + local.get $3 local.get $2 i32.store offset=4 else @@ -3787,28 +2986,23 @@ local.get $0 i32.load offset=8 call $~lib/rt/purerc/__retain - local.set $3 - local.get $3 - block (result i32) - local.get $0 - local.get $0 - i32.load offset=16 - local.tee $6 - i32.const 1 - i32.add - i32.store offset=16 - local.get $6 - end - block $~lib/map/ENTRY_SIZE|inlined.5 (result i32) - i32.const 12 - end - i32.mul + local.set $4 + local.get $0 + local.get $0 + i32.load offset=16 + local.tee $3 + i32.const 1 i32.add - local.set $5 - local.get $5 + i32.store offset=16 + local.get $3 + i32.const 12 + i32.mul + local.get $4 + i32.add + local.tee $3 local.get $1 i32.store16 - local.get $5 + local.get $3 local.get $2 i32.store offset=4 local.get $0 @@ -3817,85 +3011,86 @@ i32.const 1 i32.add i32.store offset=20 + local.get $3 local.get $0 i32.load - local.get $4 local.get $0 i32.load offset=4 - i32.and - i32.const 4 - i32.mul - i32.add - local.set $6 local.get $5 - local.get $6 + i32.and + i32.const 2 + i32.shl + i32.add + local.tee $0 i32.load i32.store offset=8 - local.get $6 - local.get $5 - i32.store + local.get $0 local.get $3 + i32.store + local.get $4 call $~lib/rt/purerc/__release end ) - (func $~lib/map/Map#get (; 44 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) + (func $~lib/map/Map#get (; 37 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $0 local.get $1 - block $~lib/util/hash/HASH|inlined.3 (result i32) - local.get $1 - local.set $2 - local.get $2 - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s - call $~lib/util/hash/hash16 - br $~lib/util/hash/HASH|inlined.3 - end + local.get $1 + i32.const 16 + i32.shl + i32.const 16 + i32.shr_s + local.tee $0 + i32.const 255 + i32.and + i32.const -2128831035 + i32.xor + i32.const 16777619 + i32.mul + local.get $0 + i32.const 8 + i32.shr_u + i32.xor + i32.const 16777619 + i32.mul call $~lib/map/Map#find - local.set $3 - local.get $3 + local.tee $0 if (result i32) - local.get $3 + local.get $0 i32.load offset=4 else unreachable end ) - (func $~lib/map/Map#get:size (; 45 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - local.get $0 - i32.load offset=20 - ) - (func $~lib/map/Map#delete (; 46 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/map/Map#delete (; 38 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) local.get $0 local.get $1 - block $~lib/util/hash/HASH|inlined.4 (result i32) - local.get $1 - local.set $2 - local.get $2 - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s - call $~lib/util/hash/hash16 - br $~lib/util/hash/HASH|inlined.4 - end + local.get $1 + i32.const 16 + i32.shl + i32.const 16 + i32.shr_s + local.tee $1 + i32.const 255 + i32.and + i32.const -2128831035 + i32.xor + i32.const 16777619 + i32.mul + local.get $1 + i32.const 8 + i32.shr_u + i32.xor + i32.const 16777619 + i32.mul call $~lib/map/Map#find - local.set $3 - local.get $3 + local.tee $1 i32.eqz if - i32.const 0 return end - local.get $3 - local.get $3 + local.get $1 + local.get $1 i32.load offset=8 i32.const 1 i32.or @@ -3910,17 +3105,15 @@ i32.load offset=4 i32.const 1 i32.shr_u - local.set $4 - local.get $4 + local.tee $2 i32.const 1 i32.add i32.const 4 - local.tee $2 local.get $0 i32.load offset=20 - local.tee $5 - local.get $2 - local.get $5 + local.tee $1 + i32.const 4 + local.get $1 i32.gt_u select i32.ge_u @@ -3939,30 +3132,44 @@ end if local.get $0 - local.get $4 + local.get $2 call $~lib/map/Map#rehash end - i32.const 1 ) - (func $std/map/testNumeric (; 47 ;) (type $FUNCSIG$v) + (func $std/map/testNumeric (; 39 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) - i32.const 0 call $~lib/map/Map#constructor - local.set $0 - block $break|0 - i32.const 0 - local.set $1 - loop $repeat|0 + local.set $1 + loop $repeat|0 + local.get $0 + i32.const 100 + i32.lt_s + if + local.get $1 + local.get $0 + call $~lib/map/Map#has + if + i32.const 0 + i32.const 232 + i32.const 6 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.get $0 + local.get $0 + i32.const 16 + i32.shl + i32.const 16 + i32.shr_s + i32.const 10 + i32.add + call $~lib/map/Map#set local.get $1 - i32.const 100 - i32.lt_s - i32.eqz - br_if $break|0 local.get $0 - local.get $1 call $~lib/map/Map#has - i32.eqz i32.eqz if i32.const 0 @@ -3972,102 +3179,97 @@ call $~lib/builtins/abort unreachable end + local.get $1 local.get $0 - local.get $1 - i32.const 10 - local.get $1 - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s - i32.add - call $~lib/map/Map#set - local.get $0 - local.get $1 - call $~lib/map/Map#has - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 10 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 call $~lib/map/Map#get - i32.const 10 - local.get $1 + local.get $0 i32.const 16 i32.shl i32.const 16 i32.shr_s + i32.const 10 i32.add - i32.eq - i32.eqz + i32.ne if i32.const 0 i32.const 232 - i32.const 11 + i32.const 9 i32.const 4 call $~lib/builtins/abort unreachable + else + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $repeat|0 end - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $repeat|0 unreachable end - unreachable end - local.get $0 - call $~lib/map/Map#get:size + local.get $1 + i32.load offset=20 i32.const 100 - i32.eq - i32.eqz + i32.ne if i32.const 0 i32.const 232 - i32.const 13 + i32.const 11 i32.const 2 call $~lib/builtins/abort unreachable end - block $break|1 - i32.const 0 - local.set $1 - loop $repeat|1 + i32.const 0 + local.set $0 + loop $repeat|1 + local.get $0 + i32.const 100 + i32.lt_s + if local.get $1 - i32.const 100 - i32.lt_s - i32.eqz - br_if $break|1 local.get $0 - local.get $1 call $~lib/map/Map#has i32.eqz if i32.const 0 i32.const 232 - i32.const 17 + i32.const 15 i32.const 4 call $~lib/builtins/abort unreachable end + local.get $1 local.get $0 - local.get $1 call $~lib/map/Map#get - i32.const 10 - local.get $1 + local.get $0 i32.const 16 i32.shl i32.const 16 i32.shr_s + i32.const 10 i32.add - i32.eq + i32.ne + if + i32.const 0 + i32.const 232 + i32.const 16 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.get $0 + local.get $0 + i32.const 16 + i32.shl + i32.const 16 + i32.shr_s + i32.const 20 + i32.add + call $~lib/map/Map#set + local.get $1 + local.get $0 + call $~lib/map/Map#has i32.eqz if i32.const 0 @@ -4077,103 +3279,90 @@ call $~lib/builtins/abort unreachable end + local.get $1 local.get $0 - local.get $1 - i32.const 20 - local.get $1 - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s - i32.add - call $~lib/map/Map#set - local.get $0 - local.get $1 - call $~lib/map/Map#has - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 20 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 call $~lib/map/Map#get - i32.const 20 - local.get $1 + local.get $0 i32.const 16 i32.shl i32.const 16 i32.shr_s + i32.const 20 i32.add - i32.eq - i32.eqz + i32.ne if i32.const 0 i32.const 232 - i32.const 21 + i32.const 19 i32.const 4 call $~lib/builtins/abort unreachable + else + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $repeat|1 end - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $repeat|1 unreachable end - unreachable end - local.get $0 - call $~lib/map/Map#get:size + local.get $1 + i32.load offset=20 i32.const 100 - i32.eq - i32.eqz + i32.ne if i32.const 0 i32.const 232 - i32.const 23 + i32.const 21 i32.const 2 call $~lib/builtins/abort unreachable end - block $break|2 - i32.const 0 - local.set $1 - loop $repeat|2 + i32.const 0 + local.set $0 + loop $repeat|2 + local.get $0 + i32.const 50 + i32.lt_s + if local.get $1 - i32.const 50 - i32.lt_s - i32.eqz - br_if $break|2 local.get $0 - local.get $1 call $~lib/map/Map#has i32.eqz if i32.const 0 i32.const 232 - i32.const 27 + i32.const 25 i32.const 4 call $~lib/builtins/abort unreachable end + local.get $1 local.get $0 - local.get $1 call $~lib/map/Map#get - i32.const 20 - local.get $1 + local.get $0 i32.const 16 i32.shl i32.const 16 i32.shr_s + i32.const 20 i32.add - i32.eq - i32.eqz + i32.ne + if + i32.const 0 + i32.const 232 + i32.const 26 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.get $0 + call $~lib/map/Map#delete + local.get $1 + local.get $0 + call $~lib/map/Map#has if i32.const 0 i32.const 232 @@ -4181,60 +3370,60 @@ i32.const 4 call $~lib/builtins/abort unreachable + else + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $repeat|2 end - local.get $0 + unreachable + end + end + local.get $1 + i32.load offset=20 + i32.const 50 + i32.ne + if + i32.const 0 + i32.const 232 + i32.const 30 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + local.set $0 + loop $repeat|3 + local.get $0 + i32.const 50 + i32.lt_s + if local.get $1 - call $~lib/map/Map#delete - drop local.get $0 - local.get $1 call $~lib/map/Map#has - i32.eqz - i32.eqz if i32.const 0 i32.const 232 - i32.const 30 + i32.const 34 i32.const 4 call $~lib/builtins/abort unreachable end local.get $1 - i32.const 1 - i32.add - local.set $1 - br $repeat|2 - unreachable - end - unreachable - end - local.get $0 - call $~lib/map/Map#get:size - i32.const 50 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 32 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - block $break|3 - i32.const 0 - local.set $1 - loop $repeat|3 - local.get $1 - i32.const 50 - i32.lt_s - i32.eqz - br_if $break|3 local.get $0 + local.get $0 + i32.const 16 + i32.shl + i32.const 16 + i32.shr_s + i32.const 10 + i32.add + call $~lib/map/Map#set local.get $1 + local.get $0 call $~lib/map/Map#has i32.eqz - i32.eqz if i32.const 0 i32.const 232 @@ -4243,20 +3432,12 @@ call $~lib/builtins/abort unreachable end + local.get $1 local.get $0 + call $~lib/map/Map#delete local.get $1 - i32.const 10 - local.get $1 - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s - i32.add - call $~lib/map/Map#set local.get $0 - local.get $1 call $~lib/map/Map#has - i32.eqz if i32.const 0 i32.const 232 @@ -4264,95 +3445,60 @@ i32.const 4 call $~lib/builtins/abort unreachable + else + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $repeat|3 end - local.get $0 - local.get $1 - call $~lib/map/Map#delete - drop - local.get $0 - local.get $1 - call $~lib/map/Map#has - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 40 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $repeat|3 unreachable end - unreachable end - local.get $0 - call $~lib/map/Map#get:size + local.get $1 + i32.load offset=20 i32.const 50 - i32.eq - i32.eqz + i32.ne if i32.const 0 i32.const 232 - i32.const 42 + i32.const 40 i32.const 2 call $~lib/builtins/abort unreachable end - local.get $0 - call $~lib/map/Map#clear - local.get $0 - call $~lib/map/Map#get:size - i32.const 0 - i32.eq - i32.eqz + local.get $1 + call $~lib/map/Map#clear + local.get $1 + i32.load offset=20 if i32.const 0 i32.const 232 - i32.const 46 + i32.const 44 i32.const 2 call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 call $~lib/rt/purerc/__release ) - (func $~lib/map/Map#clear (; 48 ;) (type $FUNCSIG$vi) (param $0 i32) - (local $1 i32) - local.get $0 - local.tee $1 - block (result i32) - local.get $1 - i32.load - call $~lib/rt/purerc/__release - i32.const 0 - i32.const 16 - call $~lib/arraybuffer/ArrayBuffer#constructor - end + (func $~lib/map/Map#constructor (; 40 ;) (type $FUNCSIG$i) (result i32) + (local $0 i32) + i32.const 24 + i32.const 20 + call $~lib/rt/tlsf/__alloc + call $~lib/rt/purerc/__retain + local.tee $0 + i32.const 0 i32.store local.get $0 - i32.const 4 - i32.const 1 - i32.sub + i32.const 0 i32.store offset=4 local.get $0 - local.tee $1 - block (result i32) - local.get $1 - i32.load offset=8 - call $~lib/rt/purerc/__release - i32.const 0 - i32.const 48 - call $~lib/arraybuffer/ArrayBuffer#constructor - end + i32.const 0 i32.store offset=8 local.get $0 - i32.const 4 + i32.const 0 i32.store offset=12 local.get $0 i32.const 0 @@ -4360,108 +3506,34 @@ local.get $0 i32.const 0 i32.store offset=20 - ) - (func $~lib/map/Map#constructor (; 49 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - block (result i32) - local.get $0 - i32.eqz - if - i32.const 24 - i32.const 20 - call $~lib/rt/tlsf/__alloc - call $~lib/rt/purerc/__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 - i32.const 0 - i32.store offset=16 - local.get $0 - i32.const 0 - i32.store offset=20 - local.get $0 - end - call $~lib/map/Map#clear + local.get $0 + call $~lib/map/Map#clear local.get $0 ) - (func $~lib/map/Map#find (; 50 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - local.get $0 - i32.load - local.get $2 - local.get $0 - i32.load offset=4 - i32.and - i32.const 4 - i32.mul - i32.add - i32.load - local.set $3 - block $break|0 - loop $continue|0 - local.get $3 - if - local.get $3 - i32.load offset=8 - i32.const 1 - i32.and - i32.eqz - if (result i32) - local.get $3 - i32.load16_u - local.get $1 - i32.const 65535 - i32.and - i32.eq - else - i32.const 0 - end - if - local.get $3 - return - end - local.get $3 - i32.load offset=8 - i32.const 1 - i32.const -1 - i32.xor - i32.and - local.set $3 - br $continue|0 - end - end - end - i32.const 0 - ) - (func $~lib/map/Map#has (; 51 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) + (func $~lib/map/Map#has (; 41 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $0 local.get $1 - block $~lib/util/hash/HASH|inlined.0 (result i32) - local.get $1 - local.set $2 - local.get $2 - i32.const 65535 - i32.and - call $~lib/util/hash/hash16 - br $~lib/util/hash/HASH|inlined.0 - end - call $~lib/map/Map#find + local.get $1 + i32.const 65535 + i32.and + local.tee $0 + i32.const 255 + i32.and + i32.const -2128831035 + i32.xor + i32.const 16777619 + i32.mul + local.get $0 + i32.const 8 + i32.shr_u + i32.xor + i32.const 16777619 + i32.mul + call $~lib/map/Map#find i32.const 0 i32.ne ) - (func $~lib/map/Map#rehash (; 52 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/map/Map#rehash (; 42 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -4469,117 +3541,97 @@ (local $6 i32) (local $7 i32) (local $8 i32) - (local $9 i32) - (local $10 i32) - (local $11 i32) - (local $12 i32) local.get $1 i32.const 1 i32.add - local.set $2 - i32.const 0 - local.get $2 - i32.const 4 - i32.mul + local.tee $2 + i32.const 2 + i32.shl call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $3 + local.set $4 local.get $2 f64.convert_i32_s f64.const 2.6666666666666665 f64.mul i32.trunc_f64_s - local.set $4 - i32.const 0 - local.get $4 - block $~lib/map/ENTRY_SIZE|inlined.1 (result i32) - i32.const 12 - end + local.tee $7 + i32.const 12 i32.mul call $~lib/arraybuffer/ArrayBuffer#constructor local.set $5 local.get $0 i32.load offset=8 - local.set $6 - local.get $6 + local.tee $3 local.get $0 i32.load offset=16 - block $~lib/map/ENTRY_SIZE|inlined.2 (result i32) - i32.const 12 - end + i32.const 12 i32.mul i32.add - local.set $7 - local.get $5 local.set $8 - block $break|0 - loop $continue|0 - local.get $6 - local.get $7 - i32.ne + local.get $5 + local.set $2 + loop $continue|0 + local.get $3 + local.get $8 + i32.ne + if + local.get $3 + i32.load offset=8 + i32.const 1 + i32.and + i32.eqz if - local.get $6 - local.set $9 - local.get $9 - i32.load offset=8 - i32.const 1 + local.get $2 + local.get $3 + i32.load16_u + i32.store16 + local.get $2 + local.get $3 + i32.load offset=4 + i32.store offset=4 + local.get $2 + local.get $3 + i32.load16_u + local.tee $6 + i32.const 255 i32.and - i32.eqz - if - local.get $8 - local.set $10 - local.get $10 - local.get $9 - i32.load16_u - i32.store16 - local.get $10 - local.get $9 - i32.load offset=4 - i32.store offset=4 - block $~lib/util/hash/HASH|inlined.2 (result i32) - local.get $9 - i32.load16_u - local.set $11 - local.get $11 - call $~lib/util/hash/hash16 - br $~lib/util/hash/HASH|inlined.2 - end - local.get $1 - i32.and - local.set $11 - local.get $3 - local.get $11 - i32.const 4 - i32.mul - i32.add - local.set $12 - local.get $10 - local.get $12 - i32.load - i32.store offset=8 - local.get $12 - local.get $8 - i32.store - local.get $8 - block $~lib/map/ENTRY_SIZE|inlined.3 (result i32) - i32.const 12 - end - i32.add - local.set $8 - end + i32.const -2128831035 + i32.xor + i32.const 16777619 + i32.mul local.get $6 - block $~lib/map/ENTRY_SIZE|inlined.4 (result i32) - i32.const 12 - end + i32.const 8 + i32.shr_u + i32.xor + i32.const 16777619 + i32.mul + local.get $1 + i32.and + i32.const 2 + i32.shl + local.get $4 i32.add - local.set $6 - br $continue|0 + local.tee $6 + i32.load + i32.store offset=8 + local.get $6 + local.get $2 + i32.store + local.get $2 + i32.const 12 + i32.add + local.set $2 end + local.get $3 + i32.const 12 + i32.add + local.set $3 + br $continue|0 end end local.get $0 - local.tee $9 - local.get $3 - local.get $9 + local.get $4 + local.get $0 i32.load call $~lib/rt/purerc/__retainRelease i32.store @@ -4587,47 +3639,52 @@ local.get $1 i32.store offset=4 local.get $0 - local.tee $9 local.get $5 - local.get $9 + local.get $0 i32.load offset=8 call $~lib/rt/purerc/__retainRelease i32.store offset=8 local.get $0 - local.get $4 + local.get $7 i32.store offset=12 local.get $0 local.get $0 i32.load offset=20 i32.store offset=16 - local.get $3 + local.get $4 call $~lib/rt/purerc/__release local.get $5 call $~lib/rt/purerc/__release ) - (func $~lib/map/Map#set (; 53 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/map/Map#set (; 43 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) - (local $6 i32) - block $~lib/util/hash/HASH|inlined.1 (result i32) - local.get $1 - local.set $3 - local.get $3 - i32.const 65535 - i32.and - call $~lib/util/hash/hash16 - br $~lib/util/hash/HASH|inlined.1 - end - local.set $4 + local.get $1 + i32.const 65535 + i32.and + local.tee $3 + i32.const 255 + i32.and + i32.const -2128831035 + i32.xor + i32.const 16777619 + i32.mul + local.get $3 + i32.const 8 + i32.shr_u + i32.xor + i32.const 16777619 + i32.mul + local.tee $3 + local.set $5 local.get $0 local.get $1 - local.get $4 - call $~lib/map/Map#find - local.set $5 - local.get $5 + local.get $3 + call $~lib/map/Map#find + local.tee $3 if - local.get $5 + local.get $3 local.get $2 i32.store offset=4 else @@ -4663,28 +3720,23 @@ local.get $0 i32.load offset=8 call $~lib/rt/purerc/__retain - local.set $3 - local.get $3 - block (result i32) - local.get $0 - local.get $0 - i32.load offset=16 - local.tee $6 - i32.const 1 - i32.add - i32.store offset=16 - local.get $6 - end - block $~lib/map/ENTRY_SIZE|inlined.5 (result i32) - i32.const 12 - end - i32.mul + local.set $4 + local.get $0 + local.get $0 + i32.load offset=16 + local.tee $3 + i32.const 1 i32.add - local.set $5 - local.get $5 + i32.store offset=16 + local.get $3 + i32.const 12 + i32.mul + local.get $4 + i32.add + local.tee $3 local.get $1 i32.store16 - local.get $5 + local.get $3 local.get $2 i32.store offset=4 local.get $0 @@ -4693,81 +3745,82 @@ i32.const 1 i32.add i32.store offset=20 + local.get $3 local.get $0 i32.load - local.get $4 local.get $0 i32.load offset=4 - i32.and - i32.const 4 - i32.mul - i32.add - local.set $6 local.get $5 - local.get $6 + i32.and + i32.const 2 + i32.shl + i32.add + local.tee $0 i32.load i32.store offset=8 - local.get $6 - local.get $5 - i32.store + local.get $0 local.get $3 + i32.store + local.get $4 call $~lib/rt/purerc/__release end ) - (func $~lib/map/Map#get (; 54 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) + (func $~lib/map/Map#get (; 44 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $0 local.get $1 - block $~lib/util/hash/HASH|inlined.3 (result i32) - local.get $1 - local.set $2 - local.get $2 - i32.const 65535 - i32.and - call $~lib/util/hash/hash16 - br $~lib/util/hash/HASH|inlined.3 - end - call $~lib/map/Map#find - local.set $3 - local.get $3 + local.get $1 + i32.const 65535 + i32.and + local.tee $0 + i32.const 255 + i32.and + i32.const -2128831035 + i32.xor + i32.const 16777619 + i32.mul + local.get $0 + i32.const 8 + i32.shr_u + i32.xor + i32.const 16777619 + i32.mul + call $~lib/map/Map#find + local.tee $0 if (result i32) - local.get $3 + local.get $0 i32.load offset=4 else unreachable end ) - (func $~lib/map/Map#get:size (; 55 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - local.get $0 - i32.load offset=20 - ) - (func $~lib/map/Map#delete (; 56 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/map/Map#delete (; 45 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) local.get $0 local.get $1 - block $~lib/util/hash/HASH|inlined.4 (result i32) - local.get $1 - local.set $2 - local.get $2 - i32.const 65535 - i32.and - call $~lib/util/hash/hash16 - br $~lib/util/hash/HASH|inlined.4 - end - call $~lib/map/Map#find - local.set $3 - local.get $3 + local.get $1 + i32.const 65535 + i32.and + local.tee $1 + i32.const 255 + i32.and + i32.const -2128831035 + i32.xor + i32.const 16777619 + i32.mul + local.get $1 + i32.const 8 + i32.shr_u + i32.xor + i32.const 16777619 + i32.mul + call $~lib/map/Map#find + local.tee $1 i32.eqz if - i32.const 0 return end - local.get $3 - local.get $3 + local.get $1 + local.get $1 i32.load offset=8 i32.const 1 i32.or @@ -4782,17 +3835,15 @@ i32.load offset=4 i32.const 1 i32.shr_u - local.set $4 - local.get $4 + local.tee $2 i32.const 1 i32.add i32.const 4 - local.tee $2 local.get $0 i32.load offset=20 - local.tee $5 - local.get $2 - local.get $5 + local.tee $1 + i32.const 4 + local.get $1 i32.gt_u select i32.ge_u @@ -4811,30 +3862,42 @@ end if local.get $0 - local.get $4 + local.get $2 call $~lib/map/Map#rehash end - i32.const 1 ) - (func $std/map/testNumeric (; 57 ;) (type $FUNCSIG$v) + (func $std/map/testNumeric (; 46 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) - i32.const 0 call $~lib/map/Map#constructor - local.set $0 - block $break|0 - i32.const 0 - local.set $1 - loop $repeat|0 + local.set $1 + loop $repeat|0 + local.get $0 + i32.const 100 + i32.lt_u + if + local.get $1 + local.get $0 + call $~lib/map/Map#has + if + i32.const 0 + i32.const 232 + i32.const 6 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.get $0 + local.get $0 + i32.const 65535 + i32.and + i32.const 10 + i32.add + call $~lib/map/Map#set local.get $1 - i32.const 100 - i32.lt_u - i32.eqz - br_if $break|0 local.get $0 - local.get $1 call $~lib/map/Map#has - i32.eqz i32.eqz if i32.const 0 @@ -4844,96 +3907,91 @@ call $~lib/builtins/abort unreachable end + local.get $1 local.get $0 - local.get $1 - i32.const 10 - local.get $1 - i32.const 65535 - i32.and - i32.add - call $~lib/map/Map#set - local.get $0 - local.get $1 - call $~lib/map/Map#has - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 10 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 call $~lib/map/Map#get - i32.const 10 - local.get $1 + local.get $0 i32.const 65535 i32.and + i32.const 10 i32.add - i32.eq - i32.eqz + i32.ne if i32.const 0 i32.const 232 - i32.const 11 + i32.const 9 i32.const 4 call $~lib/builtins/abort unreachable + else + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $repeat|0 end - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $repeat|0 unreachable end - unreachable end - local.get $0 - call $~lib/map/Map#get:size + local.get $1 + i32.load offset=20 i32.const 100 - i32.eq - i32.eqz + i32.ne if i32.const 0 i32.const 232 - i32.const 13 + i32.const 11 i32.const 2 call $~lib/builtins/abort unreachable end - block $break|1 - i32.const 0 - local.set $1 - loop $repeat|1 + i32.const 0 + local.set $0 + loop $repeat|1 + local.get $0 + i32.const 100 + i32.lt_u + if local.get $1 - i32.const 100 - i32.lt_u - i32.eqz - br_if $break|1 local.get $0 - local.get $1 call $~lib/map/Map#has i32.eqz if i32.const 0 i32.const 232 - i32.const 17 + i32.const 15 i32.const 4 call $~lib/builtins/abort unreachable end + local.get $1 local.get $0 - local.get $1 call $~lib/map/Map#get - i32.const 10 - local.get $1 + local.get $0 i32.const 65535 i32.and + i32.const 10 i32.add - i32.eq + i32.ne + if + i32.const 0 + i32.const 232 + i32.const 16 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.get $0 + local.get $0 + i32.const 65535 + i32.and + i32.const 20 + i32.add + call $~lib/map/Map#set + local.get $1 + local.get $0 + call $~lib/map/Map#has i32.eqz if i32.const 0 @@ -4943,97 +4001,86 @@ call $~lib/builtins/abort unreachable end + local.get $1 local.get $0 - local.get $1 - i32.const 20 - local.get $1 - i32.const 65535 - i32.and - i32.add - call $~lib/map/Map#set - local.get $0 - local.get $1 - call $~lib/map/Map#has - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 20 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 call $~lib/map/Map#get - i32.const 20 - local.get $1 + local.get $0 i32.const 65535 i32.and + i32.const 20 i32.add - i32.eq - i32.eqz + i32.ne if i32.const 0 i32.const 232 - i32.const 21 + i32.const 19 i32.const 4 call $~lib/builtins/abort unreachable + else + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $repeat|1 end - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $repeat|1 unreachable end - unreachable end - local.get $0 - call $~lib/map/Map#get:size + local.get $1 + i32.load offset=20 i32.const 100 - i32.eq - i32.eqz + i32.ne if i32.const 0 i32.const 232 - i32.const 23 + i32.const 21 i32.const 2 call $~lib/builtins/abort unreachable end - block $break|2 - i32.const 0 - local.set $1 - loop $repeat|2 + i32.const 0 + local.set $0 + loop $repeat|2 + local.get $0 + i32.const 50 + i32.lt_u + if local.get $1 - i32.const 50 - i32.lt_u - i32.eqz - br_if $break|2 local.get $0 - local.get $1 call $~lib/map/Map#has i32.eqz if i32.const 0 i32.const 232 - i32.const 27 + i32.const 25 i32.const 4 call $~lib/builtins/abort unreachable end + local.get $1 local.get $0 - local.get $1 call $~lib/map/Map#get - i32.const 20 - local.get $1 + local.get $0 i32.const 65535 i32.and + i32.const 20 i32.add - i32.eq - i32.eqz + i32.ne + if + i32.const 0 + i32.const 232 + i32.const 26 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.get $0 + call $~lib/map/Map#delete + local.get $1 + local.get $0 + call $~lib/map/Map#has if i32.const 0 i32.const 232 @@ -5041,60 +4088,58 @@ i32.const 4 call $~lib/builtins/abort unreachable + else + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $repeat|2 end - local.get $0 + unreachable + end + end + local.get $1 + i32.load offset=20 + i32.const 50 + i32.ne + if + i32.const 0 + i32.const 232 + i32.const 30 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + local.set $0 + loop $repeat|3 + local.get $0 + i32.const 50 + i32.lt_u + if local.get $1 - call $~lib/map/Map#delete - drop local.get $0 - local.get $1 call $~lib/map/Map#has - i32.eqz - i32.eqz if i32.const 0 i32.const 232 - i32.const 30 + i32.const 34 i32.const 4 call $~lib/builtins/abort unreachable end local.get $1 - i32.const 1 - i32.add - local.set $1 - br $repeat|2 - unreachable - end - unreachable - end - local.get $0 - call $~lib/map/Map#get:size - i32.const 50 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 32 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - block $break|3 - i32.const 0 - local.set $1 - loop $repeat|3 - local.get $1 - i32.const 50 - i32.lt_u - i32.eqz - br_if $break|3 local.get $0 + local.get $0 + i32.const 65535 + i32.and + i32.const 10 + i32.add + call $~lib/map/Map#set local.get $1 + local.get $0 call $~lib/map/Map#has i32.eqz - i32.eqz if i32.const 0 i32.const 232 @@ -5103,18 +4148,12 @@ call $~lib/builtins/abort unreachable end + local.get $1 local.get $0 + call $~lib/map/Map#delete local.get $1 - i32.const 10 - local.get $1 - i32.const 65535 - i32.and - i32.add - call $~lib/map/Map#set local.get $0 - local.get $1 call $~lib/map/Map#has - i32.eqz if i32.const 0 i32.const 232 @@ -5122,95 +4161,60 @@ i32.const 4 call $~lib/builtins/abort unreachable + else + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $repeat|3 end - local.get $0 - local.get $1 - call $~lib/map/Map#delete - drop - local.get $0 - local.get $1 - call $~lib/map/Map#has - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 40 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $repeat|3 unreachable end - unreachable end - local.get $0 - call $~lib/map/Map#get:size + local.get $1 + i32.load offset=20 i32.const 50 - i32.eq - i32.eqz + i32.ne if i32.const 0 i32.const 232 - i32.const 42 + i32.const 40 i32.const 2 call $~lib/builtins/abort unreachable end - local.get $0 - call $~lib/map/Map#clear - local.get $0 - call $~lib/map/Map#get:size - i32.const 0 - i32.eq - i32.eqz + local.get $1 + call $~lib/map/Map#clear + local.get $1 + i32.load offset=20 if i32.const 0 i32.const 232 - i32.const 46 + i32.const 44 i32.const 2 call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 call $~lib/rt/purerc/__release ) - (func $~lib/map/Map#clear (; 58 ;) (type $FUNCSIG$vi) (param $0 i32) - (local $1 i32) - local.get $0 - local.tee $1 - block (result i32) - local.get $1 - i32.load - call $~lib/rt/purerc/__release - i32.const 0 - i32.const 16 - call $~lib/arraybuffer/ArrayBuffer#constructor - end + (func $~lib/map/Map#constructor (; 47 ;) (type $FUNCSIG$i) (result i32) + (local $0 i32) + i32.const 24 + i32.const 21 + call $~lib/rt/tlsf/__alloc + call $~lib/rt/purerc/__retain + local.tee $0 + i32.const 0 i32.store local.get $0 - i32.const 4 - i32.const 1 - i32.sub + i32.const 0 i32.store offset=4 local.get $0 - local.tee $1 - block (result i32) - local.get $1 - i32.load offset=8 - call $~lib/rt/purerc/__release - i32.const 0 - i32.const 48 - call $~lib/arraybuffer/ArrayBuffer#constructor - end + i32.const 0 i32.store offset=8 local.get $0 - i32.const 4 + i32.const 0 i32.store offset=12 local.get $0 i32.const 0 @@ -5218,54 +4222,18 @@ local.get $0 i32.const 0 i32.store offset=20 - ) - (func $~lib/map/Map#constructor (; 59 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - block (result i32) - local.get $0 - i32.eqz - if - i32.const 24 - i32.const 21 - call $~lib/rt/tlsf/__alloc - call $~lib/rt/purerc/__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 - i32.const 0 - i32.store offset=16 - local.get $0 - i32.const 0 - i32.store offset=20 - local.get $0 - end - call $~lib/map/Map#clear + local.get $0 + call $~lib/map/Map#clear local.get $0 ) - (func $~lib/util/hash/hash32 (; 60 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - (local $1 i32) - i32.const -2128831035 - local.set $1 - local.get $1 + (func $~lib/util/hash/hash32 (; 48 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.const 255 i32.and + i32.const -2128831035 i32.xor i32.const 16777619 i32.mul - local.set $1 - local.get $1 local.get $0 i32.const 8 i32.shr_u @@ -5274,8 +4242,6 @@ i32.xor i32.const 16777619 i32.mul - local.set $1 - local.get $1 local.get $0 i32.const 16 i32.shr_u @@ -5284,80 +4250,64 @@ i32.xor i32.const 16777619 i32.mul - local.set $1 - local.get $1 local.get $0 i32.const 24 i32.shr_u i32.xor i32.const 16777619 i32.mul - local.set $1 - local.get $1 ) - (func $~lib/map/Map#find (; 61 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) + (func $~lib/map/Map#find (; 49 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $0 i32.load - local.get $2 local.get $0 i32.load offset=4 + local.get $2 i32.and - i32.const 4 - i32.mul + i32.const 2 + i32.shl i32.add i32.load - local.set $3 - block $break|0 - loop $continue|0 - local.get $3 - if - local.get $3 - i32.load offset=8 - i32.const 1 - i32.and - i32.eqz - if (result i32) - local.get $3 - i32.load - local.get $1 - i32.eq - else - i32.const 0 - end - if - local.get $3 - return - end - local.get $3 - i32.load offset=8 - i32.const 1 - i32.const -1 - i32.xor - i32.and - local.set $3 - br $continue|0 + local.set $0 + loop $continue|0 + local.get $0 + if + local.get $0 + i32.load offset=8 + i32.const 1 + i32.and + if (result i32) + i32.const 0 + else + local.get $0 + i32.load + local.get $1 + i32.eq end + if + local.get $0 + return + end + local.get $0 + i32.load offset=8 + i32.const -2 + i32.and + local.set $0 + br $continue|0 end end i32.const 0 ) - (func $~lib/map/Map#has (; 62 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) + (func $~lib/map/Map#has (; 50 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $0 local.get $1 - block $~lib/util/hash/HASH|inlined.0 (result i32) - local.get $1 - local.set $2 - local.get $2 - call $~lib/util/hash/hash32 - br $~lib/util/hash/HASH|inlined.0 - end + local.get $1 + call $~lib/util/hash/hash32 call $~lib/map/Map#find i32.const 0 i32.ne ) - (func $~lib/map/Map#rehash (; 63 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/map/Map#rehash (; 51 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -5365,117 +4315,85 @@ (local $6 i32) (local $7 i32) (local $8 i32) - (local $9 i32) - (local $10 i32) - (local $11 i32) - (local $12 i32) local.get $1 i32.const 1 i32.add - local.set $2 - i32.const 0 - local.get $2 - i32.const 4 - i32.mul + local.tee $2 + i32.const 2 + i32.shl call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $3 + local.set $4 local.get $2 f64.convert_i32_s f64.const 2.6666666666666665 f64.mul i32.trunc_f64_s - local.set $4 - i32.const 0 - local.get $4 - block $~lib/map/ENTRY_SIZE|inlined.1 (result i32) - i32.const 12 - end + local.tee $6 + i32.const 12 i32.mul call $~lib/arraybuffer/ArrayBuffer#constructor local.set $5 local.get $0 i32.load offset=8 - local.set $6 - local.get $6 + local.tee $3 local.get $0 i32.load offset=16 - block $~lib/map/ENTRY_SIZE|inlined.2 (result i32) - i32.const 12 - end + i32.const 12 i32.mul i32.add local.set $7 local.get $5 - local.set $8 - block $break|0 - loop $continue|0 - local.get $6 - local.get $7 - i32.ne + local.set $2 + loop $continue|0 + local.get $3 + local.get $7 + i32.ne + if + local.get $3 + i32.load offset=8 + i32.const 1 + i32.and + i32.eqz if - local.get $6 - local.set $9 - local.get $9 - i32.load offset=8 - i32.const 1 + local.get $2 + local.get $3 + i32.load + i32.store + local.get $2 + local.get $3 + i32.load offset=4 + i32.store offset=4 + local.get $2 + local.get $3 + i32.load + call $~lib/util/hash/hash32 + local.get $1 i32.and - i32.eqz - if - local.get $8 - local.set $10 - local.get $10 - local.get $9 - i32.load - i32.store - local.get $10 - local.get $9 - i32.load offset=4 - i32.store offset=4 - block $~lib/util/hash/HASH|inlined.2 (result i32) - local.get $9 - i32.load - local.set $11 - local.get $11 - call $~lib/util/hash/hash32 - br $~lib/util/hash/HASH|inlined.2 - end - local.get $1 - i32.and - local.set $11 - local.get $3 - local.get $11 - i32.const 4 - i32.mul - i32.add - local.set $12 - local.get $10 - local.get $12 - i32.load - i32.store offset=8 - local.get $12 - local.get $8 - i32.store - local.get $8 - block $~lib/map/ENTRY_SIZE|inlined.3 (result i32) - i32.const 12 - end - i32.add - local.set $8 - end - local.get $6 - block $~lib/map/ENTRY_SIZE|inlined.4 (result i32) - i32.const 12 - end + i32.const 2 + i32.shl + local.get $4 i32.add - local.set $6 - br $continue|0 + local.tee $8 + i32.load + i32.store offset=8 + local.get $8 + local.get $2 + i32.store + local.get $2 + i32.const 12 + i32.add + local.set $2 end + local.get $3 + i32.const 12 + i32.add + local.set $3 + br $continue|0 end end local.get $0 - local.tee $9 - local.get $3 - local.get $9 + local.get $4 + local.get $0 i32.load call $~lib/rt/purerc/__retainRelease i32.store @@ -5483,45 +4401,36 @@ local.get $1 i32.store offset=4 local.get $0 - local.tee $9 local.get $5 - local.get $9 + local.get $0 i32.load offset=8 call $~lib/rt/purerc/__retainRelease i32.store offset=8 local.get $0 - local.get $4 + local.get $6 i32.store offset=12 local.get $0 local.get $0 i32.load offset=20 i32.store offset=16 - local.get $3 + local.get $4 call $~lib/rt/purerc/__release local.get $5 call $~lib/rt/purerc/__release ) - (func $~lib/map/Map#set (; 64 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/map/Map#set (; 52 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) - (local $6 i32) - block $~lib/util/hash/HASH|inlined.1 (result i32) - local.get $1 - local.set $3 - local.get $3 - call $~lib/util/hash/hash32 - br $~lib/util/hash/HASH|inlined.1 - end - local.set $4 local.get $0 local.get $1 - local.get $4 + local.get $1 + call $~lib/util/hash/hash32 + local.tee $5 call $~lib/map/Map#find - local.set $5 - local.get $5 + local.tee $3 if - local.get $5 + local.get $3 local.get $2 i32.store offset=4 else @@ -5557,862 +4466,23 @@ local.get $0 i32.load offset=8 call $~lib/rt/purerc/__retain - local.set $3 - local.get $3 - block (result i32) - local.get $0 - local.get $0 - i32.load offset=16 - local.tee $6 - i32.const 1 - i32.add - i32.store offset=16 - local.get $6 - end - block $~lib/map/ENTRY_SIZE|inlined.5 (result i32) - i32.const 12 - end - i32.mul - i32.add - local.set $5 - local.get $5 - local.get $1 - i32.store - local.get $5 - local.get $2 - i32.store offset=4 + local.set $4 local.get $0 - local.get $0 - i32.load offset=20 - i32.const 1 - i32.add - i32.store offset=20 - local.get $0 - i32.load - local.get $4 - local.get $0 - i32.load offset=4 - i32.and - i32.const 4 - i32.mul - i32.add - local.set $6 - local.get $5 - local.get $6 - i32.load - i32.store offset=8 - local.get $6 - local.get $5 - i32.store - local.get $3 - call $~lib/rt/purerc/__release - end - ) - (func $~lib/map/Map#get (; 65 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - local.get $0 - local.get $1 - block $~lib/util/hash/HASH|inlined.3 (result i32) - local.get $1 - local.set $2 - local.get $2 - call $~lib/util/hash/hash32 - br $~lib/util/hash/HASH|inlined.3 - end - call $~lib/map/Map#find - local.set $3 - local.get $3 - if (result i32) - local.get $3 - i32.load offset=4 - else - unreachable - end - ) - (func $~lib/map/Map#get:size (; 66 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - local.get $0 - i32.load offset=20 - ) - (func $~lib/map/Map#delete (; 67 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $0 - local.get $1 - block $~lib/util/hash/HASH|inlined.4 (result i32) - local.get $1 - local.set $2 - local.get $2 - call $~lib/util/hash/hash32 - br $~lib/util/hash/HASH|inlined.4 - end - call $~lib/map/Map#find - local.set $3 - local.get $3 - i32.eqz - if - i32.const 0 - return - end - local.get $3 - local.get $3 - i32.load offset=8 - i32.const 1 - i32.or - i32.store offset=8 - 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.set $4 - local.get $4 - i32.const 1 - i32.add - i32.const 4 - local.tee $2 - local.get $0 - i32.load offset=20 - local.tee $5 - local.get $2 - local.get $5 - i32.gt_u - select - i32.ge_u - if (result i32) - local.get $0 - i32.load offset=20 - local.get $0 - i32.load offset=12 - f64.convert_i32_s - f64.const 0.75 - f64.mul - i32.trunc_f64_s - i32.lt_s - else - i32.const 0 - end - if - local.get $0 - local.get $4 - call $~lib/map/Map#rehash - end - i32.const 1 - ) - (func $std/map/testNumeric (; 68 ;) (type $FUNCSIG$v) - (local $0 i32) - (local $1 i32) - i32.const 0 - call $~lib/map/Map#constructor - local.set $0 - block $break|0 - i32.const 0 - local.set $1 - loop $repeat|0 - local.get $1 - i32.const 100 - i32.lt_s - i32.eqz - br_if $break|0 - local.get $0 - local.get $1 - call $~lib/map/Map#has - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 8 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - i32.const 10 - local.get $1 - i32.add - call $~lib/map/Map#set - local.get $0 - local.get $1 - call $~lib/map/Map#has - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 10 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - call $~lib/map/Map#get - i32.const 10 - local.get $1 - i32.add - i32.eq - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 11 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $repeat|0 - unreachable - end - unreachable - end - local.get $0 - call $~lib/map/Map#get:size - i32.const 100 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 13 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - block $break|1 - i32.const 0 - local.set $1 - loop $repeat|1 - local.get $1 - i32.const 100 - i32.lt_s - i32.eqz - br_if $break|1 - local.get $0 - local.get $1 - call $~lib/map/Map#has - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 17 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - call $~lib/map/Map#get - i32.const 10 - local.get $1 - i32.add - i32.eq - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 18 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - i32.const 20 - local.get $1 - i32.add - call $~lib/map/Map#set - local.get $0 - local.get $1 - call $~lib/map/Map#has - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 20 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - call $~lib/map/Map#get - i32.const 20 - local.get $1 - i32.add - i32.eq - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 21 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $repeat|1 - unreachable - end - unreachable - end - local.get $0 - call $~lib/map/Map#get:size - i32.const 100 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 23 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - block $break|2 - i32.const 0 - local.set $1 - loop $repeat|2 - local.get $1 - i32.const 50 - i32.lt_s - i32.eqz - br_if $break|2 - local.get $0 - local.get $1 - call $~lib/map/Map#has - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 27 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - call $~lib/map/Map#get - i32.const 20 - local.get $1 - i32.add - i32.eq - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 28 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - call $~lib/map/Map#delete - drop - local.get $0 - local.get $1 - call $~lib/map/Map#has - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 30 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $repeat|2 - unreachable - end - unreachable - end - local.get $0 - call $~lib/map/Map#get:size - i32.const 50 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 32 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - block $break|3 - i32.const 0 - local.set $1 - loop $repeat|3 - local.get $1 - i32.const 50 - i32.lt_s - i32.eqz - br_if $break|3 - local.get $0 - local.get $1 - call $~lib/map/Map#has - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 36 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - i32.const 10 - local.get $1 - i32.add - call $~lib/map/Map#set - local.get $0 - local.get $1 - call $~lib/map/Map#has - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 38 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - call $~lib/map/Map#delete - drop - local.get $0 - local.get $1 - call $~lib/map/Map#has - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 40 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $repeat|3 - unreachable - end - unreachable - end - local.get $0 - call $~lib/map/Map#get:size - i32.const 50 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 42 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $0 - call $~lib/map/Map#clear - local.get $0 - call $~lib/map/Map#get:size - i32.const 0 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 46 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $0 - call $~lib/rt/purerc/__release - ) - (func $~lib/map/Map#clear (; 69 ;) (type $FUNCSIG$vi) (param $0 i32) - (local $1 i32) - local.get $0 - local.tee $1 - block (result i32) - local.get $1 - i32.load - call $~lib/rt/purerc/__release - i32.const 0 - i32.const 16 - call $~lib/arraybuffer/ArrayBuffer#constructor - end - i32.store - local.get $0 - i32.const 4 - i32.const 1 - i32.sub - i32.store offset=4 - local.get $0 - local.tee $1 - block (result i32) - local.get $1 - i32.load offset=8 - call $~lib/rt/purerc/__release - i32.const 0 - i32.const 48 - call $~lib/arraybuffer/ArrayBuffer#constructor - end - i32.store offset=8 - local.get $0 - i32.const 4 - i32.store offset=12 - local.get $0 - i32.const 0 - i32.store offset=16 - local.get $0 - i32.const 0 - i32.store offset=20 - ) - (func $~lib/map/Map#constructor (; 70 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - block (result i32) - local.get $0 - i32.eqz - if - i32.const 24 - i32.const 22 - call $~lib/rt/tlsf/__alloc - call $~lib/rt/purerc/__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 - i32.const 0 - i32.store offset=16 - local.get $0 - i32.const 0 - i32.store offset=20 - local.get $0 - end - call $~lib/map/Map#clear - local.get $0 - ) - (func $~lib/map/Map#find (; 71 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - local.get $0 - i32.load - local.get $2 - local.get $0 - i32.load offset=4 - i32.and - i32.const 4 - i32.mul - i32.add - i32.load - local.set $3 - block $break|0 - loop $continue|0 - local.get $3 - if - local.get $3 - i32.load offset=8 - i32.const 1 - i32.and - i32.eqz - if (result i32) - local.get $3 - i32.load - local.get $1 - i32.eq - else - i32.const 0 - end - if - local.get $3 - return - end - local.get $3 - i32.load offset=8 - i32.const 1 - i32.const -1 - i32.xor - i32.and - local.set $3 - br $continue|0 - end - end - end - i32.const 0 - ) - (func $~lib/map/Map#has (; 72 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - local.get $0 - local.get $1 - block $~lib/util/hash/HASH|inlined.0 (result i32) - local.get $1 - local.set $2 - local.get $2 - call $~lib/util/hash/hash32 - br $~lib/util/hash/HASH|inlined.0 - end - call $~lib/map/Map#find - i32.const 0 - i32.ne - ) - (func $~lib/map/Map#rehash (; 73 ;) (type $FUNCSIG$vii) (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 $9 i32) - (local $10 i32) - (local $11 i32) - (local $12 i32) - local.get $1 - i32.const 1 - i32.add - local.set $2 - i32.const 0 - local.get $2 - i32.const 4 - i32.mul - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $3 - local.get $2 - f64.convert_i32_s - f64.const 2.6666666666666665 - f64.mul - i32.trunc_f64_s - local.set $4 - i32.const 0 - local.get $4 - block $~lib/map/ENTRY_SIZE|inlined.1 (result i32) - i32.const 12 - end - i32.mul - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $5 - local.get $0 - i32.load offset=8 - local.set $6 - local.get $6 - local.get $0 - i32.load offset=16 - block $~lib/map/ENTRY_SIZE|inlined.2 (result i32) - i32.const 12 - end - i32.mul - i32.add - local.set $7 - local.get $5 - local.set $8 - block $break|0 - loop $continue|0 - local.get $6 - local.get $7 - i32.ne - if - local.get $6 - local.set $9 - local.get $9 - i32.load offset=8 - i32.const 1 - i32.and - i32.eqz - if - local.get $8 - local.set $10 - local.get $10 - local.get $9 - i32.load - i32.store - local.get $10 - local.get $9 - i32.load offset=4 - i32.store offset=4 - block $~lib/util/hash/HASH|inlined.2 (result i32) - local.get $9 - i32.load - local.set $11 - local.get $11 - call $~lib/util/hash/hash32 - br $~lib/util/hash/HASH|inlined.2 - end - local.get $1 - i32.and - local.set $11 - local.get $3 - local.get $11 - i32.const 4 - i32.mul - i32.add - local.set $12 - local.get $10 - local.get $12 - i32.load - i32.store offset=8 - local.get $12 - local.get $8 - i32.store - local.get $8 - block $~lib/map/ENTRY_SIZE|inlined.3 (result i32) - i32.const 12 - end - i32.add - local.set $8 - end - local.get $6 - block $~lib/map/ENTRY_SIZE|inlined.4 (result i32) - i32.const 12 - end - i32.add - local.set $6 - br $continue|0 - end - end - end - local.get $0 - local.tee $9 - local.get $3 - local.get $9 - i32.load - call $~lib/rt/purerc/__retainRelease - i32.store - local.get $0 - local.get $1 - i32.store offset=4 - local.get $0 - local.tee $9 - local.get $5 - local.get $9 - i32.load offset=8 - call $~lib/rt/purerc/__retainRelease - i32.store offset=8 - local.get $0 - local.get $4 - i32.store offset=12 - local.get $0 - local.get $0 - i32.load offset=20 - i32.store offset=16 - local.get $3 - call $~lib/rt/purerc/__release - local.get $5 - call $~lib/rt/purerc/__release - ) - (func $~lib/map/Map#set (; 74 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - block $~lib/util/hash/HASH|inlined.1 (result i32) - local.get $1 - local.set $3 - local.get $3 - call $~lib/util/hash/hash32 - br $~lib/util/hash/HASH|inlined.1 - end - local.set $4 - local.get $0 - local.get $1 - local.get $4 - call $~lib/map/Map#find - local.set $5 - local.get $5 - if - local.get $5 - local.get $2 - i32.store offset=4 - else local.get $0 i32.load offset=16 - local.get $0 - i32.load offset=12 - i32.eq - if - local.get $0 - local.get $0 - i32.load offset=20 - local.get $0 - i32.load offset=12 - f64.convert_i32_s - f64.const 0.75 - f64.mul - i32.trunc_f64_s - i32.lt_s - if (result i32) - local.get $0 - i32.load offset=4 - else - local.get $0 - i32.load offset=4 - i32.const 1 - i32.shl - i32.const 1 - i32.or - end - call $~lib/map/Map#rehash - end - local.get $0 - i32.load offset=8 - call $~lib/rt/purerc/__retain - local.set $3 - local.get $3 - block (result i32) - local.get $0 - local.get $0 - i32.load offset=16 - local.tee $6 - i32.const 1 - i32.add - i32.store offset=16 - local.get $6 - end - block $~lib/map/ENTRY_SIZE|inlined.5 (result i32) - i32.const 12 - end - i32.mul + local.tee $3 + i32.const 1 i32.add - local.set $5 - local.get $5 + i32.store offset=16 + local.get $3 + i32.const 12 + i32.mul + local.get $4 + i32.add + local.tee $3 local.get $1 i32.store - local.get $5 + local.get $3 local.get $2 i32.store offset=4 local.get $0 @@ -6421,77 +4491,54 @@ i32.const 1 i32.add i32.store offset=20 + local.get $3 local.get $0 i32.load - local.get $4 local.get $0 i32.load offset=4 - i32.and - i32.const 4 - i32.mul - i32.add - local.set $6 local.get $5 - local.get $6 + i32.and + i32.const 2 + i32.shl + i32.add + local.tee $0 i32.load i32.store offset=8 - local.get $6 - local.get $5 - i32.store + local.get $0 local.get $3 + i32.store + local.get $4 call $~lib/rt/purerc/__release end ) - (func $~lib/map/Map#get (; 75 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) + (func $~lib/map/Map#get (; 53 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $0 local.get $1 - block $~lib/util/hash/HASH|inlined.3 (result i32) - local.get $1 - local.set $2 - local.get $2 - call $~lib/util/hash/hash32 - br $~lib/util/hash/HASH|inlined.3 - end - call $~lib/map/Map#find - local.set $3 - local.get $3 + local.get $1 + call $~lib/util/hash/hash32 + call $~lib/map/Map#find + local.tee $0 if (result i32) - local.get $3 + local.get $0 i32.load offset=4 else unreachable end ) - (func $~lib/map/Map#get:size (; 76 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - local.get $0 - i32.load offset=20 - ) - (func $~lib/map/Map#delete (; 77 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/map/Map#delete (; 54 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) local.get $0 local.get $1 - block $~lib/util/hash/HASH|inlined.4 (result i32) - local.get $1 - local.set $2 - local.get $2 - call $~lib/util/hash/hash32 - br $~lib/util/hash/HASH|inlined.4 - end - call $~lib/map/Map#find - local.set $3 - local.get $3 + local.get $1 + call $~lib/util/hash/hash32 + call $~lib/map/Map#find + local.tee $1 i32.eqz if - i32.const 0 return end - local.get $3 - local.get $3 + local.get $1 + local.get $1 i32.load offset=8 i32.const 1 i32.or @@ -6506,17 +4553,15 @@ i32.load offset=4 i32.const 1 i32.shr_u - local.set $4 - local.get $4 + local.tee $2 i32.const 1 i32.add i32.const 4 - local.tee $2 local.get $0 i32.load offset=20 - local.tee $5 - local.get $2 - local.get $5 + local.tee $1 + i32.const 4 + local.get $1 i32.gt_u select i32.ge_u @@ -6535,30 +4580,40 @@ end if local.get $0 - local.get $4 - call $~lib/map/Map#rehash + local.get $2 + call $~lib/map/Map#rehash end - i32.const 1 ) - (func $std/map/testNumeric (; 78 ;) (type $FUNCSIG$v) + (func $std/map/testNumeric (; 55 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) - i32.const 0 - call $~lib/map/Map#constructor - local.set $0 - block $break|0 - i32.const 0 - local.set $1 - loop $repeat|0 + call $~lib/map/Map#constructor + local.set $1 + loop $repeat|0 + local.get $0 + i32.const 100 + i32.lt_s + if local.get $1 - i32.const 100 - i32.lt_u - i32.eqz - br_if $break|0 local.get $0 + call $~lib/map/Map#has + if + i32.const 0 + i32.const 232 + i32.const 6 + i32.const 4 + call $~lib/builtins/abort + unreachable + end local.get $1 - call $~lib/map/Map#has - i32.eqz + local.get $0 + local.get $0 + i32.const 10 + i32.add + call $~lib/map/Map#set + local.get $1 + local.get $0 + call $~lib/map/Map#has i32.eqz if i32.const 0 @@ -6568,90 +4623,85 @@ call $~lib/builtins/abort unreachable end - local.get $0 local.get $1 + local.get $0 + call $~lib/map/Map#get + local.get $0 i32.const 10 - local.get $1 i32.add - call $~lib/map/Map#set - local.get $0 - local.get $1 - call $~lib/map/Map#has - i32.eqz + i32.ne if i32.const 0 i32.const 232 - i32.const 10 + i32.const 9 i32.const 4 call $~lib/builtins/abort unreachable + else + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $repeat|0 end - local.get $0 - local.get $1 - call $~lib/map/Map#get - i32.const 10 - local.get $1 - i32.add - i32.eq - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 11 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $repeat|0 unreachable end - unreachable end - local.get $0 - call $~lib/map/Map#get:size + local.get $1 + i32.load offset=20 i32.const 100 - i32.eq - i32.eqz + i32.ne if i32.const 0 i32.const 232 - i32.const 13 + i32.const 11 i32.const 2 call $~lib/builtins/abort unreachable end - block $break|1 - i32.const 0 - local.set $1 - loop $repeat|1 + i32.const 0 + local.set $0 + loop $repeat|1 + local.get $0 + i32.const 100 + i32.lt_s + if local.get $1 - i32.const 100 - i32.lt_u - i32.eqz - br_if $break|1 local.get $0 - local.get $1 - call $~lib/map/Map#has + call $~lib/map/Map#has i32.eqz if i32.const 0 i32.const 232 - i32.const 17 + i32.const 15 i32.const 4 call $~lib/builtins/abort unreachable end + local.get $1 + local.get $0 + call $~lib/map/Map#get local.get $0 - local.get $1 - call $~lib/map/Map#get i32.const 10 - local.get $1 i32.add - i32.eq + i32.ne + if + i32.const 0 + i32.const 232 + i32.const 16 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.get $0 + local.get $0 + i32.const 20 + i32.add + call $~lib/map/Map#set + local.get $1 + local.get $0 + call $~lib/map/Map#has i32.eqz if i32.const 0 @@ -6661,91 +4711,82 @@ call $~lib/builtins/abort unreachable end - local.get $0 local.get $1 + local.get $0 + call $~lib/map/Map#get + local.get $0 i32.const 20 - local.get $1 i32.add - call $~lib/map/Map#set - local.get $0 - local.get $1 - call $~lib/map/Map#has - i32.eqz + i32.ne if i32.const 0 i32.const 232 - i32.const 20 + i32.const 19 i32.const 4 call $~lib/builtins/abort unreachable + else + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $repeat|1 end - local.get $0 - local.get $1 - call $~lib/map/Map#get - i32.const 20 - local.get $1 - i32.add - i32.eq - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 21 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $repeat|1 unreachable end - unreachable end - local.get $0 - call $~lib/map/Map#get:size + local.get $1 + i32.load offset=20 i32.const 100 - i32.eq - i32.eqz + i32.ne if i32.const 0 i32.const 232 - i32.const 23 + i32.const 21 i32.const 2 call $~lib/builtins/abort unreachable end - block $break|2 - i32.const 0 - local.set $1 - loop $repeat|2 + i32.const 0 + local.set $0 + loop $repeat|2 + local.get $0 + i32.const 50 + i32.lt_s + if local.get $1 - i32.const 50 - i32.lt_u - i32.eqz - br_if $break|2 local.get $0 - local.get $1 - call $~lib/map/Map#has + call $~lib/map/Map#has i32.eqz if i32.const 0 i32.const 232 - i32.const 27 + i32.const 25 i32.const 4 call $~lib/builtins/abort unreachable end + local.get $1 + local.get $0 + call $~lib/map/Map#get local.get $0 - local.get $1 - call $~lib/map/Map#get i32.const 20 - local.get $1 i32.add - i32.eq - i32.eqz + i32.ne + if + i32.const 0 + i32.const 232 + i32.const 26 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.get $0 + call $~lib/map/Map#delete + local.get $1 + local.get $0 + call $~lib/map/Map#has if i32.const 0 i32.const 232 @@ -6753,59 +4794,55 @@ i32.const 4 call $~lib/builtins/abort unreachable + else + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $repeat|2 end - local.get $0 + unreachable + end + end + local.get $1 + i32.load offset=20 + i32.const 50 + i32.ne + if + i32.const 0 + i32.const 232 + i32.const 30 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + local.set $0 + loop $repeat|3 + local.get $0 + i32.const 50 + i32.lt_s + if local.get $1 - call $~lib/map/Map#delete - drop local.get $0 - local.get $1 - call $~lib/map/Map#has - i32.eqz - i32.eqz + call $~lib/map/Map#has if i32.const 0 i32.const 232 - i32.const 30 + i32.const 34 i32.const 4 call $~lib/builtins/abort unreachable end local.get $1 - i32.const 1 - i32.add - local.set $1 - br $repeat|2 - unreachable - end - unreachable - end - local.get $0 - call $~lib/map/Map#get:size - i32.const 50 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 32 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - block $break|3 - i32.const 0 - local.set $1 - loop $repeat|3 - local.get $1 - i32.const 50 - i32.lt_u - i32.eqz - br_if $break|3 local.get $0 + local.get $0 + i32.const 10 + i32.add + call $~lib/map/Map#set local.get $1 - call $~lib/map/Map#has - i32.eqz + local.get $0 + call $~lib/map/Map#has i32.eqz if i32.const 0 @@ -6815,16 +4852,12 @@ call $~lib/builtins/abort unreachable end + local.get $1 local.get $0 + call $~lib/map/Map#delete local.get $1 - i32.const 10 - local.get $1 - i32.add - call $~lib/map/Map#set local.get $0 - local.get $1 - call $~lib/map/Map#has - i32.eqz + call $~lib/map/Map#has if i32.const 0 i32.const 232 @@ -6832,92 +4865,406 @@ i32.const 4 call $~lib/builtins/abort unreachable + else + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $repeat|3 end - local.get $0 + unreachable + end + end + local.get $1 + i32.load offset=20 + i32.const 50 + i32.ne + if + i32.const 0 + i32.const 232 + i32.const 40 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $1 + call $~lib/map/Map#clear + local.get $1 + i32.load offset=20 + if + i32.const 0 + i32.const 232 + i32.const 44 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $1 + call $~lib/rt/purerc/__release + ) + (func $~lib/map/Map#constructor (; 56 ;) (type $FUNCSIG$i) (result i32) + (local $0 i32) + i32.const 24 + i32.const 22 + call $~lib/rt/tlsf/__alloc + call $~lib/rt/purerc/__retain + local.tee $0 + i32.const 0 + i32.store + local.get $0 + i32.const 0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=8 + local.get $0 + i32.const 0 + i32.store offset=12 + local.get $0 + i32.const 0 + i32.store offset=16 + local.get $0 + i32.const 0 + i32.store offset=20 + local.get $0 + call $~lib/map/Map#clear + local.get $0 + ) + (func $std/map/testNumeric (; 57 ;) (type $FUNCSIG$v) + (local $0 i32) + (local $1 i32) + call $~lib/map/Map#constructor + local.set $1 + loop $repeat|0 + local.get $0 + i32.const 100 + i32.lt_u + if local.get $1 - call $~lib/map/Map#delete - drop local.get $0 - local.get $1 - call $~lib/map/Map#has - i32.eqz - i32.eqz + call $~lib/map/Map#has if i32.const 0 i32.const 232 - i32.const 40 + i32.const 6 i32.const 4 call $~lib/builtins/abort unreachable end local.get $1 - i32.const 1 + local.get $0 + local.get $0 + i32.const 10 i32.add - local.set $1 - br $repeat|3 + call $~lib/map/Map#set + local.get $1 + local.get $0 + call $~lib/map/Map#has + i32.eqz + if + i32.const 0 + i32.const 232 + i32.const 8 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.get $0 + call $~lib/map/Map#get + local.get $0 + i32.const 10 + i32.add + i32.ne + if + i32.const 0 + i32.const 232 + i32.const 9 + i32.const 4 + call $~lib/builtins/abort + unreachable + else + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $repeat|0 + end unreachable end - unreachable end - local.get $0 - call $~lib/map/Map#get:size - i32.const 50 - i32.eq - i32.eqz + local.get $1 + i32.load offset=20 + i32.const 100 + i32.ne if i32.const 0 i32.const 232 - i32.const 42 + i32.const 11 i32.const 2 call $~lib/builtins/abort unreachable end - local.get $0 - call $~lib/map/Map#clear - local.get $0 - call $~lib/map/Map#get:size i32.const 0 - i32.eq - i32.eqz + local.set $0 + loop $repeat|1 + local.get $0 + i32.const 100 + i32.lt_u + if + local.get $1 + local.get $0 + call $~lib/map/Map#has + i32.eqz + if + i32.const 0 + i32.const 232 + i32.const 15 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.get $0 + call $~lib/map/Map#get + local.get $0 + i32.const 10 + i32.add + i32.ne + if + i32.const 0 + i32.const 232 + i32.const 16 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.get $0 + local.get $0 + i32.const 20 + i32.add + call $~lib/map/Map#set + local.get $1 + local.get $0 + call $~lib/map/Map#has + i32.eqz + if + i32.const 0 + i32.const 232 + i32.const 18 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.get $0 + call $~lib/map/Map#get + local.get $0 + i32.const 20 + i32.add + i32.ne + if + i32.const 0 + i32.const 232 + i32.const 19 + i32.const 4 + call $~lib/builtins/abort + unreachable + else + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $repeat|1 + end + unreachable + end + end + local.get $1 + i32.load offset=20 + i32.const 100 + i32.ne if i32.const 0 i32.const 232 - i32.const 46 + i32.const 21 i32.const 2 call $~lib/builtins/abort unreachable end - local.get $0 + i32.const 0 + local.set $0 + loop $repeat|2 + local.get $0 + i32.const 50 + i32.lt_u + if + local.get $1 + local.get $0 + call $~lib/map/Map#has + i32.eqz + if + i32.const 0 + i32.const 232 + i32.const 25 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.get $0 + call $~lib/map/Map#get + local.get $0 + i32.const 20 + i32.add + i32.ne + if + i32.const 0 + i32.const 232 + i32.const 26 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.get $0 + call $~lib/map/Map#delete + local.get $1 + local.get $0 + call $~lib/map/Map#has + if + i32.const 0 + i32.const 232 + i32.const 28 + i32.const 4 + call $~lib/builtins/abort + unreachable + else + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $repeat|2 + end + unreachable + end + end + local.get $1 + i32.load offset=20 + i32.const 50 + i32.ne + if + i32.const 0 + i32.const 232 + i32.const 30 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + local.set $0 + loop $repeat|3 + local.get $0 + i32.const 50 + i32.lt_u + if + local.get $1 + local.get $0 + call $~lib/map/Map#has + if + i32.const 0 + i32.const 232 + i32.const 34 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.get $0 + local.get $0 + i32.const 10 + i32.add + call $~lib/map/Map#set + local.get $1 + local.get $0 + call $~lib/map/Map#has + i32.eqz + if + i32.const 0 + i32.const 232 + i32.const 36 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.get $0 + call $~lib/map/Map#delete + local.get $1 + local.get $0 + call $~lib/map/Map#has + if + i32.const 0 + i32.const 232 + i32.const 38 + i32.const 4 + call $~lib/builtins/abort + unreachable + else + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $repeat|3 + end + unreachable + end + end + local.get $1 + i32.load offset=20 + i32.const 50 + i32.ne + if + i32.const 0 + i32.const 232 + i32.const 40 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $1 + call $~lib/map/Map#clear + local.get $1 + i32.load offset=20 + if + i32.const 0 + i32.const 232 + i32.const 44 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $1 call $~lib/rt/purerc/__release ) - (func $~lib/map/Map#clear (; 79 ;) (type $FUNCSIG$vi) (param $0 i32) - (local $1 i32) + (func $~lib/map/Map#clear (; 58 ;) (type $FUNCSIG$vi) (param $0 i32) local.get $0 - local.tee $1 - block (result i32) - local.get $1 - i32.load - call $~lib/rt/purerc/__release - i32.const 0 - i32.const 16 - call $~lib/arraybuffer/ArrayBuffer#constructor - end + i32.load + call $~lib/rt/purerc/__release + local.get $0 + i32.const 16 + call $~lib/arraybuffer/ArrayBuffer#constructor i32.store local.get $0 - i32.const 4 - i32.const 1 - i32.sub + i32.const 3 i32.store offset=4 local.get $0 - local.tee $1 - block (result i32) - local.get $1 - i32.load offset=8 - call $~lib/rt/purerc/__release - i32.const 0 - i32.const 64 - call $~lib/arraybuffer/ArrayBuffer#constructor - end + i32.load offset=8 + call $~lib/rt/purerc/__release + local.get $0 + i32.const 64 + call $~lib/arraybuffer/ArrayBuffer#constructor i32.store offset=8 local.get $0 i32.const 4 @@ -6929,63 +5276,77 @@ i32.const 0 i32.store offset=20 ) - (func $~lib/map/Map#constructor (; 80 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - block (result i32) - local.get $0 - i32.eqz - if - i32.const 24 - i32.const 23 - call $~lib/rt/tlsf/__alloc - call $~lib/rt/purerc/__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 - i32.const 0 - i32.store offset=16 - local.get $0 - i32.const 0 - i32.store offset=20 - local.get $0 - end + (func $~lib/map/Map#constructor (; 59 ;) (type $FUNCSIG$i) (result i32) + (local $0 i32) + i32.const 24 + i32.const 23 + call $~lib/rt/tlsf/__alloc + call $~lib/rt/purerc/__retain + local.tee $0 + i32.const 0 + i32.store + local.get $0 + i32.const 0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=8 + local.get $0 + i32.const 0 + i32.store offset=12 + local.get $0 + i32.const 0 + i32.store offset=16 + local.get $0 + i32.const 0 + i32.store offset=20 + local.get $0 call $~lib/map/Map#clear local.get $0 ) - (func $~lib/util/hash/hash64 (; 81 ;) (type $FUNCSIG$ij) (param $0 i64) (result i32) + (func $~lib/util/hash/hash64 (; 60 ;) (type $FUNCSIG$ij) (param $0 i64) (result i32) (local $1 i32) - (local $2 i32) - (local $3 i32) local.get $0 i32.wrap_i64 - local.set $1 + local.tee $1 + i32.const 255 + i32.and + i32.const -2128831035 + i32.xor + i32.const 16777619 + i32.mul + local.get $1 + i32.const 8 + i32.shr_u + i32.const 255 + i32.and + i32.xor + i32.const 16777619 + i32.mul + local.get $1 + i32.const 16 + i32.shr_u + i32.const 255 + i32.and + i32.xor + i32.const 16777619 + i32.mul + local.get $1 + i32.const 24 + i32.shr_u + i32.xor + i32.const 16777619 + i32.mul local.get $0 i64.const 32 i64.shr_u i32.wrap_i64 - local.set $2 - i32.const -2128831035 - local.set $3 - local.get $3 - local.get $1 + local.tee $1 i32.const 255 i32.and i32.xor i32.const 16777619 i32.mul - local.set $3 - local.get $3 local.get $1 i32.const 8 i32.shr_u @@ -6994,8 +5355,6 @@ i32.xor i32.const 16777619 i32.mul - local.set $3 - local.get $3 local.get $1 i32.const 16 i32.shr_u @@ -7004,116 +5363,64 @@ i32.xor i32.const 16777619 i32.mul - local.set $3 - local.get $3 local.get $1 i32.const 24 i32.shr_u i32.xor i32.const 16777619 i32.mul - local.set $3 - local.get $3 - local.get $2 - i32.const 255 - i32.and - i32.xor - i32.const 16777619 - i32.mul - local.set $3 - local.get $3 - local.get $2 - i32.const 8 - i32.shr_u - i32.const 255 - i32.and - i32.xor - i32.const 16777619 - i32.mul - local.set $3 - local.get $3 - local.get $2 - i32.const 16 - i32.shr_u - i32.const 255 - i32.and - i32.xor - i32.const 16777619 - i32.mul - local.set $3 - local.get $3 - local.get $2 - i32.const 24 - i32.shr_u - i32.xor - i32.const 16777619 - i32.mul - local.set $3 - local.get $3 ) - (func $~lib/map/Map#find (; 82 ;) (type $FUNCSIG$iiji) (param $0 i32) (param $1 i64) (param $2 i32) (result i32) - (local $3 i32) + (func $~lib/map/Map#find (; 61 ;) (type $FUNCSIG$iiji) (param $0 i32) (param $1 i64) (param $2 i32) (result i32) local.get $0 i32.load - local.get $2 local.get $0 i32.load offset=4 + local.get $2 i32.and - i32.const 4 - i32.mul + i32.const 2 + i32.shl i32.add i32.load - local.set $3 - block $break|0 - loop $continue|0 - local.get $3 - if - local.get $3 - i32.load offset=12 - i32.const 1 - i32.and - i32.eqz - if (result i32) - local.get $3 - i64.load - local.get $1 - i64.eq - else - i32.const 0 - end - if - local.get $3 - return - end - local.get $3 - i32.load offset=12 - i32.const 1 - i32.const -1 - i32.xor - i32.and - local.set $3 - br $continue|0 + local.set $0 + loop $continue|0 + local.get $0 + if + local.get $0 + i32.load offset=12 + i32.const 1 + i32.and + if (result i32) + i32.const 0 + else + local.get $0 + i64.load + local.get $1 + i64.eq end + if + local.get $0 + return + end + local.get $0 + i32.load offset=12 + i32.const -2 + i32.and + local.set $0 + br $continue|0 end end i32.const 0 ) - (func $~lib/map/Map#has (; 83 ;) (type $FUNCSIG$iij) (param $0 i32) (param $1 i64) (result i32) - (local $2 i64) + (func $~lib/map/Map#has (; 62 ;) (type $FUNCSIG$iij) (param $0 i32) (param $1 i64) (result i32) local.get $0 local.get $1 - block $~lib/util/hash/HASH|inlined.0 (result i32) - local.get $1 - local.set $2 - local.get $2 - call $~lib/util/hash/hash64 - br $~lib/util/hash/HASH|inlined.0 - end + local.get $1 + call $~lib/util/hash/hash64 call $~lib/map/Map#find i32.const 0 i32.ne ) - (func $~lib/map/Map#rehash (; 84 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/map/Map#rehash (; 63 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -7121,118 +5428,85 @@ (local $6 i32) (local $7 i32) (local $8 i32) - (local $9 i32) - (local $10 i32) - (local $11 i64) - (local $12 i32) - (local $13 i32) local.get $1 i32.const 1 i32.add - local.set $2 - i32.const 0 - local.get $2 - i32.const 4 - i32.mul + local.tee $2 + i32.const 2 + i32.shl call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $3 + local.set $4 local.get $2 f64.convert_i32_s f64.const 2.6666666666666665 f64.mul i32.trunc_f64_s - local.set $4 - i32.const 0 - local.get $4 - block $~lib/map/ENTRY_SIZE|inlined.1 (result i32) - i32.const 16 - end - i32.mul + local.tee $6 + i32.const 4 + i32.shl call $~lib/arraybuffer/ArrayBuffer#constructor local.set $5 local.get $0 i32.load offset=8 - local.set $6 - local.get $6 + local.tee $3 local.get $0 i32.load offset=16 - block $~lib/map/ENTRY_SIZE|inlined.2 (result i32) - i32.const 16 - end - i32.mul + i32.const 4 + i32.shl i32.add local.set $7 local.get $5 - local.set $8 - block $break|0 - loop $continue|0 - local.get $6 - local.get $7 - i32.ne + local.set $2 + loop $continue|0 + local.get $3 + local.get $7 + i32.ne + if + local.get $3 + i32.load offset=12 + i32.const 1 + i32.and + i32.eqz if - local.get $6 - local.set $9 - local.get $9 - i32.load offset=12 - i32.const 1 + local.get $2 + local.get $3 + i64.load + i64.store + local.get $2 + local.get $3 + i32.load offset=8 + i32.store offset=8 + local.get $2 + local.get $3 + i64.load + call $~lib/util/hash/hash64 + local.get $1 i32.and - i32.eqz - if - local.get $8 - local.set $10 - local.get $10 - local.get $9 - i64.load - i64.store - local.get $10 - local.get $9 - i32.load offset=8 - i32.store offset=8 - block $~lib/util/hash/HASH|inlined.2 (result i32) - local.get $9 - i64.load - local.set $11 - local.get $11 - call $~lib/util/hash/hash64 - br $~lib/util/hash/HASH|inlined.2 - end - local.get $1 - i32.and - local.set $12 - local.get $3 - local.get $12 - i32.const 4 - i32.mul - i32.add - local.set $13 - local.get $10 - local.get $13 - i32.load - i32.store offset=12 - local.get $13 - local.get $8 - i32.store - local.get $8 - block $~lib/map/ENTRY_SIZE|inlined.3 (result i32) - i32.const 16 - end - i32.add - local.set $8 - end - local.get $6 - block $~lib/map/ENTRY_SIZE|inlined.4 (result i32) - i32.const 16 - end + i32.const 2 + i32.shl + local.get $4 i32.add - local.set $6 - br $continue|0 + local.tee $8 + i32.load + i32.store offset=12 + local.get $8 + local.get $2 + i32.store + local.get $2 + i32.const 16 + i32.add + local.set $2 end + local.get $3 + i32.const 16 + i32.add + local.set $3 + br $continue|0 end end local.get $0 - local.tee $9 - local.get $3 - local.get $9 + local.get $4 + local.get $0 i32.load call $~lib/rt/purerc/__retainRelease i32.store @@ -7240,46 +5514,36 @@ local.get $1 i32.store offset=4 local.get $0 - local.tee $9 local.get $5 - local.get $9 + local.get $0 i32.load offset=8 call $~lib/rt/purerc/__retainRelease i32.store offset=8 local.get $0 - local.get $4 + local.get $6 i32.store offset=12 local.get $0 local.get $0 i32.load offset=20 i32.store offset=16 - local.get $3 + local.get $4 call $~lib/rt/purerc/__release local.get $5 call $~lib/rt/purerc/__release ) - (func $~lib/map/Map#set (; 85 ;) (type $FUNCSIG$viji) (param $0 i32) (param $1 i64) (param $2 i32) - (local $3 i64) + (func $~lib/map/Map#set (; 64 ;) (type $FUNCSIG$viji) (param $0 i32) (param $1 i64) (param $2 i32) + (local $3 i32) (local $4 i32) (local $5 i32) - (local $6 i32) - (local $7 i32) - block $~lib/util/hash/HASH|inlined.1 (result i32) - local.get $1 - local.set $3 - local.get $3 - call $~lib/util/hash/hash64 - br $~lib/util/hash/HASH|inlined.1 - end - local.set $4 local.get $0 local.get $1 - local.get $4 + local.get $1 + call $~lib/util/hash/hash64 + local.tee $5 call $~lib/map/Map#find - local.set $5 - local.get $5 + local.tee $3 if - local.get $5 + local.get $3 local.get $2 i32.store offset=8 else @@ -7315,28 +5579,23 @@ local.get $0 i32.load offset=8 call $~lib/rt/purerc/__retain - local.set $6 - local.get $6 - block (result i32) - local.get $0 - local.get $0 - i32.load offset=16 - local.tee $7 - i32.const 1 - i32.add - i32.store offset=16 - local.get $7 - end - block $~lib/map/ENTRY_SIZE|inlined.5 (result i32) - i32.const 16 - end - i32.mul + local.set $4 + local.get $0 + local.get $0 + i32.load offset=16 + local.tee $3 + i32.const 1 i32.add - local.set $5 - local.get $5 + i32.store offset=16 + local.get $3 + i32.const 4 + i32.shl + local.get $4 + i32.add + local.tee $3 local.get $1 i64.store - local.get $5 + local.get $3 local.get $2 i32.store offset=8 local.get $0 @@ -7345,78 +5604,55 @@ i32.const 1 i32.add i32.store offset=20 + local.get $3 local.get $0 i32.load - local.get $4 local.get $0 i32.load offset=4 - i32.and - i32.const 4 - i32.mul - i32.add - local.set $7 local.get $5 - local.get $7 + i32.and + i32.const 2 + i32.shl + i32.add + local.tee $0 i32.load i32.store offset=12 - local.get $7 - local.get $5 + local.get $0 + local.get $3 i32.store - local.get $6 + local.get $4 call $~lib/rt/purerc/__release end ) - (func $~lib/map/Map#get (; 86 ;) (type $FUNCSIG$iij) (param $0 i32) (param $1 i64) (result i32) - (local $2 i64) - (local $3 i32) + (func $~lib/map/Map#get (; 65 ;) (type $FUNCSIG$iij) (param $0 i32) (param $1 i64) (result i32) local.get $0 local.get $1 - block $~lib/util/hash/HASH|inlined.3 (result i32) - local.get $1 - local.set $2 - local.get $2 - call $~lib/util/hash/hash64 - br $~lib/util/hash/HASH|inlined.3 - end + local.get $1 + call $~lib/util/hash/hash64 call $~lib/map/Map#find - local.set $3 - local.get $3 + local.tee $0 if (result i32) - local.get $3 + local.get $0 i32.load offset=8 else unreachable end ) - (func $~lib/map/Map#get:size (; 87 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - local.get $0 - i32.load offset=20 - ) - (func $~lib/map/Map#delete (; 88 ;) (type $FUNCSIG$iij) (param $0 i32) (param $1 i64) (result i32) - (local $2 i64) + (func $~lib/map/Map#delete (; 66 ;) (type $FUNCSIG$vij) (param $0 i32) (param $1 i64) + (local $2 i32) (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) local.get $0 local.get $1 - block $~lib/util/hash/HASH|inlined.4 (result i32) - local.get $1 - local.set $2 - local.get $2 - call $~lib/util/hash/hash64 - br $~lib/util/hash/HASH|inlined.4 - end + local.get $1 + call $~lib/util/hash/hash64 call $~lib/map/Map#find - local.set $3 - local.get $3 + local.tee $2 i32.eqz if - i32.const 0 return end - local.get $3 - local.get $3 + local.get $2 + local.get $2 i32.load offset=12 i32.const 1 i32.or @@ -7431,17 +5667,15 @@ i32.load offset=4 i32.const 1 i32.shr_u - local.set $4 - local.get $4 + local.tee $3 i32.const 1 i32.add i32.const 4 - local.tee $5 local.get $0 i32.load offset=20 - local.tee $6 - local.get $5 - local.get $6 + local.tee $2 + i32.const 4 + local.get $2 i32.gt_u select i32.ge_u @@ -7460,30 +5694,41 @@ end if local.get $0 - local.get $4 + local.get $3 call $~lib/map/Map#rehash end - i32.const 1 ) - (func $std/map/testNumeric (; 89 ;) (type $FUNCSIG$v) - (local $0 i32) - (local $1 i64) - i32.const 0 + (func $std/map/testNumeric (; 67 ;) (type $FUNCSIG$v) + (local $0 i64) + (local $1 i32) call $~lib/map/Map#constructor - local.set $0 - block $break|0 - i64.const 0 - local.set $1 - loop $repeat|0 + local.set $1 + loop $repeat|0 + local.get $0 + i64.const 100 + i64.lt_s + if + local.get $1 + local.get $0 + call $~lib/map/Map#has + if + i32.const 0 + i32.const 232 + i32.const 6 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.get $0 + local.get $0 + i32.wrap_i64 + i32.const 10 + i32.add + call $~lib/map/Map#set local.get $1 - i64.const 100 - i64.lt_s - i32.eqz - br_if $break|0 local.get $0 - local.get $1 call $~lib/map/Map#has - i32.eqz i32.eqz if i32.const 0 @@ -7493,93 +5738,88 @@ call $~lib/builtins/abort unreachable end + local.get $1 local.get $0 - local.get $1 - i32.const 10 - local.get $1 - i32.wrap_i64 - i32.add - call $~lib/map/Map#set - local.get $0 - local.get $1 - call $~lib/map/Map#has - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 10 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 call $~lib/map/Map#get - i32.const 10 - local.get $1 + local.get $0 i32.wrap_i64 + i32.const 10 i32.add - i32.eq - i32.eqz + i32.ne if i32.const 0 i32.const 232 - i32.const 11 + i32.const 9 i32.const 4 call $~lib/builtins/abort unreachable + else + local.get $0 + i64.const 1 + i64.add + local.set $0 + br $repeat|0 end - local.get $1 - i64.const 1 - i64.add - local.set $1 - br $repeat|0 unreachable end - unreachable end - local.get $0 - call $~lib/map/Map#get:size + local.get $1 + i32.load offset=20 i32.const 100 - i32.eq - i32.eqz + i32.ne if i32.const 0 i32.const 232 - i32.const 13 + i32.const 11 i32.const 2 call $~lib/builtins/abort unreachable end - block $break|1 - i64.const 0 - local.set $1 - loop $repeat|1 + i64.const 0 + local.set $0 + loop $repeat|1 + local.get $0 + i64.const 100 + i64.lt_s + if local.get $1 - i64.const 100 - i64.lt_s - i32.eqz - br_if $break|1 local.get $0 - local.get $1 call $~lib/map/Map#has i32.eqz if i32.const 0 i32.const 232 - i32.const 17 + i32.const 15 i32.const 4 call $~lib/builtins/abort unreachable end + local.get $1 local.get $0 - local.get $1 call $~lib/map/Map#get - i32.const 10 - local.get $1 + local.get $0 i32.wrap_i64 + i32.const 10 i32.add - i32.eq + i32.ne + if + i32.const 0 + i32.const 232 + i32.const 16 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.get $0 + local.get $0 + i32.wrap_i64 + i32.const 20 + i32.add + call $~lib/map/Map#set + local.get $1 + local.get $0 + call $~lib/map/Map#has i32.eqz if i32.const 0 @@ -7589,94 +5829,84 @@ call $~lib/builtins/abort unreachable end + local.get $1 local.get $0 - local.get $1 - i32.const 20 - local.get $1 - i32.wrap_i64 - i32.add - call $~lib/map/Map#set - local.get $0 - local.get $1 - call $~lib/map/Map#has - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 20 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 call $~lib/map/Map#get - i32.const 20 - local.get $1 + local.get $0 i32.wrap_i64 + i32.const 20 i32.add - i32.eq - i32.eqz + i32.ne if i32.const 0 i32.const 232 - i32.const 21 + i32.const 19 i32.const 4 call $~lib/builtins/abort unreachable + else + local.get $0 + i64.const 1 + i64.add + local.set $0 + br $repeat|1 end - local.get $1 - i64.const 1 - i64.add - local.set $1 - br $repeat|1 unreachable end - unreachable end - local.get $0 - call $~lib/map/Map#get:size + local.get $1 + i32.load offset=20 i32.const 100 - i32.eq - i32.eqz + i32.ne if i32.const 0 i32.const 232 - i32.const 23 + i32.const 21 i32.const 2 call $~lib/builtins/abort unreachable end - block $break|2 - i64.const 0 - local.set $1 - loop $repeat|2 + i64.const 0 + local.set $0 + loop $repeat|2 + local.get $0 + i64.const 50 + i64.lt_s + if local.get $1 - i64.const 50 - i64.lt_s - i32.eqz - br_if $break|2 local.get $0 - local.get $1 call $~lib/map/Map#has i32.eqz if i32.const 0 i32.const 232 - i32.const 27 + i32.const 25 i32.const 4 call $~lib/builtins/abort unreachable end + local.get $1 local.get $0 - local.get $1 call $~lib/map/Map#get - i32.const 20 - local.get $1 + local.get $0 i32.wrap_i64 + i32.const 20 i32.add - i32.eq - i32.eqz + i32.ne + if + i32.const 0 + i32.const 232 + i32.const 26 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.get $0 + call $~lib/map/Map#delete + local.get $1 + local.get $0 + call $~lib/map/Map#has if i32.const 0 i32.const 232 @@ -7684,60 +5914,57 @@ i32.const 4 call $~lib/builtins/abort unreachable + else + local.get $0 + i64.const 1 + i64.add + local.set $0 + br $repeat|2 end - local.get $0 + unreachable + end + end + local.get $1 + i32.load offset=20 + i32.const 50 + i32.ne + if + i32.const 0 + i32.const 232 + i32.const 30 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + i64.const 0 + local.set $0 + loop $repeat|3 + local.get $0 + i64.const 50 + i64.lt_s + if local.get $1 - call $~lib/map/Map#delete - drop local.get $0 - local.get $1 call $~lib/map/Map#has - i32.eqz - i32.eqz if i32.const 0 i32.const 232 - i32.const 30 + i32.const 34 i32.const 4 call $~lib/builtins/abort unreachable end local.get $1 - i64.const 1 - i64.add - local.set $1 - br $repeat|2 - unreachable - end - unreachable - end - local.get $0 - call $~lib/map/Map#get:size - i32.const 50 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 32 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - block $break|3 - i64.const 0 - local.set $1 - loop $repeat|3 - local.get $1 - i64.const 50 - i64.lt_s - i32.eqz - br_if $break|3 local.get $0 + local.get $0 + i32.wrap_i64 + i32.const 10 + i32.add + call $~lib/map/Map#set local.get $1 + local.get $0 call $~lib/map/Map#has i32.eqz - i32.eqz if i32.const 0 i32.const 232 @@ -7746,17 +5973,12 @@ call $~lib/builtins/abort unreachable end + local.get $1 local.get $0 + call $~lib/map/Map#delete local.get $1 - i32.const 10 - local.get $1 - i32.wrap_i64 - i32.add - call $~lib/map/Map#set local.get $0 - local.get $1 call $~lib/map/Map#has - i32.eqz if i32.const 0 i32.const 232 @@ -7764,570 +5986,102 @@ i32.const 4 call $~lib/builtins/abort unreachable + else + local.get $0 + i64.const 1 + i64.add + local.set $0 + br $repeat|3 end - local.get $0 - local.get $1 - call $~lib/map/Map#delete - drop - local.get $0 - local.get $1 - call $~lib/map/Map#has - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 40 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i64.const 1 - i64.add - local.set $1 - br $repeat|3 unreachable end - unreachable end - local.get $0 - call $~lib/map/Map#get:size + local.get $1 + i32.load offset=20 i32.const 50 - i32.eq - i32.eqz + i32.ne if i32.const 0 i32.const 232 - i32.const 42 + i32.const 40 i32.const 2 call $~lib/builtins/abort unreachable end + local.get $1 + call $~lib/map/Map#clear + local.get $1 + i32.load offset=20 + if + i32.const 0 + i32.const 232 + i32.const 44 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $1 + call $~lib/rt/purerc/__release + ) + (func $~lib/map/Map#constructor (; 68 ;) (type $FUNCSIG$i) (result i32) + (local $0 i32) + i32.const 24 + i32.const 24 + call $~lib/rt/tlsf/__alloc + call $~lib/rt/purerc/__retain + local.tee $0 + i32.const 0 + i32.store + local.get $0 + i32.const 0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=8 + local.get $0 + i32.const 0 + i32.store offset=12 + local.get $0 + i32.const 0 + i32.store offset=16 + local.get $0 + i32.const 0 + i32.store offset=20 local.get $0 call $~lib/map/Map#clear local.get $0 - call $~lib/map/Map#get:size - i32.const 0 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 46 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $0 - call $~lib/rt/purerc/__release ) - (func $~lib/map/Map#clear (; 90 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $std/map/testNumeric (; 69 ;) (type $FUNCSIG$v) + (local $0 i64) (local $1 i32) - local.get $0 - local.tee $1 - block (result i32) - local.get $1 - i32.load - call $~lib/rt/purerc/__release - i32.const 0 - i32.const 16 - call $~lib/arraybuffer/ArrayBuffer#constructor - end - i32.store - local.get $0 - i32.const 4 - i32.const 1 - i32.sub - i32.store offset=4 - local.get $0 - local.tee $1 - block (result i32) - local.get $1 - i32.load offset=8 - call $~lib/rt/purerc/__release - i32.const 0 - i32.const 64 - call $~lib/arraybuffer/ArrayBuffer#constructor - end - i32.store offset=8 - local.get $0 - i32.const 4 - i32.store offset=12 - local.get $0 - i32.const 0 - i32.store offset=16 - local.get $0 - i32.const 0 - i32.store offset=20 - ) - (func $~lib/map/Map#constructor (; 91 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - block (result i32) - local.get $0 - i32.eqz - if - i32.const 24 - i32.const 24 - call $~lib/rt/tlsf/__alloc - call $~lib/rt/purerc/__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 - i32.const 0 - i32.store offset=16 - local.get $0 - i32.const 0 - i32.store offset=20 - local.get $0 - end - call $~lib/map/Map#clear - local.get $0 - ) - (func $~lib/map/Map#find (; 92 ;) (type $FUNCSIG$iiji) (param $0 i32) (param $1 i64) (param $2 i32) (result i32) - (local $3 i32) - local.get $0 - i32.load - local.get $2 - local.get $0 - i32.load offset=4 - i32.and - i32.const 4 - i32.mul - i32.add - i32.load - local.set $3 - block $break|0 - loop $continue|0 - local.get $3 - if - local.get $3 - i32.load offset=12 - i32.const 1 - i32.and - i32.eqz - if (result i32) - local.get $3 - i64.load - local.get $1 - i64.eq - else - i32.const 0 - end - if - local.get $3 - return - end - local.get $3 - i32.load offset=12 - i32.const 1 - i32.const -1 - i32.xor - i32.and - local.set $3 - br $continue|0 - end - end - end - i32.const 0 - ) - (func $~lib/map/Map#has (; 93 ;) (type $FUNCSIG$iij) (param $0 i32) (param $1 i64) (result i32) - (local $2 i64) - local.get $0 - local.get $1 - block $~lib/util/hash/HASH|inlined.0 (result i32) - local.get $1 - local.set $2 - local.get $2 - call $~lib/util/hash/hash64 - br $~lib/util/hash/HASH|inlined.0 - end - call $~lib/map/Map#find - i32.const 0 - i32.ne - ) - (func $~lib/map/Map#rehash (; 94 ;) (type $FUNCSIG$vii) (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 $9 i32) - (local $10 i32) - (local $11 i64) - (local $12 i32) - (local $13 i32) - local.get $1 - i32.const 1 - i32.add - local.set $2 - i32.const 0 - local.get $2 - i32.const 4 - i32.mul - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $3 - local.get $2 - f64.convert_i32_s - f64.const 2.6666666666666665 - f64.mul - i32.trunc_f64_s - local.set $4 - i32.const 0 - local.get $4 - block $~lib/map/ENTRY_SIZE|inlined.1 (result i32) - i32.const 16 - end - i32.mul - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $5 - local.get $0 - i32.load offset=8 - local.set $6 - local.get $6 - local.get $0 - i32.load offset=16 - block $~lib/map/ENTRY_SIZE|inlined.2 (result i32) - i32.const 16 - end - i32.mul - i32.add - local.set $7 - local.get $5 - local.set $8 - block $break|0 - loop $continue|0 - local.get $6 - local.get $7 - i32.ne - if - local.get $6 - local.set $9 - local.get $9 - i32.load offset=12 - i32.const 1 - i32.and - i32.eqz - if - local.get $8 - local.set $10 - local.get $10 - local.get $9 - i64.load - i64.store - local.get $10 - local.get $9 - i32.load offset=8 - i32.store offset=8 - block $~lib/util/hash/HASH|inlined.2 (result i32) - local.get $9 - i64.load - local.set $11 - local.get $11 - call $~lib/util/hash/hash64 - br $~lib/util/hash/HASH|inlined.2 - end - local.get $1 - i32.and - local.set $12 - local.get $3 - local.get $12 - i32.const 4 - i32.mul - i32.add - local.set $13 - local.get $10 - local.get $13 - i32.load - i32.store offset=12 - local.get $13 - local.get $8 - i32.store - local.get $8 - block $~lib/map/ENTRY_SIZE|inlined.3 (result i32) - i32.const 16 - end - i32.add - local.set $8 - end - local.get $6 - block $~lib/map/ENTRY_SIZE|inlined.4 (result i32) - i32.const 16 - end - i32.add - local.set $6 - br $continue|0 - end - end - end - local.get $0 - local.tee $9 - local.get $3 - local.get $9 - i32.load - call $~lib/rt/purerc/__retainRelease - i32.store - local.get $0 - local.get $1 - i32.store offset=4 - local.get $0 - local.tee $9 - local.get $5 - local.get $9 - i32.load offset=8 - call $~lib/rt/purerc/__retainRelease - i32.store offset=8 - local.get $0 - local.get $4 - i32.store offset=12 - local.get $0 - local.get $0 - i32.load offset=20 - i32.store offset=16 - local.get $3 - call $~lib/rt/purerc/__release - local.get $5 - call $~lib/rt/purerc/__release - ) - (func $~lib/map/Map#set (; 95 ;) (type $FUNCSIG$viji) (param $0 i32) (param $1 i64) (param $2 i32) - (local $3 i64) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - block $~lib/util/hash/HASH|inlined.1 (result i32) - local.get $1 - local.set $3 - local.get $3 - call $~lib/util/hash/hash64 - br $~lib/util/hash/HASH|inlined.1 - end - local.set $4 - local.get $0 - local.get $1 - local.get $4 - call $~lib/map/Map#find - local.set $5 - local.get $5 - if - local.get $5 - local.get $2 - i32.store offset=8 - else - local.get $0 - i32.load offset=16 - local.get $0 - i32.load offset=12 - i32.eq - if - local.get $0 - local.get $0 - i32.load offset=20 - local.get $0 - i32.load offset=12 - f64.convert_i32_s - f64.const 0.75 - f64.mul - i32.trunc_f64_s - i32.lt_s - if (result i32) - local.get $0 - i32.load offset=4 - else - local.get $0 - i32.load offset=4 - i32.const 1 - i32.shl - i32.const 1 - i32.or - end - call $~lib/map/Map#rehash - end - local.get $0 - i32.load offset=8 - call $~lib/rt/purerc/__retain - local.set $6 - local.get $6 - block (result i32) - local.get $0 - local.get $0 - i32.load offset=16 - local.tee $7 - i32.const 1 - i32.add - i32.store offset=16 - local.get $7 - end - block $~lib/map/ENTRY_SIZE|inlined.5 (result i32) - i32.const 16 - end - i32.mul - i32.add - local.set $5 - local.get $5 - local.get $1 - i64.store - local.get $5 - local.get $2 - i32.store offset=8 - local.get $0 - local.get $0 - i32.load offset=20 - i32.const 1 - i32.add - i32.store offset=20 - local.get $0 - i32.load - local.get $4 - local.get $0 - i32.load offset=4 - i32.and - i32.const 4 - i32.mul - i32.add - local.set $7 - local.get $5 - local.get $7 - i32.load - i32.store offset=12 - local.get $7 - local.get $5 - i32.store - local.get $6 - call $~lib/rt/purerc/__release - end - ) - (func $~lib/map/Map#get (; 96 ;) (type $FUNCSIG$iij) (param $0 i32) (param $1 i64) (result i32) - (local $2 i64) - (local $3 i32) - local.get $0 - local.get $1 - block $~lib/util/hash/HASH|inlined.3 (result i32) - local.get $1 - local.set $2 - local.get $2 - call $~lib/util/hash/hash64 - br $~lib/util/hash/HASH|inlined.3 - end - call $~lib/map/Map#find - local.set $3 - local.get $3 - if (result i32) - local.get $3 - i32.load offset=8 - else - unreachable - end - ) - (func $~lib/map/Map#get:size (; 97 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - local.get $0 - i32.load offset=20 - ) - (func $~lib/map/Map#delete (; 98 ;) (type $FUNCSIG$iij) (param $0 i32) (param $1 i64) (result i32) - (local $2 i64) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - local.get $0 - local.get $1 - block $~lib/util/hash/HASH|inlined.4 (result i32) - local.get $1 - local.set $2 - local.get $2 - call $~lib/util/hash/hash64 - br $~lib/util/hash/HASH|inlined.4 - end - call $~lib/map/Map#find - local.set $3 - local.get $3 - i32.eqz - if - i32.const 0 - return - end - local.get $3 - local.get $3 - i32.load offset=12 - i32.const 1 - i32.or - i32.store offset=12 - 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.set $4 - local.get $4 - i32.const 1 - i32.add - i32.const 4 - local.tee $5 - local.get $0 - i32.load offset=20 - local.tee $6 - local.get $5 - local.get $6 - i32.gt_u - select - i32.ge_u - if (result i32) - local.get $0 - i32.load offset=20 - local.get $0 - i32.load offset=12 - f64.convert_i32_s - f64.const 0.75 - f64.mul - i32.trunc_f64_s - i32.lt_s - else - i32.const 0 - end - if - local.get $0 - local.get $4 - call $~lib/map/Map#rehash - end - i32.const 1 - ) - (func $std/map/testNumeric (; 99 ;) (type $FUNCSIG$v) - (local $0 i32) - (local $1 i64) - i32.const 0 call $~lib/map/Map#constructor - local.set $0 - block $break|0 - i64.const 0 - local.set $1 - loop $repeat|0 + local.set $1 + loop $repeat|0 + local.get $0 + i64.const 100 + i64.lt_u + if local.get $1 - i64.const 100 - i64.lt_u - i32.eqz - br_if $break|0 local.get $0 + call $~lib/map/Map#has + if + i32.const 0 + i32.const 232 + i32.const 6 + i32.const 4 + call $~lib/builtins/abort + unreachable + end local.get $1 - call $~lib/map/Map#has - i32.eqz + local.get $0 + local.get $0 + i32.wrap_i64 + i32.const 10 + i32.add + call $~lib/map/Map#set + local.get $1 + local.get $0 + call $~lib/map/Map#has i32.eqz if i32.const 0 @@ -8337,93 +6091,88 @@ call $~lib/builtins/abort unreachable end + local.get $1 + local.get $0 + call $~lib/map/Map#get local.get $0 - local.get $1 - i32.const 10 - local.get $1 i32.wrap_i64 + i32.const 10 i32.add - call $~lib/map/Map#set - local.get $0 - local.get $1 - call $~lib/map/Map#has - i32.eqz + i32.ne if i32.const 0 i32.const 232 - i32.const 10 + i32.const 9 i32.const 4 call $~lib/builtins/abort unreachable + else + local.get $0 + i64.const 1 + i64.add + local.set $0 + br $repeat|0 end - local.get $0 - local.get $1 - call $~lib/map/Map#get - i32.const 10 - local.get $1 - i32.wrap_i64 - i32.add - i32.eq - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 11 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i64.const 1 - i64.add - local.set $1 - br $repeat|0 unreachable end - unreachable end - local.get $0 - call $~lib/map/Map#get:size + local.get $1 + i32.load offset=20 i32.const 100 - i32.eq - i32.eqz + i32.ne if i32.const 0 i32.const 232 - i32.const 13 + i32.const 11 i32.const 2 call $~lib/builtins/abort unreachable end - block $break|1 - i64.const 0 - local.set $1 - loop $repeat|1 + i64.const 0 + local.set $0 + loop $repeat|1 + local.get $0 + i64.const 100 + i64.lt_u + if local.get $1 - i64.const 100 - i64.lt_u - i32.eqz - br_if $break|1 local.get $0 - local.get $1 - call $~lib/map/Map#has + call $~lib/map/Map#has i32.eqz if i32.const 0 i32.const 232 - i32.const 17 + i32.const 15 i32.const 4 call $~lib/builtins/abort unreachable end + local.get $1 + local.get $0 + call $~lib/map/Map#get local.get $0 - local.get $1 - call $~lib/map/Map#get - i32.const 10 - local.get $1 i32.wrap_i64 + i32.const 10 i32.add - i32.eq + i32.ne + if + i32.const 0 + i32.const 232 + i32.const 16 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.get $0 + local.get $0 + i32.wrap_i64 + i32.const 20 + i32.add + call $~lib/map/Map#set + local.get $1 + local.get $0 + call $~lib/map/Map#has i32.eqz if i32.const 0 @@ -8433,94 +6182,84 @@ call $~lib/builtins/abort unreachable end + local.get $1 + local.get $0 + call $~lib/map/Map#get local.get $0 - local.get $1 - i32.const 20 - local.get $1 i32.wrap_i64 + i32.const 20 i32.add - call $~lib/map/Map#set - local.get $0 - local.get $1 - call $~lib/map/Map#has - i32.eqz + i32.ne if i32.const 0 i32.const 232 - i32.const 20 + i32.const 19 i32.const 4 call $~lib/builtins/abort unreachable + else + local.get $0 + i64.const 1 + i64.add + local.set $0 + br $repeat|1 end - local.get $0 - local.get $1 - call $~lib/map/Map#get - i32.const 20 - local.get $1 - i32.wrap_i64 - i32.add - i32.eq - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 21 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i64.const 1 - i64.add - local.set $1 - br $repeat|1 unreachable end - unreachable end - local.get $0 - call $~lib/map/Map#get:size + local.get $1 + i32.load offset=20 i32.const 100 - i32.eq - i32.eqz + i32.ne if i32.const 0 i32.const 232 - i32.const 23 + i32.const 21 i32.const 2 call $~lib/builtins/abort unreachable end - block $break|2 - i64.const 0 - local.set $1 - loop $repeat|2 + i64.const 0 + local.set $0 + loop $repeat|2 + local.get $0 + i64.const 50 + i64.lt_u + if local.get $1 - i64.const 50 - i64.lt_u - i32.eqz - br_if $break|2 local.get $0 - local.get $1 - call $~lib/map/Map#has + call $~lib/map/Map#has i32.eqz if i32.const 0 i32.const 232 - i32.const 27 + i32.const 25 i32.const 4 call $~lib/builtins/abort unreachable end + local.get $1 + local.get $0 + call $~lib/map/Map#get local.get $0 - local.get $1 - call $~lib/map/Map#get - i32.const 20 - local.get $1 i32.wrap_i64 + i32.const 20 i32.add - i32.eq - i32.eqz + i32.ne + if + i32.const 0 + i32.const 232 + i32.const 26 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.get $0 + call $~lib/map/Map#delete + local.get $1 + local.get $0 + call $~lib/map/Map#has if i32.const 0 i32.const 232 @@ -8528,59 +6267,56 @@ i32.const 4 call $~lib/builtins/abort unreachable + else + local.get $0 + i64.const 1 + i64.add + local.set $0 + br $repeat|2 end - local.get $0 + unreachable + end + end + local.get $1 + i32.load offset=20 + i32.const 50 + i32.ne + if + i32.const 0 + i32.const 232 + i32.const 30 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + i64.const 0 + local.set $0 + loop $repeat|3 + local.get $0 + i64.const 50 + i64.lt_u + if local.get $1 - call $~lib/map/Map#delete - drop local.get $0 - local.get $1 - call $~lib/map/Map#has - i32.eqz - i32.eqz + call $~lib/map/Map#has if i32.const 0 i32.const 232 - i32.const 30 + i32.const 34 i32.const 4 call $~lib/builtins/abort unreachable end local.get $1 - i64.const 1 - i64.add - local.set $1 - br $repeat|2 - unreachable - end - unreachable - end - local.get $0 - call $~lib/map/Map#get:size - i32.const 50 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 32 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - block $break|3 - i64.const 0 - local.set $1 - loop $repeat|3 - local.get $1 - i64.const 50 - i64.lt_u - i32.eqz - br_if $break|3 local.get $0 + local.get $0 + i32.wrap_i64 + i32.const 10 + i32.add + call $~lib/map/Map#set local.get $1 - call $~lib/map/Map#has - i32.eqz + local.get $0 + call $~lib/map/Map#has i32.eqz if i32.const 0 @@ -8590,17 +6326,12 @@ call $~lib/builtins/abort unreachable end + local.get $1 local.get $0 + call $~lib/map/Map#delete local.get $1 - i32.const 10 - local.get $1 - i32.wrap_i64 - i32.add - call $~lib/map/Map#set local.get $0 - local.get $1 - call $~lib/map/Map#has - i32.eqz + call $~lib/map/Map#has if i32.const 0 i32.const 232 @@ -8608,95 +6339,60 @@ i32.const 4 call $~lib/builtins/abort unreachable + else + local.get $0 + i64.const 1 + i64.add + local.set $0 + br $repeat|3 end - local.get $0 - local.get $1 - call $~lib/map/Map#delete - drop - local.get $0 - local.get $1 - call $~lib/map/Map#has - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 40 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i64.const 1 - i64.add - local.set $1 - br $repeat|3 unreachable end - unreachable end - local.get $0 - call $~lib/map/Map#get:size + local.get $1 + i32.load offset=20 i32.const 50 - i32.eq - i32.eqz + i32.ne if i32.const 0 i32.const 232 - i32.const 42 + i32.const 40 i32.const 2 call $~lib/builtins/abort unreachable end - local.get $0 - call $~lib/map/Map#clear - local.get $0 - call $~lib/map/Map#get:size - i32.const 0 - i32.eq - i32.eqz + local.get $1 + call $~lib/map/Map#clear + local.get $1 + i32.load offset=20 if i32.const 0 i32.const 232 - i32.const 46 + i32.const 44 i32.const 2 call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 call $~lib/rt/purerc/__release ) - (func $~lib/map/Map#clear (; 100 ;) (type $FUNCSIG$vi) (param $0 i32) - (local $1 i32) - local.get $0 - local.tee $1 - block (result i32) - local.get $1 - i32.load - call $~lib/rt/purerc/__release - i32.const 0 - i32.const 16 - call $~lib/arraybuffer/ArrayBuffer#constructor - end + (func $~lib/map/Map#constructor (; 70 ;) (type $FUNCSIG$i) (result i32) + (local $0 i32) + i32.const 24 + i32.const 25 + call $~lib/rt/tlsf/__alloc + call $~lib/rt/purerc/__retain + local.tee $0 + i32.const 0 i32.store local.get $0 - i32.const 4 - i32.const 1 - i32.sub + i32.const 0 i32.store offset=4 local.get $0 - local.tee $1 - block (result i32) - local.get $1 - i32.load offset=8 - call $~lib/rt/purerc/__release - i32.const 0 - i32.const 48 - call $~lib/arraybuffer/ArrayBuffer#constructor - end + i32.const 0 i32.store offset=8 local.get $0 - i32.const 4 + i32.const 0 i32.store offset=12 local.get $0 i32.const 0 @@ -8704,105 +6400,62 @@ local.get $0 i32.const 0 i32.store offset=20 - ) - (func $~lib/map/Map#constructor (; 101 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - block (result i32) - local.get $0 - i32.eqz - if - i32.const 24 - i32.const 25 - call $~lib/rt/tlsf/__alloc - call $~lib/rt/purerc/__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 - i32.const 0 - i32.store offset=16 - local.get $0 - i32.const 0 - i32.store offset=20 - local.get $0 - end - call $~lib/map/Map#clear + local.get $0 + call $~lib/map/Map#clear local.get $0 ) - (func $~lib/map/Map#find (; 102 ;) (type $FUNCSIG$iifi) (param $0 i32) (param $1 f32) (param $2 i32) (result i32) - (local $3 i32) + (func $~lib/map/Map#find (; 71 ;) (type $FUNCSIG$iifi) (param $0 i32) (param $1 f32) (param $2 i32) (result i32) local.get $0 i32.load - local.get $2 local.get $0 i32.load offset=4 + local.get $2 i32.and - i32.const 4 - i32.mul + i32.const 2 + i32.shl i32.add i32.load - local.set $3 - block $break|0 - loop $continue|0 - local.get $3 - if - local.get $3 - i32.load offset=8 - i32.const 1 - i32.and - i32.eqz - if (result i32) - local.get $3 - f32.load - local.get $1 - f32.eq - else - i32.const 0 - end - if - local.get $3 - return - end - local.get $3 - i32.load offset=8 - i32.const 1 - i32.const -1 - i32.xor - i32.and - local.set $3 - br $continue|0 + local.set $0 + loop $continue|0 + local.get $0 + if + local.get $0 + i32.load offset=8 + i32.const 1 + i32.and + if (result i32) + i32.const 0 + else + local.get $0 + f32.load + local.get $1 + f32.eq end + if + local.get $0 + return + end + local.get $0 + i32.load offset=8 + i32.const -2 + i32.and + local.set $0 + br $continue|0 end end i32.const 0 ) - (func $~lib/map/Map#has (; 103 ;) (type $FUNCSIG$iif) (param $0 i32) (param $1 f32) (result i32) - (local $2 f32) + (func $~lib/map/Map#has (; 72 ;) (type $FUNCSIG$iif) (param $0 i32) (param $1 f32) (result i32) local.get $0 local.get $1 - block $~lib/util/hash/HASH|inlined.0 (result i32) - local.get $1 - local.set $2 - local.get $2 - i32.reinterpret_f32 - call $~lib/util/hash/hash32 - br $~lib/util/hash/HASH|inlined.0 - end + local.get $1 + i32.reinterpret_f32 + call $~lib/util/hash/hash32 call $~lib/map/Map#find i32.const 0 i32.ne ) - (func $~lib/map/Map#rehash (; 104 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/map/Map#rehash (; 73 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -8810,119 +6463,86 @@ (local $6 i32) (local $7 i32) (local $8 i32) - (local $9 i32) - (local $10 i32) - (local $11 f32) - (local $12 i32) - (local $13 i32) local.get $1 i32.const 1 i32.add - local.set $2 - i32.const 0 - local.get $2 - i32.const 4 - i32.mul + local.tee $2 + i32.const 2 + i32.shl call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $3 + local.set $4 local.get $2 f64.convert_i32_s f64.const 2.6666666666666665 f64.mul i32.trunc_f64_s - local.set $4 - i32.const 0 - local.get $4 - block $~lib/map/ENTRY_SIZE|inlined.1 (result i32) - i32.const 12 - end + local.tee $6 + i32.const 12 i32.mul call $~lib/arraybuffer/ArrayBuffer#constructor local.set $5 local.get $0 i32.load offset=8 - local.set $6 - local.get $6 + local.tee $3 local.get $0 i32.load offset=16 - block $~lib/map/ENTRY_SIZE|inlined.2 (result i32) - i32.const 12 - end + i32.const 12 i32.mul i32.add local.set $7 local.get $5 - local.set $8 - block $break|0 - loop $continue|0 - local.get $6 - local.get $7 - i32.ne + local.set $2 + loop $continue|0 + local.get $3 + local.get $7 + i32.ne + if + local.get $3 + i32.load offset=8 + i32.const 1 + i32.and + i32.eqz if - local.get $6 - local.set $9 - local.get $9 - i32.load offset=8 - i32.const 1 + local.get $2 + local.get $3 + f32.load + f32.store + local.get $2 + local.get $3 + i32.load offset=4 + i32.store offset=4 + local.get $2 + local.get $3 + f32.load + i32.reinterpret_f32 + call $~lib/util/hash/hash32 + local.get $1 i32.and - i32.eqz - if - local.get $8 - local.set $10 - local.get $10 - local.get $9 - f32.load - f32.store - local.get $10 - local.get $9 - i32.load offset=4 - i32.store offset=4 - block $~lib/util/hash/HASH|inlined.2 (result i32) - local.get $9 - f32.load - local.set $11 - local.get $11 - i32.reinterpret_f32 - call $~lib/util/hash/hash32 - br $~lib/util/hash/HASH|inlined.2 - end - local.get $1 - i32.and - local.set $12 - local.get $3 - local.get $12 - i32.const 4 - i32.mul - i32.add - local.set $13 - local.get $10 - local.get $13 - i32.load - i32.store offset=8 - local.get $13 - local.get $8 - i32.store - local.get $8 - block $~lib/map/ENTRY_SIZE|inlined.3 (result i32) - i32.const 12 - end - i32.add - local.set $8 - end - local.get $6 - block $~lib/map/ENTRY_SIZE|inlined.4 (result i32) - i32.const 12 - end + i32.const 2 + i32.shl + local.get $4 i32.add - local.set $6 - br $continue|0 + local.tee $8 + i32.load + i32.store offset=8 + local.get $8 + local.get $2 + i32.store + local.get $2 + i32.const 12 + i32.add + local.set $2 end + local.get $3 + i32.const 12 + i32.add + local.set $3 + br $continue|0 end end local.get $0 - local.tee $9 - local.get $3 - local.get $9 + local.get $4 + local.get $0 i32.load call $~lib/rt/purerc/__retainRelease i32.store @@ -8930,47 +6550,37 @@ local.get $1 i32.store offset=4 local.get $0 - local.tee $9 local.get $5 - local.get $9 + local.get $0 i32.load offset=8 call $~lib/rt/purerc/__retainRelease i32.store offset=8 local.get $0 - local.get $4 + local.get $6 i32.store offset=12 local.get $0 local.get $0 i32.load offset=20 i32.store offset=16 - local.get $3 + local.get $4 call $~lib/rt/purerc/__release local.get $5 call $~lib/rt/purerc/__release ) - (func $~lib/map/Map#set (; 105 ;) (type $FUNCSIG$vifi) (param $0 i32) (param $1 f32) (param $2 i32) - (local $3 f32) + (func $~lib/map/Map#set (; 74 ;) (type $FUNCSIG$vifi) (param $0 i32) (param $1 f32) (param $2 i32) + (local $3 i32) (local $4 i32) (local $5 i32) - (local $6 i32) - (local $7 i32) - block $~lib/util/hash/HASH|inlined.1 (result i32) - local.get $1 - local.set $3 - local.get $3 - i32.reinterpret_f32 - call $~lib/util/hash/hash32 - br $~lib/util/hash/HASH|inlined.1 - end - local.set $4 local.get $0 local.get $1 - local.get $4 + local.get $1 + i32.reinterpret_f32 + call $~lib/util/hash/hash32 + local.tee $5 call $~lib/map/Map#find - local.set $5 - local.get $5 + local.tee $3 if - local.get $5 + local.get $3 local.get $2 i32.store offset=4 else @@ -9006,28 +6616,23 @@ local.get $0 i32.load offset=8 call $~lib/rt/purerc/__retain - local.set $6 - local.get $6 - block (result i32) - local.get $0 - local.get $0 - i32.load offset=16 - local.tee $7 - i32.const 1 - i32.add - i32.store offset=16 - local.get $7 - end - block $~lib/map/ENTRY_SIZE|inlined.5 (result i32) - i32.const 12 - end - i32.mul + local.set $4 + local.get $0 + local.get $0 + i32.load offset=16 + local.tee $3 + i32.const 1 i32.add - local.set $5 - local.get $5 + i32.store offset=16 + local.get $3 + i32.const 12 + i32.mul + local.get $4 + i32.add + local.tee $3 local.get $1 f32.store - local.get $5 + local.get $3 local.get $2 i32.store offset=4 local.get $0 @@ -9036,80 +6641,57 @@ i32.const 1 i32.add i32.store offset=20 + local.get $3 local.get $0 i32.load - local.get $4 local.get $0 i32.load offset=4 - i32.and - i32.const 4 - i32.mul - i32.add - local.set $7 local.get $5 - local.get $7 + i32.and + i32.const 2 + i32.shl + i32.add + local.tee $0 i32.load i32.store offset=8 - local.get $7 - local.get $5 + local.get $0 + local.get $3 i32.store - local.get $6 + local.get $4 call $~lib/rt/purerc/__release end ) - (func $~lib/map/Map#get (; 106 ;) (type $FUNCSIG$iif) (param $0 i32) (param $1 f32) (result i32) - (local $2 f32) - (local $3 i32) + (func $~lib/map/Map#get (; 75 ;) (type $FUNCSIG$iif) (param $0 i32) (param $1 f32) (result i32) local.get $0 local.get $1 - block $~lib/util/hash/HASH|inlined.3 (result i32) - local.get $1 - local.set $2 - local.get $2 - i32.reinterpret_f32 - call $~lib/util/hash/hash32 - br $~lib/util/hash/HASH|inlined.3 - end + local.get $1 + i32.reinterpret_f32 + call $~lib/util/hash/hash32 call $~lib/map/Map#find - local.set $3 - local.get $3 + local.tee $0 if (result i32) - local.get $3 + local.get $0 i32.load offset=4 else unreachable end ) - (func $~lib/map/Map#get:size (; 107 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - local.get $0 - i32.load offset=20 - ) - (func $~lib/map/Map#delete (; 108 ;) (type $FUNCSIG$iif) (param $0 i32) (param $1 f32) (result i32) - (local $2 f32) + (func $~lib/map/Map#delete (; 76 ;) (type $FUNCSIG$vif) (param $0 i32) (param $1 f32) + (local $2 i32) (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) local.get $0 local.get $1 - block $~lib/util/hash/HASH|inlined.4 (result i32) - local.get $1 - local.set $2 - local.get $2 - i32.reinterpret_f32 - call $~lib/util/hash/hash32 - br $~lib/util/hash/HASH|inlined.4 - end + local.get $1 + i32.reinterpret_f32 + call $~lib/util/hash/hash32 call $~lib/map/Map#find - local.set $3 - local.get $3 + local.tee $2 i32.eqz if - i32.const 0 return end - local.get $3 - local.get $3 + local.get $2 + local.get $2 i32.load offset=8 i32.const 1 i32.or @@ -9124,17 +6706,15 @@ i32.load offset=4 i32.const 1 i32.shr_u - local.set $4 - local.get $4 + local.tee $3 i32.const 1 i32.add i32.const 4 - local.tee $5 local.get $0 i32.load offset=20 - local.tee $6 - local.get $5 - local.get $6 + local.tee $2 + i32.const 4 + local.get $2 i32.gt_u select i32.ge_u @@ -9153,30 +6733,41 @@ end if local.get $0 - local.get $4 + local.get $3 call $~lib/map/Map#rehash end - i32.const 1 ) - (func $std/map/testNumeric (; 109 ;) (type $FUNCSIG$v) - (local $0 i32) - (local $1 f32) - i32.const 0 + (func $std/map/testNumeric (; 77 ;) (type $FUNCSIG$v) + (local $0 f32) + (local $1 i32) call $~lib/map/Map#constructor - local.set $0 - block $break|0 - f32.const 0 - local.set $1 - loop $repeat|0 + local.set $1 + loop $repeat|0 + local.get $0 + f32.const 100 + f32.lt + if + local.get $1 + local.get $0 + call $~lib/map/Map#has + if + i32.const 0 + i32.const 232 + i32.const 6 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.get $0 + local.get $0 + i32.trunc_f32_s + i32.const 10 + i32.add + call $~lib/map/Map#set local.get $1 - f32.const 100 - f32.lt - i32.eqz - br_if $break|0 local.get $0 - local.get $1 call $~lib/map/Map#has - i32.eqz i32.eqz if i32.const 0 @@ -9186,93 +6777,88 @@ call $~lib/builtins/abort unreachable end + local.get $1 local.get $0 - local.get $1 - i32.const 10 - local.get $1 - i32.trunc_f32_s - i32.add - call $~lib/map/Map#set - local.get $0 - local.get $1 - call $~lib/map/Map#has - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 10 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 call $~lib/map/Map#get - i32.const 10 - local.get $1 + local.get $0 i32.trunc_f32_s + i32.const 10 i32.add - i32.eq - i32.eqz + i32.ne if i32.const 0 i32.const 232 - i32.const 11 + i32.const 9 i32.const 4 call $~lib/builtins/abort unreachable + else + local.get $0 + f32.const 1 + f32.add + local.set $0 + br $repeat|0 end - local.get $1 - f32.const 1 - f32.add - local.set $1 - br $repeat|0 unreachable end - unreachable end - local.get $0 - call $~lib/map/Map#get:size + local.get $1 + i32.load offset=20 i32.const 100 - i32.eq - i32.eqz + i32.ne if i32.const 0 i32.const 232 - i32.const 13 + i32.const 11 i32.const 2 call $~lib/builtins/abort unreachable end - block $break|1 - f32.const 0 - local.set $1 - loop $repeat|1 + f32.const 0 + local.set $0 + loop $repeat|1 + local.get $0 + f32.const 100 + f32.lt + if local.get $1 - f32.const 100 - f32.lt - i32.eqz - br_if $break|1 local.get $0 - local.get $1 call $~lib/map/Map#has i32.eqz if i32.const 0 i32.const 232 - i32.const 17 + i32.const 15 i32.const 4 call $~lib/builtins/abort unreachable end + local.get $1 local.get $0 - local.get $1 call $~lib/map/Map#get - i32.const 10 - local.get $1 + local.get $0 i32.trunc_f32_s + i32.const 10 i32.add - i32.eq + i32.ne + if + i32.const 0 + i32.const 232 + i32.const 16 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.get $0 + local.get $0 + i32.trunc_f32_s + i32.const 20 + i32.add + call $~lib/map/Map#set + local.get $1 + local.get $0 + call $~lib/map/Map#has i32.eqz if i32.const 0 @@ -9282,94 +6868,84 @@ call $~lib/builtins/abort unreachable end + local.get $1 local.get $0 - local.get $1 - i32.const 20 - local.get $1 - i32.trunc_f32_s - i32.add - call $~lib/map/Map#set - local.get $0 - local.get $1 - call $~lib/map/Map#has - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 20 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 call $~lib/map/Map#get - i32.const 20 - local.get $1 + local.get $0 i32.trunc_f32_s + i32.const 20 i32.add - i32.eq - i32.eqz + i32.ne if i32.const 0 i32.const 232 - i32.const 21 + i32.const 19 i32.const 4 call $~lib/builtins/abort unreachable + else + local.get $0 + f32.const 1 + f32.add + local.set $0 + br $repeat|1 end - local.get $1 - f32.const 1 - f32.add - local.set $1 - br $repeat|1 unreachable end - unreachable end - local.get $0 - call $~lib/map/Map#get:size + local.get $1 + i32.load offset=20 i32.const 100 - i32.eq - i32.eqz + i32.ne if i32.const 0 i32.const 232 - i32.const 23 + i32.const 21 i32.const 2 call $~lib/builtins/abort unreachable end - block $break|2 - f32.const 0 - local.set $1 - loop $repeat|2 + f32.const 0 + local.set $0 + loop $repeat|2 + local.get $0 + f32.const 50 + f32.lt + if local.get $1 - f32.const 50 - f32.lt - i32.eqz - br_if $break|2 local.get $0 - local.get $1 call $~lib/map/Map#has i32.eqz if i32.const 0 i32.const 232 - i32.const 27 + i32.const 25 i32.const 4 call $~lib/builtins/abort unreachable end + local.get $1 local.get $0 - local.get $1 call $~lib/map/Map#get - i32.const 20 - local.get $1 + local.get $0 i32.trunc_f32_s + i32.const 20 i32.add - i32.eq - i32.eqz + i32.ne + if + i32.const 0 + i32.const 232 + i32.const 26 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.get $0 + call $~lib/map/Map#delete + local.get $1 + local.get $0 + call $~lib/map/Map#has if i32.const 0 i32.const 232 @@ -9377,60 +6953,57 @@ i32.const 4 call $~lib/builtins/abort unreachable + else + local.get $0 + f32.const 1 + f32.add + local.set $0 + br $repeat|2 end - local.get $0 + unreachable + end + end + local.get $1 + i32.load offset=20 + i32.const 50 + i32.ne + if + i32.const 0 + i32.const 232 + i32.const 30 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + f32.const 0 + local.set $0 + loop $repeat|3 + local.get $0 + f32.const 50 + f32.lt + if local.get $1 - call $~lib/map/Map#delete - drop local.get $0 - local.get $1 call $~lib/map/Map#has - i32.eqz - i32.eqz if i32.const 0 i32.const 232 - i32.const 30 + i32.const 34 i32.const 4 call $~lib/builtins/abort unreachable end local.get $1 - f32.const 1 - f32.add - local.set $1 - br $repeat|2 - unreachable - end - unreachable - end - local.get $0 - call $~lib/map/Map#get:size - i32.const 50 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 32 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - block $break|3 - f32.const 0 - local.set $1 - loop $repeat|3 - local.get $1 - f32.const 50 - f32.lt - i32.eqz - br_if $break|3 local.get $0 + local.get $0 + i32.trunc_f32_s + i32.const 10 + i32.add + call $~lib/map/Map#set local.get $1 + local.get $0 call $~lib/map/Map#has i32.eqz - i32.eqz if i32.const 0 i32.const 232 @@ -9439,17 +7012,12 @@ call $~lib/builtins/abort unreachable end + local.get $1 local.get $0 + call $~lib/map/Map#delete local.get $1 - i32.const 10 - local.get $1 - i32.trunc_f32_s - i32.add - call $~lib/map/Map#set local.get $0 - local.get $1 call $~lib/map/Map#has - i32.eqz if i32.const 0 i32.const 232 @@ -9457,95 +7025,60 @@ i32.const 4 call $~lib/builtins/abort unreachable + else + local.get $0 + f32.const 1 + f32.add + local.set $0 + br $repeat|3 end - local.get $0 - local.get $1 - call $~lib/map/Map#delete - drop - local.get $0 - local.get $1 - call $~lib/map/Map#has - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 40 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $1 - f32.const 1 - f32.add - local.set $1 - br $repeat|3 unreachable end - unreachable end - local.get $0 - call $~lib/map/Map#get:size + local.get $1 + i32.load offset=20 i32.const 50 - i32.eq - i32.eqz + i32.ne if i32.const 0 i32.const 232 - i32.const 42 + i32.const 40 i32.const 2 call $~lib/builtins/abort unreachable end - local.get $0 - call $~lib/map/Map#clear - local.get $0 - call $~lib/map/Map#get:size - i32.const 0 - i32.eq - i32.eqz + local.get $1 + call $~lib/map/Map#clear + local.get $1 + i32.load offset=20 if i32.const 0 i32.const 232 - i32.const 46 + i32.const 44 i32.const 2 call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 call $~lib/rt/purerc/__release ) - (func $~lib/map/Map#clear (; 110 ;) (type $FUNCSIG$vi) (param $0 i32) - (local $1 i32) - local.get $0 - local.tee $1 - block (result i32) - local.get $1 - i32.load - call $~lib/rt/purerc/__release - i32.const 0 - i32.const 16 - call $~lib/arraybuffer/ArrayBuffer#constructor - end + (func $~lib/map/Map#constructor (; 78 ;) (type $FUNCSIG$i) (result i32) + (local $0 i32) + i32.const 24 + i32.const 26 + call $~lib/rt/tlsf/__alloc + call $~lib/rt/purerc/__retain + local.tee $0 + i32.const 0 i32.store local.get $0 - i32.const 4 - i32.const 1 - i32.sub + i32.const 0 i32.store offset=4 local.get $0 - local.tee $1 - block (result i32) - local.get $1 - i32.load offset=8 - call $~lib/rt/purerc/__release - i32.const 0 - i32.const 64 - call $~lib/arraybuffer/ArrayBuffer#constructor - end + i32.const 0 i32.store offset=8 local.get $0 - i32.const 4 + i32.const 0 i32.store offset=12 local.get $0 i32.const 0 @@ -9553,105 +7086,62 @@ local.get $0 i32.const 0 i32.store offset=20 - ) - (func $~lib/map/Map#constructor (; 111 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - block (result i32) - local.get $0 - i32.eqz - if - i32.const 24 - i32.const 26 - call $~lib/rt/tlsf/__alloc - call $~lib/rt/purerc/__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 - i32.const 0 - i32.store offset=16 - local.get $0 - i32.const 0 - i32.store offset=20 - local.get $0 - end - call $~lib/map/Map#clear + local.get $0 + call $~lib/map/Map#clear local.get $0 ) - (func $~lib/map/Map#find (; 112 ;) (type $FUNCSIG$iidi) (param $0 i32) (param $1 f64) (param $2 i32) (result i32) - (local $3 i32) + (func $~lib/map/Map#find (; 79 ;) (type $FUNCSIG$iidi) (param $0 i32) (param $1 f64) (param $2 i32) (result i32) local.get $0 i32.load - local.get $2 local.get $0 i32.load offset=4 + local.get $2 i32.and - i32.const 4 - i32.mul + i32.const 2 + i32.shl i32.add i32.load - local.set $3 - block $break|0 - loop $continue|0 - local.get $3 - if - local.get $3 - i32.load offset=12 - i32.const 1 - i32.and - i32.eqz - if (result i32) - local.get $3 - f64.load - local.get $1 - f64.eq - else - i32.const 0 - end - if - local.get $3 - return - end - local.get $3 - i32.load offset=12 - i32.const 1 - i32.const -1 - i32.xor - i32.and - local.set $3 - br $continue|0 + local.set $0 + loop $continue|0 + local.get $0 + if + local.get $0 + i32.load offset=12 + i32.const 1 + i32.and + if (result i32) + i32.const 0 + else + local.get $0 + f64.load + local.get $1 + f64.eq end + if + local.get $0 + return + end + local.get $0 + i32.load offset=12 + i32.const -2 + i32.and + local.set $0 + br $continue|0 end end i32.const 0 ) - (func $~lib/map/Map#has (; 113 ;) (type $FUNCSIG$iid) (param $0 i32) (param $1 f64) (result i32) - (local $2 f64) + (func $~lib/map/Map#has (; 80 ;) (type $FUNCSIG$iid) (param $0 i32) (param $1 f64) (result i32) local.get $0 local.get $1 - block $~lib/util/hash/HASH|inlined.0 (result i32) - local.get $1 - local.set $2 - local.get $2 - i64.reinterpret_f64 - call $~lib/util/hash/hash64 - br $~lib/util/hash/HASH|inlined.0 - end + local.get $1 + i64.reinterpret_f64 + call $~lib/util/hash/hash64 call $~lib/map/Map#find i32.const 0 i32.ne ) - (func $~lib/map/Map#rehash (; 114 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/map/Map#rehash (; 81 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -9659,119 +7149,86 @@ (local $6 i32) (local $7 i32) (local $8 i32) - (local $9 i32) - (local $10 i32) - (local $11 f64) - (local $12 i32) - (local $13 i32) local.get $1 i32.const 1 i32.add - local.set $2 - i32.const 0 - local.get $2 - i32.const 4 - i32.mul + local.tee $2 + i32.const 2 + i32.shl call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $3 + local.set $4 local.get $2 f64.convert_i32_s f64.const 2.6666666666666665 f64.mul i32.trunc_f64_s - local.set $4 - i32.const 0 - local.get $4 - block $~lib/map/ENTRY_SIZE|inlined.1 (result i32) - i32.const 16 - end - i32.mul + local.tee $6 + i32.const 4 + i32.shl call $~lib/arraybuffer/ArrayBuffer#constructor local.set $5 local.get $0 i32.load offset=8 - local.set $6 - local.get $6 + local.tee $3 local.get $0 i32.load offset=16 - block $~lib/map/ENTRY_SIZE|inlined.2 (result i32) - i32.const 16 - end - i32.mul + i32.const 4 + i32.shl i32.add local.set $7 local.get $5 - local.set $8 - block $break|0 - loop $continue|0 - local.get $6 - local.get $7 - i32.ne + local.set $2 + loop $continue|0 + local.get $3 + local.get $7 + i32.ne + if + local.get $3 + i32.load offset=12 + i32.const 1 + i32.and + i32.eqz if - local.get $6 - local.set $9 - local.get $9 - i32.load offset=12 - i32.const 1 + local.get $2 + local.get $3 + f64.load + f64.store + local.get $2 + local.get $3 + i32.load offset=8 + i32.store offset=8 + local.get $2 + local.get $3 + f64.load + i64.reinterpret_f64 + call $~lib/util/hash/hash64 + local.get $1 i32.and - i32.eqz - if - local.get $8 - local.set $10 - local.get $10 - local.get $9 - f64.load - f64.store - local.get $10 - local.get $9 - i32.load offset=8 - i32.store offset=8 - block $~lib/util/hash/HASH|inlined.2 (result i32) - local.get $9 - f64.load - local.set $11 - local.get $11 - i64.reinterpret_f64 - call $~lib/util/hash/hash64 - br $~lib/util/hash/HASH|inlined.2 - end - local.get $1 - i32.and - local.set $12 - local.get $3 - local.get $12 - i32.const 4 - i32.mul - i32.add - local.set $13 - local.get $10 - local.get $13 - i32.load - i32.store offset=12 - local.get $13 - local.get $8 - i32.store - local.get $8 - block $~lib/map/ENTRY_SIZE|inlined.3 (result i32) - i32.const 16 - end - i32.add - local.set $8 - end - local.get $6 - block $~lib/map/ENTRY_SIZE|inlined.4 (result i32) - i32.const 16 - end + i32.const 2 + i32.shl + local.get $4 i32.add - local.set $6 - br $continue|0 + local.tee $8 + i32.load + i32.store offset=12 + local.get $8 + local.get $2 + i32.store + local.get $2 + i32.const 16 + i32.add + local.set $2 end + local.get $3 + i32.const 16 + i32.add + local.set $3 + br $continue|0 end end local.get $0 - local.tee $9 - local.get $3 - local.get $9 + local.get $4 + local.get $0 i32.load call $~lib/rt/purerc/__retainRelease i32.store @@ -9779,47 +7236,37 @@ local.get $1 i32.store offset=4 local.get $0 - local.tee $9 local.get $5 - local.get $9 + local.get $0 i32.load offset=8 call $~lib/rt/purerc/__retainRelease i32.store offset=8 local.get $0 - local.get $4 + local.get $6 i32.store offset=12 local.get $0 local.get $0 i32.load offset=20 i32.store offset=16 - local.get $3 + local.get $4 call $~lib/rt/purerc/__release local.get $5 call $~lib/rt/purerc/__release ) - (func $~lib/map/Map#set (; 115 ;) (type $FUNCSIG$vidi) (param $0 i32) (param $1 f64) (param $2 i32) - (local $3 f64) + (func $~lib/map/Map#set (; 82 ;) (type $FUNCSIG$vidi) (param $0 i32) (param $1 f64) (param $2 i32) + (local $3 i32) (local $4 i32) (local $5 i32) - (local $6 i32) - (local $7 i32) - block $~lib/util/hash/HASH|inlined.1 (result i32) - local.get $1 - local.set $3 - local.get $3 - i64.reinterpret_f64 - call $~lib/util/hash/hash64 - br $~lib/util/hash/HASH|inlined.1 - end - local.set $4 local.get $0 local.get $1 - local.get $4 + local.get $1 + i64.reinterpret_f64 + call $~lib/util/hash/hash64 + local.tee $5 call $~lib/map/Map#find - local.set $5 - local.get $5 + local.tee $3 if - local.get $5 + local.get $3 local.get $2 i32.store offset=8 else @@ -9855,28 +7302,23 @@ local.get $0 i32.load offset=8 call $~lib/rt/purerc/__retain - local.set $6 - local.get $6 - block (result i32) - local.get $0 - local.get $0 - i32.load offset=16 - local.tee $7 - i32.const 1 - i32.add - i32.store offset=16 - local.get $7 - end - block $~lib/map/ENTRY_SIZE|inlined.5 (result i32) - i32.const 16 - end - i32.mul + local.set $4 + local.get $0 + local.get $0 + i32.load offset=16 + local.tee $3 + i32.const 1 i32.add - local.set $5 - local.get $5 + i32.store offset=16 + local.get $3 + i32.const 4 + i32.shl + local.get $4 + i32.add + local.tee $3 local.get $1 f64.store - local.get $5 + local.get $3 local.get $2 i32.store offset=8 local.get $0 @@ -9885,80 +7327,57 @@ i32.const 1 i32.add i32.store offset=20 + local.get $3 local.get $0 i32.load - local.get $4 local.get $0 i32.load offset=4 - i32.and - i32.const 4 - i32.mul - i32.add - local.set $7 local.get $5 - local.get $7 + i32.and + i32.const 2 + i32.shl + i32.add + local.tee $0 i32.load i32.store offset=12 - local.get $7 - local.get $5 + local.get $0 + local.get $3 i32.store - local.get $6 + local.get $4 call $~lib/rt/purerc/__release end ) - (func $~lib/map/Map#get (; 116 ;) (type $FUNCSIG$iid) (param $0 i32) (param $1 f64) (result i32) - (local $2 f64) - (local $3 i32) + (func $~lib/map/Map#get (; 83 ;) (type $FUNCSIG$iid) (param $0 i32) (param $1 f64) (result i32) local.get $0 local.get $1 - block $~lib/util/hash/HASH|inlined.3 (result i32) - local.get $1 - local.set $2 - local.get $2 - i64.reinterpret_f64 - call $~lib/util/hash/hash64 - br $~lib/util/hash/HASH|inlined.3 - end + local.get $1 + i64.reinterpret_f64 + call $~lib/util/hash/hash64 call $~lib/map/Map#find - local.set $3 - local.get $3 + local.tee $0 if (result i32) - local.get $3 + local.get $0 i32.load offset=8 else unreachable end ) - (func $~lib/map/Map#get:size (; 117 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - local.get $0 - i32.load offset=20 - ) - (func $~lib/map/Map#delete (; 118 ;) (type $FUNCSIG$iid) (param $0 i32) (param $1 f64) (result i32) - (local $2 f64) + (func $~lib/map/Map#delete (; 84 ;) (type $FUNCSIG$vid) (param $0 i32) (param $1 f64) + (local $2 i32) (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) local.get $0 local.get $1 - block $~lib/util/hash/HASH|inlined.4 (result i32) - local.get $1 - local.set $2 - local.get $2 - i64.reinterpret_f64 - call $~lib/util/hash/hash64 - br $~lib/util/hash/HASH|inlined.4 - end + local.get $1 + i64.reinterpret_f64 + call $~lib/util/hash/hash64 call $~lib/map/Map#find - local.set $3 - local.get $3 + local.tee $2 i32.eqz if - i32.const 0 return end - local.get $3 - local.get $3 + local.get $2 + local.get $2 i32.load offset=12 i32.const 1 i32.or @@ -9973,17 +7392,15 @@ i32.load offset=4 i32.const 1 i32.shr_u - local.set $4 - local.get $4 + local.tee $3 i32.const 1 i32.add i32.const 4 - local.tee $5 local.get $0 i32.load offset=20 - local.tee $6 - local.get $5 - local.get $6 + local.tee $2 + i32.const 4 + local.get $2 i32.gt_u select i32.ge_u @@ -10002,30 +7419,41 @@ end if local.get $0 - local.get $4 + local.get $3 call $~lib/map/Map#rehash end - i32.const 1 ) - (func $std/map/testNumeric (; 119 ;) (type $FUNCSIG$v) - (local $0 i32) - (local $1 f64) - i32.const 0 + (func $std/map/testNumeric (; 85 ;) (type $FUNCSIG$v) + (local $0 f64) + (local $1 i32) call $~lib/map/Map#constructor - local.set $0 - block $break|0 - f64.const 0 - local.set $1 - loop $repeat|0 + local.set $1 + loop $repeat|0 + local.get $0 + f64.const 100 + f64.lt + if + local.get $1 + local.get $0 + call $~lib/map/Map#has + if + i32.const 0 + i32.const 232 + i32.const 6 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.get $0 + local.get $0 + i32.trunc_f64_s + i32.const 10 + i32.add + call $~lib/map/Map#set local.get $1 - f64.const 100 - f64.lt - i32.eqz - br_if $break|0 local.get $0 - local.get $1 call $~lib/map/Map#has - i32.eqz i32.eqz if i32.const 0 @@ -10035,93 +7463,88 @@ call $~lib/builtins/abort unreachable end + local.get $1 local.get $0 - local.get $1 - i32.const 10 - local.get $1 - i32.trunc_f64_s - i32.add - call $~lib/map/Map#set - local.get $0 - local.get $1 - call $~lib/map/Map#has - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 10 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 call $~lib/map/Map#get - i32.const 10 - local.get $1 + local.get $0 i32.trunc_f64_s + i32.const 10 i32.add - i32.eq - i32.eqz + i32.ne if i32.const 0 i32.const 232 - i32.const 11 + i32.const 9 i32.const 4 call $~lib/builtins/abort unreachable + else + local.get $0 + f64.const 1 + f64.add + local.set $0 + br $repeat|0 end - local.get $1 - f64.const 1 - f64.add - local.set $1 - br $repeat|0 unreachable end - unreachable end - local.get $0 - call $~lib/map/Map#get:size + local.get $1 + i32.load offset=20 i32.const 100 - i32.eq - i32.eqz + i32.ne if i32.const 0 i32.const 232 - i32.const 13 + i32.const 11 i32.const 2 call $~lib/builtins/abort unreachable end - block $break|1 - f64.const 0 - local.set $1 - loop $repeat|1 + f64.const 0 + local.set $0 + loop $repeat|1 + local.get $0 + f64.const 100 + f64.lt + if local.get $1 - f64.const 100 - f64.lt - i32.eqz - br_if $break|1 local.get $0 - local.get $1 call $~lib/map/Map#has i32.eqz if i32.const 0 i32.const 232 - i32.const 17 + i32.const 15 i32.const 4 call $~lib/builtins/abort unreachable end + local.get $1 local.get $0 - local.get $1 call $~lib/map/Map#get - i32.const 10 - local.get $1 + local.get $0 i32.trunc_f64_s + i32.const 10 i32.add - i32.eq + i32.ne + if + i32.const 0 + i32.const 232 + i32.const 16 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.get $0 + local.get $0 + i32.trunc_f64_s + i32.const 20 + i32.add + call $~lib/map/Map#set + local.get $1 + local.get $0 + call $~lib/map/Map#has i32.eqz if i32.const 0 @@ -10131,94 +7554,84 @@ call $~lib/builtins/abort unreachable end + local.get $1 local.get $0 - local.get $1 - i32.const 20 - local.get $1 - i32.trunc_f64_s - i32.add - call $~lib/map/Map#set - local.get $0 - local.get $1 - call $~lib/map/Map#has - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 20 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 call $~lib/map/Map#get - i32.const 20 - local.get $1 + local.get $0 i32.trunc_f64_s + i32.const 20 i32.add - i32.eq - i32.eqz + i32.ne if i32.const 0 i32.const 232 - i32.const 21 + i32.const 19 i32.const 4 call $~lib/builtins/abort unreachable + else + local.get $0 + f64.const 1 + f64.add + local.set $0 + br $repeat|1 end - local.get $1 - f64.const 1 - f64.add - local.set $1 - br $repeat|1 unreachable end - unreachable end - local.get $0 - call $~lib/map/Map#get:size + local.get $1 + i32.load offset=20 i32.const 100 - i32.eq - i32.eqz + i32.ne if i32.const 0 i32.const 232 - i32.const 23 + i32.const 21 i32.const 2 call $~lib/builtins/abort unreachable end - block $break|2 - f64.const 0 - local.set $1 - loop $repeat|2 + f64.const 0 + local.set $0 + loop $repeat|2 + local.get $0 + f64.const 50 + f64.lt + if local.get $1 - f64.const 50 - f64.lt - i32.eqz - br_if $break|2 local.get $0 - local.get $1 call $~lib/map/Map#has i32.eqz if i32.const 0 i32.const 232 - i32.const 27 + i32.const 25 i32.const 4 call $~lib/builtins/abort unreachable end + local.get $1 local.get $0 - local.get $1 call $~lib/map/Map#get - i32.const 20 - local.get $1 + local.get $0 i32.trunc_f64_s + i32.const 20 i32.add - i32.eq - i32.eqz + i32.ne + if + i32.const 0 + i32.const 232 + i32.const 26 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.get $0 + call $~lib/map/Map#delete + local.get $1 + local.get $0 + call $~lib/map/Map#has if i32.const 0 i32.const 232 @@ -10226,60 +7639,57 @@ i32.const 4 call $~lib/builtins/abort unreachable + else + local.get $0 + f64.const 1 + f64.add + local.set $0 + br $repeat|2 end - local.get $0 + unreachable + end + end + local.get $1 + i32.load offset=20 + i32.const 50 + i32.ne + if + i32.const 0 + i32.const 232 + i32.const 30 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + f64.const 0 + local.set $0 + loop $repeat|3 + local.get $0 + f64.const 50 + f64.lt + if local.get $1 - call $~lib/map/Map#delete - drop local.get $0 - local.get $1 call $~lib/map/Map#has - i32.eqz - i32.eqz if i32.const 0 i32.const 232 - i32.const 30 + i32.const 34 i32.const 4 call $~lib/builtins/abort unreachable end local.get $1 - f64.const 1 - f64.add - local.set $1 - br $repeat|2 - unreachable - end - unreachable - end - local.get $0 - call $~lib/map/Map#get:size - i32.const 50 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 32 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - block $break|3 - f64.const 0 - local.set $1 - loop $repeat|3 - local.get $1 - f64.const 50 - f64.lt - i32.eqz - br_if $break|3 local.get $0 + local.get $0 + i32.trunc_f64_s + i32.const 10 + i32.add + call $~lib/map/Map#set local.get $1 + local.get $0 call $~lib/map/Map#has i32.eqz - i32.eqz if i32.const 0 i32.const 232 @@ -10288,17 +7698,12 @@ call $~lib/builtins/abort unreachable end + local.get $1 local.get $0 + call $~lib/map/Map#delete local.get $1 - i32.const 10 - local.get $1 - i32.trunc_f64_s - i32.add - call $~lib/map/Map#set local.get $0 - local.get $1 call $~lib/map/Map#has - i32.eqz if i32.const 0 i32.const 232 @@ -10306,65 +7711,44 @@ i32.const 4 call $~lib/builtins/abort unreachable + else + local.get $0 + f64.const 1 + f64.add + local.set $0 + br $repeat|3 end - local.get $0 - local.get $1 - call $~lib/map/Map#delete - drop - local.get $0 - local.get $1 - call $~lib/map/Map#has - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 40 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $1 - f64.const 1 - f64.add - local.set $1 - br $repeat|3 unreachable end - unreachable end - local.get $0 - call $~lib/map/Map#get:size + local.get $1 + i32.load offset=20 i32.const 50 - i32.eq - i32.eqz + i32.ne if i32.const 0 i32.const 232 - i32.const 42 + i32.const 40 i32.const 2 call $~lib/builtins/abort unreachable end - local.get $0 - call $~lib/map/Map#clear - local.get $0 - call $~lib/map/Map#get:size - i32.const 0 - i32.eq - i32.eqz + local.get $1 + call $~lib/map/Map#clear + local.get $1 + i32.load offset=20 if i32.const 0 i32.const 232 - i32.const 46 + i32.const 44 i32.const 2 call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 call $~lib/rt/purerc/__release ) - (func $start:std/map (; 120 ;) (type $FUNCSIG$v) + (func $start (; 86 ;) (type $FUNCSIG$v) call $std/map/testNumeric call $std/map/testNumeric call $std/map/testNumeric @@ -10376,28 +7760,19 @@ call $std/map/testNumeric call $std/map/testNumeric ) - (func $start (; 121 ;) (type $FUNCSIG$v) - call $start:std/map - ) - (func $~lib/rt/purerc/increment (; 122 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $~lib/rt/purerc/increment (; 87 ;) (type $FUNCSIG$vi) (param $0 i32) (local $1 i32) local.get $0 i32.load offset=4 - local.set $1 - local.get $1 - i32.const 268435455 - i32.const -1 - i32.xor + local.tee $1 + i32.const -268435456 i32.and local.get $1 i32.const 1 i32.add - i32.const 268435455 - i32.const -1 - i32.xor + i32.const -268435456 i32.and - i32.eq - i32.eqz + i32.ne if i32.const 0 i32.const 272 @@ -10417,8 +7792,6 @@ i32.load i32.const 1 i32.and - i32.eqz - i32.eqz if i32.const 0 i32.const 272 @@ -10428,9 +7801,9 @@ unreachable end ) - (func $~lib/rt/purerc/__retain (; 123 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/rt/purerc/__retain (; 88 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 - global.get $~lib/builtins/HEAP_BASE + i32.const 640 i32.gt_u if local.get $0 @@ -10440,16 +7813,13 @@ end local.get $0 ) - (func $~lib/rt/tlsf/freeBlock (; 124 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/rt/tlsf/freeBlock (; 89 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) local.get $1 i32.load - local.set $2 - local.get $2 + local.tee $2 i32.const 1 i32.and - i32.eqz - i32.eqz if i32.const 0 i32.const 128 @@ -10469,19 +7839,15 @@ local.get $1 call $~lib/rt/tlsf/onFree ) - (func $~lib/rt/common/__typeinfo (; 125 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - (local $1 i32) - global.get $~lib/builtins/RTTI_BASE - local.set $1 + (func $~lib/rt/common/__typeinfo (; 90 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 - i32.eqz if (result i32) - i32.const 1 - else local.get $0 - local.get $1 + i32.const 424 i32.load i32.gt_u + else + i32.const 1 end if i32.const 328 @@ -10491,269 +7857,226 @@ call $~lib/builtins/abort unreachable end - local.get $1 local.get $0 - i32.const 8 - i32.mul + i32.const 3 + i32.shl + i32.const 424 i32.add i32.load ) - (func $~lib/memory/memory.copy (; 126 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/memory/memory.copy (; 91 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) - (local $5 i32) - (local $6 i32) block $~lib/util/memory/memmove|inlined.0 - local.get $0 - local.set $5 - local.get $1 - local.set $4 local.get $2 local.set $3 - local.get $5 - local.get $4 + local.get $0 + local.get $1 i32.eq - if - br $~lib/util/memory/memmove|inlined.0 - end - local.get $5 - local.get $4 + br_if $~lib/util/memory/memmove|inlined.0 + local.get $0 + local.get $1 i32.lt_u if - local.get $4 + local.get $1 i32.const 7 i32.and - local.get $5 + local.get $0 i32.const 7 i32.and i32.eq if - block $break|0 - loop $continue|0 - local.get $5 - i32.const 7 - i32.and - if - local.get $3 - i32.eqz - if - br $~lib/util/memory/memmove|inlined.0 - end - local.get $3 - i32.const 1 - i32.sub - local.set $3 - block (result i32) - local.get $5 - local.tee $6 - i32.const 1 - i32.add - local.set $5 - local.get $6 - end - block (result i32) - local.get $4 - local.tee $6 - i32.const 1 - i32.add - local.set $4 - local.get $6 - end - i32.load8_u - i32.store8 - br $continue|0 - end - end - end - block $break|1 - loop $continue|1 - local.get $3 - i32.const 8 - i32.ge_u - if - local.get $5 - local.get $4 - i64.load - i64.store - local.get $3 - i32.const 8 - i32.sub - local.set $3 - local.get $5 - i32.const 8 - i32.add - local.set $5 - local.get $4 - i32.const 8 - i32.add - local.set $4 - br $continue|1 - end - end - end - end - block $break|2 - loop $continue|2 - local.get $3 + loop $continue|0 + local.get $0 + i32.const 7 + i32.and if - block (result i32) - local.get $5 - local.tee $6 - i32.const 1 - i32.add - local.set $5 - local.get $6 - end - block (result i32) - local.get $4 - local.tee $6 - i32.const 1 - i32.add - local.set $4 - local.get $6 - end - i32.load8_u - i32.store8 + local.get $3 + i32.eqz + br_if $~lib/util/memory/memmove|inlined.0 local.get $3 i32.const 1 i32.sub local.set $3 - br $continue|2 + local.get $0 + local.tee $2 + i32.const 1 + i32.add + local.set $0 + local.get $1 + local.tee $4 + i32.const 1 + i32.add + local.set $1 + local.get $2 + local.get $4 + i32.load8_u + i32.store8 + br $continue|0 + end + end + loop $continue|1 + local.get $3 + i32.const 8 + i32.ge_u + if + local.get $0 + local.get $1 + i64.load + i64.store + local.get $3 + i32.const 8 + i32.sub + local.set $3 + local.get $0 + i32.const 8 + i32.add + local.set $0 + local.get $1 + i32.const 8 + i32.add + local.set $1 + br $continue|1 end end end + loop $continue|2 + local.get $3 + if + local.get $0 + local.tee $2 + i32.const 1 + i32.add + local.set $0 + local.get $1 + local.tee $4 + i32.const 1 + i32.add + local.set $1 + local.get $2 + local.get $4 + i32.load8_u + i32.store8 + local.get $3 + i32.const 1 + i32.sub + local.set $3 + br $continue|2 + end + end else - local.get $4 + local.get $1 i32.const 7 i32.and - local.get $5 + local.get $0 i32.const 7 i32.and i32.eq if - block $break|3 - loop $continue|3 - local.get $5 - local.get $3 - i32.add - i32.const 7 - i32.and - if - local.get $3 - i32.eqz - if - br $~lib/util/memory/memmove|inlined.0 - end - local.get $5 - local.get $3 - i32.const 1 - i32.sub - local.tee $3 - i32.add - local.get $4 - local.get $3 - i32.add - i32.load8_u - i32.store8 - br $continue|3 - end - end - end - block $break|4 - loop $continue|4 - local.get $3 - i32.const 8 - i32.ge_u - if - local.get $3 - i32.const 8 - i32.sub - local.set $3 - local.get $5 - local.get $3 - i32.add - local.get $4 - local.get $3 - i32.add - i64.load - i64.store - br $continue|4 - end - end - end - end - block $break|5 - loop $continue|5 + loop $continue|3 + local.get $0 local.get $3 + i32.add + i32.const 7 + i32.and if - local.get $5 + local.get $3 + i32.eqz + br_if $~lib/util/memory/memmove|inlined.0 + local.get $0 local.get $3 i32.const 1 i32.sub local.tee $3 i32.add - local.get $4 + local.get $1 local.get $3 i32.add i32.load8_u i32.store8 - br $continue|5 + br $continue|3 end end + loop $continue|4 + local.get $3 + i32.const 8 + i32.ge_u + if + local.get $0 + local.get $3 + i32.const 8 + i32.sub + local.tee $3 + i32.add + local.get $1 + local.get $3 + i32.add + i64.load + i64.store + br $continue|4 + end + end + end + loop $continue|5 + local.get $3 + if + local.get $0 + local.get $3 + i32.const 1 + i32.sub + local.tee $3 + i32.add + local.get $1 + local.get $3 + i32.add + i32.load8_u + i32.store8 + br $continue|5 + end end end end ) - (func $~lib/rt/purerc/growRoots (; 127 ;) (type $FUNCSIG$v) + (func $~lib/rt/purerc/growRoots (; 92 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) (local $3 i32) - (local $4 i32) - (local $5 i32) - global.get $~lib/rt/purerc/ROOTS - local.set $0 global.get $~lib/rt/purerc/CUR - local.get $0 - i32.sub - local.set $1 - local.get $1 - i32.const 2 - i32.mul + global.get $~lib/rt/purerc/ROOTS local.tee $2 - i32.const 64 - i32.const 2 + i32.sub + local.tee $1 + i32.const 1 i32.shl - local.tee $3 - local.get $2 - local.get $3 + local.tee $0 + i32.const 256 + local.get $0 + i32.const 256 i32.gt_u select - local.set $4 - local.get $4 + local.tee $3 i32.const 0 call $~lib/rt/tlsf/__alloc - local.set $5 - local.get $5 - local.get $0 + local.tee $0 + local.get $2 local.get $1 call $~lib/memory/memory.copy - local.get $5 + local.get $0 global.set $~lib/rt/purerc/ROOTS - local.get $5 + local.get $0 local.get $1 i32.add global.set $~lib/rt/purerc/CUR - local.get $5 - local.get $4 + local.get $0 + local.get $3 i32.add global.set $~lib/rt/purerc/END ) - (func $~lib/rt/purerc/appendRoot (; 128 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $~lib/rt/purerc/appendRoot (; 93 ;) (type $FUNCSIG$vi) (param $0 i32) (local $1 i32) global.get $~lib/rt/purerc/CUR - local.set $1 - local.get $1 + local.tee $1 global.get $~lib/rt/purerc/END i32.ge_u if @@ -10769,24 +8092,21 @@ i32.add global.set $~lib/rt/purerc/CUR ) - (func $~lib/rt/purerc/decrement (; 129 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $~lib/rt/purerc/decrement (; 94 ;) (type $FUNCSIG$vi) (param $0 i32) (local $1 i32) (local $2 i32) local.get $0 i32.load offset=4 - local.set $1 - local.get $1 + local.tee $2 i32.const 268435455 i32.and - local.set $2 + local.set $1 local.get $0 call $~lib/rt/purerc/onDecrement local.get $0 i32.load i32.const 1 i32.and - i32.eqz - i32.eqz if i32.const 0 i32.const 272 @@ -10795,7 +8115,7 @@ call $~lib/builtins/abort unreachable end - local.get $2 + local.get $1 i32.const 1 i32.eq if @@ -10804,28 +8124,22 @@ i32.add i32.const 1 call $~lib/builtins/__visit_members - local.get $1 + local.get $2 i32.const -2147483648 i32.and - i32.eqz if + local.get $0 + i32.const -2147483648 + i32.store offset=4 + else global.get $~lib/rt/tlsf/ROOT local.get $0 call $~lib/rt/tlsf/freeBlock - else - local.get $0 - i32.const -2147483648 - i32.const 0 - i32.or - i32.const 0 - i32.or - i32.store offset=4 end else - local.get $2 + local.get $1 i32.const 0 - i32.gt_u - i32.eqz + i32.le_u if i32.const 0 i32.const 272 @@ -10839,18 +8153,25 @@ call $~lib/rt/common/__typeinfo i32.const 8 i32.and - i32.eqz if local.get $0 - i32.const -2147483648 - i32.const 805306368 - i32.or - local.get $2 + local.get $1 i32.const 1 i32.sub + local.get $2 + i32.const -268435456 + i32.and i32.or i32.store offset=4 + else + local.get $0 local.get $1 + i32.const 1 + i32.sub + i32.const -1342177280 + i32.or + i32.store offset=4 + local.get $2 i32.const -2147483648 i32.and i32.eqz @@ -10858,31 +8179,16 @@ local.get $0 call $~lib/rt/purerc/appendRoot end - else - local.get $0 - local.get $1 - i32.const 268435455 - i32.const -1 - i32.xor - i32.and - local.get $2 - i32.const 1 - i32.sub - i32.or - i32.store offset=4 end end ) - (func $~lib/rt/purerc/__retainRelease (; 130 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) + (func $~lib/rt/purerc/__retainRelease (; 95 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $0 local.get $1 i32.ne if - global.get $~lib/builtins/HEAP_BASE - local.set $2 local.get $0 - local.get $2 + i32.const 640 i32.gt_u if local.get $0 @@ -10891,7 +8197,7 @@ call $~lib/rt/purerc/increment end local.get $1 - local.get $2 + i32.const 640 i32.gt_u if local.get $1 @@ -10902,9 +8208,9 @@ end local.get $0 ) - (func $~lib/rt/purerc/__release (; 131 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $~lib/rt/purerc/__release (; 96 ;) (type $FUNCSIG$vi) (param $0 i32) local.get $0 - global.get $~lib/builtins/HEAP_BASE + i32.const 640 i32.gt_u if local.get $0 @@ -10913,12 +8219,11 @@ call $~lib/rt/purerc/decrement end ) - (func $~lib/rt/purerc/markGray (; 132 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $~lib/rt/purerc/markGray (; 97 ;) (type $FUNCSIG$vi) (param $0 i32) (local $1 i32) local.get $0 i32.load offset=4 - local.set $1 - local.get $1 + local.tee $1 i32.const 1879048192 i32.and i32.const 268435456 @@ -10926,9 +8231,7 @@ if local.get $0 local.get $1 - i32.const 1879048192 - i32.const -1 - i32.xor + i32.const -1879048193 i32.and i32.const 268435456 i32.or @@ -10940,16 +8243,12 @@ call $~lib/builtins/__visit_members end ) - (func $~lib/rt/purerc/scanBlack (; 133 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $~lib/rt/purerc/scanBlack (; 98 ;) (type $FUNCSIG$vi) (param $0 i32) local.get $0 local.get $0 i32.load offset=4 - i32.const 1879048192 - i32.const -1 - i32.xor + i32.const -1879048193 i32.and - i32.const 0 - i32.or i32.store offset=4 local.get $0 i32.const 16 @@ -10957,12 +8256,11 @@ i32.const 4 call $~lib/builtins/__visit_members ) - (func $~lib/rt/purerc/scan (; 134 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $~lib/rt/purerc/scan (; 99 ;) (type $FUNCSIG$vi) (param $0 i32) (local $1 i32) local.get $0 i32.load offset=4 - local.set $1 - local.get $1 + local.tee $1 i32.const 1879048192 i32.and i32.const 268435456 @@ -10979,9 +8277,7 @@ else local.get $0 local.get $1 - i32.const 1879048192 - i32.const -1 - i32.xor + i32.const -1879048193 i32.and i32.const 536870912 i32.or @@ -10994,12 +8290,11 @@ end end ) - (func $~lib/rt/purerc/collectWhite (; 135 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $~lib/rt/purerc/collectWhite (; 100 ;) (type $FUNCSIG$vi) (param $0 i32) (local $1 i32) local.get $0 i32.load offset=4 - local.set $1 - local.get $1 + local.tee $1 i32.const 1879048192 i32.and i32.const 536870912 @@ -11023,11 +8318,9 @@ local.get $0 call $~lib/rt/tlsf/freeBlock ) - (func $~lib/rt/purerc/__visit (; 136 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) + (func $~lib/rt/purerc/__visit (; 101 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) local.get $0 - global.get $~lib/builtins/HEAP_BASE + i32.const 640 i32.lt_u if return @@ -11035,515 +8328,158 @@ local.get $0 i32.const 16 i32.sub - local.set $2 + local.set $0 block $break|0 block $case5|0 block $case4|0 block $case3|0 block $case2|0 block $case1|0 - block $case0|0 + local.get $1 + i32.const 1 + i32.ne + if local.get $1 - local.set $3 - local.get $3 - i32.const 1 - i32.eq - br_if $case0|0 - local.get $3 i32.const 2 i32.eq br_if $case1|0 - local.get $3 - i32.const 3 - i32.eq - br_if $case2|0 - local.get $3 - i32.const 4 - i32.eq - br_if $case3|0 - local.get $3 - i32.const 5 - i32.eq - br_if $case4|0 + block $tablify|0 + local.get $1 + i32.const 3 + i32.sub + br_table $case2|0 $case3|0 $case4|0 $tablify|0 + end br $case5|0 end - block - local.get $2 - call $~lib/rt/purerc/decrement - br $break|0 - unreachable - end - unreachable - end - block - local.get $2 - i32.load offset=4 - i32.const 268435455 - i32.and - i32.const 0 - i32.gt_u - i32.eqz - if - i32.const 0 - i32.const 272 - i32.const 74 - i32.const 17 - call $~lib/builtins/abort - unreachable - end - local.get $2 - local.get $2 - i32.load offset=4 - i32.const 1 - i32.sub - i32.store offset=4 - local.get $2 - call $~lib/rt/purerc/markGray + local.get $0 + call $~lib/rt/purerc/decrement br $break|0 + end + local.get $0 + i32.load offset=4 + i32.const 268435455 + i32.and + i32.const 0 + i32.le_u + if + i32.const 0 + i32.const 272 + i32.const 74 + i32.const 17 + call $~lib/builtins/abort unreachable end - unreachable - end - block - local.get $2 - call $~lib/rt/purerc/scan + local.get $0 + local.get $0 + i32.load offset=4 + i32.const 1 + i32.sub + i32.store offset=4 + local.get $0 + call $~lib/rt/purerc/markGray br $break|0 - unreachable - end - unreachable - end - block - local.get $2 - i32.load offset=4 - local.set $3 - local.get $3 - i32.const 268435455 - i32.const -1 - i32.xor - i32.and - local.get $3 - i32.const 1 - i32.add - i32.const 268435455 - i32.const -1 - i32.xor - i32.and - i32.eq - i32.eqz - if - i32.const 0 - i32.const 272 - i32.const 85 - i32.const 6 - call $~lib/builtins/abort - unreachable - end - local.get $2 - local.get $3 - i32.const 1 - i32.add - i32.store offset=4 - local.get $3 - i32.const 1879048192 - i32.and - i32.const 0 - i32.ne - if - local.get $2 - call $~lib/rt/purerc/scanBlack end + local.get $0 + call $~lib/rt/purerc/scan br $break|0 + end + local.get $0 + i32.load offset=4 + local.tee $1 + i32.const -268435456 + i32.and + local.get $1 + i32.const 1 + i32.add + i32.const -268435456 + i32.and + i32.ne + if + i32.const 0 + i32.const 272 + i32.const 85 + i32.const 6 + call $~lib/builtins/abort unreachable end - unreachable - end - block - local.get $2 - call $~lib/rt/purerc/collectWhite + local.get $0 + local.get $1 + i32.const 1 + i32.add + i32.store offset=4 + local.get $1 + i32.const 1879048192 + i32.and + if + local.get $0 + call $~lib/rt/purerc/scanBlack + end br $break|0 - unreachable end - unreachable + local.get $0 + call $~lib/rt/purerc/collectWhite + br $break|0 end i32.const 0 - i32.eqz - if - i32.const 0 - i32.const 272 - i32.const 96 - i32.const 24 - call $~lib/builtins/abort - unreachable - end - end - ) - (func $~lib/map/Map#__visit_impl (; 137 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) - (local $2 i32) - local.get $0 - i32.load - local.get $1 - call $~lib/rt/purerc/__visit - local.get $0 - i32.load offset=8 - local.set $2 - local.get $2 - local.get $1 - call $~lib/rt/purerc/__visit - ) - (func $~lib/map/Map#__visit_impl (; 138 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) - (local $2 i32) - local.get $0 - i32.load - local.get $1 - call $~lib/rt/purerc/__visit - local.get $0 - i32.load offset=8 - local.set $2 - local.get $2 - local.get $1 - call $~lib/rt/purerc/__visit - ) - (func $~lib/map/Map#__visit_impl (; 139 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) - (local $2 i32) - local.get $0 - i32.load - local.get $1 - call $~lib/rt/purerc/__visit - local.get $0 - i32.load offset=8 - local.set $2 - local.get $2 - local.get $1 - call $~lib/rt/purerc/__visit - ) - (func $~lib/map/Map#__visit_impl (; 140 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) - (local $2 i32) - local.get $0 - i32.load - local.get $1 - call $~lib/rt/purerc/__visit - local.get $0 - i32.load offset=8 - local.set $2 - local.get $2 - local.get $1 - call $~lib/rt/purerc/__visit - ) - (func $~lib/map/Map#__visit_impl (; 141 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) - (local $2 i32) - local.get $0 - i32.load - local.get $1 - call $~lib/rt/purerc/__visit - local.get $0 - i32.load offset=8 - local.set $2 - local.get $2 - local.get $1 - call $~lib/rt/purerc/__visit - ) - (func $~lib/map/Map#__visit_impl (; 142 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) - (local $2 i32) - local.get $0 - i32.load - local.get $1 - call $~lib/rt/purerc/__visit - local.get $0 - i32.load offset=8 - local.set $2 - local.get $2 - local.get $1 - call $~lib/rt/purerc/__visit - ) - (func $~lib/map/Map#__visit_impl (; 143 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) - (local $2 i32) - local.get $0 - i32.load - local.get $1 - call $~lib/rt/purerc/__visit - local.get $0 - i32.load offset=8 - local.set $2 - local.get $2 - local.get $1 - call $~lib/rt/purerc/__visit - ) - (func $~lib/map/Map#__visit_impl (; 144 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) - (local $2 i32) - local.get $0 - i32.load - local.get $1 - call $~lib/rt/purerc/__visit - local.get $0 - i32.load offset=8 - local.set $2 - local.get $2 - local.get $1 - call $~lib/rt/purerc/__visit - ) - (func $~lib/map/Map#__visit_impl (; 145 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) - (local $2 i32) - local.get $0 - i32.load - local.get $1 - call $~lib/rt/purerc/__visit - local.get $0 - i32.load offset=8 - local.set $2 - local.get $2 - local.get $1 - call $~lib/rt/purerc/__visit - ) - (func $~lib/map/Map#__visit_impl (; 146 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) - (local $2 i32) - local.get $0 - i32.load - local.get $1 - call $~lib/rt/purerc/__visit - local.get $0 - i32.load offset=8 - local.set $2 - local.get $2 - local.get $1 - call $~lib/rt/purerc/__visit - ) - (func $~lib/builtins/__visit_members (; 147 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) - (local $2 i32) - block - end - block $switch$1$leave - 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$16 - block $switch$1$case$3 - block $switch$1$default - local.get $0 - i32.const 8 - i32.sub - i32.load - br_table $switch$1$default $switch$1$case$3 $switch$1$case$3 $switch$1$case$3 $switch$1$case$3 $switch$1$case$3 $switch$1$case$3 $switch$1$case$3 $switch$1$case$3 $switch$1$case$3 $switch$1$case$3 $switch$1$case$3 $switch$1$case$3 $switch$1$case$3 $switch$1$case$16 $switch$1$case$3 $switch$1$case$3 $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 - block - block - unreachable - unreachable - end - unreachable - unreachable - end - unreachable - end - block - block - return - unreachable - end - unreachable - unreachable - end - unreachable - end - block - block - block - local.get $0 - i32.load - local.tee $2 - if - local.get $2 - local.get $1 - call $~lib/rt/purerc/__visit - end - return - unreachable - end - unreachable - unreachable - end - unreachable - unreachable - end - unreachable - end - block - block - block - local.get $0 - local.get $1 - call $~lib/map/Map#__visit_impl - return - unreachable - end - unreachable - unreachable - end - unreachable - unreachable - end - unreachable - end - block - block - block - local.get $0 - local.get $1 - call $~lib/map/Map#__visit_impl - return - unreachable - end - unreachable - unreachable - end - unreachable - unreachable - end - unreachable - end - block - block - block - local.get $0 - local.get $1 - call $~lib/map/Map#__visit_impl - return - unreachable - end - unreachable - unreachable - end - unreachable - unreachable - end - unreachable - end - block - block - block - local.get $0 - local.get $1 - call $~lib/map/Map#__visit_impl - return - unreachable - end - unreachable - unreachable - end - unreachable - unreachable - end - unreachable - end - block - block - block - local.get $0 - local.get $1 - call $~lib/map/Map#__visit_impl - return - unreachable - end - unreachable - unreachable - end - unreachable - unreachable - end - unreachable - end - block - block - block - local.get $0 - local.get $1 - call $~lib/map/Map#__visit_impl - return - unreachable - end - unreachable - unreachable - end - unreachable - unreachable - end - unreachable - end - block - block - block - local.get $0 - local.get $1 - call $~lib/map/Map#__visit_impl - return - unreachable - end - unreachable - unreachable - end - unreachable - unreachable - end - unreachable - end - block - block - block - local.get $0 - local.get $1 - call $~lib/map/Map#__visit_impl - return - unreachable - end - unreachable - unreachable - end - unreachable - unreachable - end - unreachable - end - block - block - block - local.get $0 - local.get $1 - call $~lib/map/Map#__visit_impl - return - unreachable - end - unreachable - unreachable - end - unreachable - unreachable - end - unreachable - end - block - block - block - local.get $0 - local.get $1 - call $~lib/map/Map#__visit_impl - return - unreachable - end - unreachable - unreachable - end - unreachable - unreachable - end + i32.const 272 + i32.const 96 + i32.const 24 + call $~lib/builtins/abort unreachable end ) - (func $null (; 148 ;) (type $FUNCSIG$v) + (func $~lib/map/Map#__visit_impl (; 102 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + local.get $0 + i32.load + local.get $1 + call $~lib/rt/purerc/__visit + local.get $0 + i32.load offset=8 + local.get $1 + call $~lib/rt/purerc/__visit + ) + (func $~lib/builtins/__visit_members (; 103 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + block $folding-inner0 + block $switch$1$case$28 + block + block $switch$1$case$16 + block $switch$1$case$3 + block $switch$1$default + local.get $0 + i32.const 8 + i32.sub + i32.load + i32.const 1 + i32.sub + br_table $switch$1$case$3 $switch$1$case$3 $switch$1$case$3 $switch$1$case$3 $switch$1$case$3 $switch$1$case$3 $switch$1$case$3 $switch$1$case$3 $switch$1$case$3 $switch$1$case$3 $switch$1$case$3 $switch$1$case$3 $switch$1$case$3 $switch$1$case$16 $switch$1$case$3 $switch$1$case$3 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $switch$1$case$28 $switch$1$default + end + unreachable + end + return + end + local.get $0 + i32.load + local.tee $0 + if + local.get $0 + local.get $1 + call $~lib/rt/purerc/__visit + end + return + unreachable + end + unreachable + end + local.get $0 + local.get $1 + call $~lib/map/Map#__visit_impl + return + end + local.get $0 + local.get $1 + call $~lib/map/Map#__visit_impl + ) + (func $null (; 104 ;) (type $FUNCSIG$v) + nop ) ) diff --git a/tests/compiler/std/map.untouched.wat b/tests/compiler/std/map.untouched.wat index e372c05a..ec2e1c7f 100644 --- a/tests/compiler/std/map.untouched.wat +++ b/tests/compiler/std/map.untouched.wat @@ -2205,7 +2205,7 @@ if i32.const 0 i32.const 232 - i32.const 8 + i32.const 6 i32.const 4 call $~lib/builtins/abort unreachable @@ -2227,7 +2227,7 @@ if i32.const 0 i32.const 232 - i32.const 10 + i32.const 8 i32.const 4 call $~lib/builtins/abort unreachable @@ -2247,7 +2247,7 @@ if i32.const 0 i32.const 232 - i32.const 11 + i32.const 9 i32.const 4 call $~lib/builtins/abort unreachable @@ -2269,7 +2269,7 @@ if i32.const 0 i32.const 232 - i32.const 13 + i32.const 11 i32.const 2 call $~lib/builtins/abort unreachable @@ -2290,7 +2290,7 @@ if i32.const 0 i32.const 232 - i32.const 17 + i32.const 15 i32.const 4 call $~lib/builtins/abort unreachable @@ -2310,7 +2310,7 @@ if i32.const 0 i32.const 232 - i32.const 18 + i32.const 16 i32.const 4 call $~lib/builtins/abort unreachable @@ -2332,7 +2332,7 @@ if i32.const 0 i32.const 232 - i32.const 20 + i32.const 18 i32.const 4 call $~lib/builtins/abort unreachable @@ -2352,7 +2352,7 @@ if i32.const 0 i32.const 232 - i32.const 21 + i32.const 19 i32.const 4 call $~lib/builtins/abort unreachable @@ -2374,7 +2374,7 @@ if i32.const 0 i32.const 232 - i32.const 23 + i32.const 21 i32.const 2 call $~lib/builtins/abort unreachable @@ -2395,7 +2395,7 @@ if i32.const 0 i32.const 232 - i32.const 27 + i32.const 25 i32.const 4 call $~lib/builtins/abort unreachable @@ -2415,7 +2415,7 @@ if i32.const 0 i32.const 232 - i32.const 28 + i32.const 26 i32.const 4 call $~lib/builtins/abort unreachable @@ -2432,7 +2432,7 @@ if i32.const 0 i32.const 232 - i32.const 30 + i32.const 28 i32.const 4 call $~lib/builtins/abort unreachable @@ -2454,7 +2454,7 @@ if i32.const 0 i32.const 232 - i32.const 32 + i32.const 30 i32.const 2 call $~lib/builtins/abort unreachable @@ -2476,7 +2476,7 @@ if i32.const 0 i32.const 232 - i32.const 36 + i32.const 34 i32.const 4 call $~lib/builtins/abort unreachable @@ -2498,7 +2498,7 @@ if i32.const 0 i32.const 232 - i32.const 38 + i32.const 36 i32.const 4 call $~lib/builtins/abort unreachable @@ -2515,7 +2515,7 @@ if i32.const 0 i32.const 232 - i32.const 40 + i32.const 38 i32.const 4 call $~lib/builtins/abort unreachable @@ -2537,7 +2537,7 @@ if i32.const 0 i32.const 232 - i32.const 42 + i32.const 40 i32.const 2 call $~lib/builtins/abort unreachable @@ -2552,7 +2552,7 @@ if i32.const 0 i32.const 232 - i32.const 46 + i32.const 44 i32.const 2 call $~lib/builtins/abort unreachable @@ -3077,7 +3077,7 @@ if i32.const 0 i32.const 232 - i32.const 8 + i32.const 6 i32.const 4 call $~lib/builtins/abort unreachable @@ -3097,7 +3097,7 @@ if i32.const 0 i32.const 232 - i32.const 10 + i32.const 8 i32.const 4 call $~lib/builtins/abort unreachable @@ -3115,7 +3115,7 @@ if i32.const 0 i32.const 232 - i32.const 11 + i32.const 9 i32.const 4 call $~lib/builtins/abort unreachable @@ -3137,7 +3137,7 @@ if i32.const 0 i32.const 232 - i32.const 13 + i32.const 11 i32.const 2 call $~lib/builtins/abort unreachable @@ -3158,7 +3158,7 @@ if i32.const 0 i32.const 232 - i32.const 17 + i32.const 15 i32.const 4 call $~lib/builtins/abort unreachable @@ -3176,7 +3176,7 @@ if i32.const 0 i32.const 232 - i32.const 18 + i32.const 16 i32.const 4 call $~lib/builtins/abort unreachable @@ -3196,7 +3196,7 @@ if i32.const 0 i32.const 232 - i32.const 20 + i32.const 18 i32.const 4 call $~lib/builtins/abort unreachable @@ -3214,7 +3214,7 @@ if i32.const 0 i32.const 232 - i32.const 21 + i32.const 19 i32.const 4 call $~lib/builtins/abort unreachable @@ -3236,7 +3236,7 @@ if i32.const 0 i32.const 232 - i32.const 23 + i32.const 21 i32.const 2 call $~lib/builtins/abort unreachable @@ -3257,7 +3257,7 @@ if i32.const 0 i32.const 232 - i32.const 27 + i32.const 25 i32.const 4 call $~lib/builtins/abort unreachable @@ -3275,7 +3275,7 @@ if i32.const 0 i32.const 232 - i32.const 28 + i32.const 26 i32.const 4 call $~lib/builtins/abort unreachable @@ -3292,7 +3292,7 @@ if i32.const 0 i32.const 232 - i32.const 30 + i32.const 28 i32.const 4 call $~lib/builtins/abort unreachable @@ -3314,7 +3314,7 @@ if i32.const 0 i32.const 232 - i32.const 32 + i32.const 30 i32.const 2 call $~lib/builtins/abort unreachable @@ -3336,7 +3336,7 @@ if i32.const 0 i32.const 232 - i32.const 36 + i32.const 34 i32.const 4 call $~lib/builtins/abort unreachable @@ -3356,7 +3356,7 @@ if i32.const 0 i32.const 232 - i32.const 38 + i32.const 36 i32.const 4 call $~lib/builtins/abort unreachable @@ -3373,7 +3373,7 @@ if i32.const 0 i32.const 232 - i32.const 40 + i32.const 38 i32.const 4 call $~lib/builtins/abort unreachable @@ -3395,7 +3395,7 @@ if i32.const 0 i32.const 232 - i32.const 42 + i32.const 40 i32.const 2 call $~lib/builtins/abort unreachable @@ -3410,7 +3410,7 @@ if i32.const 0 i32.const 232 - i32.const 46 + i32.const 44 i32.const 2 call $~lib/builtins/abort unreachable @@ -3967,7 +3967,7 @@ if i32.const 0 i32.const 232 - i32.const 8 + i32.const 6 i32.const 4 call $~lib/builtins/abort unreachable @@ -3989,7 +3989,7 @@ if i32.const 0 i32.const 232 - i32.const 10 + i32.const 8 i32.const 4 call $~lib/builtins/abort unreachable @@ -4009,7 +4009,7 @@ if i32.const 0 i32.const 232 - i32.const 11 + i32.const 9 i32.const 4 call $~lib/builtins/abort unreachable @@ -4031,7 +4031,7 @@ if i32.const 0 i32.const 232 - i32.const 13 + i32.const 11 i32.const 2 call $~lib/builtins/abort unreachable @@ -4052,7 +4052,7 @@ if i32.const 0 i32.const 232 - i32.const 17 + i32.const 15 i32.const 4 call $~lib/builtins/abort unreachable @@ -4072,7 +4072,7 @@ if i32.const 0 i32.const 232 - i32.const 18 + i32.const 16 i32.const 4 call $~lib/builtins/abort unreachable @@ -4094,7 +4094,7 @@ if i32.const 0 i32.const 232 - i32.const 20 + i32.const 18 i32.const 4 call $~lib/builtins/abort unreachable @@ -4114,7 +4114,7 @@ if i32.const 0 i32.const 232 - i32.const 21 + i32.const 19 i32.const 4 call $~lib/builtins/abort unreachable @@ -4136,7 +4136,7 @@ if i32.const 0 i32.const 232 - i32.const 23 + i32.const 21 i32.const 2 call $~lib/builtins/abort unreachable @@ -4157,7 +4157,7 @@ if i32.const 0 i32.const 232 - i32.const 27 + i32.const 25 i32.const 4 call $~lib/builtins/abort unreachable @@ -4177,7 +4177,7 @@ if i32.const 0 i32.const 232 - i32.const 28 + i32.const 26 i32.const 4 call $~lib/builtins/abort unreachable @@ -4194,7 +4194,7 @@ if i32.const 0 i32.const 232 - i32.const 30 + i32.const 28 i32.const 4 call $~lib/builtins/abort unreachable @@ -4216,7 +4216,7 @@ if i32.const 0 i32.const 232 - i32.const 32 + i32.const 30 i32.const 2 call $~lib/builtins/abort unreachable @@ -4238,7 +4238,7 @@ if i32.const 0 i32.const 232 - i32.const 36 + i32.const 34 i32.const 4 call $~lib/builtins/abort unreachable @@ -4260,7 +4260,7 @@ if i32.const 0 i32.const 232 - i32.const 38 + i32.const 36 i32.const 4 call $~lib/builtins/abort unreachable @@ -4277,7 +4277,7 @@ if i32.const 0 i32.const 232 - i32.const 40 + i32.const 38 i32.const 4 call $~lib/builtins/abort unreachable @@ -4299,7 +4299,7 @@ if i32.const 0 i32.const 232 - i32.const 42 + i32.const 40 i32.const 2 call $~lib/builtins/abort unreachable @@ -4314,7 +4314,7 @@ if i32.const 0 i32.const 232 - i32.const 46 + i32.const 44 i32.const 2 call $~lib/builtins/abort unreachable @@ -4839,7 +4839,7 @@ if i32.const 0 i32.const 232 - i32.const 8 + i32.const 6 i32.const 4 call $~lib/builtins/abort unreachable @@ -4859,7 +4859,7 @@ if i32.const 0 i32.const 232 - i32.const 10 + i32.const 8 i32.const 4 call $~lib/builtins/abort unreachable @@ -4877,7 +4877,7 @@ if i32.const 0 i32.const 232 - i32.const 11 + i32.const 9 i32.const 4 call $~lib/builtins/abort unreachable @@ -4899,7 +4899,7 @@ if i32.const 0 i32.const 232 - i32.const 13 + i32.const 11 i32.const 2 call $~lib/builtins/abort unreachable @@ -4920,7 +4920,7 @@ if i32.const 0 i32.const 232 - i32.const 17 + i32.const 15 i32.const 4 call $~lib/builtins/abort unreachable @@ -4938,7 +4938,7 @@ if i32.const 0 i32.const 232 - i32.const 18 + i32.const 16 i32.const 4 call $~lib/builtins/abort unreachable @@ -4958,7 +4958,7 @@ if i32.const 0 i32.const 232 - i32.const 20 + i32.const 18 i32.const 4 call $~lib/builtins/abort unreachable @@ -4976,7 +4976,7 @@ if i32.const 0 i32.const 232 - i32.const 21 + i32.const 19 i32.const 4 call $~lib/builtins/abort unreachable @@ -4998,7 +4998,7 @@ if i32.const 0 i32.const 232 - i32.const 23 + i32.const 21 i32.const 2 call $~lib/builtins/abort unreachable @@ -5019,7 +5019,7 @@ if i32.const 0 i32.const 232 - i32.const 27 + i32.const 25 i32.const 4 call $~lib/builtins/abort unreachable @@ -5037,7 +5037,7 @@ if i32.const 0 i32.const 232 - i32.const 28 + i32.const 26 i32.const 4 call $~lib/builtins/abort unreachable @@ -5054,7 +5054,7 @@ if i32.const 0 i32.const 232 - i32.const 30 + i32.const 28 i32.const 4 call $~lib/builtins/abort unreachable @@ -5076,7 +5076,7 @@ if i32.const 0 i32.const 232 - i32.const 32 + i32.const 30 i32.const 2 call $~lib/builtins/abort unreachable @@ -5098,7 +5098,7 @@ if i32.const 0 i32.const 232 - i32.const 36 + i32.const 34 i32.const 4 call $~lib/builtins/abort unreachable @@ -5118,7 +5118,7 @@ if i32.const 0 i32.const 232 - i32.const 38 + i32.const 36 i32.const 4 call $~lib/builtins/abort unreachable @@ -5135,7 +5135,7 @@ if i32.const 0 i32.const 232 - i32.const 40 + i32.const 38 i32.const 4 call $~lib/builtins/abort unreachable @@ -5157,7 +5157,7 @@ if i32.const 0 i32.const 232 - i32.const 42 + i32.const 40 i32.const 2 call $~lib/builtins/abort unreachable @@ -5172,7 +5172,7 @@ if i32.const 0 i32.const 232 - i32.const 46 + i32.const 44 i32.const 2 call $~lib/builtins/abort unreachable @@ -5729,7 +5729,7 @@ if i32.const 0 i32.const 232 - i32.const 8 + i32.const 6 i32.const 4 call $~lib/builtins/abort unreachable @@ -5747,7 +5747,7 @@ if i32.const 0 i32.const 232 - i32.const 10 + i32.const 8 i32.const 4 call $~lib/builtins/abort unreachable @@ -5763,7 +5763,7 @@ if i32.const 0 i32.const 232 - i32.const 11 + i32.const 9 i32.const 4 call $~lib/builtins/abort unreachable @@ -5785,7 +5785,7 @@ if i32.const 0 i32.const 232 - i32.const 13 + i32.const 11 i32.const 2 call $~lib/builtins/abort unreachable @@ -5806,7 +5806,7 @@ if i32.const 0 i32.const 232 - i32.const 17 + i32.const 15 i32.const 4 call $~lib/builtins/abort unreachable @@ -5822,7 +5822,7 @@ if i32.const 0 i32.const 232 - i32.const 18 + i32.const 16 i32.const 4 call $~lib/builtins/abort unreachable @@ -5840,7 +5840,7 @@ if i32.const 0 i32.const 232 - i32.const 20 + i32.const 18 i32.const 4 call $~lib/builtins/abort unreachable @@ -5856,7 +5856,7 @@ if i32.const 0 i32.const 232 - i32.const 21 + i32.const 19 i32.const 4 call $~lib/builtins/abort unreachable @@ -5878,7 +5878,7 @@ if i32.const 0 i32.const 232 - i32.const 23 + i32.const 21 i32.const 2 call $~lib/builtins/abort unreachable @@ -5899,7 +5899,7 @@ if i32.const 0 i32.const 232 - i32.const 27 + i32.const 25 i32.const 4 call $~lib/builtins/abort unreachable @@ -5915,7 +5915,7 @@ if i32.const 0 i32.const 232 - i32.const 28 + i32.const 26 i32.const 4 call $~lib/builtins/abort unreachable @@ -5932,7 +5932,7 @@ if i32.const 0 i32.const 232 - i32.const 30 + i32.const 28 i32.const 4 call $~lib/builtins/abort unreachable @@ -5954,7 +5954,7 @@ if i32.const 0 i32.const 232 - i32.const 32 + i32.const 30 i32.const 2 call $~lib/builtins/abort unreachable @@ -5976,7 +5976,7 @@ if i32.const 0 i32.const 232 - i32.const 36 + i32.const 34 i32.const 4 call $~lib/builtins/abort unreachable @@ -5994,7 +5994,7 @@ if i32.const 0 i32.const 232 - i32.const 38 + i32.const 36 i32.const 4 call $~lib/builtins/abort unreachable @@ -6011,7 +6011,7 @@ if i32.const 0 i32.const 232 - i32.const 40 + i32.const 38 i32.const 4 call $~lib/builtins/abort unreachable @@ -6033,7 +6033,7 @@ if i32.const 0 i32.const 232 - i32.const 42 + i32.const 40 i32.const 2 call $~lib/builtins/abort unreachable @@ -6048,7 +6048,7 @@ if i32.const 0 i32.const 232 - i32.const 46 + i32.const 44 i32.const 2 call $~lib/builtins/abort unreachable @@ -6563,7 +6563,7 @@ if i32.const 0 i32.const 232 - i32.const 8 + i32.const 6 i32.const 4 call $~lib/builtins/abort unreachable @@ -6581,7 +6581,7 @@ if i32.const 0 i32.const 232 - i32.const 10 + i32.const 8 i32.const 4 call $~lib/builtins/abort unreachable @@ -6597,7 +6597,7 @@ if i32.const 0 i32.const 232 - i32.const 11 + i32.const 9 i32.const 4 call $~lib/builtins/abort unreachable @@ -6619,7 +6619,7 @@ if i32.const 0 i32.const 232 - i32.const 13 + i32.const 11 i32.const 2 call $~lib/builtins/abort unreachable @@ -6640,7 +6640,7 @@ if i32.const 0 i32.const 232 - i32.const 17 + i32.const 15 i32.const 4 call $~lib/builtins/abort unreachable @@ -6656,7 +6656,7 @@ if i32.const 0 i32.const 232 - i32.const 18 + i32.const 16 i32.const 4 call $~lib/builtins/abort unreachable @@ -6674,7 +6674,7 @@ if i32.const 0 i32.const 232 - i32.const 20 + i32.const 18 i32.const 4 call $~lib/builtins/abort unreachable @@ -6690,7 +6690,7 @@ if i32.const 0 i32.const 232 - i32.const 21 + i32.const 19 i32.const 4 call $~lib/builtins/abort unreachable @@ -6712,7 +6712,7 @@ if i32.const 0 i32.const 232 - i32.const 23 + i32.const 21 i32.const 2 call $~lib/builtins/abort unreachable @@ -6733,7 +6733,7 @@ if i32.const 0 i32.const 232 - i32.const 27 + i32.const 25 i32.const 4 call $~lib/builtins/abort unreachable @@ -6749,7 +6749,7 @@ if i32.const 0 i32.const 232 - i32.const 28 + i32.const 26 i32.const 4 call $~lib/builtins/abort unreachable @@ -6766,7 +6766,7 @@ if i32.const 0 i32.const 232 - i32.const 30 + i32.const 28 i32.const 4 call $~lib/builtins/abort unreachable @@ -6788,7 +6788,7 @@ if i32.const 0 i32.const 232 - i32.const 32 + i32.const 30 i32.const 2 call $~lib/builtins/abort unreachable @@ -6810,7 +6810,7 @@ if i32.const 0 i32.const 232 - i32.const 36 + i32.const 34 i32.const 4 call $~lib/builtins/abort unreachable @@ -6828,7 +6828,7 @@ if i32.const 0 i32.const 232 - i32.const 38 + i32.const 36 i32.const 4 call $~lib/builtins/abort unreachable @@ -6845,7 +6845,7 @@ if i32.const 0 i32.const 232 - i32.const 40 + i32.const 38 i32.const 4 call $~lib/builtins/abort unreachable @@ -6867,7 +6867,7 @@ if i32.const 0 i32.const 232 - i32.const 42 + i32.const 40 i32.const 2 call $~lib/builtins/abort unreachable @@ -6882,7 +6882,7 @@ if i32.const 0 i32.const 232 - i32.const 46 + i32.const 44 i32.const 2 call $~lib/builtins/abort unreachable @@ -7488,7 +7488,7 @@ if i32.const 0 i32.const 232 - i32.const 8 + i32.const 6 i32.const 4 call $~lib/builtins/abort unreachable @@ -7507,7 +7507,7 @@ if i32.const 0 i32.const 232 - i32.const 10 + i32.const 8 i32.const 4 call $~lib/builtins/abort unreachable @@ -7524,7 +7524,7 @@ if i32.const 0 i32.const 232 - i32.const 11 + i32.const 9 i32.const 4 call $~lib/builtins/abort unreachable @@ -7546,7 +7546,7 @@ if i32.const 0 i32.const 232 - i32.const 13 + i32.const 11 i32.const 2 call $~lib/builtins/abort unreachable @@ -7567,7 +7567,7 @@ if i32.const 0 i32.const 232 - i32.const 17 + i32.const 15 i32.const 4 call $~lib/builtins/abort unreachable @@ -7584,7 +7584,7 @@ if i32.const 0 i32.const 232 - i32.const 18 + i32.const 16 i32.const 4 call $~lib/builtins/abort unreachable @@ -7603,7 +7603,7 @@ if i32.const 0 i32.const 232 - i32.const 20 + i32.const 18 i32.const 4 call $~lib/builtins/abort unreachable @@ -7620,7 +7620,7 @@ if i32.const 0 i32.const 232 - i32.const 21 + i32.const 19 i32.const 4 call $~lib/builtins/abort unreachable @@ -7642,7 +7642,7 @@ if i32.const 0 i32.const 232 - i32.const 23 + i32.const 21 i32.const 2 call $~lib/builtins/abort unreachable @@ -7663,7 +7663,7 @@ if i32.const 0 i32.const 232 - i32.const 27 + i32.const 25 i32.const 4 call $~lib/builtins/abort unreachable @@ -7680,7 +7680,7 @@ if i32.const 0 i32.const 232 - i32.const 28 + i32.const 26 i32.const 4 call $~lib/builtins/abort unreachable @@ -7697,7 +7697,7 @@ if i32.const 0 i32.const 232 - i32.const 30 + i32.const 28 i32.const 4 call $~lib/builtins/abort unreachable @@ -7719,7 +7719,7 @@ if i32.const 0 i32.const 232 - i32.const 32 + i32.const 30 i32.const 2 call $~lib/builtins/abort unreachable @@ -7741,7 +7741,7 @@ if i32.const 0 i32.const 232 - i32.const 36 + i32.const 34 i32.const 4 call $~lib/builtins/abort unreachable @@ -7760,7 +7760,7 @@ if i32.const 0 i32.const 232 - i32.const 38 + i32.const 36 i32.const 4 call $~lib/builtins/abort unreachable @@ -7777,7 +7777,7 @@ if i32.const 0 i32.const 232 - i32.const 40 + i32.const 38 i32.const 4 call $~lib/builtins/abort unreachable @@ -7799,7 +7799,7 @@ if i32.const 0 i32.const 232 - i32.const 42 + i32.const 40 i32.const 2 call $~lib/builtins/abort unreachable @@ -7814,7 +7814,7 @@ if i32.const 0 i32.const 232 - i32.const 46 + i32.const 44 i32.const 2 call $~lib/builtins/abort unreachable @@ -8332,7 +8332,7 @@ if i32.const 0 i32.const 232 - i32.const 8 + i32.const 6 i32.const 4 call $~lib/builtins/abort unreachable @@ -8351,7 +8351,7 @@ if i32.const 0 i32.const 232 - i32.const 10 + i32.const 8 i32.const 4 call $~lib/builtins/abort unreachable @@ -8368,7 +8368,7 @@ if i32.const 0 i32.const 232 - i32.const 11 + i32.const 9 i32.const 4 call $~lib/builtins/abort unreachable @@ -8390,7 +8390,7 @@ if i32.const 0 i32.const 232 - i32.const 13 + i32.const 11 i32.const 2 call $~lib/builtins/abort unreachable @@ -8411,7 +8411,7 @@ if i32.const 0 i32.const 232 - i32.const 17 + i32.const 15 i32.const 4 call $~lib/builtins/abort unreachable @@ -8428,7 +8428,7 @@ if i32.const 0 i32.const 232 - i32.const 18 + i32.const 16 i32.const 4 call $~lib/builtins/abort unreachable @@ -8447,7 +8447,7 @@ if i32.const 0 i32.const 232 - i32.const 20 + i32.const 18 i32.const 4 call $~lib/builtins/abort unreachable @@ -8464,7 +8464,7 @@ if i32.const 0 i32.const 232 - i32.const 21 + i32.const 19 i32.const 4 call $~lib/builtins/abort unreachable @@ -8486,7 +8486,7 @@ if i32.const 0 i32.const 232 - i32.const 23 + i32.const 21 i32.const 2 call $~lib/builtins/abort unreachable @@ -8507,7 +8507,7 @@ if i32.const 0 i32.const 232 - i32.const 27 + i32.const 25 i32.const 4 call $~lib/builtins/abort unreachable @@ -8524,7 +8524,7 @@ if i32.const 0 i32.const 232 - i32.const 28 + i32.const 26 i32.const 4 call $~lib/builtins/abort unreachable @@ -8541,7 +8541,7 @@ if i32.const 0 i32.const 232 - i32.const 30 + i32.const 28 i32.const 4 call $~lib/builtins/abort unreachable @@ -8563,7 +8563,7 @@ if i32.const 0 i32.const 232 - i32.const 32 + i32.const 30 i32.const 2 call $~lib/builtins/abort unreachable @@ -8585,7 +8585,7 @@ if i32.const 0 i32.const 232 - i32.const 36 + i32.const 34 i32.const 4 call $~lib/builtins/abort unreachable @@ -8604,7 +8604,7 @@ if i32.const 0 i32.const 232 - i32.const 38 + i32.const 36 i32.const 4 call $~lib/builtins/abort unreachable @@ -8621,7 +8621,7 @@ if i32.const 0 i32.const 232 - i32.const 40 + i32.const 38 i32.const 4 call $~lib/builtins/abort unreachable @@ -8643,7 +8643,7 @@ if i32.const 0 i32.const 232 - i32.const 42 + i32.const 40 i32.const 2 call $~lib/builtins/abort unreachable @@ -8658,7 +8658,7 @@ if i32.const 0 i32.const 232 - i32.const 46 + i32.const 44 i32.const 2 call $~lib/builtins/abort unreachable @@ -9181,7 +9181,7 @@ if i32.const 0 i32.const 232 - i32.const 8 + i32.const 6 i32.const 4 call $~lib/builtins/abort unreachable @@ -9200,7 +9200,7 @@ if i32.const 0 i32.const 232 - i32.const 10 + i32.const 8 i32.const 4 call $~lib/builtins/abort unreachable @@ -9217,7 +9217,7 @@ if i32.const 0 i32.const 232 - i32.const 11 + i32.const 9 i32.const 4 call $~lib/builtins/abort unreachable @@ -9239,7 +9239,7 @@ if i32.const 0 i32.const 232 - i32.const 13 + i32.const 11 i32.const 2 call $~lib/builtins/abort unreachable @@ -9260,7 +9260,7 @@ if i32.const 0 i32.const 232 - i32.const 17 + i32.const 15 i32.const 4 call $~lib/builtins/abort unreachable @@ -9277,7 +9277,7 @@ if i32.const 0 i32.const 232 - i32.const 18 + i32.const 16 i32.const 4 call $~lib/builtins/abort unreachable @@ -9296,7 +9296,7 @@ if i32.const 0 i32.const 232 - i32.const 20 + i32.const 18 i32.const 4 call $~lib/builtins/abort unreachable @@ -9313,7 +9313,7 @@ if i32.const 0 i32.const 232 - i32.const 21 + i32.const 19 i32.const 4 call $~lib/builtins/abort unreachable @@ -9335,7 +9335,7 @@ if i32.const 0 i32.const 232 - i32.const 23 + i32.const 21 i32.const 2 call $~lib/builtins/abort unreachable @@ -9356,7 +9356,7 @@ if i32.const 0 i32.const 232 - i32.const 27 + i32.const 25 i32.const 4 call $~lib/builtins/abort unreachable @@ -9373,7 +9373,7 @@ if i32.const 0 i32.const 232 - i32.const 28 + i32.const 26 i32.const 4 call $~lib/builtins/abort unreachable @@ -9390,7 +9390,7 @@ if i32.const 0 i32.const 232 - i32.const 30 + i32.const 28 i32.const 4 call $~lib/builtins/abort unreachable @@ -9412,7 +9412,7 @@ if i32.const 0 i32.const 232 - i32.const 32 + i32.const 30 i32.const 2 call $~lib/builtins/abort unreachable @@ -9434,7 +9434,7 @@ if i32.const 0 i32.const 232 - i32.const 36 + i32.const 34 i32.const 4 call $~lib/builtins/abort unreachable @@ -9453,7 +9453,7 @@ if i32.const 0 i32.const 232 - i32.const 38 + i32.const 36 i32.const 4 call $~lib/builtins/abort unreachable @@ -9470,7 +9470,7 @@ if i32.const 0 i32.const 232 - i32.const 40 + i32.const 38 i32.const 4 call $~lib/builtins/abort unreachable @@ -9492,7 +9492,7 @@ if i32.const 0 i32.const 232 - i32.const 42 + i32.const 40 i32.const 2 call $~lib/builtins/abort unreachable @@ -9507,7 +9507,7 @@ if i32.const 0 i32.const 232 - i32.const 46 + i32.const 44 i32.const 2 call $~lib/builtins/abort unreachable @@ -10030,7 +10030,7 @@ if i32.const 0 i32.const 232 - i32.const 8 + i32.const 6 i32.const 4 call $~lib/builtins/abort unreachable @@ -10049,7 +10049,7 @@ if i32.const 0 i32.const 232 - i32.const 10 + i32.const 8 i32.const 4 call $~lib/builtins/abort unreachable @@ -10066,7 +10066,7 @@ if i32.const 0 i32.const 232 - i32.const 11 + i32.const 9 i32.const 4 call $~lib/builtins/abort unreachable @@ -10088,7 +10088,7 @@ if i32.const 0 i32.const 232 - i32.const 13 + i32.const 11 i32.const 2 call $~lib/builtins/abort unreachable @@ -10109,7 +10109,7 @@ if i32.const 0 i32.const 232 - i32.const 17 + i32.const 15 i32.const 4 call $~lib/builtins/abort unreachable @@ -10126,7 +10126,7 @@ if i32.const 0 i32.const 232 - i32.const 18 + i32.const 16 i32.const 4 call $~lib/builtins/abort unreachable @@ -10145,7 +10145,7 @@ if i32.const 0 i32.const 232 - i32.const 20 + i32.const 18 i32.const 4 call $~lib/builtins/abort unreachable @@ -10162,7 +10162,7 @@ if i32.const 0 i32.const 232 - i32.const 21 + i32.const 19 i32.const 4 call $~lib/builtins/abort unreachable @@ -10184,7 +10184,7 @@ if i32.const 0 i32.const 232 - i32.const 23 + i32.const 21 i32.const 2 call $~lib/builtins/abort unreachable @@ -10205,7 +10205,7 @@ if i32.const 0 i32.const 232 - i32.const 27 + i32.const 25 i32.const 4 call $~lib/builtins/abort unreachable @@ -10222,7 +10222,7 @@ if i32.const 0 i32.const 232 - i32.const 28 + i32.const 26 i32.const 4 call $~lib/builtins/abort unreachable @@ -10239,7 +10239,7 @@ if i32.const 0 i32.const 232 - i32.const 30 + i32.const 28 i32.const 4 call $~lib/builtins/abort unreachable @@ -10261,7 +10261,7 @@ if i32.const 0 i32.const 232 - i32.const 32 + i32.const 30 i32.const 2 call $~lib/builtins/abort unreachable @@ -10283,7 +10283,7 @@ if i32.const 0 i32.const 232 - i32.const 36 + i32.const 34 i32.const 4 call $~lib/builtins/abort unreachable @@ -10302,7 +10302,7 @@ if i32.const 0 i32.const 232 - i32.const 38 + i32.const 36 i32.const 4 call $~lib/builtins/abort unreachable @@ -10319,7 +10319,7 @@ if i32.const 0 i32.const 232 - i32.const 40 + i32.const 38 i32.const 4 call $~lib/builtins/abort unreachable @@ -10341,7 +10341,7 @@ if i32.const 0 i32.const 232 - i32.const 42 + i32.const 40 i32.const 2 call $~lib/builtins/abort unreachable @@ -10356,7 +10356,7 @@ if i32.const 0 i32.const 232 - i32.const 46 + i32.const 44 i32.const 2 call $~lib/builtins/abort unreachable diff --git a/tests/compiler/std/string.optimized.wat b/tests/compiler/std/string.optimized.wat index abb0cbb5..82aea92d 100644 --- a/tests/compiler/std/string.optimized.wat +++ b/tests/compiler/std/string.optimized.wat @@ -6,264 +6,222 @@ (type $FUNCSIG$iiii (func (param i32 i32 i32) (result i32))) (type $FUNCSIG$vii (func (param i32 i32))) (type $FUNCSIG$viii (func (param i32 i32 i32))) - (type $FUNCSIG$iiiiii (func (param i32 i32 i32 i32 i32) (result i32))) - (type $FUNCSIG$dii (func (param i32 i32) (result f64))) (type $FUNCSIG$di (func (param i32) (result f64))) - (type $FUNCSIG$iiiii (func (param i32 i32 i32 i32) (result i32))) (type $FUNCSIG$vi (func (param i32))) (type $FUNCSIG$ij (func (param i64) (result i32))) (type $FUNCSIG$viji (func (param i32 i64 i32))) (type $FUNCSIG$id (func (param f64) (result i32))) (type $FUNCSIG$iid (func (param i32 f64) (result i32))) - (type $FUNCSIG$jii (func (param i32 i32) (result i64))) (type $FUNCSIG$iijijiji (func (param i32 i64 i32 i64 i32 i64 i32) (result i32))) (type $FUNCSIG$i (func (result i32))) + (type $FUNCSIG$iiiii (func (param i32 i32 i32 i32) (result i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (import "rtrace" "retain" (func $~lib/rt/purerc/onIncrement (param i32))) (import "rtrace" "free" (func $~lib/rt/tlsf/onFree (param i32))) (import "rtrace" "release" (func $~lib/rt/purerc/onDecrement (param i32))) (memory $0 1) - (data (i32.const 8) " \00\00\00\01\00\00\00\10\00\00\00 \00\00\00h\00i\00,\00 \00I\00\'\00m\00 \00a\00 \00s\00t\00r\00i\00n\00g\00") - (data (i32.const 56) "\1a\00\00\00\01\00\00\00\10\00\00\00\1a\00\00\00s\00t\00d\00/\00s\00t\00r\00i\00n\00g\00.\00t\00s\00") - (data (i32.const 104) "\00\00\00\00\01\00\00\00\10\00\00\00\00\00\00\00") - (data (i32.const 120) "\02\00\00\00\01\00\00\00\10\00\00\00\02\00\00\00\00\00") - (data (i32.const 144) "\02\00\00\00\01\00\00\00\10\00\00\00\02\00\00\00a\00") - (data (i32.const 168) "\1e\00\00\00\01\00\00\00\10\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 216) "(\00\00\00\01\00\00\00\10\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 272) "\02\00\00\00\01\00\00\00\10\00\00\00\02\00\00\006\00") - (data (i32.const 296) "\1c\00\00\00\01\00\00\00\10\00\00\00\1c\00\00\00~\00l\00i\00b\00/\00s\00t\00r\00i\00n\00g\00.\00t\00s\00") + (data (i32.const 8) " \00\00\00\01\00\00\00\10\00\00\00 \00\00\00h\00i\00,\00 \00I\00\'\00m\00 \00a\00 \00s\00t\00r\00i\00n\00g") + (data (i32.const 56) "\1a\00\00\00\01\00\00\00\10\00\00\00\1a\00\00\00s\00t\00d\00/\00s\00t\00r\00i\00n\00g\00.\00t\00s") + (data (i32.const 108) "\01\00\00\00\10") + (data (i32.const 120) "\02\00\00\00\01\00\00\00\10\00\00\00\02") + (data (i32.const 144) "\02\00\00\00\01\00\00\00\10\00\00\00\02\00\00\00a") + (data (i32.const 168) "\1e\00\00\00\01\00\00\00\10\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s") + (data (i32.const 216) "(\00\00\00\01\00\00\00\10\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 272) "\02\00\00\00\01\00\00\00\10\00\00\00\02\00\00\006") + (data (i32.const 296) "\1c\00\00\00\01\00\00\00\10\00\00\00\1c\00\00\00~\00l\00i\00b\00/\00s\00t\00r\00i\00n\00g\00.\00t\00s") (data (i32.const 344) "\04\00\00\00\01\00\00\00\10\00\00\00\04\00\00\004\d8\06\df") - (data (i32.const 368) "\04\00\00\00\01\00\00\00\10\00\00\00\04\00\00\00h\00i\00") - (data (i32.const 392) "\08\00\00\00\01\00\00\00\10\00\00\00\08\00\00\00n\00u\00l\00l\00") - (data (i32.const 416) "\0c\00\00\00\01\00\00\00\10\00\00\00\0c\00\00\00s\00t\00r\00i\00n\00g\00") - (data (i32.const 448) "\06\00\00\00\01\00\00\00\10\00\00\00\06\00\00\00I\00\'\00m\00") - (data (i32.const 472) "\02\00\00\00\01\00\00\00\10\00\00\00\02\00\00\00 \00") - (data (i32.const 496) "\06\00\00\00\01\00\00\00\10\00\00\00\06\00\00\00 \00 \00 \00") - (data (i32.const 520) "\06\00\00\00\01\00\00\00\10\00\00\00\06\00\00\00a\00b\00c\00") - (data (i32.const 544) "\n\00\00\00\01\00\00\00\10\00\00\00\n\00\00\00 \00 \00a\00b\00c\00") - (data (i32.const 576) "\06\00\00\00\01\00\00\00\10\00\00\00\06\00\00\001\002\003\00") - (data (i32.const 600) "\0c\00\00\00\01\00\00\00\10\00\00\00\0c\00\00\001\002\003\00a\00b\00c\00") - (data (i32.const 632) "\10\00\00\00\01\00\00\00\10\00\00\00\10\00\00\001\002\003\001\002\00a\00b\00c\00") - (data (i32.const 664) "\n\00\00\00\01\00\00\00\10\00\00\00\n\00\00\00a\00b\00c\00 \00 \00") - (data (i32.const 696) "\0c\00\00\00\01\00\00\00\10\00\00\00\0c\00\00\00a\00b\00c\00a\00b\00c\00") - (data (i32.const 728) "\10\00\00\00\01\00\00\00\10\00\00\00\10\00\00\00a\00b\00c\00a\00b\00c\00a\00b\00") - (data (i32.const 760) "\02\00\00\00\01\00\00\00\10\00\00\00\02\00\00\00,\00") - (data (i32.const 784) "\02\00\00\00\01\00\00\00\10\00\00\00\02\00\00\00x\00") - (data (i32.const 808) "\06\00\00\00\01\00\00\00\10\00\00\00\06\00\00\00,\00 \00I\00") - (data (i32.const 832) "\02\00\00\00\01\00\00\00\10\00\00\00\02\00\00\00g\00") - (data (i32.const 856) "\02\00\00\00\01\00\00\00\10\00\00\00\02\00\00\00i\00") - (data (i32.const 880) "\02\00\00\00\01\00\00\00\10\00\00\00\02\00\00\000\00") - (data (i32.const 904) "\02\00\00\00\01\00\00\00\10\00\00\00\02\00\00\001\00") - (data (i32.const 928) "\n\00\00\00\01\00\00\00\10\00\00\00\n\00\00\000\00b\001\000\001\00") - (data (i32.const 960) "\n\00\00\00\01\00\00\00\10\00\00\00\n\00\00\000\00o\007\000\007\00") - (data (i32.const 992) "\n\00\00\00\01\00\00\00\10\00\00\00\n\00\00\000\00x\00f\000\00f\00") - (data (i32.const 1024) "\n\00\00\00\01\00\00\00\10\00\00\00\n\00\00\000\00x\00F\000\00F\00") - (data (i32.const 1056) "\06\00\00\00\01\00\00\00\10\00\00\00\06\00\00\000\001\001\00") - (data (i32.const 1080) "\08\00\00\00\01\00\00\00\10\00\00\00\08\00\00\000\00x\001\00g\00") - (data (i32.const 1104) "\06\00\00\00\01\00\00\00\10\00\00\00\06\00\00\000\00.\001\00") - (data (i32.const 1128) "\06\00\00\00\01\00\00\00\10\00\00\00\06\00\00\00.\002\005\00") - (data (i32.const 1152) "\10\00\00\00\01\00\00\00\10\00\00\00\10\00\00\00.\001\00f\00o\00o\00b\00a\00r\00") - (data (i32.const 1184) "\02\00\00\00\01\00\00\00\10\00\00\00\02\00\00\00b\00") - (data (i32.const 1208) "\04\00\00\00\01\00\00\00\10\00\00\00\04\00\00\00a\00b\00") - (data (i32.const 1232) "\08\00\00\00\01\00\00\00\10\00\00\00\08\00\00\00k\00e\00y\001\00") - (data (i32.const 1256) "\08\00\00\00\01\00\00\00\10\00\00\00\08\00\00\00k\00e\00y\002\00") - (data (i32.const 1280) "\06\00\00\00\01\00\00\00\10\00\00\00\06\00\00\00k\00e\001\00") - (data (i32.const 1304) "\06\00\00\00\01\00\00\00\10\00\00\00\06\00\00\00k\00e\002\00") - (data (i32.const 1328) "\n\00\00\00\01\00\00\00\10\00\00\00\n\00\00\00k\00e\00y\001\002\00") - (data (i32.const 1360) "\n\00\00\00\01\00\00\00\10\00\00\00\n\00\00\00k\00e\00y\001\001\00") + (data (i32.const 368) "\04\00\00\00\01\00\00\00\10\00\00\00\04\00\00\00h\00i") + (data (i32.const 392) "\08\00\00\00\01\00\00\00\10\00\00\00\08\00\00\00n\00u\00l\00l") + (data (i32.const 416) "\0c\00\00\00\01\00\00\00\10\00\00\00\0c\00\00\00s\00t\00r\00i\00n\00g") + (data (i32.const 448) "\06\00\00\00\01\00\00\00\10\00\00\00\06\00\00\00I\00\'\00m") + (data (i32.const 472) "\02\00\00\00\01\00\00\00\10\00\00\00\02\00\00\00 ") + (data (i32.const 496) "\06\00\00\00\01\00\00\00\10\00\00\00\06\00\00\00 \00 \00 ") + (data (i32.const 520) "\06\00\00\00\01\00\00\00\10\00\00\00\06\00\00\00a\00b\00c") + (data (i32.const 544) "\n\00\00\00\01\00\00\00\10\00\00\00\n\00\00\00 \00 \00a\00b\00c") + (data (i32.const 576) "\06\00\00\00\01\00\00\00\10\00\00\00\06\00\00\001\002\003") + (data (i32.const 600) "\0c\00\00\00\01\00\00\00\10\00\00\00\0c\00\00\001\002\003\00a\00b\00c") + (data (i32.const 632) "\10\00\00\00\01\00\00\00\10\00\00\00\10\00\00\001\002\003\001\002\00a\00b\00c") + (data (i32.const 664) "\n\00\00\00\01\00\00\00\10\00\00\00\n\00\00\00a\00b\00c\00 \00 ") + (data (i32.const 696) "\0c\00\00\00\01\00\00\00\10\00\00\00\0c\00\00\00a\00b\00c\00a\00b\00c") + (data (i32.const 728) "\10\00\00\00\01\00\00\00\10\00\00\00\10\00\00\00a\00b\00c\00a\00b\00c\00a\00b") + (data (i32.const 760) "\02\00\00\00\01\00\00\00\10\00\00\00\02\00\00\00,") + (data (i32.const 784) "\02\00\00\00\01\00\00\00\10\00\00\00\02\00\00\00x") + (data (i32.const 808) "\06\00\00\00\01\00\00\00\10\00\00\00\06\00\00\00,\00 \00I") + (data (i32.const 832) "\02\00\00\00\01\00\00\00\10\00\00\00\02\00\00\00g") + (data (i32.const 856) "\02\00\00\00\01\00\00\00\10\00\00\00\02\00\00\00i") + (data (i32.const 880) "\02\00\00\00\01\00\00\00\10\00\00\00\02\00\00\000") + (data (i32.const 904) "\02\00\00\00\01\00\00\00\10\00\00\00\02\00\00\001") + (data (i32.const 928) "\n\00\00\00\01\00\00\00\10\00\00\00\n\00\00\000\00b\001\000\001") + (data (i32.const 960) "\n\00\00\00\01\00\00\00\10\00\00\00\n\00\00\000\00o\007\000\007") + (data (i32.const 992) "\n\00\00\00\01\00\00\00\10\00\00\00\n\00\00\000\00x\00f\000\00f") + (data (i32.const 1024) "\n\00\00\00\01\00\00\00\10\00\00\00\n\00\00\000\00x\00F\000\00F") + (data (i32.const 1056) "\06\00\00\00\01\00\00\00\10\00\00\00\06\00\00\000\001\001") + (data (i32.const 1080) "\08\00\00\00\01\00\00\00\10\00\00\00\08\00\00\000\00x\001\00g") + (data (i32.const 1104) "\06\00\00\00\01\00\00\00\10\00\00\00\06\00\00\000\00.\001") + (data (i32.const 1128) "\06\00\00\00\01\00\00\00\10\00\00\00\06\00\00\00.\002\005") + (data (i32.const 1152) "\10\00\00\00\01\00\00\00\10\00\00\00\10\00\00\00.\001\00f\00o\00o\00b\00a\00r") + (data (i32.const 1184) "\02\00\00\00\01\00\00\00\10\00\00\00\02\00\00\00b") + (data (i32.const 1208) "\04\00\00\00\01\00\00\00\10\00\00\00\04\00\00\00a\00b") + (data (i32.const 1232) "\08\00\00\00\01\00\00\00\10\00\00\00\08\00\00\00k\00e\00y\001") + (data (i32.const 1256) "\08\00\00\00\01\00\00\00\10\00\00\00\08\00\00\00k\00e\00y\002") + (data (i32.const 1280) "\06\00\00\00\01\00\00\00\10\00\00\00\06\00\00\00k\00e\001") + (data (i32.const 1304) "\06\00\00\00\01\00\00\00\10\00\00\00\06\00\00\00k\00e\002") + (data (i32.const 1328) "\n\00\00\00\01\00\00\00\10\00\00\00\n\00\00\00k\00e\00y\001\002") + (data (i32.const 1360) "\n\00\00\00\01\00\00\00\10\00\00\00\n\00\00\00k\00e\00y\001\001") (data (i32.const 1392) "\0e\00\00\00\01\00\00\00\10\00\00\00\0e\00\00\00\a40\ed0\cf0\cb0\db0\d80\c80") (data (i32.const 1424) "\0e\00\00\00\01\00\00\00\10\00\00\00\0e\00\00\00\a60\f00\ce0\aa0\af0\e40\de0") - (data (i32.const 1456) "\16\00\00\00\01\00\00\00\10\00\00\00\16\00\00\00D\00\19 f\00h\00u\00a\00s\00c\00a\00i\00l\00") - (data (i32.const 1496) "\14\00\00\00\01\00\00\00\10\00\00\00\14\00\00\00D\00\19 \1f\1eu\00a\00s\00c\00a\00i\00l\00") - (data (i32.const 1536) "\04\00\00\00\01\00\00\00\10\00\00\00\04\00\00\00b\00a\00") - (data (i32.const 1560) "\04\00\00\00\01\00\00\00\10\00\00\00\04\00\00\00a\00a\00") - (data (i32.const 1584) "\1c\00\00\00\01\00\00\00\10\00\00\00\1c\00\00\00I\00n\00v\00a\00l\00i\00d\00 \00l\00e\00n\00g\00t\00h\00") - (data (i32.const 1632) "\06\00\00\00\01\00\00\00\10\00\00\00\06\00\00\00a\00a\00a\00") - (data (i32.const 1656) "\10\00\00\00\01\00\00\00\10\00\00\00\10\00\00\00a\00b\00a\00b\00a\00b\00a\00b\00") - (data (i32.const 1688) "\n\00\00\00\01\00\00\00\10\00\00\00\n\00\00\00a\00a\00a\00a\00a\00") - (data (i32.const 1720) "\0c\00\00\00\01\00\00\00\10\00\00\00\0c\00\00\00a\00a\00a\00a\00a\00a\00") - (data (i32.const 1752) "\0e\00\00\00\01\00\00\00\10\00\00\00\0e\00\00\00a\00a\00a\00a\00a\00a\00a\00") - (data (i32.const 1784) "\1c\00\00\00\01\00\00\00\10\00\00\00\1c\00\00\00a\00b\00c\00d\00e\00f\00g\00h\00i\00j\00k\00l\00m\00n\00") - (data (i32.const 1832) "\02\00\00\00\01\00\00\00\10\00\00\00\02\00\00\00n\00") - (data (i32.const 1856) "\n\00\00\00\01\00\00\00\10\00\00\00\n\00\00\00j\00k\00l\00m\00n\00") - (data (i32.const 1888) "\n\00\00\00\01\00\00\00\10\00\00\00\n\00\00\00c\00d\00e\00f\00g\00") - (data (i32.const 1920) "\n\00\00\00\01\00\00\00\10\00\00\00\n\00\00\00d\00e\00f\00g\00h\00") - (data (i32.const 1952) "\1a\00\00\00\01\00\00\00\10\00\00\00\1a\00\00\00a\00b\00c\00d\00e\00f\00g\00h\00i\00j\00k\00l\00m\00") - (data (i32.const 2000) "\"\00\00\00\01\00\00\00\10\00\00\00\"\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00p\00u\00r\00e\00r\00c\00.\00t\00s\00") - (data (i32.const 2056) "\1a\00\00\00\01\00\00\00\10\00\00\00\1a\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00.\00t\00s\00") - (data (i32.const 2104) "$\00\00\00\01\00\00\00\10\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 2160) "\"\00\00\00\01\00\00\00\10\00\00\00\"\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00c\00o\00m\00m\00o\00n\00.\00t\00s\00") - (data (i32.const 2216) "^\00\00\00\01\00\00\00\10\00\00\00^\00\00\00E\00l\00e\00m\00e\00n\00t\00 \00t\00y\00p\00e\00 \00m\00u\00s\00t\00 \00b\00e\00 \00n\00u\00l\00l\00a\00b\00l\00e\00 \00i\00f\00 \00a\00r\00r\00a\00y\00 \00i\00s\00 \00h\00o\00l\00e\00y\00") - (data (i32.const 2328) "\n\00\00\00\01\00\00\00\10\00\00\00\n\00\00\00a\00,\00b\00,\00c\00") - (data (i32.const 2360) "\02\00\00\00\01\00\00\00\10\00\00\00\02\00\00\00.\00") - (data (i32.const 2384) "\02\00\00\00\01\00\00\00\10\00\00\00\02\00\00\00c\00") - (data (i32.const 2408) "\90\01\00\00\01\00\00\00\0f\00\00\00\90\01\00\000\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\00") - (data (i32.const 2824) "\10\00\00\00\01\00\00\00\13\00\00\00\10\00\00\00x\t\00\00x\t\00\00\90\01\00\00d\00\00\00") - (data (i32.const 2856) "\02\00\00\00\01\00\00\00\10\00\00\00\02\00\00\008\00") - (data (i32.const 2880) "\n\00\00\00\01\00\00\00\10\00\00\00\n\00\00\00-\001\000\000\000\00") - (data (i32.const 2912) "\08\00\00\00\01\00\00\00\10\00\00\00\08\00\00\001\002\003\004\00") - (data (i32.const 2936) "\n\00\00\00\01\00\00\00\10\00\00\00\n\00\00\001\002\003\004\005\00") - (data (i32.const 2968) "\0c\00\00\00\01\00\00\00\10\00\00\00\0c\00\00\001\002\003\004\005\006\00") - (data (i32.const 3000) "\0e\00\00\00\01\00\00\00\10\00\00\00\0e\00\00\001\001\001\001\001\001\001\00") - (data (i32.const 3032) "\0e\00\00\00\01\00\00\00\10\00\00\00\0e\00\00\001\002\003\004\005\006\007\00") - (data (i32.const 3064) "\14\00\00\00\01\00\00\00\10\00\00\00\14\00\00\002\001\004\007\004\008\003\006\004\006\00") - (data (i32.const 3104) "\14\00\00\00\01\00\00\00\10\00\00\00\14\00\00\002\001\004\007\004\008\003\006\004\007\00") - (data (i32.const 3144) "\16\00\00\00\01\00\00\00\10\00\00\00\16\00\00\00-\002\001\004\007\004\008\003\006\004\008\00") - (data (i32.const 3184) "\04\00\00\00\01\00\00\00\10\00\00\00\04\00\00\00-\001\00") - (data (i32.const 3208) "\08\00\00\00\01\00\00\00\10\00\00\00\08\00\00\001\000\000\000\00") - (data (i32.const 3232) "\14\00\00\00\01\00\00\00\10\00\00\00\14\00\00\002\001\004\007\004\008\003\006\004\008\00") - (data (i32.const 3272) "\14\00\00\00\01\00\00\00\10\00\00\00\14\00\00\004\002\009\004\009\006\007\002\009\005\00") - (data (i32.const 3312) "\10\00\00\00\01\00\00\00\10\00\00\00\10\00\00\009\009\009\009\009\009\009\009\00") - (data (i32.const 3344) "\12\00\00\00\01\00\00\00\10\00\00\00\12\00\00\001\000\000\000\000\000\000\000\000\00") - (data (i32.const 3384) "\16\00\00\00\01\00\00\00\10\00\00\00\16\00\00\006\008\007\001\009\004\007\006\007\003\005\00") - (data (i32.const 3424) "\18\00\00\00\01\00\00\00\10\00\00\00\18\00\00\008\006\008\007\001\009\004\007\006\007\003\005\00") - (data (i32.const 3464) "\1e\00\00\00\01\00\00\00\10\00\00\00\1e\00\00\009\009\009\008\006\008\007\001\009\004\007\006\007\003\005\00") - (data (i32.const 3512) " \00\00\00\01\00\00\00\10\00\00\00 \00\00\009\009\009\009\008\006\008\007\001\009\004\007\006\007\003\005\00") - (data (i32.const 3560) "\"\00\00\00\01\00\00\00\10\00\00\00\"\00\00\001\009\009\009\009\008\006\008\007\001\009\004\007\006\007\003\005\00") - (data (i32.const 3616) "(\00\00\00\01\00\00\00\10\00\00\00(\00\00\001\008\004\004\006\007\004\004\000\007\003\007\000\009\005\005\001\006\001\005\00") - (data (i32.const 3672) "\n\00\00\00\01\00\00\00\10\00\00\00\n\00\00\00-\001\002\003\004\00") - (data (i32.const 3704) "\16\00\00\00\01\00\00\00\10\00\00\00\16\00\00\00-\004\002\009\004\009\006\007\002\009\005\00") - (data (i32.const 3744) "\18\00\00\00\01\00\00\00\10\00\00\00\18\00\00\00-\006\008\007\001\009\004\007\006\007\003\005\00") - (data (i32.const 3784) "\1a\00\00\00\01\00\00\00\10\00\00\00\1a\00\00\00-\008\006\008\007\001\009\004\007\006\007\003\005\00") - (data (i32.const 3832) " \00\00\00\01\00\00\00\10\00\00\00 \00\00\00-\009\009\009\008\006\008\007\001\009\004\007\006\007\003\005\00") - (data (i32.const 3880) "$\00\00\00\01\00\00\00\10\00\00\00$\00\00\00-\001\009\009\009\009\008\006\008\007\001\009\004\007\006\007\003\005\00") - (data (i32.const 3936) "&\00\00\00\01\00\00\00\10\00\00\00&\00\00\009\002\002\003\003\007\002\000\003\006\008\005\004\007\007\005\008\000\007\00") - (data (i32.const 3992) "(\00\00\00\01\00\00\00\10\00\00\00(\00\00\00-\009\002\002\003\003\007\002\000\003\006\008\005\004\007\007\005\008\000\008\00") - (data (i32.const 4048) "\06\00\00\00\01\00\00\00\10\00\00\00\06\00\00\000\00.\000\00") - (data (i32.const 4072) "\06\00\00\00\01\00\00\00\10\00\00\00\06\00\00\00N\00a\00N\00") - (data (i32.const 4096) "\12\00\00\00\01\00\00\00\10\00\00\00\12\00\00\00-\00I\00n\00f\00i\00n\00i\00t\00y\00") - (data (i32.const 4136) "\10\00\00\00\01\00\00\00\10\00\00\00\10\00\00\00I\00n\00f\00i\00n\00i\00t\00y\00") + (data (i32.const 1456) "\16\00\00\00\01\00\00\00\10\00\00\00\16\00\00\00D\00\19 f\00h\00u\00a\00s\00c\00a\00i\00l") + (data (i32.const 1496) "\14\00\00\00\01\00\00\00\10\00\00\00\14\00\00\00D\00\19 \1f\1eu\00a\00s\00c\00a\00i\00l") + (data (i32.const 1536) "\04\00\00\00\01\00\00\00\10\00\00\00\04\00\00\00b\00a") + (data (i32.const 1560) "\04\00\00\00\01\00\00\00\10\00\00\00\04\00\00\00a\00a") + (data (i32.const 1584) "\1c\00\00\00\01\00\00\00\10\00\00\00\1c\00\00\00I\00n\00v\00a\00l\00i\00d\00 \00l\00e\00n\00g\00t\00h") + (data (i32.const 1632) "\06\00\00\00\01\00\00\00\10\00\00\00\06\00\00\00a\00a\00a") + (data (i32.const 1656) "\10\00\00\00\01\00\00\00\10\00\00\00\10\00\00\00a\00b\00a\00b\00a\00b\00a\00b") + (data (i32.const 1688) "\n\00\00\00\01\00\00\00\10\00\00\00\n\00\00\00a\00a\00a\00a\00a") + (data (i32.const 1720) "\0c\00\00\00\01\00\00\00\10\00\00\00\0c\00\00\00a\00a\00a\00a\00a\00a") + (data (i32.const 1752) "\0e\00\00\00\01\00\00\00\10\00\00\00\0e\00\00\00a\00a\00a\00a\00a\00a\00a") + (data (i32.const 1784) "\1c\00\00\00\01\00\00\00\10\00\00\00\1c\00\00\00a\00b\00c\00d\00e\00f\00g\00h\00i\00j\00k\00l\00m\00n") + (data (i32.const 1832) "\02\00\00\00\01\00\00\00\10\00\00\00\02\00\00\00n") + (data (i32.const 1856) "\n\00\00\00\01\00\00\00\10\00\00\00\n\00\00\00j\00k\00l\00m\00n") + (data (i32.const 1888) "\n\00\00\00\01\00\00\00\10\00\00\00\n\00\00\00c\00d\00e\00f\00g") + (data (i32.const 1920) "\n\00\00\00\01\00\00\00\10\00\00\00\n\00\00\00d\00e\00f\00g\00h") + (data (i32.const 1952) "\1a\00\00\00\01\00\00\00\10\00\00\00\1a\00\00\00a\00b\00c\00d\00e\00f\00g\00h\00i\00j\00k\00l\00m") + (data (i32.const 2000) "\"\00\00\00\01\00\00\00\10\00\00\00\"\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00p\00u\00r\00e\00r\00c\00.\00t\00s") + (data (i32.const 2056) "\1a\00\00\00\01\00\00\00\10\00\00\00\1a\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00.\00t\00s") + (data (i32.const 2104) "$\00\00\00\01\00\00\00\10\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 2160) "\"\00\00\00\01\00\00\00\10\00\00\00\"\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00c\00o\00m\00m\00o\00n\00.\00t\00s") + (data (i32.const 2216) "^\00\00\00\01\00\00\00\10\00\00\00^\00\00\00E\00l\00e\00m\00e\00n\00t\00 \00t\00y\00p\00e\00 \00m\00u\00s\00t\00 \00b\00e\00 \00n\00u\00l\00l\00a\00b\00l\00e\00 \00i\00f\00 \00a\00r\00r\00a\00y\00 \00i\00s\00 \00h\00o\00l\00e\00y") + (data (i32.const 2328) "\n\00\00\00\01\00\00\00\10\00\00\00\n\00\00\00a\00,\00b\00,\00c") + (data (i32.const 2360) "\02\00\00\00\01\00\00\00\10\00\00\00\02\00\00\00.") + (data (i32.const 2384) "\02\00\00\00\01\00\00\00\10\00\00\00\02\00\00\00c") + (data (i32.const 2408) "\90\01\00\00\01\00\00\00\0f\00\00\00\90\01\00\000\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009") + (data (i32.const 2824) "\10\00\00\00\01\00\00\00\13\00\00\00\10\00\00\00x\t\00\00x\t\00\00\90\01\00\00d") + (data (i32.const 2856) "\02\00\00\00\01\00\00\00\10\00\00\00\02\00\00\008") + (data (i32.const 2880) "\n\00\00\00\01\00\00\00\10\00\00\00\n\00\00\00-\001\000\000\000") + (data (i32.const 2912) "\08\00\00\00\01\00\00\00\10\00\00\00\08\00\00\001\002\003\004") + (data (i32.const 2936) "\n\00\00\00\01\00\00\00\10\00\00\00\n\00\00\001\002\003\004\005") + (data (i32.const 2968) "\0c\00\00\00\01\00\00\00\10\00\00\00\0c\00\00\001\002\003\004\005\006") + (data (i32.const 3000) "\0e\00\00\00\01\00\00\00\10\00\00\00\0e\00\00\001\001\001\001\001\001\001") + (data (i32.const 3032) "\0e\00\00\00\01\00\00\00\10\00\00\00\0e\00\00\001\002\003\004\005\006\007") + (data (i32.const 3064) "\14\00\00\00\01\00\00\00\10\00\00\00\14\00\00\002\001\004\007\004\008\003\006\004\006") + (data (i32.const 3104) "\14\00\00\00\01\00\00\00\10\00\00\00\14\00\00\002\001\004\007\004\008\003\006\004\007") + (data (i32.const 3144) "\16\00\00\00\01\00\00\00\10\00\00\00\16\00\00\00-\002\001\004\007\004\008\003\006\004\008") + (data (i32.const 3184) "\04\00\00\00\01\00\00\00\10\00\00\00\04\00\00\00-\001") + (data (i32.const 3208) "\08\00\00\00\01\00\00\00\10\00\00\00\08\00\00\001\000\000\000") + (data (i32.const 3232) "\14\00\00\00\01\00\00\00\10\00\00\00\14\00\00\002\001\004\007\004\008\003\006\004\008") + (data (i32.const 3272) "\14\00\00\00\01\00\00\00\10\00\00\00\14\00\00\004\002\009\004\009\006\007\002\009\005") + (data (i32.const 3312) "\10\00\00\00\01\00\00\00\10\00\00\00\10\00\00\009\009\009\009\009\009\009\009") + (data (i32.const 3344) "\12\00\00\00\01\00\00\00\10\00\00\00\12\00\00\001\000\000\000\000\000\000\000\000") + (data (i32.const 3384) "\16\00\00\00\01\00\00\00\10\00\00\00\16\00\00\006\008\007\001\009\004\007\006\007\003\005") + (data (i32.const 3424) "\18\00\00\00\01\00\00\00\10\00\00\00\18\00\00\008\006\008\007\001\009\004\007\006\007\003\005") + (data (i32.const 3464) "\1e\00\00\00\01\00\00\00\10\00\00\00\1e\00\00\009\009\009\008\006\008\007\001\009\004\007\006\007\003\005") + (data (i32.const 3512) " \00\00\00\01\00\00\00\10\00\00\00 \00\00\009\009\009\009\008\006\008\007\001\009\004\007\006\007\003\005") + (data (i32.const 3560) "\"\00\00\00\01\00\00\00\10\00\00\00\"\00\00\001\009\009\009\009\008\006\008\007\001\009\004\007\006\007\003\005") + (data (i32.const 3616) "(\00\00\00\01\00\00\00\10\00\00\00(\00\00\001\008\004\004\006\007\004\004\000\007\003\007\000\009\005\005\001\006\001\005") + (data (i32.const 3672) "\n\00\00\00\01\00\00\00\10\00\00\00\n\00\00\00-\001\002\003\004") + (data (i32.const 3704) "\16\00\00\00\01\00\00\00\10\00\00\00\16\00\00\00-\004\002\009\004\009\006\007\002\009\005") + (data (i32.const 3744) "\18\00\00\00\01\00\00\00\10\00\00\00\18\00\00\00-\006\008\007\001\009\004\007\006\007\003\005") + (data (i32.const 3784) "\1a\00\00\00\01\00\00\00\10\00\00\00\1a\00\00\00-\008\006\008\007\001\009\004\007\006\007\003\005") + (data (i32.const 3832) " \00\00\00\01\00\00\00\10\00\00\00 \00\00\00-\009\009\009\008\006\008\007\001\009\004\007\006\007\003\005") + (data (i32.const 3880) "$\00\00\00\01\00\00\00\10\00\00\00$\00\00\00-\001\009\009\009\009\008\006\008\007\001\009\004\007\006\007\003\005") + (data (i32.const 3936) "&\00\00\00\01\00\00\00\10\00\00\00&\00\00\009\002\002\003\003\007\002\000\003\006\008\005\004\007\007\005\008\000\007") + (data (i32.const 3992) "(\00\00\00\01\00\00\00\10\00\00\00(\00\00\00-\009\002\002\003\003\007\002\000\003\006\008\005\004\007\007\005\008\000\008") + (data (i32.const 4048) "\06\00\00\00\01\00\00\00\10\00\00\00\06\00\00\000\00.\000") + (data (i32.const 4072) "\06\00\00\00\01\00\00\00\10\00\00\00\06\00\00\00N\00a\00N") + (data (i32.const 4096) "\12\00\00\00\01\00\00\00\10\00\00\00\12\00\00\00-\00I\00n\00f\00i\00n\00i\00t\00y") + (data (i32.const 4136) "\10\00\00\00\01\00\00\00\10\00\00\00\10\00\00\00I\00n\00f\00i\00n\00i\00t\00y") (data (i32.const 4168) "\b8\02\00\00\01\00\00\00\0f\00\00\00\b8\02\00\00\88\02\1c\08\a0\d5\8f\fav\bf>\a2\7f\e1\ae\bav\acU0 \fb\16\8b\ea5\ce]J\89B\cf-;eU\aa\b0k\9a\dfE\1a=\03\cf\1a\e6\ca\c6\9a\c7\17\fep\abO\dc\bc\be\fc\b1w\ff\0c\d6kA\ef\91V\be<\fc\7f\90\ad\1f\d0\8d\83\9aU1(\\Q\d3\b5\c9\a6\ad\8f\acq\9d\cb\8b\ee#w\"\9c\eamSx@\91I\cc\aeW\ce\b6]y\12<\827V\fbM6\94\10\c2O\98H8o\ea\96\90\c7:\82%\cb\85t\d7\f4\97\bf\97\cd\cf\86\a0\e5\ac*\17\98\n4\ef\8e\b25*\fbg8\b2;?\c6\d2\df\d4\c8\84\ba\cd\d3\1a\'D\dd\c5\96\c9%\bb\ce\9fk\93\84\a5b}$l\ac\db\f6\da_\0dXf\ab\a3&\f1\c3\de\93\f8\e2\f3\b8\80\ff\aa\a8\ad\b5\b5\8bJ|l\05_b\87S0\c14`\ff\bc\c9U&\ba\91\8c\85N\96\bd~)p$w\f9\df\8f\b8\e5\b8\9f\bd\df\a6\94}t\88\cf_\a9\f8\cf\9b\a8\8f\93pD\b9k\15\0f\bf\f8\f0\08\8a\b611eU%\b0\cd\ac\7f{\d0\c6\e2?\99\06;+*\c4\10\\\e4\d3\92si\99$$\aa\0e\ca\00\83\f2\b5\87\fd\eb\1a\11\92d\08\e5\bc\cc\88Po\t\cc\bc\8c,e\19\e2X\17\b7\d1\00\00\00\00\00\00@\9c\00\00\00\00\10\a5\d4\e8\00\00b\ac\c5\ebx\ad\84\t\94\f8x9?\81\b3\15\07\c9{\ce\97\c0p\\\ea{\ce2~\8fh\80\e9\ab\a48\d2\d5E\"\9a\17&\'O\9f\'\fb\c4\d41\a2c\ed\a8\ad\c8\8c8e\de\b0\dbe\ab\1a\8e\08\c7\83\9a\1dqB\f9\1d]\c4X\e7\1b\a6,iM\92\ea\8dp\1ad\ee\01\daJw\ef\9a\99\a3m\a2\85k}\b4{x\t\f2w\18\ddy\a1\e4T\b4\c2\c5\9b[\92\86[\86=]\96\c8\c5S5\c8\b3\a0\97\fa\\\b4*\95\e3_\a0\99\bd\9fF\de%\8c9\db4\c2\9b\a5\\\9f\98\a3r\9a\c6\f6\ce\be\e9TS\bf\dc\b7\e2A\"\f2\17\f3\fc\88\a5x\\\d3\9b\ce \cc\dfS!{\f3Z\16\98:0\1f\97\dc\b5\a0\e2\96\b3\e3\\S\d1\d9\a8 (; 29 ;) (type $FUNCSIG$dii) (param $0 i32) (param $1 i32) (result f64) + (func $~lib/util/string/parse (; 27 ;) (type $FUNCSIG$di) (param $0 i32) (result f64) + (local $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) (local $5 f64) - (local $6 i32) - (local $7 f64) + (local $6 f64) local.get $0 call $~lib/rt/purerc/__retain drop - local.get $0 - call $~lib/string/String#get:length - local.set $2 - local.get $2 - i32.eqz - if + block $folding-inner0 local.get $0 - call $~lib/rt/purerc/__release - f64.const nan:0x8000000000000 - return - end - local.get $0 - local.set $3 - local.get $3 - i32.load16_u - local.set $4 - local.get $4 - i32.const 45 - i32.eq - if - local.get $2 - i32.const 1 + i32.const 16 i32.sub - local.tee $2 - i32.eqz - if - local.get $0 - call $~lib/rt/purerc/__release - f64.const nan:0x8000000000000 - return - end - local.get $3 - i32.const 2 - i32.add + i32.load offset=12 + i32.const 1 + i32.shr_u local.tee $3 + i32.eqz + br_if $folding-inner0 + local.get $0 + local.tee $2 i32.load16_u - local.set $4 - f64.const -1 - local.set $5 - else - local.get $4 - i32.const 43 + local.tee $1 + i32.const 45 i32.eq - if - local.get $2 + if (result f64) + local.get $3 i32.const 1 i32.sub - local.tee $2 - i32.eqz - if - local.get $0 - call $~lib/rt/purerc/__release - f64.const nan:0x8000000000000 - return - end - local.get $3 - i32.const 2 - i32.add local.tee $3 - i32.load16_u - local.set $4 - f64.const 1 - local.set $5 - else - f64.const 1 - local.set $5 - end - end - local.get $1 - i32.eqz - if - local.get $4 - i32.const 48 - i32.eq - if (result i32) + i32.eqz + br_if $folding-inner0 local.get $2 i32.const 2 - i32.gt_s + i32.add + local.tee $2 + i32.load16_u + local.set $1 + f64.const -1 else - i32.const 0 + local.get $1 + i32.const 43 + i32.eq + if + local.get $3 + i32.const 1 + i32.sub + local.tee $3 + i32.eqz + if + local.get $0 + call $~lib/rt/purerc/__release + f64.const nan:0x8000000000000 + return + end + local.get $2 + i32.const 2 + i32.add + local.tee $2 + i32.load16_u + local.set $1 + end + f64.const 1 end - if - block $break|0 + local.set $6 + local.get $3 + i32.const 2 + i32.gt_s + i32.const 0 + local.get $1 + i32.const 48 + i32.eq + select + if (result i32) + block $break|0 (result i32) block $case6|0 block $case5|0 - block $case4|0 - block $case3|0 - block $case2|0 - block $case1|0 - block $case0|0 - local.get $3 - i32.const 2 - i32.add - i32.load16_u - local.set $6 - local.get $6 - i32.const 66 - i32.eq - br_if $case0|0 - local.get $6 - i32.const 98 - i32.eq - br_if $case1|0 - local.get $6 - i32.const 79 - i32.eq - br_if $case2|0 - local.get $6 - i32.const 111 - i32.eq - br_if $case3|0 - local.get $6 - i32.const 88 - i32.eq - br_if $case4|0 - local.get $6 - i32.const 120 - i32.eq - br_if $case5|0 - br $case6|0 - end - end - block - local.get $3 - i32.const 4 - i32.add - local.set $3 - local.get $2 - i32.const 2 - i32.sub - local.set $2 - i32.const 2 - local.set $1 - br $break|0 - unreachable - end - unreachable - end - end - block - local.get $3 - i32.const 4 - i32.add - local.set $3 + block $case3|0 + block $case1|0 local.get $2 i32.const 2 - i32.sub - local.set $2 - i32.const 8 - local.set $1 - br $break|0 - unreachable + i32.add + i32.load16_u + local.tee $1 + i32.const 66 + i32.eq + br_if $case1|0 + local.get $1 + i32.const 98 + i32.eq + br_if $case1|0 + local.get $1 + i32.const 79 + i32.eq + br_if $case3|0 + local.get $1 + i32.const 111 + i32.eq + br_if $case3|0 + local.get $1 + i32.const 88 + i32.eq + br_if $case5|0 + local.get $1 + i32.const 120 + i32.eq + br_if $case5|0 + br $case6|0 end - unreachable + local.get $2 + i32.const 4 + i32.add + local.set $2 + local.get $3 + i32.const 2 + i32.sub + local.set $3 + i32.const 2 + br $break|0 end - end - block - local.get $3 + local.get $2 i32.const 4 i32.add - local.set $3 - local.get $2 + local.set $2 + local.get $3 i32.const 2 i32.sub - local.set $2 - i32.const 16 - local.set $1 + local.set $3 + i32.const 8 br $break|0 - unreachable end - unreachable + local.get $2 + i32.const 4 + i32.add + local.set $2 + local.get $3 + i32.const 2 + i32.sub + local.set $3 + i32.const 16 + br $break|0 end i32.const 10 - local.set $1 end else i32.const 10 - local.set $1 end - else - local.get $1 - i32.const 2 - i32.lt_s - if (result i32) - i32.const 1 - else - local.get $1 - i32.const 36 - i32.gt_s - end - if - local.get $0 - call $~lib/rt/purerc/__release - f64.const nan:0x8000000000000 - return - end - end - f64.const 0 - local.set $7 - block $break|1 + local.set $4 loop $continue|1 - block (result i32) - local.get $2 - local.tee $6 + block $break|1 + local.get $3 + local.tee $1 i32.const 1 i32.sub - local.set $2 - local.get $6 - end - if - local.get $3 - i32.load16_u - local.set $4 - local.get $4 - i32.const 48 - i32.ge_s - if (result i32) - local.get $4 - i32.const 57 - i32.le_s - else - i32.const 0 - end + local.set $3 + local.get $1 if - local.get $4 + local.get $2 + i32.load16_u + local.tee $1 i32.const 48 - i32.sub - local.set $4 - else - local.get $4 - i32.const 65 i32.ge_s if (result i32) - local.get $4 - i32.const 90 + local.get $1 + i32.const 57 i32.le_s else i32.const 0 end - if - local.get $4 - i32.const 65 - i32.const 10 + if (result i32) + local.get $1 + i32.const 48 i32.sub - i32.sub - local.set $4 else - local.get $4 - i32.const 97 + local.get $1 + i32.const 90 + i32.le_s + i32.const 0 + local.get $1 + i32.const 65 i32.ge_s + select if (result i32) - local.get $4 + local.get $1 + i32.const 55 + i32.sub + else + local.get $1 i32.const 122 i32.le_s - else i32.const 0 - end - if - local.get $4 + local.get $1 i32.const 97 - i32.const 10 + i32.ge_s + select + i32.eqz + br_if $break|1 + local.get $1 + i32.const 87 i32.sub - i32.sub - local.set $4 - else - br $break|1 end end + local.tee $1 + local.get $4 + i32.ge_s + br_if $break|1 + local.get $5 + local.get $4 + f64.convert_i32_s + f64.mul + local.get $1 + f64.convert_i32_s + f64.add + local.set $5 + local.get $2 + i32.const 2 + i32.add + local.set $2 + br $continue|1 end - local.get $4 - local.get $1 - i32.ge_s - if - br $break|1 - end - local.get $7 - local.get $1 - f64.convert_i32_s - f64.mul - local.get $4 - f64.convert_i32_s - f64.add - local.set $7 - local.get $3 - i32.const 2 - i32.add - local.set $3 - br $continue|1 end end + local.get $0 + call $~lib/rt/purerc/__release + local.get $6 + local.get $5 + f64.mul + return end local.get $0 call $~lib/rt/purerc/__release - local.get $5 - local.get $7 - f64.mul + f64.const nan:0x8000000000000 ) - (func $~lib/string/parseInt (; 30 ;) (type $FUNCSIG$dii) (param $0 i32) (param $1 i32) (result f64) + (func $~lib/string/parseInt (; 28 ;) (type $FUNCSIG$di) (param $0 i32) (result f64) + (local $1 f64) local.get $0 call $~lib/rt/purerc/__retain drop local.get $0 - call $~lib/rt/purerc/__release - local.get $0 - local.get $1 call $~lib/util/string/parse + local.set $1 + local.get $0 + call $~lib/rt/purerc/__release + local.get $1 ) - (func $~lib/string/parseFloat (; 31 ;) (type $FUNCSIG$di) (param $0 i32) (result f64) + (func $~lib/string/parseFloat (; 29 ;) (type $FUNCSIG$di) (param $0 i32) (result f64) (local $1 i32) (local $2 i32) (local $3 i32) (local $4 f64) (local $5 f64) - (local $6 i32) - (local $7 f64) + (local $6 f64) local.get $0 call $~lib/rt/purerc/__retain drop - local.get $0 - call $~lib/string/String#get:length - local.set $1 - local.get $1 - i32.eqz - if + block $folding-inner0 local.get $0 - call $~lib/rt/purerc/__release - f64.const nan:0x8000000000000 - return - end - local.get $0 - local.set $2 - local.get $2 - i32.load16_u - local.set $3 - local.get $3 - i32.const 45 - i32.eq - if - local.get $1 - i32.const 1 + i32.const 16 i32.sub - local.tee $1 + i32.load offset=12 + i32.const 1 + i32.shr_u + local.tee $3 i32.eqz - if - local.get $0 - call $~lib/rt/purerc/__release - f64.const nan:0x8000000000000 - return - end - local.get $2 - i32.const 2 - i32.add + br_if $folding-inner0 + local.get $0 local.tee $2 i32.load16_u - local.set $3 - f64.const -1 - local.set $4 - else - local.get $3 - i32.const 43 + local.tee $1 + i32.const 45 i32.eq - if - local.get $1 + if (result f64) + local.get $3 i32.const 1 i32.sub - local.tee $1 + local.tee $3 i32.eqz - if - local.get $0 - call $~lib/rt/purerc/__release - f64.const nan:0x8000000000000 - return - end + br_if $folding-inner0 local.get $2 i32.const 2 i32.add local.tee $2 i32.load16_u - local.set $3 - f64.const 1 - local.set $4 + drop + f64.const -1 else - f64.const 1 - local.set $4 - end - end - f64.const 0 - local.set $5 - block $break|0 - loop $continue|0 - block (result i32) - local.get $1 - local.tee $6 + local.get $1 + i32.const 43 + i32.eq + if + local.get $3 i32.const 1 i32.sub - local.set $1 - local.get $6 - end - if + local.tee $3 + i32.eqz + br_if $folding-inner0 local.get $2 + i32.const 2 + i32.add + local.tee $2 i32.load16_u - local.set $3 + drop + end + f64.const 1 + end + local.set $6 + loop $continue|0 + block $break|0 local.get $3 - i32.const 46 - i32.eq + local.tee $1 + i32.const 1 + i32.sub + local.set $3 + local.get $1 if local.get $2 - i32.const 2 - i32.add - local.set $2 - f64.const 0.1 - local.set $7 - block $break|1 + i32.load16_u + local.tee $1 + i32.const 46 + i32.eq + if + local.get $2 + i32.const 2 + i32.add + local.set $2 + f64.const 0.1 + local.set $5 loop $continue|1 - block (result i32) - local.get $1 - local.tee $6 + block $break|1 + local.get $3 + local.tee $1 i32.const 1 i32.sub - local.set $1 - local.get $6 - end - if - local.get $2 - i32.load16_u local.set $3 - local.get $3 - i32.const 69 - i32.eq - if (result i32) - i32.const 1 - else - local.get $3 - i32.const 101 - i32.eq - end + local.get $1 if - i32.const 0 - i32.eqz + local.get $2 + i32.load16_u + local.tee $1 + i32.const 69 + i32.eq + if (result i32) + i32.const 1 + else + local.get $1 + i32.const 101 + i32.eq + end if i32.const 0 i32.const 312 @@ -3074,135 +2468,133 @@ call $~lib/builtins/abort unreachable end + local.get $1 + i32.const 48 + i32.sub + local.tee $1 + i32.const 9 + i32.gt_u + br_if $break|1 + local.get $4 + local.get $1 + f64.convert_i32_s + local.get $5 + f64.mul + f64.add + local.set $4 + local.get $5 + f64.const 0.1 + f64.mul + local.set $5 + local.get $2 + i32.const 2 + i32.add + local.set $2 + br $continue|1 end - local.get $3 - i32.const 48 - i32.sub - local.set $3 - local.get $3 - i32.const 9 - i32.gt_u - if - br $break|1 - end - local.get $5 - local.get $3 - f64.convert_i32_s - local.get $7 - f64.mul - f64.add - local.set $5 - local.get $7 - f64.const 0.1 - f64.mul - local.set $7 - local.get $2 - i32.const 2 - i32.add - local.set $2 - br $continue|1 end end + br $break|0 end - br $break|0 + local.get $1 + i32.const 48 + i32.sub + local.tee $1 + i32.const 10 + i32.ge_u + br_if $break|0 + local.get $4 + f64.const 10 + f64.mul + local.get $1 + f64.convert_i32_s + f64.add + local.set $4 + local.get $2 + i32.const 2 + i32.add + local.set $2 + br $continue|0 end - local.get $3 - i32.const 48 - i32.sub - local.set $3 - local.get $3 - i32.const 10 - i32.ge_u - if - br $break|0 - end - local.get $5 - f64.const 10 - f64.mul - local.get $3 - f64.convert_i32_s - f64.add - local.set $5 - local.get $2 - i32.const 2 - i32.add - local.set $2 - br $continue|0 end end + local.get $0 + call $~lib/rt/purerc/__release + local.get $6 + local.get $4 + f64.mul + return end local.get $0 call $~lib/rt/purerc/__release - local.get $4 - local.get $5 - f64.mul + f64.const nan:0x8000000000000 ) - (func $~lib/string/String#concat (; 32 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/string/String#concat (; 30 ;) (type $FUNCSIG$iii) (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 call $~lib/rt/purerc/__retain drop - local.get $1 - i32.const 0 - i32.eq - if - i32.const 408 + block (result i32) local.get $1 - call $~lib/rt/purerc/__retainRelease - local.set $1 + i32.eqz + if + i32.const 408 + local.get $1 + call $~lib/rt/purerc/__retainRelease + local.set $1 + end + local.get $1 + i32.const 16 + i32.sub + i32.load offset=12 + i32.const 1 + i32.shr_u + i32.const 1 + i32.shl + local.tee $4 + local.get $0 + i32.const 16 + i32.sub + i32.load offset=12 + i32.const 1 + i32.shr_u + i32.const 1 + i32.shl + local.tee $3 + i32.add + local.tee $2 + i32.eqz end - local.get $0 - call $~lib/string/String#get:length - i32.const 1 - i32.shl - local.set $2 - local.get $1 - call $~lib/string/String#get:length - i32.const 1 - i32.shl - local.set $3 - local.get $2 - local.get $3 - i32.add - local.set $4 - local.get $4 - i32.const 0 - i32.eq if i32.const 120 call $~lib/rt/purerc/__retain - local.set $5 + local.set $0 local.get $1 call $~lib/rt/purerc/__release - local.get $5 + local.get $0 return end - local.get $4 + local.get $2 i32.const 16 call $~lib/rt/tlsf/__alloc call $~lib/rt/purerc/__retain - local.set $6 - local.get $6 + local.tee $2 local.get $0 - local.get $2 - call $~lib/memory/memory.copy - local.get $6 - local.get $2 - i32.add - local.get $1 local.get $3 call $~lib/memory/memory.copy - local.get $6 - local.set $5 + local.get $2 + local.get $3 + i32.add + local.get $1 + local.get $4 + call $~lib/memory/memory.copy local.get $1 call $~lib/rt/purerc/__release - local.get $5 + local.get $2 ) - (func $~lib/string/String.__concat (; 33 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/string/String.__concat (; 31 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) local.get $0 call $~lib/rt/purerc/__retain @@ -3213,8 +2605,6 @@ local.get $0 i32.const 408 local.get $0 - i32.const 0 - i32.ne select local.get $1 call $~lib/string/String#concat @@ -3225,7 +2615,8 @@ call $~lib/rt/purerc/__release local.get $2 ) - (func $~lib/string/String.__ne (; 34 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/string/String.__ne (; 32 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) local.get $0 call $~lib/rt/purerc/__retain drop @@ -3233,179 +2624,166 @@ call $~lib/rt/purerc/__retain drop local.get $0 - call $~lib/rt/purerc/__release - local.get $1 - call $~lib/rt/purerc/__release - local.get $0 local.get $1 call $~lib/string/String.__eq i32.eqz + local.set $2 + local.get $0 + call $~lib/rt/purerc/__release + local.get $1 + call $~lib/rt/purerc/__release + local.get $2 ) - (func $~lib/string/String.__gt (; 35 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/string/String.__gt (; 33 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) - (local $4 i32) - (local $5 i32) local.get $0 call $~lib/rt/purerc/__retain drop local.get $1 call $~lib/rt/purerc/__retain drop - local.get $0 - local.get $1 - i32.eq - if (result i32) + block $folding-inner0 + i32.const 1 + local.get $1 + i32.eqz i32.const 1 - else local.get $0 - i32.const 0 + i32.eqz + local.get $0 + local.get $1 i32.eq - end - if (result i32) + select + select + br_if $folding-inner0 + local.get $1 + i32.const 16 + i32.sub + i32.load offset=12 i32.const 1 - else - local.get $1 - i32.const 0 - i32.eq - end - if + i32.shr_u + local.set $2 local.get $0 - call $~lib/rt/purerc/__release - local.get $1 - call $~lib/rt/purerc/__release - i32.const 0 - return - end - local.get $0 - call $~lib/string/String#get:length - local.set $2 - local.get $1 - call $~lib/string/String#get:length - local.set $3 - local.get $2 - i32.eqz - if - local.get $0 - call $~lib/rt/purerc/__release - local.get $1 - call $~lib/rt/purerc/__release - i32.const 0 - return - end - local.get $3 - i32.eqz - if - local.get $0 - call $~lib/rt/purerc/__release - local.get $1 - call $~lib/rt/purerc/__release + i32.const 16 + i32.sub + i32.load offset=12 i32.const 1 + i32.shr_u + local.tee $3 + i32.eqz + br_if $folding-inner0 + local.get $2 + i32.eqz + if + local.get $0 + call $~lib/rt/purerc/__release + local.get $1 + call $~lib/rt/purerc/__release + i32.const 1 + return + end + local.get $0 + i32.const 0 + local.get $1 + local.get $3 + local.get $2 + local.get $3 + local.get $2 + i32.lt_s + select + call $~lib/util/string/compareImpl + i32.const 0 + i32.gt_s + local.set $2 + local.get $0 + call $~lib/rt/purerc/__release + local.get $1 + call $~lib/rt/purerc/__release + local.get $2 return end local.get $0 call $~lib/rt/purerc/__release local.get $1 call $~lib/rt/purerc/__release - local.get $0 i32.const 0 - local.get $1 - i32.const 0 - local.get $2 - local.tee $4 - local.get $3 - local.tee $5 - local.get $4 - local.get $5 - i32.lt_s - select - call $~lib/util/string/compareImpl - i32.const 0 - i32.gt_s ) - (func $~lib/string/String.__lt (; 36 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/string/String.__lt (; 34 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) - (local $4 i32) - (local $5 i32) local.get $0 call $~lib/rt/purerc/__retain drop local.get $1 call $~lib/rt/purerc/__retain drop - local.get $0 - local.get $1 - i32.eq - if (result i32) + block $folding-inner0 + i32.const 1 + local.get $1 + i32.eqz i32.const 1 - else local.get $0 - i32.const 0 + i32.eqz + local.get $0 + local.get $1 i32.eq - end - if (result i32) + select + select + br_if $folding-inner0 + local.get $0 + i32.const 16 + i32.sub + i32.load offset=12 i32.const 1 - else + i32.shr_u + local.set $2 local.get $1 - i32.const 0 - i32.eq - end - if - local.get $0 - call $~lib/rt/purerc/__release - local.get $1 - call $~lib/rt/purerc/__release - i32.const 0 - return - end - local.get $0 - call $~lib/string/String#get:length - local.set $2 - local.get $1 - call $~lib/string/String#get:length - local.set $3 - local.get $3 - i32.eqz - if - local.get $0 - call $~lib/rt/purerc/__release - local.get $1 - call $~lib/rt/purerc/__release - i32.const 0 - return - end - local.get $2 - i32.eqz - if - local.get $0 - call $~lib/rt/purerc/__release - local.get $1 - call $~lib/rt/purerc/__release + i32.const 16 + i32.sub + i32.load offset=12 i32.const 1 + i32.shr_u + local.tee $3 + i32.eqz + br_if $folding-inner0 + local.get $2 + i32.eqz + if + local.get $0 + call $~lib/rt/purerc/__release + local.get $1 + call $~lib/rt/purerc/__release + i32.const 1 + return + end + local.get $0 + i32.const 0 + local.get $1 + local.get $2 + local.get $3 + local.get $2 + local.get $3 + i32.lt_s + select + call $~lib/util/string/compareImpl + i32.const 0 + i32.lt_s + local.set $2 + local.get $0 + call $~lib/rt/purerc/__release + local.get $1 + call $~lib/rt/purerc/__release + local.get $2 return end local.get $0 call $~lib/rt/purerc/__release local.get $1 call $~lib/rt/purerc/__release - local.get $0 i32.const 0 - local.get $1 - i32.const 0 - local.get $2 - local.tee $4 - local.get $3 - local.tee $5 - local.get $4 - local.get $5 - i32.lt_s - select - call $~lib/util/string/compareImpl - i32.const 0 - i32.lt_s ) - (func $~lib/string/String.__gte (; 37 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/string/String.__gte (; 35 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) local.get $0 call $~lib/rt/purerc/__retain drop @@ -3413,36 +2791,39 @@ call $~lib/rt/purerc/__retain drop local.get $0 - call $~lib/rt/purerc/__release - local.get $1 - call $~lib/rt/purerc/__release - local.get $0 local.get $1 call $~lib/string/String.__lt i32.eqz + local.set $2 + local.get $0 + call $~lib/rt/purerc/__release + local.get $1 + call $~lib/rt/purerc/__release + local.get $2 ) - (func $~lib/string/String.__lte (; 38 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - local.get $0 - call $~lib/rt/purerc/__retain - drop - local.get $1 + (func $~lib/string/String.__lte (; 36 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + i32.const 120 call $~lib/rt/purerc/__retain drop local.get $0 - call $~lib/rt/purerc/__release - local.get $1 - call $~lib/rt/purerc/__release + call $~lib/rt/purerc/__retain + drop + i32.const 120 local.get $0 - local.get $1 call $~lib/string/String.__gt i32.eqz + local.set $1 + i32.const 120 + call $~lib/rt/purerc/__release + local.get $0 + call $~lib/rt/purerc/__release + local.get $1 ) - (func $~lib/string/String#repeat (; 39 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/string/String#repeat (; 37 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) local.get $0 - i32.const 0 - i32.ne i32.eqz if i32.const 0 @@ -3453,7 +2834,11 @@ unreachable end local.get $0 - call $~lib/string/String#get:length + i32.const 16 + i32.sub + i32.load offset=12 + i32.const 1 + i32.shr_u local.set $2 local.get $1 i32.const 0 @@ -3477,15 +2862,11 @@ call $~lib/builtins/abort unreachable end + local.get $2 + i32.eqz + i32.const 1 local.get $1 - i32.const 0 - i32.eq - if (result i32) - i32.const 1 - else - local.get $2 - i32.eqz - end + select if i32.const 120 call $~lib/rt/purerc/__retain @@ -3499,15 +2880,14 @@ call $~lib/rt/purerc/__retain return end - local.get $2 local.get $1 + local.get $2 i32.mul i32.const 1 i32.shl i32.const 16 call $~lib/rt/tlsf/__alloc - local.set $3 - local.get $3 + local.tee $3 local.get $0 local.get $2 i32.const 1 @@ -3517,15 +2897,14 @@ local.get $3 call $~lib/rt/purerc/__retain ) - (func $~lib/string/String#slice (; 40 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/string/String#slice (; 38 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) local.get $0 - call $~lib/string/String#get:length + i32.const 16 + i32.sub + i32.load offset=12 + i32.const 1 + i32.shr_u local.set $3 local.get $1 i32.const 0 @@ -3534,24 +2913,21 @@ local.get $1 local.get $3 i32.add - local.tee $4 + local.tee $1 + i32.const 0 + local.get $1 i32.const 0 - local.tee $5 - local.get $4 - local.get $5 i32.gt_s select else local.get $1 - local.tee $4 local.get $3 - local.tee $5 - local.get $4 - local.get $5 + local.get $1 + local.get $3 i32.lt_s select end - local.set $6 + local.set $1 local.get $2 i32.const 0 i32.lt_s @@ -3559,29 +2935,23 @@ local.get $2 local.get $3 i32.add - local.tee $4 + local.tee $2 + i32.const 0 + local.get $2 i32.const 0 - local.tee $5 - local.get $4 - local.get $5 i32.gt_s select else local.get $2 - local.tee $4 local.get $3 - local.tee $5 - local.get $4 - local.get $5 + local.get $2 + local.get $3 i32.lt_s select end - local.set $7 - local.get $7 - local.get $6 + local.get $1 i32.sub - local.set $3 - local.get $3 + local.tee $2 i32.const 0 i32.le_s if @@ -3589,44 +2959,36 @@ call $~lib/rt/purerc/__retain return end - local.get $3 + local.get $2 i32.const 1 i32.shl + local.tee $2 i32.const 16 call $~lib/rt/tlsf/__alloc - local.set $8 - local.get $8 + local.tee $3 + local.get $1 + i32.const 1 + i32.shl local.get $0 - local.get $6 - i32.const 1 - i32.shl i32.add - local.get $3 - i32.const 1 - i32.shl + local.get $2 call $~lib/memory/memory.copy - local.get $8 + local.get $3 call $~lib/rt/purerc/__retain ) - (func $~lib/rt/purerc/increment (; 41 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $~lib/rt/purerc/increment (; 39 ;) (type $FUNCSIG$vi) (param $0 i32) (local $1 i32) local.get $0 i32.load offset=4 - local.set $1 - local.get $1 - i32.const 268435455 - i32.const -1 - i32.xor + local.tee $1 + i32.const -268435456 i32.and local.get $1 i32.const 1 i32.add - i32.const 268435455 - i32.const -1 - i32.xor + i32.const -268435456 i32.and - i32.eq - i32.eqz + i32.ne if i32.const 0 i32.const 2016 @@ -3646,8 +3008,6 @@ i32.load i32.const 1 i32.and - i32.eqz - i32.eqz if i32.const 0 i32.const 2016 @@ -3657,9 +3017,9 @@ unreachable end ) - (func $~lib/rt/purerc/__retain (; 42 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/rt/purerc/__retain (; 40 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 - global.get $~lib/builtins/HEAP_BASE + i32.const 7144 i32.gt_u if local.get $0 @@ -3669,62 +3029,47 @@ end local.get $0 ) - (func $~lib/rt/common/__allocArray (; 43 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) + (func $~lib/rt/common/__allocArray (; 41 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) i32.const 16 - local.get $2 + i32.const 17 call $~lib/rt/tlsf/__alloc - local.set $4 + local.tee $1 local.get $0 - local.get $1 + i32.const 2 i32.shl - local.set $5 - local.get $5 + local.tee $2 i32.const 15 call $~lib/rt/tlsf/__alloc - local.set $6 - local.get $4 - local.get $6 + local.tee $3 call $~lib/rt/purerc/__retain i32.store - local.get $4 - local.get $6 + local.get $1 + local.get $3 i32.store offset=4 - local.get $4 - local.get $5 + local.get $1 + local.get $2 i32.store offset=8 - local.get $4 + local.get $1 local.get $0 i32.store offset=12 - local.get $3 - if - local.get $6 - local.get $3 - local.get $5 - call $~lib/memory/memory.copy - end - local.get $4 + local.get $1 ) - (func $~lib/rt/tlsf/reallocateBlock (; 44 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/rt/tlsf/reallocateBlock (; 42 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) (local $6 i32) - (local $7 i32) - (local $8 i32) local.get $2 call $~lib/rt/tlsf/prepareSize local.set $3 local.get $1 i32.load - local.set $4 - local.get $4 + local.tee $4 i32.const 1 i32.and - i32.eqz - i32.eqz if i32.const 0 i32.const 184 @@ -3749,43 +3094,30 @@ local.get $1 return end - block $~lib/rt/tlsf/GETRIGHT|inlined.4 (result i32) - local.get $1 - local.set $5 - local.get $5 - i32.const 16 - i32.add - local.get $5 - i32.load - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.add - end - local.set $6 - local.get $6 + local.get $1 + i32.const 16 + i32.add + local.get $1 i32.load - local.set $7 - local.get $7 + i32.const -4 + i32.and + i32.add + local.tee $6 + i32.load + local.tee $5 i32.const 1 i32.and if local.get $4 - i32.const 3 - i32.const -1 - i32.xor + i32.const -4 i32.and i32.const 16 i32.add - local.get $7 - i32.const 3 - i32.const -1 - i32.xor + local.get $5 + i32.const -4 i32.and i32.add - local.set $5 - local.get $5 + local.tee $5 local.get $3 i32.ge_u if @@ -3813,16 +3145,15 @@ local.get $0 local.get $2 call $~lib/rt/tlsf/allocateBlock - local.set $8 - local.get $8 + local.tee $3 local.get $1 i32.load offset=4 i32.store offset=4 - local.get $8 + local.get $3 local.get $1 i32.load offset=8 i32.store offset=8 - local.get $8 + local.get $3 i32.const 16 i32.add local.get $1 @@ -3840,9 +3171,9 @@ call $~lib/rt/tlsf/insertBlock local.get $1 call $~lib/rt/tlsf/onFree - local.get $8 + local.get $3 ) - (func $~lib/rt/tlsf/__realloc (; 45 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/rt/tlsf/__realloc (; 43 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) global.get $~lib/rt/tlsf/ROOT i32.eqz if @@ -3854,16 +3185,12 @@ unreachable end local.get $0 + i32.const 15 + i32.and + i32.eqz i32.const 0 - i32.ne - if (result i32) - local.get $0 - i32.const 15 - i32.and - i32.eqz - else - i32.const 0 - end + local.get $0 + select i32.eqz if i32.const 0 @@ -3882,287 +3209,231 @@ i32.const 16 i32.add ) - (func $~lib/memory/memory.fill (; 46 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i64) + (func $~lib/memory/memory.fill (; 44 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (local $2 i32) block $~lib/util/memory/memset|inlined.0 - local.get $0 - local.set $5 local.get $1 - local.set $4 - local.get $2 - local.set $3 - local.get $3 i32.eqz - if - br $~lib/util/memory/memset|inlined.0 - end - local.get $5 - local.get $4 + br_if $~lib/util/memory/memset|inlined.0 + local.get $0 + i32.const 0 i32.store8 - local.get $5 - local.get $3 + local.get $0 + local.get $1 i32.add i32.const 1 i32.sub - local.get $4 + i32.const 0 i32.store8 - local.get $3 + local.get $1 i32.const 2 i32.le_u - if - br $~lib/util/memory/memset|inlined.0 - end - local.get $5 + br_if $~lib/util/memory/memset|inlined.0 + local.get $0 i32.const 1 i32.add - local.get $4 + i32.const 0 i32.store8 - local.get $5 + local.get $0 i32.const 2 i32.add - local.get $4 + i32.const 0 i32.store8 - local.get $5 - local.get $3 + local.get $0 + local.get $1 i32.add + local.tee $2 i32.const 2 i32.sub - local.get $4 + i32.const 0 i32.store8 - local.get $5 - local.get $3 - i32.add + local.get $2 i32.const 3 i32.sub - local.get $4 + i32.const 0 i32.store8 - local.get $3 + local.get $1 i32.const 6 i32.le_u - if - br $~lib/util/memory/memset|inlined.0 - end - local.get $5 + br_if $~lib/util/memory/memset|inlined.0 + local.get $0 i32.const 3 i32.add - local.get $4 + i32.const 0 i32.store8 - local.get $5 - local.get $3 + local.get $0 + local.get $1 i32.add i32.const 4 i32.sub - local.get $4 + i32.const 0 i32.store8 - local.get $3 + local.get $1 i32.const 8 i32.le_u - if - br $~lib/util/memory/memset|inlined.0 - end + br_if $~lib/util/memory/memset|inlined.0 + local.get $1 i32.const 0 - local.get $5 + local.get $0 i32.sub i32.const 3 i32.and - local.set $6 - local.get $5 - local.get $6 - i32.add - local.set $5 - local.get $3 - local.get $6 + local.tee $1 i32.sub - local.set $3 - local.get $3 + local.set $2 + local.get $0 + local.get $1 + i32.add + local.tee $0 + i32.const 0 + i32.store + local.get $2 i32.const -4 i32.and - local.set $3 - i32.const -1 - i32.const 255 - i32.div_u - local.get $4 - i32.const 255 - i32.and - i32.mul - local.set $7 - local.get $5 - local.get $7 - i32.store - local.get $5 - local.get $3 + local.tee $1 + local.get $0 i32.add i32.const 4 i32.sub - local.get $7 + i32.const 0 i32.store - local.get $3 + local.get $1 i32.const 8 i32.le_u - if - br $~lib/util/memory/memset|inlined.0 - end - local.get $5 + br_if $~lib/util/memory/memset|inlined.0 + local.get $0 i32.const 4 i32.add - local.get $7 + i32.const 0 i32.store - local.get $5 + local.get $0 i32.const 8 i32.add - local.get $7 + i32.const 0 i32.store - local.get $5 - local.get $3 + local.get $0 + local.get $1 i32.add + local.tee $2 i32.const 12 i32.sub - local.get $7 + i32.const 0 i32.store - local.get $5 - local.get $3 - i32.add + local.get $2 i32.const 8 i32.sub - local.get $7 + i32.const 0 i32.store - local.get $3 + local.get $1 i32.const 24 i32.le_u - if - br $~lib/util/memory/memset|inlined.0 - end - local.get $5 + br_if $~lib/util/memory/memset|inlined.0 + local.get $0 i32.const 12 i32.add - local.get $7 + i32.const 0 i32.store - local.get $5 + local.get $0 i32.const 16 i32.add - local.get $7 + i32.const 0 i32.store - local.get $5 + local.get $0 i32.const 20 i32.add - local.get $7 + i32.const 0 i32.store - local.get $5 + local.get $0 i32.const 24 i32.add - local.get $7 + i32.const 0 i32.store - local.get $5 - local.get $3 + local.get $0 + local.get $1 i32.add + local.tee $2 i32.const 28 i32.sub - local.get $7 + i32.const 0 i32.store - local.get $5 - local.get $3 - i32.add + local.get $2 i32.const 24 i32.sub - local.get $7 + i32.const 0 i32.store - local.get $5 - local.get $3 - i32.add + local.get $2 i32.const 20 i32.sub - local.get $7 + i32.const 0 i32.store - local.get $5 - local.get $3 - i32.add + local.get $2 i32.const 16 i32.sub - local.get $7 + i32.const 0 i32.store - i32.const 24 - local.get $5 + local.get $0 i32.const 4 i32.and + i32.const 24 i32.add - local.set $6 - local.get $5 - local.get $6 + local.tee $2 + local.get $0 i32.add - local.set $5 - local.get $3 - local.get $6 + local.set $0 + local.get $1 + local.get $2 i32.sub - local.set $3 - local.get $7 - i64.extend_i32_u - local.get $7 - i64.extend_i32_u - i64.const 32 - i64.shl - i64.or - local.set $8 - block $break|0 - loop $continue|0 - local.get $3 + local.set $1 + loop $continue|0 + local.get $1 + i32.const 32 + i32.ge_u + if + local.get $0 + i64.const 0 + i64.store + local.get $0 + i32.const 8 + i32.add + i64.const 0 + i64.store + local.get $0 + i32.const 16 + i32.add + i64.const 0 + i64.store + local.get $0 + i32.const 24 + i32.add + i64.const 0 + i64.store + local.get $1 i32.const 32 - i32.ge_u - if - local.get $5 - local.get $8 - i64.store - local.get $5 - i32.const 8 - i32.add - local.get $8 - i64.store - local.get $5 - i32.const 16 - i32.add - local.get $8 - i64.store - local.get $5 - i32.const 24 - i32.add - local.get $8 - i64.store - local.get $3 - i32.const 32 - i32.sub - local.set $3 - local.get $5 - i32.const 32 - i32.add - local.set $5 - br $continue|0 - end + i32.sub + local.set $1 + local.get $0 + i32.const 32 + i32.add + local.set $0 + br $continue|0 end end end ) - (func $~lib/array/ensureSize (; 47 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/array/ensureSize (; 45 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (local $2 i32) (local $3 i32) (local $4 i32) - (local $5 i32) - (local $6 i32) + local.get $1 local.get $0 i32.load offset=8 - local.set $3 - local.get $1 - local.get $3 - local.get $2 + local.tee $2 + i32.const 2 i32.shr_u i32.gt_u if local.get $1 - i32.const 1073741808 - local.get $2 - i32.shr_u + i32.const 268435452 i32.gt_u if i32.const 1600 @@ -4174,50 +3445,43 @@ end local.get $0 i32.load - local.set $4 + local.tee $4 local.get $1 - local.get $2 + i32.const 2 i32.shl - local.set $5 - local.get $4 - local.get $5 + local.tee $3 call $~lib/rt/tlsf/__realloc - local.set $6 - local.get $6 - local.get $3 + local.tee $1 + local.get $2 i32.add - i32.const 0 - local.get $5 local.get $3 + local.get $2 i32.sub call $~lib/memory/memory.fill - local.get $6 + local.get $1 local.get $4 i32.ne if local.get $0 - local.get $6 + local.get $1 call $~lib/rt/purerc/__retain i32.store local.get $0 - local.get $6 + local.get $1 i32.store offset=4 end local.get $0 - local.get $5 + local.get $3 i32.store offset=8 end ) - (func $~lib/rt/tlsf/freeBlock (; 48 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/rt/tlsf/freeBlock (; 46 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) local.get $1 i32.load - local.set $2 - local.get $2 + local.tee $2 i32.const 1 i32.and - i32.eqz - i32.eqz if i32.const 0 i32.const 184 @@ -4237,19 +3501,15 @@ local.get $1 call $~lib/rt/tlsf/onFree ) - (func $~lib/rt/common/__typeinfo (; 49 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - (local $1 i32) - global.get $~lib/builtins/RTTI_BASE - local.set $1 + (func $~lib/rt/common/__typeinfo (; 47 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 - i32.eqz if (result i32) - i32.const 1 - else local.get $0 - local.get $1 + i32.const 6968 i32.load i32.gt_u + else + i32.const 1 end if i32.const 2120 @@ -4259,63 +3519,53 @@ call $~lib/builtins/abort unreachable end - local.get $1 local.get $0 - i32.const 8 - i32.mul + i32.const 3 + i32.shl + i32.const 6968 i32.add i32.load ) - (func $~lib/rt/purerc/growRoots (; 50 ;) (type $FUNCSIG$v) + (func $~lib/rt/purerc/growRoots (; 48 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) (local $3 i32) - (local $4 i32) - (local $5 i32) - global.get $~lib/rt/purerc/ROOTS - local.set $0 global.get $~lib/rt/purerc/CUR - local.get $0 - i32.sub - local.set $1 - local.get $1 - i32.const 2 - i32.mul + global.get $~lib/rt/purerc/ROOTS local.tee $2 - i32.const 64 - i32.const 2 + i32.sub + local.tee $1 + i32.const 1 i32.shl - local.tee $3 - local.get $2 - local.get $3 + local.tee $0 + i32.const 256 + local.get $0 + i32.const 256 i32.gt_u select - local.set $4 - local.get $4 + local.tee $3 i32.const 0 call $~lib/rt/tlsf/__alloc - local.set $5 - local.get $5 - local.get $0 + local.tee $0 + local.get $2 local.get $1 call $~lib/memory/memory.copy - local.get $5 + local.get $0 global.set $~lib/rt/purerc/ROOTS - local.get $5 + local.get $0 local.get $1 i32.add global.set $~lib/rt/purerc/CUR - local.get $5 - local.get $4 + local.get $0 + local.get $3 i32.add global.set $~lib/rt/purerc/END ) - (func $~lib/rt/purerc/appendRoot (; 51 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $~lib/rt/purerc/appendRoot (; 49 ;) (type $FUNCSIG$vi) (param $0 i32) (local $1 i32) global.get $~lib/rt/purerc/CUR - local.set $1 - local.get $1 + local.tee $1 global.get $~lib/rt/purerc/END i32.ge_u if @@ -4331,24 +3581,21 @@ i32.add global.set $~lib/rt/purerc/CUR ) - (func $~lib/rt/purerc/decrement (; 52 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $~lib/rt/purerc/decrement (; 50 ;) (type $FUNCSIG$vi) (param $0 i32) (local $1 i32) (local $2 i32) local.get $0 i32.load offset=4 - local.set $1 - local.get $1 + local.tee $2 i32.const 268435455 i32.and - local.set $2 + local.set $1 local.get $0 call $~lib/rt/purerc/onDecrement local.get $0 i32.load i32.const 1 i32.and - i32.eqz - i32.eqz if i32.const 0 i32.const 2016 @@ -4357,7 +3604,7 @@ call $~lib/builtins/abort unreachable end - local.get $2 + local.get $1 i32.const 1 i32.eq if @@ -4366,28 +3613,22 @@ i32.add i32.const 1 call $~lib/builtins/__visit_members - local.get $1 + local.get $2 i32.const -2147483648 i32.and - i32.eqz if + local.get $0 + i32.const -2147483648 + i32.store offset=4 + else global.get $~lib/rt/tlsf/ROOT local.get $0 call $~lib/rt/tlsf/freeBlock - else - local.get $0 - i32.const -2147483648 - i32.const 0 - i32.or - i32.const 0 - i32.or - i32.store offset=4 end else - local.get $2 + local.get $1 i32.const 0 - i32.gt_u - i32.eqz + i32.le_u if i32.const 0 i32.const 2016 @@ -4401,18 +3642,25 @@ call $~lib/rt/common/__typeinfo i32.const 8 i32.and - i32.eqz if local.get $0 - i32.const -2147483648 - i32.const 805306368 - i32.or - local.get $2 + local.get $1 i32.const 1 i32.sub + local.get $2 + i32.const -268435456 + i32.and i32.or i32.store offset=4 + else + local.get $0 local.get $1 + i32.const 1 + i32.sub + i32.const -1342177280 + i32.or + i32.store offset=4 + local.get $2 i32.const -2147483648 i32.and i32.eqz @@ -4420,31 +3668,16 @@ local.get $0 call $~lib/rt/purerc/appendRoot end - else - local.get $0 - local.get $1 - i32.const 268435455 - i32.const -1 - i32.xor - i32.and - local.get $2 - i32.const 1 - i32.sub - i32.or - i32.store offset=4 end end ) - (func $~lib/rt/purerc/__retainRelease (; 53 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) + (func $~lib/rt/purerc/__retainRelease (; 51 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $0 local.get $1 i32.ne if - global.get $~lib/builtins/HEAP_BASE - local.set $2 local.get $0 - local.get $2 + i32.const 7144 i32.gt_u if local.get $0 @@ -4453,7 +3686,7 @@ call $~lib/rt/purerc/increment end local.get $1 - local.get $2 + i32.const 7144 i32.gt_u if local.get $1 @@ -4464,23 +3697,19 @@ end local.get $0 ) - (func $~lib/array/Array<~lib/string/String>#push (; 54 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array<~lib/string/String>#push (; 52 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) - (local $4 i32) local.get $1 call $~lib/rt/purerc/__retain drop local.get $0 + local.get $0 i32.load offset=12 - local.set $2 - local.get $2 + local.tee $2 i32.const 1 i32.add - local.set $3 - local.get $0 - local.get $3 - i32.const 2 + local.tee $3 call $~lib/array/ensureSize local.get $0 i32.load offset=4 @@ -4488,10 +3717,9 @@ i32.const 2 i32.shl i32.add - local.set $4 - local.get $4 + local.tee $2 local.get $1 - local.get $4 + local.get $2 i32.load call $~lib/rt/purerc/__retainRelease i32.store @@ -4500,9 +3728,9 @@ i32.store offset=12 local.get $1 call $~lib/rt/purerc/__release - local.get $3 ) - (func $~lib/string/String#split (; 55 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/string/String#split (; 53 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -4510,16 +3738,10 @@ (local $7 i32) (local $8 i32) (local $9 i32) - (local $10 i32) - (local $11 i32) - (local $12 i32) - (local $13 i32) local.get $1 call $~lib/rt/purerc/__retain drop local.get $0 - i32.const 0 - i32.ne i32.eqz if i32.const 0 @@ -4529,315 +3751,215 @@ call $~lib/builtins/abort unreachable end - local.get $2 - i32.eqz - if - i32.const 0 - i32.const 2 - i32.const 17 - i32.const 0 - call $~lib/rt/common/__allocArray - call $~lib/rt/purerc/__retain - local.set $3 - local.get $1 - call $~lib/rt/purerc/__release - local.get $3 - return - end - local.get $1 - i32.const 0 - i32.eq - if - block (result i32) - i32.const 1 - i32.const 2 - i32.const 17 - i32.const 0 - call $~lib/rt/common/__allocArray - local.set $3 - local.get $3 - i32.load offset=4 - local.set $4 - local.get $4 - local.get $0 - call $~lib/rt/purerc/__retain - i32.store - local.get $3 - end - call $~lib/rt/purerc/__retain - local.set $4 - local.get $1 - call $~lib/rt/purerc/__release - local.get $4 - return - end - local.get $0 - call $~lib/string/String#get:length - local.set $5 - local.get $1 - call $~lib/string/String#get:length - local.set $6 - local.get $2 - i32.const 0 - i32.lt_s - if - global.get $~lib/builtins/i32.MAX_VALUE - local.set $2 - end - local.get $6 - i32.eqz - if - local.get $5 - i32.eqz - if - i32.const 0 - i32.const 2 - i32.const 17 - i32.const 0 - call $~lib/rt/common/__allocArray - call $~lib/rt/purerc/__retain - local.set $4 + block $folding-inner2 + block $folding-inner1 (result i32) local.get $1 - call $~lib/rt/purerc/__release - local.get $4 - return - end - local.get $5 - local.tee $4 - local.get $2 - local.tee $3 - local.get $4 - local.get $3 - i32.lt_s - select - local.set $5 - local.get $5 - i32.const 2 - i32.const 17 - i32.const 0 - call $~lib/rt/common/__allocArray - local.set $4 - local.get $4 - i32.load offset=4 - local.set $3 - block $break|0 - i32.const 0 - local.set $7 - loop $repeat|0 - local.get $7 - local.get $5 - i32.lt_s - i32.eqz - br_if $break|0 - i32.const 2 - i32.const 16 - call $~lib/rt/tlsf/__alloc - local.set $8 - local.get $8 - local.get $0 - local.get $7 - i32.const 1 - i32.shl - i32.add - i32.load16_u - i32.store16 - local.get $3 - local.get $7 - i32.const 2 - i32.shl - i32.add - local.get $8 - i32.store - local.get $8 - call $~lib/rt/purerc/__retain - drop - local.get $7 - i32.const 1 - i32.add - local.set $7 - br $repeat|0 - unreachable - end - unreachable - end - local.get $4 - call $~lib/rt/purerc/__retain - local.set $8 - local.get $1 - call $~lib/rt/purerc/__release - local.get $8 - return - else - local.get $5 - i32.eqz - if - i32.const 1 - i32.const 2 - i32.const 17 - i32.const 0 - call $~lib/rt/common/__allocArray - local.set $3 - local.get $3 - i32.load offset=4 - i32.const 120 - i32.store - local.get $3 - call $~lib/rt/purerc/__retain - local.set $4 - local.get $1 - call $~lib/rt/purerc/__release - local.get $4 - return - end - end - i32.const 0 - i32.const 2 - i32.const 17 - i32.const 0 - call $~lib/rt/common/__allocArray - call $~lib/rt/purerc/__retain - local.set $9 - i32.const 0 - local.set $10 - i32.const 0 - local.set $11 - i32.const 0 - local.set $12 - block $break|1 - loop $continue|1 - local.get $0 - local.get $1 - local.get $11 - call $~lib/string/String#indexOf - local.tee $10 - i32.const -1 - i32.ne + i32.eqz if - local.get $10 - local.get $11 - i32.sub - local.set $3 + i32.const 1 + call $~lib/rt/common/__allocArray + local.tee $2 + i32.load offset=4 + local.get $0 + call $~lib/rt/purerc/__retain + i32.store + local.get $2 + call $~lib/rt/purerc/__retain + br $folding-inner1 + end + local.get $0 + i32.const 16 + i32.sub + i32.load offset=12 + i32.const 1 + i32.shr_u + local.set $3 + local.get $1 + i32.const 16 + i32.sub + i32.load offset=12 + i32.const 1 + i32.shr_u + local.tee $5 + local.set $6 + block $folding-inner0 + local.get $5 + if + local.get $3 + i32.eqz + if + i32.const 1 + call $~lib/rt/common/__allocArray + local.tee $0 + i32.load offset=4 + i32.const 120 + i32.store + local.get $0 + call $~lib/rt/purerc/__retain + br $folding-inner1 + end + else + local.get $3 + i32.eqz + br_if $folding-inner0 + local.get $3 + i32.const 2147483647 + local.get $3 + i32.const 2147483647 + i32.lt_s + select + local.tee $3 + call $~lib/rt/common/__allocArray + local.tee $5 + i32.load offset=4 + local.set $6 + loop $repeat|0 + local.get $2 + local.get $3 + i32.lt_s + if + i32.const 2 + i32.const 16 + call $~lib/rt/tlsf/__alloc + local.tee $4 + local.get $2 + i32.const 1 + i32.shl + local.get $0 + i32.add + i32.load16_u + i32.store16 + local.get $2 + i32.const 2 + i32.shl + local.get $6 + i32.add + local.get $4 + i32.store + local.get $4 + call $~lib/rt/purerc/__retain + drop + local.get $2 + i32.const 1 + i32.add + local.set $2 + br $repeat|0 + end + end + local.get $5 + call $~lib/rt/purerc/__retain + br $folding-inner1 + end + i32.const 0 + call $~lib/rt/common/__allocArray + call $~lib/rt/purerc/__retain + local.set $2 + loop $continue|1 + local.get $0 + local.get $1 + local.get $4 + call $~lib/string/String#indexOf + local.tee $5 + i32.const -1 + i32.ne + if + local.get $5 + local.get $4 + i32.sub + local.tee $7 + i32.const 0 + i32.gt_s + if + local.get $7 + i32.const 1 + i32.shl + local.tee $7 + i32.const 16 + call $~lib/rt/tlsf/__alloc + local.tee $8 + local.get $4 + i32.const 1 + i32.shl + local.get $0 + i32.add + local.get $7 + call $~lib/memory/memory.copy + local.get $2 + local.get $8 + call $~lib/array/Array<~lib/string/String>#push + else + local.get $2 + i32.const 120 + call $~lib/array/Array<~lib/string/String>#push + end + local.get $9 + i32.const 1 + i32.add + local.tee $9 + i32.const 2147483647 + i32.eq + br_if $folding-inner2 + local.get $5 + local.get $6 + i32.add + local.set $4 + br $continue|1 + end + end + local.get $4 + i32.eqz + if + local.get $2 + local.get $0 + call $~lib/array/Array<~lib/string/String>#push + br $folding-inner2 + end local.get $3 + local.get $4 + i32.sub + local.tee $3 i32.const 0 i32.gt_s if local.get $3 i32.const 1 i32.shl + local.tee $3 i32.const 16 call $~lib/rt/tlsf/__alloc - local.set $4 + local.tee $5 local.get $4 - local.get $0 - local.get $11 i32.const 1 i32.shl + local.get $0 i32.add local.get $3 - i32.const 1 - i32.shl call $~lib/memory/memory.copy - local.get $9 - local.get $4 + local.get $2 + local.get $5 call $~lib/array/Array<~lib/string/String>#push - drop else - local.get $9 + local.get $2 i32.const 120 call $~lib/array/Array<~lib/string/String>#push - drop end - local.get $12 - i32.const 1 - i32.add - local.tee $12 - local.get $2 - i32.eq - if - local.get $9 - local.set $4 - local.get $1 - call $~lib/rt/purerc/__release - local.get $4 - return - end - local.get $10 - local.get $6 - i32.add - local.set $11 - br $continue|1 + br $folding-inner2 end + i32.const 0 + call $~lib/rt/common/__allocArray + call $~lib/rt/purerc/__retain end - end - local.get $11 - i32.eqz - if - local.get $9 - local.get $0 - call $~lib/array/Array<~lib/string/String>#push - drop - local.get $9 - local.set $3 + local.set $0 local.get $1 call $~lib/rt/purerc/__release - local.get $3 + local.get $0 return end - local.get $5 - local.get $11 - i32.sub - local.set $13 - local.get $13 - i32.const 0 - i32.gt_s - if - local.get $13 - i32.const 1 - i32.shl - i32.const 16 - call $~lib/rt/tlsf/__alloc - local.set $3 - local.get $3 - local.get $0 - local.get $11 - i32.const 1 - i32.shl - i32.add - local.get $13 - i32.const 1 - i32.shl - call $~lib/memory/memory.copy - local.get $9 - local.get $3 - call $~lib/array/Array<~lib/string/String>#push - drop - else - local.get $9 - i32.const 120 - call $~lib/array/Array<~lib/string/String>#push - drop - end - local.get $9 - local.set $3 local.get $1 call $~lib/rt/purerc/__release - local.get $3 + local.get $2 ) - (func $~lib/array/Array<~lib/string/String>#get:length (; 56 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - local.get $0 - i32.load offset=12 - ) - (func $~lib/array/Array<~lib/string/String>#__unchecked_get (; 57 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - local.get $0 - i32.load offset=4 - local.get $1 - i32.const 2 - i32.shl - i32.add - i32.load - call $~lib/rt/purerc/__retain - ) - (func $~lib/array/Array<~lib/string/String>#__get (; 58 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array<~lib/string/String>#__get (; 54 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $1 local.get $0 i32.load offset=12 @@ -4865,144 +3987,116 @@ unreachable end local.get $0 + i32.load offset=4 local.get $1 - call $~lib/array/Array<~lib/string/String>#__unchecked_get + i32.const 2 + i32.shl + i32.add + i32.load + call $~lib/rt/purerc/__retain ) - (func $~lib/util/number/decimalCount32 (; 59 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - (local $1 i32) + (func $~lib/util/number/decimalCount32 (; 55 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.const 100000 i32.lt_u - if + if (result i32) local.get $0 i32.const 100 i32.lt_u - if + if (result i32) i32.const 1 i32.const 2 local.get $0 i32.const 10 i32.lt_u select - return else + i32.const 3 i32.const 4 i32.const 5 local.get $0 i32.const 10000 i32.lt_u select - local.set $1 - i32.const 3 - local.get $1 local.get $0 i32.const 1000 i32.lt_u select - return end - unreachable - unreachable else local.get $0 i32.const 10000000 i32.lt_u - if + if (result i32) i32.const 6 i32.const 7 local.get $0 i32.const 1000000 i32.lt_u select - return else + i32.const 8 i32.const 9 i32.const 10 local.get $0 i32.const 1000000000 i32.lt_u select - local.set $1 - i32.const 8 - local.get $1 local.get $0 i32.const 100000000 i32.lt_u select - return end - unreachable - unreachable end - unreachable - unreachable ) - (func $~lib/util/number/utoa32_lut (; 60 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/util/number/utoa32_lut (; 56 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i64) - (local $9 i64) - i32.const 2840 - i32.load offset=4 + i32.const 2844 + i32.load local.set $3 - block $break|0 - loop $continue|0 + loop $continue|0 + local.get $1 + i32.const 10000 + i32.ge_u + if local.get $1 i32.const 10000 - i32.ge_u - if - local.get $1 - i32.const 10000 - i32.div_u - local.set $4 - local.get $1 - i32.const 10000 - i32.rem_u - local.set $5 - local.get $4 - local.set $1 - local.get $5 - i32.const 100 - i32.div_u - local.set $6 - local.get $5 - i32.const 100 - i32.rem_u - local.set $7 - local.get $3 - local.get $6 - i32.const 2 - i32.shl - i32.add - i64.load32_u - local.set $8 - local.get $3 - local.get $7 - i32.const 2 - i32.shl - i32.add - i64.load32_u - local.set $9 - local.get $2 - i32.const 4 - i32.sub - local.set $2 - local.get $0 - local.get $2 - i32.const 1 - i32.shl - i32.add - local.get $8 - local.get $9 - i64.const 32 - i64.shl - i64.or - i64.store - br $continue|0 - end + i32.rem_u + local.set $4 + local.get $1 + i32.const 10000 + i32.div_u + local.set $1 + local.get $2 + i32.const 4 + i32.sub + local.tee $2 + i32.const 1 + i32.shl + local.get $0 + i32.add + local.get $4 + i32.const 100 + i32.div_u + i32.const 2 + i32.shl + local.get $3 + i32.add + i64.load32_u + local.get $4 + i32.const 100 + i32.rem_u + i32.const 2 + i32.shl + local.get $3 + i32.add + i64.load32_u + i64.const 32 + i64.shl + i64.or + i64.store + br $continue|0 end end local.get $1 @@ -5011,31 +4105,26 @@ if local.get $1 i32.const 100 - i32.div_u - local.set $7 + i32.rem_u + local.set $4 local.get $1 i32.const 100 - i32.rem_u - local.set $6 - local.get $7 + i32.div_u local.set $1 local.get $2 i32.const 2 i32.sub - local.set $2 - local.get $3 - local.get $6 - i32.const 2 - i32.shl - i32.add - i32.load - local.set $5 - local.get $0 - local.get $2 + local.tee $2 i32.const 1 i32.shl + local.get $0 i32.add - local.get $5 + local.get $4 + i32.const 2 + i32.shl + local.get $3 + i32.add + i32.load i32.store end local.get $1 @@ -5045,46 +4134,35 @@ local.get $2 i32.const 2 i32.sub - local.set $2 - local.get $3 + i32.const 1 + i32.shl + local.get $0 + i32.add local.get $1 i32.const 2 i32.shl + local.get $3 i32.add i32.load - local.set $5 - local.get $0 - local.get $2 - i32.const 1 - i32.shl - i32.add - local.get $5 i32.store else local.get $2 i32.const 1 i32.sub - local.set $2 - i32.const 48 - local.get $1 - i32.add - local.set $5 - local.get $0 - local.get $2 i32.const 1 i32.shl + local.get $0 + i32.add + local.get $1 + i32.const 48 i32.add - local.get $5 i32.store16 end ) - (func $~lib/util/number/itoa32 (; 61 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/util/number/itoa32 (; 57 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) local.get $0 i32.eqz if @@ -5095,8 +4173,7 @@ local.get $0 i32.const 0 i32.lt_s - local.set $1 - local.get $1 + local.tee $1 if i32.const 0 local.get $0 @@ -5107,40 +4184,27 @@ call $~lib/util/number/decimalCount32 local.get $1 i32.add - local.set $2 - local.get $2 + local.tee $3 i32.const 1 i32.shl i32.const 16 call $~lib/rt/tlsf/__alloc - local.set $3 - block $~lib/util/number/utoa32_core|inlined.0 - local.get $3 - local.set $6 - local.get $0 - local.set $5 - local.get $2 - local.set $4 - local.get $6 - local.get $5 - local.get $4 - call $~lib/util/number/utoa32_lut - end + local.tee $2 + local.get $0 + local.get $3 + call $~lib/util/number/utoa32_lut local.get $1 if - local.get $3 + local.get $2 i32.const 45 i32.store16 end - local.get $3 + local.get $2 call $~lib/rt/purerc/__retain ) - (func $~lib/util/number/utoa32 (; 62 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/util/number/utoa32 (; 58 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) local.get $0 i32.eqz if @@ -5150,215 +4214,161 @@ end local.get $0 call $~lib/util/number/decimalCount32 - local.set $1 - local.get $1 + local.tee $1 i32.const 1 i32.shl i32.const 16 call $~lib/rt/tlsf/__alloc - local.set $2 - block $~lib/util/number/utoa32_core|inlined.1 - local.get $2 - local.set $5 - local.get $0 - local.set $4 - local.get $1 - local.set $3 - local.get $5 - local.get $4 - local.get $3 - call $~lib/util/number/utoa32_lut - end + local.tee $2 + local.get $0 + local.get $1 + call $~lib/util/number/utoa32_lut local.get $2 call $~lib/rt/purerc/__retain ) - (func $~lib/util/number/decimalCount64 (; 63 ;) (type $FUNCSIG$ij) (param $0 i64) (result i32) - (local $1 i32) + (func $~lib/util/number/decimalCount64 (; 59 ;) (type $FUNCSIG$ij) (param $0 i64) (result i32) local.get $0 i64.const 1000000000000000 i64.lt_u - if + if (result i32) local.get $0 i64.const 1000000000000 i64.lt_u - if + if (result i32) i32.const 11 i32.const 12 local.get $0 i64.const 100000000000 i64.lt_u select - return else + i32.const 13 i32.const 14 i32.const 15 local.get $0 i64.const 100000000000000 i64.lt_u select - local.set $1 - i32.const 13 - local.get $1 local.get $0 i64.const 10000000000000 i64.lt_u select - return end - unreachable - unreachable else local.get $0 i64.const 100000000000000000 i64.lt_u - if + if (result i32) i32.const 16 i32.const 17 local.get $0 i64.const 10000000000000000 i64.lt_u select - return else + i32.const 18 i32.const 19 i32.const 20 local.get $0 i64.const -8446744073709551616 i64.lt_u select - local.set $1 - i32.const 18 - local.get $1 local.get $0 i64.const 1000000000000000000 i64.lt_u select - return end - unreachable - unreachable end - unreachable - unreachable ) - (func $~lib/util/number/utoa64_lut (; 64 ;) (type $FUNCSIG$viji) (param $0 i32) (param $1 i64) (param $2 i32) + (func $~lib/util/number/utoa64_lut (; 60 ;) (type $FUNCSIG$viji) (param $0 i32) (param $1 i64) (param $2 i32) (local $3 i32) - (local $4 i64) + (local $4 i32) (local $5 i32) (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) - (local $10 i32) - (local $11 i32) - (local $12 i64) - (local $13 i64) - i32.const 2840 - i32.load offset=4 + i32.const 2844 + i32.load local.set $3 - block $break|0 - loop $continue|0 + loop $continue|0 + local.get $1 + i64.const 100000000 + i64.ge_u + if + local.get $1 local.get $1 i64.const 100000000 - i64.ge_u - if - local.get $1 - i64.const 100000000 - i64.div_u - local.set $4 - local.get $1 - local.get $4 - i64.const 100000000 - i64.mul - i64.sub - i32.wrap_i64 - local.set $5 - local.get $4 - local.set $1 - local.get $5 - i32.const 10000 - i32.div_u - local.set $6 - local.get $5 - i32.const 10000 - i32.rem_u - local.set $7 - local.get $6 - i32.const 100 - i32.div_u - local.set $8 - local.get $6 - i32.const 100 - i32.rem_u - local.set $9 - local.get $7 - i32.const 100 - i32.div_u - local.set $10 - local.get $7 - i32.const 100 - i32.rem_u - local.set $11 - local.get $3 - local.get $10 - i32.const 2 - i32.shl - i32.add - i64.load32_u - local.set $12 - local.get $3 - local.get $11 - i32.const 2 - i32.shl - i32.add - i64.load32_u - local.set $13 - local.get $2 - i32.const 4 - i32.sub - local.set $2 - local.get $0 - local.get $2 - i32.const 1 - i32.shl - i32.add - local.get $12 - local.get $13 - i64.const 32 - i64.shl - i64.or - i64.store - local.get $3 - local.get $8 - i32.const 2 - i32.shl - i32.add - i64.load32_u - local.set $12 - local.get $3 - local.get $9 - i32.const 2 - i32.shl - i32.add - i64.load32_u - local.set $13 - local.get $2 - i32.const 4 - i32.sub - local.set $2 - local.get $0 - local.get $2 - i32.const 1 - i32.shl - i32.add - local.get $12 - local.get $13 - i64.const 32 - i64.shl - i64.or - i64.store - br $continue|0 - end + i64.div_u + local.tee $1 + i64.const 100000000 + i64.mul + i64.sub + i32.wrap_i64 + local.tee $4 + i32.const 10000 + i32.div_u + local.tee $5 + i32.const 100 + i32.div_u + local.set $6 + local.get $5 + i32.const 100 + i32.rem_u + local.set $5 + local.get $2 + i32.const 4 + i32.sub + local.tee $2 + i32.const 1 + i32.shl + local.get $0 + i32.add + local.get $4 + i32.const 10000 + i32.rem_u + local.tee $4 + i32.const 100 + i32.div_u + i32.const 2 + i32.shl + local.get $3 + i32.add + i64.load32_u + local.get $4 + i32.const 100 + i32.rem_u + i32.const 2 + i32.shl + local.get $3 + i32.add + i64.load32_u + i64.const 32 + i64.shl + i64.or + i64.store + local.get $2 + i32.const 4 + i32.sub + local.tee $2 + i32.const 1 + i32.shl + local.get $0 + i32.add + local.get $6 + i32.const 2 + i32.shl + local.get $3 + i32.add + i64.load32_u + local.get $5 + i32.const 2 + i32.shl + local.get $3 + i32.add + i64.load32_u + i64.const 32 + i64.shl + i64.or + i64.store + br $continue|0 end end local.get $0 @@ -5367,14 +4377,10 @@ local.get $2 call $~lib/util/number/utoa32_lut ) - (func $~lib/util/number/utoa64 (; 65 ;) (type $FUNCSIG$ij) (param $0 i64) (result i32) + (func $~lib/util/number/utoa64 (; 61 ;) (type $FUNCSIG$ij) (param $0 i64) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i64) local.get $0 i64.eqz if @@ -5388,63 +4394,38 @@ if local.get $0 i32.wrap_i64 - local.set $2 - local.get $2 + local.tee $1 call $~lib/util/number/decimalCount32 - local.set $3 - local.get $3 + local.tee $3 i32.const 1 i32.shl i32.const 16 call $~lib/rt/tlsf/__alloc - local.set $1 - block $~lib/util/number/utoa32_core|inlined.2 - local.get $1 - local.set $6 - local.get $2 - local.set $5 - local.get $3 - local.set $4 - local.get $6 - local.get $5 - local.get $4 - call $~lib/util/number/utoa32_lut - end + local.tee $2 + local.get $1 + local.get $3 + call $~lib/util/number/utoa32_lut else local.get $0 call $~lib/util/number/decimalCount64 - local.set $3 - local.get $3 + local.tee $1 i32.const 1 i32.shl i32.const 16 call $~lib/rt/tlsf/__alloc - local.set $1 - block $~lib/util/number/utoa64_core|inlined.0 - local.get $1 - local.set $4 - local.get $0 - local.set $7 - local.get $3 - local.set $2 - local.get $4 - local.get $7 - local.get $2 - call $~lib/util/number/utoa64_lut - end + local.tee $2 + local.get $0 + local.get $1 + call $~lib/util/number/utoa64_lut end - local.get $1 + local.get $2 call $~lib/rt/purerc/__retain ) - (func $~lib/util/number/itoa64 (; 66 ;) (type $FUNCSIG$ij) (param $0 i64) (result i32) + (func $~lib/util/number/itoa64 (; 62 ;) (type $FUNCSIG$ij) (param $0 i64) (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 i64) local.get $0 i64.eqz if @@ -5452,690 +4433,477 @@ call $~lib/rt/purerc/__retain return end - local.get $0 - i64.const 0 - i64.lt_s - local.set $1 - local.get $1 - if - i64.const 0 + block (result i32) local.get $0 - i64.sub - local.set $0 + i64.const 0 + i64.lt_s + local.tee $1 + if + i64.const 0 + local.get $0 + i64.sub + local.set $0 + end + local.get $0 + i64.const 4294967295 + i64.le_u end - local.get $0 - i64.const 4294967295 - i64.le_u if local.get $0 i32.wrap_i64 - local.set $3 - local.get $3 + local.tee $2 call $~lib/util/number/decimalCount32 local.get $1 i32.add - local.set $4 - local.get $4 + local.tee $4 i32.const 1 i32.shl i32.const 16 call $~lib/rt/tlsf/__alloc - local.set $2 - block $~lib/util/number/utoa32_core|inlined.3 - local.get $2 - local.set $7 - local.get $3 - local.set $6 - local.get $4 - local.set $5 - local.get $7 - local.get $6 - local.get $5 - call $~lib/util/number/utoa32_lut - end + local.tee $3 + local.get $2 + local.get $4 + call $~lib/util/number/utoa32_lut else local.get $0 call $~lib/util/number/decimalCount64 local.get $1 i32.add - local.set $4 - local.get $4 + local.tee $2 i32.const 1 i32.shl i32.const 16 call $~lib/rt/tlsf/__alloc - local.set $2 - block $~lib/util/number/utoa64_core|inlined.1 - local.get $2 - local.set $5 - local.get $0 - local.set $8 - local.get $4 - local.set $3 - local.get $5 - local.get $8 - local.get $3 - call $~lib/util/number/utoa64_lut - end + local.tee $3 + local.get $0 + local.get $2 + call $~lib/util/number/utoa64_lut end local.get $1 if - local.get $2 + local.get $3 i32.const 45 i32.store16 end - local.get $2 + local.get $3 call $~lib/rt/purerc/__retain ) - (func $~lib/builtins/isFinite (; 67 ;) (type $FUNCSIG$id) (param $0 f64) (result i32) - local.get $0 - local.get $0 - f64.sub - f64.const 0 - f64.eq - ) - (func $~lib/builtins/isNaN (; 68 ;) (type $FUNCSIG$id) (param $0 f64) (result i32) - local.get $0 - local.get $0 - f64.ne - ) - (func $~lib/array/Array#__unchecked_get (; 69 ;) (type $FUNCSIG$jii) (param $0 i32) (param $1 i32) (result i64) - local.get $0 - i32.load offset=4 - local.get $1 - i32.const 3 - i32.shl - i32.add - i64.load - ) - (func $~lib/array/Array#__unchecked_get (; 70 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - local.get $0 - i32.load offset=4 - local.get $1 - i32.const 1 - i32.shl - i32.add - i32.load16_s - ) - (func $~lib/util/number/genDigits (; 71 ;) (type $FUNCSIG$iijijiji) (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 (; 63 ;) (type $FUNCSIG$iijijiji) (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 $8 i32) (local $9 i64) (local $10 i64) - (local $11 i32) + (local $11 i64) (local $12 i32) - (local $13 i64) - (local $14 i32) - (local $15 i32) - (local $16 i32) - (local $17 i32) - (local $18 i32) - (local $19 i64) - (local $20 i32) - (local $21 i64) - (local $22 i64) - (local $23 i64) - (local $24 i64) - (local $25 i32) - (local $26 i32) + (local $13 i32) + (local $14 i64) + local.get $3 + local.get $1 + i64.sub + local.set $9 + i64.const 1 i32.const 0 local.get $4 i32.sub - local.set $7 - i64.const 1 - local.get $7 + local.tee $12 i64.extend_i32_s + local.tee $1 i64.shl - local.set $8 - local.get $8 + local.tee $10 i64.const 1 i64.sub - local.set $9 + local.tee $14 local.get $3 - local.get $1 - i64.sub - local.set $10 - local.get $4 + i64.and local.set $11 local.get $3 - local.get $7 - i64.extend_i32_s + local.get $1 i64.shr_u i32.wrap_i64 - local.set $12 - local.get $3 - local.get $9 - i64.and - local.set $13 - local.get $12 + local.tee $7 call $~lib/util/number/decimalCount32 - local.set $14 - local.get $6 - local.set $15 - i32.const 5208 - i32.load offset=4 - local.set $16 - block $break|0 - loop $continue|0 - local.get $14 - i32.const 0 - i32.gt_s - if - block $break|1 - block $case10|1 - block $case9|1 - block $case8|1 - block $case7|1 - block $case6|1 - block $case5|1 - block $case4|1 - block $case3|1 - block $case2|1 - block $case1|1 - block $case0|1 - local.get $14 - local.set $18 - local.get $18 - i32.const 10 - i32.eq - br_if $case0|1 - local.get $18 - i32.const 9 - i32.eq - br_if $case1|1 - local.get $18 - i32.const 8 - i32.eq - br_if $case2|1 - local.get $18 - i32.const 7 - i32.eq - br_if $case3|1 - local.get $18 - i32.const 6 - i32.eq - br_if $case4|1 - local.get $18 - i32.const 5 - i32.eq - br_if $case5|1 - local.get $18 - i32.const 4 - i32.eq - br_if $case6|1 - local.get $18 - i32.const 3 - i32.eq - br_if $case7|1 - local.get $18 - i32.const 2 - i32.eq - br_if $case8|1 - local.get $18 + local.set $4 + i32.const 5212 + i32.load + local.set $13 + loop $continue|0 + local.get $4 + i32.const 0 + i32.gt_s + if + block $break|1 + block $case10|1 + block $case9|1 + block $case8|1 + block $case7|1 + block $case6|1 + block $case5|1 + block $case4|1 + block $case3|1 + block $case2|1 + block $case1|1 + local.get $4 + i32.const 10 + i32.ne + if + local.get $4 + i32.const 9 + i32.eq + br_if $case1|1 + block $tablify|0 + local.get $4 i32.const 1 - i32.eq - br_if $case9|1 - br $case10|1 + i32.sub + br_table $case9|1 $case8|1 $case7|1 $case6|1 $case5|1 $case4|1 $case3|1 $case2|1 $tablify|0 end - block - local.get $12 - i32.const 1000000000 - i32.div_u - local.set $17 - local.get $12 - i32.const 1000000000 - i32.rem_u - local.set $12 - br $break|1 - unreachable - end - unreachable + br $case10|1 end - block - local.get $12 - i32.const 100000000 - i32.div_u - local.set $17 - local.get $12 - i32.const 100000000 - i32.rem_u - local.set $12 - br $break|1 - unreachable - end - unreachable - end - block - local.get $12 - i32.const 10000000 + local.get $7 + i32.const 1000000000 i32.div_u - local.set $17 - local.get $12 - i32.const 10000000 + local.set $8 + local.get $7 + i32.const 1000000000 i32.rem_u - local.set $12 + local.set $7 br $break|1 - unreachable end - unreachable - end - block - local.get $12 - i32.const 1000000 + local.get $7 + i32.const 100000000 i32.div_u - local.set $17 - local.get $12 - i32.const 1000000 + local.set $8 + local.get $7 + i32.const 100000000 i32.rem_u - local.set $12 + local.set $7 br $break|1 - unreachable end - unreachable - end - block - local.get $12 - i32.const 100000 + local.get $7 + i32.const 10000000 i32.div_u - local.set $17 - local.get $12 - i32.const 100000 + local.set $8 + local.get $7 + i32.const 10000000 i32.rem_u - local.set $12 + local.set $7 br $break|1 - unreachable end - unreachable - end - block - local.get $12 - i32.const 10000 + local.get $7 + i32.const 1000000 i32.div_u - local.set $17 - local.get $12 - i32.const 10000 + local.set $8 + local.get $7 + i32.const 1000000 i32.rem_u - local.set $12 + local.set $7 br $break|1 - unreachable end - unreachable - end - block - local.get $12 - i32.const 1000 + local.get $7 + i32.const 100000 i32.div_u - local.set $17 - local.get $12 - i32.const 1000 + local.set $8 + local.get $7 + i32.const 100000 i32.rem_u - local.set $12 + local.set $7 br $break|1 - unreachable end - unreachable - end - block - local.get $12 - i32.const 100 + local.get $7 + i32.const 10000 i32.div_u - local.set $17 - local.get $12 - i32.const 100 + local.set $8 + local.get $7 + i32.const 10000 i32.rem_u - local.set $12 + local.set $7 br $break|1 - unreachable end - unreachable - end - block - local.get $12 - i32.const 10 + local.get $7 + i32.const 1000 i32.div_u - local.set $17 - local.get $12 - i32.const 10 + local.set $8 + local.get $7 + i32.const 1000 i32.rem_u - local.set $12 + local.set $7 br $break|1 - unreachable end - unreachable - end - block - local.get $12 - local.set $17 - i32.const 0 - local.set $12 + local.get $7 + i32.const 100 + i32.div_u + local.set $8 + local.get $7 + i32.const 100 + i32.rem_u + local.set $7 br $break|1 - unreachable end - unreachable - end - block - i32.const 0 - local.set $17 + local.get $7 + i32.const 10 + i32.div_u + local.set $8 + local.get $7 + i32.const 10 + i32.rem_u + local.set $7 br $break|1 - unreachable end - unreachable + local.get $7 + local.set $8 + i32.const 0 + local.set $7 + br $break|1 end - local.get $17 - local.get $15 - i32.or - if - local.get $0 - block (result i32) - local.get $15 - local.tee $18 - i32.const 1 - i32.add - local.set $15 - local.get $18 - end - i32.const 1 - i32.shl - i32.add - i32.const 48 - local.get $17 - i32.const 65535 - i32.and - i32.add - i32.store16 - end - local.get $14 + i32.const 0 + local.set $8 + end + local.get $6 + local.get $8 + i32.or + if + local.get $6 + local.tee $2 i32.const 1 - i32.sub - local.set $14 + i32.add + local.set $6 + local.get $2 + i32.const 1 + i32.shl + local.get $0 + i32.add + local.get $8 + i32.const 65535 + i32.and + i32.const 48 + i32.add + i32.store16 + end + local.get $4 + i32.const 1 + i32.sub + local.set $4 + local.get $7 + i64.extend_i32_u + local.get $12 + i64.extend_i32_s + i64.shl + local.get $11 + i64.add + local.tee $1 + local.get $5 + i64.le_u + if + global.get $~lib/util/number/_K + local.get $4 + i32.add + global.set $~lib/util/number/_K + local.get $4 + i32.const 2 + i32.shl + local.get $13 + i32.add + i64.load32_u local.get $12 - i64.extend_i32_u - local.get $7 i64.extend_i32_s i64.shl - local.get $13 - i64.add - local.set $19 - local.get $19 - local.get $5 - i64.le_u - if - global.get $~lib/util/number/_K - local.get $14 - i32.add - global.set $~lib/util/number/_K - block $~lib/util/number/grisuRound|inlined.0 - local.get $0 - local.set $20 - local.get $15 - local.set $18 - local.get $5 - local.set $24 - local.get $19 - local.set $23 - local.get $16 - local.get $14 - i32.const 2 - i32.shl - i32.add - i64.load32_u - local.get $7 - i64.extend_i32_s - i64.shl - local.set $22 - local.get $10 - local.set $21 - local.get $20 - local.get $18 - i32.const 1 - i32.sub - i32.const 1 - i32.shl - i32.add - local.set $25 - local.get $25 - i32.load16_u - local.set $26 - block $break|2 - loop $continue|2 - local.get $23 - local.get $21 - i64.lt_u - if (result i32) - local.get $24 - local.get $23 - i64.sub - local.get $22 - i64.ge_u - else - i32.const 0 - end - if (result i32) - local.get $23 - local.get $22 - i64.add - local.get $21 - i64.lt_u - if (result i32) - i32.const 1 - else - local.get $21 - local.get $23 - i64.sub - local.get $23 - local.get $22 - i64.add - local.get $21 - i64.sub - i64.gt_u - end - else - i32.const 0 - end - if - local.get $26 - i32.const 1 - i32.sub - local.set $26 - local.get $23 - local.get $22 - i64.add - local.set $23 - br $continue|2 - end - end - end - local.get $25 - local.get $26 - i32.store16 - end - local.get $15 - return - end - br $continue|0 - end - end - end - block $break|3 - loop $continue|3 - i32.const 1 - if - local.get $13 - i64.const 10 - i64.mul - local.set $13 - local.get $5 - i64.const 10 - i64.mul - local.set $5 - local.get $13 - local.get $7 - i64.extend_i32_s - i64.shr_u - local.set $19 - local.get $19 - local.get $15 - i64.extend_i32_s - i64.or - i64.const 0 - i64.ne - if - local.get $0 - block (result i32) - local.get $15 - local.tee $17 - i32.const 1 - i32.add - local.set $15 - local.get $17 - end - i32.const 1 - i32.shl - i32.add - i32.const 48 - local.get $19 - i32.wrap_i64 - i32.const 65535 - i32.and - i32.add - i32.store16 - end - local.get $13 - local.get $9 - i64.and - local.set $13 - local.get $14 + local.set $3 + local.get $6 i32.const 1 i32.sub - local.set $14 - local.get $13 - local.get $5 - i64.lt_u - if - global.get $~lib/util/number/_K - local.get $14 - i32.add - global.set $~lib/util/number/_K - local.get $10 - local.get $16 + i32.const 1 + i32.shl + local.get $0 + i32.add + local.tee $2 + i32.load16_u + local.set $4 + loop $continue|2 + local.get $5 + local.get $1 + i64.sub + local.get $3 + i64.ge_u i32.const 0 - local.get $14 - i32.sub - i32.const 2 - i32.shl - i32.add - i64.load32_u - i64.mul - local.set $10 - block $~lib/util/number/grisuRound|inlined.1 - local.get $0 - local.set $26 - local.get $15 - local.set $17 - local.get $5 - local.set $24 - local.get $13 - local.set $23 - local.get $8 - local.set $22 - local.get $10 - local.set $21 - local.get $26 - local.get $17 + local.get $1 + local.get $9 + i64.lt_u + select + if (result i32) + i32.const 1 + local.get $9 + local.get $1 + i64.sub + local.get $1 + local.get $3 + i64.add + local.get $9 + i64.sub + i64.gt_u + local.get $1 + local.get $3 + i64.add + local.get $9 + i64.lt_u + select + else + i32.const 0 + end + if + local.get $4 i32.const 1 i32.sub - i32.const 1 - i32.shl - i32.add - local.set $25 - local.get $25 - i32.load16_u - local.set $18 - block $break|4 - loop $continue|4 - local.get $23 - local.get $21 - i64.lt_u - if (result i32) - local.get $24 - local.get $23 - i64.sub - local.get $22 - i64.ge_u - else - i32.const 0 - end - if (result i32) - local.get $23 - local.get $22 - i64.add - local.get $21 - i64.lt_u - if (result i32) - i32.const 1 - else - local.get $21 - local.get $23 - i64.sub - local.get $23 - local.get $22 - i64.add - local.get $21 - i64.sub - i64.gt_u - end - else - i32.const 0 - end - if - local.get $18 - i32.const 1 - i32.sub - local.set $18 - local.get $23 - local.get $22 - i64.add - local.set $23 - br $continue|4 - end - end - end - local.get $25 - local.get $18 - i32.store16 + local.set $4 + local.get $1 + local.get $3 + i64.add + local.set $1 + br $continue|2 end - local.get $15 - return end - br $continue|3 + local.get $2 + local.get $4 + i32.store16 + local.get $6 + return end + br $continue|0 end end - local.get $15 + loop $continue|3 (result i32) + local.get $5 + i64.const 10 + i64.mul + local.set $5 + local.get $11 + i64.const 10 + i64.mul + local.tee $3 + local.get $12 + i64.extend_i32_s + i64.shr_u + local.tee $1 + local.get $6 + i64.extend_i32_s + i64.or + i64.const 0 + i64.ne + if + local.get $6 + local.tee $2 + i32.const 1 + i32.add + local.set $6 + local.get $2 + i32.const 1 + i32.shl + local.get $0 + i32.add + local.get $1 + i32.wrap_i64 + i32.const 65535 + i32.and + i32.const 48 + i32.add + i32.store16 + end + local.get $4 + i32.const 1 + i32.sub + local.set $4 + local.get $3 + local.get $14 + i64.and + local.tee $11 + local.get $5 + i64.ge_u + br_if $continue|3 + global.get $~lib/util/number/_K + local.get $4 + i32.add + global.set $~lib/util/number/_K + local.get $11 + local.set $1 + i32.const 0 + local.get $4 + i32.sub + i32.const 2 + i32.shl + local.get $13 + i32.add + i64.load32_u + local.get $9 + i64.mul + local.set $3 + local.get $6 + i32.const 1 + i32.sub + i32.const 1 + i32.shl + local.get $0 + i32.add + local.tee $2 + i32.load16_u + local.set $4 + loop $continue|4 + local.get $5 + local.get $1 + i64.sub + local.get $10 + i64.ge_u + i32.const 0 + local.get $1 + local.get $3 + i64.lt_u + select + if (result i32) + i32.const 1 + local.get $3 + local.get $1 + i64.sub + local.get $1 + local.get $10 + i64.add + local.get $3 + i64.sub + i64.gt_u + local.get $1 + local.get $10 + i64.add + local.get $3 + i64.lt_u + select + else + i32.const 0 + end + if + local.get $4 + i32.const 1 + i32.sub + local.set $4 + local.get $1 + local.get $10 + i64.add + local.set $1 + br $continue|4 + end + end + local.get $2 + local.get $4 + i32.store16 + local.get $6 + end ) - (func $~lib/util/number/prettify (; 72 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/util/number/prettify (; 64 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) - (local $10 i32) - (local $11 i32) local.get $2 i32.eqz if - local.get $0 local.get $1 i32.const 1 i32.shl + local.get $0 i32.add - i32.const 46 - i32.const 48 - i32.const 16 - i32.shl - i32.or + i32.const 3145774 i32.store local.get $1 i32.const 2 @@ -6143,11 +4911,10 @@ return end local.get $1 + local.get $1 local.get $2 i32.add - local.set $3 - local.get $1 - local.get $3 + local.tee $3 i32.le_s if (result i32) local.get $3 @@ -6156,69 +4923,56 @@ else i32.const 0 end - if - block $break|0 - local.get $1 - local.set $4 - loop $repeat|0 - local.get $4 + if (result i32) + loop $repeat|0 + block $break|0 + local.get $1 local.get $3 - i32.lt_s - i32.eqz + i32.ge_s br_if $break|0 - local.get $0 - local.get $4 + local.get $1 i32.const 1 i32.shl + local.get $0 i32.add i32.const 48 i32.store16 - local.get $4 + local.get $1 i32.const 1 i32.add - local.set $4 + local.set $1 br $repeat|0 - unreachable end - unreachable end - local.get $0 local.get $3 i32.const 1 i32.shl + local.get $0 i32.add - i32.const 46 - i32.const 48 - i32.const 16 - i32.shl - i32.or + i32.const 3145774 i32.store local.get $3 i32.const 2 i32.add - return else + local.get $3 + i32.const 21 + i32.le_s + i32.const 0 local.get $3 i32.const 0 i32.gt_s + select if (result i32) - local.get $3 - i32.const 21 - i32.le_s - else - i32.const 0 - end - if - local.get $0 local.get $3 i32.const 1 i32.shl + local.get $0 i32.add - local.set $4 - local.get $4 + local.tee $0 i32.const 2 i32.add - local.get $4 + local.get $0 i32.const 0 local.get $2 i32.sub @@ -6226,36 +4980,28 @@ i32.shl call $~lib/memory/memory.copy local.get $0 - local.get $3 - i32.const 1 - i32.shl - i32.add i32.const 46 i32.store16 local.get $1 i32.const 1 i32.add - return else + local.get $3 + i32.const 0 + i32.le_s + i32.const 0 i32.const -6 local.get $3 i32.lt_s + select if (result i32) - local.get $3 - i32.const 0 - i32.le_s - else - i32.const 0 - end - if i32.const 2 local.get $3 i32.sub - local.set $4 - local.get $0 - local.get $4 + local.tee $3 i32.const 1 i32.shl + local.get $0 i32.add local.get $0 local.get $1 @@ -6263,111 +5009,87 @@ i32.shl call $~lib/memory/memory.copy local.get $0 - i32.const 48 - i32.const 46 - i32.const 16 - i32.shl - i32.or + i32.const 3014704 i32.store - block $break|1 - i32.const 2 - local.set $5 - loop $repeat|1 - local.get $5 - local.get $4 - i32.lt_s - i32.eqz + i32.const 2 + local.set $2 + loop $repeat|1 + block $break|1 + local.get $2 + local.get $3 + i32.ge_s br_if $break|1 - local.get $0 - local.get $5 + local.get $2 i32.const 1 i32.shl + local.get $0 i32.add i32.const 48 i32.store16 - local.get $5 + local.get $2 i32.const 1 i32.add - local.set $5 + local.set $2 br $repeat|1 - unreachable end - unreachable end local.get $1 - local.get $4 + local.get $3 i32.add - return else local.get $1 i32.const 1 i32.eq - if + if (result i32) local.get $0 i32.const 101 i32.store16 offset=2 - block $~lib/util/number/genExponent|inlined.0 (result i32) - local.get $0 - i32.const 4 - i32.add - local.set $5 + local.get $0 + i32.const 4 + i32.add + local.tee $0 + block (result i32) local.get $3 i32.const 1 i32.sub - local.set $4 - local.get $4 + local.tee $1 i32.const 0 i32.lt_s - local.set $6 - local.get $6 + local.tee $2 if i32.const 0 - local.get $4 + local.get $1 i32.sub - local.set $4 + local.set $1 end - local.get $4 - call $~lib/util/number/decimalCount32 - i32.const 1 - i32.add - local.set $7 - block $~lib/util/number/utoa32_core|inlined.4 - local.get $5 - local.set $10 - local.get $4 - local.set $9 - local.get $7 - local.set $8 - local.get $10 - local.get $9 - local.get $8 - call $~lib/util/number/utoa32_lut - end - local.get $5 - i32.const 45 - i32.const 43 - local.get $6 - select - i32.store16 - local.get $7 + local.get $1 end - local.set $1 + local.get $1 + call $~lib/util/number/decimalCount32 + i32.const 1 + i32.add + local.tee $1 + call $~lib/util/number/utoa32_lut + local.get $0 + i32.const 45 + i32.const 43 + local.get $2 + select + i32.store16 local.get $1 i32.const 2 i32.add - return else - local.get $1 - i32.const 1 - i32.shl - local.set $7 local.get $0 i32.const 4 i32.add local.get $0 i32.const 2 i32.add - local.get $7 + local.get $1 + i32.const 1 + i32.shl + local.tee $2 i32.const 2 i32.sub call $~lib/memory/memory.copy @@ -6375,524 +5097,345 @@ i32.const 46 i32.store16 offset=2 local.get $0 - local.get $7 + local.get $2 i32.add + local.tee $0 i32.const 101 i32.store16 offset=2 - local.get $1 - block $~lib/util/number/genExponent|inlined.1 (result i32) - local.get $0 - local.get $7 - i32.add - i32.const 4 - i32.add - local.set $4 + local.get $0 + i32.const 4 + i32.add + local.tee $2 + block (result i32) local.get $3 i32.const 1 i32.sub - local.set $6 - local.get $6 + local.tee $0 i32.const 0 i32.lt_s - local.set $5 - local.get $5 + local.tee $3 if i32.const 0 - local.get $6 + local.get $0 i32.sub - local.set $6 + local.set $0 end - local.get $6 - call $~lib/util/number/decimalCount32 - i32.const 1 - i32.add - local.set $8 - block $~lib/util/number/utoa32_core|inlined.5 - local.get $4 - local.set $11 - local.get $6 - local.set $10 - local.get $8 - local.set $9 - local.get $11 - local.get $10 - local.get $9 - call $~lib/util/number/utoa32_lut - end - local.get $4 - i32.const 45 - i32.const 43 - local.get $5 - select - i32.store16 - local.get $8 + local.get $0 end + local.get $0 + call $~lib/util/number/decimalCount32 + i32.const 1 i32.add - local.set $1 + local.tee $0 + call $~lib/util/number/utoa32_lut + local.get $2 + i32.const 45 + i32.const 43 + local.get $3 + select + i32.store16 + local.get $0 local.get $1 + i32.add i32.const 2 i32.add - return end - unreachable end - unreachable end - unreachable end - unreachable - unreachable ) - (func $~lib/util/number/dtoa_core (; 73 ;) (type $FUNCSIG$iid) (param $0 i32) (param $1 f64) (result i32) - (local $2 i32) - (local $3 f64) - (local $4 i32) - (local $5 i32) + (func $~lib/util/number/dtoa_core (; 65 ;) (type $FUNCSIG$iid) (param $0 i32) (param $1 f64) (result i32) + (local $2 i64) + (local $3 i32) + (local $4 i64) + (local $5 i64) (local $6 i64) (local $7 i32) (local $8 i64) (local $9 i64) - (local $10 i64) + (local $10 i32) (local $11 i32) - (local $12 i64) - (local $13 i32) - (local $14 i32) - (local $15 i32) - (local $16 f64) - (local $17 i64) - (local $18 i64) - (local $19 i64) - (local $20 i64) - (local $21 i64) - (local $22 i64) - (local $23 i64) - (local $24 i64) - (local $25 i64) - (local $26 i32) - (local $27 i64) - (local $28 i32) local.get $1 f64.const 0 f64.lt - local.set $2 - local.get $2 + local.tee $10 if - local.get $1 - f64.neg - local.set $1 local.get $0 i32.const 45 i32.store16 - end - block $~lib/util/number/grisu2|inlined.0 (result i32) local.get $1 - local.set $3 - local.get $0 - local.set $5 - local.get $2 - local.set $4 - local.get $3 - i64.reinterpret_f64 - local.set $6 - local.get $6 - i64.const 9218868437227405312 - i64.and - i64.const 52 - i64.shr_u - i32.wrap_i64 - local.set $7 - local.get $6 - i64.const 4503599627370495 - i64.and - local.set $8 - local.get $7 - i32.const 0 - i32.ne - i64.extend_i32_u - i64.const 52 - i64.shl - local.get $8 - i64.add - local.set $9 - local.get $7 - i32.const 1 - local.get $7 - i32.const 0 - i32.ne - select - i32.const 1023 - i32.const 52 - i32.add - i32.sub - local.set $7 - block $~lib/util/number/normalizedBoundaries|inlined.0 - local.get $9 - local.set $10 - local.get $7 - local.set $11 - local.get $10 - i64.const 1 - i64.shl - i64.const 1 - i64.add - local.set $12 - local.get $11 - i32.const 1 - i32.sub - local.set $13 - local.get $12 - i64.clz - i32.wrap_i64 - local.set $14 - local.get $12 - local.get $14 - i64.extend_i32_s - i64.shl - local.set $12 - local.get $13 - local.get $14 - i32.sub - local.set $13 - i32.const 1 - local.get $10 - i64.const 4503599627370496 - i64.eq - i32.add - local.set $15 - local.get $12 - global.set $~lib/util/number/_frc_plus - local.get $10 - local.get $15 - i64.extend_i32_s - i64.shl - i64.const 1 - i64.sub - local.get $11 - local.get $15 - i32.sub - local.get $13 - i32.sub - i64.extend_i32_s - i64.shl - global.set $~lib/util/number/_frc_minus - local.get $13 - global.set $~lib/util/number/_exp - end - block $~lib/util/number/getCachedPower|inlined.0 - global.get $~lib/util/number/_exp - local.set $15 - i32.const -61 - local.get $15 - i32.sub - f64.convert_i32_s - f64.const 0.30102999566398114 - f64.mul - f64.const 347 - f64.add - local.set $16 - local.get $16 - i32.trunc_f64_s - local.set $14 - local.get $14 - local.get $14 - f64.convert_i32_s - local.get $16 - f64.ne - i32.add - local.set $14 - local.get $14 - i32.const 3 - i32.shr_s - i32.const 1 - i32.add - local.set $13 - i32.const 348 - local.get $13 - i32.const 3 - i32.shl - i32.sub - global.set $~lib/util/number/_K - i32.const 4896 - local.get $13 - call $~lib/array/Array#__unchecked_get - global.set $~lib/util/number/_frc_pow - i32.const 5120 - local.get $13 - call $~lib/array/Array#__unchecked_get - global.set $~lib/util/number/_exp_pow - end - local.get $9 - i64.clz - i32.wrap_i64 - local.set $13 - local.get $9 - local.get $13 - i64.extend_i32_s - i64.shl - local.set $9 - local.get $7 - local.get $13 - i32.sub - local.set $7 - global.get $~lib/util/number/_frc_pow - local.set $12 - global.get $~lib/util/number/_exp_pow - local.set $14 - block $~lib/util/number/umul64f|inlined.0 (result i64) - local.get $9 - local.set $17 - local.get $12 - local.set $10 - local.get $17 - i64.const 4294967295 - i64.and - local.set $18 - local.get $10 - i64.const 4294967295 - i64.and - local.set $19 - local.get $17 - i64.const 32 - i64.shr_u - local.set $20 - local.get $10 - i64.const 32 - i64.shr_u - local.set $21 - local.get $18 - local.get $19 - i64.mul - local.set $22 - local.get $20 - local.get $19 - i64.mul - local.get $22 - i64.const 32 - i64.shr_u - i64.add - local.set $23 - local.get $18 - local.get $21 - i64.mul - local.get $23 - i64.const 4294967295 - i64.and - i64.add - local.set $24 - local.get $24 - i64.const 2147483647 - i64.add - local.set $24 - local.get $23 - i64.const 32 - i64.shr_u - local.set $23 - local.get $24 - i64.const 32 - i64.shr_u - local.set $24 - local.get $20 - local.get $21 - i64.mul - local.get $23 - i64.add - local.get $24 - i64.add - end - local.set $24 - block $~lib/util/number/umul64e|inlined.0 (result i32) - local.get $7 - local.set $11 - local.get $14 - local.set $15 - local.get $11 - local.get $15 - i32.add - i32.const 64 - i32.add - end - local.set $15 - block $~lib/util/number/umul64f|inlined.1 (result i64) - global.get $~lib/util/number/_frc_plus - local.set $22 - local.get $12 - local.set $23 - local.get $22 - i64.const 4294967295 - i64.and - local.set $21 - local.get $23 - i64.const 4294967295 - i64.and - local.set $20 - local.get $22 - i64.const 32 - i64.shr_u - local.set $19 - local.get $23 - i64.const 32 - i64.shr_u - local.set $18 - local.get $21 - local.get $20 - i64.mul - local.set $10 - local.get $19 - local.get $20 - i64.mul - local.get $10 - i64.const 32 - i64.shr_u - i64.add - local.set $17 - local.get $21 - local.get $18 - i64.mul - local.get $17 - i64.const 4294967295 - i64.and - i64.add - local.set $25 - local.get $25 - i64.const 2147483647 - i64.add - local.set $25 - local.get $17 - i64.const 32 - i64.shr_u - local.set $17 - local.get $25 - i64.const 32 - i64.shr_u - local.set $25 - local.get $19 - local.get $18 - i64.mul - local.get $17 - i64.add - local.get $25 - i64.add - end - i64.const 1 - i64.sub - local.set $25 - block $~lib/util/number/umul64e|inlined.1 (result i32) - global.get $~lib/util/number/_exp - local.set $26 - local.get $14 - local.set $11 - local.get $26 - local.get $11 - i32.add - i32.const 64 - i32.add - end - local.set $11 - block $~lib/util/number/umul64f|inlined.2 (result i64) - global.get $~lib/util/number/_frc_minus - local.set $10 - local.get $12 - local.set $17 - local.get $10 - i64.const 4294967295 - i64.and - local.set $18 - local.get $17 - i64.const 4294967295 - i64.and - local.set $19 - local.get $10 - i64.const 32 - i64.shr_u - local.set $20 - local.get $17 - i64.const 32 - i64.shr_u - local.set $21 - local.get $18 - local.get $19 - i64.mul - local.set $23 - local.get $20 - local.get $19 - i64.mul - local.get $23 - i64.const 32 - i64.shr_u - i64.add - local.set $22 - local.get $18 - local.get $21 - i64.mul - local.get $22 - i64.const 4294967295 - i64.and - i64.add - local.set $27 - local.get $27 - i64.const 2147483647 - i64.add - local.set $27 - local.get $22 - i64.const 32 - i64.shr_u - local.set $22 - local.get $27 - i64.const 32 - i64.shr_u - local.set $27 - local.get $20 - local.get $21 - i64.mul - local.get $22 - i64.add - local.get $27 - i64.add - end - i64.const 1 - i64.add - local.set $27 - local.get $25 - local.get $27 - i64.sub - local.set $22 - local.get $5 - local.get $24 - local.get $15 - local.get $25 - local.get $11 - local.get $22 - local.get $4 - call $~lib/util/number/genDigits + f64.neg + local.set $1 end - local.set $28 - local.get $0 + local.get $1 + i64.reinterpret_f64 + local.tee $2 + i64.const 9218868437227405312 + i64.and + i64.const 52 + i64.shr_u + i32.wrap_i64 + local.tee $11 + i32.const 0 + i32.ne + local.set $7 local.get $2 + i64.const 4503599627370495 + i64.and + local.get $7 + i64.extend_i32_u + i64.const 52 + i64.shl + i64.add + local.tee $5 + i64.const 1 + i64.shl + i64.const 1 + i64.add + local.tee $2 + i64.clz + i32.wrap_i64 + local.set $3 + local.get $2 + local.get $3 + i64.extend_i32_s + i64.shl + global.set $~lib/util/number/_frc_plus + local.get $11 + i32.const 1 + local.get $7 + select + i32.const 1075 + i32.sub + local.tee $7 + i32.const 1 + i32.sub + local.get $3 + i32.sub + local.set $3 + local.get $5 + local.get $5 + i64.const 4503599627370496 + i64.eq + i32.const 1 + i32.add + local.tee $11 + i64.extend_i32_s + i64.shl + i64.const 1 + i64.sub + local.get $7 + local.get $11 + i32.sub + local.get $3 + i32.sub + i64.extend_i32_s + i64.shl + global.set $~lib/util/number/_frc_minus + local.get $3 + global.set $~lib/util/number/_exp + i32.const 348 + i32.const -61 + global.get $~lib/util/number/_exp + i32.sub + f64.convert_i32_s + f64.const 0.30102999566398114 + f64.mul + f64.const 347 + f64.add + local.tee $1 + i32.trunc_f64_s + local.tee $3 + local.get $3 + f64.convert_i32_s + local.get $1 + f64.ne + i32.add + i32.const 3 + i32.shr_s + i32.const 1 + i32.add + local.tee $3 + i32.const 3 + i32.shl + i32.sub + global.set $~lib/util/number/_K + i32.const 4900 + i32.load + local.get $3 + i32.const 3 + i32.shl + i32.add + i64.load + global.set $~lib/util/number/_frc_pow + i32.const 5124 + i32.load + local.get $3 i32.const 1 i32.shl i32.add - local.get $28 + i32.load16_s + global.set $~lib/util/number/_exp_pow + global.get $~lib/util/number/_frc_pow + local.tee $6 + i64.const 4294967295 + i64.and + local.set $2 + global.get $~lib/util/number/_frc_plus + local.tee $8 + i64.const 4294967295 + i64.and + local.tee $4 + local.get $6 + i64.const 32 + i64.shr_u + local.tee $6 + i64.mul + local.get $8 + i64.const 32 + i64.shr_u + local.tee $8 local.get $2 + i64.mul + local.get $2 + local.get $4 + i64.mul + i64.const 32 + i64.shr_u + i64.add + local.tee $4 + i64.const 4294967295 + i64.and + i64.add + i64.const 2147483647 + i64.add + i64.const 32 + i64.shr_u + local.get $6 + local.get $8 + i64.mul + local.get $4 + i64.const 32 + i64.shr_u + i64.add + i64.add + i64.const 1 + i64.sub + local.tee $8 + local.get $6 + global.get $~lib/util/number/_frc_minus + local.tee $4 + i64.const 4294967295 + i64.and + local.tee $9 + i64.mul + local.get $4 + i64.const 32 + i64.shr_u + local.tee $4 + local.get $2 + i64.mul + local.get $2 + local.get $9 + i64.mul + i64.const 32 + i64.shr_u + i64.add + local.tee $9 + i64.const 4294967295 + i64.and + i64.add + i64.const 2147483647 + i64.add + i64.const 32 + i64.shr_u + local.get $4 + local.get $6 + i64.mul + local.get $9 + i64.const 32 + i64.shr_u + i64.add + i64.add + i64.const 1 + i64.add + i64.sub + local.set $4 + local.get $10 + i32.const 1 + i32.shl + local.get $0 + i32.add + local.get $0 + local.get $6 + local.get $5 + local.get $5 + i64.clz + i32.wrap_i64 + local.tee $0 + i64.extend_i32_s + i64.shl + local.tee $5 + i64.const 4294967295 + i64.and + local.tee $9 + i64.mul + local.get $5 + i64.const 32 + i64.shr_u + local.tee $5 + local.get $2 + i64.mul + local.get $2 + local.get $9 + i64.mul + i64.const 32 + i64.shr_u + i64.add + local.tee $2 + i64.const 4294967295 + i64.and + i64.add + i64.const 2147483647 + i64.add + i64.const 32 + i64.shr_u + local.get $5 + local.get $6 + i64.mul + local.get $2 + i64.const 32 + i64.shr_u + i64.add + i64.add + global.get $~lib/util/number/_exp_pow + local.tee $3 + local.get $7 + local.get $0 + i32.sub + i32.add + i32.const -64 + i32.sub + local.get $8 + global.get $~lib/util/number/_exp + local.get $3 + i32.add + i32.const -64 + i32.sub + local.get $4 + local.get $10 + call $~lib/util/number/genDigits + local.get $10 i32.sub global.get $~lib/util/number/_K call $~lib/util/number/prettify - local.set $28 - local.get $28 - local.get $2 + local.get $10 i32.add ) - (func $~lib/string/String#substring (; 74 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/string/String#substring (; 66 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result 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 $10 i32) local.get $0 - i32.const 0 - i32.ne i32.eqz if i32.const 0 @@ -6902,105 +5445,89 @@ call $~lib/builtins/abort unreachable end + i32.const 0 local.get $0 - call $~lib/string/String#get:length - local.set $3 - local.get $1 - local.tee $4 - i32.const 0 - local.tee $5 - local.get $4 - local.get $5 - i32.gt_s - select - local.tee $4 - local.get $3 - local.tee $5 - local.get $4 - local.get $5 - i32.lt_s - select - local.set $6 - local.get $2 - local.tee $4 - i32.const 0 - local.tee $5 - local.get $4 - local.get $5 - i32.gt_s - select - local.tee $4 - local.get $3 - local.tee $5 - local.get $4 - local.get $5 - i32.lt_s - select - local.set $7 - local.get $6 - local.tee $4 - local.get $7 - local.tee $5 - local.get $4 - local.get $5 - i32.lt_s - select - i32.const 1 - i32.shl - local.set $8 - local.get $6 - local.tee $4 - local.get $7 - local.tee $5 - local.get $4 - local.get $5 - i32.gt_s - select - i32.const 1 - i32.shl - local.set $9 - local.get $9 - local.get $8 + i32.const 16 i32.sub - local.set $3 + i32.load offset=12 + i32.const 1 + i32.shr_u + local.tee $2 + i32.const 0 + local.get $2 + i32.lt_s + select + local.tee $3 + local.get $1 + i32.const 0 + local.get $1 + i32.const 0 + i32.gt_s + select + local.tee $1 + local.get $2 + local.get $1 + local.get $2 + i32.lt_s + select + local.tee $2 local.get $3 + local.get $2 + i32.gt_s + select + i32.const 1 + i32.shl + local.tee $1 + local.get $3 + local.get $2 + local.get $3 + local.get $2 + i32.lt_s + select + i32.const 1 + i32.shl + local.tee $3 + i32.sub + local.tee $2 i32.eqz if i32.const 120 call $~lib/rt/purerc/__retain return end - local.get $8 - i32.eqz + local.get $3 if (result i32) - local.get $9 + i32.const 0 + else local.get $0 - call $~lib/string/String#get:length + i32.const 16 + i32.sub + i32.load offset=12 + i32.const 1 + i32.shr_u i32.const 1 i32.shl + local.get $1 i32.eq - else - i32.const 0 end if local.get $0 call $~lib/rt/purerc/__retain return end - local.get $3 + local.get $2 i32.const 16 call $~lib/rt/tlsf/__alloc - local.set $10 - local.get $10 + local.tee $1 local.get $0 - local.get $8 - i32.add local.get $3 + i32.add + local.get $2 call $~lib/memory/memory.copy - local.get $10 + local.get $1 call $~lib/rt/purerc/__retain ) - (func $~lib/rt/tlsf/__free (; 75 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $~lib/rt/tlsf/__free (; 67 ;) (type $FUNCSIG$vi) (param $0 i32) global.get $~lib/rt/tlsf/ROOT i32.eqz if @@ -7012,16 +5539,12 @@ unreachable end local.get $0 + i32.const 15 + i32.and + i32.eqz i32.const 0 - i32.ne - if (result i32) - local.get $0 - i32.const 15 - i32.and - i32.eqz - else - i32.const 0 - end + local.get $0 + select i32.eqz if i32.const 0 @@ -7037,10 +5560,9 @@ i32.sub call $~lib/rt/tlsf/freeBlock ) - (func $~lib/util/number/dtoa (; 76 ;) (type $FUNCSIG$id) (param $0 f64) (result i32) + (func $~lib/util/number/dtoa (; 68 ;) (type $FUNCSIG$id) (param $0 f64) (result i32) (local $1 i32) (local $2 i32) - (local $3 i32) local.get $0 f64.const 0 f64.eq @@ -7050,11 +5572,14 @@ return end local.get $0 - call $~lib/builtins/isFinite - i32.eqz + local.get $0 + f64.sub + f64.const 0 + f64.ne if local.get $0 - call $~lib/builtins/isNaN + local.get $0 + f64.ne if i32.const 4088 call $~lib/rt/purerc/__retain @@ -7069,17 +5594,13 @@ call $~lib/rt/purerc/__retain return end - i32.const 28 - i32.const 1 - i32.shl + i32.const 56 i32.const 16 call $~lib/rt/tlsf/__alloc - local.set $1 - local.get $1 + local.tee $1 local.get $0 call $~lib/util/number/dtoa_core - local.set $2 - local.get $2 + local.tee $2 i32.const 28 i32.eq if @@ -7088,15 +5609,25 @@ return end local.get $1 - i32.const 0 local.get $2 call $~lib/string/String#substring - local.set $3 + local.set $2 local.get $1 call $~lib/rt/tlsf/__free - local.get $3 + local.get $2 ) - (func $start:std/string (; 77 ;) (type $FUNCSIG$v) + (func $~lib/rt/purerc/__release (; 69 ;) (type $FUNCSIG$vi) (param $0 i32) + local.get $0 + i32.const 7144 + i32.gt_u + if + local.get $0 + i32.const 16 + i32.sub + call $~lib/rt/purerc/decrement + end + ) + (func $start:std/string (; 70 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -7228,8 +5759,7 @@ (local $128 i32) global.get $std/string/str i32.const 24 - i32.eq - i32.eqz + i32.ne if i32.const 0 i32.const 72 @@ -7239,10 +5769,13 @@ unreachable end global.get $std/string/str - call $~lib/string/String#get:length i32.const 16 - i32.eq - i32.eqz + i32.sub + i32.load offset=12 + i32.const 1 + i32.shr_u + i32.const 16 + i32.ne if i32.const 0 i32.const 72 @@ -7251,12 +5784,24 @@ call $~lib/builtins/abort unreachable end - global.get $std/string/str - i32.const 0 - call $~lib/string/String#charCodeAt + block $__inlined_func$~lib/string/String#charCodeAt (result i32) + i32.const -1 + i32.const 0 + global.get $std/string/str + local.tee $0 + i32.const 16 + i32.sub + i32.load offset=12 + i32.const 1 + i32.shr_u + i32.ge_u + br_if $__inlined_func$~lib/string/String#charCodeAt + drop + local.get $0 + i32.load16_u + end i32.const 104 - i32.eq - i32.eqz + i32.ne if i32.const 0 i32.const 72 @@ -7268,9 +5813,6 @@ i32.const 120 call $~lib/string/String.__not i32.eqz - i32.const 0 - i32.eq - i32.eqz if i32.const 0 i32.const 72 @@ -7283,8 +5825,7 @@ call $~lib/string/String.__not i32.eqz i32.const 1 - i32.eq - i32.eqz + i32.ne if i32.const 0 i32.const 72 @@ -7297,8 +5838,7 @@ call $~lib/string/String.__not i32.eqz i32.const 1 - i32.eq - i32.eqz + i32.ne if i32.const 0 i32.const 72 @@ -7309,7 +5849,7 @@ end i32.const 0 call $~lib/string/String.fromCharCode - local.tee $0 + local.tee $6 i32.const 136 call $~lib/string/String.__eq i32.eqz @@ -7323,7 +5863,7 @@ end i32.const 54 call $~lib/string/String.fromCharCode - local.tee $1 + local.tee $7 i32.const 288 call $~lib/string/String.__eq i32.eqz @@ -7335,11 +5875,9 @@ call $~lib/builtins/abort unreachable end - i32.const 65536 - i32.const 54 - i32.add + i32.const 65590 call $~lib/string/String.fromCharCode - local.tee $2 + local.tee $8 i32.const 288 call $~lib/string/String.__eq i32.eqz @@ -7353,7 +5891,7 @@ end i32.const 0 call $~lib/string/String.fromCodePoint - local.tee $3 + local.tee $9 i32.const 136 call $~lib/string/String.__eq i32.eqz @@ -7367,7 +5905,7 @@ end i32.const 54 call $~lib/string/String.fromCodePoint - local.tee $4 + local.tee $10 i32.const 288 call $~lib/string/String.__eq i32.eqz @@ -7381,7 +5919,7 @@ end i32.const 119558 call $~lib/string/String.fromCodePoint - local.tee $5 + local.tee $11 i32.eqz if i32.const 360 @@ -7392,8 +5930,6 @@ unreachable end global.get $std/string/str - i32.const 384 - i32.const 0 call $~lib/string/String#startsWith i32.eqz if @@ -7405,8 +5941,6 @@ unreachable end global.get $std/string/str - i32.const 432 - global.get $~lib/string/String.MAX_LENGTH call $~lib/string/String#endsWith i32.eqz if @@ -7417,25 +5951,18 @@ call $~lib/builtins/abort unreachable end - block $~lib/string/String#includes|inlined.0 (result i32) - global.get $std/string/str - local.set $8 - i32.const 464 - call $~lib/rt/purerc/__retain - local.set $7 - i32.const 0 - local.set $6 - local.get $7 - call $~lib/rt/purerc/__release - local.get $8 - local.get $7 - local.get $6 - call $~lib/string/String#indexOf - i32.const -1 - i32.ne - end + global.get $std/string/str + i32.const 464 + call $~lib/rt/purerc/__retain + local.tee $0 i32.const 0 + call $~lib/string/String#indexOf + i32.const -1 i32.ne + local.set $1 + local.get $0 + call $~lib/rt/purerc/__release + local.get $1 i32.eqz if i32.const 0 @@ -7449,7 +5976,7 @@ i32.const 0 i32.const 488 call $~lib/string/String#padStart - local.tee $6 + local.tee $12 global.get $std/string/str call $~lib/string/String.__eq i32.eqz @@ -7465,7 +5992,7 @@ i32.const 15 i32.const 488 call $~lib/string/String#padStart - local.tee $7 + local.tee $13 global.get $std/string/str call $~lib/string/String.__eq i32.eqz @@ -7481,7 +6008,7 @@ i32.const 3 i32.const 488 call $~lib/string/String#padStart - local.tee $8 + local.tee $14 i32.const 512 call $~lib/string/String.__eq i32.eqz @@ -7497,7 +6024,7 @@ i32.const 10 i32.const 120 call $~lib/string/String#padStart - local.tee $9 + local.tee $15 i32.const 120 call $~lib/string/String.__eq i32.eqz @@ -7513,7 +6040,7 @@ i32.const 100 i32.const 120 call $~lib/string/String#padStart - local.tee $10 + local.tee $16 i32.const 160 call $~lib/string/String.__eq i32.eqz @@ -7529,7 +6056,7 @@ i32.const 5 i32.const 488 call $~lib/string/String#padStart - local.tee $11 + local.tee $17 i32.const 560 call $~lib/string/String.__eq i32.eqz @@ -7545,7 +6072,7 @@ i32.const 6 i32.const 592 call $~lib/string/String#padStart - local.tee $12 + local.tee $18 i32.const 616 call $~lib/string/String.__eq i32.eqz @@ -7561,7 +6088,7 @@ i32.const 8 i32.const 592 call $~lib/string/String#padStart - local.tee $13 + local.tee $19 i32.const 648 call $~lib/string/String.__eq i32.eqz @@ -7577,7 +6104,7 @@ i32.const 0 i32.const 488 call $~lib/string/String#padEnd - local.tee $14 + local.tee $20 global.get $std/string/str call $~lib/string/String.__eq i32.eqz @@ -7593,7 +6120,7 @@ i32.const 15 i32.const 488 call $~lib/string/String#padEnd - local.tee $15 + local.tee $21 global.get $std/string/str call $~lib/string/String.__eq i32.eqz @@ -7609,7 +6136,7 @@ i32.const 3 i32.const 488 call $~lib/string/String#padEnd - local.tee $16 + local.tee $22 i32.const 512 call $~lib/string/String.__eq i32.eqz @@ -7625,7 +6152,7 @@ i32.const 10 i32.const 120 call $~lib/string/String#padEnd - local.tee $17 + local.tee $23 i32.const 120 call $~lib/string/String.__eq i32.eqz @@ -7641,7 +6168,7 @@ i32.const 100 i32.const 120 call $~lib/string/String#padEnd - local.tee $18 + local.tee $24 i32.const 160 call $~lib/string/String.__eq i32.eqz @@ -7657,7 +6184,7 @@ i32.const 5 i32.const 488 call $~lib/string/String#padEnd - local.tee $19 + local.tee $25 i32.const 680 call $~lib/string/String.__eq i32.eqz @@ -7673,7 +6200,7 @@ i32.const 6 i32.const 536 call $~lib/string/String#padEnd - local.tee $20 + local.tee $26 i32.const 712 call $~lib/string/String.__eq i32.eqz @@ -7689,7 +6216,7 @@ i32.const 8 i32.const 536 call $~lib/string/String#padEnd - local.tee $21 + local.tee $27 i32.const 744 call $~lib/string/String.__eq i32.eqz @@ -7705,9 +6232,6 @@ i32.const 120 i32.const 0 call $~lib/string/String#indexOf - i32.const 0 - i32.eq - i32.eqz if i32.const 0 i32.const 72 @@ -7721,8 +6245,7 @@ i32.const 0 call $~lib/string/String#indexOf i32.const -1 - i32.eq - i32.eqz + i32.ne if i32.const 0 i32.const 72 @@ -7735,9 +6258,6 @@ i32.const 160 i32.const 0 call $~lib/string/String#indexOf - i32.const 0 - i32.eq - i32.eqz if i32.const 0 i32.const 72 @@ -7747,12 +6267,10 @@ unreachable end global.get $std/string/str - global.get $std/string/str + local.tee $0 + local.get $0 i32.const 0 call $~lib/string/String#indexOf - i32.const 0 - i32.eq - i32.eqz if i32.const 0 i32.const 72 @@ -7765,9 +6283,6 @@ i32.const 120 i32.const 0 call $~lib/string/String#indexOf - i32.const 0 - i32.eq - i32.eqz if i32.const 0 i32.const 72 @@ -7781,8 +6296,7 @@ i32.const 0 call $~lib/string/String#indexOf i32.const 2 - i32.eq - i32.eqz + i32.ne if i32.const 0 i32.const 72 @@ -7796,8 +6310,7 @@ i32.const 0 call $~lib/string/String#indexOf i32.const -1 - i32.eq - i32.eqz + i32.ne if i32.const 0 i32.const 72 @@ -7811,8 +6324,7 @@ i32.const 2 call $~lib/string/String#indexOf i32.const 2 - i32.eq - i32.eqz + i32.ne if i32.const 0 i32.const 72 @@ -7826,8 +6338,7 @@ i32.const 3 call $~lib/string/String#indexOf i32.const -1 - i32.eq - i32.eqz + i32.ne if i32.const 0 i32.const 72 @@ -7841,8 +6352,7 @@ i32.const -1 call $~lib/string/String#indexOf i32.const 2 - i32.eq - i32.eqz + i32.ne if i32.const 0 i32.const 72 @@ -7853,11 +6363,8 @@ end i32.const 120 i32.const 120 - global.get $~lib/builtins/i32.MAX_VALUE + i32.const 2147483647 call $~lib/string/String#lastIndexOf - i32.const 0 - i32.eq - i32.eqz if i32.const 0 i32.const 72 @@ -7868,11 +6375,10 @@ end i32.const 120 i32.const 384 - global.get $~lib/builtins/i32.MAX_VALUE + i32.const 2147483647 call $~lib/string/String#lastIndexOf i32.const -1 - i32.eq - i32.eqz + i32.ne if i32.const 0 i32.const 72 @@ -7883,12 +6389,15 @@ end global.get $std/string/str i32.const 120 - global.get $~lib/builtins/i32.MAX_VALUE + i32.const 2147483647 call $~lib/string/String#lastIndexOf global.get $std/string/str - call $~lib/string/String#get:length - i32.eq - i32.eqz + i32.const 16 + i32.sub + i32.load offset=12 + i32.const 1 + i32.shr_u + i32.ne if i32.const 0 i32.const 72 @@ -7899,11 +6408,10 @@ end global.get $std/string/str i32.const 776 - global.get $~lib/builtins/i32.MAX_VALUE + i32.const 2147483647 call $~lib/string/String#lastIndexOf i32.const 2 - i32.eq - i32.eqz + i32.ne if i32.const 0 i32.const 72 @@ -7914,11 +6422,10 @@ end global.get $std/string/str i32.const 800 - global.get $~lib/builtins/i32.MAX_VALUE + i32.const 2147483647 call $~lib/string/String#lastIndexOf i32.const -1 - i32.eq - i32.eqz + i32.ne if i32.const 0 i32.const 72 @@ -7929,11 +6436,10 @@ end global.get $std/string/str i32.const 848 - global.get $~lib/builtins/i32.MAX_VALUE + i32.const 2147483647 call $~lib/string/String#lastIndexOf i32.const 15 - i32.eq - i32.eqz + i32.ne if i32.const 0 i32.const 72 @@ -7947,8 +6453,7 @@ i32.const 2 call $~lib/string/String#lastIndexOf i32.const 2 - i32.eq - i32.eqz + i32.ne if i32.const 0 i32.const 72 @@ -7962,8 +6467,7 @@ i32.const 3 call $~lib/string/String#lastIndexOf i32.const 2 - i32.eq - i32.eqz + i32.ne if i32.const 0 i32.const 72 @@ -7977,8 +6481,7 @@ i32.const -1 call $~lib/string/String#lastIndexOf i32.const -1 - i32.eq - i32.eqz + i32.ne if i32.const 0 i32.const 72 @@ -7992,8 +6495,7 @@ i32.const 0 call $~lib/string/String#lastIndexOf i32.const -1 - i32.eq - i32.eqz + i32.ne if i32.const 0 i32.const 72 @@ -8006,9 +6508,6 @@ i32.const 384 i32.const 0 call $~lib/string/String#lastIndexOf - i32.const 0 - i32.eq - i32.eqz if i32.const 0 i32.const 72 @@ -8018,11 +6517,9 @@ unreachable end i32.const 896 - i32.const 0 call $~lib/string/parseInt f64.const 0 - f64.eq - i32.eqz + f64.ne if i32.const 0 i32.const 72 @@ -8032,11 +6529,9 @@ unreachable end i32.const 920 - i32.const 0 call $~lib/string/parseInt f64.const 1 - f64.eq - i32.eqz + f64.ne if i32.const 0 i32.const 72 @@ -8046,11 +6541,9 @@ unreachable end i32.const 944 - i32.const 0 call $~lib/string/parseInt f64.const 5 - f64.eq - i32.eqz + f64.ne if i32.const 0 i32.const 72 @@ -8060,11 +6553,9 @@ unreachable end i32.const 976 - i32.const 0 call $~lib/string/parseInt f64.const 455 - f64.eq - i32.eqz + f64.ne if i32.const 0 i32.const 72 @@ -8074,11 +6565,9 @@ unreachable end i32.const 1008 - i32.const 0 call $~lib/string/parseInt f64.const 3855 - f64.eq - i32.eqz + f64.ne if i32.const 0 i32.const 72 @@ -8088,11 +6577,9 @@ unreachable end i32.const 1040 - i32.const 0 call $~lib/string/parseInt f64.const 3855 - f64.eq - i32.eqz + f64.ne if i32.const 0 i32.const 72 @@ -8102,11 +6589,9 @@ unreachable end i32.const 1072 - i32.const 0 call $~lib/string/parseInt f64.const 11 - f64.eq - i32.eqz + f64.ne if i32.const 0 i32.const 72 @@ -8116,11 +6601,9 @@ unreachable end i32.const 1096 - i32.const 0 call $~lib/string/parseInt f64.const 1 - f64.eq - i32.eqz + f64.ne if i32.const 0 i32.const 72 @@ -8132,8 +6615,7 @@ i32.const 896 call $~lib/string/parseFloat f64.const 0 - f64.eq - i32.eqz + f64.ne if i32.const 0 i32.const 72 @@ -8145,8 +6627,7 @@ i32.const 920 call $~lib/string/parseFloat f64.const 1 - f64.eq - i32.eqz + f64.ne if i32.const 0 i32.const 72 @@ -8158,8 +6639,7 @@ i32.const 1120 call $~lib/string/parseFloat f64.const 0.1 - f64.eq - i32.eqz + f64.ne if i32.const 0 i32.const 72 @@ -8171,8 +6651,7 @@ i32.const 1144 call $~lib/string/parseFloat f64.const 0.25 - f64.eq - i32.eqz + f64.ne if i32.const 0 i32.const 72 @@ -8184,8 +6663,7 @@ i32.const 1168 call $~lib/string/parseFloat f64.const 0.1 - f64.eq - i32.eqz + f64.ne if i32.const 0 i32.const 72 @@ -8194,42 +6672,39 @@ call $~lib/builtins/abort unreachable end - block - i32.const 160 - i32.const 1200 - call $~lib/string/String.__concat - local.tee $22 - call $~lib/rt/purerc/__retain - local.set $23 - local.get $23 - i32.const 1224 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 72 - i32.const 87 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $23 - i32.const 160 - call $~lib/string/String.__ne - i32.eqz - if - i32.const 0 - i32.const 72 - i32.const 88 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $22 - call $~lib/rt/purerc/__release - local.get $23 - call $~lib/rt/purerc/__release + i32.const 160 + i32.const 1200 + call $~lib/string/String.__concat + local.tee $1 + call $~lib/rt/purerc/__retain + local.tee $0 + i32.const 1224 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 72 + i32.const 87 + i32.const 2 + call $~lib/builtins/abort + unreachable end + local.get $0 + i32.const 160 + call $~lib/string/String.__ne + i32.eqz + if + i32.const 0 + i32.const 72 + i32.const 88 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $1 + call $~lib/rt/purerc/__release + local.get $0 + call $~lib/rt/purerc/__release i32.const 120 i32.const 120 call $~lib/string/String.__eq @@ -8425,8 +6900,6 @@ i32.const 1552 i32.const 1224 call $~lib/string/String.__lt - i32.eqz - i32.eqz if i32.const 0 i32.const 72 @@ -8438,8 +6911,6 @@ i32.const 1200 global.get $std/string/nullStr call $~lib/string/String.__lt - i32.eqz - i32.eqz if i32.const 0 i32.const 72 @@ -8451,8 +6922,6 @@ global.get $std/string/nullStr i32.const 1200 call $~lib/string/String.__lt - i32.eqz - i32.eqz if i32.const 0 i32.const 72 @@ -8497,7 +6966,6 @@ call $~lib/builtins/abort unreachable end - i32.const 120 i32.const 536 call $~lib/string/String.__lte i32.eqz @@ -8512,8 +6980,6 @@ i32.const 536 i32.const 120 call $~lib/string/String.__lt - i32.eqz - i32.eqz if i32.const 0 i32.const 72 @@ -8525,8 +6991,6 @@ i32.const 120 i32.const 536 call $~lib/string/String.__gt - i32.eqz - i32.eqz if i32.const 0 i32.const 72 @@ -8538,8 +7002,6 @@ i32.const 120 i32.const 120 call $~lib/string/String.__lt - i32.eqz - i32.eqz if i32.const 0 i32.const 72 @@ -8551,8 +7013,6 @@ i32.const 120 i32.const 120 call $~lib/string/String.__gt - i32.eqz - i32.eqz if i32.const 0 i32.const 72 @@ -8574,7 +7034,6 @@ unreachable end i32.const 120 - i32.const 120 call $~lib/string/String.__lte i32.eqz if @@ -8585,48 +7044,45 @@ call $~lib/builtins/abort unreachable end - block - i32.const 65377 - call $~lib/string/String.fromCodePoint - local.set $23 - i32.const 55296 - call $~lib/string/String.fromCodePoint - local.tee $22 - i32.const 56322 - call $~lib/string/String.fromCodePoint - local.tee $24 - call $~lib/string/String.__concat - local.tee $25 - call $~lib/rt/purerc/__retain - local.set $26 - local.get $23 - local.get $26 - call $~lib/string/String.__gt - i32.eqz - if - i32.const 0 - i32.const 72 - i32.const 126 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $23 - call $~lib/rt/purerc/__release - local.get $22 - call $~lib/rt/purerc/__release - local.get $24 - call $~lib/rt/purerc/__release - local.get $25 - call $~lib/rt/purerc/__release - local.get $26 - call $~lib/rt/purerc/__release - end - i32.const 592 - call $~lib/string/String#get:length - i32.const 3 - i32.eq + i32.const 65377 + call $~lib/string/String.fromCodePoint + local.tee $0 + i32.const 55296 + call $~lib/string/String.fromCodePoint + local.tee $1 + i32.const 56322 + call $~lib/string/String.fromCodePoint + local.tee $3 + call $~lib/string/String.__concat + local.tee $4 + call $~lib/rt/purerc/__retain + local.tee $5 + call $~lib/string/String.__gt i32.eqz + if + i32.const 0 + i32.const 72 + i32.const 126 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $0 + call $~lib/rt/purerc/__release + local.get $1 + call $~lib/rt/purerc/__release + local.get $3 + call $~lib/rt/purerc/__release + local.get $4 + call $~lib/rt/purerc/__release + local.get $5 + call $~lib/rt/purerc/__release + i32.const 588 + i32.load + i32.const 1 + i32.shr_u + i32.const 3 + i32.ne if i32.const 0 i32.const 72 @@ -8638,7 +7094,7 @@ i32.const 120 i32.const 100 call $~lib/string/String#repeat - local.tee $26 + local.tee $3 i32.const 120 call $~lib/string/String.__eq i32.eqz @@ -8653,7 +7109,7 @@ i32.const 160 i32.const 0 call $~lib/string/String#repeat - local.tee $25 + local.tee $4 i32.const 120 call $~lib/string/String.__eq i32.eqz @@ -8668,7 +7124,7 @@ i32.const 160 i32.const 1 call $~lib/string/String#repeat - local.tee $24 + local.tee $5 i32.const 160 call $~lib/string/String.__eq i32.eqz @@ -8683,7 +7139,7 @@ i32.const 160 i32.const 2 call $~lib/string/String#repeat - local.tee $22 + local.tee $28 i32.const 1576 call $~lib/string/String.__eq i32.eqz @@ -8698,7 +7154,7 @@ i32.const 160 i32.const 3 call $~lib/string/String#repeat - local.tee $23 + local.tee $29 i32.const 1648 call $~lib/string/String.__eq i32.eqz @@ -8713,7 +7169,7 @@ i32.const 1224 i32.const 4 call $~lib/string/String#repeat - local.tee $27 + local.tee $30 i32.const 1672 call $~lib/string/String.__eq i32.eqz @@ -8728,7 +7184,7 @@ i32.const 160 i32.const 5 call $~lib/string/String#repeat - local.tee $28 + local.tee $31 i32.const 1704 call $~lib/string/String.__eq i32.eqz @@ -8743,7 +7199,7 @@ i32.const 160 i32.const 6 call $~lib/string/String#repeat - local.tee $29 + local.tee $32 i32.const 1736 call $~lib/string/String.__eq i32.eqz @@ -8758,7 +7214,7 @@ i32.const 160 i32.const 7 call $~lib/string/String#repeat - local.tee $30 + local.tee $33 i32.const 1768 call $~lib/string/String.__eq i32.eqz @@ -8776,9 +7232,9 @@ global.set $std/string/str global.get $std/string/str i32.const 0 - global.get $~lib/builtins/i32.MAX_VALUE + i32.const 2147483647 call $~lib/string/String#slice - local.tee $31 + local.tee $34 i32.const 1800 call $~lib/string/String.__eq i32.eqz @@ -8792,9 +7248,9 @@ end global.get $std/string/str i32.const -1 - global.get $~lib/builtins/i32.MAX_VALUE + i32.const 2147483647 call $~lib/string/String#slice - local.tee $32 + local.tee $35 i32.const 1848 call $~lib/string/String.__eq i32.eqz @@ -8808,9 +7264,9 @@ end global.get $std/string/str i32.const -5 - global.get $~lib/builtins/i32.MAX_VALUE + i32.const 2147483647 call $~lib/string/String#slice - local.tee $33 + local.tee $36 i32.const 1872 call $~lib/string/String.__eq i32.eqz @@ -8826,7 +7282,7 @@ i32.const 2 i32.const 7 call $~lib/string/String#slice - local.tee $34 + local.tee $37 i32.const 1904 call $~lib/string/String.__eq i32.eqz @@ -8842,7 +7298,7 @@ i32.const -11 i32.const -6 call $~lib/string/String#slice - local.tee $35 + local.tee $38 i32.const 1936 call $~lib/string/String.__eq i32.eqz @@ -8858,7 +7314,7 @@ i32.const 4 i32.const 3 call $~lib/string/String#slice - local.tee $36 + local.tee $39 i32.const 120 call $~lib/string/String.__eq i32.eqz @@ -8874,7 +7330,7 @@ i32.const 0 i32.const -1 call $~lib/string/String#slice - local.tee $37 + local.tee $40 i32.const 1968 call $~lib/string/String.__eq i32.eqz @@ -8886,221 +7342,188 @@ call $~lib/builtins/abort unreachable end - block + i32.const 0 + call $~lib/rt/purerc/__release + i32.const 120 + i32.const 0 + call $~lib/string/String#split + local.tee $1 + i32.load offset=12 + i32.const 1 + i32.eq + if + local.get $1 i32.const 0 - local.set $38 - block (result i32) - local.get $38 - call $~lib/rt/purerc/__release - i32.const 120 - i32.const 0 - global.get $~lib/builtins/i32.MAX_VALUE - call $~lib/string/String#split - end - local.set $38 - local.get $38 - call $~lib/array/Array<~lib/string/String>#get:length - i32.const 1 - i32.eq - if (result i32) - local.get $38 - i32.const 0 - call $~lib/array/Array<~lib/string/String>#__get - local.tee $39 - i32.const 120 - call $~lib/string/String.__eq - local.set $40 - local.get $39 - call $~lib/rt/purerc/__release - local.get $40 - else - i32.const 0 - end - i32.const 0 - i32.ne - i32.eqz - if - i32.const 0 - i32.const 72 - i32.const 155 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - block (result i32) - local.get $38 - call $~lib/rt/purerc/__release - i32.const 120 - i32.const 120 - global.get $~lib/builtins/i32.MAX_VALUE - call $~lib/string/String#split - end - local.set $38 - local.get $38 - call $~lib/array/Array<~lib/string/String>#get:length - i32.const 0 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 72 - i32.const 157 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - block (result i32) - local.get $38 - call $~lib/rt/purerc/__release - i32.const 120 - i32.const 776 - global.get $~lib/builtins/i32.MAX_VALUE - call $~lib/string/String#split - end - local.set $38 - local.get $38 - call $~lib/array/Array<~lib/string/String>#get:length - i32.const 1 - i32.eq - if (result i32) - local.get $38 - i32.const 0 - call $~lib/array/Array<~lib/string/String>#__get - local.tee $39 - i32.const 120 - call $~lib/string/String.__eq - local.set $40 - local.get $39 - call $~lib/rt/purerc/__release - local.get $40 - else - i32.const 0 - end - i32.const 0 - i32.ne - i32.eqz - if - i32.const 0 - i32.const 72 - i32.const 159 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - block (result i32) - local.get $38 - call $~lib/rt/purerc/__release - i32.const 2344 - i32.const 2376 - global.get $~lib/builtins/i32.MAX_VALUE - call $~lib/string/String#split - end - local.set $38 - local.get $38 - call $~lib/array/Array<~lib/string/String>#get:length - i32.const 1 - i32.eq - if (result i32) - local.get $38 - i32.const 0 - call $~lib/array/Array<~lib/string/String>#__get - local.tee $39 - i32.const 2344 - call $~lib/string/String.__eq - local.set $40 - local.get $39 - call $~lib/rt/purerc/__release - local.get $40 - else - i32.const 0 - end - i32.const 0 - i32.ne - i32.eqz - if - i32.const 0 - i32.const 72 - i32.const 161 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - block (result i32) - local.get $38 - call $~lib/rt/purerc/__release - i32.const 2344 - i32.const 776 - global.get $~lib/builtins/i32.MAX_VALUE - call $~lib/string/String#split - end - local.set $38 - local.get $38 - call $~lib/array/Array<~lib/string/String>#get:length - i32.const 3 - i32.eq - if (result i32) - local.get $38 - i32.const 0 - call $~lib/array/Array<~lib/string/String>#__get - local.tee $39 - i32.const 160 - call $~lib/string/String.__eq - local.set $40 - local.get $39 - call $~lib/rt/purerc/__release - local.get $40 - else - i32.const 0 - end - i32.const 0 - i32.ne - if (result i32) - local.get $38 - i32.const 1 - call $~lib/array/Array<~lib/string/String>#__get - local.tee $39 - i32.const 1200 - call $~lib/string/String.__eq - local.set $40 - local.get $39 - call $~lib/rt/purerc/__release - local.get $40 - else - i32.const 0 - end - i32.const 0 - i32.ne - if (result i32) - local.get $38 - i32.const 2 - call $~lib/array/Array<~lib/string/String>#__get - local.tee $39 - i32.const 2400 - call $~lib/string/String.__eq - local.set $40 - local.get $39 - call $~lib/rt/purerc/__release - local.get $40 - else - i32.const 0 - end - i32.const 0 - i32.ne - i32.eqz - if - i32.const 0 - i32.const 72 - i32.const 163 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $38 + call $~lib/array/Array<~lib/string/String>#__get + local.tee $2 + i32.const 120 + call $~lib/string/String.__eq + local.set $0 + local.get $2 call $~lib/rt/purerc/__release + else + i32.const 0 + local.set $0 end + local.get $0 + i32.eqz + if + i32.const 0 + i32.const 72 + i32.const 155 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $1 + call $~lib/rt/purerc/__release + i32.const 120 + i32.const 120 + call $~lib/string/String#split + local.tee $0 + i32.load offset=12 + if + i32.const 0 + i32.const 72 + i32.const 157 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $0 + call $~lib/rt/purerc/__release + i32.const 120 + i32.const 776 + call $~lib/string/String#split + local.tee $1 + i32.load offset=12 + i32.const 1 + i32.eq + if + local.get $1 + i32.const 0 + call $~lib/array/Array<~lib/string/String>#__get + local.tee $2 + i32.const 120 + call $~lib/string/String.__eq + local.set $0 + local.get $2 + call $~lib/rt/purerc/__release + else + i32.const 0 + local.set $0 + end + local.get $0 + i32.eqz + if + i32.const 0 + i32.const 72 + i32.const 159 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $1 + call $~lib/rt/purerc/__release + i32.const 2344 + i32.const 2376 + call $~lib/string/String#split + local.tee $1 + i32.load offset=12 + i32.const 1 + i32.eq + if + local.get $1 + i32.const 0 + call $~lib/array/Array<~lib/string/String>#__get + local.tee $2 + i32.const 2344 + call $~lib/string/String.__eq + local.set $0 + local.get $2 + call $~lib/rt/purerc/__release + else + i32.const 0 + local.set $0 + end + local.get $0 + i32.eqz + if + i32.const 0 + i32.const 72 + i32.const 161 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $1 + call $~lib/rt/purerc/__release + i32.const 2344 + i32.const 776 + call $~lib/string/String#split + local.tee $1 + i32.load offset=12 + i32.const 3 + i32.eq + if + local.get $1 + i32.const 0 + call $~lib/array/Array<~lib/string/String>#__get + local.tee $2 + i32.const 160 + call $~lib/string/String.__eq + local.set $0 + local.get $2 + call $~lib/rt/purerc/__release + else + i32.const 0 + local.set $0 + end + local.get $0 + if + local.get $1 + i32.const 1 + call $~lib/array/Array<~lib/string/String>#__get + local.tee $2 + i32.const 1200 + call $~lib/string/String.__eq + local.set $0 + local.get $2 + call $~lib/rt/purerc/__release + else + i32.const 0 + local.set $0 + end + local.get $0 + if + local.get $1 + i32.const 2 + call $~lib/array/Array<~lib/string/String>#__get + local.tee $2 + i32.const 2400 + call $~lib/string/String.__eq + local.set $0 + local.get $2 + call $~lib/rt/purerc/__release + else + i32.const 0 + local.set $0 + end + local.get $0 + i32.eqz + if + i32.const 0 + i32.const 72 + i32.const 163 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $1 + call $~lib/rt/purerc/__release i32.const 0 call $~lib/util/number/itoa32 - local.tee $38 + local.tee $0 i32.const 896 call $~lib/string/String.__eq i32.eqz @@ -9114,7 +7537,7 @@ end i32.const 1 call $~lib/util/number/itoa32 - local.tee $39 + local.tee $1 i32.const 920 call $~lib/string/String.__eq i32.eqz @@ -9128,7 +7551,7 @@ end i32.const 8 call $~lib/util/number/itoa32 - local.tee $40 + local.tee $2 i32.const 2872 call $~lib/string/String.__eq i32.eqz @@ -9350,7 +7773,7 @@ call $~lib/builtins/abort unreachable end - global.get $~lib/builtins/u32.MAX_VALUE + i32.const -1 call $~lib/util/number/utoa32 local.tee $56 i32.const 3288 @@ -9504,7 +7927,7 @@ call $~lib/builtins/abort unreachable end - global.get $~lib/builtins/u64.MAX_VALUE + i64.const -1 call $~lib/util/number/utoa64 local.tee $67 i32.const 3632 @@ -9644,7 +8067,7 @@ call $~lib/builtins/abort unreachable end - global.get $~lib/builtins/i64.MAX_VALUE + i64.const 9223372036854775807 call $~lib/util/number/itoa64 local.tee $77 i32.const 3952 @@ -9658,7 +8081,7 @@ call $~lib/builtins/abort unreachable end - global.get $~lib/builtins/i64.MIN_VALUE + i64.const -9223372036854775808 call $~lib/util/number/itoa64 local.tee $78 i32.const 4008 @@ -9728,8 +8151,7 @@ call $~lib/builtins/abort unreachable end - f64.const inf - f64.neg + f64.const -inf call $~lib/util/number/dtoa local.tee $83 i32.const 4112 @@ -9743,7 +8165,7 @@ call $~lib/builtins/abort unreachable end - global.get $~lib/builtins/f64.EPSILON + f64.const 2.220446049250313e-16 call $~lib/util/number/dtoa local.tee $84 i32.const 5240 @@ -9757,8 +8179,7 @@ call $~lib/builtins/abort unreachable end - global.get $~lib/builtins/f64.EPSILON - f64.neg + f64.const -2.220446049250313e-16 call $~lib/util/number/dtoa local.tee $85 i32.const 5304 @@ -9772,7 +8193,7 @@ call $~lib/builtins/abort unreachable end - global.get $~lib/builtins/f64.MAX_VALUE + f64.const 1797693134862315708145274e284 call $~lib/util/number/dtoa local.tee $86 i32.const 5368 @@ -9786,8 +8207,7 @@ call $~lib/builtins/abort unreachable end - global.get $~lib/builtins/f64.MAX_VALUE - f64.neg + f64.const -1797693134862315708145274e284 call $~lib/util/number/dtoa local.tee $87 i32.const 5432 @@ -10249,9 +8669,7 @@ call $~lib/builtins/abort unreachable end - f64.const 1 - f64.const 3 - f64.div + f64.const 0.3333333333333333 call $~lib/util/number/dtoa local.tee $120 i32.const 6616 @@ -10377,21 +8795,7 @@ call $~lib/builtins/abort unreachable end - i32.const 0 global.get $std/string/str - call $~lib/rt/purerc/__retainRelease - global.set $std/string/str - local.get $0 - call $~lib/rt/purerc/__release - local.get $1 - call $~lib/rt/purerc/__release - local.get $2 - call $~lib/rt/purerc/__release - local.get $3 - call $~lib/rt/purerc/__release - local.get $4 - call $~lib/rt/purerc/__release - local.get $5 call $~lib/rt/purerc/__release local.get $6 call $~lib/rt/purerc/__release @@ -10441,6 +8845,12 @@ call $~lib/rt/purerc/__release local.get $29 call $~lib/rt/purerc/__release + local.get $5 + call $~lib/rt/purerc/__release + local.get $4 + call $~lib/rt/purerc/__release + local.get $3 + call $~lib/rt/purerc/__release local.get $30 call $~lib/rt/purerc/__release local.get $31 @@ -10463,6 +8873,12 @@ call $~lib/rt/purerc/__release local.get $40 call $~lib/rt/purerc/__release + local.get $0 + call $~lib/rt/purerc/__release + local.get $1 + call $~lib/rt/purerc/__release + local.get $2 + call $~lib/rt/purerc/__release local.get $41 call $~lib/rt/purerc/__release local.get $42 @@ -10640,30 +9056,18 @@ local.get $128 call $~lib/rt/purerc/__release ) - (func $std/string/getString (; 78 ;) (type $FUNCSIG$i) (result i32) + (func $std/string/getString (; 71 ;) (type $FUNCSIG$i) (result i32) global.get $std/string/str call $~lib/rt/purerc/__retain ) - (func $start (; 79 ;) (type $FUNCSIG$v) + (func $start (; 72 ;) (type $FUNCSIG$v) call $start:std/string ) - (func $~lib/rt/purerc/__release (; 80 ;) (type $FUNCSIG$vi) (param $0 i32) - local.get $0 - global.get $~lib/builtins/HEAP_BASE - i32.gt_u - if - local.get $0 - i32.const 16 - i32.sub - call $~lib/rt/purerc/decrement - end - ) - (func $~lib/rt/purerc/markGray (; 81 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $~lib/rt/purerc/markGray (; 73 ;) (type $FUNCSIG$vi) (param $0 i32) (local $1 i32) local.get $0 i32.load offset=4 - local.set $1 - local.get $1 + local.tee $1 i32.const 1879048192 i32.and i32.const 268435456 @@ -10671,9 +9075,7 @@ if local.get $0 local.get $1 - i32.const 1879048192 - i32.const -1 - i32.xor + i32.const -1879048193 i32.and i32.const 268435456 i32.or @@ -10685,16 +9087,12 @@ call $~lib/builtins/__visit_members end ) - (func $~lib/rt/purerc/scanBlack (; 82 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $~lib/rt/purerc/scanBlack (; 74 ;) (type $FUNCSIG$vi) (param $0 i32) local.get $0 local.get $0 i32.load offset=4 - i32.const 1879048192 - i32.const -1 - i32.xor + i32.const -1879048193 i32.and - i32.const 0 - i32.or i32.store offset=4 local.get $0 i32.const 16 @@ -10702,12 +9100,11 @@ i32.const 4 call $~lib/builtins/__visit_members ) - (func $~lib/rt/purerc/scan (; 83 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $~lib/rt/purerc/scan (; 75 ;) (type $FUNCSIG$vi) (param $0 i32) (local $1 i32) local.get $0 i32.load offset=4 - local.set $1 - local.get $1 + local.tee $1 i32.const 1879048192 i32.and i32.const 268435456 @@ -10724,9 +9121,7 @@ else local.get $0 local.get $1 - i32.const 1879048192 - i32.const -1 - i32.xor + i32.const -1879048193 i32.and i32.const 536870912 i32.or @@ -10739,12 +9134,11 @@ end end ) - (func $~lib/rt/purerc/collectWhite (; 84 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $~lib/rt/purerc/collectWhite (; 76 ;) (type $FUNCSIG$vi) (param $0 i32) (local $1 i32) local.get $0 i32.load offset=4 - local.set $1 - local.get $1 + local.tee $1 i32.const 1879048192 i32.and i32.const 536870912 @@ -10768,11 +9162,9 @@ local.get $0 call $~lib/rt/tlsf/freeBlock ) - (func $~lib/rt/purerc/__visit (; 85 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) + (func $~lib/rt/purerc/__visit (; 77 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) local.get $0 - global.get $~lib/builtins/HEAP_BASE + i32.const 7144 i32.lt_u if return @@ -10780,346 +9172,168 @@ local.get $0 i32.const 16 i32.sub - local.set $2 + local.set $0 block $break|0 block $case5|0 block $case4|0 block $case3|0 block $case2|0 block $case1|0 - block $case0|0 + local.get $1 + i32.const 1 + i32.ne + if local.get $1 - local.set $3 - local.get $3 - i32.const 1 - i32.eq - br_if $case0|0 - local.get $3 i32.const 2 i32.eq br_if $case1|0 - local.get $3 - i32.const 3 - i32.eq - br_if $case2|0 - local.get $3 - i32.const 4 - i32.eq - br_if $case3|0 - local.get $3 - i32.const 5 - i32.eq - br_if $case4|0 + block $tablify|0 + local.get $1 + i32.const 3 + i32.sub + br_table $case2|0 $case3|0 $case4|0 $tablify|0 + end br $case5|0 end - block - local.get $2 - call $~lib/rt/purerc/decrement - br $break|0 - unreachable - end - unreachable - end - block - local.get $2 - i32.load offset=4 - i32.const 268435455 - i32.and - i32.const 0 - i32.gt_u - i32.eqz - if - i32.const 0 - i32.const 2016 - i32.const 74 - i32.const 17 - call $~lib/builtins/abort - unreachable - end - local.get $2 - local.get $2 - i32.load offset=4 - i32.const 1 - i32.sub - i32.store offset=4 - local.get $2 - call $~lib/rt/purerc/markGray + local.get $0 + call $~lib/rt/purerc/decrement br $break|0 + end + local.get $0 + i32.load offset=4 + i32.const 268435455 + i32.and + i32.const 0 + i32.le_u + if + i32.const 0 + i32.const 2016 + i32.const 74 + i32.const 17 + call $~lib/builtins/abort unreachable end - unreachable - end - block - local.get $2 - call $~lib/rt/purerc/scan + local.get $0 + local.get $0 + i32.load offset=4 + i32.const 1 + i32.sub + i32.store offset=4 + local.get $0 + call $~lib/rt/purerc/markGray br $break|0 - unreachable - end - unreachable - end - block - local.get $2 - i32.load offset=4 - local.set $3 - local.get $3 - i32.const 268435455 - i32.const -1 - i32.xor - i32.and - local.get $3 - i32.const 1 - i32.add - i32.const 268435455 - i32.const -1 - i32.xor - i32.and - i32.eq - i32.eqz - if - i32.const 0 - i32.const 2016 - i32.const 85 - i32.const 6 - call $~lib/builtins/abort - unreachable - end - local.get $2 - local.get $3 - i32.const 1 - i32.add - i32.store offset=4 - local.get $3 - i32.const 1879048192 - i32.and - i32.const 0 - i32.ne - if - local.get $2 - call $~lib/rt/purerc/scanBlack end + local.get $0 + call $~lib/rt/purerc/scan br $break|0 + end + local.get $0 + i32.load offset=4 + local.tee $1 + i32.const -268435456 + i32.and + local.get $1 + i32.const 1 + i32.add + i32.const -268435456 + i32.and + i32.ne + if + i32.const 0 + i32.const 2016 + i32.const 85 + i32.const 6 + call $~lib/builtins/abort unreachable end - unreachable - end - block - local.get $2 - call $~lib/rt/purerc/collectWhite + local.get $0 + local.get $1 + i32.const 1 + i32.add + i32.store offset=4 + local.get $1 + i32.const 1879048192 + i32.and + if + local.get $0 + call $~lib/rt/purerc/scanBlack + end br $break|0 - unreachable end - unreachable + local.get $0 + call $~lib/rt/purerc/collectWhite + br $break|0 end i32.const 0 - i32.eqz - if - i32.const 0 - i32.const 2016 - i32.const 96 - i32.const 24 - call $~lib/builtins/abort - unreachable - end + i32.const 2016 + i32.const 96 + i32.const 24 + call $~lib/builtins/abort + unreachable end ) - (func $~lib/array/Array<~lib/string/String>#__visit_impl (; 86 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/array/Array<~lib/string/String>#__visit_impl (; 78 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) - (local $4 i32) local.get $0 i32.load offset=4 - local.set $2 - local.get $2 + local.tee $2 local.get $0 i32.load offset=8 i32.add - local.set $3 - block $break|0 - loop $continue|0 + local.set $0 + loop $continue|0 + local.get $2 + local.get $0 + i32.lt_u + if local.get $2 - local.get $3 - i32.lt_u - if - local.get $2 - i32.load - local.set $4 - local.get $4 - if - local.get $4 - local.get $1 - call $~lib/rt/purerc/__visit - end - local.get $2 - i32.const 4 - i32.add - local.set $2 - br $continue|0 - end - end - end - ) - (func $~lib/array/Array#__visit_impl (; 87 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) - nop - ) - (func $~lib/array/Array#__visit_impl (; 88 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) - nop - ) - (func $~lib/array/Array#__visit_impl (; 89 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) - nop - ) - (func $~lib/array/Array#__visit_impl (; 90 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) - nop - ) - (func $~lib/builtins/__visit_members (; 91 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) - (local $2 i32) - block $block$16$break - block - end - block $switch$1$leave - 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$16 - block $switch$1$case$3 - block $switch$1$default - local.get $0 - i32.const 8 - i32.sub - i32.load - br_table $switch$1$default $switch$1$case$3 $switch$1$case$3 $switch$1$case$3 $switch$1$case$3 $switch$1$case$3 $switch$1$case$3 $switch$1$case$3 $switch$1$case$3 $switch$1$case$3 $switch$1$case$3 $switch$1$case$3 $switch$1$case$3 $switch$1$case$3 $switch$1$case$16 $switch$1$case$3 $switch$1$case$3 $switch$1$case$19 $switch$1$case$20 $switch$1$case$21 $switch$1$case$22 $switch$1$case$23 $switch$1$default - end - block - block - unreachable - unreachable - end - unreachable - unreachable - end - unreachable - end - block - block - return - unreachable - end - unreachable - unreachable - end - unreachable - end - block - br $block$16$break - unreachable - end - unreachable - end - block - block - local.get $0 - local.get $1 - call $~lib/array/Array<~lib/string/String>#__visit_impl - block - br $block$16$break - unreachable - end - unreachable - unreachable - end - unreachable - unreachable - end - unreachable - end - block - block - local.get $0 - local.get $1 - call $~lib/array/Array#__visit_impl - block - br $block$16$break - unreachable - end - unreachable - unreachable - end - unreachable - unreachable - end - unreachable - end - block - block - local.get $0 - local.get $1 - call $~lib/array/Array#__visit_impl - block - br $block$16$break - unreachable - end - unreachable - unreachable - end - unreachable - unreachable - end - unreachable - end - block - block - local.get $0 - local.get $1 - call $~lib/array/Array#__visit_impl - block - br $block$16$break - unreachable - end - unreachable - unreachable - end - unreachable - unreachable - end - unreachable - end - block - block - local.get $0 - local.get $1 - call $~lib/array/Array#__visit_impl - block - br $block$16$break - unreachable - end - unreachable - unreachable - end - unreachable - unreachable - end - unreachable - end - end - block - block - local.get $0 i32.load - local.tee $2 + local.tee $3 if - local.get $2 + local.get $3 local.get $1 call $~lib/rt/purerc/__visit end - return - unreachable + local.get $2 + i32.const 4 + i32.add + local.set $2 + br $continue|0 end - unreachable - unreachable end - unreachable ) - (func $null (; 92 ;) (type $FUNCSIG$v) + (func $~lib/builtins/__visit_members (; 79 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + block $block$16$break + block $switch$1$case$19 + block $switch$1$case$3 + block $switch$1$default + local.get $0 + i32.const 8 + i32.sub + i32.load + i32.const 1 + i32.sub + br_table $switch$1$case$3 $switch$1$case$3 $switch$1$case$3 $switch$1$case$3 $switch$1$case$3 $switch$1$case$3 $switch$1$case$3 $switch$1$case$3 $switch$1$case$3 $switch$1$case$3 $switch$1$case$3 $switch$1$case$3 $switch$1$case$3 $block$16$break $switch$1$case$3 $switch$1$case$3 $switch$1$case$19 $block$16$break $block$16$break $block$16$break $block$16$break $switch$1$default + end + unreachable + end + return + end + local.get $0 + local.get $1 + call $~lib/array/Array<~lib/string/String>#__visit_impl + end + local.get $0 + i32.load + local.tee $0 + if + local.get $0 + local.get $1 + call $~lib/rt/purerc/__visit + end + ) + (func $null (; 80 ;) (type $FUNCSIG$v) + nop ) ) diff --git a/tests/compiler/std/string.ts b/tests/compiler/std/string.ts index 1974122c..9bc5f101 100644 --- a/tests/compiler/std/string.ts +++ b/tests/compiler/std/string.ts @@ -302,6 +302,6 @@ export function getString(): string { return str; } -// Unleak +// Unleak globals -str = changetype(0); +__release(changetype(str)); diff --git a/tests/compiler/std/string.untouched.wat b/tests/compiler/std/string.untouched.wat index abb0cbb5..98b53ceb 100644 --- a/tests/compiler/std/string.untouched.wat +++ b/tests/compiler/std/string.untouched.wat @@ -233,12 +233,11 @@ i32.load16_u ) (func $~lib/string/String.__not (; 6 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) local.get $0 call $~lib/rt/purerc/__retain drop local.get $0 - call $~lib/rt/purerc/__release - local.get $0 i32.const 0 i32.eq if (result i32) @@ -248,6 +247,10 @@ call $~lib/string/String#get:length i32.eqz end + local.set $1 + local.get $0 + call $~lib/rt/purerc/__release + local.get $1 ) (func $~lib/rt/tlsf/removeBlock (; 7 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) @@ -1608,6 +1611,7 @@ (local $5 i32) (local $6 i32) (local $7 i32) + (local $8 i32) local.get $0 call $~lib/rt/purerc/__retain drop @@ -1659,14 +1663,17 @@ end end end + local.get $5 + local.set $8 local.get $0 call $~lib/rt/purerc/__release local.get $2 call $~lib/rt/purerc/__release - local.get $5 + local.get $8 ) (func $~lib/string/String.__eq (; 19 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) + (local $3 i32) local.get $0 call $~lib/rt/purerc/__retain drop @@ -1677,11 +1684,13 @@ local.get $1 i32.eq if + i32.const 1 + local.set $2 local.get $0 call $~lib/rt/purerc/__release local.get $1 call $~lib/rt/purerc/__release - i32.const 1 + local.get $2 return end local.get $0 @@ -1695,39 +1704,45 @@ i32.eq end if + i32.const 0 + local.set $2 local.get $0 call $~lib/rt/purerc/__release local.get $1 call $~lib/rt/purerc/__release - i32.const 0 + local.get $2 return end local.get $0 call $~lib/string/String#get:length - local.set $2 - local.get $2 + local.set $3 + local.get $3 local.get $1 call $~lib/string/String#get:length i32.ne if + i32.const 0 + local.set $2 local.get $0 call $~lib/rt/purerc/__release local.get $1 call $~lib/rt/purerc/__release - i32.const 0 + local.get $2 return end local.get $0 - call $~lib/rt/purerc/__release - local.get $1 - call $~lib/rt/purerc/__release - local.get $0 i32.const 0 local.get $1 i32.const 0 - local.get $2 + local.get $3 call $~lib/util/string/compareImpl i32.eqz + local.set $2 + local.get $0 + call $~lib/rt/purerc/__release + local.get $1 + call $~lib/rt/purerc/__release + local.get $2 ) (func $~lib/string/String.fromCodePoint (; 20 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) @@ -1853,13 +1868,13 @@ local.get $4 i32.gt_s if + i32.const 0 + local.set $5 local.get $1 call $~lib/rt/purerc/__release - i32.const 0 + local.get $5 return end - local.get $1 - call $~lib/rt/purerc/__release local.get $0 local.get $7 local.get $1 @@ -1867,6 +1882,10 @@ local.get $8 call $~lib/util/string/compareImpl i32.eqz + local.set $5 + local.get $1 + call $~lib/rt/purerc/__release + local.get $5 ) (func $~lib/string/String#endsWith (; 22 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) @@ -1893,9 +1912,11 @@ i32.const 0 i32.eq if + i32.const 0 + local.set $3 local.get $1 call $~lib/rt/purerc/__release - i32.const 0 + local.get $3 return end local.get $2 @@ -1926,13 +1947,13 @@ i32.const 0 i32.lt_s if + i32.const 0 + local.set $3 local.get $1 call $~lib/rt/purerc/__release - i32.const 0 + local.get $3 return end - local.get $1 - call $~lib/rt/purerc/__release local.get $0 local.get $7 local.get $1 @@ -1940,6 +1961,10 @@ local.get $6 call $~lib/util/string/compareImpl i32.eqz + local.set $3 + local.get $1 + call $~lib/rt/purerc/__release + local.get $3 ) (func $~lib/string/String#indexOf (; 23 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) @@ -1977,76 +2002,84 @@ local.get $3 i32.eqz if + i32.const 0 + local.set $4 local.get $1 call $~lib/rt/purerc/__release - i32.const 0 + local.get $4 return end local.get $0 call $~lib/string/String#get:length - local.set $4 - local.get $4 + local.set $5 + local.get $5 i32.eqz if + i32.const -1 + local.set $4 local.get $1 call $~lib/rt/purerc/__release - i32.const -1 + local.get $4 return end local.get $2 - local.tee $5 + local.tee $4 i32.const 0 local.tee $6 - local.get $5 + local.get $4 local.get $6 i32.gt_s select - local.tee $5 - local.get $4 - local.tee $6 + local.tee $4 local.get $5 + local.tee $6 + local.get $4 local.get $6 i32.lt_s select local.set $7 - local.get $4 + local.get $5 local.get $3 i32.sub - local.set $4 + local.set $5 block $break|0 local.get $7 - local.set $5 + local.set $4 loop $repeat|0 - local.get $5 local.get $4 + local.get $5 i32.le_s i32.eqz br_if $break|0 local.get $0 - local.get $5 + local.get $4 local.get $1 i32.const 0 local.get $3 call $~lib/util/string/compareImpl i32.eqz if + local.get $4 + local.set $6 local.get $1 call $~lib/rt/purerc/__release - local.get $5 + local.get $6 return end - local.get $5 + local.get $4 i32.const 1 i32.add - local.set $5 + local.set $4 br $repeat|0 unreachable end unreachable end + i32.const -1 + local.set $4 local.get $1 call $~lib/rt/purerc/__release - i32.const -1 + local.get $4 ) (func $~lib/memory/memory.copy (; 24 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) @@ -2551,17 +2584,21 @@ local.get $4 i32.eqz if + local.get $3 + local.set $5 local.get $1 call $~lib/rt/purerc/__release - local.get $3 + local.get $5 return end local.get $3 i32.eqz if + i32.const -1 + local.set $5 local.get $1 call $~lib/rt/purerc/__release - i32.const -1 + local.get $5 return end local.get $2 @@ -2599,9 +2636,11 @@ call $~lib/util/string/compareImpl i32.eqz if + local.get $5 + local.set $6 local.get $1 call $~lib/rt/purerc/__release - local.get $5 + local.get $6 return end local.get $5 @@ -2613,17 +2652,20 @@ end unreachable end + i32.const -1 + local.set $5 local.get $1 call $~lib/rt/purerc/__release - i32.const -1 + local.get $5 ) (func $~lib/util/string/parse (; 29 ;) (type $FUNCSIG$dii) (param $0 i32) (param $1 i32) (result f64) (local $2 i32) - (local $3 i32) + (local $3 f64) (local $4 i32) - (local $5 f64) - (local $6 i32) - (local $7 f64) + (local $5 i32) + (local $6 f64) + (local $7 i32) + (local $8 f64) local.get $0 call $~lib/rt/purerc/__retain drop @@ -2633,17 +2675,19 @@ local.get $2 i32.eqz if + f64.const nan:0x8000000000000 + local.set $3 local.get $0 call $~lib/rt/purerc/__release - f64.const nan:0x8000000000000 + local.get $3 return end local.get $0 - local.set $3 - local.get $3 - i32.load16_u local.set $4 local.get $4 + i32.load16_u + local.set $5 + local.get $5 i32.const 45 i32.eq if @@ -2653,21 +2697,23 @@ local.tee $2 i32.eqz if + f64.const nan:0x8000000000000 + local.set $3 local.get $0 call $~lib/rt/purerc/__release - f64.const nan:0x8000000000000 + local.get $3 return end - local.get $3 + local.get $4 i32.const 2 i32.add - local.tee $3 + local.tee $4 i32.load16_u - local.set $4 - f64.const -1 local.set $5 + f64.const -1 + local.set $6 else - local.get $4 + local.get $5 i32.const 43 i32.eq if @@ -2677,28 +2723,30 @@ local.tee $2 i32.eqz if + f64.const nan:0x8000000000000 + local.set $3 local.get $0 call $~lib/rt/purerc/__release - f64.const nan:0x8000000000000 + local.get $3 return end - local.get $3 + local.get $4 i32.const 2 i32.add - local.tee $3 + local.tee $4 i32.load16_u - local.set $4 - f64.const 1 local.set $5 + f64.const 1 + local.set $6 else f64.const 1 - local.set $5 + local.set $6 end end local.get $1 i32.eqz if - local.get $4 + local.get $5 i32.const 48 i32.eq if (result i32) @@ -2717,32 +2765,32 @@ block $case2|0 block $case1|0 block $case0|0 - local.get $3 + local.get $4 i32.const 2 i32.add i32.load16_u - local.set $6 - local.get $6 + local.set $7 + local.get $7 i32.const 66 i32.eq br_if $case0|0 - local.get $6 + local.get $7 i32.const 98 i32.eq br_if $case1|0 - local.get $6 + local.get $7 i32.const 79 i32.eq br_if $case2|0 - local.get $6 + local.get $7 i32.const 111 i32.eq br_if $case3|0 - local.get $6 + local.get $7 i32.const 88 i32.eq br_if $case4|0 - local.get $6 + local.get $7 i32.const 120 i32.eq br_if $case5|0 @@ -2750,10 +2798,10 @@ end end block - local.get $3 + local.get $4 i32.const 4 i32.add - local.set $3 + local.set $4 local.get $2 i32.const 2 i32.sub @@ -2767,10 +2815,10 @@ end end block - local.get $3 + local.get $4 i32.const 4 i32.add - local.set $3 + local.set $4 local.get $2 i32.const 2 i32.sub @@ -2784,10 +2832,10 @@ end end block - local.get $3 + local.get $4 i32.const 4 i32.add - local.set $3 + local.set $4 local.get $2 i32.const 2 i32.sub @@ -2818,130 +2866,137 @@ i32.gt_s end if + f64.const nan:0x8000000000000 + local.set $3 local.get $0 call $~lib/rt/purerc/__release - f64.const nan:0x8000000000000 + local.get $3 return end end f64.const 0 - local.set $7 + local.set $8 block $break|1 loop $continue|1 block (result i32) local.get $2 - local.tee $6 + local.tee $7 i32.const 1 i32.sub local.set $2 - local.get $6 + local.get $7 end if - local.get $3 - i32.load16_u - local.set $4 local.get $4 + i32.load16_u + local.set $5 + local.get $5 i32.const 48 i32.ge_s if (result i32) - local.get $4 + local.get $5 i32.const 57 i32.le_s else i32.const 0 end if - local.get $4 + local.get $5 i32.const 48 i32.sub - local.set $4 + local.set $5 else - local.get $4 + local.get $5 i32.const 65 i32.ge_s if (result i32) - local.get $4 + local.get $5 i32.const 90 i32.le_s else i32.const 0 end if - local.get $4 + local.get $5 i32.const 65 i32.const 10 i32.sub i32.sub - local.set $4 + local.set $5 else - local.get $4 + local.get $5 i32.const 97 i32.ge_s if (result i32) - local.get $4 + local.get $5 i32.const 122 i32.le_s else i32.const 0 end if - local.get $4 + local.get $5 i32.const 97 i32.const 10 i32.sub i32.sub - local.set $4 + local.set $5 else br $break|1 end end end - local.get $4 + local.get $5 local.get $1 i32.ge_s if br $break|1 end - local.get $7 + local.get $8 local.get $1 f64.convert_i32_s f64.mul - local.get $4 + local.get $5 f64.convert_i32_s f64.add - local.set $7 - local.get $3 + local.set $8 + local.get $4 i32.const 2 i32.add - local.set $3 + local.set $4 br $continue|1 end end end + local.get $6 + local.get $8 + f64.mul + local.set $3 local.get $0 call $~lib/rt/purerc/__release - local.get $5 - local.get $7 - f64.mul + local.get $3 ) (func $~lib/string/parseInt (; 30 ;) (type $FUNCSIG$dii) (param $0 i32) (param $1 i32) (result f64) + (local $2 f64) local.get $0 call $~lib/rt/purerc/__retain drop local.get $0 - call $~lib/rt/purerc/__release - local.get $0 local.get $1 call $~lib/util/string/parse + local.set $2 + local.get $0 + call $~lib/rt/purerc/__release + local.get $2 ) (func $~lib/string/parseFloat (; 31 ;) (type $FUNCSIG$di) (param $0 i32) (result f64) (local $1 i32) - (local $2 i32) + (local $2 f64) (local $3 i32) - (local $4 f64) + (local $4 i32) (local $5 f64) - (local $6 i32) - (local $7 f64) + (local $6 f64) + (local $7 i32) local.get $0 call $~lib/rt/purerc/__retain drop @@ -2951,17 +3006,19 @@ local.get $1 i32.eqz if + f64.const nan:0x8000000000000 + local.set $2 local.get $0 call $~lib/rt/purerc/__release - f64.const nan:0x8000000000000 + local.get $2 return end local.get $0 - local.set $2 - local.get $2 - i32.load16_u local.set $3 local.get $3 + i32.load16_u + local.set $4 + local.get $4 i32.const 45 i32.eq if @@ -2971,21 +3028,23 @@ local.tee $1 i32.eqz if + f64.const nan:0x8000000000000 + local.set $2 local.get $0 call $~lib/rt/purerc/__release - f64.const nan:0x8000000000000 + local.get $2 return end - local.get $2 + local.get $3 i32.const 2 i32.add - local.tee $2 + local.tee $3 i32.load16_u - local.set $3 - f64.const -1 local.set $4 + f64.const -1 + local.set $5 else - local.get $3 + local.get $4 i32.const 43 i32.eq if @@ -2995,71 +3054,73 @@ local.tee $1 i32.eqz if + f64.const nan:0x8000000000000 + local.set $2 local.get $0 call $~lib/rt/purerc/__release - f64.const nan:0x8000000000000 + local.get $2 return end - local.get $2 + local.get $3 i32.const 2 i32.add - local.tee $2 + local.tee $3 i32.load16_u - local.set $3 - f64.const 1 local.set $4 + f64.const 1 + local.set $5 else f64.const 1 - local.set $4 + local.set $5 end end f64.const 0 - local.set $5 + local.set $6 block $break|0 loop $continue|0 block (result i32) local.get $1 - local.tee $6 + local.tee $7 i32.const 1 i32.sub local.set $1 - local.get $6 + local.get $7 end if - local.get $2 - i32.load16_u - local.set $3 local.get $3 + i32.load16_u + local.set $4 + local.get $4 i32.const 46 i32.eq if - local.get $2 + local.get $3 i32.const 2 i32.add - local.set $2 + local.set $3 f64.const 0.1 - local.set $7 + local.set $2 block $break|1 loop $continue|1 block (result i32) local.get $1 - local.tee $6 + local.tee $7 i32.const 1 i32.sub local.set $1 - local.get $6 + local.get $7 end if - local.get $2 - i32.load16_u - local.set $3 local.get $3 + i32.load16_u + local.set $4 + local.get $4 i32.const 69 i32.eq if (result i32) i32.const 1 else - local.get $3 + local.get $4 i32.const 101 i32.eq end @@ -3075,67 +3136,69 @@ unreachable end end - local.get $3 + local.get $4 i32.const 48 i32.sub - local.set $3 - local.get $3 + local.set $4 + local.get $4 i32.const 9 i32.gt_u if br $break|1 end - local.get $5 - local.get $3 + local.get $6 + local.get $4 f64.convert_i32_s - local.get $7 + local.get $2 f64.mul f64.add - local.set $5 - local.get $7 + local.set $6 + local.get $2 f64.const 0.1 f64.mul - local.set $7 - local.get $2 + local.set $2 + local.get $3 i32.const 2 i32.add - local.set $2 + local.set $3 br $continue|1 end end end br $break|0 end - local.get $3 + local.get $4 i32.const 48 i32.sub - local.set $3 - local.get $3 + local.set $4 + local.get $4 i32.const 10 i32.ge_u if br $break|0 end - local.get $5 + local.get $6 f64.const 10 f64.mul - local.get $3 + local.get $4 f64.convert_i32_s f64.add - local.set $5 - local.get $2 + local.set $6 + local.get $3 i32.const 2 i32.add - local.set $2 + local.set $3 br $continue|0 end end end + local.get $5 + local.get $6 + f64.mul + local.set $2 local.get $0 call $~lib/rt/purerc/__release - local.get $4 - local.get $5 - f64.mul + local.get $2 ) (func $~lib/string/String#concat (; 32 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) @@ -3226,6 +3289,7 @@ local.get $2 ) (func $~lib/string/String.__ne (; 34 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) local.get $0 call $~lib/rt/purerc/__retain drop @@ -3233,13 +3297,15 @@ call $~lib/rt/purerc/__retain drop local.get $0 - call $~lib/rt/purerc/__release - local.get $1 - call $~lib/rt/purerc/__release - local.get $0 local.get $1 call $~lib/string/String.__eq i32.eqz + local.set $2 + local.get $0 + call $~lib/rt/purerc/__release + local.get $1 + call $~lib/rt/purerc/__release + local.get $2 ) (func $~lib/string/String.__gt (; 35 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) @@ -3270,58 +3336,66 @@ i32.eq end if + i32.const 0 + local.set $2 local.get $0 call $~lib/rt/purerc/__release local.get $1 call $~lib/rt/purerc/__release - i32.const 0 + local.get $2 return end local.get $0 call $~lib/string/String#get:length - local.set $2 - local.get $1 - call $~lib/string/String#get:length local.set $3 - local.get $2 + local.get $1 + call $~lib/string/String#get:length + local.set $4 + local.get $3 i32.eqz if - local.get $0 - call $~lib/rt/purerc/__release - local.get $1 - call $~lib/rt/purerc/__release i32.const 0 - return - end - local.get $3 - i32.eqz - if + local.set $2 local.get $0 call $~lib/rt/purerc/__release local.get $1 call $~lib/rt/purerc/__release + local.get $2 + return + end + local.get $4 + i32.eqz + if i32.const 1 + local.set $2 + local.get $0 + call $~lib/rt/purerc/__release + local.get $1 + call $~lib/rt/purerc/__release + local.get $2 return end local.get $0 - call $~lib/rt/purerc/__release - local.get $1 - call $~lib/rt/purerc/__release - local.get $0 i32.const 0 local.get $1 i32.const 0 - local.get $2 - local.tee $4 local.get $3 - local.tee $5 + local.tee $2 local.get $4 + local.tee $5 + local.get $2 local.get $5 i32.lt_s select call $~lib/util/string/compareImpl i32.const 0 i32.gt_s + local.set $2 + local.get $0 + call $~lib/rt/purerc/__release + local.get $1 + call $~lib/rt/purerc/__release + local.get $2 ) (func $~lib/string/String.__lt (; 36 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) @@ -3352,60 +3426,69 @@ i32.eq end if + i32.const 0 + local.set $2 local.get $0 call $~lib/rt/purerc/__release local.get $1 call $~lib/rt/purerc/__release - i32.const 0 + local.get $2 return end local.get $0 call $~lib/string/String#get:length - local.set $2 - local.get $1 - call $~lib/string/String#get:length local.set $3 - local.get $3 - i32.eqz - if - local.get $0 - call $~lib/rt/purerc/__release - local.get $1 - call $~lib/rt/purerc/__release - i32.const 0 - return - end - local.get $2 - i32.eqz - if - local.get $0 - call $~lib/rt/purerc/__release - local.get $1 - call $~lib/rt/purerc/__release - i32.const 1 - return - end - local.get $0 - call $~lib/rt/purerc/__release local.get $1 - call $~lib/rt/purerc/__release - local.get $0 - i32.const 0 - local.get $1 - i32.const 0 - local.get $2 - local.tee $4 - local.get $3 - local.tee $5 + call $~lib/string/String#get:length + local.set $4 local.get $4 + i32.eqz + if + i32.const 0 + local.set $2 + local.get $0 + call $~lib/rt/purerc/__release + local.get $1 + call $~lib/rt/purerc/__release + local.get $2 + return + end + local.get $3 + i32.eqz + if + i32.const 1 + local.set $2 + local.get $0 + call $~lib/rt/purerc/__release + local.get $1 + call $~lib/rt/purerc/__release + local.get $2 + return + end + local.get $0 + i32.const 0 + local.get $1 + i32.const 0 + local.get $3 + local.tee $2 + local.get $4 + local.tee $5 + local.get $2 local.get $5 i32.lt_s select call $~lib/util/string/compareImpl i32.const 0 i32.lt_s + local.set $2 + local.get $0 + call $~lib/rt/purerc/__release + local.get $1 + call $~lib/rt/purerc/__release + local.get $2 ) (func $~lib/string/String.__gte (; 37 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) local.get $0 call $~lib/rt/purerc/__retain drop @@ -3413,15 +3496,18 @@ call $~lib/rt/purerc/__retain drop local.get $0 - call $~lib/rt/purerc/__release - local.get $1 - call $~lib/rt/purerc/__release - local.get $0 local.get $1 call $~lib/string/String.__lt i32.eqz + local.set $2 + local.get $0 + call $~lib/rt/purerc/__release + local.get $1 + call $~lib/rt/purerc/__release + local.get $2 ) (func $~lib/string/String.__lte (; 38 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) local.get $0 call $~lib/rt/purerc/__retain drop @@ -3429,13 +3515,15 @@ call $~lib/rt/purerc/__retain drop local.get $0 - call $~lib/rt/purerc/__release - local.get $1 - call $~lib/rt/purerc/__release - local.get $0 local.get $1 call $~lib/string/String.__gt i32.eqz + local.set $2 + local.get $0 + call $~lib/rt/purerc/__release + local.get $1 + call $~lib/rt/purerc/__release + local.get $2 ) (func $~lib/string/String#repeat (; 39 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) @@ -4498,9 +4586,11 @@ local.get $0 local.get $3 i32.store offset=12 + local.get $3 + local.set $4 local.get $1 call $~lib/rt/purerc/__release - local.get $3 + local.get $4 ) (func $~lib/string/String#split (; 55 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) @@ -7096,7 +7186,18 @@ call $~lib/rt/tlsf/__free local.get $3 ) - (func $start:std/string (; 77 ;) (type $FUNCSIG$v) + (func $~lib/rt/purerc/__release (; 77 ;) (type $FUNCSIG$vi) (param $0 i32) + local.get $0 + global.get $~lib/builtins/HEAP_BASE + i32.gt_u + if + local.get $0 + i32.const 16 + i32.sub + call $~lib/rt/purerc/decrement + end + ) + (func $start:std/string (; 78 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -7425,14 +7526,16 @@ local.set $7 i32.const 0 local.set $6 - local.get $7 - call $~lib/rt/purerc/__release local.get $8 local.get $7 local.get $6 call $~lib/string/String#indexOf i32.const -1 i32.ne + local.set $9 + local.get $7 + call $~lib/rt/purerc/__release + local.get $9 end i32.const 0 i32.ne @@ -10377,10 +10480,8 @@ call $~lib/builtins/abort unreachable end - i32.const 0 global.get $std/string/str - call $~lib/rt/purerc/__retainRelease - global.set $std/string/str + call $~lib/rt/purerc/__release local.get $0 call $~lib/rt/purerc/__release local.get $1 @@ -10640,24 +10741,13 @@ local.get $128 call $~lib/rt/purerc/__release ) - (func $std/string/getString (; 78 ;) (type $FUNCSIG$i) (result i32) + (func $std/string/getString (; 79 ;) (type $FUNCSIG$i) (result i32) global.get $std/string/str call $~lib/rt/purerc/__retain ) - (func $start (; 79 ;) (type $FUNCSIG$v) + (func $start (; 80 ;) (type $FUNCSIG$v) call $start:std/string ) - (func $~lib/rt/purerc/__release (; 80 ;) (type $FUNCSIG$vi) (param $0 i32) - local.get $0 - global.get $~lib/builtins/HEAP_BASE - i32.gt_u - if - local.get $0 - i32.const 16 - i32.sub - call $~lib/rt/purerc/decrement - end - ) (func $~lib/rt/purerc/markGray (; 81 ;) (type $FUNCSIG$vi) (param $0 i32) (local $1 i32) local.get $0 diff --git a/tests/compiler/std/trace.optimized.wat b/tests/compiler/std/trace.optimized.wat index ecaca42a..700e2e00 100644 --- a/tests/compiler/std/trace.optimized.wat +++ b/tests/compiler/std/trace.optimized.wat @@ -3,22 +3,16 @@ (type $FUNCSIG$v (func)) (import "env" "trace" (func $~lib/builtins/trace (param i32 i32 f64 f64 f64 f64 f64))) (memory $0 1) - (data (i32.const 8) "\10\00\00\00\1a") - (data (i32.const 24) "z\00e\00r\00o\00_\00i\00m\00p\00l\00i\00c\00i\00t") - (data (i32.const 56) "\10\00\00\00\1a") - (data (i32.const 72) "z\00e\00r\00o\00_\00e\00x\00p\00l\00i\00c\00i\00t") - (data (i32.const 104) "\10\00\00\00\0e") - (data (i32.const 120) "o\00n\00e\00_\00i\00n\00t") - (data (i32.const 136) "\10\00\00\00\0e") - (data (i32.const 152) "t\00w\00o\00_\00i\00n\00t") - (data (i32.const 168) "\10\00\00\00\12") - (data (i32.const 184) "t\00h\00r\00e\00e\00_\00i\00n\00t") - (data (i32.const 208) "\10\00\00\00\10") - (data (i32.const 224) "f\00o\00u\00r\00_\00i\00n\00t") - (data (i32.const 240) "\10\00\00\00\10") - (data (i32.const 256) "f\00i\00v\00e\00_\00i\00n\00t") - (data (i32.const 272) "\10\00\00\00\10") - (data (i32.const 288) "f\00i\00v\00e\00_\00d\00b\00l") + (data (i32.const 8) "\1a\00\00\00\01\00\00\00\10\00\00\00\1a\00\00\00z\00e\00r\00o\00_\00i\00m\00p\00l\00i\00c\00i\00t\00") + (data (i32.const 56) "\1a\00\00\00\01\00\00\00\10\00\00\00\1a\00\00\00z\00e\00r\00o\00_\00e\00x\00p\00l\00i\00c\00i\00t\00") + (data (i32.const 104) "\0e\00\00\00\01\00\00\00\10\00\00\00\0e\00\00\00o\00n\00e\00_\00i\00n\00t\00") + (data (i32.const 136) "\0e\00\00\00\01\00\00\00\10\00\00\00\0e\00\00\00t\00w\00o\00_\00i\00n\00t\00") + (data (i32.const 168) "\12\00\00\00\01\00\00\00\10\00\00\00\12\00\00\00t\00h\00r\00e\00e\00_\00i\00n\00t\00") + (data (i32.const 208) "\10\00\00\00\01\00\00\00\10\00\00\00\10\00\00\00f\00o\00u\00r\00_\00i\00n\00t\00") + (data (i32.const 240) "\10\00\00\00\01\00\00\00\10\00\00\00\10\00\00\00f\00i\00v\00e\00_\00i\00n\00t\00") + (data (i32.const 272) "\10\00\00\00\01\00\00\00\10\00\00\00\10\00\00\00f\00i\00v\00e\00_\00d\00b\00l\00") + (table $0 1 funcref) + (elem (i32.const 0) $null) (global $~lib/started (mut i32) (i32.const 0)) (export "memory" (memory $0)) (export "main" (func $std/trace/main)) @@ -92,12 +86,14 @@ global.get $~lib/started i32.eqz if - call $start:std/trace + call $start i32.const 1 global.set $~lib/started end ) - (func $null (; 3 ;) (type $FUNCSIG$v) - nop + (func $start (; 3 ;) (type $FUNCSIG$v) + call $start:std/trace + ) + (func $null (; 4 ;) (type $FUNCSIG$v) ) ) diff --git a/tests/compiler/std/trace.untouched.wat b/tests/compiler/std/trace.untouched.wat index d653dde3..700e2e00 100644 --- a/tests/compiler/std/trace.untouched.wat +++ b/tests/compiler/std/trace.untouched.wat @@ -3,14 +3,14 @@ (type $FUNCSIG$v (func)) (import "env" "trace" (func $~lib/builtins/trace (param i32 i32 f64 f64 f64 f64 f64))) (memory $0 1) - (data (i32.const 8) "\10\00\00\00\1a\00\00\00\00\00\00\00\00\00\00\00z\00e\00r\00o\00_\00i\00m\00p\00l\00i\00c\00i\00t\00") - (data (i32.const 56) "\10\00\00\00\1a\00\00\00\00\00\00\00\00\00\00\00z\00e\00r\00o\00_\00e\00x\00p\00l\00i\00c\00i\00t\00") - (data (i32.const 104) "\10\00\00\00\0e\00\00\00\00\00\00\00\00\00\00\00o\00n\00e\00_\00i\00n\00t\00") - (data (i32.const 136) "\10\00\00\00\0e\00\00\00\00\00\00\00\00\00\00\00t\00w\00o\00_\00i\00n\00t\00") - (data (i32.const 168) "\10\00\00\00\12\00\00\00\00\00\00\00\00\00\00\00t\00h\00r\00e\00e\00_\00i\00n\00t\00") - (data (i32.const 208) "\10\00\00\00\10\00\00\00\00\00\00\00\00\00\00\00f\00o\00u\00r\00_\00i\00n\00t\00") - (data (i32.const 240) "\10\00\00\00\10\00\00\00\00\00\00\00\00\00\00\00f\00i\00v\00e\00_\00i\00n\00t\00") - (data (i32.const 272) "\10\00\00\00\10\00\00\00\00\00\00\00\00\00\00\00f\00i\00v\00e\00_\00d\00b\00l\00") + (data (i32.const 8) "\1a\00\00\00\01\00\00\00\10\00\00\00\1a\00\00\00z\00e\00r\00o\00_\00i\00m\00p\00l\00i\00c\00i\00t\00") + (data (i32.const 56) "\1a\00\00\00\01\00\00\00\10\00\00\00\1a\00\00\00z\00e\00r\00o\00_\00e\00x\00p\00l\00i\00c\00i\00t\00") + (data (i32.const 104) "\0e\00\00\00\01\00\00\00\10\00\00\00\0e\00\00\00o\00n\00e\00_\00i\00n\00t\00") + (data (i32.const 136) "\0e\00\00\00\01\00\00\00\10\00\00\00\0e\00\00\00t\00w\00o\00_\00i\00n\00t\00") + (data (i32.const 168) "\12\00\00\00\01\00\00\00\10\00\00\00\12\00\00\00t\00h\00r\00e\00e\00_\00i\00n\00t\00") + (data (i32.const 208) "\10\00\00\00\01\00\00\00\10\00\00\00\10\00\00\00f\00o\00u\00r\00_\00i\00n\00t\00") + (data (i32.const 240) "\10\00\00\00\01\00\00\00\10\00\00\00\10\00\00\00f\00i\00v\00e\00_\00i\00n\00t\00") + (data (i32.const 272) "\10\00\00\00\01\00\00\00\10\00\00\00\10\00\00\00f\00i\00v\00e\00_\00d\00b\00l\00") (table $0 1 funcref) (elem (i32.const 0) $null) (global $~lib/started (mut i32) (i32.const 0)) diff --git a/tests/compiler/std/typedarray.json b/tests/compiler/std/typedarray.json index b1da366f..9f7878d4 100644 --- a/tests/compiler/std/typedarray.json +++ b/tests/compiler/std/typedarray.json @@ -1,5 +1,6 @@ { "asc_flags": [ - "--runtime none" + "--runtime half", + "--use ASC_RTRACE=1" ] } \ No newline at end of file diff --git a/tests/compiler/std/typedarray.optimized.wat b/tests/compiler/std/typedarray.optimized.wat index 0042d0a3..9f9de100 100644 --- a/tests/compiler/std/typedarray.optimized.wat +++ b/tests/compiler/std/typedarray.optimized.wat @@ -3,19 +3,22 @@ (type $FUNCSIG$vi (func (param i32))) (type $FUNCSIG$iii (func (param i32 i32) (result i32))) (type $FUNCSIG$iiii (func (param i32 i32 i32) (result i32))) + (type $FUNCSIG$v (func)) + (type $FUNCSIG$vii (func (param i32 i32))) (type $FUNCSIG$ii (func (param i32) (result i32))) (type $FUNCSIG$viii (func (param i32 i32 i32))) - (type $FUNCSIG$vii (func (param i32 i32))) (type $FUNCSIG$viid (func (param i32 i32 f64))) (type $FUNCSIG$idd (func (param f64 f64) (result i32))) (type $FUNCSIG$dii (func (param i32 i32) (result f64))) (type $FUNCSIG$iiiii (func (param i32 i32 i32 i32) (result i32))) - (type $FUNCSIG$v (func)) (type $FUNCSIG$viij (func (param i32 i32 i64))) (type $FUNCSIG$jjjii (func (param i64 i64 i32 i32) (result i64))) + (type $FUNCSIG$jiij (func (param i32 i32 i64) (result i64))) (type $FUNCSIG$viif (func (param i32 i32 f32))) (type $FUNCSIG$fffii (func (param f32 f32 i32 i32) (result f32))) + (type $FUNCSIG$fiif (func (param i32 i32 f32) (result f32))) (type $FUNCSIG$dddii (func (param f64 f64 i32 i32) (result f64))) + (type $FUNCSIG$diid (func (param i32 i32 f64) (result f64))) (type $FUNCSIG$jjii (func (param i64 i32 i32) (result i64))) (type $FUNCSIG$jii (func (param i32 i32) (result i64))) (type $FUNCSIG$ffii (func (param f32 i32 i32) (result f32))) @@ -24,637 +27,1786 @@ (type $FUNCSIG$ijii (func (param i64 i32 i32) (result i32))) (type $FUNCSIG$ifii (func (param f32 i32 i32) (result i32))) (type $FUNCSIG$idii (func (param f64 i32 i32) (result i32))) + (type $FUNCSIG$fff (func (param f32 f32) (result f32))) + (type $FUNCSIG$if (func (param f32) (result i32))) + (type $FUNCSIG$ddd (func (param f64 f64) (result f64))) + (type $FUNCSIG$id (func (param f64) (result i32))) (type $FUNCSIG$vjii (func (param i64 i32 i32))) (type $FUNCSIG$vfii (func (param f32 i32 i32))) (type $FUNCSIG$vdii (func (param f64 i32 i32))) - (type $FUNCSIG$fi (func (param i32) (result f32))) - (type $FUNCSIG$di (func (param i32) (result f64))) - (type $FUNCSIG$ff (func (param f32) (result f32))) - (type $FUNCSIG$dd (func (param f64) (result f64))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (import "rtrace" "free" (func $~lib/rt/tlsf/onFree (param i32))) + (import "rtrace" "retain" (func $~lib/rt/purerc/onIncrement (param i32))) + (import "rtrace" "release" (func $~lib/rt/purerc/onDecrement (param i32))) (memory $0 1) - (data (i32.const 8) "\10\00\00\00\"") - (data (i32.const 24) "s\00t\00d\00/\00t\00y\00p\00e\00d\00a\00r\00r\00a\00y\00.\00t\00s") - (data (i32.const 64) "\10\00\00\00&") - (data (i32.const 80) "~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00b\00u\00f\00f\00e\00r\00.\00t\00s") - (data (i32.const 120) "\10\00\00\00(") - (data (i32.const 136) "~\00l\00i\00b\00/\00u\00t\00i\00l\00/\00r\00u\00n\00t\00i\00m\00e\00.\00t\00s") - (data (i32.const 176) "\10\00\00\00$") - (data (i32.const 192) "~\00l\00i\00b\00/\00t\00y\00p\00e\00d\00a\00r\00r\00a\00y\00.\00t\00s") - (data (i32.const 232) "\0f\00\00\00\05") - (data (i32.const 248) "\01\01\01\04\05") - (data (i32.const 256) "\10\00\00\00\1a") - (data (i32.const 272) "~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00.\00t\00s") - (data (i32.const 304) "\0f\00\00\00\05") - (data (i32.const 328) "\0f\00\00\00\05") - (data (i32.const 344) "\01\01") - (data (i32.const 352) "\0f\00\00\00\05") - (data (i32.const 368) "\01\01\00\02\02") - (data (i32.const 376) "\0f\00\00\00\05") - (data (i32.const 392) "\01\01\00\02\02") - (data (i32.const 400) "\0f\00\00\00\03") - (data (i32.const 424) "\0f\00\00\00\05") - (data (i32.const 440) "\01\00\00\00\02") - (data (i32.const 448) "\0f\00\00\00\14") - (data (i32.const 464) "\01\00\00\00\01\00\00\00\01\00\00\00\04\00\00\00\05") - (data (i32.const 488) "\0f\00\00\00\14") - (data (i32.const 528) "\0f\00\00\00\14") - (data (i32.const 544) "\01\00\00\00\01") - (data (i32.const 568) "\0f\00\00\00\14") - (data (i32.const 584) "\01\00\00\00\01\00\00\00\00\00\00\00\02\00\00\00\02") - (data (i32.const 608) "\0f\00\00\00\14") - (data (i32.const 624) "\01\00\00\00\01\00\00\00\00\00\00\00\02\00\00\00\02") - (data (i32.const 648) "\0f\00\00\00\0c") - (data (i32.const 680) "\0f\00\00\00\14") - (data (i32.const 696) "\01") - (data (i32.const 712) "\02") - (data (i32.const 720) "\10\00\00\00\1e") - (data (i32.const 736) "r\00e\00s\00u\00l\00t\00 \00m\00i\00s\00m\00a\00t\00c\00h") - (data (i32.const 768) "\10\00\00\00(") - (data (i32.const 784) "f\00a\00i\00l\00 \00r\00e\00s\00u\00l\00t\00 \00m\00i\00s\00m\00a\00t\00c\00h") - (data (i32.const 824) "\0f\00\00\00\0c") - (data (i32.const 840) "\n\00\00\00\0c\00\00\00\0e") - (data (i32.const 856) "\1d\00\00\00\10") - (data (i32.const 872) "H\03\00\00H\03\00\00\0c\00\00\00\03") - (data (i32.const 888) "\10\00\00\00,") - (data (i32.const 904) "f\00o\00r\00E\00a\00c\00h\00 \00v\00a\00l\00u\00e\00 \00m\00i\00s\00m\00a\00t\00c\00h") - (data (i32.const 952) "\10\00\00\00,") - (data (i32.const 968) "f\00o\00r\00E\00a\00c\00h\00 \00i\00n\00d\00e\00x\00 \00m\00i\00s\00m\00a\00t\00c\00h") - (data (i32.const 1016) "\10\00\00\00>") - (data (i32.const 1032) "f\00o\00r\00E\00a\00c\00h\00 \00s\00e\00l\00f\00 \00p\00a\00r\00a\00m\00e\00t\00e\00r\00 \00m\00i\00s\00m\00a\00t\00c\00h") - (data (i32.const 1096) "\10\00\00\006") - (data (i32.const 1112) "f\00o\00r\00E\00a\00c\00h\00 \00c\00a\00l\00l\00 \00c\00o\00u\00n\00t\00 \00m\00i\00s\00m\00a\00t\00c\00h") - (data (i32.const 1168) "\0f\00\00\00$") - (data (i32.const 1184) "\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00\06\00\00\00\07\00\00\00\08\00\00\00\t") - (data (i32.const 1224) "\1d\00\00\00\10") - (data (i32.const 1240) "\a0\04\00\00\a0\04\00\00$\00\00\00\t") - (data (i32.const 1256) "\10\00\00\00B") - (data (i32.const 1272) "T\00y\00p\00e\00d\00A\00r\00r\00a\00y\00 \00r\00e\00v\00e\00r\00s\00e\00 \00v\00a\00l\00u\00e\00 \00m\00i\00s\00m\00a\00t\00c\00h") - (data (i32.const 1344) "\10\00\00\00V") - (data (i32.const 1360) "T\00y\00p\00e\00d\00A\00r\00r\00a\00y\00 \00r\00e\00v\00e\00r\00s\00e\00 \00w\00i\00t\00h\00 \00b\00y\00t\00e\00O\00f\00f\00s\00e\00t\00 \00m\00i\00s\00m\00a\00t\00c\00h") - (data (i32.const 1448) "\1e\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\0e\00\00\00\08\00\00\00\0e\00\00\00\08\00\00\00\0e\00\00\00\08\00\00\00\0e\00\00\00\08\00\00\00\0e\00\00\00\08\00\00\00\0e\00\00\00\08\00\00\00\0e\00\00\00\08\00\00\00\0e\00\00\00\08\00\00\00\0e\00\00\00\08\00\00\00\0e\00\00\00\08\00\00\00\0e\00\00\00\19\00\00\00\0e\00\00\00I\00\00\00\0e\00\00\00\08") + (data (i32.const 8) "\"\00\00\00\01\00\00\00\10\00\00\00\"\00\00\00s\00t\00d\00/\00t\00y\00p\00e\00d\00a\00r\00r\00a\00y\00.\00t\00s\00") + (data (i32.const 64) "\1c\00\00\00\01\00\00\00\10\00\00\00\1c\00\00\00I\00n\00v\00a\00l\00i\00d\00 \00l\00e\00n\00g\00t\00h\00") + (data (i32.const 112) "&\00\00\00\01\00\00\00\10\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 168) "\1e\00\00\00\01\00\00\00\10\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 216) "(\00\00\00\01\00\00\00\10\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 272) "$\00\00\00\01\00\00\00\10\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 328) "$\00\00\00\01\00\00\00\10\00\00\00$\00\00\00~\00l\00i\00b\00/\00t\00y\00p\00e\00d\00a\00r\00r\00a\00y\00.\00t\00s\00") + (data (i32.const 384) "\05\00\00\00\01\00\00\00\0f\00\00\00\05\00\00\00\01\01\01\04\05") + (data (i32.const 408) "\"\00\00\00\01\00\00\00\10\00\00\00\"\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00p\00u\00r\00e\00r\00c\00.\00t\00s\00") + (data (i32.const 464) "\1a\00\00\00\01\00\00\00\10\00\00\00\1a\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00.\00t\00s\00") + (data (i32.const 512) "\05\00\00\00\01\00\00\00\0f\00\00\00\05\00\00\00\00\00\00\00\00") + (data (i32.const 536) "\05\00\00\00\01\00\00\00\0f\00\00\00\05\00\00\00\01\01\00\00\00") + (data (i32.const 560) "\05\00\00\00\01\00\00\00\0f\00\00\00\05\00\00\00\01\01\00\02\02") + (data (i32.const 584) "\05\00\00\00\01\00\00\00\0f\00\00\00\05\00\00\00\01\01\00\02\02") + (data (i32.const 608) "\03\00\00\00\01\00\00\00\0f\00\00\00\03\00\00\00\00\00\00") + (data (i32.const 632) "\05\00\00\00\01\00\00\00\0f\00\00\00\05\00\00\00\01\00\00\00\02") + (data (i32.const 656) "\14\00\00\00\01\00\00\00\0f\00\00\00\14\00\00\00\01\00\00\00\01\00\00\00\01\00\00\00\04\00\00\00\05\00\00\00") + (data (i32.const 696) "\14\00\00\00\01\00\00\00\0f\00\00\00\14\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 736) "\14\00\00\00\01\00\00\00\0f\00\00\00\14\00\00\00\01\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 776) "\14\00\00\00\01\00\00\00\0f\00\00\00\14\00\00\00\01\00\00\00\01\00\00\00\00\00\00\00\02\00\00\00\02\00\00\00") + (data (i32.const 816) "\14\00\00\00\01\00\00\00\0f\00\00\00\14\00\00\00\01\00\00\00\01\00\00\00\00\00\00\00\02\00\00\00\02\00\00\00") + (data (i32.const 856) "\0c\00\00\00\01\00\00\00\0f\00\00\00\0c\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 888) "\14\00\00\00\01\00\00\00\0f\00\00\00\14\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00") + (data (i32.const 928) "\1e\00\00\00\01\00\00\00\10\00\00\00\1e\00\00\00r\00e\00s\00u\00l\00t\00 \00m\00i\00s\00m\00a\00t\00c\00h\00") + (data (i32.const 976) "(\00\00\00\01\00\00\00\10\00\00\00(\00\00\00f\00a\00i\00l\00 \00r\00e\00s\00u\00l\00t\00 \00m\00i\00s\00m\00a\00t\00c\00h\00") + (data (i32.const 1032) "\0c\00\00\00\01\00\00\00\0f\00\00\00\0c\00\00\00\n\00\00\00\0c\00\00\00\0e\00\00\00") + (data (i32.const 1064) "\10\00\00\00\01\00\00\00\1d\00\00\00\10\00\00\00\18\04\00\00\18\04\00\00\0c\00\00\00\03\00\00\00") + (data (i32.const 1096) ",\00\00\00\01\00\00\00\10\00\00\00,\00\00\00f\00o\00r\00E\00a\00c\00h\00 \00v\00a\00l\00u\00e\00 \00m\00i\00s\00m\00a\00t\00c\00h\00") + (data (i32.const 1160) ",\00\00\00\01\00\00\00\10\00\00\00,\00\00\00f\00o\00r\00E\00a\00c\00h\00 \00i\00n\00d\00e\00x\00 \00m\00i\00s\00m\00a\00t\00c\00h\00") + (data (i32.const 1224) ">\00\00\00\01\00\00\00\10\00\00\00>\00\00\00f\00o\00r\00E\00a\00c\00h\00 \00s\00e\00l\00f\00 \00p\00a\00r\00a\00m\00e\00t\00e\00r\00 \00m\00i\00s\00m\00a\00t\00c\00h\00") + (data (i32.const 1304) "6\00\00\00\01\00\00\00\10\00\00\006\00\00\00f\00o\00r\00E\00a\00c\00h\00 \00c\00a\00l\00l\00 \00c\00o\00u\00n\00t\00 \00m\00i\00s\00m\00a\00t\00c\00h\00") + (data (i32.const 1376) "$\00\00\00\01\00\00\00\0f\00\00\00$\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00\06\00\00\00\07\00\00\00\08\00\00\00\t\00\00\00") + (data (i32.const 1432) "\10\00\00\00\01\00\00\00\1d\00\00\00\10\00\00\00p\05\00\00p\05\00\00$\00\00\00\t\00\00\00") + (data (i32.const 1464) "B\00\00\00\01\00\00\00\10\00\00\00B\00\00\00T\00y\00p\00e\00d\00A\00r\00r\00a\00y\00 \00r\00e\00v\00e\00r\00s\00e\00 \00v\00a\00l\00u\00e\00 \00m\00i\00s\00m\00a\00t\00c\00h\00") + (data (i32.const 1552) "V\00\00\00\01\00\00\00\10\00\00\00V\00\00\00T\00y\00p\00e\00d\00A\00r\00r\00a\00y\00 \00r\00e\00v\00e\00r\00s\00e\00 \00w\00i\00t\00h\00 \00b\00y\00t\00e\00O\00f\00f\00s\00e\00t\00 \00m\00i\00s\00m\00a\00t\00c\00h\00") + (data (i32.const 1656) "\"\00\00\00\01\00\00\00\10\00\00\00\"\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00c\00o\00m\00m\00o\00n\00.\00t\00s\00") + (data (i32.const 1712) "\1d\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\0e\00\00\00\08\00\00\00\0e\00\00\00\08\00\00\00\0e\00\00\00\08\00\00\00\0e\00\00\00\08\00\00\00\0e\00\00\00\08\00\00\00\0e\00\00\00\08\00\00\00\0e\00\00\00\08\00\00\00\0e\00\00\00\08\00\00\00\0e\00\00\00\08\00\00\00\0e\00\00\00\08\00\00\00\0e\00\00\00\19\00\00\00\0e\00\00\00I\00\00\00\0e\00\00\00") (table $0 112 funcref) - (elem (i32.const 0) $~lib/runtime/runtime.collect $~lib/util/sort/COMPARATOR~anonymous|0 $std/typedarray/testReduce<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testReduce<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testReduce<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testReduce<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testReduce<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testReduce<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testReduce<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testReduce<~lib/typedarray/Int64Array,i64>~anonymous|0 $std/typedarray/testReduce<~lib/typedarray/Int64Array,i64>~anonymous|0 $std/typedarray/testReduce<~lib/typedarray/Float32Array,f32>~anonymous|0 $std/typedarray/testReduce<~lib/typedarray/Float64Array,f64>~anonymous|0 $std/typedarray/testReduce<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testReduce<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testReduce<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testReduce<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testReduce<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testReduce<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testReduce<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testReduce<~lib/typedarray/Int64Array,i64>~anonymous|0 $std/typedarray/testReduce<~lib/typedarray/Int64Array,i64>~anonymous|0 $std/typedarray/testReduce<~lib/typedarray/Float32Array,f32>~anonymous|0 $std/typedarray/testReduce<~lib/typedarray/Float64Array,f64>~anonymous|0 $std/typedarray/testArrayMap<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testArrayMap<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testArrayMap<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testArrayMap<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testArrayMap<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testArrayMap<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testArrayMap<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testArrayMap<~lib/typedarray/Int64Array,i64>~anonymous|0 $std/typedarray/testArrayMap<~lib/typedarray/Int64Array,i64>~anonymous|0 $std/typedarray/testArrayMap<~lib/typedarray/Float32Array,f32>~anonymous|0 $std/typedarray/testArrayMap<~lib/typedarray/Float64Array,f64>~anonymous|0 $std/typedarray/testArraySome<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testArraySome<~lib/typedarray/Int8Array,i8>~anonymous|1 $std/typedarray/testArraySome<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testArraySome<~lib/typedarray/Int8Array,i8>~anonymous|1 $std/typedarray/testArraySome<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testArraySome<~lib/typedarray/Int8Array,i8>~anonymous|1 $std/typedarray/testArraySome<~lib/typedarray/Int16Array,i16>~anonymous|0 $std/typedarray/testArraySome<~lib/typedarray/Int16Array,i16>~anonymous|1 $std/typedarray/testArraySome<~lib/typedarray/Int16Array,i16>~anonymous|0 $std/typedarray/testArraySome<~lib/typedarray/Int16Array,i16>~anonymous|1 $std/typedarray/testArraySome<~lib/typedarray/Int32Array,i32>~anonymous|0 $std/typedarray/testArraySome<~lib/typedarray/Int32Array,i32>~anonymous|1 $std/typedarray/testArraySome<~lib/typedarray/Int32Array,i32>~anonymous|0 $std/typedarray/testArraySome<~lib/typedarray/Int32Array,i32>~anonymous|1 $std/typedarray/testArraySome<~lib/typedarray/Int64Array,i64>~anonymous|0 $std/typedarray/testArraySome<~lib/typedarray/Int64Array,i64>~anonymous|1 $std/typedarray/testArraySome<~lib/typedarray/Int64Array,i64>~anonymous|0 $std/typedarray/testArraySome<~lib/typedarray/Int64Array,i64>~anonymous|1 $std/typedarray/testArraySome<~lib/typedarray/Float32Array,f32>~anonymous|0 $std/typedarray/testArraySome<~lib/typedarray/Float32Array,f32>~anonymous|1 $std/typedarray/testArraySome<~lib/typedarray/Float64Array,f64>~anonymous|0 $std/typedarray/testArraySome<~lib/typedarray/Float64Array,f64>~anonymous|1 $std/typedarray/testArraySome<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testArrayFindIndex<~lib/typedarray/Int8Array,i8>~anonymous|1 $std/typedarray/testArraySome<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testArrayFindIndex<~lib/typedarray/Int8Array,i8>~anonymous|1 $std/typedarray/testArraySome<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testArrayFindIndex<~lib/typedarray/Int8Array,i8>~anonymous|1 $std/typedarray/testArraySome<~lib/typedarray/Int16Array,i16>~anonymous|0 $std/typedarray/testArrayFindIndex<~lib/typedarray/Int16Array,i16>~anonymous|1 $std/typedarray/testArraySome<~lib/typedarray/Int16Array,i16>~anonymous|0 $std/typedarray/testArrayFindIndex<~lib/typedarray/Int16Array,i16>~anonymous|1 $std/typedarray/testArraySome<~lib/typedarray/Int32Array,i32>~anonymous|0 $std/typedarray/testArrayFindIndex<~lib/typedarray/Int32Array,i32>~anonymous|1 $std/typedarray/testArraySome<~lib/typedarray/Int32Array,i32>~anonymous|0 $std/typedarray/testArrayFindIndex<~lib/typedarray/Int32Array,i32>~anonymous|1 $std/typedarray/testArraySome<~lib/typedarray/Int64Array,i64>~anonymous|0 $std/typedarray/testArrayFindIndex<~lib/typedarray/Int64Array,i64>~anonymous|1 $std/typedarray/testArraySome<~lib/typedarray/Int64Array,i64>~anonymous|0 $std/typedarray/testArrayFindIndex<~lib/typedarray/Int64Array,i64>~anonymous|1 $std/typedarray/testArraySome<~lib/typedarray/Float32Array,f32>~anonymous|0 $std/typedarray/testArrayFindIndex<~lib/typedarray/Float32Array,f32>~anonymous|1 $std/typedarray/testArraySome<~lib/typedarray/Float64Array,f64>~anonymous|0 $std/typedarray/testArrayFindIndex<~lib/typedarray/Float64Array,f64>~anonymous|1 $std/typedarray/testArrayEvery<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testArraySome<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testArrayEvery<~lib/typedarray/Uint8Array,u8>~anonymous|0 $std/typedarray/testArraySome<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testArrayEvery<~lib/typedarray/Uint8Array,u8>~anonymous|0 $std/typedarray/testArraySome<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testArrayEvery<~lib/typedarray/Int16Array,i16>~anonymous|0 $std/typedarray/testArraySome<~lib/typedarray/Int16Array,i16>~anonymous|0 $std/typedarray/testArrayEvery<~lib/typedarray/Uint8Array,u8>~anonymous|0 $std/typedarray/testArraySome<~lib/typedarray/Int16Array,i16>~anonymous|0 $std/typedarray/testArrayEvery<~lib/typedarray/Int32Array,i32>~anonymous|0 $std/typedarray/testArraySome<~lib/typedarray/Int32Array,i32>~anonymous|0 $std/typedarray/testArrayEvery<~lib/typedarray/Uint8Array,u8>~anonymous|0 $std/typedarray/testArraySome<~lib/typedarray/Int32Array,i32>~anonymous|0 $std/typedarray/testArrayEvery<~lib/typedarray/Int64Array,i64>~anonymous|0 $std/typedarray/testArraySome<~lib/typedarray/Int64Array,i64>~anonymous|0 $std/typedarray/testArrayEvery<~lib/typedarray/Uint64Array,u64>~anonymous|0 $std/typedarray/testArraySome<~lib/typedarray/Int64Array,i64>~anonymous|0 $std/typedarray/testArrayEvery<~lib/typedarray/Float32Array,f32>~anonymous|0 $std/typedarray/testArraySome<~lib/typedarray/Float32Array,f32>~anonymous|0 $std/typedarray/testArrayEvery<~lib/typedarray/Float64Array,f64>~anonymous|0 $std/typedarray/testArraySome<~lib/typedarray/Float64Array,f64>~anonymous|0 $std/typedarray/testArrayForEach<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testArrayForEach<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testArrayForEach<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testArrayForEach<~lib/typedarray/Int16Array,i16>~anonymous|0 $std/typedarray/testArrayForEach<~lib/typedarray/Int16Array,i16>~anonymous|0 $std/typedarray/testArrayForEach<~lib/typedarray/Int32Array,i32>~anonymous|0 $std/typedarray/testArrayForEach<~lib/typedarray/Int32Array,i32>~anonymous|0 $std/typedarray/testArrayForEach<~lib/typedarray/Int64Array,i64>~anonymous|0 $std/typedarray/testArrayForEach<~lib/typedarray/Int64Array,i64>~anonymous|0 $std/typedarray/testArrayForEach<~lib/typedarray/Float32Array,f32>~anonymous|0 $std/typedarray/testArrayForEach<~lib/typedarray/Float64Array,f64>~anonymous|0) - (global $~lib/allocator/arena/startOffset (mut i32) (i32.const 0)) - (global $~lib/allocator/arena/offset (mut i32) (i32.const 0)) + (elem (i32.const 0) $null $~lib/util/sort/COMPARATOR~anonymous|0 $std/typedarray/testReduce<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testReduce<~lib/typedarray/Uint8Array,u8>~anonymous|0 $std/typedarray/testReduce<~lib/typedarray/Uint8ClampedArray,u8>~anonymous|0 $std/typedarray/testReduce<~lib/typedarray/Int16Array,i16>~anonymous|0 $std/typedarray/testReduce<~lib/typedarray/Uint16Array,u16>~anonymous|0 $std/typedarray/testReduce<~lib/typedarray/Int32Array,i32>~anonymous|0 $std/typedarray/testReduce<~lib/typedarray/Uint32Array,u32>~anonymous|0 $std/typedarray/testReduce<~lib/typedarray/Int64Array,i64>~anonymous|0 $std/typedarray/testReduce<~lib/typedarray/Uint64Array,u64>~anonymous|0 $std/typedarray/testReduce<~lib/typedarray/Float32Array,f32>~anonymous|0 $std/typedarray/testReduce<~lib/typedarray/Float64Array,f64>~anonymous|0 $std/typedarray/testReduceRight<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testReduceRight<~lib/typedarray/Uint8Array,u8>~anonymous|0 $std/typedarray/testReduceRight<~lib/typedarray/Uint8ClampedArray,u8>~anonymous|0 $std/typedarray/testReduceRight<~lib/typedarray/Int16Array,i16>~anonymous|0 $std/typedarray/testReduceRight<~lib/typedarray/Uint16Array,u16>~anonymous|0 $std/typedarray/testReduceRight<~lib/typedarray/Int32Array,i32>~anonymous|0 $std/typedarray/testReduceRight<~lib/typedarray/Uint32Array,u32>~anonymous|0 $std/typedarray/testReduceRight<~lib/typedarray/Int64Array,i64>~anonymous|0 $std/typedarray/testReduceRight<~lib/typedarray/Uint64Array,u64>~anonymous|0 $std/typedarray/testReduceRight<~lib/typedarray/Float32Array,f32>~anonymous|0 $std/typedarray/testReduceRight<~lib/typedarray/Float64Array,f64>~anonymous|0 $std/typedarray/testArrayMap<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testArrayMap<~lib/typedarray/Uint8Array,u8>~anonymous|0 $std/typedarray/testArrayMap<~lib/typedarray/Uint8ClampedArray,u8>~anonymous|0 $std/typedarray/testArrayMap<~lib/typedarray/Int16Array,i16>~anonymous|0 $std/typedarray/testArrayMap<~lib/typedarray/Uint16Array,u16>~anonymous|0 $std/typedarray/testArrayMap<~lib/typedarray/Int32Array,i32>~anonymous|0 $std/typedarray/testArrayMap<~lib/typedarray/Uint32Array,u32>~anonymous|0 $std/typedarray/testArrayMap<~lib/typedarray/Int64Array,i64>~anonymous|0 $std/typedarray/testArrayMap<~lib/typedarray/Uint64Array,u64>~anonymous|0 $std/typedarray/testArrayMap<~lib/typedarray/Float32Array,f32>~anonymous|0 $std/typedarray/testArrayMap<~lib/typedarray/Float64Array,f64>~anonymous|0 $std/typedarray/testArraySome<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testArraySome<~lib/typedarray/Int8Array,i8>~anonymous|1 $std/typedarray/testArraySome<~lib/typedarray/Uint8Array,u8>~anonymous|0 $std/typedarray/testArraySome<~lib/typedarray/Uint8Array,u8>~anonymous|1 $std/typedarray/testArraySome<~lib/typedarray/Uint8ClampedArray,u8>~anonymous|0 $std/typedarray/testArraySome<~lib/typedarray/Uint8ClampedArray,u8>~anonymous|1 $std/typedarray/testArraySome<~lib/typedarray/Int16Array,i16>~anonymous|0 $std/typedarray/testArraySome<~lib/typedarray/Int16Array,i16>~anonymous|1 $std/typedarray/testArraySome<~lib/typedarray/Uint16Array,u16>~anonymous|0 $std/typedarray/testArraySome<~lib/typedarray/Uint16Array,u16>~anonymous|1 $std/typedarray/testArraySome<~lib/typedarray/Int32Array,i32>~anonymous|0 $std/typedarray/testArraySome<~lib/typedarray/Int32Array,i32>~anonymous|1 $std/typedarray/testArraySome<~lib/typedarray/Uint32Array,u32>~anonymous|0 $std/typedarray/testArraySome<~lib/typedarray/Uint32Array,u32>~anonymous|1 $std/typedarray/testArraySome<~lib/typedarray/Int64Array,i64>~anonymous|0 $std/typedarray/testArraySome<~lib/typedarray/Int64Array,i64>~anonymous|1 $std/typedarray/testArraySome<~lib/typedarray/Uint64Array,u64>~anonymous|0 $std/typedarray/testArraySome<~lib/typedarray/Uint64Array,u64>~anonymous|1 $std/typedarray/testArraySome<~lib/typedarray/Float32Array,f32>~anonymous|0 $std/typedarray/testArraySome<~lib/typedarray/Float32Array,f32>~anonymous|1 $std/typedarray/testArraySome<~lib/typedarray/Float64Array,f64>~anonymous|0 $std/typedarray/testArraySome<~lib/typedarray/Float64Array,f64>~anonymous|1 $std/typedarray/testArrayFindIndex<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testArrayFindIndex<~lib/typedarray/Int8Array,i8>~anonymous|1 $std/typedarray/testArrayFindIndex<~lib/typedarray/Uint8Array,u8>~anonymous|0 $std/typedarray/testArrayFindIndex<~lib/typedarray/Uint8Array,u8>~anonymous|1 $std/typedarray/testArrayFindIndex<~lib/typedarray/Uint8ClampedArray,u8>~anonymous|0 $std/typedarray/testArrayFindIndex<~lib/typedarray/Uint8ClampedArray,u8>~anonymous|1 $std/typedarray/testArrayFindIndex<~lib/typedarray/Int16Array,i16>~anonymous|0 $std/typedarray/testArrayFindIndex<~lib/typedarray/Int16Array,i16>~anonymous|1 $std/typedarray/testArrayFindIndex<~lib/typedarray/Uint16Array,u16>~anonymous|0 $std/typedarray/testArrayFindIndex<~lib/typedarray/Uint16Array,u16>~anonymous|1 $std/typedarray/testArrayFindIndex<~lib/typedarray/Int32Array,i32>~anonymous|0 $std/typedarray/testArrayFindIndex<~lib/typedarray/Int32Array,i32>~anonymous|1 $std/typedarray/testArrayFindIndex<~lib/typedarray/Uint32Array,u32>~anonymous|0 $std/typedarray/testArrayFindIndex<~lib/typedarray/Uint32Array,u32>~anonymous|1 $std/typedarray/testArrayFindIndex<~lib/typedarray/Int64Array,i64>~anonymous|0 $std/typedarray/testArrayFindIndex<~lib/typedarray/Int64Array,i64>~anonymous|1 $std/typedarray/testArrayFindIndex<~lib/typedarray/Uint64Array,u64>~anonymous|0 $std/typedarray/testArrayFindIndex<~lib/typedarray/Uint64Array,u64>~anonymous|1 $std/typedarray/testArrayFindIndex<~lib/typedarray/Float32Array,f32>~anonymous|0 $std/typedarray/testArrayFindIndex<~lib/typedarray/Float32Array,f32>~anonymous|1 $std/typedarray/testArrayFindIndex<~lib/typedarray/Float64Array,f64>~anonymous|0 $std/typedarray/testArrayFindIndex<~lib/typedarray/Float64Array,f64>~anonymous|1 $std/typedarray/testArrayEvery<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testArrayEvery<~lib/typedarray/Int8Array,i8>~anonymous|1 $std/typedarray/testArrayEvery<~lib/typedarray/Uint8Array,u8>~anonymous|0 $std/typedarray/testArrayEvery<~lib/typedarray/Uint8Array,u8>~anonymous|1 $std/typedarray/testArrayEvery<~lib/typedarray/Uint8ClampedArray,u8>~anonymous|0 $std/typedarray/testArrayEvery<~lib/typedarray/Uint8ClampedArray,u8>~anonymous|1 $std/typedarray/testArrayEvery<~lib/typedarray/Int16Array,i16>~anonymous|0 $std/typedarray/testArrayEvery<~lib/typedarray/Int16Array,i16>~anonymous|1 $std/typedarray/testArrayEvery<~lib/typedarray/Uint16Array,u16>~anonymous|0 $std/typedarray/testArrayEvery<~lib/typedarray/Uint16Array,u16>~anonymous|1 $std/typedarray/testArrayEvery<~lib/typedarray/Int32Array,i32>~anonymous|0 $std/typedarray/testArrayEvery<~lib/typedarray/Int32Array,i32>~anonymous|1 $std/typedarray/testArrayEvery<~lib/typedarray/Uint32Array,u32>~anonymous|0 $std/typedarray/testArrayEvery<~lib/typedarray/Uint32Array,u32>~anonymous|1 $std/typedarray/testArrayEvery<~lib/typedarray/Int64Array,i64>~anonymous|0 $std/typedarray/testArrayEvery<~lib/typedarray/Int64Array,i64>~anonymous|1 $std/typedarray/testArrayEvery<~lib/typedarray/Uint64Array,u64>~anonymous|0 $std/typedarray/testArrayEvery<~lib/typedarray/Uint64Array,u64>~anonymous|1 $std/typedarray/testArrayEvery<~lib/typedarray/Float32Array,f32>~anonymous|0 $std/typedarray/testArrayEvery<~lib/typedarray/Float32Array,f32>~anonymous|1 $std/typedarray/testArrayEvery<~lib/typedarray/Float64Array,f64>~anonymous|0 $std/typedarray/testArrayEvery<~lib/typedarray/Float64Array,f64>~anonymous|1 $std/typedarray/testArrayForEach<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testArrayForEach<~lib/typedarray/Uint8Array,u8>~anonymous|0 $std/typedarray/testArrayForEach<~lib/typedarray/Uint8ClampedArray,u8>~anonymous|0 $std/typedarray/testArrayForEach<~lib/typedarray/Int16Array,i16>~anonymous|0 $std/typedarray/testArrayForEach<~lib/typedarray/Uint16Array,u16>~anonymous|0 $std/typedarray/testArrayForEach<~lib/typedarray/Int32Array,i32>~anonymous|0 $std/typedarray/testArrayForEach<~lib/typedarray/Uint32Array,u32>~anonymous|0 $std/typedarray/testArrayForEach<~lib/typedarray/Int64Array,i64>~anonymous|0 $std/typedarray/testArrayForEach<~lib/typedarray/Uint64Array,u64>~anonymous|0 $std/typedarray/testArrayForEach<~lib/typedarray/Float32Array,f32>~anonymous|0 $std/typedarray/testArrayForEach<~lib/typedarray/Float64Array,f64>~anonymous|0) + (global $~lib/typedarray/Int8Array.BYTES_PER_ELEMENT i32 (i32.const 1)) + (global $~lib/typedarray/Uint8Array.BYTES_PER_ELEMENT i32 (i32.const 1)) + (global $~lib/typedarray/Uint8ClampedArray.BYTES_PER_ELEMENT i32 (i32.const 1)) + (global $~lib/typedarray/Int16Array.BYTES_PER_ELEMENT i32 (i32.const 2)) + (global $~lib/typedarray/Uint16Array.BYTES_PER_ELEMENT i32 (i32.const 2)) + (global $~lib/typedarray/Int32Array.BYTES_PER_ELEMENT i32 (i32.const 4)) + (global $~lib/typedarray/Uint32Array.BYTES_PER_ELEMENT i32 (i32.const 4)) + (global $~lib/typedarray/Int64Array.BYTES_PER_ELEMENT i32 (i32.const 8)) + (global $~lib/typedarray/Uint64Array.BYTES_PER_ELEMENT i32 (i32.const 8)) + (global $~lib/typedarray/Float32Array.BYTES_PER_ELEMENT i32 (i32.const 4)) + (global $~lib/typedarray/Float64Array.BYTES_PER_ELEMENT i32 (i32.const 8)) + (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) (global $std/typedarray/arr (mut i32) (i32.const 0)) (global $std/typedarray/af64 (mut i32) (i32.const 0)) (global $~lib/argc (mut i32) (i32.const 0)) (global $std/typedarray/clampedArr (mut i32) (i32.const 0)) (global $std/typedarray/arr8 (mut i32) (i32.const 0)) + (global $~lib/builtins/i32.MAX_VALUE i32 (i32.const 2147483647)) (global $std/typedarray/sub8 (mut i32) (i32.const 0)) (global $std/typedarray/arr32 (mut i32) (i32.const 0)) (global $std/typedarray/sub32 (mut i32) (i32.const 0)) + (global $std/typedarray/MAX_F64LENGTH i32 (i32.const 134217726)) (global $std/typedarray/multisubarr (mut i32) (i32.const 0)) (global $std/typedarray/multisubarr1 (mut i32) (i32.const 0)) (global $std/typedarray/multisubarr2 (mut i32) (i32.const 0)) (global $std/typedarray/multisubarr3 (mut i32) (i32.const 0)) (global $std/typedarray/forEachCallCount (mut i32) (i32.const 0)) (global $std/typedarray/forEachSelf (mut i32) (i32.const 0)) - (global $std/typedarray/forEachValues (mut i32) (i32.const 872)) - (global $std/typedarray/testArrayReverseValues (mut i32) (i32.const 1240)) - (global $~lib/runtime/ROOT (mut i32) (i32.const 0)) + (global $std/typedarray/forEachValues (mut i32) (i32.const 1080)) + (global $std/typedarray/testArrayReverseValues (mut i32) (i32.const 1448)) + (global $~lib/started (mut i32) (i32.const 0)) + (global $~lib/rt/purerc/CUR (mut i32) (i32.const 0)) + (global $~lib/rt/purerc/END (mut i32) (i32.const 0)) + (global $~lib/rt/purerc/ROOTS (mut i32) (i32.const 0)) + (global $~lib/builtins/RTTI_BASE i32 (i32.const 1712)) + (global $~lib/builtins/HEAP_BASE i32 (i32.const 1952)) (export "memory" (memory $0)) - (export "$.instanceof" (func $~lib/runtime/runtime.instanceof)) - (export "$.flags" (func $~lib/runtime/runtime.flags)) - (export "$.newObject" (func $~lib/runtime/runtime.newObject)) - (export "$.newString" (func $~lib/runtime/runtime.newString)) - (export "$.newArrayBuffer" (func $~lib/runtime/runtime.newArrayBuffer)) - (export "$.newArray" (func $~lib/runtime/runtime.newArray)) - (export "$.retain" (func $~lib/runtime/runtime.retain)) - (export "$.release" (func $~lib/runtime/runtime.retain)) - (export "$.collect" (func $~lib/runtime/runtime.collect)) - (start $start) - (func $~lib/allocator/arena/__mem_allocate (; 1 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - (local $1 i32) + (export "main" (func $std/typedarray/main)) + (func $~lib/rt/tlsf/removeBlock (; 4 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) - local.get $0 - i32.const 1073741824 - i32.gt_u - if - unreachable - end - global.get $~lib/allocator/arena/offset - local.tee $1 - local.get $0 - i32.const 1 - local.get $0 - i32.const 1 - i32.gt_u - select - i32.add - i32.const 7 - i32.add - i32.const -8 - i32.and - local.tee $0 - current_memory - local.tee $2 - i32.const 16 - i32.shl - i32.gt_u - if - local.get $2 - local.get $0 - local.get $1 - i32.sub - i32.const 65535 - i32.add - i32.const -65536 - i32.and - i32.const 16 - i32.shr_u - local.tee $3 - local.get $2 - local.get $3 - i32.gt_s - select - grow_memory - i32.const 0 - i32.lt_s - if - local.get $3 - grow_memory - i32.const 0 - i32.lt_s - if - unreachable - end - end - end - local.get $0 - global.set $~lib/allocator/arena/offset + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) + (local $10 i32) + (local $11 i32) local.get $1 - ) - (func $~lib/util/runtime/allocate (; 2 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - (local $1 i32) - i32.const 1 - i32.const 32 - local.get $0 - i32.const 15 - i32.add - i32.clz - i32.sub - i32.shl - call $~lib/allocator/arena/__mem_allocate - local.tee $1 - i32.const -1520547049 - i32.store - local.get $1 - local.get $0 - i32.store offset=4 - local.get $1 - i32.const 0 - i32.store offset=8 - local.get $1 - i32.const 0 - i32.store offset=12 - local.get $1 - i32.const 16 - i32.add - ) - (func $~lib/memory/memory.fill (; 3 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i64) - block $~lib/util/memory/memset|inlined.0 - local.get $2 - i32.eqz - br_if $~lib/util/memory/memset|inlined.0 - local.get $0 - local.get $1 - i32.store8 - local.get $0 - local.get $2 - i32.add - i32.const 1 - i32.sub - local.get $1 - i32.store8 - local.get $2 - i32.const 2 - i32.le_u - br_if $~lib/util/memory/memset|inlined.0 - local.get $0 - i32.const 1 - i32.add - local.get $1 - i32.store8 - local.get $0 - i32.const 2 - i32.add - local.get $1 - i32.store8 - local.get $0 - local.get $2 - i32.add - local.tee $3 - i32.const 2 - i32.sub - local.get $1 - i32.store8 - local.get $3 - i32.const 3 - i32.sub - local.get $1 - i32.store8 - local.get $2 - i32.const 6 - i32.le_u - br_if $~lib/util/memory/memset|inlined.0 - local.get $0 - i32.const 3 - i32.add - local.get $1 - i32.store8 - local.get $0 - local.get $2 - i32.add - i32.const 4 - i32.sub - local.get $1 - i32.store8 - local.get $2 - i32.const 8 - i32.le_u - br_if $~lib/util/memory/memset|inlined.0 - local.get $2 - i32.const 0 - local.get $0 - i32.sub - i32.const 3 - i32.and - local.tee $2 - i32.sub - local.set $3 - local.get $0 - local.get $2 - i32.add - local.tee $0 - local.get $1 - i32.const 255 - i32.and - i32.const 16843009 - i32.mul - local.tee $1 - i32.store - local.get $3 - i32.const -4 - i32.and - local.tee $2 - local.get $0 - i32.add - i32.const 4 - i32.sub - local.get $1 - i32.store - local.get $2 - i32.const 8 - i32.le_u - br_if $~lib/util/memory/memset|inlined.0 - local.get $0 - i32.const 4 - i32.add - local.get $1 - i32.store - local.get $0 - i32.const 8 - i32.add - local.get $1 - i32.store - local.get $0 - local.get $2 - i32.add - local.tee $3 - i32.const 12 - i32.sub - local.get $1 - i32.store - local.get $3 - i32.const 8 - i32.sub - local.get $1 - i32.store - local.get $2 - i32.const 24 - i32.le_u - br_if $~lib/util/memory/memset|inlined.0 - local.get $0 - i32.const 12 - i32.add - local.get $1 - i32.store - local.get $0 - i32.const 16 - i32.add - local.get $1 - i32.store - local.get $0 - i32.const 20 - i32.add - local.get $1 - i32.store - local.get $0 - i32.const 24 - i32.add - local.get $1 - i32.store - local.get $0 - local.get $2 - i32.add - local.tee $3 - i32.const 28 - i32.sub - local.get $1 - i32.store - local.get $3 - i32.const 24 - i32.sub - local.get $1 - i32.store - local.get $3 - i32.const 20 - i32.sub - local.get $1 - i32.store - local.get $3 - i32.const 16 - i32.sub - local.get $1 - i32.store - local.get $0 - i32.const 4 - i32.and - i32.const 24 - i32.add - local.tee $3 - local.get $0 - i32.add - local.set $0 - local.get $2 - local.get $3 - i32.sub - local.set $2 - local.get $1 - i64.extend_i32_u - local.tee $4 - local.get $4 - i64.const 32 - i64.shl - i64.or - local.set $4 - loop $continue|0 - local.get $2 - i32.const 32 - i32.ge_u - if - local.get $0 - local.get $4 - i64.store - local.get $0 - i32.const 8 - i32.add - local.get $4 - i64.store - local.get $0 - i32.const 16 - i32.add - local.get $4 - i64.store - local.get $0 - i32.const 24 - i32.add - local.get $4 - i64.store - local.get $2 - i32.const 32 - i32.sub - local.set $2 - local.get $0 - i32.const 32 - i32.add - local.set $0 - br $continue|0 - end - end - end - ) - (func $~lib/util/runtime/register (; 4 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - local.get $0 - i32.const 1696 - i32.le_u - if - i32.const 0 - i32.const 136 - i32.const 129 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 16 - i32.sub - local.tee $2 i32.load - i32.const -1520547049 - i32.ne + local.set $2 + local.get $2 + i32.const 1 + i32.and + i32.eqz if i32.const 0 - i32.const 136 - i32.const 131 - i32.const 4 + i32.const 184 + i32.const 275 + i32.const 13 call $~lib/builtins/abort unreachable end local.get $2 - local.get $1 - i32.store - local.get $0 - ) - (func $~lib/arraybuffer/ArrayBuffer#constructor (; 5 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - (local $1 i32) - local.get $0 - i32.const 1073741808 - i32.gt_u + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.set $3 + local.get $3 + i32.const 16 + i32.ge_u + if (result i32) + local.get $3 + i32.const 1073741808 + i32.lt_u + else + i32.const 0 + end + i32.eqz if i32.const 0 - i32.const 80 - i32.const 54 - i32.const 43 + i32.const 184 + i32.const 277 + i32.const 13 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const 256 + i32.lt_u + if + i32.const 0 + local.set $4 + local.get $3 + i32.const 4 + i32.shr_u + local.set $5 + else + i32.const 31 + local.get $3 + i32.clz + i32.sub + local.set $4 + local.get $3 + local.get $4 + i32.const 4 + i32.sub + i32.shr_u + i32.const 1 + i32.const 4 + i32.shl + i32.xor + local.set $5 + local.get $4 + i32.const 8 + i32.const 1 + i32.sub + i32.sub + local.set $4 + end + local.get $4 + i32.const 23 + i32.lt_u + if (result i32) + local.get $5 + i32.const 16 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 184 + i32.const 290 + i32.const 13 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.load offset=16 + local.set $6 + local.get $1 + i32.load offset=20 + local.set $7 + local.get $6 + if + local.get $6 + local.get $7 + i32.store offset=20 + end + local.get $7 + if + local.get $7 + local.get $6 + i32.store offset=16 + end + local.get $1 + block $~lib/rt/tlsf/GETHEAD|inlined.0 (result i32) + local.get $0 + local.set $10 + local.get $4 + local.set $9 + local.get $5 + local.set $8 + local.get $10 + local.get $9 + i32.const 4 + i32.shl + local.get $8 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + end + i32.eq + if + block $~lib/rt/tlsf/SETHEAD|inlined.1 + local.get $0 + local.set $11 + local.get $4 + local.set $10 + local.get $5 + local.set $9 + local.get $7 + local.set $8 + local.get $11 + local.get $10 + i32.const 4 + i32.shl + local.get $9 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $8 + i32.store offset=96 + end + local.get $7 + i32.eqz + if + block $~lib/rt/tlsf/GETSL|inlined.0 (result i32) + local.get $0 + local.set $9 + local.get $4 + local.set $8 + local.get $9 + local.get $8 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + end + local.set $8 + block $~lib/rt/tlsf/SETSL|inlined.1 + local.get $0 + local.set $11 + local.get $4 + local.set $10 + local.get $8 + i32.const 1 + local.get $5 + i32.shl + i32.const -1 + i32.xor + i32.and + local.tee $8 + local.set $9 + local.get $11 + local.get $10 + i32.const 2 + i32.shl + i32.add + local.get $9 + i32.store offset=4 + end + local.get $8 + i32.eqz + if + local.get $0 + local.get $0 + i32.load + i32.const 1 + local.get $4 + i32.shl + i32.const -1 + i32.xor + i32.and + i32.store + end + end + end + ) + (func $~lib/rt/tlsf/insertBlock (; 5 ;) (type $FUNCSIG$vii) (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 $9 i32) + (local $10 i32) + (local $11 i32) + (local $12 i32) + (local $13 i32) + local.get $1 + i32.eqz + if + i32.const 0 + i32.const 184 + i32.const 203 + i32.const 13 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.load + local.set $2 + local.get $2 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 184 + i32.const 205 + i32.const 13 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETRIGHT|inlined.0 (result i32) + local.get $1 + local.set $3 + local.get $3 + i32.const 16 + i32.add + local.get $3 + i32.load + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + end + local.set $4 + local.get $4 + i32.load + local.set $5 + local.get $5 + i32.const 1 + i32.and + if + local.get $2 + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.const 16 + i32.add + local.get $5 + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + local.set $3 + local.get $3 + i32.const 1073741808 + i32.lt_u + if + local.get $0 + local.get $4 + call $~lib/rt/tlsf/removeBlock + local.get $1 + local.get $2 + i32.const 3 + i32.and + local.get $3 + i32.or + local.tee $2 + i32.store + block $~lib/rt/tlsf/GETRIGHT|inlined.1 (result i32) + local.get $1 + local.set $6 + local.get $6 + i32.const 16 + i32.add + local.get $6 + i32.load + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + end + local.set $4 + local.get $4 + i32.load + local.set $5 + end + end + local.get $2 + i32.const 2 + i32.and + if + block $~lib/rt/tlsf/GETFREELEFT|inlined.0 (result i32) + local.get $1 + local.set $3 + local.get $3 + i32.const 4 + i32.sub + i32.load + end + local.set $3 + local.get $3 + i32.load + local.set $6 + local.get $6 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 184 + i32.const 226 + i32.const 15 + call $~lib/builtins/abort + unreachable + end + local.get $6 + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.const 16 + i32.add + local.get $2 + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + local.set $7 + local.get $7 + i32.const 1073741808 + i32.lt_u + if + local.get $0 + local.get $3 + call $~lib/rt/tlsf/removeBlock + local.get $3 + local.get $6 + i32.const 3 + i32.and + local.get $7 + i32.or + local.tee $2 + i32.store + local.get $3 + local.set $1 + end + end + local.get $4 + local.get $5 + i32.const 2 + i32.or + i32.store + local.get $2 + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.set $8 + local.get $8 + i32.const 16 + i32.ge_u + if (result i32) + local.get $8 + i32.const 1073741808 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 184 + i32.const 241 + i32.const 13 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 16 + i32.add + local.get $8 + i32.add + local.get $4 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 184 + i32.const 242 + i32.const 13 + call $~lib/builtins/abort + unreachable + end + local.get $4 + i32.const 4 + i32.sub + local.get $1 + i32.store + local.get $8 + i32.const 256 + i32.lt_u + if + i32.const 0 + local.set $9 + local.get $8 + i32.const 4 + i32.shr_u + local.set $10 + else + i32.const 31 + local.get $8 + i32.clz + i32.sub + local.set $9 + local.get $8 + local.get $9 + i32.const 4 + i32.sub + i32.shr_u + i32.const 1 + i32.const 4 + i32.shl + i32.xor + local.set $10 + local.get $9 + i32.const 8 + i32.const 1 + i32.sub + i32.sub + local.set $9 + end + local.get $9 + i32.const 23 + i32.lt_u + if (result i32) + local.get $10 + i32.const 16 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 184 + i32.const 258 + i32.const 13 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETHEAD|inlined.1 (result i32) + local.get $0 + local.set $3 + local.get $9 + local.set $6 + local.get $10 + local.set $7 + local.get $3 + local.get $6 + i32.const 4 + i32.shl + local.get $7 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + end + local.set $11 + local.get $1 + i32.const 0 + i32.store offset=16 + local.get $1 + local.get $11 + i32.store offset=20 + local.get $11 + if + local.get $11 + local.get $1 + i32.store offset=16 + end + block $~lib/rt/tlsf/SETHEAD|inlined.2 + local.get $0 + local.set $12 + local.get $9 + local.set $3 + local.get $10 + local.set $6 + local.get $1 + local.set $7 + local.get $12 + local.get $3 + i32.const 4 + i32.shl + local.get $6 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $7 + i32.store offset=96 + end + local.get $0 + local.get $0 + i32.load + i32.const 1 + local.get $9 + i32.shl + i32.or + i32.store + block $~lib/rt/tlsf/SETSL|inlined.2 + local.get $0 + local.set $3 + local.get $9 + local.set $6 + block $~lib/rt/tlsf/GETSL|inlined.1 (result i32) + local.get $0 + local.set $13 + local.get $9 + local.set $12 + local.get $13 + local.get $12 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + end + i32.const 1 + local.get $10 + i32.shl + i32.or + local.set $7 + local.get $3 + local.get $6 + i32.const 2 + i32.shl + i32.add + local.get $7 + i32.store offset=4 + end + ) + (func $~lib/rt/tlsf/addMemory (; 6 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) + local.get $1 + local.get $2 + i32.le_u + if (result i32) + local.get $1 + i32.const 15 + i32.and + i32.eqz + else + i32.const 0 + end + if (result i32) + local.get $2 + i32.const 15 + i32.and + i32.eqz + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 184 + i32.const 384 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETTAIL|inlined.0 (result i32) + local.get $0 + local.set $3 + local.get $3 + i32.load offset=1568 + end + local.set $4 + i32.const 0 + local.set $5 + local.get $4 + if + local.get $1 + local.get $4 + i32.const 16 + i32.add + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 184 + i32.const 394 + i32.const 15 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 16 + i32.sub + local.get $4 + i32.eq + if + local.get $1 + i32.const 16 + i32.sub + local.set $1 + local.get $4 + i32.load + local.set $5 + else + nop + end + else + local.get $1 + local.get $0 + i32.const 1572 + i32.add + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 184 + i32.const 406 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + end + local.get $2 + local.get $1 + i32.sub + local.set $6 + local.get $6 + i32.const 48 + i32.lt_u + if + i32.const 0 + return + end + local.get $6 + i32.const 2 + i32.const 16 + i32.mul + i32.sub + local.set $7 + local.get $1 + local.set $8 + local.get $8 + local.get $7 + i32.const 1 + i32.or + local.get $5 + i32.const 2 + i32.and + i32.or + i32.store + local.get $8 + i32.const 0 + i32.store offset=16 + local.get $8 + i32.const 0 + i32.store offset=20 + local.get $1 + local.get $6 + i32.add + i32.const 16 + i32.sub + local.set $4 + local.get $4 + i32.const 0 + i32.const 2 + i32.or + i32.store + block $~lib/rt/tlsf/SETTAIL|inlined.1 + local.get $0 + local.set $9 + local.get $4 + local.set $3 + local.get $9 + local.get $3 + i32.store offset=1568 + end + local.get $0 + local.get $8 + call $~lib/rt/tlsf/insertBlock + i32.const 1 + ) + (func $~lib/rt/tlsf/initializeRoot (; 7 ;) (type $FUNCSIG$v) + (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) + (local $9 i32) + global.get $~lib/builtins/HEAP_BASE + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + local.set $0 + current_memory + local.set $1 + local.get $0 + i32.const 1572 + i32.add + i32.const 65535 + i32.add + i32.const 65535 + i32.const -1 + i32.xor + i32.and + i32.const 16 + i32.shr_u + local.set $2 + local.get $2 + local.get $1 + i32.gt_s + if (result i32) + local.get $2 + local.get $1 + i32.sub + grow_memory + i32.const 0 + i32.lt_s + else + i32.const 0 + end + if + unreachable + end + local.get $0 + local.set $3 + local.get $3 + i32.const 0 + i32.store + block $~lib/rt/tlsf/SETTAIL|inlined.0 + local.get $3 + local.set $5 + i32.const 0 + local.set $4 + local.get $5 + local.get $4 + i32.store offset=1568 + end + block $break|0 + i32.const 0 + local.set $4 + loop $repeat|0 + local.get $4 + i32.const 23 + i32.lt_u + i32.eqz + br_if $break|0 + block $~lib/rt/tlsf/SETSL|inlined.0 + local.get $3 + local.set $7 + local.get $4 + local.set $6 + i32.const 0 + local.set $5 + local.get $7 + local.get $6 + i32.const 2 + i32.shl + i32.add + local.get $5 + i32.store offset=4 + end + block $break|1 + i32.const 0 + local.set $5 + loop $repeat|1 + local.get $5 + i32.const 16 + i32.lt_u + i32.eqz + br_if $break|1 + block $~lib/rt/tlsf/SETHEAD|inlined.0 + local.get $3 + local.set $9 + local.get $4 + local.set $8 + local.get $5 + local.set $7 + i32.const 0 + local.set $6 + local.get $9 + local.get $8 + i32.const 4 + i32.shl + local.get $7 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $6 + i32.store offset=96 + end + local.get $5 + i32.const 1 + i32.add + local.set $5 + br $repeat|1 + unreachable + end + unreachable + end + local.get $4 + i32.const 1 + i32.add + local.set $4 + br $repeat|0 + unreachable + end + unreachable + end + local.get $3 + local.get $0 + i32.const 1572 + i32.add + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + current_memory + i32.const 16 + i32.shl + call $~lib/rt/tlsf/addMemory + drop + local.get $3 + global.set $~lib/rt/tlsf/ROOT + ) + (func $~lib/rt/tlsf/prepareSize (; 8 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + local.get $0 + i32.const 1073741808 + i32.ge_u + if + i32.const 232 + i32.const 184 + i32.const 446 + i32.const 29 call $~lib/builtins/abort unreachable end local.get $0 - call $~lib/util/runtime/allocate - local.tee $1 - i32.const 0 - local.get $0 - call $~lib/memory/memory.fill - local.get $1 i32.const 15 - call $~lib/util/runtime/register + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + local.tee $1 + i32.const 16 + local.tee $2 + local.get $1 + local.get $2 + i32.gt_u + select ) - (func $~lib/arraybuffer/ArrayBufferView#constructor (; 6 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/rt/tlsf/searchBlock (; 9 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result 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 $1 + i32.const 256 + i32.lt_u + if + i32.const 0 + local.set $2 + local.get $1 + i32.const 4 + i32.shr_u + local.set $3 + else + local.get $1 + i32.const 536870904 + i32.lt_u + if (result i32) + local.get $1 + i32.const 1 + i32.const 27 + local.get $1 + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + else + local.get $1 + end + local.set $4 + i32.const 31 + local.get $4 + i32.clz + i32.sub + local.set $2 + local.get $4 + local.get $2 + i32.const 4 + i32.sub + i32.shr_u + i32.const 1 + i32.const 4 + i32.shl + i32.xor + local.set $3 + local.get $2 + i32.const 8 + i32.const 1 + i32.sub + i32.sub + local.set $2 + end + local.get $2 + i32.const 23 + i32.lt_u + if (result i32) + local.get $3 + i32.const 16 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 184 + i32.const 336 + i32.const 13 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETSL|inlined.2 (result i32) + local.get $0 + local.set $5 + local.get $2 + local.set $4 + local.get $5 + local.get $4 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + end + i32.const 0 + i32.const -1 + i32.xor + local.get $3 + i32.shl + i32.and + local.set $6 + local.get $6 + i32.eqz + if + local.get $0 + i32.load + i32.const 0 + i32.const -1 + i32.xor + local.get $2 + i32.const 1 + i32.add + i32.shl + i32.and + local.set $4 + local.get $4 + i32.eqz + if + i32.const 0 + local.set $7 + else + local.get $4 + i32.ctz + local.set $2 + block $~lib/rt/tlsf/GETSL|inlined.3 (result i32) + local.get $0 + local.set $8 + local.get $2 + local.set $5 + local.get $8 + local.get $5 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + end + local.set $6 + local.get $6 + i32.eqz + if + i32.const 0 + i32.const 184 + i32.const 349 + i32.const 17 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETHEAD|inlined.2 (result i32) + local.get $0 + local.set $9 + local.get $2 + local.set $8 + local.get $6 + i32.ctz + local.set $5 + local.get $9 + local.get $8 + i32.const 4 + i32.shl + local.get $5 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + end + local.set $7 + end + else + block $~lib/rt/tlsf/GETHEAD|inlined.3 (result i32) + local.get $0 + local.set $8 + local.get $2 + local.set $5 + local.get $6 + i32.ctz + local.set $4 + local.get $8 + local.get $5 + i32.const 4 + i32.shl + local.get $4 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + end + local.set $7 + end + local.get $7 + ) + (func $~lib/rt/tlsf/growMemory (; 10 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + current_memory + local.set $2 + local.get $1 + i32.const 65535 + i32.add + i32.const 65535 + i32.const -1 + i32.xor + i32.and + i32.const 16 + i32.shr_u + local.set $3 + local.get $2 + local.tee $4 + local.get $3 + local.tee $5 + local.get $4 + local.get $5 + i32.gt_s + select + local.set $6 + local.get $6 + grow_memory + i32.const 0 + i32.lt_s + if + local.get $3 + grow_memory + i32.const 0 + i32.lt_s + if + unreachable + end + end + current_memory + local.set $7 + local.get $0 + local.get $2 + i32.const 16 + i32.shl + local.get $7 + i32.const 16 + i32.shl + call $~lib/rt/tlsf/addMemory + drop + ) + (func $~lib/rt/tlsf/prepareBlock (; 11 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $1 + i32.load + local.set $3 + local.get $2 + i32.const 15 + i32.and + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 184 + i32.const 363 + i32.const 13 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.get $2 + i32.sub + local.set $4 + local.get $4 + i32.const 32 + i32.ge_u + if + local.get $1 + local.get $2 + local.get $3 + i32.const 2 + i32.and + i32.or + i32.store + local.get $1 + i32.const 16 + i32.add + local.get $2 + i32.add + local.set $5 + local.get $5 + local.get $4 + i32.const 16 + i32.sub + i32.const 1 + i32.or + i32.store + local.get $0 + local.get $5 + call $~lib/rt/tlsf/insertBlock + else + local.get $1 + local.get $3 + i32.const 1 + i32.const -1 + i32.xor + i32.and + i32.store + block $~lib/rt/tlsf/GETRIGHT|inlined.3 (result i32) + local.get $1 + local.set $5 + local.get $5 + i32.const 16 + i32.add + local.get $5 + i32.load + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + end + block $~lib/rt/tlsf/GETRIGHT|inlined.2 (result i32) + local.get $1 + local.set $5 + local.get $5 + i32.const 16 + i32.add + local.get $5 + i32.load + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + end + i32.load + i32.const 2 + i32.const -1 + i32.xor + i32.and + i32.store + end + ) + (func $~lib/rt/tlsf/allocateBlock (; 12 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + local.get $1 + call $~lib/rt/tlsf/prepareSize + local.set $2 + local.get $0 + local.get $2 + call $~lib/rt/tlsf/searchBlock + local.set $3 + local.get $3 + i32.eqz + if + local.get $0 + local.get $2 + call $~lib/rt/tlsf/growMemory + local.get $0 + local.get $2 + call $~lib/rt/tlsf/searchBlock + local.set $3 + local.get $3 + i32.eqz + if + i32.const 0 + i32.const 184 + i32.const 476 + i32.const 15 + call $~lib/builtins/abort + unreachable + end + end + local.get $3 + i32.load + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.get $2 + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 184 + i32.const 478 + i32.const 13 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const 0 + i32.store offset=4 + local.get $3 + local.get $1 + i32.store offset=12 + local.get $0 + local.get $3 + call $~lib/rt/tlsf/removeBlock + local.get $0 + local.get $3 + local.get $2 + call $~lib/rt/tlsf/prepareBlock + local.get $3 + ) + (func $~lib/rt/tlsf/__alloc (; 13 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + global.get $~lib/rt/tlsf/ROOT + local.set $2 + local.get $2 + i32.eqz + if + call $~lib/rt/tlsf/initializeRoot + global.get $~lib/rt/tlsf/ROOT + local.set $2 + end + local.get $2 + local.get $0 + call $~lib/rt/tlsf/allocateBlock + local.set $3 + local.get $3 + local.get $1 + i32.store offset=8 + local.get $3 + i32.const 16 + i32.add + ) + (func $~lib/arraybuffer/ArrayBufferView#constructor (; 14 ;) (type $FUNCSIG$iiii) (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 0 i32.const 80 - i32.const 12 - i32.const 57 + i32.const 128 + i32.const 14 + i32.const 56 call $~lib/builtins/abort unreachable end local.get $1 local.get $2 i32.shl - local.tee $2 - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $1 - local.get $0 - i32.eqz - if - i32.const 12 - call $~lib/util/runtime/allocate - i32.const 14 - call $~lib/util/runtime/register - 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.load - drop - local.get $0 - local.get $1 - i32.store - local.get $0 - local.get $1 - i32.store offset=4 - local.get $0 - local.get $2 - i32.store offset=8 - local.get $0 - ) - (func $~lib/typedarray/Int8Array#constructor (; 7 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - i32.const 12 - call $~lib/util/runtime/allocate - i32.const 17 - call $~lib/util/runtime/register - local.get $0 - i32.const 0 - call $~lib/arraybuffer/ArrayBufferView#constructor - ) - (func $~lib/typedarray/Uint8Array#constructor (; 8 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - i32.const 12 - call $~lib/util/runtime/allocate - i32.const 18 - call $~lib/util/runtime/register - local.get $0 - i32.const 0 - call $~lib/arraybuffer/ArrayBufferView#constructor - ) - (func $~lib/typedarray/Uint8ClampedArray#constructor (; 9 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - i32.const 12 - call $~lib/util/runtime/allocate - i32.const 19 - call $~lib/util/runtime/register - local.get $0 - i32.const 0 - call $~lib/arraybuffer/ArrayBufferView#constructor - ) - (func $~lib/typedarray/Int16Array#constructor (; 10 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - i32.const 12 - call $~lib/util/runtime/allocate - i32.const 20 - call $~lib/util/runtime/register - local.get $0 - i32.const 1 - call $~lib/arraybuffer/ArrayBufferView#constructor - ) - (func $~lib/typedarray/Uint16Array#constructor (; 11 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - i32.const 12 - call $~lib/util/runtime/allocate - i32.const 21 - call $~lib/util/runtime/register - local.get $0 - i32.const 1 - call $~lib/arraybuffer/ArrayBufferView#constructor - ) - (func $~lib/typedarray/Int32Array#constructor (; 12 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - i32.const 12 - call $~lib/util/runtime/allocate - i32.const 22 - call $~lib/util/runtime/register - local.get $0 - i32.const 2 - call $~lib/arraybuffer/ArrayBufferView#constructor - ) - (func $~lib/typedarray/Uint32Array#constructor (; 13 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - i32.const 12 - call $~lib/util/runtime/allocate - i32.const 23 - call $~lib/util/runtime/register - local.get $0 - i32.const 2 - call $~lib/arraybuffer/ArrayBufferView#constructor - ) - (func $~lib/typedarray/Int64Array#constructor (; 14 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - i32.const 12 - call $~lib/util/runtime/allocate - i32.const 24 - call $~lib/util/runtime/register - local.get $0 - i32.const 3 - call $~lib/arraybuffer/ArrayBufferView#constructor - ) - (func $~lib/typedarray/Uint64Array#constructor (; 15 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - i32.const 12 - call $~lib/util/runtime/allocate - i32.const 25 - call $~lib/util/runtime/register - local.get $0 - i32.const 3 - call $~lib/arraybuffer/ArrayBufferView#constructor - ) - (func $~lib/typedarray/Float32Array#constructor (; 16 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - i32.const 12 - call $~lib/util/runtime/allocate - i32.const 26 - call $~lib/util/runtime/register - local.get $0 - i32.const 2 - call $~lib/arraybuffer/ArrayBufferView#constructor - ) - (func $~lib/typedarray/Float64Array#constructor (; 17 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - i32.const 12 - call $~lib/util/runtime/allocate - i32.const 27 - call $~lib/util/runtime/register - local.get $0 - i32.const 3 - call $~lib/arraybuffer/ArrayBufferView#constructor - ) - (func $std/typedarray/testInstantiate (; 18 ;) (type $FUNCSIG$vi) (param $0 i32) - (local $1 i32) - local.get $0 - call $~lib/typedarray/Int8Array#constructor local.tee $1 - i32.load offset=4 + i32.const 15 + call $~lib/rt/tlsf/__alloc + local.set $3 + block (result i32) + local.get $0 + i32.eqz + if + i32.const 12 + i32.const 14 + call $~lib/rt/tlsf/__alloc + call $~lib/rt/purerc/__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 + end + local.tee $4 + local.get $3 + local.get $4 + i32.load + call $~lib/rt/purerc/__retainRelease + 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/Int8Array#constructor (; 15 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + local.get $0 + if (result i32) + local.get $0 + else + i32.const 12 + i32.const 17 + call $~lib/rt/tlsf/__alloc + call $~lib/rt/purerc/__retain + end + local.get $1 + i32.const 0 + call $~lib/arraybuffer/ArrayBufferView#constructor + local.tee $2 + local.set $0 + local.get $0 + ) + (func $~lib/arraybuffer/ArrayBufferView#get:byteOffset (; 16 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + local.get $0 + i32.load offset=4 + local.get $0 i32.load i32.sub + ) + (func $~lib/arraybuffer/ArrayBufferView#get:byteLength (; 17 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + local.get $0 + i32.load offset=8 + ) + (func $~lib/typedarray/Int8Array#get:length (; 18 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + local.get $0 + call $~lib/arraybuffer/ArrayBufferView#get:byteLength + ) + (func $~lib/typedarray/Uint8Array#constructor (; 19 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + local.get $0 + if (result i32) + local.get $0 + else + i32.const 12 + i32.const 18 + call $~lib/rt/tlsf/__alloc + call $~lib/rt/purerc/__retain + end + local.get $1 + i32.const 0 + call $~lib/arraybuffer/ArrayBufferView#constructor + local.tee $2 + local.set $0 + local.get $0 + ) + (func $~lib/typedarray/Uint8Array#get:length (; 20 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + local.get $0 + call $~lib/arraybuffer/ArrayBufferView#get:byteLength + ) + (func $~lib/typedarray/Uint8ClampedArray#constructor (; 21 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + local.get $0 + if (result i32) + local.get $0 + else + i32.const 12 + i32.const 19 + call $~lib/rt/tlsf/__alloc + call $~lib/rt/purerc/__retain + end + local.get $1 + i32.const 0 + call $~lib/arraybuffer/ArrayBufferView#constructor + local.tee $2 + local.set $0 + local.get $0 + ) + (func $~lib/typedarray/Uint8ClampedArray#get:length (; 22 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + local.get $0 + call $~lib/arraybuffer/ArrayBufferView#get:byteLength + ) + (func $~lib/typedarray/Int16Array#constructor (; 23 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + local.get $0 + if (result i32) + local.get $0 + else + i32.const 12 + i32.const 20 + call $~lib/rt/tlsf/__alloc + call $~lib/rt/purerc/__retain + end + local.get $1 + i32.const 1 + call $~lib/arraybuffer/ArrayBufferView#constructor + local.tee $2 + local.set $0 + local.get $0 + ) + (func $~lib/typedarray/Int16Array#get:length (; 24 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + local.get $0 + call $~lib/arraybuffer/ArrayBufferView#get:byteLength + i32.const 1 + i32.shr_u + ) + (func $~lib/typedarray/Uint16Array#constructor (; 25 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + local.get $0 + if (result i32) + local.get $0 + else + i32.const 12 + i32.const 21 + call $~lib/rt/tlsf/__alloc + call $~lib/rt/purerc/__retain + end + local.get $1 + i32.const 1 + call $~lib/arraybuffer/ArrayBufferView#constructor + local.tee $2 + local.set $0 + local.get $0 + ) + (func $~lib/typedarray/Uint16Array#get:length (; 26 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + local.get $0 + call $~lib/arraybuffer/ArrayBufferView#get:byteLength + i32.const 1 + i32.shr_u + ) + (func $~lib/typedarray/Int32Array#constructor (; 27 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + local.get $0 + if (result i32) + local.get $0 + else + i32.const 12 + i32.const 22 + call $~lib/rt/tlsf/__alloc + call $~lib/rt/purerc/__retain + end + local.get $1 + i32.const 2 + call $~lib/arraybuffer/ArrayBufferView#constructor + local.tee $2 + local.set $0 + local.get $0 + ) + (func $~lib/typedarray/Int32Array#get:length (; 28 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + local.get $0 + call $~lib/arraybuffer/ArrayBufferView#get:byteLength + i32.const 2 + i32.shr_u + ) + (func $~lib/typedarray/Uint32Array#constructor (; 29 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + local.get $0 + if (result i32) + local.get $0 + else + i32.const 12 + i32.const 23 + call $~lib/rt/tlsf/__alloc + call $~lib/rt/purerc/__retain + end + local.get $1 + i32.const 2 + call $~lib/arraybuffer/ArrayBufferView#constructor + local.tee $2 + local.set $0 + local.get $0 + ) + (func $~lib/typedarray/Uint32Array#get:length (; 30 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + local.get $0 + call $~lib/arraybuffer/ArrayBufferView#get:byteLength + i32.const 2 + i32.shr_u + ) + (func $~lib/typedarray/Int64Array#constructor (; 31 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + local.get $0 + if (result i32) + local.get $0 + else + i32.const 12 + i32.const 24 + call $~lib/rt/tlsf/__alloc + call $~lib/rt/purerc/__retain + end + local.get $1 + i32.const 3 + call $~lib/arraybuffer/ArrayBufferView#constructor + local.tee $2 + local.set $0 + local.get $0 + ) + (func $~lib/typedarray/Int64Array#get:length (; 32 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + local.get $0 + call $~lib/arraybuffer/ArrayBufferView#get:byteLength + i32.const 3 + i32.shr_u + ) + (func $~lib/typedarray/Uint64Array#constructor (; 33 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + local.get $0 + if (result i32) + local.get $0 + else + i32.const 12 + i32.const 25 + call $~lib/rt/tlsf/__alloc + call $~lib/rt/purerc/__retain + end + local.get $1 + i32.const 3 + call $~lib/arraybuffer/ArrayBufferView#constructor + local.tee $2 + local.set $0 + local.get $0 + ) + (func $~lib/typedarray/Uint64Array#get:length (; 34 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + local.get $0 + call $~lib/arraybuffer/ArrayBufferView#get:byteLength + i32.const 3 + i32.shr_u + ) + (func $~lib/typedarray/Float32Array#constructor (; 35 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + local.get $0 + if (result i32) + local.get $0 + else + i32.const 12 + i32.const 26 + call $~lib/rt/tlsf/__alloc + call $~lib/rt/purerc/__retain + end + local.get $1 + i32.const 2 + call $~lib/arraybuffer/ArrayBufferView#constructor + local.tee $2 + local.set $0 + local.get $0 + ) + (func $~lib/typedarray/Float32Array#get:length (; 36 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + local.get $0 + call $~lib/arraybuffer/ArrayBufferView#get:byteLength + i32.const 2 + i32.shr_u + ) + (func $~lib/typedarray/Float64Array#constructor (; 37 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + local.get $0 + if (result i32) + local.get $0 + else + i32.const 12 + i32.const 27 + call $~lib/rt/tlsf/__alloc + call $~lib/rt/purerc/__retain + end + local.get $1 + i32.const 3 + call $~lib/arraybuffer/ArrayBufferView#constructor + local.tee $2 + local.set $0 + local.get $0 + ) + (func $~lib/typedarray/Float64Array#get:length (; 38 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + local.get $0 + call $~lib/arraybuffer/ArrayBufferView#get:byteLength + i32.const 3 + i32.shr_u + ) + (func $std/typedarray/testInstantiate (; 39 ;) (type $FUNCSIG$vi) (param $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) + (local $9 i32) + (local $10 i32) + (local $11 i32) + i32.const 0 + local.get $0 + call $~lib/typedarray/Int8Array#constructor + local.set $1 + local.get $1 + call $~lib/arraybuffer/ArrayBufferView#get:byteOffset + i32.const 0 + i32.eq + i32.eqz if i32.const 0 i32.const 24 @@ -664,9 +1816,12 @@ unreachable end local.get $1 - i32.load offset=8 + call $~lib/arraybuffer/ArrayBufferView#get:byteLength local.get $0 - i32.ne + global.get $~lib/typedarray/Int8Array.BYTES_PER_ELEMENT + i32.mul + i32.eq + i32.eqz if i32.const 0 i32.const 24 @@ -676,9 +1831,10 @@ unreachable end local.get $1 - i32.load offset=8 + call $~lib/typedarray/Int8Array#get:length local.get $0 - i32.ne + i32.eq + i32.eqz if i32.const 0 i32.const 24 @@ -687,13 +1843,15 @@ call $~lib/builtins/abort unreachable end + i32.const 0 local.get $0 call $~lib/typedarray/Uint8Array#constructor - local.tee $1 - i32.load offset=4 - local.get $1 - i32.load - i32.sub + local.set $2 + local.get $2 + call $~lib/arraybuffer/ArrayBufferView#get:byteOffset + i32.const 0 + i32.eq + i32.eqz if i32.const 0 i32.const 24 @@ -702,10 +1860,13 @@ call $~lib/builtins/abort unreachable end - local.get $1 - i32.load offset=8 + local.get $2 + call $~lib/arraybuffer/ArrayBufferView#get:byteLength local.get $0 - i32.ne + global.get $~lib/typedarray/Uint8Array.BYTES_PER_ELEMENT + i32.mul + i32.eq + i32.eqz if i32.const 0 i32.const 24 @@ -714,10 +1875,11 @@ call $~lib/builtins/abort unreachable end - local.get $1 - i32.load offset=8 + local.get $2 + call $~lib/typedarray/Uint8Array#get:length local.get $0 - i32.ne + i32.eq + i32.eqz if i32.const 0 i32.const 24 @@ -726,13 +1888,15 @@ call $~lib/builtins/abort unreachable end + i32.const 0 local.get $0 call $~lib/typedarray/Uint8ClampedArray#constructor - local.tee $1 - i32.load offset=4 - local.get $1 - i32.load - i32.sub + local.set $3 + local.get $3 + call $~lib/arraybuffer/ArrayBufferView#get:byteOffset + i32.const 0 + i32.eq + i32.eqz if i32.const 0 i32.const 24 @@ -741,10 +1905,13 @@ call $~lib/builtins/abort unreachable end - local.get $1 - i32.load offset=8 + local.get $3 + call $~lib/arraybuffer/ArrayBufferView#get:byteLength local.get $0 - i32.ne + global.get $~lib/typedarray/Uint8Array.BYTES_PER_ELEMENT + i32.mul + i32.eq + i32.eqz if i32.const 0 i32.const 24 @@ -753,10 +1920,11 @@ call $~lib/builtins/abort unreachable end - local.get $1 - i32.load offset=8 + local.get $3 + call $~lib/typedarray/Uint8ClampedArray#get:length local.get $0 - i32.ne + i32.eq + i32.eqz if i32.const 0 i32.const 24 @@ -765,13 +1933,15 @@ call $~lib/builtins/abort unreachable end + i32.const 0 local.get $0 call $~lib/typedarray/Int16Array#constructor - local.tee $1 - i32.load offset=4 - local.get $1 - i32.load - i32.sub + local.set $4 + local.get $4 + call $~lib/arraybuffer/ArrayBufferView#get:byteOffset + i32.const 0 + i32.eq + i32.eqz if i32.const 0 i32.const 24 @@ -780,12 +1950,13 @@ call $~lib/builtins/abort unreachable end - local.get $1 - i32.load offset=8 + local.get $4 + call $~lib/arraybuffer/ArrayBufferView#get:byteLength local.get $0 - i32.const 1 - i32.shl - i32.ne + global.get $~lib/typedarray/Int16Array.BYTES_PER_ELEMENT + i32.mul + i32.eq + i32.eqz if i32.const 0 i32.const 24 @@ -794,12 +1965,11 @@ call $~lib/builtins/abort unreachable end - local.get $1 - i32.load offset=8 - i32.const 1 - i32.shr_u + local.get $4 + call $~lib/typedarray/Int16Array#get:length local.get $0 - i32.ne + i32.eq + i32.eqz if i32.const 0 i32.const 24 @@ -808,13 +1978,15 @@ call $~lib/builtins/abort unreachable end + i32.const 0 local.get $0 call $~lib/typedarray/Uint16Array#constructor - local.tee $1 - i32.load offset=4 - local.get $1 - i32.load - i32.sub + local.set $5 + local.get $5 + call $~lib/arraybuffer/ArrayBufferView#get:byteOffset + i32.const 0 + i32.eq + i32.eqz if i32.const 0 i32.const 24 @@ -823,12 +1995,13 @@ call $~lib/builtins/abort unreachable end - local.get $1 - i32.load offset=8 + local.get $5 + call $~lib/arraybuffer/ArrayBufferView#get:byteLength local.get $0 - i32.const 1 - i32.shl - i32.ne + global.get $~lib/typedarray/Uint16Array.BYTES_PER_ELEMENT + i32.mul + i32.eq + i32.eqz if i32.const 0 i32.const 24 @@ -837,12 +2010,11 @@ call $~lib/builtins/abort unreachable end - local.get $1 - i32.load offset=8 - i32.const 1 - i32.shr_u + local.get $5 + call $~lib/typedarray/Uint16Array#get:length local.get $0 - i32.ne + i32.eq + i32.eqz if i32.const 0 i32.const 24 @@ -851,13 +2023,15 @@ call $~lib/builtins/abort unreachable end + i32.const 0 local.get $0 call $~lib/typedarray/Int32Array#constructor - local.tee $1 - i32.load offset=4 - local.get $1 - i32.load - i32.sub + local.set $6 + local.get $6 + call $~lib/arraybuffer/ArrayBufferView#get:byteOffset + i32.const 0 + i32.eq + i32.eqz if i32.const 0 i32.const 24 @@ -866,12 +2040,13 @@ call $~lib/builtins/abort unreachable end - local.get $1 - i32.load offset=8 + local.get $6 + call $~lib/arraybuffer/ArrayBufferView#get:byteLength local.get $0 - i32.const 2 - i32.shl - i32.ne + global.get $~lib/typedarray/Int32Array.BYTES_PER_ELEMENT + i32.mul + i32.eq + i32.eqz if i32.const 0 i32.const 24 @@ -880,12 +2055,11 @@ call $~lib/builtins/abort unreachable end - local.get $1 - i32.load offset=8 - i32.const 2 - i32.shr_u + local.get $6 + call $~lib/typedarray/Int32Array#get:length local.get $0 - i32.ne + i32.eq + i32.eqz if i32.const 0 i32.const 24 @@ -894,13 +2068,15 @@ call $~lib/builtins/abort unreachable end + i32.const 0 local.get $0 call $~lib/typedarray/Uint32Array#constructor - local.tee $1 - i32.load offset=4 - local.get $1 - i32.load - i32.sub + local.set $7 + local.get $7 + call $~lib/arraybuffer/ArrayBufferView#get:byteOffset + i32.const 0 + i32.eq + i32.eqz if i32.const 0 i32.const 24 @@ -909,12 +2085,13 @@ call $~lib/builtins/abort unreachable end - local.get $1 - i32.load offset=8 + local.get $7 + call $~lib/arraybuffer/ArrayBufferView#get:byteLength local.get $0 - i32.const 2 - i32.shl - i32.ne + global.get $~lib/typedarray/Uint32Array.BYTES_PER_ELEMENT + i32.mul + i32.eq + i32.eqz if i32.const 0 i32.const 24 @@ -923,12 +2100,11 @@ call $~lib/builtins/abort unreachable end - local.get $1 - i32.load offset=8 - i32.const 2 - i32.shr_u + local.get $7 + call $~lib/typedarray/Uint32Array#get:length local.get $0 - i32.ne + i32.eq + i32.eqz if i32.const 0 i32.const 24 @@ -937,13 +2113,15 @@ call $~lib/builtins/abort unreachable end + i32.const 0 local.get $0 call $~lib/typedarray/Int64Array#constructor - local.tee $1 - i32.load offset=4 - local.get $1 - i32.load - i32.sub + local.set $8 + local.get $8 + call $~lib/arraybuffer/ArrayBufferView#get:byteOffset + i32.const 0 + i32.eq + i32.eqz if i32.const 0 i32.const 24 @@ -952,12 +2130,13 @@ call $~lib/builtins/abort unreachable end - local.get $1 - i32.load offset=8 + local.get $8 + call $~lib/arraybuffer/ArrayBufferView#get:byteLength local.get $0 - i32.const 3 - i32.shl - i32.ne + global.get $~lib/typedarray/Int64Array.BYTES_PER_ELEMENT + i32.mul + i32.eq + i32.eqz if i32.const 0 i32.const 24 @@ -966,12 +2145,11 @@ call $~lib/builtins/abort unreachable end - local.get $1 - i32.load offset=8 - i32.const 3 - i32.shr_u + local.get $8 + call $~lib/typedarray/Int64Array#get:length local.get $0 - i32.ne + i32.eq + i32.eqz if i32.const 0 i32.const 24 @@ -980,13 +2158,15 @@ call $~lib/builtins/abort unreachable end + i32.const 0 local.get $0 call $~lib/typedarray/Uint64Array#constructor - local.tee $1 - i32.load offset=4 - local.get $1 - i32.load - i32.sub + local.set $9 + local.get $9 + call $~lib/arraybuffer/ArrayBufferView#get:byteOffset + i32.const 0 + i32.eq + i32.eqz if i32.const 0 i32.const 24 @@ -995,12 +2175,13 @@ call $~lib/builtins/abort unreachable end - local.get $1 - i32.load offset=8 + local.get $9 + call $~lib/arraybuffer/ArrayBufferView#get:byteLength local.get $0 - i32.const 3 - i32.shl - i32.ne + global.get $~lib/typedarray/Uint64Array.BYTES_PER_ELEMENT + i32.mul + i32.eq + i32.eqz if i32.const 0 i32.const 24 @@ -1009,12 +2190,11 @@ call $~lib/builtins/abort unreachable end - local.get $1 - i32.load offset=8 - i32.const 3 - i32.shr_u + local.get $9 + call $~lib/typedarray/Uint64Array#get:length local.get $0 - i32.ne + i32.eq + i32.eqz if i32.const 0 i32.const 24 @@ -1023,13 +2203,15 @@ call $~lib/builtins/abort unreachable end + i32.const 0 local.get $0 call $~lib/typedarray/Float32Array#constructor - local.tee $1 - i32.load offset=4 - local.get $1 - i32.load - i32.sub + local.set $10 + local.get $10 + call $~lib/arraybuffer/ArrayBufferView#get:byteOffset + i32.const 0 + i32.eq + i32.eqz if i32.const 0 i32.const 24 @@ -1038,12 +2220,13 @@ call $~lib/builtins/abort unreachable end - local.get $1 - i32.load offset=8 + local.get $10 + call $~lib/arraybuffer/ArrayBufferView#get:byteLength local.get $0 - i32.const 2 - i32.shl - i32.ne + global.get $~lib/typedarray/Float32Array.BYTES_PER_ELEMENT + i32.mul + i32.eq + i32.eqz if i32.const 0 i32.const 24 @@ -1052,12 +2235,11 @@ call $~lib/builtins/abort unreachable end - local.get $1 - i32.load offset=8 - i32.const 2 - i32.shr_u + local.get $10 + call $~lib/typedarray/Float32Array#get:length local.get $0 - i32.ne + i32.eq + i32.eqz if i32.const 0 i32.const 24 @@ -1066,13 +2248,15 @@ call $~lib/builtins/abort unreachable end + i32.const 0 local.get $0 call $~lib/typedarray/Float64Array#constructor - local.tee $1 - i32.load offset=4 - local.get $1 - i32.load - i32.sub + local.set $11 + local.get $11 + call $~lib/arraybuffer/ArrayBufferView#get:byteOffset + i32.const 0 + i32.eq + i32.eqz if i32.const 0 i32.const 24 @@ -1081,12 +2265,13 @@ call $~lib/builtins/abort unreachable end - local.get $1 - i32.load offset=8 + local.get $11 + call $~lib/arraybuffer/ArrayBufferView#get:byteLength local.get $0 - i32.const 3 - i32.shl - i32.ne + global.get $~lib/typedarray/Float64Array.BYTES_PER_ELEMENT + i32.mul + i32.eq + i32.eqz if i32.const 0 i32.const 24 @@ -1095,12 +2280,11 @@ call $~lib/builtins/abort unreachable end - local.get $1 - i32.load offset=8 - i32.const 3 - i32.shr_u + local.get $11 + call $~lib/typedarray/Float64Array#get:length local.get $0 - i32.ne + i32.eq + i32.eqz if i32.const 0 i32.const 24 @@ -1109,8 +2293,30 @@ call $~lib/builtins/abort unreachable end + local.get $1 + call $~lib/rt/purerc/__release + local.get $2 + call $~lib/rt/purerc/__release + local.get $3 + call $~lib/rt/purerc/__release + local.get $4 + call $~lib/rt/purerc/__release + local.get $5 + call $~lib/rt/purerc/__release + local.get $6 + call $~lib/rt/purerc/__release + local.get $7 + call $~lib/rt/purerc/__release + local.get $8 + call $~lib/rt/purerc/__release + local.get $9 + call $~lib/rt/purerc/__release + local.get $10 + call $~lib/rt/purerc/__release + local.get $11 + call $~lib/rt/purerc/__release ) - (func $~lib/typedarray/Int32Array#__set (; 19 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/typedarray/Int32Array#__set (; 40 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) local.get $1 local.get $0 i32.load offset=8 @@ -1118,9 +2324,9 @@ i32.shr_u i32.ge_u if - i32.const 0 - i32.const 192 - i32.const 444 + i32.const 288 + i32.const 344 + i32.const 443 i32.const 63 call $~lib/builtins/abort unreachable @@ -1134,7 +2340,7 @@ local.get $2 i32.store ) - (func $~lib/typedarray/Int32Array#__get (; 20 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Int32Array#__get (; 41 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $1 local.get $0 i32.load offset=8 @@ -1142,9 +2348,9 @@ i32.shr_u i32.ge_u if - i32.const 0 - i32.const 192 - i32.const 438 + i32.const 288 + i32.const 344 + i32.const 437 i32.const 63 call $~lib/builtins/abort unreachable @@ -1157,99 +2363,125 @@ i32.add i32.load ) - (func $~lib/typedarray/Int32Array#subarray (; 21 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/typedarray/Int32Array#subarray (; 42 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) - local.get $0 - i32.load offset=8 - i32.const 2 - i32.shr_u - local.set $3 - local.get $1 - i32.const 0 - i32.lt_s - if (result i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + block $~lib/typedarray/SUBARRAY<~lib/typedarray/Int32Array,i32>|inlined.0 (result i32) + local.get $0 + call $~lib/rt/purerc/__retain + local.set $5 local.get $1 - local.get $3 - i32.add - local.tee $1 + local.set $4 + local.get $2 + local.set $3 + local.get $5 + call $~lib/typedarray/Int32Array#get:length + local.set $6 + local.get $4 i32.const 0 - local.get $1 + i32.lt_s + if + local.get $6 + local.get $4 + i32.add + local.tee $7 + i32.const 0 + local.tee $8 + local.get $7 + local.get $8 + i32.gt_s + select + local.set $4 + else + local.get $4 + local.tee $7 + local.get $6 + local.tee $8 + local.get $7 + local.get $8 + i32.lt_s + select + local.set $4 + end + local.get $3 i32.const 0 - i32.gt_s - select - else - local.get $1 - local.get $3 - local.get $1 - local.get $3 i32.lt_s - select - end - local.set $1 - local.get $2 - i32.const 0 - i32.lt_s - if (result i32) - local.get $2 - local.get $3 + if + local.get $6 + local.get $3 + i32.add + local.tee $7 + local.get $4 + local.tee $8 + local.get $7 + local.get $8 + i32.gt_s + select + local.set $3 + else + local.get $3 + local.tee $7 + local.get $6 + local.tee $8 + local.get $7 + local.get $8 + i32.lt_s + select + local.tee $7 + local.get $4 + local.tee $8 + local.get $7 + local.get $8 + i32.gt_s + select + local.set $3 + end + i32.const 12 + i32.const 22 + call $~lib/rt/tlsf/__alloc + local.set $7 + local.get $7 + local.tee $8 + local.get $5 + i32.load + local.get $8 + i32.load + call $~lib/rt/purerc/__retainRelease + i32.store + local.get $7 + local.get $5 + i32.load offset=4 + local.get $4 + i32.const 2 + i32.shl i32.add - local.tee $2 - local.get $1 - local.get $2 - local.get $1 - i32.gt_s - select - else - local.get $2 + i32.store offset=4 + local.get $7 local.get $3 - local.get $2 - local.get $3 - i32.lt_s - select - local.tee $2 - local.get $1 - local.get $2 - local.get $1 - i32.gt_s - select + local.get $4 + i32.sub + i32.const 2 + i32.shl + i32.store offset=8 + local.get $7 + call $~lib/rt/purerc/__retain + local.set $8 + local.get $5 + call $~lib/rt/purerc/__release + local.get $8 end - local.set $3 - i32.const 12 - call $~lib/util/runtime/allocate - local.set $2 - local.get $0 - i32.load offset=4 - local.set $4 - local.get $0 - i32.load - local.tee $0 - local.get $2 - i32.load - i32.ne - drop - local.get $2 - local.get $0 - i32.store - local.get $2 - local.get $1 - i32.const 2 - i32.shl - local.get $4 - i32.add - i32.store offset=4 - local.get $2 - local.get $3 - local.get $1 - i32.sub - i32.const 2 - i32.shl - i32.store offset=8 - local.get $2 - i32.const 22 - call $~lib/util/runtime/register + local.tee $7 + call $~lib/rt/purerc/__retain + local.set $6 + local.get $7 + call $~lib/rt/purerc/__release + local.get $6 ) - (func $~lib/typedarray/Float64Array#__set (; 22 ;) (type $FUNCSIG$viid) (param $0 i32) (param $1 i32) (param $2 f64) + (func $~lib/typedarray/Float64Array#__set (; 43 ;) (type $FUNCSIG$viid) (param $0 i32) (param $1 i32) (param $2 f64) local.get $1 local.get $0 i32.load offset=8 @@ -1257,9 +2489,9 @@ i32.shr_u i32.ge_u if - i32.const 0 - i32.const 192 - i32.const 854 + i32.const 288 + i32.const 344 + i32.const 853 i32.const 63 call $~lib/builtins/abort unreachable @@ -1273,169 +2505,205 @@ local.get $2 f64.store ) - (func $~lib/typedarray/Float64Array#subarray (; 23 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/typedarray/Float64Array#subarray (; 44 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) - local.get $0 - i32.load offset=8 - i32.const 3 - i32.shr_u - local.set $3 - local.get $1 - i32.const 0 - i32.lt_s - if (result i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + block $~lib/typedarray/SUBARRAY<~lib/typedarray/Float64Array,f64>|inlined.0 (result i32) + local.get $0 + call $~lib/rt/purerc/__retain + local.set $5 local.get $1 - local.get $3 - i32.add - local.tee $1 + local.set $4 + local.get $2 + local.set $3 + local.get $5 + call $~lib/typedarray/Float64Array#get:length + local.set $6 + local.get $4 i32.const 0 - local.get $1 + i32.lt_s + if + local.get $6 + local.get $4 + i32.add + local.tee $7 + i32.const 0 + local.tee $8 + local.get $7 + local.get $8 + i32.gt_s + select + local.set $4 + else + local.get $4 + local.tee $7 + local.get $6 + local.tee $8 + local.get $7 + local.get $8 + i32.lt_s + select + local.set $4 + end + local.get $3 i32.const 0 - i32.gt_s - select - else - local.get $1 - local.get $3 - local.get $1 - local.get $3 i32.lt_s - select - end - local.set $1 - local.get $2 - i32.const 0 - i32.lt_s - if (result i32) - local.get $2 - local.get $3 + if + local.get $6 + local.get $3 + i32.add + local.tee $7 + local.get $4 + local.tee $8 + local.get $7 + local.get $8 + i32.gt_s + select + local.set $3 + else + local.get $3 + local.tee $7 + local.get $6 + local.tee $8 + local.get $7 + local.get $8 + i32.lt_s + select + local.tee $7 + local.get $4 + local.tee $8 + local.get $7 + local.get $8 + i32.gt_s + select + local.set $3 + end + i32.const 12 + i32.const 27 + call $~lib/rt/tlsf/__alloc + local.set $7 + local.get $7 + local.tee $8 + local.get $5 + i32.load + local.get $8 + i32.load + call $~lib/rt/purerc/__retainRelease + i32.store + local.get $7 + local.get $5 + i32.load offset=4 + local.get $4 + i32.const 3 + i32.shl i32.add - local.tee $2 - local.get $1 - local.get $2 - local.get $1 - i32.gt_s - select - else - local.get $2 + i32.store offset=4 + local.get $7 local.get $3 - local.get $2 - local.get $3 - i32.lt_s - select - local.tee $2 - local.get $1 - local.get $2 - local.get $1 - i32.gt_s - select + local.get $4 + i32.sub + i32.const 3 + i32.shl + i32.store offset=8 + local.get $7 + call $~lib/rt/purerc/__retain + local.set $8 + local.get $5 + call $~lib/rt/purerc/__release + local.get $8 end - local.set $3 - i32.const 12 - call $~lib/util/runtime/allocate - local.set $2 - local.get $0 - i32.load offset=4 - local.set $4 - local.get $0 - i32.load - local.tee $0 - local.get $2 - i32.load - i32.ne - drop - local.get $2 - local.get $0 - i32.store - local.get $2 - local.get $1 - i32.const 3 - i32.shl - local.get $4 - i32.add - i32.store offset=4 - local.get $2 - local.get $3 - local.get $1 - i32.sub - i32.const 3 - i32.shl - i32.store offset=8 - local.get $2 - i32.const 27 - call $~lib/util/runtime/register + local.tee $7 + call $~lib/rt/purerc/__retain + local.set $6 + local.get $7 + call $~lib/rt/purerc/__release + local.get $6 ) - (func $~lib/util/sort/insertionSort (; 24 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/util/sort/insertionSort (; 45 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) - (local $4 i32) - (local $5 f64) + (local $4 f64) + (local $5 i32) (local $6 f64) (local $7 i32) block $break|0 + i32.const 0 + local.set $3 loop $repeat|0 local.get $3 local.get $1 - i32.ge_s + i32.lt_s + i32.eqz br_if $break|0 + local.get $0 local.get $3 i32.const 3 i32.shl - local.get $0 i32.add f64.load - local.set $5 + local.set $4 local.get $3 i32.const 1 i32.sub - local.set $4 - loop $continue|1 - local.get $4 - i32.const 0 - i32.ge_s - if - block $break|1 - local.get $4 + local.set $5 + block $break|1 + loop $continue|1 + local.get $5 + i32.const 0 + i32.ge_s + if + local.get $0 + local.get $5 i32.const 3 i32.shl - local.get $0 i32.add f64.load local.set $6 - i32.const 2 - global.set $~lib/argc - local.get $5 - local.get $6 - local.get $2 - call_indirect (type $FUNCSIG$idd) + block (result i32) + i32.const 2 + global.set $~lib/argc + local.get $4 + local.get $6 + local.get $2 + call_indirect (type $FUNCSIG$idd) + end i32.const 0 - i32.ge_s - br_if $break|1 - local.get $4 - local.tee $7 - i32.const 1 - i32.sub - local.set $4 - local.get $7 - i32.const 1 - i32.add - i32.const 3 - i32.shl - local.get $0 - i32.add - local.get $6 - f64.store + i32.lt_s + if + local.get $0 + block (result i32) + local.get $5 + local.tee $7 + i32.const 1 + i32.sub + local.set $5 + local.get $7 + end + i32.const 1 + i32.add + i32.const 3 + i32.shl + i32.add + local.get $6 + f64.store + else + br $break|1 + end br $continue|1 end end end - local.get $4 + local.get $0 + local.get $5 i32.const 1 i32.add i32.const 3 i32.shl - local.get $0 i32.add - local.get $5 + local.get $4 f64.store local.get $3 i32.const 1 @@ -1447,13 +2715,344 @@ unreachable end ) - (func $~lib/util/sort/weakHeapSort (; 25 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/memory/memory.fill (; 46 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) - (local $5 f64) - (local $6 f64) + (local $5 i32) + (local $6 i32) (local $7 i32) - (local $8 i32) + (local $8 i64) + block $~lib/util/memory/memset|inlined.0 + local.get $0 + local.set $5 + local.get $1 + local.set $4 + local.get $2 + local.set $3 + local.get $3 + i32.eqz + if + br $~lib/util/memory/memset|inlined.0 + end + local.get $5 + local.get $4 + i32.store8 + local.get $5 + local.get $3 + i32.add + i32.const 1 + i32.sub + local.get $4 + i32.store8 + local.get $3 + i32.const 2 + i32.le_u + if + br $~lib/util/memory/memset|inlined.0 + end + local.get $5 + i32.const 1 + i32.add + local.get $4 + i32.store8 + local.get $5 + i32.const 2 + i32.add + local.get $4 + i32.store8 + local.get $5 + local.get $3 + i32.add + i32.const 2 + i32.sub + local.get $4 + i32.store8 + local.get $5 + local.get $3 + i32.add + i32.const 3 + i32.sub + local.get $4 + i32.store8 + local.get $3 + i32.const 6 + i32.le_u + if + br $~lib/util/memory/memset|inlined.0 + end + local.get $5 + i32.const 3 + i32.add + local.get $4 + i32.store8 + local.get $5 + local.get $3 + i32.add + i32.const 4 + i32.sub + local.get $4 + i32.store8 + local.get $3 + i32.const 8 + i32.le_u + if + br $~lib/util/memory/memset|inlined.0 + end + i32.const 0 + local.get $5 + i32.sub + i32.const 3 + i32.and + local.set $6 + local.get $5 + local.get $6 + i32.add + local.set $5 + local.get $3 + local.get $6 + i32.sub + local.set $3 + local.get $3 + i32.const -4 + i32.and + local.set $3 + i32.const -1 + i32.const 255 + i32.div_u + local.get $4 + i32.const 255 + i32.and + i32.mul + local.set $7 + local.get $5 + local.get $7 + i32.store + local.get $5 + local.get $3 + i32.add + i32.const 4 + i32.sub + local.get $7 + i32.store + local.get $3 + i32.const 8 + i32.le_u + if + br $~lib/util/memory/memset|inlined.0 + end + local.get $5 + i32.const 4 + i32.add + local.get $7 + i32.store + local.get $5 + i32.const 8 + i32.add + local.get $7 + i32.store + local.get $5 + local.get $3 + i32.add + i32.const 12 + i32.sub + local.get $7 + i32.store + local.get $5 + local.get $3 + i32.add + i32.const 8 + i32.sub + local.get $7 + i32.store + local.get $3 + i32.const 24 + i32.le_u + if + br $~lib/util/memory/memset|inlined.0 + end + local.get $5 + i32.const 12 + i32.add + local.get $7 + i32.store + local.get $5 + i32.const 16 + i32.add + local.get $7 + i32.store + local.get $5 + i32.const 20 + i32.add + local.get $7 + i32.store + local.get $5 + i32.const 24 + i32.add + local.get $7 + i32.store + local.get $5 + local.get $3 + i32.add + i32.const 28 + i32.sub + local.get $7 + i32.store + local.get $5 + local.get $3 + i32.add + i32.const 24 + i32.sub + local.get $7 + i32.store + local.get $5 + local.get $3 + i32.add + i32.const 20 + i32.sub + local.get $7 + i32.store + local.get $5 + local.get $3 + i32.add + i32.const 16 + i32.sub + local.get $7 + i32.store + i32.const 24 + local.get $5 + i32.const 4 + i32.and + i32.add + local.set $6 + local.get $5 + local.get $6 + i32.add + local.set $5 + local.get $3 + local.get $6 + i32.sub + local.set $3 + local.get $7 + i64.extend_i32_u + local.get $7 + i64.extend_i32_u + i64.const 32 + i64.shl + i64.or + local.set $8 + block $break|0 + loop $continue|0 + local.get $3 + i32.const 32 + i32.ge_u + if + local.get $5 + local.get $8 + i64.store + local.get $5 + i32.const 8 + i32.add + local.get $8 + i64.store + local.get $5 + i32.const 16 + i32.add + local.get $8 + i64.store + local.get $5 + i32.const 24 + i32.add + local.get $8 + i64.store + local.get $3 + i32.const 32 + i32.sub + local.set $3 + local.get $5 + i32.const 32 + i32.add + local.set $5 + br $continue|0 + end + end + end + end + ) + (func $~lib/rt/tlsf/freeBlock (; 47 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (local $2 i32) + local.get $1 + i32.load + local.set $2 + local.get $2 + i32.const 1 + i32.and + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 184 + i32.const 530 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.get $2 + i32.const 1 + i32.or + i32.store + local.get $0 + local.get $1 + call $~lib/rt/tlsf/insertBlock + local.get $1 + call $~lib/rt/tlsf/onFree + ) + (func $~lib/rt/tlsf/__free (; 48 ;) (type $FUNCSIG$vi) (param $0 i32) + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + i32.const 0 + i32.const 184 + i32.const 560 + i32.const 13 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 0 + i32.ne + if (result i32) + local.get $0 + i32.const 15 + i32.and + i32.eqz + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 184 + i32.const 561 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/rt/tlsf/ROOT + local.get $0 + i32.const 16 + i32.sub + call $~lib/rt/tlsf/freeBlock + ) + (func $~lib/util/sort/weakHeapSort (; 49 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 f64) + (local $9 f64) + (local $10 f64) local.get $1 i32.const 31 i32.add @@ -1461,338 +3060,429 @@ i32.shr_s i32.const 2 i32.shl - local.tee $3 - call $~lib/allocator/arena/__mem_allocate - local.tee $7 + local.set $3 + local.get $3 + i32.const 0 + call $~lib/rt/tlsf/__alloc + local.set $4 + local.get $4 i32.const 0 local.get $3 call $~lib/memory/memory.fill - local.get $1 - i32.const 1 - i32.sub - local.set $4 - loop $repeat|0 - local.get $4 - i32.const 0 - i32.gt_s - if - local.get $4 - local.set $3 - loop $continue|1 - local.get $3 - i32.const 1 - i32.and - local.get $3 - i32.const 6 - i32.shr_s - i32.const 2 - i32.shl - local.get $7 - i32.add - i32.load - local.get $3 - i32.const 1 - i32.shr_s - i32.const 31 - i32.and - i32.shr_u - i32.const 1 - i32.and - i32.eq - if - local.get $3 + block $break|0 + local.get $1 + i32.const 1 + i32.sub + local.set $5 + loop $repeat|0 + local.get $5 + i32.const 0 + i32.gt_s + i32.eqz + br_if $break|0 + local.get $5 + local.set $6 + block $break|1 + loop $continue|1 + local.get $6 + i32.const 1 + i32.and + local.get $4 + local.get $6 + i32.const 6 + i32.shr_s + i32.const 2 + i32.shl + i32.add + i32.load + local.get $6 i32.const 1 i32.shr_s - local.set $3 - br $continue|1 + i32.const 31 + i32.and + i32.shr_u + i32.const 1 + i32.and + i32.eq + if + local.get $6 + i32.const 1 + i32.shr_s + local.set $6 + br $continue|1 + end end end - local.get $3 + local.get $6 i32.const 1 i32.shr_s - local.tee $3 + local.set $7 + local.get $0 + local.get $7 i32.const 3 i32.shl - local.get $0 i32.add f64.load - local.set $5 - local.get $4 - i32.const 3 - i32.shl + local.set $8 local.get $0 - i32.add - f64.load - local.set $6 - i32.const 2 - global.set $~lib/argc local.get $5 - local.get $6 - local.get $2 - call_indirect (type $FUNCSIG$idd) + i32.const 3 + i32.shl + i32.add + f64.load + local.set $9 + block (result i32) + i32.const 2 + global.set $~lib/argc + local.get $8 + local.get $9 + local.get $2 + call_indirect (type $FUNCSIG$idd) + end i32.const 0 i32.lt_s if local.get $4 + local.get $5 + i32.const 5 + i32.shr_s + i32.const 2 + i32.shl + i32.add + local.get $4 + local.get $5 i32.const 5 i32.shr_s i32.const 2 i32.shl - local.get $7 i32.add - local.tee $8 - local.get $8 i32.load i32.const 1 - local.get $4 + local.get $5 i32.const 31 i32.and i32.shl i32.xor i32.store - local.get $4 - i32.const 3 - i32.shl local.get $0 - i32.add local.get $5 - f64.store - local.get $3 i32.const 3 i32.shl - local.get $0 i32.add - local.get $6 + local.get $8 + f64.store + local.get $0 + local.get $7 + i32.const 3 + i32.shl + i32.add + local.get $9 f64.store end - local.get $4 + local.get $5 i32.const 1 i32.sub - local.set $4 + local.set $5 br $repeat|0 + unreachable end + unreachable end - local.get $1 - i32.const 1 - i32.sub - local.set $4 - loop $repeat|2 - local.get $4 - i32.const 2 - i32.ge_s - if + block $break|2 + local.get $1 + i32.const 1 + i32.sub + local.set $7 + loop $repeat|2 + local.get $7 + i32.const 2 + i32.ge_s + i32.eqz + br_if $break|2 local.get $0 f64.load - local.set $5 + local.set $9 local.get $0 - local.get $4 + local.get $0 + local.get $7 i32.const 3 i32.shl - local.get $0 i32.add - local.tee $1 f64.load f64.store - local.get $1 - local.get $5 + local.get $0 + local.get $7 + i32.const 3 + i32.shl + i32.add + local.get $9 f64.store i32.const 1 - local.set $1 - loop $continue|3 - local.get $1 - i32.const 5 - i32.shr_s - i32.const 2 - i32.shl - local.get $7 - i32.add - i32.load - local.get $1 - i32.const 31 - i32.and - i32.shr_u - i32.const 1 - i32.and - local.get $1 - i32.const 1 - i32.shl - i32.add - local.tee $3 - local.get $4 - i32.lt_s - if - local.get $3 - local.set $1 - br $continue|3 - end - end - loop $continue|4 - local.get $1 - i32.const 0 - i32.gt_s - if - local.get $0 - f64.load - local.set $5 - local.get $1 - i32.const 3 - i32.shl - local.get $0 - i32.add - f64.load - local.set $6 - i32.const 2 - global.set $~lib/argc - local.get $5 + local.set $6 + block $break|3 + loop $continue|3 local.get $6 - local.get $2 - call_indirect (type $FUNCSIG$idd) - i32.const 0 + i32.const 1 + i32.shl + local.get $4 + local.get $6 + i32.const 5 + i32.shr_s + i32.const 2 + i32.shl + i32.add + i32.load + local.get $6 + i32.const 31 + i32.and + i32.shr_u + i32.const 1 + i32.and + i32.add + local.tee $5 + local.get $7 i32.lt_s if - local.get $1 - i32.const 5 - i32.shr_s - i32.const 2 - i32.shl - local.get $7 - i32.add - local.tee $3 - local.get $3 - i32.load - i32.const 1 - local.get $1 - i32.const 31 - i32.and - i32.shl - i32.xor - i32.store - local.get $1 - i32.const 3 - i32.shl - local.get $0 - i32.add local.get $5 - f64.store - local.get $0 - local.get $6 - f64.store + local.set $6 + br $continue|3 end - local.get $1 - i32.const 1 - i32.shr_s - local.set $1 - br $continue|4 end end - local.get $4 + block $break|4 + loop $continue|4 + local.get $6 + i32.const 0 + i32.gt_s + if + local.get $0 + f64.load + local.set $9 + local.get $0 + local.get $6 + i32.const 3 + i32.shl + i32.add + f64.load + local.set $8 + block (result i32) + i32.const 2 + global.set $~lib/argc + local.get $9 + local.get $8 + local.get $2 + call_indirect (type $FUNCSIG$idd) + end + i32.const 0 + i32.lt_s + if + local.get $4 + local.get $6 + i32.const 5 + i32.shr_s + i32.const 2 + i32.shl + i32.add + local.get $4 + local.get $6 + i32.const 5 + i32.shr_s + i32.const 2 + i32.shl + i32.add + i32.load + i32.const 1 + local.get $6 + i32.const 31 + i32.and + i32.shl + i32.xor + i32.store + local.get $0 + local.get $6 + i32.const 3 + i32.shl + i32.add + local.get $9 + f64.store + local.get $0 + local.get $8 + f64.store + end + local.get $6 + i32.const 1 + i32.shr_s + local.set $6 + br $continue|4 + end + end + end + local.get $7 i32.const 1 i32.sub - local.set $4 + local.set $7 br $repeat|2 + unreachable end + unreachable end + local.get $4 + call $~lib/rt/tlsf/__free local.get $0 f64.load offset=8 - local.set $5 + local.set $10 local.get $0 local.get $0 f64.load f64.store offset=8 local.get $0 - local.get $5 + local.get $10 f64.store ) - (func $~lib/typedarray/Float64Array#sort (; 26 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/typedarray/Float64Array#sort (; 50 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) - (local $3 f64) - (local $4 f64) - block $~lib/typedarray/SORT<~lib/typedarray/Float64Array,f64>|inlined.0 + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 f64) + (local $7 f64) + (local $8 i32) + (local $9 i32) + (local $10 i32) + block $~lib/typedarray/SORT<~lib/typedarray/Float64Array,f64>|inlined.0 (result i32) local.get $0 - i32.load offset=8 - i32.const 3 - i32.shr_u - local.tee $2 + call $~lib/rt/purerc/__retain + local.set $3 + local.get $1 + local.set $2 + local.get $3 + call $~lib/typedarray/Float64Array#get:length + local.set $4 + local.get $4 i32.const 1 i32.le_s - br_if $~lib/typedarray/SORT<~lib/typedarray/Float64Array,f64>|inlined.0 - local.get $0 + if + local.get $3 + br $~lib/typedarray/SORT<~lib/typedarray/Float64Array,f64>|inlined.0 + end + local.get $3 i32.load offset=4 - local.set $0 - local.get $2 + local.set $5 + local.get $4 i32.const 2 i32.eq if - local.get $0 + local.get $5 f64.load offset=8 - local.set $3 - local.get $0 + local.set $6 + local.get $5 f64.load - local.set $4 - i32.const 2 - global.set $~lib/argc - local.get $3 - local.get $4 - local.get $1 - call_indirect (type $FUNCSIG$idd) + local.set $7 + block (result i32) + i32.const 2 + global.set $~lib/argc + local.get $6 + local.get $7 + local.get $2 + call_indirect (type $FUNCSIG$idd) + end i32.const 0 i32.lt_s if - local.get $0 - local.get $4 + local.get $5 + local.get $7 f64.store offset=8 - local.get $0 - local.get $3 + local.get $5 + local.get $6 f64.store end + local.get $3 br $~lib/typedarray/SORT<~lib/typedarray/Float64Array,f64>|inlined.0 end - local.get $2 - i32.const 256 - i32.lt_s - if - local.get $0 + block $~lib/util/sort/SORT|inlined.0 + local.get $5 + local.set $10 + local.get $4 + local.set $9 local.get $2 - local.get $1 - call $~lib/util/sort/insertionSort - else - local.get $0 - local.get $2 - local.get $1 - call $~lib/util/sort/weakHeapSort + local.set $8 + local.get $9 + i32.const 256 + i32.lt_s + if + local.get $10 + local.get $9 + local.get $8 + call $~lib/util/sort/insertionSort + else + local.get $10 + local.get $9 + local.get $8 + call $~lib/util/sort/weakHeapSort + end end + local.get $3 end + local.tee $5 + call $~lib/rt/purerc/__retain + local.set $4 + local.get $5 + call $~lib/rt/purerc/__release + local.get $4 ) - (func $~lib/util/sort/COMPARATOR~anonymous|0 (; 27 ;) (type $FUNCSIG$idd) (param $0 f64) (param $1 f64) (result i32) + (func $~lib/util/sort/COMPARATOR~anonymous|0 (; 51 ;) (type $FUNCSIG$idd) (param $0 f64) (param $1 f64) (result i32) (local $2 i64) (local $3 i64) local.get $0 i64.reinterpret_f64 - local.tee $2 + local.set $2 + local.get $1 + i64.reinterpret_f64 + local.set $3 + local.get $2 local.get $2 i64.const 63 i64.shr_s i64.const 1 i64.shr_u i64.xor - local.tee $2 - local.get $1 - i64.reinterpret_f64 - local.tee $3 + local.set $2 + local.get $3 local.get $3 i64.const 63 i64.shr_s i64.const 1 i64.shr_u i64.xor - local.tee $3 + local.set $3 + local.get $2 + local.get $3 i64.gt_s local.get $2 local.get $3 i64.lt_s i32.sub ) - (func $~lib/typedarray/Float64Array#__get (; 28 ;) (type $FUNCSIG$dii) (param $0 i32) (param $1 i32) (result f64) + (func $~lib/typedarray/Float64Array#sort|trampoline (; 52 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + block $1of1 + block $0of1 + block $outOfRange + global.get $~lib/argc + br_table $0of1 $1of1 $outOfRange + end + unreachable + end + block $~lib/util/sort/COMPARATOR|inlined.0 (result i32) + i32.const 1 + br $~lib/util/sort/COMPARATOR|inlined.0 + end + local.set $1 + end + local.get $0 + local.get $1 + call $~lib/typedarray/Float64Array#sort + ) + (func $~lib/typedarray/Float64Array#__get (; 53 ;) (type $FUNCSIG$dii) (param $0 i32) (param $1 i32) (result f64) local.get $1 local.get $0 i32.load offset=8 @@ -1800,9 +3490,9 @@ i32.shr_u i32.ge_u if - i32.const 0 - i32.const 192 - i32.const 848 + i32.const 288 + i32.const 344 + i32.const 847 i32.const 63 call $~lib/builtins/abort unreachable @@ -1815,15 +3505,15 @@ i32.add f64.load ) - (func $~lib/typedarray/Uint8ClampedArray#__set (; 29 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/typedarray/Uint8ClampedArray#__set (; 54 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) local.get $1 local.get $0 i32.load offset=8 i32.ge_u if - i32.const 0 - i32.const 192 - i32.const 198 + i32.const 288 + i32.const 344 + i32.const 197 i32.const 44 call $~lib/builtins/abort unreachable @@ -1832,6 +3522,11 @@ i32.load offset=4 local.get $1 i32.add + local.get $2 + i32.const 31 + i32.shr_s + i32.const -1 + i32.xor i32.const 255 local.get $2 i32.sub @@ -1839,23 +3534,18 @@ i32.shr_s local.get $2 i32.or - local.get $2 - i32.const 31 - i32.shr_s - i32.const -1 - i32.xor i32.and i32.store8 ) - (func $~lib/typedarray/Uint8ClampedArray#__get (; 30 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Uint8ClampedArray#__get (; 55 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $1 local.get $0 i32.load offset=8 i32.ge_u if - i32.const 0 - i32.const 192 - i32.const 192 + i32.const 288 + i32.const 344 + i32.const 191 i32.const 44 call $~lib/builtins/abort unreachable @@ -1866,15 +3556,15 @@ i32.add i32.load8_u ) - (func $~lib/typedarray/Int8Array#__set (; 31 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/typedarray/Int8Array#__set (; 56 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) local.get $1 local.get $0 i32.load offset=8 i32.ge_u if - i32.const 0 - i32.const 192 - i32.const 34 + i32.const 288 + i32.const 344 + i32.const 33 i32.const 44 call $~lib/builtins/abort unreachable @@ -1886,292 +3576,421 @@ local.get $2 i32.store8 ) - (func $~lib/typedarray/Int8Array#fill (; 32 ;) (type $FUNCSIG$viiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) + (func $~lib/typedarray/Int8Array#fill (; 57 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) (local $4 i32) (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) + (local $10 i32) + (local $11 i32) + block $~lib/typedarray/FILL<~lib/typedarray/Int8Array,i8>|inlined.0 (result i32) + local.get $0 + call $~lib/rt/purerc/__retain + local.set $7 + local.get $1 + local.set $6 + local.get $2 + local.set $5 + local.get $3 + local.set $4 + local.get $7 + i32.load offset=4 + local.set $8 + local.get $7 + call $~lib/typedarray/Int8Array#get:length + local.set $9 + local.get $5 + i32.const 0 + i32.lt_s + if (result i32) + local.get $9 + local.get $5 + i32.add + local.tee $10 + i32.const 0 + local.tee $11 + local.get $10 + local.get $11 + i32.gt_s + select + else + local.get $5 + local.tee $10 + local.get $9 + local.tee $11 + local.get $10 + local.get $11 + i32.lt_s + select + end + local.set $5 + local.get $4 + i32.const 0 + i32.lt_s + if (result i32) + local.get $9 + local.get $4 + i32.add + local.tee $10 + i32.const 0 + local.tee $11 + local.get $10 + local.get $11 + i32.gt_s + select + else + local.get $4 + local.tee $10 + local.get $9 + local.tee $11 + local.get $10 + local.get $11 + i32.lt_s + select + end + local.set $4 + local.get $5 + local.get $4 + i32.lt_s + if + local.get $8 + local.get $5 + i32.add + local.get $6 + local.get $4 + local.get $5 + i32.sub + call $~lib/memory/memory.fill + end + local.get $7 + end + local.tee $9 + call $~lib/rt/purerc/__retain + local.set $8 + local.get $9 + call $~lib/rt/purerc/__release + local.get $8 + ) + (func $~lib/rt/purerc/increment (; 58 ;) (type $FUNCSIG$vi) (param $0 i32) + (local $1 i32) local.get $0 i32.load offset=4 - local.set $5 - local.get $0 - i32.load offset=8 - local.set $4 - local.get $2 - i32.const 0 - i32.lt_s - if (result i32) - local.get $2 - local.get $4 - i32.add - local.tee $0 - i32.const 0 - local.get $0 - i32.const 0 - i32.gt_s - select - else - local.get $2 - local.get $4 - local.get $2 - local.get $4 - i32.lt_s - select - end - local.tee $0 - local.get $3 - i32.const 0 - i32.lt_s - if (result i32) - local.get $3 - local.get $4 - i32.add - local.tee $2 - i32.const 0 - local.get $2 - i32.const 0 - i32.gt_s - select - else - local.get $3 - local.get $4 - local.get $3 - local.get $4 - i32.lt_s - select - end - local.tee $2 - i32.lt_s + local.set $1 + local.get $1 + i32.const 268435455 + i32.const -1 + i32.xor + i32.and + local.get $1 + i32.const 1 + i32.add + i32.const 268435455 + i32.const -1 + i32.xor + i32.and + i32.eq + i32.eqz if - local.get $0 - local.get $5 - i32.add - local.get $1 - local.get $2 - local.get $0 - i32.sub - call $~lib/memory/memory.fill + i32.const 0 + i32.const 424 + i32.const 103 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + i32.const 1 + i32.add + i32.store offset=4 + local.get $0 + call $~lib/rt/purerc/onIncrement + local.get $0 + i32.load + i32.const 1 + i32.and + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 424 + i32.const 106 + i32.const 13 + call $~lib/builtins/abort + unreachable end ) - (func $~lib/memory/memory.copy (; 33 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/rt/purerc/__retain (; 59 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + local.get $0 + global.get $~lib/builtins/HEAP_BASE + i32.gt_u + if + local.get $0 + i32.const 16 + i32.sub + call $~lib/rt/purerc/increment + end + local.get $0 + ) + (func $~lib/memory/memory.copy (; 60 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) + (local $5 i32) + (local $6 i32) block $~lib/util/memory/memmove|inlined.0 local.get $0 + local.set $5 local.get $1 + local.set $4 + local.get $2 + local.set $3 + local.get $5 + local.get $4 i32.eq - br_if $~lib/util/memory/memmove|inlined.0 - local.get $0 - local.get $1 + if + br $~lib/util/memory/memmove|inlined.0 + end + local.get $5 + local.get $4 i32.lt_u if - local.get $1 + local.get $4 i32.const 7 i32.and - local.get $0 + local.get $5 i32.const 7 i32.and i32.eq if - loop $continue|0 - local.get $0 - i32.const 7 - i32.and - if - local.get $2 - i32.eqz - br_if $~lib/util/memory/memmove|inlined.0 - local.get $2 - i32.const 1 - i32.sub - local.set $2 - local.get $0 - local.tee $3 - i32.const 1 - i32.add - local.set $0 - local.get $1 - local.tee $4 - i32.const 1 - i32.add - local.set $1 - local.get $3 - local.get $4 - i32.load8_u - i32.store8 - br $continue|0 + block $break|0 + loop $continue|0 + local.get $5 + i32.const 7 + i32.and + if + local.get $3 + i32.eqz + if + br $~lib/util/memory/memmove|inlined.0 + end + local.get $3 + i32.const 1 + i32.sub + local.set $3 + block (result i32) + local.get $5 + local.tee $6 + i32.const 1 + i32.add + local.set $5 + local.get $6 + end + block (result i32) + local.get $4 + local.tee $6 + i32.const 1 + i32.add + local.set $4 + local.get $6 + end + i32.load8_u + i32.store8 + br $continue|0 + end end end - loop $continue|1 - local.get $2 - i32.const 8 - i32.ge_u - if - local.get $0 - local.get $1 - i64.load - i64.store - local.get $2 + block $break|1 + loop $continue|1 + local.get $3 i32.const 8 - i32.sub - local.set $2 - local.get $0 - i32.const 8 - i32.add - local.set $0 - local.get $1 - i32.const 8 - i32.add - local.set $1 - br $continue|1 + i32.ge_u + if + local.get $5 + local.get $4 + i64.load + i64.store + local.get $3 + i32.const 8 + i32.sub + local.set $3 + local.get $5 + i32.const 8 + i32.add + local.set $5 + local.get $4 + i32.const 8 + i32.add + local.set $4 + br $continue|1 + end end end end - loop $continue|2 - local.get $2 - if - local.get $0 - local.tee $3 - i32.const 1 - i32.add - local.set $0 - local.get $1 - local.tee $4 - i32.const 1 - i32.add - local.set $1 + block $break|2 + loop $continue|2 local.get $3 - local.get $4 - i32.load8_u - i32.store8 - local.get $2 - i32.const 1 - i32.sub - local.set $2 - br $continue|2 + if + block (result i32) + local.get $5 + local.tee $6 + i32.const 1 + i32.add + local.set $5 + local.get $6 + end + block (result i32) + local.get $4 + local.tee $6 + i32.const 1 + i32.add + local.set $4 + local.get $6 + end + i32.load8_u + i32.store8 + local.get $3 + i32.const 1 + i32.sub + local.set $3 + br $continue|2 + end end end else - local.get $1 + local.get $4 i32.const 7 i32.and - local.get $0 + local.get $5 i32.const 7 i32.and i32.eq if - loop $continue|3 - local.get $0 - local.get $2 - i32.add - i32.const 7 - i32.and - if - local.get $2 - i32.eqz - br_if $~lib/util/memory/memmove|inlined.0 - local.get $2 - i32.const 1 - i32.sub - local.tee $2 - local.get $0 + block $break|3 + loop $continue|3 + local.get $5 + local.get $3 i32.add - local.get $1 - local.get $2 - i32.add - i32.load8_u - i32.store8 - br $continue|3 + i32.const 7 + i32.and + if + local.get $3 + i32.eqz + if + br $~lib/util/memory/memmove|inlined.0 + end + local.get $5 + local.get $3 + i32.const 1 + i32.sub + local.tee $3 + i32.add + local.get $4 + local.get $3 + i32.add + i32.load8_u + i32.store8 + br $continue|3 + end end end - loop $continue|4 - local.get $2 - i32.const 8 - i32.ge_u - if - local.get $2 + block $break|4 + loop $continue|4 + local.get $3 i32.const 8 - i32.sub - local.tee $2 - local.get $0 - i32.add - local.get $1 - local.get $2 - i32.add - i64.load - i64.store - br $continue|4 + i32.ge_u + if + local.get $3 + i32.const 8 + i32.sub + local.set $3 + local.get $5 + local.get $3 + i32.add + local.get $4 + local.get $3 + i32.add + i64.load + i64.store + br $continue|4 + end end end end - loop $continue|5 - local.get $2 - if - local.get $2 - i32.const 1 - i32.sub - local.tee $2 - local.get $0 - i32.add - local.get $1 - local.get $2 - i32.add - i32.load8_u - i32.store8 - br $continue|5 + block $break|5 + loop $continue|5 + local.get $3 + if + local.get $5 + local.get $3 + i32.const 1 + i32.sub + local.tee $3 + i32.add + local.get $4 + local.get $3 + i32.add + i32.load8_u + i32.store8 + br $continue|5 + end end end end end ) - (func $~lib/util/runtime/makeArray (; 34 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + (func $~lib/rt/common/__allocArray (; 61 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) (local $4 i32) (local $5 i32) + (local $6 i32) i32.const 16 - call $~lib/util/runtime/allocate local.get $2 - call $~lib/util/runtime/register - local.set $2 + call $~lib/rt/tlsf/__alloc + local.set $4 local.get $0 local.get $1 i32.shl - local.tee $4 - call $~lib/util/runtime/allocate - i32.const 15 - call $~lib/util/runtime/register - local.tee $1 local.set $5 - local.get $2 - i32.load - drop - local.get $2 local.get $5 - i32.store - local.get $2 - local.get $1 - i32.store offset=4 - local.get $2 + i32.const 15 + call $~lib/rt/tlsf/__alloc + local.set $6 local.get $4 + local.get $6 + call $~lib/rt/purerc/__retain + i32.store + local.get $4 + local.get $6 + i32.store offset=4 + local.get $4 + local.get $5 i32.store offset=8 - local.get $2 + local.get $4 local.get $0 i32.store offset=12 local.get $3 if - local.get $1 + local.get $6 local.get $3 - local.get $4 + local.get $5 call $~lib/memory/memory.copy end - local.get $2 + local.get $4 ) - (func $~lib/typedarray/Int8Array#__get (; 35 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array#get:length (; 62 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + local.get $0 + i32.load offset=12 + ) + (func $~lib/typedarray/Int8Array#__get (; 63 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $1 local.get $0 i32.load offset=8 i32.ge_u if - i32.const 0 - i32.const 192 - i32.const 28 + i32.const 288 + i32.const 344 + i32.const 27 i32.const 44 call $~lib/builtins/abort unreachable @@ -2182,45 +4001,73 @@ i32.add i32.load8_s ) - (func $~lib/array/Array#__get (; 36 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array#__unchecked_get (; 64 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 0 + i32.shl + i32.add + i32.load8_s + ) + (func $~lib/array/Array#__get (; 65 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $1 local.get $0 i32.load offset=8 + i32.const 0 + i32.shr_u i32.ge_u if - i32.const 0 - i32.const 272 - i32.const 99 + i32.const 288 + i32.const 480 + i32.const 100 i32.const 61 call $~lib/builtins/abort unreachable end local.get $0 - i32.load offset=4 local.get $1 - i32.add - i32.load8_s + call $~lib/array/Array#__unchecked_get ) - (func $std/typedarray/isInt8ArrayEqual (; 37 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $std/typedarray/isInt8ArrayEqual (; 66 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) + (local $4 i32) local.get $0 - i32.load offset=8 + call $~lib/rt/purerc/__retain + drop local.get $1 - i32.load offset=12 + call $~lib/rt/purerc/__retain + drop + local.get $0 + call $~lib/typedarray/Int8Array#get:length + local.get $1 + call $~lib/array/Array#get:length i32.ne if i32.const 0 + local.set $2 + local.get $0 + call $~lib/rt/purerc/__release + local.get $1 + call $~lib/rt/purerc/__release + local.get $2 return end - local.get $0 - i32.load offset=8 - local.set $3 - loop $repeat|0 - local.get $2 - local.get $3 - i32.lt_s - if + block $break|0 + block + i32.const 0 + local.set $2 + local.get $0 + call $~lib/typedarray/Int8Array#get:length + local.set $3 + end + loop $repeat|0 + local.get $2 + local.get $3 + i32.lt_s + i32.eqz + br_if $break|0 local.get $0 local.get $2 call $~lib/typedarray/Int8Array#__get @@ -2230,197 +4077,261 @@ i32.ne if i32.const 0 + local.set $4 + local.get $0 + call $~lib/rt/purerc/__release + local.get $1 + call $~lib/rt/purerc/__release + local.get $4 return - else - local.get $2 + end + local.get $2 + i32.const 1 + i32.add + local.set $2 + br $repeat|0 + unreachable + end + unreachable + end + i32.const 1 + local.set $3 + local.get $0 + call $~lib/rt/purerc/__release + local.get $1 + call $~lib/rt/purerc/__release + local.get $3 + ) + (func $~lib/typedarray/Int8Array#subarray (; 67 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + block $~lib/typedarray/SUBARRAY<~lib/typedarray/Int8Array,i8>|inlined.0 (result i32) + local.get $0 + call $~lib/rt/purerc/__retain + local.set $5 + local.get $1 + local.set $4 + local.get $2 + local.set $3 + local.get $5 + call $~lib/typedarray/Int8Array#get:length + local.set $6 + local.get $4 + i32.const 0 + i32.lt_s + if + local.get $6 + local.get $4 + i32.add + local.tee $7 + i32.const 0 + local.tee $8 + local.get $7 + local.get $8 + i32.gt_s + select + local.set $4 + else + local.get $4 + local.tee $7 + local.get $6 + local.tee $8 + local.get $7 + local.get $8 + i32.lt_s + select + local.set $4 + end + local.get $3 + i32.const 0 + i32.lt_s + if + local.get $6 + local.get $3 + i32.add + local.tee $7 + local.get $4 + local.tee $8 + local.get $7 + local.get $8 + i32.gt_s + select + local.set $3 + else + local.get $3 + local.tee $7 + local.get $6 + local.tee $8 + local.get $7 + local.get $8 + i32.lt_s + select + local.tee $7 + local.get $4 + local.tee $8 + local.get $7 + local.get $8 + i32.gt_s + select + local.set $3 + end + i32.const 12 + i32.const 17 + call $~lib/rt/tlsf/__alloc + local.set $7 + local.get $7 + local.tee $8 + local.get $5 + i32.load + local.get $8 + i32.load + call $~lib/rt/purerc/__retainRelease + i32.store + local.get $7 + local.get $5 + i32.load offset=4 + local.get $4 + i32.const 0 + i32.shl + i32.add + i32.store offset=4 + local.get $7 + local.get $3 + local.get $4 + i32.sub + i32.const 0 + i32.shl + i32.store offset=8 + local.get $7 + call $~lib/rt/purerc/__retain + local.set $8 + local.get $5 + call $~lib/rt/purerc/__release + local.get $8 + end + local.tee $7 + call $~lib/rt/purerc/__retain + local.set $6 + local.get $7 + call $~lib/rt/purerc/__release + local.get $6 + ) + (func $~lib/typedarray/Int32Array#fill (; 68 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) + (local $10 i32) + (local $11 i32) + block $~lib/typedarray/FILL<~lib/typedarray/Int32Array,i32>|inlined.0 (result i32) + local.get $0 + call $~lib/rt/purerc/__retain + local.set $7 + local.get $1 + local.set $6 + local.get $2 + local.set $5 + local.get $3 + local.set $4 + local.get $7 + i32.load offset=4 + local.set $8 + local.get $7 + call $~lib/typedarray/Int32Array#get:length + local.set $9 + local.get $5 + i32.const 0 + i32.lt_s + if (result i32) + local.get $9 + local.get $5 + i32.add + local.tee $10 + i32.const 0 + local.tee $11 + local.get $10 + local.get $11 + i32.gt_s + select + else + local.get $5 + local.tee $10 + local.get $9 + local.tee $11 + local.get $10 + local.get $11 + i32.lt_s + select + end + local.set $5 + local.get $4 + i32.const 0 + i32.lt_s + if (result i32) + local.get $9 + local.get $4 + i32.add + local.tee $10 + i32.const 0 + local.tee $11 + local.get $10 + local.get $11 + i32.gt_s + select + else + local.get $4 + local.tee $10 + local.get $9 + local.tee $11 + local.get $10 + local.get $11 + i32.lt_s + select + end + local.set $4 + block $break|0 + loop $repeat|0 + local.get $5 + local.get $4 + i32.lt_s + i32.eqz + br_if $break|0 + local.get $8 + local.get $5 + i32.const 2 + i32.shl + i32.add + local.get $6 + i32.store + local.get $5 i32.const 1 i32.add - local.set $2 + local.set $5 br $repeat|0 + unreachable end unreachable end + local.get $7 end - i32.const 1 + local.tee $9 + call $~lib/rt/purerc/__retain + local.set $8 + local.get $9 + call $~lib/rt/purerc/__release + local.get $8 ) - (func $~lib/typedarray/Int8Array#subarray (; 38 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - (local $4 i32) + (func $~lib/array/Array#get:length (; 69 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 - i32.load offset=8 - local.set $3 - local.get $1 - i32.const 0 - i32.lt_s - if (result i32) - local.get $1 - local.get $3 - i32.add - local.tee $1 - i32.const 0 - local.get $1 - i32.const 0 - i32.gt_s - select - else - local.get $1 - local.get $3 - local.get $1 - local.get $3 - i32.lt_s - select - end - local.set $1 - local.get $2 - i32.const 0 - i32.lt_s - if (result i32) - local.get $2 - local.get $3 - i32.add - local.tee $2 - local.get $1 - local.get $2 - local.get $1 - i32.gt_s - select - else - local.get $2 - local.get $3 - local.get $2 - local.get $3 - i32.lt_s - select - local.tee $2 - local.get $1 - local.get $2 - local.get $1 - i32.gt_s - select - end - local.set $3 - i32.const 12 - call $~lib/util/runtime/allocate - local.set $2 - local.get $0 - i32.load offset=4 - local.set $4 - local.get $0 - i32.load - local.tee $0 - local.get $2 - i32.load - i32.ne - drop - local.get $2 - local.get $0 - i32.store - local.get $2 - local.get $1 - local.get $4 - i32.add - i32.store offset=4 - local.get $2 - local.get $3 - local.get $1 - i32.sub - i32.store offset=8 - local.get $2 - i32.const 17 - call $~lib/util/runtime/register + i32.load offset=12 ) - (func $~lib/typedarray/Int32Array#fill (; 39 ;) (type $FUNCSIG$viiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) - (local $4 i32) - (local $5 i32) - local.get $1 - local.set $4 - local.get $0 - i32.load offset=4 - local.set $5 - local.get $0 - i32.load offset=8 - i32.const 2 - i32.shr_u - local.set $1 - local.get $2 - i32.const 0 - i32.lt_s - if (result i32) - local.get $1 - local.get $2 - i32.add - local.tee $0 - i32.const 0 - local.get $0 - i32.const 0 - i32.gt_s - select - else - local.get $2 - local.get $1 - local.get $2 - local.get $1 - i32.lt_s - select - end - local.set $0 - local.get $3 - i32.const 0 - i32.lt_s - if (result i32) - local.get $1 - local.get $3 - i32.add - local.tee $1 - i32.const 0 - local.get $1 - i32.const 0 - i32.gt_s - select - else - local.get $3 - local.get $1 - local.get $3 - local.get $1 - i32.lt_s - select - end - local.set $1 - loop $repeat|0 - local.get $0 - local.get $1 - i32.lt_s - if - local.get $0 - i32.const 2 - i32.shl - local.get $5 - i32.add - local.get $4 - i32.store - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $repeat|0 - end - end - ) - (func $~lib/array/Array#__get (; 40 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - local.get $1 - local.get $0 - i32.load offset=8 - i32.const 2 - i32.shr_u - i32.ge_u - if - i32.const 0 - i32.const 272 - i32.const 99 - i32.const 61 - call $~lib/builtins/abort - unreachable - end + (func $~lib/array/Array#__unchecked_get (; 70 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $0 i32.load offset=4 local.get $1 @@ -2429,30 +4340,64 @@ i32.add i32.load ) - (func $std/typedarray/isInt32ArrayEqual (; 41 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) + (func $~lib/array/Array#__get (; 71 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $1 - i32.load offset=12 local.get $0 i32.load offset=8 i32.const 2 i32.shr_u + i32.ge_u + if + i32.const 288 + i32.const 480 + i32.const 100 + i32.const 61 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + call $~lib/array/Array#__unchecked_get + ) + (func $std/typedarray/isInt32ArrayEqual (; 72 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + local.get $0 + call $~lib/rt/purerc/__retain + drop + local.get $1 + call $~lib/rt/purerc/__retain + drop + local.get $0 + call $~lib/typedarray/Int32Array#get:length + local.get $1 + call $~lib/array/Array#get:length i32.ne if i32.const 0 + local.set $2 + local.get $0 + call $~lib/rt/purerc/__release + local.get $1 + call $~lib/rt/purerc/__release + local.get $2 return end - local.get $0 - i32.load offset=8 - i32.const 2 - i32.shr_u - local.set $3 - loop $repeat|0 - local.get $2 - local.get $3 - i32.lt_s - if + block $break|0 + block + i32.const 0 + local.set $2 + local.get $0 + call $~lib/typedarray/Int32Array#get:length + local.set $3 + end + loop $repeat|0 + local.get $2 + local.get $3 + i32.lt_s + i32.eqz + br_if $break|0 local.get $0 local.get $2 call $~lib/typedarray/Int32Array#__get @@ -2462,82 +4407,141 @@ i32.ne if i32.const 0 + local.set $4 + local.get $0 + call $~lib/rt/purerc/__release + local.get $1 + call $~lib/rt/purerc/__release + local.get $4 return - else - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $repeat|0 end + local.get $2 + i32.const 1 + i32.add + local.set $2 + br $repeat|0 unreachable end + unreachable end i32.const 1 + local.set $3 + local.get $0 + call $~lib/rt/purerc/__release + local.get $1 + call $~lib/rt/purerc/__release + local.get $3 ) - (func $std/typedarray/testReduce<~lib/typedarray/Int8Array,i8>~anonymous|0 (; 42 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + (func $std/typedarray/testReduce<~lib/typedarray/Int8Array,i8>~anonymous|0 (; 73 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + (local $4 i32) + local.get $3 + call $~lib/rt/purerc/__retain + drop local.get $0 local.get $1 i32.add + local.set $4 + local.get $3 + call $~lib/rt/purerc/__release + local.get $4 ) - (func $~lib/typedarray/Int8Array#reduce (; 43 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) + (func $~lib/typedarray/Int8Array#reduce (; 74 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) local.get $0 - i32.load offset=4 - local.set $3 - local.get $0 - i32.load offset=8 + call $~lib/rt/purerc/__retain + local.set $5 + local.get $1 local.set $4 - loop $repeat|0 - local.get $1 - local.get $4 - i32.lt_s - if - i32.const 4 - global.set $~lib/argc - local.get $2 - local.get $1 - local.get $3 - i32.add - i32.load8_s - local.get $1 - local.get $0 - call $std/typedarray/testReduce<~lib/typedarray/Int8Array,i8>~anonymous|0 - local.set $2 - local.get $1 + local.get $2 + local.set $3 + local.get $5 + i32.load offset=4 + local.set $6 + block $break|0 + block + i32.const 0 + local.set $7 + local.get $5 + call $~lib/typedarray/Int8Array#get:length + local.set $8 + end + loop $repeat|0 + local.get $7 + local.get $8 + i32.lt_s + i32.eqz + br_if $break|0 + block (result i32) + i32.const 4 + global.set $~lib/argc + local.get $3 + local.get $6 + local.get $7 + i32.const 0 + i32.shl + i32.add + i32.load8_s + local.get $7 + local.get $5 + local.get $4 + call_indirect (type $FUNCSIG$iiiii) + end + local.set $3 + local.get $7 i32.const 1 i32.add - local.set $1 + local.set $7 br $repeat|0 + unreachable end + unreachable end - local.get $2 + local.get $3 + local.set $8 + local.get $5 + call $~lib/rt/purerc/__release + local.get $8 ) - (func $std/typedarray/testReduce<~lib/typedarray/Int8Array,i8> (; 44 ;) (type $FUNCSIG$v) + (func $std/typedarray/testReduce<~lib/typedarray/Int8Array,i8> (; 75 ;) (type $FUNCSIG$v) (local $0 i32) + (local $1 i32) + (local $2 i32) + i32.const 0 i32.const 3 call $~lib/typedarray/Int8Array#constructor local.tee $0 + call $~lib/rt/purerc/__retain + local.set $1 + local.get $1 i32.const 0 i32.const 1 call $~lib/typedarray/Int8Array#__set - local.get $0 + local.get $1 i32.const 1 i32.const 2 call $~lib/typedarray/Int8Array#__set - local.get $0 + local.get $1 i32.const 2 i32.const 3 call $~lib/typedarray/Int8Array#__set - local.get $0 + local.get $1 + i32.const 2 + i32.const 0 call $~lib/typedarray/Int8Array#reduce - i32.const 255 - i32.and + local.set $2 + local.get $2 + i32.const 24 + i32.shl + i32.const 24 + i32.shr_s i32.const 6 - i32.ne + i32.eq + i32.eqz if i32.const 0 i32.const 24 @@ -2546,16 +4550,20 @@ call $~lib/builtins/abort unreachable end + local.get $0 + call $~lib/rt/purerc/__release + local.get $1 + call $~lib/rt/purerc/__release ) - (func $~lib/typedarray/Uint8Array#__set (; 45 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/typedarray/Uint8Array#__set (; 76 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) local.get $1 local.get $0 i32.load offset=8 i32.ge_u if - i32.const 0 - i32.const 192 - i32.const 116 + i32.const 288 + i32.const 344 + i32.const 115 i32.const 44 call $~lib/builtins/abort unreachable @@ -2567,66 +4575,114 @@ local.get $2 i32.store8 ) - (func $~lib/typedarray/Uint8Array#reduce (; 46 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) + (func $std/typedarray/testReduce<~lib/typedarray/Uint8Array,u8>~anonymous|0 (; 77 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + (local $4 i32) + local.get $3 + call $~lib/rt/purerc/__retain + drop + local.get $0 + local.get $1 + i32.add + local.set $4 + local.get $3 + call $~lib/rt/purerc/__release + local.get $4 + ) + (func $~lib/typedarray/Uint8Array#reduce (; 78 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) local.get $0 - i32.load offset=4 - local.set $4 - local.get $0 - i32.load offset=8 + call $~lib/rt/purerc/__retain local.set $5 - loop $repeat|0 - local.get $2 - local.get $5 - i32.lt_s - if - i32.const 4 - global.set $~lib/argc - local.get $3 - local.get $2 - local.get $4 - i32.add - i32.load8_u - local.get $2 - local.get $0 - local.get $1 - call_indirect (type $FUNCSIG$iiiii) + local.get $1 + local.set $4 + local.get $2 + local.set $3 + local.get $5 + i32.load offset=4 + local.set $6 + block $break|0 + block + i32.const 0 + local.set $7 + local.get $5 + call $~lib/typedarray/Uint8Array#get:length + local.set $8 + end + loop $repeat|0 + local.get $7 + local.get $8 + i32.lt_s + i32.eqz + br_if $break|0 + block (result i32) + i32.const 4 + global.set $~lib/argc + local.get $3 + local.get $6 + local.get $7 + i32.const 0 + i32.shl + i32.add + i32.load8_u + local.get $7 + local.get $5 + local.get $4 + call_indirect (type $FUNCSIG$iiiii) + end local.set $3 - local.get $2 + local.get $7 i32.const 1 i32.add - local.set $2 + local.set $7 br $repeat|0 + unreachable end + unreachable end local.get $3 + local.set $8 + local.get $5 + call $~lib/rt/purerc/__release + local.get $8 ) - (func $std/typedarray/testReduce<~lib/typedarray/Uint8Array,u8> (; 47 ;) (type $FUNCSIG$v) + (func $std/typedarray/testReduce<~lib/typedarray/Uint8Array,u8> (; 79 ;) (type $FUNCSIG$v) (local $0 i32) + (local $1 i32) + (local $2 i32) + i32.const 0 i32.const 3 call $~lib/typedarray/Uint8Array#constructor local.tee $0 + call $~lib/rt/purerc/__retain + local.set $1 + local.get $1 i32.const 0 i32.const 1 call $~lib/typedarray/Uint8Array#__set - local.get $0 + local.get $1 i32.const 1 i32.const 2 call $~lib/typedarray/Uint8Array#__set - local.get $0 + local.get $1 i32.const 2 i32.const 3 call $~lib/typedarray/Uint8Array#__set - local.get $0 + local.get $1 i32.const 3 + i32.const 0 call $~lib/typedarray/Uint8Array#reduce + local.set $2 + local.get $2 i32.const 255 i32.and i32.const 6 - i32.ne + i32.eq + i32.eqz if i32.const 0 i32.const 24 @@ -2635,291 +4691,119 @@ call $~lib/builtins/abort unreachable end - ) - (func $std/typedarray/testReduce<~lib/typedarray/Uint8ClampedArray,u8> (; 48 ;) (type $FUNCSIG$v) - (local $0 i32) - i32.const 3 - call $~lib/typedarray/Uint8ClampedArray#constructor - local.tee $0 - i32.const 0 - i32.const 1 - call $~lib/typedarray/Uint8ClampedArray#__set local.get $0 - i32.const 1 - i32.const 2 - call $~lib/typedarray/Uint8ClampedArray#__set - local.get $0 - i32.const 2 - i32.const 3 - call $~lib/typedarray/Uint8ClampedArray#__set - local.get $0 - i32.const 4 - call $~lib/typedarray/Uint8Array#reduce - i32.const 255 - i32.and - i32.const 6 - i32.ne - if - i32.const 0 - i32.const 24 - i32.const 252 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - ) - (func $~lib/typedarray/Int16Array#__set (; 49 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + call $~lib/rt/purerc/__release local.get $1 - local.get $0 - i32.load offset=8 - i32.const 1 - i32.shr_u - i32.ge_u - if - i32.const 0 - i32.const 192 - i32.const 280 - i32.const 63 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load offset=4 - local.get $1 - i32.const 1 - i32.shl - i32.add - local.get $2 - i32.store16 + call $~lib/rt/purerc/__release ) - (func $~lib/typedarray/Int16Array#reduce (; 50 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) + (func $std/typedarray/testReduce<~lib/typedarray/Uint8ClampedArray,u8>~anonymous|0 (; 80 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) (local $4 i32) + local.get $3 + call $~lib/rt/purerc/__retain + drop local.get $0 - i32.load offset=4 - local.set $3 - local.get $0 - i32.load offset=8 - i32.const 1 - i32.shr_u - local.set $4 - loop $repeat|0 - local.get $1 - local.get $4 - i32.lt_s - if - i32.const 4 - global.set $~lib/argc - local.get $2 - local.get $1 - i32.const 1 - i32.shl - local.get $3 - i32.add - i32.load16_s - local.get $1 - local.get $0 - call $std/typedarray/testReduce<~lib/typedarray/Int8Array,i8>~anonymous|0 - local.set $2 - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $repeat|0 - end - end - local.get $2 - ) - (func $std/typedarray/testReduce<~lib/typedarray/Int16Array,i16> (; 51 ;) (type $FUNCSIG$v) - (local $0 i32) - i32.const 3 - call $~lib/typedarray/Int16Array#constructor - local.tee $0 - i32.const 0 - i32.const 1 - call $~lib/typedarray/Int16Array#__set - local.get $0 - i32.const 1 - i32.const 2 - call $~lib/typedarray/Int16Array#__set - local.get $0 - i32.const 2 - i32.const 3 - call $~lib/typedarray/Int16Array#__set - local.get $0 - call $~lib/typedarray/Int16Array#reduce - i32.const 65535 - i32.and - i32.const 6 - i32.ne - if - i32.const 0 - i32.const 24 - i32.const 252 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - ) - (func $~lib/typedarray/Uint16Array#__set (; 52 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) local.get $1 - local.get $0 - i32.load offset=8 - i32.const 1 - i32.shr_u - i32.ge_u - if - i32.const 0 - i32.const 192 - i32.const 362 - i32.const 63 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load offset=4 - local.get $1 - i32.const 1 - i32.shl i32.add - local.get $2 - i32.store16 - ) - (func $~lib/typedarray/Uint16Array#reduce (; 53 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - local.get $0 - i32.load offset=4 - local.set $3 - local.get $0 - i32.load offset=8 - i32.const 1 - i32.shr_u local.set $4 - loop $repeat|0 - local.get $1 - local.get $4 - i32.lt_s - if - i32.const 4 - global.set $~lib/argc - local.get $2 - local.get $1 - i32.const 1 - i32.shl - local.get $3 - i32.add - i32.load16_u - local.get $1 - local.get $0 - call $std/typedarray/testReduce<~lib/typedarray/Int8Array,i8>~anonymous|0 - local.set $2 - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $repeat|0 - end - end - local.get $2 + local.get $3 + call $~lib/rt/purerc/__release + local.get $4 ) - (func $std/typedarray/testReduce<~lib/typedarray/Uint16Array,u16> (; 54 ;) (type $FUNCSIG$v) - (local $0 i32) - i32.const 3 - call $~lib/typedarray/Uint16Array#constructor - local.tee $0 - i32.const 0 - i32.const 1 - call $~lib/typedarray/Uint16Array#__set - local.get $0 - i32.const 1 - i32.const 2 - call $~lib/typedarray/Uint16Array#__set - local.get $0 - i32.const 2 - i32.const 3 - call $~lib/typedarray/Uint16Array#__set - local.get $0 - call $~lib/typedarray/Uint16Array#reduce - i32.const 65535 - i32.and - i32.const 6 - i32.ne - if - i32.const 0 - i32.const 24 - i32.const 252 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - ) - (func $~lib/typedarray/Int32Array#reduce (; 55 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) + (func $~lib/typedarray/Uint8ClampedArray#reduce (; 81 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) local.get $0 - i32.load offset=4 - local.set $4 - local.get $0 - i32.load offset=8 - i32.const 2 - i32.shr_u + call $~lib/rt/purerc/__retain local.set $5 - loop $repeat|0 - local.get $2 - local.get $5 - i32.lt_s - if - i32.const 4 - global.set $~lib/argc - local.get $3 - local.get $2 - i32.const 2 - i32.shl - local.get $4 - i32.add - i32.load - local.get $2 - local.get $0 - local.get $1 - call_indirect (type $FUNCSIG$iiiii) + local.get $1 + local.set $4 + local.get $2 + local.set $3 + local.get $5 + i32.load offset=4 + local.set $6 + block $break|0 + block + i32.const 0 + local.set $7 + local.get $5 + call $~lib/typedarray/Uint8ClampedArray#get:length + local.set $8 + end + loop $repeat|0 + local.get $7 + local.get $8 + i32.lt_s + i32.eqz + br_if $break|0 + block (result i32) + i32.const 4 + global.set $~lib/argc + local.get $3 + local.get $6 + local.get $7 + i32.const 0 + i32.shl + i32.add + i32.load8_u + local.get $7 + local.get $5 + local.get $4 + call_indirect (type $FUNCSIG$iiiii) + end local.set $3 - local.get $2 + local.get $7 i32.const 1 i32.add - local.set $2 + local.set $7 br $repeat|0 + unreachable end + unreachable end local.get $3 + local.set $8 + local.get $5 + call $~lib/rt/purerc/__release + local.get $8 ) - (func $std/typedarray/testReduce<~lib/typedarray/Int32Array,i32> (; 56 ;) (type $FUNCSIG$v) + (func $std/typedarray/testReduce<~lib/typedarray/Uint8ClampedArray,u8> (; 82 ;) (type $FUNCSIG$v) (local $0 i32) + (local $1 i32) + (local $2 i32) + i32.const 0 i32.const 3 - call $~lib/typedarray/Int32Array#constructor + call $~lib/typedarray/Uint8ClampedArray#constructor local.tee $0 + call $~lib/rt/purerc/__retain + local.set $1 + local.get $1 i32.const 0 i32.const 1 - call $~lib/typedarray/Int32Array#__set - local.get $0 + call $~lib/typedarray/Uint8ClampedArray#__set + local.get $1 i32.const 1 i32.const 2 - call $~lib/typedarray/Int32Array#__set - local.get $0 + call $~lib/typedarray/Uint8ClampedArray#__set + local.get $1 i32.const 2 i32.const 3 - call $~lib/typedarray/Int32Array#__set - local.get $0 - i32.const 7 - call $~lib/typedarray/Int32Array#reduce + call $~lib/typedarray/Uint8ClampedArray#__set + local.get $1 + i32.const 4 + i32.const 0 + call $~lib/typedarray/Uint8ClampedArray#reduce + local.set $2 + local.get $2 + i32.const 255 + i32.and i32.const 6 - i32.ne + i32.eq + i32.eqz if i32.const 0 i32.const 24 @@ -2928,8 +4812,423 @@ call $~lib/builtins/abort unreachable end + local.get $0 + call $~lib/rt/purerc/__release + local.get $1 + call $~lib/rt/purerc/__release ) - (func $~lib/typedarray/Uint32Array#__set (; 57 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/typedarray/Int16Array#__set (; 83 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + local.get $1 + local.get $0 + i32.load offset=8 + i32.const 1 + i32.shr_u + i32.ge_u + if + i32.const 288 + i32.const 344 + i32.const 279 + i32.const 63 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 1 + i32.shl + i32.add + local.get $2 + i32.store16 + ) + (func $std/typedarray/testReduce<~lib/typedarray/Int16Array,i16>~anonymous|0 (; 84 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + (local $4 i32) + local.get $3 + call $~lib/rt/purerc/__retain + drop + local.get $0 + local.get $1 + i32.add + local.set $4 + local.get $3 + call $~lib/rt/purerc/__release + local.get $4 + ) + (func $~lib/typedarray/Int16Array#reduce (; 85 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + local.get $0 + call $~lib/rt/purerc/__retain + local.set $5 + local.get $1 + local.set $4 + local.get $2 + local.set $3 + local.get $5 + i32.load offset=4 + local.set $6 + block $break|0 + block + i32.const 0 + local.set $7 + local.get $5 + call $~lib/typedarray/Int16Array#get:length + local.set $8 + end + loop $repeat|0 + local.get $7 + local.get $8 + i32.lt_s + i32.eqz + br_if $break|0 + block (result i32) + i32.const 4 + global.set $~lib/argc + local.get $3 + local.get $6 + local.get $7 + i32.const 1 + i32.shl + i32.add + i32.load16_s + local.get $7 + local.get $5 + local.get $4 + call_indirect (type $FUNCSIG$iiiii) + end + local.set $3 + local.get $7 + i32.const 1 + i32.add + local.set $7 + br $repeat|0 + unreachable + end + unreachable + end + local.get $3 + local.set $8 + local.get $5 + call $~lib/rt/purerc/__release + local.get $8 + ) + (func $std/typedarray/testReduce<~lib/typedarray/Int16Array,i16> (; 86 ;) (type $FUNCSIG$v) + (local $0 i32) + (local $1 i32) + (local $2 i32) + i32.const 0 + i32.const 3 + call $~lib/typedarray/Int16Array#constructor + local.tee $0 + call $~lib/rt/purerc/__retain + local.set $1 + local.get $1 + i32.const 0 + i32.const 1 + call $~lib/typedarray/Int16Array#__set + local.get $1 + i32.const 1 + i32.const 2 + call $~lib/typedarray/Int16Array#__set + local.get $1 + i32.const 2 + i32.const 3 + call $~lib/typedarray/Int16Array#__set + local.get $1 + i32.const 5 + i32.const 0 + call $~lib/typedarray/Int16Array#reduce + local.set $2 + local.get $2 + i32.const 16 + i32.shl + i32.const 16 + i32.shr_s + i32.const 6 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 252 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $0 + call $~lib/rt/purerc/__release + local.get $1 + call $~lib/rt/purerc/__release + ) + (func $~lib/typedarray/Uint16Array#__set (; 87 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + local.get $1 + local.get $0 + i32.load offset=8 + i32.const 1 + i32.shr_u + i32.ge_u + if + i32.const 288 + i32.const 344 + i32.const 361 + i32.const 63 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 1 + i32.shl + i32.add + local.get $2 + i32.store16 + ) + (func $std/typedarray/testReduce<~lib/typedarray/Uint16Array,u16>~anonymous|0 (; 88 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + (local $4 i32) + local.get $3 + call $~lib/rt/purerc/__retain + drop + local.get $0 + local.get $1 + i32.add + local.set $4 + local.get $3 + call $~lib/rt/purerc/__release + local.get $4 + ) + (func $~lib/typedarray/Uint16Array#reduce (; 89 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + local.get $0 + call $~lib/rt/purerc/__retain + local.set $5 + local.get $1 + local.set $4 + local.get $2 + local.set $3 + local.get $5 + i32.load offset=4 + local.set $6 + block $break|0 + block + i32.const 0 + local.set $7 + local.get $5 + call $~lib/typedarray/Uint16Array#get:length + local.set $8 + end + loop $repeat|0 + local.get $7 + local.get $8 + i32.lt_s + i32.eqz + br_if $break|0 + block (result i32) + i32.const 4 + global.set $~lib/argc + local.get $3 + local.get $6 + local.get $7 + i32.const 1 + i32.shl + i32.add + i32.load16_u + local.get $7 + local.get $5 + local.get $4 + call_indirect (type $FUNCSIG$iiiii) + end + local.set $3 + local.get $7 + i32.const 1 + i32.add + local.set $7 + br $repeat|0 + unreachable + end + unreachable + end + local.get $3 + local.set $8 + local.get $5 + call $~lib/rt/purerc/__release + local.get $8 + ) + (func $std/typedarray/testReduce<~lib/typedarray/Uint16Array,u16> (; 90 ;) (type $FUNCSIG$v) + (local $0 i32) + (local $1 i32) + (local $2 i32) + i32.const 0 + i32.const 3 + call $~lib/typedarray/Uint16Array#constructor + local.tee $0 + call $~lib/rt/purerc/__retain + local.set $1 + local.get $1 + i32.const 0 + i32.const 1 + call $~lib/typedarray/Uint16Array#__set + local.get $1 + i32.const 1 + i32.const 2 + call $~lib/typedarray/Uint16Array#__set + local.get $1 + i32.const 2 + i32.const 3 + call $~lib/typedarray/Uint16Array#__set + local.get $1 + i32.const 6 + i32.const 0 + call $~lib/typedarray/Uint16Array#reduce + local.set $2 + local.get $2 + i32.const 65535 + i32.and + i32.const 6 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 252 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $0 + call $~lib/rt/purerc/__release + local.get $1 + call $~lib/rt/purerc/__release + ) + (func $std/typedarray/testReduce<~lib/typedarray/Int32Array,i32>~anonymous|0 (; 91 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + (local $4 i32) + local.get $3 + call $~lib/rt/purerc/__retain + drop + local.get $0 + local.get $1 + i32.add + local.set $4 + local.get $3 + call $~lib/rt/purerc/__release + local.get $4 + ) + (func $~lib/typedarray/Int32Array#reduce (; 92 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + local.get $0 + call $~lib/rt/purerc/__retain + local.set $5 + local.get $1 + local.set $4 + local.get $2 + local.set $3 + local.get $5 + i32.load offset=4 + local.set $6 + block $break|0 + block + i32.const 0 + local.set $7 + local.get $5 + call $~lib/typedarray/Int32Array#get:length + local.set $8 + end + loop $repeat|0 + local.get $7 + local.get $8 + i32.lt_s + i32.eqz + br_if $break|0 + block (result i32) + i32.const 4 + global.set $~lib/argc + local.get $3 + local.get $6 + local.get $7 + i32.const 2 + i32.shl + i32.add + i32.load + local.get $7 + local.get $5 + local.get $4 + call_indirect (type $FUNCSIG$iiiii) + end + local.set $3 + local.get $7 + i32.const 1 + i32.add + local.set $7 + br $repeat|0 + unreachable + end + unreachable + end + local.get $3 + local.set $8 + local.get $5 + call $~lib/rt/purerc/__release + local.get $8 + ) + (func $std/typedarray/testReduce<~lib/typedarray/Int32Array,i32> (; 93 ;) (type $FUNCSIG$v) + (local $0 i32) + (local $1 i32) + (local $2 i32) + i32.const 0 + i32.const 3 + call $~lib/typedarray/Int32Array#constructor + local.tee $0 + call $~lib/rt/purerc/__retain + local.set $1 + local.get $1 + i32.const 0 + i32.const 1 + call $~lib/typedarray/Int32Array#__set + local.get $1 + i32.const 1 + i32.const 2 + call $~lib/typedarray/Int32Array#__set + local.get $1 + i32.const 2 + i32.const 3 + call $~lib/typedarray/Int32Array#__set + local.get $1 + i32.const 7 + i32.const 0 + call $~lib/typedarray/Int32Array#reduce + local.set $2 + local.get $2 + i32.const 6 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 252 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $0 + call $~lib/rt/purerc/__release + local.get $1 + call $~lib/rt/purerc/__release + ) + (func $~lib/typedarray/Uint32Array#__set (; 94 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) local.get $1 local.get $0 i32.load offset=8 @@ -2937,9 +5236,9 @@ i32.shr_u i32.ge_u if - i32.const 0 - i32.const 192 - i32.const 526 + i32.const 288 + i32.const 344 + i32.const 525 i32.const 63 call $~lib/builtins/abort unreachable @@ -2953,27 +5252,112 @@ local.get $2 i32.store ) - (func $std/typedarray/testReduce<~lib/typedarray/Uint32Array,u32> (; 58 ;) (type $FUNCSIG$v) + (func $std/typedarray/testReduce<~lib/typedarray/Uint32Array,u32>~anonymous|0 (; 95 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + (local $4 i32) + local.get $3 + call $~lib/rt/purerc/__retain + drop + local.get $0 + local.get $1 + i32.add + local.set $4 + local.get $3 + call $~lib/rt/purerc/__release + local.get $4 + ) + (func $~lib/typedarray/Uint32Array#reduce (; 96 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + local.get $0 + call $~lib/rt/purerc/__retain + local.set $5 + local.get $1 + local.set $4 + local.get $2 + local.set $3 + local.get $5 + i32.load offset=4 + local.set $6 + block $break|0 + block + i32.const 0 + local.set $7 + local.get $5 + call $~lib/typedarray/Uint32Array#get:length + local.set $8 + end + loop $repeat|0 + local.get $7 + local.get $8 + i32.lt_s + i32.eqz + br_if $break|0 + block (result i32) + i32.const 4 + global.set $~lib/argc + local.get $3 + local.get $6 + local.get $7 + i32.const 2 + i32.shl + i32.add + i32.load + local.get $7 + local.get $5 + local.get $4 + call_indirect (type $FUNCSIG$iiiii) + end + local.set $3 + local.get $7 + i32.const 1 + i32.add + local.set $7 + br $repeat|0 + unreachable + end + unreachable + end + local.get $3 + local.set $8 + local.get $5 + call $~lib/rt/purerc/__release + local.get $8 + ) + (func $std/typedarray/testReduce<~lib/typedarray/Uint32Array,u32> (; 97 ;) (type $FUNCSIG$v) (local $0 i32) + (local $1 i32) + (local $2 i32) + i32.const 0 i32.const 3 call $~lib/typedarray/Uint32Array#constructor local.tee $0 + call $~lib/rt/purerc/__retain + local.set $1 + local.get $1 i32.const 0 i32.const 1 call $~lib/typedarray/Uint32Array#__set - local.get $0 + local.get $1 i32.const 1 i32.const 2 call $~lib/typedarray/Uint32Array#__set - local.get $0 + local.get $1 i32.const 2 i32.const 3 call $~lib/typedarray/Uint32Array#__set - local.get $0 + local.get $1 i32.const 8 - call $~lib/typedarray/Int32Array#reduce + i32.const 0 + call $~lib/typedarray/Uint32Array#reduce + local.set $2 + local.get $2 i32.const 6 - i32.ne + i32.eq + i32.eqz if i32.const 0 i32.const 24 @@ -2982,8 +5366,12 @@ call $~lib/builtins/abort unreachable end + local.get $0 + call $~lib/rt/purerc/__release + local.get $1 + call $~lib/rt/purerc/__release ) - (func $~lib/typedarray/Int64Array#__set (; 59 ;) (type $FUNCSIG$viij) (param $0 i32) (param $1 i32) (param $2 i64) + (func $~lib/typedarray/Int64Array#__set (; 98 ;) (type $FUNCSIG$viij) (param $0 i32) (param $1 i32) (param $2 i64) local.get $1 local.get $0 i32.load offset=8 @@ -2991,9 +5379,9 @@ i32.shr_u i32.ge_u if - i32.const 0 - i32.const 192 - i32.const 608 + i32.const 288 + i32.const 344 + i32.const 607 i32.const 63 call $~lib/builtins/abort unreachable @@ -3007,73 +5395,113 @@ local.get $2 i64.store ) - (func $std/typedarray/testReduce<~lib/typedarray/Int64Array,i64>~anonymous|0 (; 60 ;) (type $FUNCSIG$jjjii) (param $0 i64) (param $1 i64) (param $2 i32) (param $3 i32) (result i64) + (func $std/typedarray/testReduce<~lib/typedarray/Int64Array,i64>~anonymous|0 (; 99 ;) (type $FUNCSIG$jjjii) (param $0 i64) (param $1 i64) (param $2 i32) (param $3 i32) (result i64) + (local $4 i64) + local.get $3 + call $~lib/rt/purerc/__retain + drop local.get $0 local.get $1 i64.add - ) - (func $~lib/typedarray/Int64Array#reduce (; 61 ;) (type $FUNCSIG$jii) (param $0 i32) (param $1 i32) (result i64) - (local $2 i32) - (local $3 i64) - (local $4 i32) - (local $5 i32) - local.get $0 - i32.load offset=4 local.set $4 + local.get $3 + call $~lib/rt/purerc/__release + local.get $4 + ) + (func $~lib/typedarray/Int64Array#reduce (; 100 ;) (type $FUNCSIG$jiij) (param $0 i32) (param $1 i32) (param $2 i64) (result i64) + (local $3 i32) + (local $4 i32) + (local $5 i64) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i64) local.get $0 - i32.load offset=8 - i32.const 3 - i32.shr_u + call $~lib/rt/purerc/__retain + local.set $4 + local.get $1 + local.set $3 + local.get $2 local.set $5 - loop $repeat|0 - local.get $2 - local.get $5 - i32.lt_s - if - i32.const 4 - global.set $~lib/argc - local.get $3 - local.get $2 - i32.const 3 - i32.shl + local.get $4 + i32.load offset=4 + local.set $6 + block $break|0 + block + i32.const 0 + local.set $7 local.get $4 - i32.add - i64.load - local.get $2 - local.get $0 - local.get $1 - call_indirect (type $FUNCSIG$jjjii) - local.set $3 - local.get $2 + call $~lib/typedarray/Int64Array#get:length + local.set $8 + end + loop $repeat|0 + local.get $7 + local.get $8 + i32.lt_s + i32.eqz + br_if $break|0 + block (result i64) + i32.const 4 + global.set $~lib/argc + local.get $5 + local.get $6 + local.get $7 + i32.const 3 + i32.shl + i32.add + i64.load + local.get $7 + local.get $4 + local.get $3 + call_indirect (type $FUNCSIG$jjjii) + end + local.set $5 + local.get $7 i32.const 1 i32.add - local.set $2 + local.set $7 br $repeat|0 + unreachable end + unreachable end - local.get $3 + local.get $5 + local.set $9 + local.get $4 + call $~lib/rt/purerc/__release + local.get $9 ) - (func $std/typedarray/testReduce<~lib/typedarray/Int64Array,i64> (; 62 ;) (type $FUNCSIG$v) + (func $std/typedarray/testReduce<~lib/typedarray/Int64Array,i64> (; 101 ;) (type $FUNCSIG$v) (local $0 i32) + (local $1 i32) + (local $2 i64) + i32.const 0 i32.const 3 call $~lib/typedarray/Int64Array#constructor local.tee $0 + call $~lib/rt/purerc/__retain + local.set $1 + local.get $1 i32.const 0 i64.const 1 call $~lib/typedarray/Int64Array#__set - local.get $0 + local.get $1 i32.const 1 i64.const 2 call $~lib/typedarray/Int64Array#__set - local.get $0 + local.get $1 i32.const 2 i64.const 3 call $~lib/typedarray/Int64Array#__set - local.get $0 + local.get $1 i32.const 9 + i64.const 0 call $~lib/typedarray/Int64Array#reduce + local.set $2 + local.get $2 i64.const 6 - i64.ne + i64.eq + i32.eqz if i32.const 0 i32.const 24 @@ -3082,8 +5510,12 @@ call $~lib/builtins/abort unreachable end + local.get $0 + call $~lib/rt/purerc/__release + local.get $1 + call $~lib/rt/purerc/__release ) - (func $~lib/typedarray/Uint64Array#__set (; 63 ;) (type $FUNCSIG$viij) (param $0 i32) (param $1 i32) (param $2 i64) + (func $~lib/typedarray/Uint64Array#__set (; 102 ;) (type $FUNCSIG$viij) (param $0 i32) (param $1 i32) (param $2 i64) local.get $1 local.get $0 i32.load offset=8 @@ -3091,9 +5523,9 @@ i32.shr_u i32.ge_u if - i32.const 0 - i32.const 192 - i32.const 690 + i32.const 288 + i32.const 344 + i32.const 689 i32.const 63 call $~lib/builtins/abort unreachable @@ -3107,27 +5539,113 @@ local.get $2 i64.store ) - (func $std/typedarray/testReduce<~lib/typedarray/Uint64Array,u64> (; 64 ;) (type $FUNCSIG$v) + (func $std/typedarray/testReduce<~lib/typedarray/Uint64Array,u64>~anonymous|0 (; 103 ;) (type $FUNCSIG$jjjii) (param $0 i64) (param $1 i64) (param $2 i32) (param $3 i32) (result i64) + (local $4 i64) + local.get $3 + call $~lib/rt/purerc/__retain + drop + local.get $0 + local.get $1 + i64.add + local.set $4 + local.get $3 + call $~lib/rt/purerc/__release + local.get $4 + ) + (func $~lib/typedarray/Uint64Array#reduce (; 104 ;) (type $FUNCSIG$jiij) (param $0 i32) (param $1 i32) (param $2 i64) (result i64) + (local $3 i32) + (local $4 i32) + (local $5 i64) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i64) + local.get $0 + call $~lib/rt/purerc/__retain + local.set $4 + local.get $1 + local.set $3 + local.get $2 + local.set $5 + local.get $4 + i32.load offset=4 + local.set $6 + block $break|0 + block + i32.const 0 + local.set $7 + local.get $4 + call $~lib/typedarray/Uint64Array#get:length + local.set $8 + end + loop $repeat|0 + local.get $7 + local.get $8 + i32.lt_s + i32.eqz + br_if $break|0 + block (result i64) + i32.const 4 + global.set $~lib/argc + local.get $5 + local.get $6 + local.get $7 + i32.const 3 + i32.shl + i32.add + i64.load + local.get $7 + local.get $4 + local.get $3 + call_indirect (type $FUNCSIG$jjjii) + end + local.set $5 + local.get $7 + i32.const 1 + i32.add + local.set $7 + br $repeat|0 + unreachable + end + unreachable + end + local.get $5 + local.set $9 + local.get $4 + call $~lib/rt/purerc/__release + local.get $9 + ) + (func $std/typedarray/testReduce<~lib/typedarray/Uint64Array,u64> (; 105 ;) (type $FUNCSIG$v) (local $0 i32) + (local $1 i32) + (local $2 i64) + i32.const 0 i32.const 3 call $~lib/typedarray/Uint64Array#constructor local.tee $0 + call $~lib/rt/purerc/__retain + local.set $1 + local.get $1 i32.const 0 i64.const 1 call $~lib/typedarray/Uint64Array#__set - local.get $0 + local.get $1 i32.const 1 i64.const 2 call $~lib/typedarray/Uint64Array#__set - local.get $0 + local.get $1 i32.const 2 i64.const 3 call $~lib/typedarray/Uint64Array#__set - local.get $0 + local.get $1 i32.const 10 - call $~lib/typedarray/Int64Array#reduce + i64.const 0 + call $~lib/typedarray/Uint64Array#reduce + local.set $2 + local.get $2 i64.const 6 - i64.ne + i64.eq + i32.eqz if i32.const 0 i32.const 24 @@ -3136,8 +5654,12 @@ call $~lib/builtins/abort unreachable end + local.get $0 + call $~lib/rt/purerc/__release + local.get $1 + call $~lib/rt/purerc/__release ) - (func $~lib/typedarray/Float32Array#__set (; 65 ;) (type $FUNCSIG$viif) (param $0 i32) (param $1 i32) (param $2 f32) + (func $~lib/typedarray/Float32Array#__set (; 106 ;) (type $FUNCSIG$viif) (param $0 i32) (param $1 i32) (param $2 f32) local.get $1 local.get $0 i32.load offset=8 @@ -3145,9 +5667,9 @@ i32.shr_u i32.ge_u if - i32.const 0 - i32.const 192 - i32.const 772 + i32.const 288 + i32.const 344 + i32.const 771 i32.const 63 call $~lib/builtins/abort unreachable @@ -3161,71 +5683,113 @@ local.get $2 f32.store ) - (func $std/typedarray/testReduce<~lib/typedarray/Float32Array,f32>~anonymous|0 (; 66 ;) (type $FUNCSIG$fffii) (param $0 f32) (param $1 f32) (param $2 i32) (param $3 i32) (result f32) + (func $std/typedarray/testReduce<~lib/typedarray/Float32Array,f32>~anonymous|0 (; 107 ;) (type $FUNCSIG$fffii) (param $0 f32) (param $1 f32) (param $2 i32) (param $3 i32) (result f32) + (local $4 f32) + local.get $3 + call $~lib/rt/purerc/__retain + drop local.get $0 local.get $1 f32.add + local.set $4 + local.get $3 + call $~lib/rt/purerc/__release + local.get $4 ) - (func $~lib/typedarray/Float32Array#reduce (; 67 ;) (type $FUNCSIG$fi) (param $0 i32) (result f32) - (local $1 i32) - (local $2 f32) + (func $~lib/typedarray/Float32Array#reduce (; 108 ;) (type $FUNCSIG$fiif) (param $0 i32) (param $1 i32) (param $2 f32) (result f32) (local $3 i32) (local $4 i32) + (local $5 f32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 f32) local.get $0 - i32.load offset=4 - local.set $3 - local.get $0 - i32.load offset=8 - i32.const 2 - i32.shr_u + call $~lib/rt/purerc/__retain local.set $4 - loop $repeat|0 - local.get $1 - local.get $4 - i32.lt_s - if - i32.const 4 - global.set $~lib/argc - local.get $2 - local.get $1 - i32.const 2 - i32.shl - local.get $3 - i32.add - f32.load - local.get $1 - local.get $0 - call $std/typedarray/testReduce<~lib/typedarray/Float32Array,f32>~anonymous|0 - local.set $2 - local.get $1 + local.get $1 + local.set $3 + local.get $2 + local.set $5 + local.get $4 + i32.load offset=4 + local.set $6 + block $break|0 + block + i32.const 0 + local.set $7 + local.get $4 + call $~lib/typedarray/Float32Array#get:length + local.set $8 + end + loop $repeat|0 + local.get $7 + local.get $8 + i32.lt_s + i32.eqz + br_if $break|0 + block (result f32) + i32.const 4 + global.set $~lib/argc + local.get $5 + local.get $6 + local.get $7 + i32.const 2 + i32.shl + i32.add + f32.load + local.get $7 + local.get $4 + local.get $3 + call_indirect (type $FUNCSIG$fffii) + end + local.set $5 + local.get $7 i32.const 1 i32.add - local.set $1 + local.set $7 br $repeat|0 + unreachable end + unreachable end - local.get $2 + local.get $5 + local.set $9 + local.get $4 + call $~lib/rt/purerc/__release + local.get $9 ) - (func $std/typedarray/testReduce<~lib/typedarray/Float32Array,f32> (; 68 ;) (type $FUNCSIG$v) + (func $std/typedarray/testReduce<~lib/typedarray/Float32Array,f32> (; 109 ;) (type $FUNCSIG$v) (local $0 i32) + (local $1 i32) + (local $2 f32) + i32.const 0 i32.const 3 call $~lib/typedarray/Float32Array#constructor local.tee $0 + call $~lib/rt/purerc/__retain + local.set $1 + local.get $1 i32.const 0 f32.const 1 call $~lib/typedarray/Float32Array#__set - local.get $0 + local.get $1 i32.const 1 f32.const 2 call $~lib/typedarray/Float32Array#__set - local.get $0 + local.get $1 i32.const 2 f32.const 3 call $~lib/typedarray/Float32Array#__set - local.get $0 + local.get $1 + i32.const 11 + f32.const 0 call $~lib/typedarray/Float32Array#reduce + local.set $2 + local.get $2 f32.const 6 - f32.ne + f32.eq + i32.eqz if i32.const 0 i32.const 24 @@ -3234,72 +5798,118 @@ call $~lib/builtins/abort unreachable end + local.get $0 + call $~lib/rt/purerc/__release + local.get $1 + call $~lib/rt/purerc/__release ) - (func $std/typedarray/testReduce<~lib/typedarray/Float64Array,f64>~anonymous|0 (; 69 ;) (type $FUNCSIG$dddii) (param $0 f64) (param $1 f64) (param $2 i32) (param $3 i32) (result f64) + (func $std/typedarray/testReduce<~lib/typedarray/Float64Array,f64>~anonymous|0 (; 110 ;) (type $FUNCSIG$dddii) (param $0 f64) (param $1 f64) (param $2 i32) (param $3 i32) (result f64) + (local $4 f64) + local.get $3 + call $~lib/rt/purerc/__retain + drop local.get $0 local.get $1 f64.add + local.set $4 + local.get $3 + call $~lib/rt/purerc/__release + local.get $4 ) - (func $~lib/typedarray/Float64Array#reduce (; 70 ;) (type $FUNCSIG$di) (param $0 i32) (result f64) - (local $1 i32) - (local $2 f64) + (func $~lib/typedarray/Float64Array#reduce (; 111 ;) (type $FUNCSIG$diid) (param $0 i32) (param $1 i32) (param $2 f64) (result f64) (local $3 i32) (local $4 i32) + (local $5 f64) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 f64) local.get $0 - i32.load offset=4 - local.set $3 - local.get $0 - i32.load offset=8 - i32.const 3 - i32.shr_u + call $~lib/rt/purerc/__retain local.set $4 - loop $repeat|0 - local.get $1 - local.get $4 - i32.lt_s - if - i32.const 4 - global.set $~lib/argc - local.get $2 - local.get $1 - i32.const 3 - i32.shl - local.get $3 - i32.add - f64.load - local.get $1 - local.get $0 - call $std/typedarray/testReduce<~lib/typedarray/Float64Array,f64>~anonymous|0 - local.set $2 - local.get $1 + local.get $1 + local.set $3 + local.get $2 + local.set $5 + local.get $4 + i32.load offset=4 + local.set $6 + block $break|0 + block + i32.const 0 + local.set $7 + local.get $4 + call $~lib/typedarray/Float64Array#get:length + local.set $8 + end + loop $repeat|0 + local.get $7 + local.get $8 + i32.lt_s + i32.eqz + br_if $break|0 + block (result f64) + i32.const 4 + global.set $~lib/argc + local.get $5 + local.get $6 + local.get $7 + i32.const 3 + i32.shl + i32.add + f64.load + local.get $7 + local.get $4 + local.get $3 + call_indirect (type $FUNCSIG$dddii) + end + local.set $5 + local.get $7 i32.const 1 i32.add - local.set $1 + local.set $7 br $repeat|0 + unreachable end + unreachable end - local.get $2 + local.get $5 + local.set $9 + local.get $4 + call $~lib/rt/purerc/__release + local.get $9 ) - (func $std/typedarray/testReduce<~lib/typedarray/Float64Array,f64> (; 71 ;) (type $FUNCSIG$v) + (func $std/typedarray/testReduce<~lib/typedarray/Float64Array,f64> (; 112 ;) (type $FUNCSIG$v) (local $0 i32) + (local $1 i32) + (local $2 f64) + i32.const 0 i32.const 3 call $~lib/typedarray/Float64Array#constructor local.tee $0 + call $~lib/rt/purerc/__retain + local.set $1 + local.get $1 i32.const 0 f64.const 1 call $~lib/typedarray/Float64Array#__set - local.get $0 + local.get $1 i32.const 1 f64.const 2 call $~lib/typedarray/Float64Array#__set - local.get $0 + local.get $1 i32.const 2 f64.const 3 call $~lib/typedarray/Float64Array#__set - local.get $0 + local.get $1 + i32.const 12 + f64.const 0 call $~lib/typedarray/Float64Array#reduce + local.set $2 + local.get $2 f64.const 6 - f64.ne + f64.eq + i32.eqz if i32.const 0 i32.const 24 @@ -3308,66 +5918,118 @@ call $~lib/builtins/abort unreachable end + local.get $0 + call $~lib/rt/purerc/__release + local.get $1 + call $~lib/rt/purerc/__release ) - (func $~lib/typedarray/Int8Array#reduceRight (; 72 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) + (func $std/typedarray/testReduceRight<~lib/typedarray/Int8Array,i8>~anonymous|0 (; 113 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + (local $4 i32) + local.get $3 + call $~lib/rt/purerc/__retain + drop + local.get $0 + local.get $1 + i32.add + local.set $4 + local.get $3 + call $~lib/rt/purerc/__release + local.get $4 + ) + (func $~lib/typedarray/Int8Array#reduceRight (; 114 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) local.get $0 - i32.load offset=4 + call $~lib/rt/purerc/__retain + local.set $5 + local.get $1 + local.set $4 + local.get $2 local.set $3 - local.get $0 - i32.load offset=8 - i32.const 1 - i32.sub - local.set $1 - loop $repeat|0 - local.get $1 - i32.const 0 - i32.ge_s - if - i32.const 4 - global.set $~lib/argc - local.get $2 - local.get $1 - local.get $3 - i32.add - i32.load8_s - local.get $1 - local.get $0 - call $std/typedarray/testReduce<~lib/typedarray/Int8Array,i8>~anonymous|0 - local.set $2 - local.get $1 + local.get $5 + i32.load offset=4 + local.set $6 + block $break|0 + local.get $5 + call $~lib/typedarray/Int8Array#get:length + i32.const 1 + i32.sub + local.set $7 + loop $repeat|0 + local.get $7 + i32.const 0 + i32.ge_s + i32.eqz + br_if $break|0 + block (result i32) + i32.const 4 + global.set $~lib/argc + local.get $3 + local.get $6 + local.get $7 + i32.const 0 + i32.shl + i32.add + i32.load8_s + local.get $7 + local.get $5 + local.get $4 + call_indirect (type $FUNCSIG$iiiii) + end + local.set $3 + local.get $7 i32.const 1 i32.sub - local.set $1 + local.set $7 br $repeat|0 + unreachable end + unreachable end - local.get $2 + local.get $3 + local.set $7 + local.get $5 + call $~lib/rt/purerc/__release + local.get $7 ) - (func $std/typedarray/testReduceRight<~lib/typedarray/Int8Array,i8> (; 73 ;) (type $FUNCSIG$v) + (func $std/typedarray/testReduceRight<~lib/typedarray/Int8Array,i8> (; 115 ;) (type $FUNCSIG$v) (local $0 i32) + (local $1 i32) + (local $2 i32) + i32.const 0 i32.const 3 call $~lib/typedarray/Int8Array#constructor local.tee $0 + call $~lib/rt/purerc/__retain + local.set $1 + local.get $1 i32.const 0 i32.const 1 call $~lib/typedarray/Int8Array#__set - local.get $0 + local.get $1 i32.const 1 i32.const 2 call $~lib/typedarray/Int8Array#__set - local.get $0 + local.get $1 i32.const 2 i32.const 3 call $~lib/typedarray/Int8Array#__set - local.get $0 + local.get $1 + i32.const 13 + i32.const 0 call $~lib/typedarray/Int8Array#reduceRight - i32.const 255 - i32.and + local.set $2 + local.get $2 + i32.const 24 + i32.shl + i32.const 24 + i32.shr_s i32.const 6 - i32.ne + i32.eq + i32.eqz if i32.const 0 i32.const 24 @@ -3376,68 +6038,116 @@ call $~lib/builtins/abort unreachable end + local.get $0 + call $~lib/rt/purerc/__release + local.get $1 + call $~lib/rt/purerc/__release ) - (func $~lib/typedarray/Uint8Array#reduceRight (; 74 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) + (func $std/typedarray/testReduceRight<~lib/typedarray/Uint8Array,u8>~anonymous|0 (; 116 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + (local $4 i32) + local.get $3 + call $~lib/rt/purerc/__retain + drop + local.get $0 + local.get $1 + i32.add + local.set $4 + local.get $3 + call $~lib/rt/purerc/__release + local.get $4 + ) + (func $~lib/typedarray/Uint8Array#reduceRight (; 117 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) local.get $0 - i32.load offset=4 + call $~lib/rt/purerc/__retain + local.set $5 + local.get $1 local.set $4 - local.get $0 - i32.load offset=8 - i32.const 1 - i32.sub - local.set $2 - loop $repeat|0 - local.get $2 - i32.const 0 - i32.ge_s - if - i32.const 4 - global.set $~lib/argc - local.get $3 - local.get $2 - local.get $4 - i32.add - i32.load8_u - local.get $2 - local.get $0 - local.get $1 - call_indirect (type $FUNCSIG$iiiii) + local.get $2 + local.set $3 + local.get $5 + i32.load offset=4 + local.set $6 + block $break|0 + local.get $5 + call $~lib/typedarray/Uint8Array#get:length + i32.const 1 + i32.sub + local.set $7 + loop $repeat|0 + local.get $7 + i32.const 0 + i32.ge_s + i32.eqz + br_if $break|0 + block (result i32) + i32.const 4 + global.set $~lib/argc + local.get $3 + local.get $6 + local.get $7 + i32.const 0 + i32.shl + i32.add + i32.load8_u + local.get $7 + local.get $5 + local.get $4 + call_indirect (type $FUNCSIG$iiiii) + end local.set $3 - local.get $2 + local.get $7 i32.const 1 i32.sub - local.set $2 + local.set $7 br $repeat|0 + unreachable end + unreachable end local.get $3 + local.set $7 + local.get $5 + call $~lib/rt/purerc/__release + local.get $7 ) - (func $std/typedarray/testReduceRight<~lib/typedarray/Uint8Array,u8> (; 75 ;) (type $FUNCSIG$v) + (func $std/typedarray/testReduceRight<~lib/typedarray/Uint8Array,u8> (; 118 ;) (type $FUNCSIG$v) (local $0 i32) + (local $1 i32) + (local $2 i32) + i32.const 0 i32.const 3 call $~lib/typedarray/Uint8Array#constructor local.tee $0 + call $~lib/rt/purerc/__retain + local.set $1 + local.get $1 i32.const 0 i32.const 1 call $~lib/typedarray/Uint8Array#__set - local.get $0 + local.get $1 i32.const 1 i32.const 2 call $~lib/typedarray/Uint8Array#__set - local.get $0 + local.get $1 i32.const 2 i32.const 3 call $~lib/typedarray/Uint8Array#__set - local.get $0 + local.get $1 i32.const 14 + i32.const 0 call $~lib/typedarray/Uint8Array#reduceRight + local.set $2 + local.get $2 i32.const 255 i32.and i32.const 6 - i32.ne + i32.eq + i32.eqz if i32.const 0 i32.const 24 @@ -3446,30 +6156,116 @@ call $~lib/builtins/abort unreachable end + local.get $0 + call $~lib/rt/purerc/__release + local.get $1 + call $~lib/rt/purerc/__release ) - (func $std/typedarray/testReduceRight<~lib/typedarray/Uint8ClampedArray,u8> (; 76 ;) (type $FUNCSIG$v) + (func $std/typedarray/testReduceRight<~lib/typedarray/Uint8ClampedArray,u8>~anonymous|0 (; 119 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + (local $4 i32) + local.get $3 + call $~lib/rt/purerc/__retain + drop + local.get $0 + local.get $1 + i32.add + local.set $4 + local.get $3 + call $~lib/rt/purerc/__release + local.get $4 + ) + (func $~lib/typedarray/Uint8ClampedArray#reduceRight (; 120 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + local.get $0 + call $~lib/rt/purerc/__retain + local.set $5 + local.get $1 + local.set $4 + local.get $2 + local.set $3 + local.get $5 + i32.load offset=4 + local.set $6 + block $break|0 + local.get $5 + call $~lib/typedarray/Uint8ClampedArray#get:length + i32.const 1 + i32.sub + local.set $7 + loop $repeat|0 + local.get $7 + i32.const 0 + i32.ge_s + i32.eqz + br_if $break|0 + block (result i32) + i32.const 4 + global.set $~lib/argc + local.get $3 + local.get $6 + local.get $7 + i32.const 0 + i32.shl + i32.add + i32.load8_u + local.get $7 + local.get $5 + local.get $4 + call_indirect (type $FUNCSIG$iiiii) + end + local.set $3 + local.get $7 + i32.const 1 + i32.sub + local.set $7 + br $repeat|0 + unreachable + end + unreachable + end + local.get $3 + local.set $7 + local.get $5 + call $~lib/rt/purerc/__release + local.get $7 + ) + (func $std/typedarray/testReduceRight<~lib/typedarray/Uint8ClampedArray,u8> (; 121 ;) (type $FUNCSIG$v) (local $0 i32) + (local $1 i32) + (local $2 i32) + i32.const 0 i32.const 3 call $~lib/typedarray/Uint8ClampedArray#constructor local.tee $0 + call $~lib/rt/purerc/__retain + local.set $1 + local.get $1 i32.const 0 i32.const 1 call $~lib/typedarray/Uint8ClampedArray#__set - local.get $0 + local.get $1 i32.const 1 i32.const 2 call $~lib/typedarray/Uint8ClampedArray#__set - local.get $0 + local.get $1 i32.const 2 i32.const 3 call $~lib/typedarray/Uint8ClampedArray#__set - local.get $0 + local.get $1 i32.const 15 - call $~lib/typedarray/Uint8Array#reduceRight + i32.const 0 + call $~lib/typedarray/Uint8ClampedArray#reduceRight + local.set $2 + local.get $2 i32.const 255 i32.and i32.const 6 - i32.ne + i32.eq + i32.eqz if i32.const 0 i32.const 24 @@ -3478,70 +6274,118 @@ call $~lib/builtins/abort unreachable end + local.get $0 + call $~lib/rt/purerc/__release + local.get $1 + call $~lib/rt/purerc/__release ) - (func $~lib/typedarray/Int16Array#reduceRight (; 77 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) + (func $std/typedarray/testReduceRight<~lib/typedarray/Int16Array,i16>~anonymous|0 (; 122 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + (local $4 i32) + local.get $3 + call $~lib/rt/purerc/__retain + drop + local.get $0 + local.get $1 + i32.add + local.set $4 + local.get $3 + call $~lib/rt/purerc/__release + local.get $4 + ) + (func $~lib/typedarray/Int16Array#reduceRight (; 123 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) local.get $0 - i32.load offset=4 + call $~lib/rt/purerc/__retain + local.set $5 + local.get $1 + local.set $4 + local.get $2 local.set $3 - local.get $0 - i32.load offset=8 - i32.const 1 - i32.shr_u - i32.const 1 - i32.sub - local.set $1 - loop $repeat|0 - local.get $1 - i32.const 0 - i32.ge_s - if - i32.const 4 - global.set $~lib/argc - local.get $2 - local.get $1 - i32.const 1 - i32.shl - local.get $3 - i32.add - i32.load16_s - local.get $1 - local.get $0 - call $std/typedarray/testReduce<~lib/typedarray/Int8Array,i8>~anonymous|0 - local.set $2 - local.get $1 + local.get $5 + i32.load offset=4 + local.set $6 + block $break|0 + local.get $5 + call $~lib/typedarray/Int16Array#get:length + i32.const 1 + i32.sub + local.set $7 + loop $repeat|0 + local.get $7 + i32.const 0 + i32.ge_s + i32.eqz + br_if $break|0 + block (result i32) + i32.const 4 + global.set $~lib/argc + local.get $3 + local.get $6 + local.get $7 + i32.const 1 + i32.shl + i32.add + i32.load16_s + local.get $7 + local.get $5 + local.get $4 + call_indirect (type $FUNCSIG$iiiii) + end + local.set $3 + local.get $7 i32.const 1 i32.sub - local.set $1 + local.set $7 br $repeat|0 + unreachable end + unreachable end - local.get $2 + local.get $3 + local.set $7 + local.get $5 + call $~lib/rt/purerc/__release + local.get $7 ) - (func $std/typedarray/testReduceRight<~lib/typedarray/Int16Array,i16> (; 78 ;) (type $FUNCSIG$v) + (func $std/typedarray/testReduceRight<~lib/typedarray/Int16Array,i16> (; 124 ;) (type $FUNCSIG$v) (local $0 i32) + (local $1 i32) + (local $2 i32) + i32.const 0 i32.const 3 call $~lib/typedarray/Int16Array#constructor local.tee $0 + call $~lib/rt/purerc/__retain + local.set $1 + local.get $1 i32.const 0 i32.const 1 call $~lib/typedarray/Int16Array#__set - local.get $0 + local.get $1 i32.const 1 i32.const 2 call $~lib/typedarray/Int16Array#__set - local.get $0 + local.get $1 i32.const 2 i32.const 3 call $~lib/typedarray/Int16Array#__set - local.get $0 + local.get $1 + i32.const 16 + i32.const 0 call $~lib/typedarray/Int16Array#reduceRight - i32.const 65535 - i32.and + local.set $2 + local.get $2 + i32.const 16 + i32.shl + i32.const 16 + i32.shr_s i32.const 6 - i32.ne + i32.eq + i32.eqz if i32.const 0 i32.const 24 @@ -3550,70 +6394,116 @@ call $~lib/builtins/abort unreachable end + local.get $0 + call $~lib/rt/purerc/__release + local.get $1 + call $~lib/rt/purerc/__release ) - (func $~lib/typedarray/Uint16Array#reduceRight (; 79 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) + (func $std/typedarray/testReduceRight<~lib/typedarray/Uint16Array,u16>~anonymous|0 (; 125 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + (local $4 i32) + local.get $3 + call $~lib/rt/purerc/__retain + drop + local.get $0 + local.get $1 + i32.add + local.set $4 + local.get $3 + call $~lib/rt/purerc/__release + local.get $4 + ) + (func $~lib/typedarray/Uint16Array#reduceRight (; 126 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) local.get $0 - i32.load offset=4 + call $~lib/rt/purerc/__retain + local.set $5 + local.get $1 + local.set $4 + local.get $2 local.set $3 - local.get $0 - i32.load offset=8 - i32.const 1 - i32.shr_u - i32.const 1 - i32.sub - local.set $1 - loop $repeat|0 - local.get $1 - i32.const 0 - i32.ge_s - if - i32.const 4 - global.set $~lib/argc - local.get $2 - local.get $1 - i32.const 1 - i32.shl - local.get $3 - i32.add - i32.load16_u - local.get $1 - local.get $0 - call $std/typedarray/testReduce<~lib/typedarray/Int8Array,i8>~anonymous|0 - local.set $2 - local.get $1 + local.get $5 + i32.load offset=4 + local.set $6 + block $break|0 + local.get $5 + call $~lib/typedarray/Uint16Array#get:length + i32.const 1 + i32.sub + local.set $7 + loop $repeat|0 + local.get $7 + i32.const 0 + i32.ge_s + i32.eqz + br_if $break|0 + block (result i32) + i32.const 4 + global.set $~lib/argc + local.get $3 + local.get $6 + local.get $7 + i32.const 1 + i32.shl + i32.add + i32.load16_u + local.get $7 + local.get $5 + local.get $4 + call_indirect (type $FUNCSIG$iiiii) + end + local.set $3 + local.get $7 i32.const 1 i32.sub - local.set $1 + local.set $7 br $repeat|0 + unreachable end + unreachable end - local.get $2 + local.get $3 + local.set $7 + local.get $5 + call $~lib/rt/purerc/__release + local.get $7 ) - (func $std/typedarray/testReduceRight<~lib/typedarray/Uint16Array,u16> (; 80 ;) (type $FUNCSIG$v) + (func $std/typedarray/testReduceRight<~lib/typedarray/Uint16Array,u16> (; 127 ;) (type $FUNCSIG$v) (local $0 i32) + (local $1 i32) + (local $2 i32) + i32.const 0 i32.const 3 call $~lib/typedarray/Uint16Array#constructor local.tee $0 + call $~lib/rt/purerc/__retain + local.set $1 + local.get $1 i32.const 0 i32.const 1 call $~lib/typedarray/Uint16Array#__set - local.get $0 + local.get $1 i32.const 1 i32.const 2 call $~lib/typedarray/Uint16Array#__set - local.get $0 + local.get $1 i32.const 2 i32.const 3 call $~lib/typedarray/Uint16Array#__set - local.get $0 + local.get $1 + i32.const 17 + i32.const 0 call $~lib/typedarray/Uint16Array#reduceRight + local.set $2 + local.get $2 i32.const 65535 i32.and i32.const 6 - i32.ne + i32.eq + i32.eqz if i32.const 0 i32.const 24 @@ -3622,70 +6512,114 @@ call $~lib/builtins/abort unreachable end + local.get $0 + call $~lib/rt/purerc/__release + local.get $1 + call $~lib/rt/purerc/__release ) - (func $~lib/typedarray/Int32Array#reduceRight (; 81 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) + (func $std/typedarray/testReduceRight<~lib/typedarray/Int32Array,i32>~anonymous|0 (; 128 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + (local $4 i32) + local.get $3 + call $~lib/rt/purerc/__retain + drop + local.get $0 + local.get $1 + i32.add + local.set $4 + local.get $3 + call $~lib/rt/purerc/__release + local.get $4 + ) + (func $~lib/typedarray/Int32Array#reduceRight (; 129 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) local.get $0 - i32.load offset=4 + call $~lib/rt/purerc/__retain + local.set $5 + local.get $1 local.set $4 - local.get $0 - i32.load offset=8 - i32.const 2 - i32.shr_u - i32.const 1 - i32.sub - local.set $2 - loop $repeat|0 - local.get $2 - i32.const 0 - i32.ge_s - if - i32.const 4 - global.set $~lib/argc - local.get $3 - local.get $2 - i32.const 2 - i32.shl - local.get $4 - i32.add - i32.load - local.get $2 - local.get $0 - local.get $1 - call_indirect (type $FUNCSIG$iiiii) + local.get $2 + local.set $3 + local.get $5 + i32.load offset=4 + local.set $6 + block $break|0 + local.get $5 + call $~lib/typedarray/Int32Array#get:length + i32.const 1 + i32.sub + local.set $7 + loop $repeat|0 + local.get $7 + i32.const 0 + i32.ge_s + i32.eqz + br_if $break|0 + block (result i32) + i32.const 4 + global.set $~lib/argc + local.get $3 + local.get $6 + local.get $7 + i32.const 2 + i32.shl + i32.add + i32.load + local.get $7 + local.get $5 + local.get $4 + call_indirect (type $FUNCSIG$iiiii) + end local.set $3 - local.get $2 + local.get $7 i32.const 1 i32.sub - local.set $2 + local.set $7 br $repeat|0 + unreachable end + unreachable end local.get $3 + local.set $7 + local.get $5 + call $~lib/rt/purerc/__release + local.get $7 ) - (func $std/typedarray/testReduceRight<~lib/typedarray/Int32Array,i32> (; 82 ;) (type $FUNCSIG$v) + (func $std/typedarray/testReduceRight<~lib/typedarray/Int32Array,i32> (; 130 ;) (type $FUNCSIG$v) (local $0 i32) + (local $1 i32) + (local $2 i32) + i32.const 0 i32.const 3 call $~lib/typedarray/Int32Array#constructor local.tee $0 + call $~lib/rt/purerc/__retain + local.set $1 + local.get $1 i32.const 0 i32.const 1 call $~lib/typedarray/Int32Array#__set - local.get $0 + local.get $1 i32.const 1 i32.const 2 call $~lib/typedarray/Int32Array#__set - local.get $0 + local.get $1 i32.const 2 i32.const 3 call $~lib/typedarray/Int32Array#__set - local.get $0 + local.get $1 i32.const 18 + i32.const 0 call $~lib/typedarray/Int32Array#reduceRight + local.set $2 + local.get $2 i32.const 6 - i32.ne + i32.eq + i32.eqz if i32.const 0 i32.const 24 @@ -3694,28 +6628,114 @@ call $~lib/builtins/abort unreachable end + local.get $0 + call $~lib/rt/purerc/__release + local.get $1 + call $~lib/rt/purerc/__release ) - (func $std/typedarray/testReduceRight<~lib/typedarray/Uint32Array,u32> (; 83 ;) (type $FUNCSIG$v) + (func $std/typedarray/testReduceRight<~lib/typedarray/Uint32Array,u32>~anonymous|0 (; 131 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + (local $4 i32) + local.get $3 + call $~lib/rt/purerc/__retain + drop + local.get $0 + local.get $1 + i32.add + local.set $4 + local.get $3 + call $~lib/rt/purerc/__release + local.get $4 + ) + (func $~lib/typedarray/Uint32Array#reduceRight (; 132 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + local.get $0 + call $~lib/rt/purerc/__retain + local.set $5 + local.get $1 + local.set $4 + local.get $2 + local.set $3 + local.get $5 + i32.load offset=4 + local.set $6 + block $break|0 + local.get $5 + call $~lib/typedarray/Uint32Array#get:length + i32.const 1 + i32.sub + local.set $7 + loop $repeat|0 + local.get $7 + i32.const 0 + i32.ge_s + i32.eqz + br_if $break|0 + block (result i32) + i32.const 4 + global.set $~lib/argc + local.get $3 + local.get $6 + local.get $7 + i32.const 2 + i32.shl + i32.add + i32.load + local.get $7 + local.get $5 + local.get $4 + call_indirect (type $FUNCSIG$iiiii) + end + local.set $3 + local.get $7 + i32.const 1 + i32.sub + local.set $7 + br $repeat|0 + unreachable + end + unreachable + end + local.get $3 + local.set $7 + local.get $5 + call $~lib/rt/purerc/__release + local.get $7 + ) + (func $std/typedarray/testReduceRight<~lib/typedarray/Uint32Array,u32> (; 133 ;) (type $FUNCSIG$v) (local $0 i32) + (local $1 i32) + (local $2 i32) + i32.const 0 i32.const 3 call $~lib/typedarray/Uint32Array#constructor local.tee $0 + call $~lib/rt/purerc/__retain + local.set $1 + local.get $1 i32.const 0 i32.const 1 call $~lib/typedarray/Uint32Array#__set - local.get $0 + local.get $1 i32.const 1 i32.const 2 call $~lib/typedarray/Uint32Array#__set - local.get $0 + local.get $1 i32.const 2 i32.const 3 call $~lib/typedarray/Uint32Array#__set - local.get $0 + local.get $1 i32.const 19 - call $~lib/typedarray/Int32Array#reduceRight + i32.const 0 + call $~lib/typedarray/Uint32Array#reduceRight + local.set $2 + local.get $2 i32.const 6 - i32.ne + i32.eq + i32.eqz if i32.const 0 i32.const 24 @@ -3724,70 +6744,115 @@ call $~lib/builtins/abort unreachable end + local.get $0 + call $~lib/rt/purerc/__release + local.get $1 + call $~lib/rt/purerc/__release ) - (func $~lib/typedarray/Int64Array#reduceRight (; 84 ;) (type $FUNCSIG$jii) (param $0 i32) (param $1 i32) (result i64) - (local $2 i32) - (local $3 i64) - (local $4 i32) + (func $std/typedarray/testReduceRight<~lib/typedarray/Int64Array,i64>~anonymous|0 (; 134 ;) (type $FUNCSIG$jjjii) (param $0 i64) (param $1 i64) (param $2 i32) (param $3 i32) (result i64) + (local $4 i64) + local.get $3 + call $~lib/rt/purerc/__retain + drop local.get $0 - i32.load offset=4 + local.get $1 + i64.add local.set $4 + local.get $3 + call $~lib/rt/purerc/__release + local.get $4 + ) + (func $~lib/typedarray/Int64Array#reduceRight (; 135 ;) (type $FUNCSIG$jiij) (param $0 i32) (param $1 i32) (param $2 i64) (result i64) + (local $3 i32) + (local $4 i32) + (local $5 i64) + (local $6 i32) + (local $7 i32) + (local $8 i64) local.get $0 - i32.load offset=8 - i32.const 3 - i32.shr_u - i32.const 1 - i32.sub - local.set $2 - loop $repeat|0 - local.get $2 - i32.const 0 - i32.ge_s - if - i32.const 4 - global.set $~lib/argc - local.get $3 - local.get $2 - i32.const 3 - i32.shl - local.get $4 - i32.add - i64.load - local.get $2 - local.get $0 - local.get $1 - call_indirect (type $FUNCSIG$jjjii) - local.set $3 - local.get $2 + call $~lib/rt/purerc/__retain + local.set $4 + local.get $1 + local.set $3 + local.get $2 + local.set $5 + local.get $4 + i32.load offset=4 + local.set $6 + block $break|0 + local.get $4 + call $~lib/typedarray/Int64Array#get:length + i32.const 1 + i32.sub + local.set $7 + loop $repeat|0 + local.get $7 + i32.const 0 + i32.ge_s + i32.eqz + br_if $break|0 + block (result i64) + i32.const 4 + global.set $~lib/argc + local.get $5 + local.get $6 + local.get $7 + i32.const 3 + i32.shl + i32.add + i64.load + local.get $7 + local.get $4 + local.get $3 + call_indirect (type $FUNCSIG$jjjii) + end + local.set $5 + local.get $7 i32.const 1 i32.sub - local.set $2 + local.set $7 br $repeat|0 + unreachable end + unreachable end - local.get $3 + local.get $5 + local.set $8 + local.get $4 + call $~lib/rt/purerc/__release + local.get $8 ) - (func $std/typedarray/testReduceRight<~lib/typedarray/Int64Array,i64> (; 85 ;) (type $FUNCSIG$v) + (func $std/typedarray/testReduceRight<~lib/typedarray/Int64Array,i64> (; 136 ;) (type $FUNCSIG$v) (local $0 i32) + (local $1 i32) + (local $2 i64) + i32.const 0 i32.const 3 call $~lib/typedarray/Int64Array#constructor local.tee $0 + call $~lib/rt/purerc/__retain + local.set $1 + local.get $1 i32.const 0 i64.const 1 call $~lib/typedarray/Int64Array#__set - local.get $0 + local.get $1 i32.const 1 i64.const 2 call $~lib/typedarray/Int64Array#__set - local.get $0 + local.get $1 i32.const 2 i64.const 3 call $~lib/typedarray/Int64Array#__set - local.get $0 + local.get $1 i32.const 20 + i64.const 0 call $~lib/typedarray/Int64Array#reduceRight + local.set $2 + local.get $2 i64.const 6 - i64.ne + i64.eq + i32.eqz if i32.const 0 i32.const 24 @@ -3796,28 +6861,115 @@ call $~lib/builtins/abort unreachable end + local.get $0 + call $~lib/rt/purerc/__release + local.get $1 + call $~lib/rt/purerc/__release ) - (func $std/typedarray/testReduceRight<~lib/typedarray/Uint64Array,u64> (; 86 ;) (type $FUNCSIG$v) + (func $std/typedarray/testReduceRight<~lib/typedarray/Uint64Array,u64>~anonymous|0 (; 137 ;) (type $FUNCSIG$jjjii) (param $0 i64) (param $1 i64) (param $2 i32) (param $3 i32) (result i64) + (local $4 i64) + local.get $3 + call $~lib/rt/purerc/__retain + drop + local.get $0 + local.get $1 + i64.add + local.set $4 + local.get $3 + call $~lib/rt/purerc/__release + local.get $4 + ) + (func $~lib/typedarray/Uint64Array#reduceRight (; 138 ;) (type $FUNCSIG$jiij) (param $0 i32) (param $1 i32) (param $2 i64) (result i64) + (local $3 i32) + (local $4 i32) + (local $5 i64) + (local $6 i32) + (local $7 i32) + (local $8 i64) + local.get $0 + call $~lib/rt/purerc/__retain + local.set $4 + local.get $1 + local.set $3 + local.get $2 + local.set $5 + local.get $4 + i32.load offset=4 + local.set $6 + block $break|0 + local.get $4 + call $~lib/typedarray/Uint64Array#get:length + i32.const 1 + i32.sub + local.set $7 + loop $repeat|0 + local.get $7 + i32.const 0 + i32.ge_s + i32.eqz + br_if $break|0 + block (result i64) + i32.const 4 + global.set $~lib/argc + local.get $5 + local.get $6 + local.get $7 + i32.const 3 + i32.shl + i32.add + i64.load + local.get $7 + local.get $4 + local.get $3 + call_indirect (type $FUNCSIG$jjjii) + end + local.set $5 + local.get $7 + i32.const 1 + i32.sub + local.set $7 + br $repeat|0 + unreachable + end + unreachable + end + local.get $5 + local.set $8 + local.get $4 + call $~lib/rt/purerc/__release + local.get $8 + ) + (func $std/typedarray/testReduceRight<~lib/typedarray/Uint64Array,u64> (; 139 ;) (type $FUNCSIG$v) (local $0 i32) + (local $1 i32) + (local $2 i64) + i32.const 0 i32.const 3 call $~lib/typedarray/Uint64Array#constructor local.tee $0 + call $~lib/rt/purerc/__retain + local.set $1 + local.get $1 i32.const 0 i64.const 1 call $~lib/typedarray/Uint64Array#__set - local.get $0 + local.get $1 i32.const 1 i64.const 2 call $~lib/typedarray/Uint64Array#__set - local.get $0 + local.get $1 i32.const 2 i64.const 3 call $~lib/typedarray/Uint64Array#__set - local.get $0 + local.get $1 i32.const 21 - call $~lib/typedarray/Int64Array#reduceRight + i64.const 0 + call $~lib/typedarray/Uint64Array#reduceRight + local.set $2 + local.get $2 i64.const 6 - i64.ne + i64.eq + i32.eqz if i32.const 0 i32.const 24 @@ -3826,68 +6978,115 @@ call $~lib/builtins/abort unreachable end + local.get $0 + call $~lib/rt/purerc/__release + local.get $1 + call $~lib/rt/purerc/__release ) - (func $~lib/typedarray/Float32Array#reduceRight (; 87 ;) (type $FUNCSIG$fi) (param $0 i32) (result f32) - (local $1 i32) - (local $2 f32) + (func $std/typedarray/testReduceRight<~lib/typedarray/Float32Array,f32>~anonymous|0 (; 140 ;) (type $FUNCSIG$fffii) (param $0 f32) (param $1 f32) (param $2 i32) (param $3 i32) (result f32) + (local $4 f32) + local.get $3 + call $~lib/rt/purerc/__retain + drop + local.get $0 + local.get $1 + f32.add + local.set $4 + local.get $3 + call $~lib/rt/purerc/__release + local.get $4 + ) + (func $~lib/typedarray/Float32Array#reduceRight (; 141 ;) (type $FUNCSIG$fiif) (param $0 i32) (param $1 i32) (param $2 f32) (result f32) (local $3 i32) + (local $4 i32) + (local $5 f32) + (local $6 i32) + (local $7 i32) + (local $8 f32) local.get $0 - i32.load offset=4 + call $~lib/rt/purerc/__retain + local.set $4 + local.get $1 local.set $3 - local.get $0 - i32.load offset=8 - i32.const 2 - i32.shr_u - i32.const 1 - i32.sub - local.set $1 - loop $repeat|0 - local.get $1 - i32.const 0 - i32.ge_s - if - i32.const 4 - global.set $~lib/argc - local.get $2 - local.get $1 - i32.const 2 - i32.shl - local.get $3 - i32.add - f32.load - local.get $1 - local.get $0 - call $std/typedarray/testReduce<~lib/typedarray/Float32Array,f32>~anonymous|0 - local.set $2 - local.get $1 + local.get $2 + local.set $5 + local.get $4 + i32.load offset=4 + local.set $6 + block $break|0 + local.get $4 + call $~lib/typedarray/Float32Array#get:length + i32.const 1 + i32.sub + local.set $7 + loop $repeat|0 + local.get $7 + i32.const 0 + i32.ge_s + i32.eqz + br_if $break|0 + block (result f32) + i32.const 4 + global.set $~lib/argc + local.get $5 + local.get $6 + local.get $7 + i32.const 2 + i32.shl + i32.add + f32.load + local.get $7 + local.get $4 + local.get $3 + call_indirect (type $FUNCSIG$fffii) + end + local.set $5 + local.get $7 i32.const 1 i32.sub - local.set $1 + local.set $7 br $repeat|0 + unreachable end + unreachable end - local.get $2 + local.get $5 + local.set $8 + local.get $4 + call $~lib/rt/purerc/__release + local.get $8 ) - (func $std/typedarray/testReduceRight<~lib/typedarray/Float32Array,f32> (; 88 ;) (type $FUNCSIG$v) + (func $std/typedarray/testReduceRight<~lib/typedarray/Float32Array,f32> (; 142 ;) (type $FUNCSIG$v) (local $0 i32) + (local $1 i32) + (local $2 f32) + i32.const 0 i32.const 3 call $~lib/typedarray/Float32Array#constructor local.tee $0 + call $~lib/rt/purerc/__retain + local.set $1 + local.get $1 i32.const 0 f32.const 1 call $~lib/typedarray/Float32Array#__set - local.get $0 + local.get $1 i32.const 1 f32.const 2 call $~lib/typedarray/Float32Array#__set - local.get $0 + local.get $1 i32.const 2 f32.const 3 call $~lib/typedarray/Float32Array#__set - local.get $0 + local.get $1 + i32.const 22 + f32.const 0 call $~lib/typedarray/Float32Array#reduceRight + local.set $2 + local.get $2 f32.const 6 - f32.ne + f32.eq + i32.eqz if i32.const 0 i32.const 24 @@ -3896,68 +7095,115 @@ call $~lib/builtins/abort unreachable end + local.get $0 + call $~lib/rt/purerc/__release + local.get $1 + call $~lib/rt/purerc/__release ) - (func $~lib/typedarray/Float64Array#reduceRight (; 89 ;) (type $FUNCSIG$di) (param $0 i32) (result f64) - (local $1 i32) - (local $2 f64) + (func $std/typedarray/testReduceRight<~lib/typedarray/Float64Array,f64>~anonymous|0 (; 143 ;) (type $FUNCSIG$dddii) (param $0 f64) (param $1 f64) (param $2 i32) (param $3 i32) (result f64) + (local $4 f64) + local.get $3 + call $~lib/rt/purerc/__retain + drop + local.get $0 + local.get $1 + f64.add + local.set $4 + local.get $3 + call $~lib/rt/purerc/__release + local.get $4 + ) + (func $~lib/typedarray/Float64Array#reduceRight (; 144 ;) (type $FUNCSIG$diid) (param $0 i32) (param $1 i32) (param $2 f64) (result f64) (local $3 i32) + (local $4 i32) + (local $5 f64) + (local $6 i32) + (local $7 i32) + (local $8 f64) local.get $0 - i32.load offset=4 + call $~lib/rt/purerc/__retain + local.set $4 + local.get $1 local.set $3 - local.get $0 - i32.load offset=8 - i32.const 3 - i32.shr_u - i32.const 1 - i32.sub - local.set $1 - loop $repeat|0 - local.get $1 - i32.const 0 - i32.ge_s - if - i32.const 4 - global.set $~lib/argc - local.get $2 - local.get $1 - i32.const 3 - i32.shl - local.get $3 - i32.add - f64.load - local.get $1 - local.get $0 - call $std/typedarray/testReduce<~lib/typedarray/Float64Array,f64>~anonymous|0 - local.set $2 - local.get $1 + local.get $2 + local.set $5 + local.get $4 + i32.load offset=4 + local.set $6 + block $break|0 + local.get $4 + call $~lib/typedarray/Float64Array#get:length + i32.const 1 + i32.sub + local.set $7 + loop $repeat|0 + local.get $7 + i32.const 0 + i32.ge_s + i32.eqz + br_if $break|0 + block (result f64) + i32.const 4 + global.set $~lib/argc + local.get $5 + local.get $6 + local.get $7 + i32.const 3 + i32.shl + i32.add + f64.load + local.get $7 + local.get $4 + local.get $3 + call_indirect (type $FUNCSIG$dddii) + end + local.set $5 + local.get $7 i32.const 1 i32.sub - local.set $1 + local.set $7 br $repeat|0 + unreachable end + unreachable end - local.get $2 + local.get $5 + local.set $8 + local.get $4 + call $~lib/rt/purerc/__release + local.get $8 ) - (func $std/typedarray/testReduceRight<~lib/typedarray/Float64Array,f64> (; 90 ;) (type $FUNCSIG$v) + (func $std/typedarray/testReduceRight<~lib/typedarray/Float64Array,f64> (; 145 ;) (type $FUNCSIG$v) (local $0 i32) + (local $1 i32) + (local $2 f64) + i32.const 0 i32.const 3 call $~lib/typedarray/Float64Array#constructor local.tee $0 + call $~lib/rt/purerc/__retain + local.set $1 + local.get $1 i32.const 0 f64.const 1 call $~lib/typedarray/Float64Array#__set - local.get $0 + local.get $1 i32.const 1 f64.const 2 call $~lib/typedarray/Float64Array#__set - local.get $0 + local.get $1 i32.const 2 f64.const 3 call $~lib/typedarray/Float64Array#__set - local.get $0 + local.get $1 + i32.const 23 + f64.const 0 call $~lib/typedarray/Float64Array#reduceRight + local.set $2 + local.get $2 f64.const 6 - f64.ne + f64.eq + i32.eqz if i32.const 0 i32.const 24 @@ -3966,80 +7212,139 @@ call $~lib/builtins/abort unreachable end + local.get $0 + call $~lib/rt/purerc/__release + local.get $1 + call $~lib/rt/purerc/__release ) - (func $std/typedarray/testArrayMap<~lib/typedarray/Int8Array,i8>~anonymous|0 (; 91 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArrayMap<~lib/typedarray/Int8Array,i8>~anonymous|0 (; 146 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + local.get $2 + call $~lib/rt/purerc/__retain + drop local.get $0 local.get $0 i32.mul + local.set $3 + local.get $2 + call $~lib/rt/purerc/__release + local.get $3 ) - (func $~lib/typedarray/Int8Array#map (; 92 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - (local $1 i32) + (func $~lib/typedarray/Int8Array#map (; 147 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) - local.get $0 - i32.load offset=4 - local.set $3 - local.get $0 - i32.load offset=8 - local.tee $2 - local.set $4 - local.get $2 - call $~lib/typedarray/Int8Array#constructor - local.tee $2 - i32.load offset=4 - local.set $5 - loop $repeat|0 + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) + block $~lib/typedarray/MAP<~lib/typedarray/Int8Array,i8>|inlined.0 (result i32) + local.get $0 + call $~lib/rt/purerc/__retain + local.set $3 local.get $1 + local.set $2 + local.get $3 + call $~lib/typedarray/Int8Array#get:length + local.set $4 + local.get $3 + i32.load offset=4 + local.set $5 + i32.const 0 local.get $4 - i32.lt_s - if - i32.const 3 - global.set $~lib/argc - local.get $1 - local.get $5 - i32.add - local.get $1 - local.get $3 - i32.add - i32.load8_s - local.get $1 - local.get $0 - call $std/typedarray/testArrayMap<~lib/typedarray/Int8Array,i8>~anonymous|0 - i32.store8 - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $repeat|0 + call $~lib/typedarray/Int8Array#constructor + local.tee $6 + call $~lib/rt/purerc/__retain + local.set $7 + local.get $7 + i32.load offset=4 + local.set $8 + block $break|0 + i32.const 0 + local.set $9 + loop $repeat|0 + local.get $9 + local.get $4 + i32.lt_s + i32.eqz + br_if $break|0 + local.get $8 + local.get $9 + i32.const 0 + i32.shl + i32.add + block (result i32) + i32.const 3 + global.set $~lib/argc + local.get $5 + local.get $9 + i32.const 0 + i32.shl + i32.add + i32.load8_s + local.get $9 + local.get $3 + local.get $2 + call_indirect (type $FUNCSIG$iiii) + end + i32.store8 + local.get $9 + i32.const 1 + i32.add + local.set $9 + br $repeat|0 + unreachable + end + unreachable end + local.get $7 + local.set $9 + local.get $3 + call $~lib/rt/purerc/__release + local.get $6 + call $~lib/rt/purerc/__release + local.get $9 end - local.get $2 + local.tee $8 + call $~lib/rt/purerc/__retain + local.set $7 + local.get $8 + call $~lib/rt/purerc/__release + local.get $7 ) - (func $std/typedarray/testArrayMap<~lib/typedarray/Int8Array,i8> (; 93 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayMap<~lib/typedarray/Int8Array,i8> (; 148 ;) (type $FUNCSIG$v) (local $0 i32) + (local $1 i32) + (local $2 i32) + i32.const 0 i32.const 3 call $~lib/typedarray/Int8Array#constructor local.tee $0 + call $~lib/rt/purerc/__retain + local.set $1 + local.get $1 i32.const 0 i32.const 1 call $~lib/typedarray/Int8Array#__set - local.get $0 + local.get $1 i32.const 1 i32.const 2 call $~lib/typedarray/Int8Array#__set - local.get $0 + local.get $1 i32.const 2 i32.const 3 call $~lib/typedarray/Int8Array#__set - local.get $0 + local.get $1 + i32.const 24 call $~lib/typedarray/Int8Array#map - local.tee $0 + local.set $2 + local.get $2 i32.const 0 call $~lib/typedarray/Int8Array#__get i32.const 1 - i32.ne + i32.eq + i32.eqz if i32.const 0 i32.const 24 @@ -4048,11 +7353,12 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $2 i32.const 1 call $~lib/typedarray/Int8Array#__get i32.const 4 - i32.ne + i32.eq + i32.eqz if i32.const 0 i32.const 24 @@ -4061,11 +7367,12 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $2 i32.const 2 call $~lib/typedarray/Int8Array#__get i32.const 9 - i32.ne + i32.eq + i32.eqz if i32.const 0 i32.const 24 @@ -4074,61 +7381,118 @@ call $~lib/builtins/abort unreachable end + local.get $0 + call $~lib/rt/purerc/__release + local.get $1 + call $~lib/rt/purerc/__release + local.get $2 + call $~lib/rt/purerc/__release ) - (func $~lib/typedarray/Uint8Array#map (; 94 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - (local $1 i32) + (func $std/typedarray/testArrayMap<~lib/typedarray/Uint8Array,u8>~anonymous|0 (; 149 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + local.get $2 + call $~lib/rt/purerc/__retain + drop + local.get $0 + local.get $0 + i32.mul + local.set $3 + local.get $2 + call $~lib/rt/purerc/__release + local.get $3 + ) + (func $~lib/typedarray/Uint8Array#map (; 150 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) - local.get $0 - i32.load offset=4 - local.set $3 - local.get $0 - i32.load offset=8 - local.tee $2 - local.set $4 - local.get $2 - call $~lib/typedarray/Uint8Array#constructor - local.tee $2 - i32.load offset=4 - local.set $5 - loop $repeat|0 + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) + block $~lib/typedarray/MAP<~lib/typedarray/Uint8Array,u8>|inlined.0 (result i32) + local.get $0 + call $~lib/rt/purerc/__retain + local.set $3 local.get $1 + local.set $2 + local.get $3 + call $~lib/typedarray/Uint8Array#get:length + local.set $4 + local.get $3 + i32.load offset=4 + local.set $5 + i32.const 0 local.get $4 - i32.lt_s - if - i32.const 3 - global.set $~lib/argc - local.get $1 - local.get $5 - i32.add - local.get $1 - local.get $3 - i32.add - i32.load8_u - local.get $1 - local.get $0 - call $std/typedarray/testArrayMap<~lib/typedarray/Int8Array,i8>~anonymous|0 - i32.store8 - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $repeat|0 + call $~lib/typedarray/Uint8Array#constructor + local.tee $6 + call $~lib/rt/purerc/__retain + local.set $7 + local.get $7 + i32.load offset=4 + local.set $8 + block $break|0 + i32.const 0 + local.set $9 + loop $repeat|0 + local.get $9 + local.get $4 + i32.lt_s + i32.eqz + br_if $break|0 + local.get $8 + local.get $9 + i32.const 0 + i32.shl + i32.add + block (result i32) + i32.const 3 + global.set $~lib/argc + local.get $5 + local.get $9 + i32.const 0 + i32.shl + i32.add + i32.load8_u + local.get $9 + local.get $3 + local.get $2 + call_indirect (type $FUNCSIG$iiii) + end + i32.store8 + local.get $9 + i32.const 1 + i32.add + local.set $9 + br $repeat|0 + unreachable + end + unreachable end + local.get $7 + local.set $9 + local.get $3 + call $~lib/rt/purerc/__release + local.get $6 + call $~lib/rt/purerc/__release + local.get $9 end - local.get $2 + local.tee $8 + call $~lib/rt/purerc/__retain + local.set $7 + local.get $8 + call $~lib/rt/purerc/__release + local.get $7 ) - (func $~lib/typedarray/Uint8Array#__get (; 95 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Uint8Array#__get (; 151 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $1 local.get $0 i32.load offset=8 i32.ge_u if - i32.const 0 - i32.const 192 - i32.const 110 + i32.const 288 + i32.const 344 + i32.const 109 i32.const 44 call $~lib/builtins/abort unreachable @@ -4139,29 +7503,38 @@ i32.add i32.load8_u ) - (func $std/typedarray/testArrayMap<~lib/typedarray/Uint8Array,u8> (; 96 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayMap<~lib/typedarray/Uint8Array,u8> (; 152 ;) (type $FUNCSIG$v) (local $0 i32) + (local $1 i32) + (local $2 i32) + i32.const 0 i32.const 3 call $~lib/typedarray/Uint8Array#constructor local.tee $0 + call $~lib/rt/purerc/__retain + local.set $1 + local.get $1 i32.const 0 i32.const 1 call $~lib/typedarray/Uint8Array#__set - local.get $0 + local.get $1 i32.const 1 i32.const 2 call $~lib/typedarray/Uint8Array#__set - local.get $0 + local.get $1 i32.const 2 i32.const 3 call $~lib/typedarray/Uint8Array#__set - local.get $0 + local.get $1 + i32.const 25 call $~lib/typedarray/Uint8Array#map - local.tee $0 + local.set $2 + local.get $2 i32.const 0 call $~lib/typedarray/Uint8Array#__get i32.const 1 - i32.ne + i32.eq + i32.eqz if i32.const 0 i32.const 24 @@ -4170,11 +7543,12 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $2 i32.const 1 call $~lib/typedarray/Uint8Array#__get i32.const 4 - i32.ne + i32.eq + i32.eqz if i32.const 0 i32.const 24 @@ -4183,11 +7557,12 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $2 i32.const 2 call $~lib/typedarray/Uint8Array#__get i32.const 9 - i32.ne + i32.eq + i32.eqz if i32.const 0 i32.const 24 @@ -4196,165 +7571,281 @@ call $~lib/builtins/abort unreachable end + local.get $0 + call $~lib/rt/purerc/__release + local.get $1 + call $~lib/rt/purerc/__release + local.get $2 + call $~lib/rt/purerc/__release ) - (func $~lib/typedarray/Uint8ClampedArray#map (; 97 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) + (func $std/typedarray/testArrayMap<~lib/typedarray/Uint8ClampedArray,u8>~anonymous|0 (; 153 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) - (local $4 i32) - (local $5 i32) + local.get $2 + call $~lib/rt/purerc/__retain + drop local.get $0 - i32.load offset=4 + local.get $0 + i32.mul local.set $3 - local.get $0 - i32.load offset=8 - local.tee $2 - local.set $4 - local.get $2 - call $~lib/typedarray/Uint8ClampedArray#constructor - local.tee $2 - i32.load offset=4 - local.set $5 - loop $repeat|0 - local.get $1 - local.get $4 - i32.lt_s - if - i32.const 3 - global.set $~lib/argc - local.get $1 - local.get $5 - i32.add - local.get $1 - local.get $3 - i32.add - i32.load8_u - local.get $1 - local.get $0 - call $std/typedarray/testArrayMap<~lib/typedarray/Int8Array,i8>~anonymous|0 - i32.store8 - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $repeat|0 - end - end local.get $2 + call $~lib/rt/purerc/__release + local.get $3 ) - (func $std/typedarray/testArrayMap<~lib/typedarray/Uint8ClampedArray,u8> (; 98 ;) (type $FUNCSIG$v) - (local $0 i32) - i32.const 3 - call $~lib/typedarray/Uint8ClampedArray#constructor - local.tee $0 - i32.const 0 - i32.const 1 - call $~lib/typedarray/Uint8ClampedArray#__set - local.get $0 - i32.const 1 - i32.const 2 - call $~lib/typedarray/Uint8ClampedArray#__set - local.get $0 - i32.const 2 - i32.const 3 - call $~lib/typedarray/Uint8ClampedArray#__set - local.get $0 - call $~lib/typedarray/Uint8ClampedArray#map - local.tee $0 - i32.const 0 - call $~lib/typedarray/Uint8ClampedArray#__get - i32.const 1 - i32.ne - if - i32.const 0 - i32.const 24 - i32.const 306 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 1 - call $~lib/typedarray/Uint8ClampedArray#__get - i32.const 4 - i32.ne - if - i32.const 0 - i32.const 24 - i32.const 307 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 2 - call $~lib/typedarray/Uint8ClampedArray#__get - i32.const 9 - i32.ne - if - i32.const 0 - i32.const 24 - i32.const 308 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - ) - (func $~lib/typedarray/Int16Array#map (; 99 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - (local $1 i32) + (func $~lib/typedarray/Uint8ClampedArray#map (; 154 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) (local $6 i32) (local $7 i32) - local.get $0 - i32.load offset=4 - local.set $3 - local.get $0 - i32.load offset=8 - i32.const 1 - i32.shr_u - local.tee $2 - local.set $4 - local.get $2 - call $~lib/typedarray/Int16Array#constructor - local.tee $2 - i32.load offset=4 - local.set $5 - loop $repeat|0 + (local $8 i32) + (local $9 i32) + block $~lib/typedarray/MAP<~lib/typedarray/Uint8ClampedArray,u8>|inlined.0 (result i32) + local.get $0 + call $~lib/rt/purerc/__retain + local.set $3 local.get $1 + local.set $2 + local.get $3 + call $~lib/typedarray/Uint8ClampedArray#get:length + local.set $4 + local.get $3 + i32.load offset=4 + local.set $5 + i32.const 0 local.get $4 - i32.lt_s - if - i32.const 3 - global.set $~lib/argc - local.get $1 - i32.const 1 - i32.shl - local.tee $6 - local.get $3 - i32.add - i32.load16_s - local.get $1 - local.get $0 - call $std/typedarray/testArrayMap<~lib/typedarray/Int8Array,i8>~anonymous|0 - local.set $7 - local.get $5 - local.get $6 - i32.add - local.get $7 - i32.store16 - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $repeat|0 + call $~lib/typedarray/Uint8ClampedArray#constructor + local.tee $6 + call $~lib/rt/purerc/__retain + local.set $7 + local.get $7 + i32.load offset=4 + local.set $8 + block $break|0 + i32.const 0 + local.set $9 + loop $repeat|0 + local.get $9 + local.get $4 + i32.lt_s + i32.eqz + br_if $break|0 + local.get $8 + local.get $9 + i32.const 0 + i32.shl + i32.add + block (result i32) + i32.const 3 + global.set $~lib/argc + local.get $5 + local.get $9 + i32.const 0 + i32.shl + i32.add + i32.load8_u + local.get $9 + local.get $3 + local.get $2 + call_indirect (type $FUNCSIG$iiii) + end + i32.store8 + local.get $9 + i32.const 1 + i32.add + local.set $9 + br $repeat|0 + unreachable + end + unreachable end + local.get $7 + local.set $9 + local.get $3 + call $~lib/rt/purerc/__release + local.get $6 + call $~lib/rt/purerc/__release + local.get $9 + end + local.tee $8 + call $~lib/rt/purerc/__retain + local.set $7 + local.get $8 + call $~lib/rt/purerc/__release + local.get $7 + ) + (func $std/typedarray/testArrayMap<~lib/typedarray/Uint8ClampedArray,u8> (; 155 ;) (type $FUNCSIG$v) + (local $0 i32) + (local $1 i32) + (local $2 i32) + i32.const 0 + i32.const 3 + call $~lib/typedarray/Uint8ClampedArray#constructor + local.tee $0 + call $~lib/rt/purerc/__retain + local.set $1 + local.get $1 + i32.const 0 + i32.const 1 + call $~lib/typedarray/Uint8ClampedArray#__set + local.get $1 + i32.const 1 + i32.const 2 + call $~lib/typedarray/Uint8ClampedArray#__set + local.get $1 + i32.const 2 + i32.const 3 + call $~lib/typedarray/Uint8ClampedArray#__set + local.get $1 + i32.const 26 + call $~lib/typedarray/Uint8ClampedArray#map + local.set $2 + local.get $2 + i32.const 0 + call $~lib/typedarray/Uint8ClampedArray#__get + i32.const 1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 306 + i32.const 2 + call $~lib/builtins/abort + unreachable end local.get $2 + i32.const 1 + call $~lib/typedarray/Uint8ClampedArray#__get + i32.const 4 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 307 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $2 + i32.const 2 + call $~lib/typedarray/Uint8ClampedArray#__get + i32.const 9 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 308 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $0 + call $~lib/rt/purerc/__release + local.get $1 + call $~lib/rt/purerc/__release + local.get $2 + call $~lib/rt/purerc/__release ) - (func $~lib/typedarray/Int16Array#__get (; 100 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $std/typedarray/testArrayMap<~lib/typedarray/Int16Array,i16>~anonymous|0 (; 156 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + local.get $2 + call $~lib/rt/purerc/__retain + drop + local.get $0 + local.get $0 + i32.mul + local.set $3 + local.get $2 + call $~lib/rt/purerc/__release + local.get $3 + ) + (func $~lib/typedarray/Int16Array#map (; 157 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result 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) + block $~lib/typedarray/MAP<~lib/typedarray/Int16Array,i16>|inlined.0 (result i32) + local.get $0 + call $~lib/rt/purerc/__retain + local.set $3 + local.get $1 + local.set $2 + local.get $3 + call $~lib/typedarray/Int16Array#get:length + local.set $4 + local.get $3 + i32.load offset=4 + local.set $5 + i32.const 0 + local.get $4 + call $~lib/typedarray/Int16Array#constructor + local.tee $6 + call $~lib/rt/purerc/__retain + local.set $7 + local.get $7 + i32.load offset=4 + local.set $8 + block $break|0 + i32.const 0 + local.set $9 + loop $repeat|0 + local.get $9 + local.get $4 + i32.lt_s + i32.eqz + br_if $break|0 + local.get $8 + local.get $9 + i32.const 1 + i32.shl + i32.add + block (result i32) + i32.const 3 + global.set $~lib/argc + local.get $5 + local.get $9 + i32.const 1 + i32.shl + i32.add + i32.load16_s + local.get $9 + local.get $3 + local.get $2 + call_indirect (type $FUNCSIG$iiii) + end + i32.store16 + local.get $9 + i32.const 1 + i32.add + local.set $9 + br $repeat|0 + unreachable + end + unreachable + end + local.get $7 + local.set $9 + local.get $3 + call $~lib/rt/purerc/__release + local.get $6 + call $~lib/rt/purerc/__release + local.get $9 + end + local.tee $8 + call $~lib/rt/purerc/__retain + local.set $7 + local.get $8 + call $~lib/rt/purerc/__release + local.get $7 + ) + (func $~lib/typedarray/Int16Array#__get (; 158 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $1 local.get $0 i32.load offset=8 @@ -4362,9 +7853,9 @@ i32.shr_u i32.ge_u if - i32.const 0 - i32.const 192 - i32.const 274 + i32.const 288 + i32.const 344 + i32.const 273 i32.const 63 call $~lib/builtins/abort unreachable @@ -4377,29 +7868,38 @@ i32.add i32.load16_s ) - (func $std/typedarray/testArrayMap<~lib/typedarray/Int16Array,i16> (; 101 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayMap<~lib/typedarray/Int16Array,i16> (; 159 ;) (type $FUNCSIG$v) (local $0 i32) + (local $1 i32) + (local $2 i32) + i32.const 0 i32.const 3 call $~lib/typedarray/Int16Array#constructor local.tee $0 + call $~lib/rt/purerc/__retain + local.set $1 + local.get $1 i32.const 0 i32.const 1 call $~lib/typedarray/Int16Array#__set - local.get $0 + local.get $1 i32.const 1 i32.const 2 call $~lib/typedarray/Int16Array#__set - local.get $0 + local.get $1 i32.const 2 i32.const 3 call $~lib/typedarray/Int16Array#__set - local.get $0 + local.get $1 + i32.const 27 call $~lib/typedarray/Int16Array#map - local.tee $0 + local.set $2 + local.get $2 i32.const 0 call $~lib/typedarray/Int16Array#__get i32.const 1 - i32.ne + i32.eq + i32.eqz if i32.const 0 i32.const 24 @@ -4408,11 +7908,12 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $2 i32.const 1 call $~lib/typedarray/Int16Array#__get i32.const 4 - i32.ne + i32.eq + i32.eqz if i32.const 0 i32.const 24 @@ -4421,11 +7922,12 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $2 i32.const 2 call $~lib/typedarray/Int16Array#__get i32.const 9 - i32.ne + i32.eq + i32.eqz if i32.const 0 i32.const 24 @@ -4434,62 +7936,110 @@ call $~lib/builtins/abort unreachable end + local.get $0 + call $~lib/rt/purerc/__release + local.get $1 + call $~lib/rt/purerc/__release + local.get $2 + call $~lib/rt/purerc/__release ) - (func $~lib/typedarray/Uint16Array#map (; 102 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - (local $1 i32) + (func $std/typedarray/testArrayMap<~lib/typedarray/Uint16Array,u16>~anonymous|0 (; 160 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + local.get $2 + call $~lib/rt/purerc/__retain + drop + local.get $0 + local.get $0 + i32.mul + local.set $3 + local.get $2 + call $~lib/rt/purerc/__release + local.get $3 + ) + (func $~lib/typedarray/Uint16Array#map (; 161 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) (local $6 i32) (local $7 i32) - local.get $0 - i32.load offset=4 - local.set $3 - local.get $0 - i32.load offset=8 - i32.const 1 - i32.shr_u - local.tee $2 - local.set $4 - local.get $2 - call $~lib/typedarray/Uint16Array#constructor - local.tee $2 - i32.load offset=4 - local.set $5 - loop $repeat|0 + (local $8 i32) + (local $9 i32) + block $~lib/typedarray/MAP<~lib/typedarray/Uint16Array,u16>|inlined.0 (result i32) + local.get $0 + call $~lib/rt/purerc/__retain + local.set $3 local.get $1 + local.set $2 + local.get $3 + call $~lib/typedarray/Uint16Array#get:length + local.set $4 + local.get $3 + i32.load offset=4 + local.set $5 + i32.const 0 local.get $4 - i32.lt_s - if - i32.const 3 - global.set $~lib/argc - local.get $1 - i32.const 1 - i32.shl - local.tee $6 - local.get $3 - i32.add - i32.load16_u - local.get $1 - local.get $0 - call $std/typedarray/testArrayMap<~lib/typedarray/Int8Array,i8>~anonymous|0 - local.set $7 - local.get $5 - local.get $6 - i32.add - local.get $7 - i32.store16 - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $repeat|0 + call $~lib/typedarray/Uint16Array#constructor + local.tee $6 + call $~lib/rt/purerc/__retain + local.set $7 + local.get $7 + i32.load offset=4 + local.set $8 + block $break|0 + i32.const 0 + local.set $9 + loop $repeat|0 + local.get $9 + local.get $4 + i32.lt_s + i32.eqz + br_if $break|0 + local.get $8 + local.get $9 + i32.const 1 + i32.shl + i32.add + block (result i32) + i32.const 3 + global.set $~lib/argc + local.get $5 + local.get $9 + i32.const 1 + i32.shl + i32.add + i32.load16_u + local.get $9 + local.get $3 + local.get $2 + call_indirect (type $FUNCSIG$iiii) + end + i32.store16 + local.get $9 + i32.const 1 + i32.add + local.set $9 + br $repeat|0 + unreachable + end + unreachable end + local.get $7 + local.set $9 + local.get $3 + call $~lib/rt/purerc/__release + local.get $6 + call $~lib/rt/purerc/__release + local.get $9 end - local.get $2 + local.tee $8 + call $~lib/rt/purerc/__retain + local.set $7 + local.get $8 + call $~lib/rt/purerc/__release + local.get $7 ) - (func $~lib/typedarray/Uint16Array#__get (; 103 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Uint16Array#__get (; 162 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $1 local.get $0 i32.load offset=8 @@ -4497,9 +8047,9 @@ i32.shr_u i32.ge_u if - i32.const 0 - i32.const 192 - i32.const 356 + i32.const 288 + i32.const 344 + i32.const 355 i32.const 63 call $~lib/builtins/abort unreachable @@ -4512,29 +8062,38 @@ i32.add i32.load16_u ) - (func $std/typedarray/testArrayMap<~lib/typedarray/Uint16Array,u16> (; 104 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayMap<~lib/typedarray/Uint16Array,u16> (; 163 ;) (type $FUNCSIG$v) (local $0 i32) + (local $1 i32) + (local $2 i32) + i32.const 0 i32.const 3 call $~lib/typedarray/Uint16Array#constructor local.tee $0 + call $~lib/rt/purerc/__retain + local.set $1 + local.get $1 i32.const 0 i32.const 1 call $~lib/typedarray/Uint16Array#__set - local.get $0 + local.get $1 i32.const 1 i32.const 2 call $~lib/typedarray/Uint16Array#__set - local.get $0 + local.get $1 i32.const 2 i32.const 3 call $~lib/typedarray/Uint16Array#__set - local.get $0 + local.get $1 + i32.const 28 call $~lib/typedarray/Uint16Array#map - local.tee $0 + local.set $2 + local.get $2 i32.const 0 call $~lib/typedarray/Uint16Array#__get i32.const 1 - i32.ne + i32.eq + i32.eqz if i32.const 0 i32.const 24 @@ -4543,11 +8102,12 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $2 i32.const 1 call $~lib/typedarray/Uint16Array#__get i32.const 4 - i32.ne + i32.eq + i32.eqz if i32.const 0 i32.const 24 @@ -4556,11 +8116,12 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $2 i32.const 2 call $~lib/typedarray/Uint16Array#__get i32.const 9 - i32.ne + i32.eq + i32.eqz if i32.const 0 i32.const 24 @@ -4569,84 +8130,141 @@ call $~lib/builtins/abort unreachable end + local.get $0 + call $~lib/rt/purerc/__release + local.get $1 + call $~lib/rt/purerc/__release + local.get $2 + call $~lib/rt/purerc/__release ) - (func $~lib/typedarray/Int32Array#map (; 105 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - (local $1 i32) + (func $std/typedarray/testArrayMap<~lib/typedarray/Int32Array,i32>~anonymous|0 (; 164 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + local.get $2 + call $~lib/rt/purerc/__retain + drop + local.get $0 + local.get $0 + i32.mul + local.set $3 + local.get $2 + call $~lib/rt/purerc/__release + local.get $3 + ) + (func $~lib/typedarray/Int32Array#map (; 165 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) (local $6 i32) (local $7 i32) - local.get $0 - i32.load offset=4 - local.set $3 - local.get $0 - i32.load offset=8 - i32.const 2 - i32.shr_u - local.tee $2 - local.set $4 - local.get $2 - call $~lib/typedarray/Int32Array#constructor - local.tee $2 - i32.load offset=4 - local.set $5 - loop $repeat|0 + (local $8 i32) + (local $9 i32) + block $~lib/typedarray/MAP<~lib/typedarray/Int32Array,i32>|inlined.0 (result i32) + local.get $0 + call $~lib/rt/purerc/__retain + local.set $3 local.get $1 + local.set $2 + local.get $3 + call $~lib/typedarray/Int32Array#get:length + local.set $4 + local.get $3 + i32.load offset=4 + local.set $5 + i32.const 0 local.get $4 - i32.lt_s - if - i32.const 3 - global.set $~lib/argc - local.get $1 - i32.const 2 - i32.shl - local.tee $6 - local.get $3 - i32.add - i32.load - local.get $1 - local.get $0 - call $std/typedarray/testArrayMap<~lib/typedarray/Int8Array,i8>~anonymous|0 - local.set $7 - local.get $5 - local.get $6 - i32.add - local.get $7 - i32.store - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $repeat|0 + call $~lib/typedarray/Int32Array#constructor + local.tee $6 + call $~lib/rt/purerc/__retain + local.set $7 + local.get $7 + i32.load offset=4 + local.set $8 + block $break|0 + i32.const 0 + local.set $9 + loop $repeat|0 + local.get $9 + local.get $4 + i32.lt_s + i32.eqz + br_if $break|0 + local.get $8 + local.get $9 + i32.const 2 + i32.shl + i32.add + block (result i32) + i32.const 3 + global.set $~lib/argc + local.get $5 + local.get $9 + i32.const 2 + i32.shl + i32.add + i32.load + local.get $9 + local.get $3 + local.get $2 + call_indirect (type $FUNCSIG$iiii) + end + i32.store + local.get $9 + i32.const 1 + i32.add + local.set $9 + br $repeat|0 + unreachable + end + unreachable end + local.get $7 + local.set $9 + local.get $3 + call $~lib/rt/purerc/__release + local.get $6 + call $~lib/rt/purerc/__release + local.get $9 end - local.get $2 + local.tee $8 + call $~lib/rt/purerc/__retain + local.set $7 + local.get $8 + call $~lib/rt/purerc/__release + local.get $7 ) - (func $std/typedarray/testArrayMap<~lib/typedarray/Int32Array,i32> (; 106 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayMap<~lib/typedarray/Int32Array,i32> (; 166 ;) (type $FUNCSIG$v) (local $0 i32) + (local $1 i32) + (local $2 i32) + i32.const 0 i32.const 3 call $~lib/typedarray/Int32Array#constructor local.tee $0 + call $~lib/rt/purerc/__retain + local.set $1 + local.get $1 i32.const 0 i32.const 1 call $~lib/typedarray/Int32Array#__set - local.get $0 + local.get $1 i32.const 1 i32.const 2 call $~lib/typedarray/Int32Array#__set - local.get $0 + local.get $1 i32.const 2 i32.const 3 call $~lib/typedarray/Int32Array#__set - local.get $0 + local.get $1 + i32.const 29 call $~lib/typedarray/Int32Array#map - local.tee $0 + local.set $2 + local.get $2 i32.const 0 call $~lib/typedarray/Int32Array#__get i32.const 1 - i32.ne + i32.eq + i32.eqz if i32.const 0 i32.const 24 @@ -4655,11 +8273,12 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $2 i32.const 1 call $~lib/typedarray/Int32Array#__get i32.const 4 - i32.ne + i32.eq + i32.eqz if i32.const 0 i32.const 24 @@ -4668,11 +8287,12 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $2 i32.const 2 call $~lib/typedarray/Int32Array#__get i32.const 9 - i32.ne + i32.eq + i32.eqz if i32.const 0 i32.const 24 @@ -4681,62 +8301,110 @@ call $~lib/builtins/abort unreachable end + local.get $0 + call $~lib/rt/purerc/__release + local.get $1 + call $~lib/rt/purerc/__release + local.get $2 + call $~lib/rt/purerc/__release ) - (func $~lib/typedarray/Uint32Array#map (; 107 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - (local $1 i32) + (func $std/typedarray/testArrayMap<~lib/typedarray/Uint32Array,u32>~anonymous|0 (; 167 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + local.get $2 + call $~lib/rt/purerc/__retain + drop + local.get $0 + local.get $0 + i32.mul + local.set $3 + local.get $2 + call $~lib/rt/purerc/__release + local.get $3 + ) + (func $~lib/typedarray/Uint32Array#map (; 168 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) (local $6 i32) (local $7 i32) - local.get $0 - i32.load offset=4 - local.set $3 - local.get $0 - i32.load offset=8 - i32.const 2 - i32.shr_u - local.tee $2 - local.set $4 - local.get $2 - call $~lib/typedarray/Uint32Array#constructor - local.tee $2 - i32.load offset=4 - local.set $5 - loop $repeat|0 + (local $8 i32) + (local $9 i32) + block $~lib/typedarray/MAP<~lib/typedarray/Uint32Array,u32>|inlined.0 (result i32) + local.get $0 + call $~lib/rt/purerc/__retain + local.set $3 local.get $1 + local.set $2 + local.get $3 + call $~lib/typedarray/Uint32Array#get:length + local.set $4 + local.get $3 + i32.load offset=4 + local.set $5 + i32.const 0 local.get $4 - i32.lt_s - if - i32.const 3 - global.set $~lib/argc - local.get $1 - i32.const 2 - i32.shl - local.tee $6 - local.get $3 - i32.add - i32.load - local.get $1 - local.get $0 - call $std/typedarray/testArrayMap<~lib/typedarray/Int8Array,i8>~anonymous|0 - local.set $7 - local.get $5 - local.get $6 - i32.add - local.get $7 - i32.store - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $repeat|0 + call $~lib/typedarray/Uint32Array#constructor + local.tee $6 + call $~lib/rt/purerc/__retain + local.set $7 + local.get $7 + i32.load offset=4 + local.set $8 + block $break|0 + i32.const 0 + local.set $9 + loop $repeat|0 + local.get $9 + local.get $4 + i32.lt_s + i32.eqz + br_if $break|0 + local.get $8 + local.get $9 + i32.const 2 + i32.shl + i32.add + block (result i32) + i32.const 3 + global.set $~lib/argc + local.get $5 + local.get $9 + i32.const 2 + i32.shl + i32.add + i32.load + local.get $9 + local.get $3 + local.get $2 + call_indirect (type $FUNCSIG$iiii) + end + i32.store + local.get $9 + i32.const 1 + i32.add + local.set $9 + br $repeat|0 + unreachable + end + unreachable end + local.get $7 + local.set $9 + local.get $3 + call $~lib/rt/purerc/__release + local.get $6 + call $~lib/rt/purerc/__release + local.get $9 end - local.get $2 + local.tee $8 + call $~lib/rt/purerc/__retain + local.set $7 + local.get $8 + call $~lib/rt/purerc/__release + local.get $7 ) - (func $~lib/typedarray/Uint32Array#__get (; 108 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Uint32Array#__get (; 169 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $1 local.get $0 i32.load offset=8 @@ -4744,9 +8412,9 @@ i32.shr_u i32.ge_u if - i32.const 0 - i32.const 192 - i32.const 520 + i32.const 288 + i32.const 344 + i32.const 519 i32.const 63 call $~lib/builtins/abort unreachable @@ -4759,29 +8427,38 @@ i32.add i32.load ) - (func $std/typedarray/testArrayMap<~lib/typedarray/Uint32Array,u32> (; 109 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayMap<~lib/typedarray/Uint32Array,u32> (; 170 ;) (type $FUNCSIG$v) (local $0 i32) + (local $1 i32) + (local $2 i32) + i32.const 0 i32.const 3 call $~lib/typedarray/Uint32Array#constructor local.tee $0 + call $~lib/rt/purerc/__retain + local.set $1 + local.get $1 i32.const 0 i32.const 1 call $~lib/typedarray/Uint32Array#__set - local.get $0 + local.get $1 i32.const 1 i32.const 2 call $~lib/typedarray/Uint32Array#__set - local.get $0 + local.get $1 i32.const 2 i32.const 3 call $~lib/typedarray/Uint32Array#__set - local.get $0 + local.get $1 + i32.const 30 call $~lib/typedarray/Uint32Array#map - local.tee $0 + local.set $2 + local.get $2 i32.const 0 call $~lib/typedarray/Uint32Array#__get i32.const 1 - i32.ne + i32.eq + i32.eqz if i32.const 0 i32.const 24 @@ -4790,11 +8467,12 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $2 i32.const 1 call $~lib/typedarray/Uint32Array#__get i32.const 4 - i32.ne + i32.eq + i32.eqz if i32.const 0 i32.const 24 @@ -4803,11 +8481,12 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $2 i32.const 2 call $~lib/typedarray/Uint32Array#__get i32.const 9 - i32.ne + i32.eq + i32.eqz if i32.const 0 i32.const 24 @@ -4816,67 +8495,110 @@ call $~lib/builtins/abort unreachable end + local.get $0 + call $~lib/rt/purerc/__release + local.get $1 + call $~lib/rt/purerc/__release + local.get $2 + call $~lib/rt/purerc/__release ) - (func $std/typedarray/testArrayMap<~lib/typedarray/Int64Array,i64>~anonymous|0 (; 110 ;) (type $FUNCSIG$jjii) (param $0 i64) (param $1 i32) (param $2 i32) (result i64) + (func $std/typedarray/testArrayMap<~lib/typedarray/Int64Array,i64>~anonymous|0 (; 171 ;) (type $FUNCSIG$jjii) (param $0 i64) (param $1 i32) (param $2 i32) (result i64) + (local $3 i64) + local.get $2 + call $~lib/rt/purerc/__retain + drop local.get $0 local.get $0 i64.mul + local.set $3 + local.get $2 + call $~lib/rt/purerc/__release + local.get $3 ) - (func $~lib/typedarray/Int64Array#map (; 111 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - (local $1 i32) + (func $~lib/typedarray/Int64Array#map (; 172 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) (local $6 i32) - (local $7 i64) - local.get $0 - i32.load offset=4 - local.set $3 - local.get $0 - i32.load offset=8 - i32.const 3 - i32.shr_u - local.tee $2 - local.set $4 - local.get $2 - call $~lib/typedarray/Int64Array#constructor - local.tee $2 - i32.load offset=4 - local.set $5 - loop $repeat|0 + (local $7 i32) + (local $8 i32) + (local $9 i32) + block $~lib/typedarray/MAP<~lib/typedarray/Int64Array,i64>|inlined.0 (result i32) + local.get $0 + call $~lib/rt/purerc/__retain + local.set $3 local.get $1 + local.set $2 + local.get $3 + call $~lib/typedarray/Int64Array#get:length + local.set $4 + local.get $3 + i32.load offset=4 + local.set $5 + i32.const 0 local.get $4 - i32.lt_s - if - i32.const 3 - global.set $~lib/argc - local.get $1 - i32.const 3 - i32.shl - local.tee $6 - local.get $3 - i32.add - i64.load - local.get $1 - local.get $0 - call $std/typedarray/testArrayMap<~lib/typedarray/Int64Array,i64>~anonymous|0 - local.set $7 - local.get $5 - local.get $6 - i32.add - local.get $7 - i64.store - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $repeat|0 + call $~lib/typedarray/Int64Array#constructor + local.tee $6 + call $~lib/rt/purerc/__retain + local.set $7 + local.get $7 + i32.load offset=4 + local.set $8 + block $break|0 + i32.const 0 + local.set $9 + loop $repeat|0 + local.get $9 + local.get $4 + i32.lt_s + i32.eqz + br_if $break|0 + local.get $8 + local.get $9 + i32.const 3 + i32.shl + i32.add + block (result i64) + i32.const 3 + global.set $~lib/argc + local.get $5 + local.get $9 + i32.const 3 + i32.shl + i32.add + i64.load + local.get $9 + local.get $3 + local.get $2 + call_indirect (type $FUNCSIG$jjii) + end + i64.store + local.get $9 + i32.const 1 + i32.add + local.set $9 + br $repeat|0 + unreachable + end + unreachable end + local.get $7 + local.set $9 + local.get $3 + call $~lib/rt/purerc/__release + local.get $6 + call $~lib/rt/purerc/__release + local.get $9 end - local.get $2 + local.tee $8 + call $~lib/rt/purerc/__retain + local.set $7 + local.get $8 + call $~lib/rt/purerc/__release + local.get $7 ) - (func $~lib/typedarray/Int64Array#__get (; 112 ;) (type $FUNCSIG$jii) (param $0 i32) (param $1 i32) (result i64) + (func $~lib/typedarray/Int64Array#__get (; 173 ;) (type $FUNCSIG$jii) (param $0 i32) (param $1 i32) (result i64) local.get $1 local.get $0 i32.load offset=8 @@ -4884,9 +8606,9 @@ i32.shr_u i32.ge_u if - i32.const 0 - i32.const 192 - i32.const 602 + i32.const 288 + i32.const 344 + i32.const 601 i32.const 63 call $~lib/builtins/abort unreachable @@ -4899,29 +8621,38 @@ i32.add i64.load ) - (func $std/typedarray/testArrayMap<~lib/typedarray/Int64Array,i64> (; 113 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayMap<~lib/typedarray/Int64Array,i64> (; 174 ;) (type $FUNCSIG$v) (local $0 i32) + (local $1 i32) + (local $2 i32) + i32.const 0 i32.const 3 call $~lib/typedarray/Int64Array#constructor local.tee $0 + call $~lib/rt/purerc/__retain + local.set $1 + local.get $1 i32.const 0 i64.const 1 call $~lib/typedarray/Int64Array#__set - local.get $0 + local.get $1 i32.const 1 i64.const 2 call $~lib/typedarray/Int64Array#__set - local.get $0 + local.get $1 i32.const 2 i64.const 3 call $~lib/typedarray/Int64Array#__set - local.get $0 + local.get $1 + i32.const 31 call $~lib/typedarray/Int64Array#map - local.tee $0 + local.set $2 + local.get $2 i32.const 0 call $~lib/typedarray/Int64Array#__get i64.const 1 - i64.ne + i64.eq + i32.eqz if i32.const 0 i32.const 24 @@ -4930,11 +8661,12 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $2 i32.const 1 call $~lib/typedarray/Int64Array#__get i64.const 4 - i64.ne + i64.eq + i32.eqz if i32.const 0 i32.const 24 @@ -4943,11 +8675,12 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $2 i32.const 2 call $~lib/typedarray/Int64Array#__get i64.const 9 - i64.ne + i64.eq + i32.eqz if i32.const 0 i32.const 24 @@ -4956,62 +8689,110 @@ call $~lib/builtins/abort unreachable end + local.get $0 + call $~lib/rt/purerc/__release + local.get $1 + call $~lib/rt/purerc/__release + local.get $2 + call $~lib/rt/purerc/__release ) - (func $~lib/typedarray/Uint64Array#map (; 114 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - (local $1 i32) + (func $std/typedarray/testArrayMap<~lib/typedarray/Uint64Array,u64>~anonymous|0 (; 175 ;) (type $FUNCSIG$jjii) (param $0 i64) (param $1 i32) (param $2 i32) (result i64) + (local $3 i64) + local.get $2 + call $~lib/rt/purerc/__retain + drop + local.get $0 + local.get $0 + i64.mul + local.set $3 + local.get $2 + call $~lib/rt/purerc/__release + local.get $3 + ) + (func $~lib/typedarray/Uint64Array#map (; 176 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) (local $6 i32) - (local $7 i64) - local.get $0 - i32.load offset=4 - local.set $3 - local.get $0 - i32.load offset=8 - i32.const 3 - i32.shr_u - local.tee $2 - local.set $4 - local.get $2 - call $~lib/typedarray/Uint64Array#constructor - local.tee $2 - i32.load offset=4 - local.set $5 - loop $repeat|0 + (local $7 i32) + (local $8 i32) + (local $9 i32) + block $~lib/typedarray/MAP<~lib/typedarray/Uint64Array,u64>|inlined.0 (result i32) + local.get $0 + call $~lib/rt/purerc/__retain + local.set $3 local.get $1 + local.set $2 + local.get $3 + call $~lib/typedarray/Uint64Array#get:length + local.set $4 + local.get $3 + i32.load offset=4 + local.set $5 + i32.const 0 local.get $4 - i32.lt_s - if - i32.const 3 - global.set $~lib/argc - local.get $1 - i32.const 3 - i32.shl - local.tee $6 - local.get $3 - i32.add - i64.load - local.get $1 - local.get $0 - call $std/typedarray/testArrayMap<~lib/typedarray/Int64Array,i64>~anonymous|0 - local.set $7 - local.get $5 - local.get $6 - i32.add - local.get $7 - i64.store - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $repeat|0 + call $~lib/typedarray/Uint64Array#constructor + local.tee $6 + call $~lib/rt/purerc/__retain + local.set $7 + local.get $7 + i32.load offset=4 + local.set $8 + block $break|0 + i32.const 0 + local.set $9 + loop $repeat|0 + local.get $9 + local.get $4 + i32.lt_s + i32.eqz + br_if $break|0 + local.get $8 + local.get $9 + i32.const 3 + i32.shl + i32.add + block (result i64) + i32.const 3 + global.set $~lib/argc + local.get $5 + local.get $9 + i32.const 3 + i32.shl + i32.add + i64.load + local.get $9 + local.get $3 + local.get $2 + call_indirect (type $FUNCSIG$jjii) + end + i64.store + local.get $9 + i32.const 1 + i32.add + local.set $9 + br $repeat|0 + unreachable + end + unreachable end + local.get $7 + local.set $9 + local.get $3 + call $~lib/rt/purerc/__release + local.get $6 + call $~lib/rt/purerc/__release + local.get $9 end - local.get $2 + local.tee $8 + call $~lib/rt/purerc/__retain + local.set $7 + local.get $8 + call $~lib/rt/purerc/__release + local.get $7 ) - (func $~lib/typedarray/Uint64Array#__get (; 115 ;) (type $FUNCSIG$jii) (param $0 i32) (param $1 i32) (result i64) + (func $~lib/typedarray/Uint64Array#__get (; 177 ;) (type $FUNCSIG$jii) (param $0 i32) (param $1 i32) (result i64) local.get $1 local.get $0 i32.load offset=8 @@ -5019,9 +8800,9 @@ i32.shr_u i32.ge_u if - i32.const 0 - i32.const 192 - i32.const 684 + i32.const 288 + i32.const 344 + i32.const 683 i32.const 63 call $~lib/builtins/abort unreachable @@ -5034,29 +8815,38 @@ i32.add i64.load ) - (func $std/typedarray/testArrayMap<~lib/typedarray/Uint64Array,u64> (; 116 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayMap<~lib/typedarray/Uint64Array,u64> (; 178 ;) (type $FUNCSIG$v) (local $0 i32) + (local $1 i32) + (local $2 i32) + i32.const 0 i32.const 3 call $~lib/typedarray/Uint64Array#constructor local.tee $0 + call $~lib/rt/purerc/__retain + local.set $1 + local.get $1 i32.const 0 i64.const 1 call $~lib/typedarray/Uint64Array#__set - local.get $0 + local.get $1 i32.const 1 i64.const 2 call $~lib/typedarray/Uint64Array#__set - local.get $0 + local.get $1 i32.const 2 i64.const 3 call $~lib/typedarray/Uint64Array#__set - local.get $0 + local.get $1 + i32.const 32 call $~lib/typedarray/Uint64Array#map - local.tee $0 + local.set $2 + local.get $2 i32.const 0 call $~lib/typedarray/Uint64Array#__get i64.const 1 - i64.ne + i64.eq + i32.eqz if i32.const 0 i32.const 24 @@ -5065,11 +8855,12 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $2 i32.const 1 call $~lib/typedarray/Uint64Array#__get i64.const 4 - i64.ne + i64.eq + i32.eqz if i32.const 0 i32.const 24 @@ -5078,11 +8869,12 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $2 i32.const 2 call $~lib/typedarray/Uint64Array#__get i64.const 9 - i64.ne + i64.eq + i32.eqz if i32.const 0 i32.const 24 @@ -5091,67 +8883,110 @@ call $~lib/builtins/abort unreachable end + local.get $0 + call $~lib/rt/purerc/__release + local.get $1 + call $~lib/rt/purerc/__release + local.get $2 + call $~lib/rt/purerc/__release ) - (func $std/typedarray/testArrayMap<~lib/typedarray/Float32Array,f32>~anonymous|0 (; 117 ;) (type $FUNCSIG$ffii) (param $0 f32) (param $1 i32) (param $2 i32) (result f32) + (func $std/typedarray/testArrayMap<~lib/typedarray/Float32Array,f32>~anonymous|0 (; 179 ;) (type $FUNCSIG$ffii) (param $0 f32) (param $1 i32) (param $2 i32) (result f32) + (local $3 f32) + local.get $2 + call $~lib/rt/purerc/__retain + drop local.get $0 local.get $0 f32.mul + local.set $3 + local.get $2 + call $~lib/rt/purerc/__release + local.get $3 ) - (func $~lib/typedarray/Float32Array#map (; 118 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - (local $1 i32) + (func $~lib/typedarray/Float32Array#map (; 180 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) (local $6 i32) - (local $7 f32) - local.get $0 - i32.load offset=4 - local.set $3 - local.get $0 - i32.load offset=8 - i32.const 2 - i32.shr_u - local.tee $2 - local.set $4 - local.get $2 - call $~lib/typedarray/Float32Array#constructor - local.tee $2 - i32.load offset=4 - local.set $5 - loop $repeat|0 + (local $7 i32) + (local $8 i32) + (local $9 i32) + block $~lib/typedarray/MAP<~lib/typedarray/Float32Array,f32>|inlined.0 (result i32) + local.get $0 + call $~lib/rt/purerc/__retain + local.set $3 local.get $1 + local.set $2 + local.get $3 + call $~lib/typedarray/Float32Array#get:length + local.set $4 + local.get $3 + i32.load offset=4 + local.set $5 + i32.const 0 local.get $4 - i32.lt_s - if - i32.const 3 - global.set $~lib/argc - local.get $1 - i32.const 2 - i32.shl - local.tee $6 - local.get $3 - i32.add - f32.load - local.get $1 - local.get $0 - call $std/typedarray/testArrayMap<~lib/typedarray/Float32Array,f32>~anonymous|0 - local.set $7 - local.get $5 - local.get $6 - i32.add - local.get $7 - f32.store - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $repeat|0 + call $~lib/typedarray/Float32Array#constructor + local.tee $6 + call $~lib/rt/purerc/__retain + local.set $7 + local.get $7 + i32.load offset=4 + local.set $8 + block $break|0 + i32.const 0 + local.set $9 + loop $repeat|0 + local.get $9 + local.get $4 + i32.lt_s + i32.eqz + br_if $break|0 + local.get $8 + local.get $9 + i32.const 2 + i32.shl + i32.add + block (result f32) + i32.const 3 + global.set $~lib/argc + local.get $5 + local.get $9 + i32.const 2 + i32.shl + i32.add + f32.load + local.get $9 + local.get $3 + local.get $2 + call_indirect (type $FUNCSIG$ffii) + end + f32.store + local.get $9 + i32.const 1 + i32.add + local.set $9 + br $repeat|0 + unreachable + end + unreachable end + local.get $7 + local.set $9 + local.get $3 + call $~lib/rt/purerc/__release + local.get $6 + call $~lib/rt/purerc/__release + local.get $9 end - local.get $2 + local.tee $8 + call $~lib/rt/purerc/__retain + local.set $7 + local.get $8 + call $~lib/rt/purerc/__release + local.get $7 ) - (func $~lib/typedarray/Float32Array#__get (; 119 ;) (type $FUNCSIG$fii) (param $0 i32) (param $1 i32) (result f32) + (func $~lib/typedarray/Float32Array#__get (; 181 ;) (type $FUNCSIG$fii) (param $0 i32) (param $1 i32) (result f32) local.get $1 local.get $0 i32.load offset=8 @@ -5159,9 +8994,9 @@ i32.shr_u i32.ge_u if - i32.const 0 - i32.const 192 - i32.const 766 + i32.const 288 + i32.const 344 + i32.const 765 i32.const 63 call $~lib/builtins/abort unreachable @@ -5174,29 +9009,38 @@ i32.add f32.load ) - (func $std/typedarray/testArrayMap<~lib/typedarray/Float32Array,f32> (; 120 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayMap<~lib/typedarray/Float32Array,f32> (; 182 ;) (type $FUNCSIG$v) (local $0 i32) + (local $1 i32) + (local $2 i32) + i32.const 0 i32.const 3 call $~lib/typedarray/Float32Array#constructor local.tee $0 + call $~lib/rt/purerc/__retain + local.set $1 + local.get $1 i32.const 0 f32.const 1 call $~lib/typedarray/Float32Array#__set - local.get $0 + local.get $1 i32.const 1 f32.const 2 call $~lib/typedarray/Float32Array#__set - local.get $0 + local.get $1 i32.const 2 f32.const 3 call $~lib/typedarray/Float32Array#__set - local.get $0 + local.get $1 + i32.const 33 call $~lib/typedarray/Float32Array#map - local.tee $0 + local.set $2 + local.get $2 i32.const 0 call $~lib/typedarray/Float32Array#__get f32.const 1 - f32.ne + f32.eq + i32.eqz if i32.const 0 i32.const 24 @@ -5205,11 +9049,12 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $2 i32.const 1 call $~lib/typedarray/Float32Array#__get f32.const 4 - f32.ne + f32.eq + i32.eqz if i32.const 0 i32.const 24 @@ -5218,11 +9063,12 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $2 i32.const 2 call $~lib/typedarray/Float32Array#__get f32.const 9 - f32.ne + f32.eq + i32.eqz if i32.const 0 i32.const 24 @@ -5231,13 +9077,11053 @@ call $~lib/builtins/abort unreachable end + local.get $0 + call $~lib/rt/purerc/__release + local.get $1 + call $~lib/rt/purerc/__release + local.get $2 + call $~lib/rt/purerc/__release ) - (func $std/typedarray/testArrayMap<~lib/typedarray/Float64Array,f64>~anonymous|0 (; 121 ;) (type $FUNCSIG$ddii) (param $0 f64) (param $1 i32) (param $2 i32) (result f64) + (func $std/typedarray/testArrayMap<~lib/typedarray/Float64Array,f64>~anonymous|0 (; 183 ;) (type $FUNCSIG$ddii) (param $0 f64) (param $1 i32) (param $2 i32) (result f64) + (local $3 f64) + local.get $2 + call $~lib/rt/purerc/__retain + drop local.get $0 local.get $0 f64.mul + local.set $3 + local.get $2 + call $~lib/rt/purerc/__release + local.get $3 ) - (func $~lib/typedarray/Float64Array#map (; 122 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/typedarray/Float64Array#map (; 184 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result 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) + block $~lib/typedarray/MAP<~lib/typedarray/Float64Array,f64>|inlined.0 (result i32) + local.get $0 + call $~lib/rt/purerc/__retain + local.set $3 + local.get $1 + local.set $2 + local.get $3 + call $~lib/typedarray/Float64Array#get:length + local.set $4 + local.get $3 + i32.load offset=4 + local.set $5 + i32.const 0 + local.get $4 + call $~lib/typedarray/Float64Array#constructor + local.tee $6 + call $~lib/rt/purerc/__retain + local.set $7 + local.get $7 + i32.load offset=4 + local.set $8 + block $break|0 + i32.const 0 + local.set $9 + loop $repeat|0 + local.get $9 + local.get $4 + i32.lt_s + i32.eqz + br_if $break|0 + local.get $8 + local.get $9 + i32.const 3 + i32.shl + i32.add + block (result f64) + i32.const 3 + global.set $~lib/argc + local.get $5 + local.get $9 + i32.const 3 + i32.shl + i32.add + f64.load + local.get $9 + local.get $3 + local.get $2 + call_indirect (type $FUNCSIG$ddii) + end + f64.store + local.get $9 + i32.const 1 + i32.add + local.set $9 + br $repeat|0 + unreachable + end + unreachable + end + local.get $7 + local.set $9 + local.get $3 + call $~lib/rt/purerc/__release + local.get $6 + call $~lib/rt/purerc/__release + local.get $9 + end + local.tee $8 + call $~lib/rt/purerc/__retain + local.set $7 + local.get $8 + call $~lib/rt/purerc/__release + local.get $7 + ) + (func $std/typedarray/testArrayMap<~lib/typedarray/Float64Array,f64> (; 185 ;) (type $FUNCSIG$v) + (local $0 i32) + (local $1 i32) + (local $2 i32) + i32.const 0 + i32.const 3 + call $~lib/typedarray/Float64Array#constructor + local.tee $0 + call $~lib/rt/purerc/__retain + local.set $1 + local.get $1 + i32.const 0 + f64.const 1 + call $~lib/typedarray/Float64Array#__set + local.get $1 + i32.const 1 + f64.const 2 + call $~lib/typedarray/Float64Array#__set + local.get $1 + i32.const 2 + f64.const 3 + call $~lib/typedarray/Float64Array#__set + local.get $1 + i32.const 34 + call $~lib/typedarray/Float64Array#map + local.set $2 + local.get $2 + i32.const 0 + call $~lib/typedarray/Float64Array#__get + f64.const 1 + f64.eq + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 306 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $2 + i32.const 1 + call $~lib/typedarray/Float64Array#__get + f64.const 4 + f64.eq + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 307 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $2 + i32.const 2 + call $~lib/typedarray/Float64Array#__get + f64.const 9 + f64.eq + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 308 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $0 + call $~lib/rt/purerc/__release + local.get $1 + call $~lib/rt/purerc/__release + local.get $2 + call $~lib/rt/purerc/__release + ) + (func $std/typedarray/testArraySome<~lib/typedarray/Int8Array,i8>~anonymous|0 (; 186 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + local.get $2 + call $~lib/rt/purerc/__retain + drop + local.get $0 + i32.const 24 + i32.shl + i32.const 24 + i32.shr_s + i32.const 2 + i32.eq + local.set $3 + local.get $2 + call $~lib/rt/purerc/__release + local.get $3 + ) + (func $~lib/typedarray/Int8Array#some (; 187 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + block $~lib/typedarray/SOME<~lib/typedarray/Int8Array,i8>|inlined.0 (result i32) + local.get $0 + call $~lib/rt/purerc/__retain + local.set $3 + local.get $1 + local.set $2 + local.get $3 + i32.load offset=4 + local.set $4 + block $break|0 + block + i32.const 0 + local.set $5 + local.get $3 + call $~lib/typedarray/Int8Array#get:length + local.set $6 + end + loop $repeat|0 + local.get $5 + local.get $6 + i32.lt_s + i32.eqz + br_if $break|0 + block (result i32) + i32.const 3 + global.set $~lib/argc + local.get $4 + local.get $5 + i32.const 0 + i32.shl + i32.add + i32.load8_s + local.get $5 + local.get $3 + local.get $2 + call_indirect (type $FUNCSIG$iiii) + end + if + i32.const 1 + br $~lib/typedarray/SOME<~lib/typedarray/Int8Array,i8>|inlined.0 + end + local.get $5 + i32.const 1 + i32.add + local.set $5 + br $repeat|0 + unreachable + end + unreachable + end + i32.const 0 + local.set $6 + local.get $3 + call $~lib/rt/purerc/__release + local.get $6 + end + ) + (func $std/typedarray/testArraySome<~lib/typedarray/Int8Array,i8>~anonymous|1 (; 188 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + local.get $2 + call $~lib/rt/purerc/__retain + drop + local.get $0 + i32.const 24 + i32.shl + i32.const 24 + i32.shr_s + i32.const 0 + i32.eq + local.set $3 + local.get $2 + call $~lib/rt/purerc/__release + local.get $3 + ) + (func $std/typedarray/testArraySome<~lib/typedarray/Int8Array,i8> (; 189 ;) (type $FUNCSIG$v) + (local $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + i32.const 0 + i32.const 3 + call $~lib/typedarray/Int8Array#constructor + local.tee $0 + call $~lib/rt/purerc/__retain + local.set $1 + local.get $1 + i32.const 0 + i32.const 2 + call $~lib/typedarray/Int8Array#__set + local.get $1 + i32.const 1 + i32.const 4 + call $~lib/typedarray/Int8Array#__set + local.get $1 + i32.const 2 + i32.const 6 + call $~lib/typedarray/Int8Array#__set + local.get $1 + i32.const 35 + call $~lib/typedarray/Int8Array#some + local.set $2 + local.get $2 + i32.const 0 + i32.ne + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 335 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 36 + call $~lib/typedarray/Int8Array#some + local.set $3 + local.get $3 + i32.const 0 + i32.ne + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 338 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $0 + call $~lib/rt/purerc/__release + local.get $1 + call $~lib/rt/purerc/__release + ) + (func $std/typedarray/testArraySome<~lib/typedarray/Uint8Array,u8>~anonymous|0 (; 190 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + local.get $2 + call $~lib/rt/purerc/__retain + drop + local.get $0 + i32.const 255 + i32.and + i32.const 2 + i32.eq + local.set $3 + local.get $2 + call $~lib/rt/purerc/__release + local.get $3 + ) + (func $~lib/typedarray/Uint8Array#some (; 191 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + block $~lib/typedarray/SOME<~lib/typedarray/Uint8Array,u8>|inlined.0 (result i32) + local.get $0 + call $~lib/rt/purerc/__retain + local.set $3 + local.get $1 + local.set $2 + local.get $3 + i32.load offset=4 + local.set $4 + block $break|0 + block + i32.const 0 + local.set $5 + local.get $3 + call $~lib/typedarray/Uint8Array#get:length + local.set $6 + end + loop $repeat|0 + local.get $5 + local.get $6 + i32.lt_s + i32.eqz + br_if $break|0 + block (result i32) + i32.const 3 + global.set $~lib/argc + local.get $4 + local.get $5 + i32.const 0 + i32.shl + i32.add + i32.load8_u + local.get $5 + local.get $3 + local.get $2 + call_indirect (type $FUNCSIG$iiii) + end + if + i32.const 1 + br $~lib/typedarray/SOME<~lib/typedarray/Uint8Array,u8>|inlined.0 + end + local.get $5 + i32.const 1 + i32.add + local.set $5 + br $repeat|0 + unreachable + end + unreachable + end + i32.const 0 + local.set $6 + local.get $3 + call $~lib/rt/purerc/__release + local.get $6 + end + ) + (func $std/typedarray/testArraySome<~lib/typedarray/Uint8Array,u8>~anonymous|1 (; 192 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + local.get $2 + call $~lib/rt/purerc/__retain + drop + local.get $0 + i32.const 255 + i32.and + i32.const 0 + i32.eq + local.set $3 + local.get $2 + call $~lib/rt/purerc/__release + local.get $3 + ) + (func $std/typedarray/testArraySome<~lib/typedarray/Uint8Array,u8> (; 193 ;) (type $FUNCSIG$v) + (local $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + i32.const 0 + i32.const 3 + call $~lib/typedarray/Uint8Array#constructor + local.tee $0 + call $~lib/rt/purerc/__retain + local.set $1 + local.get $1 + i32.const 0 + i32.const 2 + call $~lib/typedarray/Uint8Array#__set + local.get $1 + i32.const 1 + i32.const 4 + call $~lib/typedarray/Uint8Array#__set + local.get $1 + i32.const 2 + i32.const 6 + call $~lib/typedarray/Uint8Array#__set + local.get $1 + i32.const 37 + call $~lib/typedarray/Uint8Array#some + local.set $2 + local.get $2 + i32.const 0 + i32.ne + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 335 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 38 + call $~lib/typedarray/Uint8Array#some + local.set $3 + local.get $3 + i32.const 0 + i32.ne + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 338 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $0 + call $~lib/rt/purerc/__release + local.get $1 + call $~lib/rt/purerc/__release + ) + (func $std/typedarray/testArraySome<~lib/typedarray/Uint8ClampedArray,u8>~anonymous|0 (; 194 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + local.get $2 + call $~lib/rt/purerc/__retain + drop + local.get $0 + i32.const 255 + i32.and + i32.const 2 + i32.eq + local.set $3 + local.get $2 + call $~lib/rt/purerc/__release + local.get $3 + ) + (func $~lib/typedarray/Uint8ClampedArray#some (; 195 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + block $~lib/typedarray/SOME<~lib/typedarray/Uint8ClampedArray,u8>|inlined.0 (result i32) + local.get $0 + call $~lib/rt/purerc/__retain + local.set $3 + local.get $1 + local.set $2 + local.get $3 + i32.load offset=4 + local.set $4 + block $break|0 + block + i32.const 0 + local.set $5 + local.get $3 + call $~lib/typedarray/Uint8ClampedArray#get:length + local.set $6 + end + loop $repeat|0 + local.get $5 + local.get $6 + i32.lt_s + i32.eqz + br_if $break|0 + block (result i32) + i32.const 3 + global.set $~lib/argc + local.get $4 + local.get $5 + i32.const 0 + i32.shl + i32.add + i32.load8_u + local.get $5 + local.get $3 + local.get $2 + call_indirect (type $FUNCSIG$iiii) + end + if + i32.const 1 + br $~lib/typedarray/SOME<~lib/typedarray/Uint8ClampedArray,u8>|inlined.0 + end + local.get $5 + i32.const 1 + i32.add + local.set $5 + br $repeat|0 + unreachable + end + unreachable + end + i32.const 0 + local.set $6 + local.get $3 + call $~lib/rt/purerc/__release + local.get $6 + end + ) + (func $std/typedarray/testArraySome<~lib/typedarray/Uint8ClampedArray,u8>~anonymous|1 (; 196 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + local.get $2 + call $~lib/rt/purerc/__retain + drop + local.get $0 + i32.const 255 + i32.and + i32.const 0 + i32.eq + local.set $3 + local.get $2 + call $~lib/rt/purerc/__release + local.get $3 + ) + (func $std/typedarray/testArraySome<~lib/typedarray/Uint8ClampedArray,u8> (; 197 ;) (type $FUNCSIG$v) + (local $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + i32.const 0 + i32.const 3 + call $~lib/typedarray/Uint8ClampedArray#constructor + local.tee $0 + call $~lib/rt/purerc/__retain + local.set $1 + local.get $1 + i32.const 0 + i32.const 2 + call $~lib/typedarray/Uint8ClampedArray#__set + local.get $1 + i32.const 1 + i32.const 4 + call $~lib/typedarray/Uint8ClampedArray#__set + local.get $1 + i32.const 2 + i32.const 6 + call $~lib/typedarray/Uint8ClampedArray#__set + local.get $1 + i32.const 39 + call $~lib/typedarray/Uint8ClampedArray#some + local.set $2 + local.get $2 + i32.const 0 + i32.ne + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 335 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 40 + call $~lib/typedarray/Uint8ClampedArray#some + local.set $3 + local.get $3 + i32.const 0 + i32.ne + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 338 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $0 + call $~lib/rt/purerc/__release + local.get $1 + call $~lib/rt/purerc/__release + ) + (func $std/typedarray/testArraySome<~lib/typedarray/Int16Array,i16>~anonymous|0 (; 198 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + local.get $2 + call $~lib/rt/purerc/__retain + drop + local.get $0 + i32.const 16 + i32.shl + i32.const 16 + i32.shr_s + i32.const 2 + i32.eq + local.set $3 + local.get $2 + call $~lib/rt/purerc/__release + local.get $3 + ) + (func $~lib/typedarray/Int16Array#some (; 199 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + block $~lib/typedarray/SOME<~lib/typedarray/Int16Array,i16>|inlined.0 (result i32) + local.get $0 + call $~lib/rt/purerc/__retain + local.set $3 + local.get $1 + local.set $2 + local.get $3 + i32.load offset=4 + local.set $4 + block $break|0 + block + i32.const 0 + local.set $5 + local.get $3 + call $~lib/typedarray/Int16Array#get:length + local.set $6 + end + loop $repeat|0 + local.get $5 + local.get $6 + i32.lt_s + i32.eqz + br_if $break|0 + block (result i32) + i32.const 3 + global.set $~lib/argc + local.get $4 + local.get $5 + i32.const 1 + i32.shl + i32.add + i32.load16_s + local.get $5 + local.get $3 + local.get $2 + call_indirect (type $FUNCSIG$iiii) + end + if + i32.const 1 + br $~lib/typedarray/SOME<~lib/typedarray/Int16Array,i16>|inlined.0 + end + local.get $5 + i32.const 1 + i32.add + local.set $5 + br $repeat|0 + unreachable + end + unreachable + end + i32.const 0 + local.set $6 + local.get $3 + call $~lib/rt/purerc/__release + local.get $6 + end + ) + (func $std/typedarray/testArraySome<~lib/typedarray/Int16Array,i16>~anonymous|1 (; 200 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + local.get $2 + call $~lib/rt/purerc/__retain + drop + local.get $0 + i32.const 16 + i32.shl + i32.const 16 + i32.shr_s + i32.const 0 + i32.eq + local.set $3 + local.get $2 + call $~lib/rt/purerc/__release + local.get $3 + ) + (func $std/typedarray/testArraySome<~lib/typedarray/Int16Array,i16> (; 201 ;) (type $FUNCSIG$v) + (local $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + i32.const 0 + i32.const 3 + call $~lib/typedarray/Int16Array#constructor + local.tee $0 + call $~lib/rt/purerc/__retain + local.set $1 + local.get $1 + i32.const 0 + i32.const 2 + call $~lib/typedarray/Int16Array#__set + local.get $1 + i32.const 1 + i32.const 4 + call $~lib/typedarray/Int16Array#__set + local.get $1 + i32.const 2 + i32.const 6 + call $~lib/typedarray/Int16Array#__set + local.get $1 + i32.const 41 + call $~lib/typedarray/Int16Array#some + local.set $2 + local.get $2 + i32.const 0 + i32.ne + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 335 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 42 + call $~lib/typedarray/Int16Array#some + local.set $3 + local.get $3 + i32.const 0 + i32.ne + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 338 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $0 + call $~lib/rt/purerc/__release + local.get $1 + call $~lib/rt/purerc/__release + ) + (func $std/typedarray/testArraySome<~lib/typedarray/Uint16Array,u16>~anonymous|0 (; 202 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + local.get $2 + call $~lib/rt/purerc/__retain + drop + local.get $0 + i32.const 65535 + i32.and + i32.const 2 + i32.eq + local.set $3 + local.get $2 + call $~lib/rt/purerc/__release + local.get $3 + ) + (func $~lib/typedarray/Uint16Array#some (; 203 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + block $~lib/typedarray/SOME<~lib/typedarray/Uint16Array,u16>|inlined.0 (result i32) + local.get $0 + call $~lib/rt/purerc/__retain + local.set $3 + local.get $1 + local.set $2 + local.get $3 + i32.load offset=4 + local.set $4 + block $break|0 + block + i32.const 0 + local.set $5 + local.get $3 + call $~lib/typedarray/Uint16Array#get:length + local.set $6 + end + loop $repeat|0 + local.get $5 + local.get $6 + i32.lt_s + i32.eqz + br_if $break|0 + block (result i32) + i32.const 3 + global.set $~lib/argc + local.get $4 + local.get $5 + i32.const 1 + i32.shl + i32.add + i32.load16_u + local.get $5 + local.get $3 + local.get $2 + call_indirect (type $FUNCSIG$iiii) + end + if + i32.const 1 + br $~lib/typedarray/SOME<~lib/typedarray/Uint16Array,u16>|inlined.0 + end + local.get $5 + i32.const 1 + i32.add + local.set $5 + br $repeat|0 + unreachable + end + unreachable + end + i32.const 0 + local.set $6 + local.get $3 + call $~lib/rt/purerc/__release + local.get $6 + end + ) + (func $std/typedarray/testArraySome<~lib/typedarray/Uint16Array,u16>~anonymous|1 (; 204 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + local.get $2 + call $~lib/rt/purerc/__retain + drop + local.get $0 + i32.const 65535 + i32.and + i32.const 0 + i32.eq + local.set $3 + local.get $2 + call $~lib/rt/purerc/__release + local.get $3 + ) + (func $std/typedarray/testArraySome<~lib/typedarray/Uint16Array,u16> (; 205 ;) (type $FUNCSIG$v) + (local $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + i32.const 0 + i32.const 3 + call $~lib/typedarray/Uint16Array#constructor + local.tee $0 + call $~lib/rt/purerc/__retain + local.set $1 + local.get $1 + i32.const 0 + i32.const 2 + call $~lib/typedarray/Uint16Array#__set + local.get $1 + i32.const 1 + i32.const 4 + call $~lib/typedarray/Uint16Array#__set + local.get $1 + i32.const 2 + i32.const 6 + call $~lib/typedarray/Uint16Array#__set + local.get $1 + i32.const 43 + call $~lib/typedarray/Uint16Array#some + local.set $2 + local.get $2 + i32.const 0 + i32.ne + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 335 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 44 + call $~lib/typedarray/Uint16Array#some + local.set $3 + local.get $3 + i32.const 0 + i32.ne + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 338 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $0 + call $~lib/rt/purerc/__release + local.get $1 + call $~lib/rt/purerc/__release + ) + (func $std/typedarray/testArraySome<~lib/typedarray/Int32Array,i32>~anonymous|0 (; 206 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + local.get $2 + call $~lib/rt/purerc/__retain + drop + local.get $0 + i32.const 2 + i32.eq + local.set $3 + local.get $2 + call $~lib/rt/purerc/__release + local.get $3 + ) + (func $~lib/typedarray/Int32Array#some (; 207 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + block $~lib/typedarray/SOME<~lib/typedarray/Int32Array,i32>|inlined.0 (result i32) + local.get $0 + call $~lib/rt/purerc/__retain + local.set $3 + local.get $1 + local.set $2 + local.get $3 + i32.load offset=4 + local.set $4 + block $break|0 + block + i32.const 0 + local.set $5 + local.get $3 + call $~lib/typedarray/Int32Array#get:length + local.set $6 + end + loop $repeat|0 + local.get $5 + local.get $6 + i32.lt_s + i32.eqz + br_if $break|0 + block (result i32) + i32.const 3 + global.set $~lib/argc + local.get $4 + local.get $5 + i32.const 2 + i32.shl + i32.add + i32.load + local.get $5 + local.get $3 + local.get $2 + call_indirect (type $FUNCSIG$iiii) + end + if + i32.const 1 + br $~lib/typedarray/SOME<~lib/typedarray/Int32Array,i32>|inlined.0 + end + local.get $5 + i32.const 1 + i32.add + local.set $5 + br $repeat|0 + unreachable + end + unreachable + end + i32.const 0 + local.set $6 + local.get $3 + call $~lib/rt/purerc/__release + local.get $6 + end + ) + (func $std/typedarray/testArraySome<~lib/typedarray/Int32Array,i32>~anonymous|1 (; 208 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + local.get $2 + call $~lib/rt/purerc/__retain + drop + local.get $0 + i32.const 0 + i32.eq + local.set $3 + local.get $2 + call $~lib/rt/purerc/__release + local.get $3 + ) + (func $std/typedarray/testArraySome<~lib/typedarray/Int32Array,i32> (; 209 ;) (type $FUNCSIG$v) + (local $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + i32.const 0 + i32.const 3 + call $~lib/typedarray/Int32Array#constructor + local.tee $0 + call $~lib/rt/purerc/__retain + local.set $1 + local.get $1 + i32.const 0 + i32.const 2 + call $~lib/typedarray/Int32Array#__set + local.get $1 + i32.const 1 + i32.const 4 + call $~lib/typedarray/Int32Array#__set + local.get $1 + i32.const 2 + i32.const 6 + call $~lib/typedarray/Int32Array#__set + local.get $1 + i32.const 45 + call $~lib/typedarray/Int32Array#some + local.set $2 + local.get $2 + i32.const 0 + i32.ne + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 335 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 46 + call $~lib/typedarray/Int32Array#some + local.set $3 + local.get $3 + i32.const 0 + i32.ne + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 338 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $0 + call $~lib/rt/purerc/__release + local.get $1 + call $~lib/rt/purerc/__release + ) + (func $std/typedarray/testArraySome<~lib/typedarray/Uint32Array,u32>~anonymous|0 (; 210 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + local.get $2 + call $~lib/rt/purerc/__retain + drop + local.get $0 + i32.const 2 + i32.eq + local.set $3 + local.get $2 + call $~lib/rt/purerc/__release + local.get $3 + ) + (func $~lib/typedarray/Uint32Array#some (; 211 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + block $~lib/typedarray/SOME<~lib/typedarray/Uint32Array,u32>|inlined.0 (result i32) + local.get $0 + call $~lib/rt/purerc/__retain + local.set $3 + local.get $1 + local.set $2 + local.get $3 + i32.load offset=4 + local.set $4 + block $break|0 + block + i32.const 0 + local.set $5 + local.get $3 + call $~lib/typedarray/Uint32Array#get:length + local.set $6 + end + loop $repeat|0 + local.get $5 + local.get $6 + i32.lt_s + i32.eqz + br_if $break|0 + block (result i32) + i32.const 3 + global.set $~lib/argc + local.get $4 + local.get $5 + i32.const 2 + i32.shl + i32.add + i32.load + local.get $5 + local.get $3 + local.get $2 + call_indirect (type $FUNCSIG$iiii) + end + if + i32.const 1 + br $~lib/typedarray/SOME<~lib/typedarray/Uint32Array,u32>|inlined.0 + end + local.get $5 + i32.const 1 + i32.add + local.set $5 + br $repeat|0 + unreachable + end + unreachable + end + i32.const 0 + local.set $6 + local.get $3 + call $~lib/rt/purerc/__release + local.get $6 + end + ) + (func $std/typedarray/testArraySome<~lib/typedarray/Uint32Array,u32>~anonymous|1 (; 212 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + local.get $2 + call $~lib/rt/purerc/__retain + drop + local.get $0 + i32.const 0 + i32.eq + local.set $3 + local.get $2 + call $~lib/rt/purerc/__release + local.get $3 + ) + (func $std/typedarray/testArraySome<~lib/typedarray/Uint32Array,u32> (; 213 ;) (type $FUNCSIG$v) + (local $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + i32.const 0 + i32.const 3 + call $~lib/typedarray/Uint32Array#constructor + local.tee $0 + call $~lib/rt/purerc/__retain + local.set $1 + local.get $1 + i32.const 0 + i32.const 2 + call $~lib/typedarray/Uint32Array#__set + local.get $1 + i32.const 1 + i32.const 4 + call $~lib/typedarray/Uint32Array#__set + local.get $1 + i32.const 2 + i32.const 6 + call $~lib/typedarray/Uint32Array#__set + local.get $1 + i32.const 47 + call $~lib/typedarray/Uint32Array#some + local.set $2 + local.get $2 + i32.const 0 + i32.ne + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 335 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 48 + call $~lib/typedarray/Uint32Array#some + local.set $3 + local.get $3 + i32.const 0 + i32.ne + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 338 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $0 + call $~lib/rt/purerc/__release + local.get $1 + call $~lib/rt/purerc/__release + ) + (func $std/typedarray/testArraySome<~lib/typedarray/Int64Array,i64>~anonymous|0 (; 214 ;) (type $FUNCSIG$ijii) (param $0 i64) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + local.get $2 + call $~lib/rt/purerc/__retain + drop + local.get $0 + i64.const 2 + i64.eq + local.set $3 + local.get $2 + call $~lib/rt/purerc/__release + local.get $3 + ) + (func $~lib/typedarray/Int64Array#some (; 215 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + block $~lib/typedarray/SOME<~lib/typedarray/Int64Array,i64>|inlined.0 (result i32) + local.get $0 + call $~lib/rt/purerc/__retain + local.set $3 + local.get $1 + local.set $2 + local.get $3 + i32.load offset=4 + local.set $4 + block $break|0 + block + i32.const 0 + local.set $5 + local.get $3 + call $~lib/typedarray/Int64Array#get:length + local.set $6 + end + loop $repeat|0 + local.get $5 + local.get $6 + i32.lt_s + i32.eqz + br_if $break|0 + block (result i32) + i32.const 3 + global.set $~lib/argc + local.get $4 + local.get $5 + i32.const 3 + i32.shl + i32.add + i64.load + local.get $5 + local.get $3 + local.get $2 + call_indirect (type $FUNCSIG$ijii) + end + if + i32.const 1 + br $~lib/typedarray/SOME<~lib/typedarray/Int64Array,i64>|inlined.0 + end + local.get $5 + i32.const 1 + i32.add + local.set $5 + br $repeat|0 + unreachable + end + unreachable + end + i32.const 0 + local.set $6 + local.get $3 + call $~lib/rt/purerc/__release + local.get $6 + end + ) + (func $std/typedarray/testArraySome<~lib/typedarray/Int64Array,i64>~anonymous|1 (; 216 ;) (type $FUNCSIG$ijii) (param $0 i64) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + local.get $2 + call $~lib/rt/purerc/__retain + drop + local.get $0 + i64.const 0 + i64.eq + local.set $3 + local.get $2 + call $~lib/rt/purerc/__release + local.get $3 + ) + (func $std/typedarray/testArraySome<~lib/typedarray/Int64Array,i64> (; 217 ;) (type $FUNCSIG$v) + (local $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + i32.const 0 + i32.const 3 + call $~lib/typedarray/Int64Array#constructor + local.tee $0 + call $~lib/rt/purerc/__retain + local.set $1 + local.get $1 + i32.const 0 + i64.const 2 + call $~lib/typedarray/Int64Array#__set + local.get $1 + i32.const 1 + i64.const 4 + call $~lib/typedarray/Int64Array#__set + local.get $1 + i32.const 2 + i64.const 6 + call $~lib/typedarray/Int64Array#__set + local.get $1 + i32.const 49 + call $~lib/typedarray/Int64Array#some + local.set $2 + local.get $2 + i32.const 0 + i32.ne + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 335 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 50 + call $~lib/typedarray/Int64Array#some + local.set $3 + local.get $3 + i32.const 0 + i32.ne + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 338 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $0 + call $~lib/rt/purerc/__release + local.get $1 + call $~lib/rt/purerc/__release + ) + (func $std/typedarray/testArraySome<~lib/typedarray/Uint64Array,u64>~anonymous|0 (; 218 ;) (type $FUNCSIG$ijii) (param $0 i64) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + local.get $2 + call $~lib/rt/purerc/__retain + drop + local.get $0 + i64.const 2 + i64.eq + local.set $3 + local.get $2 + call $~lib/rt/purerc/__release + local.get $3 + ) + (func $~lib/typedarray/Uint64Array#some (; 219 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + block $~lib/typedarray/SOME<~lib/typedarray/Uint64Array,u64>|inlined.0 (result i32) + local.get $0 + call $~lib/rt/purerc/__retain + local.set $3 + local.get $1 + local.set $2 + local.get $3 + i32.load offset=4 + local.set $4 + block $break|0 + block + i32.const 0 + local.set $5 + local.get $3 + call $~lib/typedarray/Uint64Array#get:length + local.set $6 + end + loop $repeat|0 + local.get $5 + local.get $6 + i32.lt_s + i32.eqz + br_if $break|0 + block (result i32) + i32.const 3 + global.set $~lib/argc + local.get $4 + local.get $5 + i32.const 3 + i32.shl + i32.add + i64.load + local.get $5 + local.get $3 + local.get $2 + call_indirect (type $FUNCSIG$ijii) + end + if + i32.const 1 + br $~lib/typedarray/SOME<~lib/typedarray/Uint64Array,u64>|inlined.0 + end + local.get $5 + i32.const 1 + i32.add + local.set $5 + br $repeat|0 + unreachable + end + unreachable + end + i32.const 0 + local.set $6 + local.get $3 + call $~lib/rt/purerc/__release + local.get $6 + end + ) + (func $std/typedarray/testArraySome<~lib/typedarray/Uint64Array,u64>~anonymous|1 (; 220 ;) (type $FUNCSIG$ijii) (param $0 i64) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + local.get $2 + call $~lib/rt/purerc/__retain + drop + local.get $0 + i64.const 0 + i64.eq + local.set $3 + local.get $2 + call $~lib/rt/purerc/__release + local.get $3 + ) + (func $std/typedarray/testArraySome<~lib/typedarray/Uint64Array,u64> (; 221 ;) (type $FUNCSIG$v) + (local $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + i32.const 0 + i32.const 3 + call $~lib/typedarray/Uint64Array#constructor + local.tee $0 + call $~lib/rt/purerc/__retain + local.set $1 + local.get $1 + i32.const 0 + i64.const 2 + call $~lib/typedarray/Uint64Array#__set + local.get $1 + i32.const 1 + i64.const 4 + call $~lib/typedarray/Uint64Array#__set + local.get $1 + i32.const 2 + i64.const 6 + call $~lib/typedarray/Uint64Array#__set + local.get $1 + i32.const 51 + call $~lib/typedarray/Uint64Array#some + local.set $2 + local.get $2 + i32.const 0 + i32.ne + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 335 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 52 + call $~lib/typedarray/Uint64Array#some + local.set $3 + local.get $3 + i32.const 0 + i32.ne + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 338 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $0 + call $~lib/rt/purerc/__release + local.get $1 + call $~lib/rt/purerc/__release + ) + (func $std/typedarray/testArraySome<~lib/typedarray/Float32Array,f32>~anonymous|0 (; 222 ;) (type $FUNCSIG$ifii) (param $0 f32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + local.get $2 + call $~lib/rt/purerc/__retain + drop + local.get $0 + f32.const 2 + f32.eq + local.set $3 + local.get $2 + call $~lib/rt/purerc/__release + local.get $3 + ) + (func $~lib/typedarray/Float32Array#some (; 223 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + block $~lib/typedarray/SOME<~lib/typedarray/Float32Array,f32>|inlined.0 (result i32) + local.get $0 + call $~lib/rt/purerc/__retain + local.set $3 + local.get $1 + local.set $2 + local.get $3 + i32.load offset=4 + local.set $4 + block $break|0 + block + i32.const 0 + local.set $5 + local.get $3 + call $~lib/typedarray/Float32Array#get:length + local.set $6 + end + loop $repeat|0 + local.get $5 + local.get $6 + i32.lt_s + i32.eqz + br_if $break|0 + block (result i32) + i32.const 3 + global.set $~lib/argc + local.get $4 + local.get $5 + i32.const 2 + i32.shl + i32.add + f32.load + local.get $5 + local.get $3 + local.get $2 + call_indirect (type $FUNCSIG$ifii) + end + if + i32.const 1 + br $~lib/typedarray/SOME<~lib/typedarray/Float32Array,f32>|inlined.0 + end + local.get $5 + i32.const 1 + i32.add + local.set $5 + br $repeat|0 + unreachable + end + unreachable + end + i32.const 0 + local.set $6 + local.get $3 + call $~lib/rt/purerc/__release + local.get $6 + end + ) + (func $std/typedarray/testArraySome<~lib/typedarray/Float32Array,f32>~anonymous|1 (; 224 ;) (type $FUNCSIG$ifii) (param $0 f32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + local.get $2 + call $~lib/rt/purerc/__retain + drop + local.get $0 + f32.const 0 + f32.eq + local.set $3 + local.get $2 + call $~lib/rt/purerc/__release + local.get $3 + ) + (func $std/typedarray/testArraySome<~lib/typedarray/Float32Array,f32> (; 225 ;) (type $FUNCSIG$v) + (local $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + i32.const 0 + i32.const 3 + call $~lib/typedarray/Float32Array#constructor + local.tee $0 + call $~lib/rt/purerc/__retain + local.set $1 + local.get $1 + i32.const 0 + f32.const 2 + call $~lib/typedarray/Float32Array#__set + local.get $1 + i32.const 1 + f32.const 4 + call $~lib/typedarray/Float32Array#__set + local.get $1 + i32.const 2 + f32.const 6 + call $~lib/typedarray/Float32Array#__set + local.get $1 + i32.const 53 + call $~lib/typedarray/Float32Array#some + local.set $2 + local.get $2 + i32.const 0 + i32.ne + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 335 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 54 + call $~lib/typedarray/Float32Array#some + local.set $3 + local.get $3 + i32.const 0 + i32.ne + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 338 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $0 + call $~lib/rt/purerc/__release + local.get $1 + call $~lib/rt/purerc/__release + ) + (func $std/typedarray/testArraySome<~lib/typedarray/Float64Array,f64>~anonymous|0 (; 226 ;) (type $FUNCSIG$idii) (param $0 f64) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + local.get $2 + call $~lib/rt/purerc/__retain + drop + local.get $0 + f64.const 2 + f64.eq + local.set $3 + local.get $2 + call $~lib/rt/purerc/__release + local.get $3 + ) + (func $~lib/typedarray/Float64Array#some (; 227 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + block $~lib/typedarray/SOME<~lib/typedarray/Float64Array,f64>|inlined.0 (result i32) + local.get $0 + call $~lib/rt/purerc/__retain + local.set $3 + local.get $1 + local.set $2 + local.get $3 + i32.load offset=4 + local.set $4 + block $break|0 + block + i32.const 0 + local.set $5 + local.get $3 + call $~lib/typedarray/Float64Array#get:length + local.set $6 + end + loop $repeat|0 + local.get $5 + local.get $6 + i32.lt_s + i32.eqz + br_if $break|0 + block (result i32) + i32.const 3 + global.set $~lib/argc + local.get $4 + local.get $5 + i32.const 3 + i32.shl + i32.add + f64.load + local.get $5 + local.get $3 + local.get $2 + call_indirect (type $FUNCSIG$idii) + end + if + i32.const 1 + br $~lib/typedarray/SOME<~lib/typedarray/Float64Array,f64>|inlined.0 + end + local.get $5 + i32.const 1 + i32.add + local.set $5 + br $repeat|0 + unreachable + end + unreachable + end + i32.const 0 + local.set $6 + local.get $3 + call $~lib/rt/purerc/__release + local.get $6 + end + ) + (func $std/typedarray/testArraySome<~lib/typedarray/Float64Array,f64>~anonymous|1 (; 228 ;) (type $FUNCSIG$idii) (param $0 f64) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + local.get $2 + call $~lib/rt/purerc/__retain + drop + local.get $0 + f64.const 0 + f64.eq + local.set $3 + local.get $2 + call $~lib/rt/purerc/__release + local.get $3 + ) + (func $std/typedarray/testArraySome<~lib/typedarray/Float64Array,f64> (; 229 ;) (type $FUNCSIG$v) + (local $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + i32.const 0 + i32.const 3 + call $~lib/typedarray/Float64Array#constructor + local.tee $0 + call $~lib/rt/purerc/__retain + local.set $1 + local.get $1 + i32.const 0 + f64.const 2 + call $~lib/typedarray/Float64Array#__set + local.get $1 + i32.const 1 + f64.const 4 + call $~lib/typedarray/Float64Array#__set + local.get $1 + i32.const 2 + f64.const 6 + call $~lib/typedarray/Float64Array#__set + local.get $1 + i32.const 55 + call $~lib/typedarray/Float64Array#some + local.set $2 + local.get $2 + i32.const 0 + i32.ne + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 335 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 56 + call $~lib/typedarray/Float64Array#some + local.set $3 + local.get $3 + i32.const 0 + i32.ne + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 338 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $0 + call $~lib/rt/purerc/__release + local.get $1 + call $~lib/rt/purerc/__release + ) + (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Int8Array,i8>~anonymous|0 (; 230 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + local.get $2 + call $~lib/rt/purerc/__retain + drop + local.get $0 + i32.const 24 + i32.shl + i32.const 24 + i32.shr_s + i32.const 2 + i32.eq + local.set $3 + local.get $2 + call $~lib/rt/purerc/__release + local.get $3 + ) + (func $~lib/typedarray/Int8Array#findIndex (; 231 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + block $~lib/typedarray/FIND_INDEX<~lib/typedarray/Int8Array,i8>|inlined.0 (result i32) + local.get $0 + call $~lib/rt/purerc/__retain + local.set $3 + local.get $1 + local.set $2 + local.get $3 + i32.load offset=4 + local.set $4 + block $break|0 + block + i32.const 0 + local.set $5 + local.get $3 + call $~lib/typedarray/Int8Array#get:length + local.set $6 + end + loop $repeat|0 + local.get $5 + local.get $6 + i32.lt_s + i32.eqz + br_if $break|0 + block (result i32) + i32.const 3 + global.set $~lib/argc + local.get $4 + local.get $5 + i32.const 0 + i32.shl + i32.add + i32.load8_s + local.get $5 + local.get $3 + local.get $2 + call_indirect (type $FUNCSIG$iiii) + end + if + local.get $5 + br $~lib/typedarray/FIND_INDEX<~lib/typedarray/Int8Array,i8>|inlined.0 + end + local.get $5 + i32.const 1 + i32.add + local.set $5 + br $repeat|0 + unreachable + end + unreachable + end + i32.const -1 + local.set $6 + local.get $3 + call $~lib/rt/purerc/__release + local.get $6 + end + ) + (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Int8Array,i8>~anonymous|1 (; 232 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + local.get $2 + call $~lib/rt/purerc/__retain + drop + local.get $0 + i32.const 24 + i32.shl + i32.const 24 + i32.shr_s + i32.const 4 + i32.eq + local.set $3 + local.get $2 + call $~lib/rt/purerc/__release + local.get $3 + ) + (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Int8Array,i8> (; 233 ;) (type $FUNCSIG$v) + (local $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + i32.const 0 + i32.const 3 + call $~lib/typedarray/Int8Array#constructor + local.tee $0 + call $~lib/rt/purerc/__retain + local.set $1 + local.get $1 + i32.const 0 + i32.const 1 + call $~lib/typedarray/Int8Array#__set + local.get $1 + i32.const 1 + i32.const 2 + call $~lib/typedarray/Int8Array#__set + local.get $1 + i32.const 2 + i32.const 3 + call $~lib/typedarray/Int8Array#__set + local.get $1 + i32.const 57 + call $~lib/typedarray/Int8Array#findIndex + local.set $2 + local.get $2 + i32.const 1 + i32.eq + i32.eqz + if + i32.const 944 + i32.const 24 + i32.const 365 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 58 + call $~lib/typedarray/Int8Array#findIndex + local.set $3 + local.get $3 + i32.const -1 + i32.eq + i32.eqz + if + i32.const 992 + i32.const 24 + i32.const 368 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $0 + call $~lib/rt/purerc/__release + local.get $1 + call $~lib/rt/purerc/__release + ) + (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Uint8Array,u8>~anonymous|0 (; 234 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + local.get $2 + call $~lib/rt/purerc/__retain + drop + local.get $0 + i32.const 255 + i32.and + i32.const 2 + i32.eq + local.set $3 + local.get $2 + call $~lib/rt/purerc/__release + local.get $3 + ) + (func $~lib/typedarray/Uint8Array#findIndex (; 235 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + block $~lib/typedarray/FIND_INDEX<~lib/typedarray/Uint8Array,u8>|inlined.0 (result i32) + local.get $0 + call $~lib/rt/purerc/__retain + local.set $3 + local.get $1 + local.set $2 + local.get $3 + i32.load offset=4 + local.set $4 + block $break|0 + block + i32.const 0 + local.set $5 + local.get $3 + call $~lib/typedarray/Uint8Array#get:length + local.set $6 + end + loop $repeat|0 + local.get $5 + local.get $6 + i32.lt_s + i32.eqz + br_if $break|0 + block (result i32) + i32.const 3 + global.set $~lib/argc + local.get $4 + local.get $5 + i32.const 0 + i32.shl + i32.add + i32.load8_u + local.get $5 + local.get $3 + local.get $2 + call_indirect (type $FUNCSIG$iiii) + end + if + local.get $5 + br $~lib/typedarray/FIND_INDEX<~lib/typedarray/Uint8Array,u8>|inlined.0 + end + local.get $5 + i32.const 1 + i32.add + local.set $5 + br $repeat|0 + unreachable + end + unreachable + end + i32.const -1 + local.set $6 + local.get $3 + call $~lib/rt/purerc/__release + local.get $6 + end + ) + (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Uint8Array,u8>~anonymous|1 (; 236 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + local.get $2 + call $~lib/rt/purerc/__retain + drop + local.get $0 + i32.const 255 + i32.and + i32.const 4 + i32.eq + local.set $3 + local.get $2 + call $~lib/rt/purerc/__release + local.get $3 + ) + (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Uint8Array,u8> (; 237 ;) (type $FUNCSIG$v) + (local $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + i32.const 0 + i32.const 3 + call $~lib/typedarray/Uint8Array#constructor + local.tee $0 + call $~lib/rt/purerc/__retain + local.set $1 + local.get $1 + i32.const 0 + i32.const 1 + call $~lib/typedarray/Uint8Array#__set + local.get $1 + i32.const 1 + i32.const 2 + call $~lib/typedarray/Uint8Array#__set + local.get $1 + i32.const 2 + i32.const 3 + call $~lib/typedarray/Uint8Array#__set + local.get $1 + i32.const 59 + call $~lib/typedarray/Uint8Array#findIndex + local.set $2 + local.get $2 + i32.const 1 + i32.eq + i32.eqz + if + i32.const 944 + i32.const 24 + i32.const 365 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 60 + call $~lib/typedarray/Uint8Array#findIndex + local.set $3 + local.get $3 + i32.const -1 + i32.eq + i32.eqz + if + i32.const 992 + i32.const 24 + i32.const 368 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $0 + call $~lib/rt/purerc/__release + local.get $1 + call $~lib/rt/purerc/__release + ) + (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Uint8ClampedArray,u8>~anonymous|0 (; 238 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + local.get $2 + call $~lib/rt/purerc/__retain + drop + local.get $0 + i32.const 255 + i32.and + i32.const 2 + i32.eq + local.set $3 + local.get $2 + call $~lib/rt/purerc/__release + local.get $3 + ) + (func $~lib/typedarray/Uint8ClampedArray#findIndex (; 239 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + block $~lib/typedarray/FIND_INDEX<~lib/typedarray/Uint8ClampedArray,u8>|inlined.0 (result i32) + local.get $0 + call $~lib/rt/purerc/__retain + local.set $3 + local.get $1 + local.set $2 + local.get $3 + i32.load offset=4 + local.set $4 + block $break|0 + block + i32.const 0 + local.set $5 + local.get $3 + call $~lib/typedarray/Uint8ClampedArray#get:length + local.set $6 + end + loop $repeat|0 + local.get $5 + local.get $6 + i32.lt_s + i32.eqz + br_if $break|0 + block (result i32) + i32.const 3 + global.set $~lib/argc + local.get $4 + local.get $5 + i32.const 0 + i32.shl + i32.add + i32.load8_u + local.get $5 + local.get $3 + local.get $2 + call_indirect (type $FUNCSIG$iiii) + end + if + local.get $5 + br $~lib/typedarray/FIND_INDEX<~lib/typedarray/Uint8ClampedArray,u8>|inlined.0 + end + local.get $5 + i32.const 1 + i32.add + local.set $5 + br $repeat|0 + unreachable + end + unreachable + end + i32.const -1 + local.set $6 + local.get $3 + call $~lib/rt/purerc/__release + local.get $6 + end + ) + (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Uint8ClampedArray,u8>~anonymous|1 (; 240 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + local.get $2 + call $~lib/rt/purerc/__retain + drop + local.get $0 + i32.const 255 + i32.and + i32.const 4 + i32.eq + local.set $3 + local.get $2 + call $~lib/rt/purerc/__release + local.get $3 + ) + (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Uint8ClampedArray,u8> (; 241 ;) (type $FUNCSIG$v) + (local $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + i32.const 0 + i32.const 3 + call $~lib/typedarray/Uint8ClampedArray#constructor + local.tee $0 + call $~lib/rt/purerc/__retain + local.set $1 + local.get $1 + i32.const 0 + i32.const 1 + call $~lib/typedarray/Uint8ClampedArray#__set + local.get $1 + i32.const 1 + i32.const 2 + call $~lib/typedarray/Uint8ClampedArray#__set + local.get $1 + i32.const 2 + i32.const 3 + call $~lib/typedarray/Uint8ClampedArray#__set + local.get $1 + i32.const 61 + call $~lib/typedarray/Uint8ClampedArray#findIndex + local.set $2 + local.get $2 + i32.const 1 + i32.eq + i32.eqz + if + i32.const 944 + i32.const 24 + i32.const 365 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 62 + call $~lib/typedarray/Uint8ClampedArray#findIndex + local.set $3 + local.get $3 + i32.const -1 + i32.eq + i32.eqz + if + i32.const 992 + i32.const 24 + i32.const 368 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $0 + call $~lib/rt/purerc/__release + local.get $1 + call $~lib/rt/purerc/__release + ) + (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Int16Array,i16>~anonymous|0 (; 242 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + local.get $2 + call $~lib/rt/purerc/__retain + drop + local.get $0 + i32.const 16 + i32.shl + i32.const 16 + i32.shr_s + i32.const 2 + i32.eq + local.set $3 + local.get $2 + call $~lib/rt/purerc/__release + local.get $3 + ) + (func $~lib/typedarray/Int16Array#findIndex (; 243 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + block $~lib/typedarray/FIND_INDEX<~lib/typedarray/Int16Array,i16>|inlined.0 (result i32) + local.get $0 + call $~lib/rt/purerc/__retain + local.set $3 + local.get $1 + local.set $2 + local.get $3 + i32.load offset=4 + local.set $4 + block $break|0 + block + i32.const 0 + local.set $5 + local.get $3 + call $~lib/typedarray/Int16Array#get:length + local.set $6 + end + loop $repeat|0 + local.get $5 + local.get $6 + i32.lt_s + i32.eqz + br_if $break|0 + block (result i32) + i32.const 3 + global.set $~lib/argc + local.get $4 + local.get $5 + i32.const 1 + i32.shl + i32.add + i32.load16_s + local.get $5 + local.get $3 + local.get $2 + call_indirect (type $FUNCSIG$iiii) + end + if + local.get $5 + br $~lib/typedarray/FIND_INDEX<~lib/typedarray/Int16Array,i16>|inlined.0 + end + local.get $5 + i32.const 1 + i32.add + local.set $5 + br $repeat|0 + unreachable + end + unreachable + end + i32.const -1 + local.set $6 + local.get $3 + call $~lib/rt/purerc/__release + local.get $6 + end + ) + (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Int16Array,i16>~anonymous|1 (; 244 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + local.get $2 + call $~lib/rt/purerc/__retain + drop + local.get $0 + i32.const 16 + i32.shl + i32.const 16 + i32.shr_s + i32.const 4 + i32.eq + local.set $3 + local.get $2 + call $~lib/rt/purerc/__release + local.get $3 + ) + (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Int16Array,i16> (; 245 ;) (type $FUNCSIG$v) + (local $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + i32.const 0 + i32.const 3 + call $~lib/typedarray/Int16Array#constructor + local.tee $0 + call $~lib/rt/purerc/__retain + local.set $1 + local.get $1 + i32.const 0 + i32.const 1 + call $~lib/typedarray/Int16Array#__set + local.get $1 + i32.const 1 + i32.const 2 + call $~lib/typedarray/Int16Array#__set + local.get $1 + i32.const 2 + i32.const 3 + call $~lib/typedarray/Int16Array#__set + local.get $1 + i32.const 63 + call $~lib/typedarray/Int16Array#findIndex + local.set $2 + local.get $2 + i32.const 1 + i32.eq + i32.eqz + if + i32.const 944 + i32.const 24 + i32.const 365 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 64 + call $~lib/typedarray/Int16Array#findIndex + local.set $3 + local.get $3 + i32.const -1 + i32.eq + i32.eqz + if + i32.const 992 + i32.const 24 + i32.const 368 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $0 + call $~lib/rt/purerc/__release + local.get $1 + call $~lib/rt/purerc/__release + ) + (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Uint16Array,u16>~anonymous|0 (; 246 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + local.get $2 + call $~lib/rt/purerc/__retain + drop + local.get $0 + i32.const 65535 + i32.and + i32.const 2 + i32.eq + local.set $3 + local.get $2 + call $~lib/rt/purerc/__release + local.get $3 + ) + (func $~lib/typedarray/Uint16Array#findIndex (; 247 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + block $~lib/typedarray/FIND_INDEX<~lib/typedarray/Uint16Array,u16>|inlined.0 (result i32) + local.get $0 + call $~lib/rt/purerc/__retain + local.set $3 + local.get $1 + local.set $2 + local.get $3 + i32.load offset=4 + local.set $4 + block $break|0 + block + i32.const 0 + local.set $5 + local.get $3 + call $~lib/typedarray/Uint16Array#get:length + local.set $6 + end + loop $repeat|0 + local.get $5 + local.get $6 + i32.lt_s + i32.eqz + br_if $break|0 + block (result i32) + i32.const 3 + global.set $~lib/argc + local.get $4 + local.get $5 + i32.const 1 + i32.shl + i32.add + i32.load16_u + local.get $5 + local.get $3 + local.get $2 + call_indirect (type $FUNCSIG$iiii) + end + if + local.get $5 + br $~lib/typedarray/FIND_INDEX<~lib/typedarray/Uint16Array,u16>|inlined.0 + end + local.get $5 + i32.const 1 + i32.add + local.set $5 + br $repeat|0 + unreachable + end + unreachable + end + i32.const -1 + local.set $6 + local.get $3 + call $~lib/rt/purerc/__release + local.get $6 + end + ) + (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Uint16Array,u16>~anonymous|1 (; 248 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + local.get $2 + call $~lib/rt/purerc/__retain + drop + local.get $0 + i32.const 65535 + i32.and + i32.const 4 + i32.eq + local.set $3 + local.get $2 + call $~lib/rt/purerc/__release + local.get $3 + ) + (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Uint16Array,u16> (; 249 ;) (type $FUNCSIG$v) + (local $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + i32.const 0 + i32.const 3 + call $~lib/typedarray/Uint16Array#constructor + local.tee $0 + call $~lib/rt/purerc/__retain + local.set $1 + local.get $1 + i32.const 0 + i32.const 1 + call $~lib/typedarray/Uint16Array#__set + local.get $1 + i32.const 1 + i32.const 2 + call $~lib/typedarray/Uint16Array#__set + local.get $1 + i32.const 2 + i32.const 3 + call $~lib/typedarray/Uint16Array#__set + local.get $1 + i32.const 65 + call $~lib/typedarray/Uint16Array#findIndex + local.set $2 + local.get $2 + i32.const 1 + i32.eq + i32.eqz + if + i32.const 944 + i32.const 24 + i32.const 365 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 66 + call $~lib/typedarray/Uint16Array#findIndex + local.set $3 + local.get $3 + i32.const -1 + i32.eq + i32.eqz + if + i32.const 992 + i32.const 24 + i32.const 368 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $0 + call $~lib/rt/purerc/__release + local.get $1 + call $~lib/rt/purerc/__release + ) + (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Int32Array,i32>~anonymous|0 (; 250 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + local.get $2 + call $~lib/rt/purerc/__retain + drop + local.get $0 + i32.const 2 + i32.eq + local.set $3 + local.get $2 + call $~lib/rt/purerc/__release + local.get $3 + ) + (func $~lib/typedarray/Int32Array#findIndex (; 251 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + block $~lib/typedarray/FIND_INDEX<~lib/typedarray/Int32Array,i32>|inlined.0 (result i32) + local.get $0 + call $~lib/rt/purerc/__retain + local.set $3 + local.get $1 + local.set $2 + local.get $3 + i32.load offset=4 + local.set $4 + block $break|0 + block + i32.const 0 + local.set $5 + local.get $3 + call $~lib/typedarray/Int32Array#get:length + local.set $6 + end + loop $repeat|0 + local.get $5 + local.get $6 + i32.lt_s + i32.eqz + br_if $break|0 + block (result i32) + i32.const 3 + global.set $~lib/argc + local.get $4 + local.get $5 + i32.const 2 + i32.shl + i32.add + i32.load + local.get $5 + local.get $3 + local.get $2 + call_indirect (type $FUNCSIG$iiii) + end + if + local.get $5 + br $~lib/typedarray/FIND_INDEX<~lib/typedarray/Int32Array,i32>|inlined.0 + end + local.get $5 + i32.const 1 + i32.add + local.set $5 + br $repeat|0 + unreachable + end + unreachable + end + i32.const -1 + local.set $6 + local.get $3 + call $~lib/rt/purerc/__release + local.get $6 + end + ) + (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Int32Array,i32>~anonymous|1 (; 252 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + local.get $2 + call $~lib/rt/purerc/__retain + drop + local.get $0 + i32.const 4 + i32.eq + local.set $3 + local.get $2 + call $~lib/rt/purerc/__release + local.get $3 + ) + (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Int32Array,i32> (; 253 ;) (type $FUNCSIG$v) + (local $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + i32.const 0 + i32.const 3 + call $~lib/typedarray/Int32Array#constructor + local.tee $0 + call $~lib/rt/purerc/__retain + local.set $1 + local.get $1 + i32.const 0 + i32.const 1 + call $~lib/typedarray/Int32Array#__set + local.get $1 + i32.const 1 + i32.const 2 + call $~lib/typedarray/Int32Array#__set + local.get $1 + i32.const 2 + i32.const 3 + call $~lib/typedarray/Int32Array#__set + local.get $1 + i32.const 67 + call $~lib/typedarray/Int32Array#findIndex + local.set $2 + local.get $2 + i32.const 1 + i32.eq + i32.eqz + if + i32.const 944 + i32.const 24 + i32.const 365 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 68 + call $~lib/typedarray/Int32Array#findIndex + local.set $3 + local.get $3 + i32.const -1 + i32.eq + i32.eqz + if + i32.const 992 + i32.const 24 + i32.const 368 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $0 + call $~lib/rt/purerc/__release + local.get $1 + call $~lib/rt/purerc/__release + ) + (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Uint32Array,u32>~anonymous|0 (; 254 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + local.get $2 + call $~lib/rt/purerc/__retain + drop + local.get $0 + i32.const 2 + i32.eq + local.set $3 + local.get $2 + call $~lib/rt/purerc/__release + local.get $3 + ) + (func $~lib/typedarray/Uint32Array#findIndex (; 255 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + block $~lib/typedarray/FIND_INDEX<~lib/typedarray/Uint32Array,u32>|inlined.0 (result i32) + local.get $0 + call $~lib/rt/purerc/__retain + local.set $3 + local.get $1 + local.set $2 + local.get $3 + i32.load offset=4 + local.set $4 + block $break|0 + block + i32.const 0 + local.set $5 + local.get $3 + call $~lib/typedarray/Uint32Array#get:length + local.set $6 + end + loop $repeat|0 + local.get $5 + local.get $6 + i32.lt_s + i32.eqz + br_if $break|0 + block (result i32) + i32.const 3 + global.set $~lib/argc + local.get $4 + local.get $5 + i32.const 2 + i32.shl + i32.add + i32.load + local.get $5 + local.get $3 + local.get $2 + call_indirect (type $FUNCSIG$iiii) + end + if + local.get $5 + br $~lib/typedarray/FIND_INDEX<~lib/typedarray/Uint32Array,u32>|inlined.0 + end + local.get $5 + i32.const 1 + i32.add + local.set $5 + br $repeat|0 + unreachable + end + unreachable + end + i32.const -1 + local.set $6 + local.get $3 + call $~lib/rt/purerc/__release + local.get $6 + end + ) + (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Uint32Array,u32>~anonymous|1 (; 256 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + local.get $2 + call $~lib/rt/purerc/__retain + drop + local.get $0 + i32.const 4 + i32.eq + local.set $3 + local.get $2 + call $~lib/rt/purerc/__release + local.get $3 + ) + (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Uint32Array,u32> (; 257 ;) (type $FUNCSIG$v) + (local $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + i32.const 0 + i32.const 3 + call $~lib/typedarray/Uint32Array#constructor + local.tee $0 + call $~lib/rt/purerc/__retain + local.set $1 + local.get $1 + i32.const 0 + i32.const 1 + call $~lib/typedarray/Uint32Array#__set + local.get $1 + i32.const 1 + i32.const 2 + call $~lib/typedarray/Uint32Array#__set + local.get $1 + i32.const 2 + i32.const 3 + call $~lib/typedarray/Uint32Array#__set + local.get $1 + i32.const 69 + call $~lib/typedarray/Uint32Array#findIndex + local.set $2 + local.get $2 + i32.const 1 + i32.eq + i32.eqz + if + i32.const 944 + i32.const 24 + i32.const 365 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 70 + call $~lib/typedarray/Uint32Array#findIndex + local.set $3 + local.get $3 + i32.const -1 + i32.eq + i32.eqz + if + i32.const 992 + i32.const 24 + i32.const 368 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $0 + call $~lib/rt/purerc/__release + local.get $1 + call $~lib/rt/purerc/__release + ) + (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Int64Array,i64>~anonymous|0 (; 258 ;) (type $FUNCSIG$ijii) (param $0 i64) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + local.get $2 + call $~lib/rt/purerc/__retain + drop + local.get $0 + i64.const 2 + i64.eq + local.set $3 + local.get $2 + call $~lib/rt/purerc/__release + local.get $3 + ) + (func $~lib/typedarray/Int64Array#findIndex (; 259 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + block $~lib/typedarray/FIND_INDEX<~lib/typedarray/Int64Array,i64>|inlined.0 (result i32) + local.get $0 + call $~lib/rt/purerc/__retain + local.set $3 + local.get $1 + local.set $2 + local.get $3 + i32.load offset=4 + local.set $4 + block $break|0 + block + i32.const 0 + local.set $5 + local.get $3 + call $~lib/typedarray/Int64Array#get:length + local.set $6 + end + loop $repeat|0 + local.get $5 + local.get $6 + i32.lt_s + i32.eqz + br_if $break|0 + block (result i32) + i32.const 3 + global.set $~lib/argc + local.get $4 + local.get $5 + i32.const 3 + i32.shl + i32.add + i64.load + local.get $5 + local.get $3 + local.get $2 + call_indirect (type $FUNCSIG$ijii) + end + if + local.get $5 + br $~lib/typedarray/FIND_INDEX<~lib/typedarray/Int64Array,i64>|inlined.0 + end + local.get $5 + i32.const 1 + i32.add + local.set $5 + br $repeat|0 + unreachable + end + unreachable + end + i32.const -1 + local.set $6 + local.get $3 + call $~lib/rt/purerc/__release + local.get $6 + end + ) + (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Int64Array,i64>~anonymous|1 (; 260 ;) (type $FUNCSIG$ijii) (param $0 i64) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + local.get $2 + call $~lib/rt/purerc/__retain + drop + local.get $0 + i64.const 4 + i64.eq + local.set $3 + local.get $2 + call $~lib/rt/purerc/__release + local.get $3 + ) + (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Int64Array,i64> (; 261 ;) (type $FUNCSIG$v) + (local $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + i32.const 0 + i32.const 3 + call $~lib/typedarray/Int64Array#constructor + local.tee $0 + call $~lib/rt/purerc/__retain + local.set $1 + local.get $1 + i32.const 0 + i64.const 1 + call $~lib/typedarray/Int64Array#__set + local.get $1 + i32.const 1 + i64.const 2 + call $~lib/typedarray/Int64Array#__set + local.get $1 + i32.const 2 + i64.const 3 + call $~lib/typedarray/Int64Array#__set + local.get $1 + i32.const 71 + call $~lib/typedarray/Int64Array#findIndex + local.set $2 + local.get $2 + i32.const 1 + i32.eq + i32.eqz + if + i32.const 944 + i32.const 24 + i32.const 365 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 72 + call $~lib/typedarray/Int64Array#findIndex + local.set $3 + local.get $3 + i32.const -1 + i32.eq + i32.eqz + if + i32.const 992 + i32.const 24 + i32.const 368 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $0 + call $~lib/rt/purerc/__release + local.get $1 + call $~lib/rt/purerc/__release + ) + (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Uint64Array,u64>~anonymous|0 (; 262 ;) (type $FUNCSIG$ijii) (param $0 i64) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + local.get $2 + call $~lib/rt/purerc/__retain + drop + local.get $0 + i64.const 2 + i64.eq + local.set $3 + local.get $2 + call $~lib/rt/purerc/__release + local.get $3 + ) + (func $~lib/typedarray/Uint64Array#findIndex (; 263 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + block $~lib/typedarray/FIND_INDEX<~lib/typedarray/Uint64Array,u64>|inlined.0 (result i32) + local.get $0 + call $~lib/rt/purerc/__retain + local.set $3 + local.get $1 + local.set $2 + local.get $3 + i32.load offset=4 + local.set $4 + block $break|0 + block + i32.const 0 + local.set $5 + local.get $3 + call $~lib/typedarray/Uint64Array#get:length + local.set $6 + end + loop $repeat|0 + local.get $5 + local.get $6 + i32.lt_s + i32.eqz + br_if $break|0 + block (result i32) + i32.const 3 + global.set $~lib/argc + local.get $4 + local.get $5 + i32.const 3 + i32.shl + i32.add + i64.load + local.get $5 + local.get $3 + local.get $2 + call_indirect (type $FUNCSIG$ijii) + end + if + local.get $5 + br $~lib/typedarray/FIND_INDEX<~lib/typedarray/Uint64Array,u64>|inlined.0 + end + local.get $5 + i32.const 1 + i32.add + local.set $5 + br $repeat|0 + unreachable + end + unreachable + end + i32.const -1 + local.set $6 + local.get $3 + call $~lib/rt/purerc/__release + local.get $6 + end + ) + (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Uint64Array,u64>~anonymous|1 (; 264 ;) (type $FUNCSIG$ijii) (param $0 i64) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + local.get $2 + call $~lib/rt/purerc/__retain + drop + local.get $0 + i64.const 4 + i64.eq + local.set $3 + local.get $2 + call $~lib/rt/purerc/__release + local.get $3 + ) + (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Uint64Array,u64> (; 265 ;) (type $FUNCSIG$v) + (local $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + i32.const 0 + i32.const 3 + call $~lib/typedarray/Uint64Array#constructor + local.tee $0 + call $~lib/rt/purerc/__retain + local.set $1 + local.get $1 + i32.const 0 + i64.const 1 + call $~lib/typedarray/Uint64Array#__set + local.get $1 + i32.const 1 + i64.const 2 + call $~lib/typedarray/Uint64Array#__set + local.get $1 + i32.const 2 + i64.const 3 + call $~lib/typedarray/Uint64Array#__set + local.get $1 + i32.const 73 + call $~lib/typedarray/Uint64Array#findIndex + local.set $2 + local.get $2 + i32.const 1 + i32.eq + i32.eqz + if + i32.const 944 + i32.const 24 + i32.const 365 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 74 + call $~lib/typedarray/Uint64Array#findIndex + local.set $3 + local.get $3 + i32.const -1 + i32.eq + i32.eqz + if + i32.const 992 + i32.const 24 + i32.const 368 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $0 + call $~lib/rt/purerc/__release + local.get $1 + call $~lib/rt/purerc/__release + ) + (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Float32Array,f32>~anonymous|0 (; 266 ;) (type $FUNCSIG$ifii) (param $0 f32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + local.get $2 + call $~lib/rt/purerc/__retain + drop + local.get $0 + f32.const 2 + f32.eq + local.set $3 + local.get $2 + call $~lib/rt/purerc/__release + local.get $3 + ) + (func $~lib/typedarray/Float32Array#findIndex (; 267 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + block $~lib/typedarray/FIND_INDEX<~lib/typedarray/Float32Array,f32>|inlined.0 (result i32) + local.get $0 + call $~lib/rt/purerc/__retain + local.set $3 + local.get $1 + local.set $2 + local.get $3 + i32.load offset=4 + local.set $4 + block $break|0 + block + i32.const 0 + local.set $5 + local.get $3 + call $~lib/typedarray/Float32Array#get:length + local.set $6 + end + loop $repeat|0 + local.get $5 + local.get $6 + i32.lt_s + i32.eqz + br_if $break|0 + block (result i32) + i32.const 3 + global.set $~lib/argc + local.get $4 + local.get $5 + i32.const 2 + i32.shl + i32.add + f32.load + local.get $5 + local.get $3 + local.get $2 + call_indirect (type $FUNCSIG$ifii) + end + if + local.get $5 + br $~lib/typedarray/FIND_INDEX<~lib/typedarray/Float32Array,f32>|inlined.0 + end + local.get $5 + i32.const 1 + i32.add + local.set $5 + br $repeat|0 + unreachable + end + unreachable + end + i32.const -1 + local.set $6 + local.get $3 + call $~lib/rt/purerc/__release + local.get $6 + end + ) + (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Float32Array,f32>~anonymous|1 (; 268 ;) (type $FUNCSIG$ifii) (param $0 f32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + local.get $2 + call $~lib/rt/purerc/__retain + drop + local.get $0 + f32.const 4 + f32.eq + local.set $3 + local.get $2 + call $~lib/rt/purerc/__release + local.get $3 + ) + (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Float32Array,f32> (; 269 ;) (type $FUNCSIG$v) + (local $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + i32.const 0 + i32.const 3 + call $~lib/typedarray/Float32Array#constructor + local.tee $0 + call $~lib/rt/purerc/__retain + local.set $1 + local.get $1 + i32.const 0 + f32.const 1 + call $~lib/typedarray/Float32Array#__set + local.get $1 + i32.const 1 + f32.const 2 + call $~lib/typedarray/Float32Array#__set + local.get $1 + i32.const 2 + f32.const 3 + call $~lib/typedarray/Float32Array#__set + local.get $1 + i32.const 75 + call $~lib/typedarray/Float32Array#findIndex + local.set $2 + local.get $2 + i32.const 1 + i32.eq + i32.eqz + if + i32.const 944 + i32.const 24 + i32.const 365 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 76 + call $~lib/typedarray/Float32Array#findIndex + local.set $3 + local.get $3 + i32.const -1 + i32.eq + i32.eqz + if + i32.const 992 + i32.const 24 + i32.const 368 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $0 + call $~lib/rt/purerc/__release + local.get $1 + call $~lib/rt/purerc/__release + ) + (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Float64Array,f64>~anonymous|0 (; 270 ;) (type $FUNCSIG$idii) (param $0 f64) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + local.get $2 + call $~lib/rt/purerc/__retain + drop + local.get $0 + f64.const 2 + f64.eq + local.set $3 + local.get $2 + call $~lib/rt/purerc/__release + local.get $3 + ) + (func $~lib/typedarray/Float64Array#findIndex (; 271 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + block $~lib/typedarray/FIND_INDEX<~lib/typedarray/Float64Array,f64>|inlined.0 (result i32) + local.get $0 + call $~lib/rt/purerc/__retain + local.set $3 + local.get $1 + local.set $2 + local.get $3 + i32.load offset=4 + local.set $4 + block $break|0 + block + i32.const 0 + local.set $5 + local.get $3 + call $~lib/typedarray/Float64Array#get:length + local.set $6 + end + loop $repeat|0 + local.get $5 + local.get $6 + i32.lt_s + i32.eqz + br_if $break|0 + block (result i32) + i32.const 3 + global.set $~lib/argc + local.get $4 + local.get $5 + i32.const 3 + i32.shl + i32.add + f64.load + local.get $5 + local.get $3 + local.get $2 + call_indirect (type $FUNCSIG$idii) + end + if + local.get $5 + br $~lib/typedarray/FIND_INDEX<~lib/typedarray/Float64Array,f64>|inlined.0 + end + local.get $5 + i32.const 1 + i32.add + local.set $5 + br $repeat|0 + unreachable + end + unreachable + end + i32.const -1 + local.set $6 + local.get $3 + call $~lib/rt/purerc/__release + local.get $6 + end + ) + (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Float64Array,f64>~anonymous|1 (; 272 ;) (type $FUNCSIG$idii) (param $0 f64) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + local.get $2 + call $~lib/rt/purerc/__retain + drop + local.get $0 + f64.const 4 + f64.eq + local.set $3 + local.get $2 + call $~lib/rt/purerc/__release + local.get $3 + ) + (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Float64Array,f64> (; 273 ;) (type $FUNCSIG$v) + (local $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + i32.const 0 + i32.const 3 + call $~lib/typedarray/Float64Array#constructor + local.tee $0 + call $~lib/rt/purerc/__retain + local.set $1 + local.get $1 + i32.const 0 + f64.const 1 + call $~lib/typedarray/Float64Array#__set + local.get $1 + i32.const 1 + f64.const 2 + call $~lib/typedarray/Float64Array#__set + local.get $1 + i32.const 2 + f64.const 3 + call $~lib/typedarray/Float64Array#__set + local.get $1 + i32.const 77 + call $~lib/typedarray/Float64Array#findIndex + local.set $2 + local.get $2 + i32.const 1 + i32.eq + i32.eqz + if + i32.const 944 + i32.const 24 + i32.const 365 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 78 + call $~lib/typedarray/Float64Array#findIndex + local.set $3 + local.get $3 + i32.const -1 + i32.eq + i32.eqz + if + i32.const 992 + i32.const 24 + i32.const 368 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $0 + call $~lib/rt/purerc/__release + local.get $1 + call $~lib/rt/purerc/__release + ) + (func $std/typedarray/testArrayEvery<~lib/typedarray/Int8Array,i8>~anonymous|0 (; 274 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + local.get $2 + call $~lib/rt/purerc/__retain + drop + local.get $0 + i32.const 24 + i32.shl + i32.const 24 + i32.shr_s + i32.const 2 + i32.rem_s + i32.const 0 + i32.eq + local.set $3 + local.get $2 + call $~lib/rt/purerc/__release + local.get $3 + ) + (func $~lib/typedarray/Int8Array#every (; 275 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + block $~lib/typedarray/EVERY<~lib/typedarray/Int8Array,i8>|inlined.0 (result i32) + local.get $0 + call $~lib/rt/purerc/__retain + local.set $3 + local.get $1 + local.set $2 + local.get $3 + i32.load offset=4 + local.set $4 + block $break|0 + block + i32.const 0 + local.set $5 + local.get $3 + call $~lib/typedarray/Int8Array#get:length + local.set $6 + end + loop $repeat|0 + block $continue|0 + local.get $5 + local.get $6 + i32.lt_s + i32.eqz + br_if $break|0 + block (result i32) + i32.const 3 + global.set $~lib/argc + local.get $4 + local.get $5 + i32.const 0 + i32.shl + i32.add + i32.load8_s + local.get $5 + local.get $3 + local.get $2 + call_indirect (type $FUNCSIG$iiii) + end + if + br $continue|0 + end + i32.const 0 + br $~lib/typedarray/EVERY<~lib/typedarray/Int8Array,i8>|inlined.0 + end + local.get $5 + i32.const 1 + i32.add + local.set $5 + br $repeat|0 + unreachable + end + unreachable + end + i32.const 1 + local.set $6 + local.get $3 + call $~lib/rt/purerc/__release + local.get $6 + end + ) + (func $std/typedarray/testArrayEvery<~lib/typedarray/Int8Array,i8>~anonymous|1 (; 276 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + local.get $2 + call $~lib/rt/purerc/__retain + drop + local.get $0 + i32.const 24 + i32.shl + i32.const 24 + i32.shr_s + i32.const 2 + i32.eq + local.set $3 + local.get $2 + call $~lib/rt/purerc/__release + local.get $3 + ) + (func $std/typedarray/testArrayEvery<~lib/typedarray/Int8Array,i8> (; 277 ;) (type $FUNCSIG$v) + (local $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + i32.const 0 + i32.const 3 + call $~lib/typedarray/Int8Array#constructor + local.tee $0 + call $~lib/rt/purerc/__retain + local.set $1 + local.get $1 + i32.const 0 + i32.const 2 + call $~lib/typedarray/Int8Array#__set + local.get $1 + i32.const 1 + i32.const 4 + call $~lib/typedarray/Int8Array#__set + local.get $1 + i32.const 2 + i32.const 6 + call $~lib/typedarray/Int8Array#__set + local.get $1 + i32.const 79 + call $~lib/typedarray/Int8Array#every + local.set $2 + local.get $2 + i32.const 0 + i32.ne + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 395 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 80 + call $~lib/typedarray/Int8Array#every + local.set $3 + local.get $3 + i32.const 0 + i32.ne + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 398 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $0 + call $~lib/rt/purerc/__release + local.get $1 + call $~lib/rt/purerc/__release + ) + (func $std/typedarray/testArrayEvery<~lib/typedarray/Uint8Array,u8>~anonymous|0 (; 278 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + local.get $2 + call $~lib/rt/purerc/__retain + drop + local.get $0 + i32.const 255 + i32.and + i32.const 2 + i32.rem_u + i32.const 0 + i32.eq + local.set $3 + local.get $2 + call $~lib/rt/purerc/__release + local.get $3 + ) + (func $~lib/typedarray/Uint8Array#every (; 279 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + block $~lib/typedarray/EVERY<~lib/typedarray/Uint8Array,u8>|inlined.0 (result i32) + local.get $0 + call $~lib/rt/purerc/__retain + local.set $3 + local.get $1 + local.set $2 + local.get $3 + i32.load offset=4 + local.set $4 + block $break|0 + block + i32.const 0 + local.set $5 + local.get $3 + call $~lib/typedarray/Uint8Array#get:length + local.set $6 + end + loop $repeat|0 + block $continue|0 + local.get $5 + local.get $6 + i32.lt_s + i32.eqz + br_if $break|0 + block (result i32) + i32.const 3 + global.set $~lib/argc + local.get $4 + local.get $5 + i32.const 0 + i32.shl + i32.add + i32.load8_u + local.get $5 + local.get $3 + local.get $2 + call_indirect (type $FUNCSIG$iiii) + end + if + br $continue|0 + end + i32.const 0 + br $~lib/typedarray/EVERY<~lib/typedarray/Uint8Array,u8>|inlined.0 + end + local.get $5 + i32.const 1 + i32.add + local.set $5 + br $repeat|0 + unreachable + end + unreachable + end + i32.const 1 + local.set $6 + local.get $3 + call $~lib/rt/purerc/__release + local.get $6 + end + ) + (func $std/typedarray/testArrayEvery<~lib/typedarray/Uint8Array,u8>~anonymous|1 (; 280 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + local.get $2 + call $~lib/rt/purerc/__retain + drop + local.get $0 + i32.const 255 + i32.and + i32.const 2 + i32.eq + local.set $3 + local.get $2 + call $~lib/rt/purerc/__release + local.get $3 + ) + (func $std/typedarray/testArrayEvery<~lib/typedarray/Uint8Array,u8> (; 281 ;) (type $FUNCSIG$v) + (local $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + i32.const 0 + i32.const 3 + call $~lib/typedarray/Uint8Array#constructor + local.tee $0 + call $~lib/rt/purerc/__retain + local.set $1 + local.get $1 + i32.const 0 + i32.const 2 + call $~lib/typedarray/Uint8Array#__set + local.get $1 + i32.const 1 + i32.const 4 + call $~lib/typedarray/Uint8Array#__set + local.get $1 + i32.const 2 + i32.const 6 + call $~lib/typedarray/Uint8Array#__set + local.get $1 + i32.const 81 + call $~lib/typedarray/Uint8Array#every + local.set $2 + local.get $2 + i32.const 0 + i32.ne + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 395 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 82 + call $~lib/typedarray/Uint8Array#every + local.set $3 + local.get $3 + i32.const 0 + i32.ne + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 398 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $0 + call $~lib/rt/purerc/__release + local.get $1 + call $~lib/rt/purerc/__release + ) + (func $std/typedarray/testArrayEvery<~lib/typedarray/Uint8ClampedArray,u8>~anonymous|0 (; 282 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + local.get $2 + call $~lib/rt/purerc/__retain + drop + local.get $0 + i32.const 255 + i32.and + i32.const 2 + i32.rem_u + i32.const 0 + i32.eq + local.set $3 + local.get $2 + call $~lib/rt/purerc/__release + local.get $3 + ) + (func $~lib/typedarray/Uint8ClampedArray#every (; 283 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + block $~lib/typedarray/EVERY<~lib/typedarray/Uint8ClampedArray,u8>|inlined.0 (result i32) + local.get $0 + call $~lib/rt/purerc/__retain + local.set $3 + local.get $1 + local.set $2 + local.get $3 + i32.load offset=4 + local.set $4 + block $break|0 + block + i32.const 0 + local.set $5 + local.get $3 + call $~lib/typedarray/Uint8ClampedArray#get:length + local.set $6 + end + loop $repeat|0 + block $continue|0 + local.get $5 + local.get $6 + i32.lt_s + i32.eqz + br_if $break|0 + block (result i32) + i32.const 3 + global.set $~lib/argc + local.get $4 + local.get $5 + i32.const 0 + i32.shl + i32.add + i32.load8_u + local.get $5 + local.get $3 + local.get $2 + call_indirect (type $FUNCSIG$iiii) + end + if + br $continue|0 + end + i32.const 0 + br $~lib/typedarray/EVERY<~lib/typedarray/Uint8ClampedArray,u8>|inlined.0 + end + local.get $5 + i32.const 1 + i32.add + local.set $5 + br $repeat|0 + unreachable + end + unreachable + end + i32.const 1 + local.set $6 + local.get $3 + call $~lib/rt/purerc/__release + local.get $6 + end + ) + (func $std/typedarray/testArrayEvery<~lib/typedarray/Uint8ClampedArray,u8>~anonymous|1 (; 284 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + local.get $2 + call $~lib/rt/purerc/__retain + drop + local.get $0 + i32.const 255 + i32.and + i32.const 2 + i32.eq + local.set $3 + local.get $2 + call $~lib/rt/purerc/__release + local.get $3 + ) + (func $std/typedarray/testArrayEvery<~lib/typedarray/Uint8ClampedArray,u8> (; 285 ;) (type $FUNCSIG$v) + (local $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + i32.const 0 + i32.const 3 + call $~lib/typedarray/Uint8ClampedArray#constructor + local.tee $0 + call $~lib/rt/purerc/__retain + local.set $1 + local.get $1 + i32.const 0 + i32.const 2 + call $~lib/typedarray/Uint8ClampedArray#__set + local.get $1 + i32.const 1 + i32.const 4 + call $~lib/typedarray/Uint8ClampedArray#__set + local.get $1 + i32.const 2 + i32.const 6 + call $~lib/typedarray/Uint8ClampedArray#__set + local.get $1 + i32.const 83 + call $~lib/typedarray/Uint8ClampedArray#every + local.set $2 + local.get $2 + i32.const 0 + i32.ne + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 395 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 84 + call $~lib/typedarray/Uint8ClampedArray#every + local.set $3 + local.get $3 + i32.const 0 + i32.ne + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 398 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $0 + call $~lib/rt/purerc/__release + local.get $1 + call $~lib/rt/purerc/__release + ) + (func $std/typedarray/testArrayEvery<~lib/typedarray/Int16Array,i16>~anonymous|0 (; 286 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + local.get $2 + call $~lib/rt/purerc/__retain + drop + local.get $0 + i32.const 16 + i32.shl + i32.const 16 + i32.shr_s + i32.const 2 + i32.rem_s + i32.const 0 + i32.eq + local.set $3 + local.get $2 + call $~lib/rt/purerc/__release + local.get $3 + ) + (func $~lib/typedarray/Int16Array#every (; 287 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + block $~lib/typedarray/EVERY<~lib/typedarray/Int16Array,i16>|inlined.0 (result i32) + local.get $0 + call $~lib/rt/purerc/__retain + local.set $3 + local.get $1 + local.set $2 + local.get $3 + i32.load offset=4 + local.set $4 + block $break|0 + block + i32.const 0 + local.set $5 + local.get $3 + call $~lib/typedarray/Int16Array#get:length + local.set $6 + end + loop $repeat|0 + block $continue|0 + local.get $5 + local.get $6 + i32.lt_s + i32.eqz + br_if $break|0 + block (result i32) + i32.const 3 + global.set $~lib/argc + local.get $4 + local.get $5 + i32.const 1 + i32.shl + i32.add + i32.load16_s + local.get $5 + local.get $3 + local.get $2 + call_indirect (type $FUNCSIG$iiii) + end + if + br $continue|0 + end + i32.const 0 + br $~lib/typedarray/EVERY<~lib/typedarray/Int16Array,i16>|inlined.0 + end + local.get $5 + i32.const 1 + i32.add + local.set $5 + br $repeat|0 + unreachable + end + unreachable + end + i32.const 1 + local.set $6 + local.get $3 + call $~lib/rt/purerc/__release + local.get $6 + end + ) + (func $std/typedarray/testArrayEvery<~lib/typedarray/Int16Array,i16>~anonymous|1 (; 288 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + local.get $2 + call $~lib/rt/purerc/__retain + drop + local.get $0 + i32.const 16 + i32.shl + i32.const 16 + i32.shr_s + i32.const 2 + i32.eq + local.set $3 + local.get $2 + call $~lib/rt/purerc/__release + local.get $3 + ) + (func $std/typedarray/testArrayEvery<~lib/typedarray/Int16Array,i16> (; 289 ;) (type $FUNCSIG$v) + (local $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + i32.const 0 + i32.const 3 + call $~lib/typedarray/Int16Array#constructor + local.tee $0 + call $~lib/rt/purerc/__retain + local.set $1 + local.get $1 + i32.const 0 + i32.const 2 + call $~lib/typedarray/Int16Array#__set + local.get $1 + i32.const 1 + i32.const 4 + call $~lib/typedarray/Int16Array#__set + local.get $1 + i32.const 2 + i32.const 6 + call $~lib/typedarray/Int16Array#__set + local.get $1 + i32.const 85 + call $~lib/typedarray/Int16Array#every + local.set $2 + local.get $2 + i32.const 0 + i32.ne + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 395 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 86 + call $~lib/typedarray/Int16Array#every + local.set $3 + local.get $3 + i32.const 0 + i32.ne + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 398 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $0 + call $~lib/rt/purerc/__release + local.get $1 + call $~lib/rt/purerc/__release + ) + (func $std/typedarray/testArrayEvery<~lib/typedarray/Uint16Array,u16>~anonymous|0 (; 290 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + local.get $2 + call $~lib/rt/purerc/__retain + drop + local.get $0 + i32.const 65535 + i32.and + i32.const 2 + i32.rem_u + i32.const 0 + i32.eq + local.set $3 + local.get $2 + call $~lib/rt/purerc/__release + local.get $3 + ) + (func $~lib/typedarray/Uint16Array#every (; 291 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + block $~lib/typedarray/EVERY<~lib/typedarray/Uint16Array,u16>|inlined.0 (result i32) + local.get $0 + call $~lib/rt/purerc/__retain + local.set $3 + local.get $1 + local.set $2 + local.get $3 + i32.load offset=4 + local.set $4 + block $break|0 + block + i32.const 0 + local.set $5 + local.get $3 + call $~lib/typedarray/Uint16Array#get:length + local.set $6 + end + loop $repeat|0 + block $continue|0 + local.get $5 + local.get $6 + i32.lt_s + i32.eqz + br_if $break|0 + block (result i32) + i32.const 3 + global.set $~lib/argc + local.get $4 + local.get $5 + i32.const 1 + i32.shl + i32.add + i32.load16_u + local.get $5 + local.get $3 + local.get $2 + call_indirect (type $FUNCSIG$iiii) + end + if + br $continue|0 + end + i32.const 0 + br $~lib/typedarray/EVERY<~lib/typedarray/Uint16Array,u16>|inlined.0 + end + local.get $5 + i32.const 1 + i32.add + local.set $5 + br $repeat|0 + unreachable + end + unreachable + end + i32.const 1 + local.set $6 + local.get $3 + call $~lib/rt/purerc/__release + local.get $6 + end + ) + (func $std/typedarray/testArrayEvery<~lib/typedarray/Uint16Array,u16>~anonymous|1 (; 292 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + local.get $2 + call $~lib/rt/purerc/__retain + drop + local.get $0 + i32.const 65535 + i32.and + i32.const 2 + i32.eq + local.set $3 + local.get $2 + call $~lib/rt/purerc/__release + local.get $3 + ) + (func $std/typedarray/testArrayEvery<~lib/typedarray/Uint16Array,u16> (; 293 ;) (type $FUNCSIG$v) + (local $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + i32.const 0 + i32.const 3 + call $~lib/typedarray/Uint16Array#constructor + local.tee $0 + call $~lib/rt/purerc/__retain + local.set $1 + local.get $1 + i32.const 0 + i32.const 2 + call $~lib/typedarray/Uint16Array#__set + local.get $1 + i32.const 1 + i32.const 4 + call $~lib/typedarray/Uint16Array#__set + local.get $1 + i32.const 2 + i32.const 6 + call $~lib/typedarray/Uint16Array#__set + local.get $1 + i32.const 87 + call $~lib/typedarray/Uint16Array#every + local.set $2 + local.get $2 + i32.const 0 + i32.ne + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 395 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 88 + call $~lib/typedarray/Uint16Array#every + local.set $3 + local.get $3 + i32.const 0 + i32.ne + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 398 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $0 + call $~lib/rt/purerc/__release + local.get $1 + call $~lib/rt/purerc/__release + ) + (func $std/typedarray/testArrayEvery<~lib/typedarray/Int32Array,i32>~anonymous|0 (; 294 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + local.get $2 + call $~lib/rt/purerc/__retain + drop + local.get $0 + i32.const 2 + i32.rem_s + i32.const 0 + i32.eq + local.set $3 + local.get $2 + call $~lib/rt/purerc/__release + local.get $3 + ) + (func $~lib/typedarray/Int32Array#every (; 295 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + block $~lib/typedarray/EVERY<~lib/typedarray/Int32Array,i32>|inlined.0 (result i32) + local.get $0 + call $~lib/rt/purerc/__retain + local.set $3 + local.get $1 + local.set $2 + local.get $3 + i32.load offset=4 + local.set $4 + block $break|0 + block + i32.const 0 + local.set $5 + local.get $3 + call $~lib/typedarray/Int32Array#get:length + local.set $6 + end + loop $repeat|0 + block $continue|0 + local.get $5 + local.get $6 + i32.lt_s + i32.eqz + br_if $break|0 + block (result i32) + i32.const 3 + global.set $~lib/argc + local.get $4 + local.get $5 + i32.const 2 + i32.shl + i32.add + i32.load + local.get $5 + local.get $3 + local.get $2 + call_indirect (type $FUNCSIG$iiii) + end + if + br $continue|0 + end + i32.const 0 + br $~lib/typedarray/EVERY<~lib/typedarray/Int32Array,i32>|inlined.0 + end + local.get $5 + i32.const 1 + i32.add + local.set $5 + br $repeat|0 + unreachable + end + unreachable + end + i32.const 1 + local.set $6 + local.get $3 + call $~lib/rt/purerc/__release + local.get $6 + end + ) + (func $std/typedarray/testArrayEvery<~lib/typedarray/Int32Array,i32>~anonymous|1 (; 296 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + local.get $2 + call $~lib/rt/purerc/__retain + drop + local.get $0 + i32.const 2 + i32.eq + local.set $3 + local.get $2 + call $~lib/rt/purerc/__release + local.get $3 + ) + (func $std/typedarray/testArrayEvery<~lib/typedarray/Int32Array,i32> (; 297 ;) (type $FUNCSIG$v) + (local $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + i32.const 0 + i32.const 3 + call $~lib/typedarray/Int32Array#constructor + local.tee $0 + call $~lib/rt/purerc/__retain + local.set $1 + local.get $1 + i32.const 0 + i32.const 2 + call $~lib/typedarray/Int32Array#__set + local.get $1 + i32.const 1 + i32.const 4 + call $~lib/typedarray/Int32Array#__set + local.get $1 + i32.const 2 + i32.const 6 + call $~lib/typedarray/Int32Array#__set + local.get $1 + i32.const 89 + call $~lib/typedarray/Int32Array#every + local.set $2 + local.get $2 + i32.const 0 + i32.ne + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 395 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 90 + call $~lib/typedarray/Int32Array#every + local.set $3 + local.get $3 + i32.const 0 + i32.ne + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 398 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $0 + call $~lib/rt/purerc/__release + local.get $1 + call $~lib/rt/purerc/__release + ) + (func $std/typedarray/testArrayEvery<~lib/typedarray/Uint32Array,u32>~anonymous|0 (; 298 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + local.get $2 + call $~lib/rt/purerc/__retain + drop + local.get $0 + i32.const 2 + i32.rem_u + i32.const 0 + i32.eq + local.set $3 + local.get $2 + call $~lib/rt/purerc/__release + local.get $3 + ) + (func $~lib/typedarray/Uint32Array#every (; 299 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + block $~lib/typedarray/EVERY<~lib/typedarray/Uint32Array,u32>|inlined.0 (result i32) + local.get $0 + call $~lib/rt/purerc/__retain + local.set $3 + local.get $1 + local.set $2 + local.get $3 + i32.load offset=4 + local.set $4 + block $break|0 + block + i32.const 0 + local.set $5 + local.get $3 + call $~lib/typedarray/Uint32Array#get:length + local.set $6 + end + loop $repeat|0 + block $continue|0 + local.get $5 + local.get $6 + i32.lt_s + i32.eqz + br_if $break|0 + block (result i32) + i32.const 3 + global.set $~lib/argc + local.get $4 + local.get $5 + i32.const 2 + i32.shl + i32.add + i32.load + local.get $5 + local.get $3 + local.get $2 + call_indirect (type $FUNCSIG$iiii) + end + if + br $continue|0 + end + i32.const 0 + br $~lib/typedarray/EVERY<~lib/typedarray/Uint32Array,u32>|inlined.0 + end + local.get $5 + i32.const 1 + i32.add + local.set $5 + br $repeat|0 + unreachable + end + unreachable + end + i32.const 1 + local.set $6 + local.get $3 + call $~lib/rt/purerc/__release + local.get $6 + end + ) + (func $std/typedarray/testArrayEvery<~lib/typedarray/Uint32Array,u32>~anonymous|1 (; 300 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + local.get $2 + call $~lib/rt/purerc/__retain + drop + local.get $0 + i32.const 2 + i32.eq + local.set $3 + local.get $2 + call $~lib/rt/purerc/__release + local.get $3 + ) + (func $std/typedarray/testArrayEvery<~lib/typedarray/Uint32Array,u32> (; 301 ;) (type $FUNCSIG$v) + (local $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + i32.const 0 + i32.const 3 + call $~lib/typedarray/Uint32Array#constructor + local.tee $0 + call $~lib/rt/purerc/__retain + local.set $1 + local.get $1 + i32.const 0 + i32.const 2 + call $~lib/typedarray/Uint32Array#__set + local.get $1 + i32.const 1 + i32.const 4 + call $~lib/typedarray/Uint32Array#__set + local.get $1 + i32.const 2 + i32.const 6 + call $~lib/typedarray/Uint32Array#__set + local.get $1 + i32.const 91 + call $~lib/typedarray/Uint32Array#every + local.set $2 + local.get $2 + i32.const 0 + i32.ne + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 395 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 92 + call $~lib/typedarray/Uint32Array#every + local.set $3 + local.get $3 + i32.const 0 + i32.ne + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 398 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $0 + call $~lib/rt/purerc/__release + local.get $1 + call $~lib/rt/purerc/__release + ) + (func $std/typedarray/testArrayEvery<~lib/typedarray/Int64Array,i64>~anonymous|0 (; 302 ;) (type $FUNCSIG$ijii) (param $0 i64) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + local.get $2 + call $~lib/rt/purerc/__retain + drop + local.get $0 + i64.const 2 + i64.rem_s + i64.const 0 + i64.eq + local.set $3 + local.get $2 + call $~lib/rt/purerc/__release + local.get $3 + ) + (func $~lib/typedarray/Int64Array#every (; 303 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + block $~lib/typedarray/EVERY<~lib/typedarray/Int64Array,i64>|inlined.0 (result i32) + local.get $0 + call $~lib/rt/purerc/__retain + local.set $3 + local.get $1 + local.set $2 + local.get $3 + i32.load offset=4 + local.set $4 + block $break|0 + block + i32.const 0 + local.set $5 + local.get $3 + call $~lib/typedarray/Int64Array#get:length + local.set $6 + end + loop $repeat|0 + block $continue|0 + local.get $5 + local.get $6 + i32.lt_s + i32.eqz + br_if $break|0 + block (result i32) + i32.const 3 + global.set $~lib/argc + local.get $4 + local.get $5 + i32.const 3 + i32.shl + i32.add + i64.load + local.get $5 + local.get $3 + local.get $2 + call_indirect (type $FUNCSIG$ijii) + end + if + br $continue|0 + end + i32.const 0 + br $~lib/typedarray/EVERY<~lib/typedarray/Int64Array,i64>|inlined.0 + end + local.get $5 + i32.const 1 + i32.add + local.set $5 + br $repeat|0 + unreachable + end + unreachable + end + i32.const 1 + local.set $6 + local.get $3 + call $~lib/rt/purerc/__release + local.get $6 + end + ) + (func $std/typedarray/testArrayEvery<~lib/typedarray/Int64Array,i64>~anonymous|1 (; 304 ;) (type $FUNCSIG$ijii) (param $0 i64) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + local.get $2 + call $~lib/rt/purerc/__retain + drop + local.get $0 + i64.const 2 + i64.eq + local.set $3 + local.get $2 + call $~lib/rt/purerc/__release + local.get $3 + ) + (func $std/typedarray/testArrayEvery<~lib/typedarray/Int64Array,i64> (; 305 ;) (type $FUNCSIG$v) + (local $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + i32.const 0 + i32.const 3 + call $~lib/typedarray/Int64Array#constructor + local.tee $0 + call $~lib/rt/purerc/__retain + local.set $1 + local.get $1 + i32.const 0 + i64.const 2 + call $~lib/typedarray/Int64Array#__set + local.get $1 + i32.const 1 + i64.const 4 + call $~lib/typedarray/Int64Array#__set + local.get $1 + i32.const 2 + i64.const 6 + call $~lib/typedarray/Int64Array#__set + local.get $1 + i32.const 93 + call $~lib/typedarray/Int64Array#every + local.set $2 + local.get $2 + i32.const 0 + i32.ne + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 395 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 94 + call $~lib/typedarray/Int64Array#every + local.set $3 + local.get $3 + i32.const 0 + i32.ne + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 398 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $0 + call $~lib/rt/purerc/__release + local.get $1 + call $~lib/rt/purerc/__release + ) + (func $std/typedarray/testArrayEvery<~lib/typedarray/Uint64Array,u64>~anonymous|0 (; 306 ;) (type $FUNCSIG$ijii) (param $0 i64) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + local.get $2 + call $~lib/rt/purerc/__retain + drop + local.get $0 + i64.const 2 + i64.rem_u + i64.const 0 + i64.eq + local.set $3 + local.get $2 + call $~lib/rt/purerc/__release + local.get $3 + ) + (func $~lib/typedarray/Uint64Array#every (; 307 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + block $~lib/typedarray/EVERY<~lib/typedarray/Uint64Array,u64>|inlined.0 (result i32) + local.get $0 + call $~lib/rt/purerc/__retain + local.set $3 + local.get $1 + local.set $2 + local.get $3 + i32.load offset=4 + local.set $4 + block $break|0 + block + i32.const 0 + local.set $5 + local.get $3 + call $~lib/typedarray/Uint64Array#get:length + local.set $6 + end + loop $repeat|0 + block $continue|0 + local.get $5 + local.get $6 + i32.lt_s + i32.eqz + br_if $break|0 + block (result i32) + i32.const 3 + global.set $~lib/argc + local.get $4 + local.get $5 + i32.const 3 + i32.shl + i32.add + i64.load + local.get $5 + local.get $3 + local.get $2 + call_indirect (type $FUNCSIG$ijii) + end + if + br $continue|0 + end + i32.const 0 + br $~lib/typedarray/EVERY<~lib/typedarray/Uint64Array,u64>|inlined.0 + end + local.get $5 + i32.const 1 + i32.add + local.set $5 + br $repeat|0 + unreachable + end + unreachable + end + i32.const 1 + local.set $6 + local.get $3 + call $~lib/rt/purerc/__release + local.get $6 + end + ) + (func $std/typedarray/testArrayEvery<~lib/typedarray/Uint64Array,u64>~anonymous|1 (; 308 ;) (type $FUNCSIG$ijii) (param $0 i64) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + local.get $2 + call $~lib/rt/purerc/__retain + drop + local.get $0 + i64.const 2 + i64.eq + local.set $3 + local.get $2 + call $~lib/rt/purerc/__release + local.get $3 + ) + (func $std/typedarray/testArrayEvery<~lib/typedarray/Uint64Array,u64> (; 309 ;) (type $FUNCSIG$v) + (local $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + i32.const 0 + i32.const 3 + call $~lib/typedarray/Uint64Array#constructor + local.tee $0 + call $~lib/rt/purerc/__retain + local.set $1 + local.get $1 + i32.const 0 + i64.const 2 + call $~lib/typedarray/Uint64Array#__set + local.get $1 + i32.const 1 + i64.const 4 + call $~lib/typedarray/Uint64Array#__set + local.get $1 + i32.const 2 + i64.const 6 + call $~lib/typedarray/Uint64Array#__set + local.get $1 + i32.const 95 + call $~lib/typedarray/Uint64Array#every + local.set $2 + local.get $2 + i32.const 0 + i32.ne + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 395 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 96 + call $~lib/typedarray/Uint64Array#every + local.set $3 + local.get $3 + i32.const 0 + i32.ne + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 398 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $0 + call $~lib/rt/purerc/__release + local.get $1 + call $~lib/rt/purerc/__release + ) + (func $~lib/builtins/isNaN (; 310 ;) (type $FUNCSIG$if) (param $0 f32) (result i32) + local.get $0 + local.get $0 + f32.ne + ) + (func $~lib/math/NativeMathf.mod (; 311 ;) (type $FUNCSIG$fff) (param $0 f32) (param $1 f32) (result f32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 f32) + (local $9 i32) + (local $10 i32) + local.get $0 + i32.reinterpret_f32 + local.set $2 + local.get $1 + i32.reinterpret_f32 + local.set $3 + local.get $2 + i32.const 23 + i32.shr_u + i32.const 255 + i32.and + local.set $4 + local.get $3 + i32.const 23 + i32.shr_u + i32.const 255 + i32.and + local.set $5 + local.get $2 + i32.const -2147483648 + i32.and + local.set $6 + local.get $3 + i32.const 1 + i32.shl + local.set $7 + local.get $7 + i32.const 0 + i32.eq + if (result i32) + i32.const 1 + else + local.get $4 + i32.const 255 + i32.eq + end + if (result i32) + i32.const 1 + else + local.get $1 + call $~lib/builtins/isNaN + end + if + local.get $0 + local.get $1 + f32.mul + local.set $8 + local.get $8 + local.get $8 + f32.div + return + end + local.get $2 + i32.const 1 + i32.shl + local.set $9 + local.get $9 + local.get $7 + i32.le_u + if + local.get $9 + local.get $7 + i32.eq + if + f32.const 0 + local.get $0 + f32.mul + return + end + local.get $0 + return + end + local.get $4 + i32.eqz + if + local.get $4 + local.get $2 + i32.const 9 + i32.shl + i32.clz + i32.sub + local.set $4 + local.get $2 + i32.const 0 + local.get $4 + i32.sub + i32.const 1 + i32.add + i32.shl + local.set $2 + else + local.get $2 + i32.const -1 + i32.const 9 + i32.shr_u + i32.and + local.set $2 + local.get $2 + i32.const 1 + i32.const 23 + i32.shl + i32.or + local.set $2 + end + local.get $5 + i32.eqz + if + local.get $5 + local.get $3 + i32.const 9 + i32.shl + i32.clz + i32.sub + local.set $5 + local.get $3 + i32.const 0 + local.get $5 + i32.sub + i32.const 1 + i32.add + i32.shl + local.set $3 + else + local.get $3 + i32.const -1 + i32.const 9 + i32.shr_u + i32.and + local.set $3 + local.get $3 + i32.const 1 + i32.const 23 + i32.shl + i32.or + local.set $3 + end + block $break|0 + loop $continue|0 + local.get $4 + local.get $5 + i32.gt_s + if + local.get $2 + local.get $3 + i32.ge_u + if + local.get $2 + local.get $3 + i32.eq + if + f32.const 0 + local.get $0 + f32.mul + return + end + local.get $2 + local.get $3 + i32.sub + local.set $2 + end + local.get $2 + i32.const 1 + i32.shl + local.set $2 + local.get $4 + i32.const 1 + i32.sub + local.set $4 + br $continue|0 + end + end + end + local.get $2 + local.get $3 + i32.ge_u + if + local.get $2 + local.get $3 + i32.eq + if + f32.const 0 + local.get $0 + f32.mul + return + end + local.get $2 + local.get $3 + i32.sub + local.set $2 + end + local.get $2 + i32.const 8 + i32.shl + i32.clz + local.set $10 + local.get $4 + local.get $10 + i32.sub + local.set $4 + local.get $2 + local.get $10 + i32.shl + local.set $2 + local.get $4 + i32.const 0 + i32.gt_s + if + local.get $2 + i32.const 1 + i32.const 23 + i32.shl + i32.sub + local.set $2 + local.get $2 + local.get $4 + i32.const 23 + i32.shl + i32.or + local.set $2 + else + local.get $2 + i32.const 0 + local.get $4 + i32.sub + i32.const 1 + i32.add + i32.shr_u + local.set $2 + end + local.get $2 + local.get $6 + i32.or + local.set $2 + local.get $2 + f32.reinterpret_i32 + ) + (func $std/typedarray/testArrayEvery<~lib/typedarray/Float32Array,f32>~anonymous|0 (; 312 ;) (type $FUNCSIG$ifii) (param $0 f32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + local.get $2 + call $~lib/rt/purerc/__retain + drop + local.get $0 + f32.const 2 + call $~lib/math/NativeMathf.mod + f32.const 0 + f32.eq + local.set $3 + local.get $2 + call $~lib/rt/purerc/__release + local.get $3 + ) + (func $~lib/typedarray/Float32Array#every (; 313 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + block $~lib/typedarray/EVERY<~lib/typedarray/Float32Array,f32>|inlined.0 (result i32) + local.get $0 + call $~lib/rt/purerc/__retain + local.set $3 + local.get $1 + local.set $2 + local.get $3 + i32.load offset=4 + local.set $4 + block $break|0 + block + i32.const 0 + local.set $5 + local.get $3 + call $~lib/typedarray/Float32Array#get:length + local.set $6 + end + loop $repeat|0 + block $continue|0 + local.get $5 + local.get $6 + i32.lt_s + i32.eqz + br_if $break|0 + block (result i32) + i32.const 3 + global.set $~lib/argc + local.get $4 + local.get $5 + i32.const 2 + i32.shl + i32.add + f32.load + local.get $5 + local.get $3 + local.get $2 + call_indirect (type $FUNCSIG$ifii) + end + if + br $continue|0 + end + i32.const 0 + br $~lib/typedarray/EVERY<~lib/typedarray/Float32Array,f32>|inlined.0 + end + local.get $5 + i32.const 1 + i32.add + local.set $5 + br $repeat|0 + unreachable + end + unreachable + end + i32.const 1 + local.set $6 + local.get $3 + call $~lib/rt/purerc/__release + local.get $6 + end + ) + (func $std/typedarray/testArrayEvery<~lib/typedarray/Float32Array,f32>~anonymous|1 (; 314 ;) (type $FUNCSIG$ifii) (param $0 f32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + local.get $2 + call $~lib/rt/purerc/__retain + drop + local.get $0 + f32.const 2 + f32.eq + local.set $3 + local.get $2 + call $~lib/rt/purerc/__release + local.get $3 + ) + (func $std/typedarray/testArrayEvery<~lib/typedarray/Float32Array,f32> (; 315 ;) (type $FUNCSIG$v) + (local $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + i32.const 0 + i32.const 3 + call $~lib/typedarray/Float32Array#constructor + local.tee $0 + call $~lib/rt/purerc/__retain + local.set $1 + local.get $1 + i32.const 0 + f32.const 2 + call $~lib/typedarray/Float32Array#__set + local.get $1 + i32.const 1 + f32.const 4 + call $~lib/typedarray/Float32Array#__set + local.get $1 + i32.const 2 + f32.const 6 + call $~lib/typedarray/Float32Array#__set + local.get $1 + i32.const 97 + call $~lib/typedarray/Float32Array#every + local.set $2 + local.get $2 + i32.const 0 + i32.ne + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 395 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 98 + call $~lib/typedarray/Float32Array#every + local.set $3 + local.get $3 + i32.const 0 + i32.ne + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 398 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $0 + call $~lib/rt/purerc/__release + local.get $1 + call $~lib/rt/purerc/__release + ) + (func $~lib/builtins/isNaN (; 316 ;) (type $FUNCSIG$id) (param $0 f64) (result i32) + local.get $0 + local.get $0 + f64.ne + ) + (func $~lib/math/NativeMath.mod (; 317 ;) (type $FUNCSIG$ddd) (param $0 f64) (param $1 f64) (result f64) + (local $2 i64) + (local $3 i64) + (local $4 i64) + (local $5 i64) + (local $6 i64) + (local $7 i64) + (local $8 f64) + (local $9 i64) + (local $10 i64) + local.get $0 + i64.reinterpret_f64 + local.set $2 + local.get $1 + i64.reinterpret_f64 + local.set $3 + local.get $2 + i64.const 52 + i64.shr_u + i64.const 2047 + i64.and + local.set $4 + local.get $3 + i64.const 52 + i64.shr_u + i64.const 2047 + i64.and + local.set $5 + local.get $2 + i64.const 63 + i64.shr_u + local.set $6 + local.get $3 + i64.const 1 + i64.shl + local.set $7 + local.get $7 + i64.const 0 + i64.eq + if (result i32) + i32.const 1 + else + local.get $4 + i64.const 2047 + i64.eq + end + if (result i32) + i32.const 1 + else + local.get $1 + call $~lib/builtins/isNaN + end + if + local.get $0 + local.get $1 + f64.mul + local.set $8 + local.get $8 + local.get $8 + f64.div + return + end + local.get $2 + i64.const 1 + i64.shl + local.set $9 + local.get $9 + local.get $7 + i64.le_u + if + local.get $9 + local.get $7 + i64.eq + if + f64.const 0 + local.get $0 + f64.mul + return + end + local.get $0 + return + end + local.get $4 + i64.eqz + if + local.get $4 + local.get $2 + i64.const 12 + i64.shl + i64.clz + i64.sub + local.set $4 + local.get $2 + i64.const 0 + local.get $4 + i64.sub + i64.const 1 + i64.add + i64.shl + local.set $2 + else + local.get $2 + i64.const -1 + i64.const 12 + i64.shr_u + i64.and + local.set $2 + local.get $2 + i64.const 1 + i64.const 52 + i64.shl + i64.or + local.set $2 + end + local.get $5 + i64.eqz + if + local.get $5 + local.get $3 + i64.const 12 + i64.shl + i64.clz + i64.sub + local.set $5 + local.get $3 + i64.const 0 + local.get $5 + i64.sub + i64.const 1 + i64.add + i64.shl + local.set $3 + else + local.get $3 + i64.const -1 + i64.const 12 + i64.shr_u + i64.and + local.set $3 + local.get $3 + i64.const 1 + i64.const 52 + i64.shl + i64.or + local.set $3 + end + block $break|0 + loop $continue|0 + local.get $4 + local.get $5 + i64.gt_s + if + local.get $2 + local.get $3 + i64.ge_u + if + local.get $2 + local.get $3 + i64.eq + if + f64.const 0 + local.get $0 + f64.mul + return + end + local.get $2 + local.get $3 + i64.sub + local.set $2 + end + local.get $2 + i64.const 1 + i64.shl + local.set $2 + local.get $4 + i64.const 1 + i64.sub + local.set $4 + br $continue|0 + end + end + end + local.get $2 + local.get $3 + i64.ge_u + if + local.get $2 + local.get $3 + i64.eq + if + f64.const 0 + local.get $0 + f64.mul + return + end + local.get $2 + local.get $3 + i64.sub + local.set $2 + end + local.get $2 + i64.const 11 + i64.shl + i64.clz + local.set $10 + local.get $4 + local.get $10 + i64.sub + local.set $4 + local.get $2 + local.get $10 + i64.shl + local.set $2 + local.get $4 + i64.const 0 + i64.gt_s + if + local.get $2 + i64.const 1 + i64.const 52 + i64.shl + i64.sub + local.set $2 + local.get $2 + local.get $4 + i64.const 52 + i64.shl + i64.or + local.set $2 + else + local.get $2 + i64.const 0 + local.get $4 + i64.sub + i64.const 1 + i64.add + i64.shr_u + local.set $2 + end + local.get $2 + local.get $6 + i64.const 63 + i64.shl + i64.or + local.set $2 + local.get $2 + f64.reinterpret_i64 + ) + (func $std/typedarray/testArrayEvery<~lib/typedarray/Float64Array,f64>~anonymous|0 (; 318 ;) (type $FUNCSIG$idii) (param $0 f64) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + local.get $2 + call $~lib/rt/purerc/__retain + drop + local.get $0 + f64.const 2 + call $~lib/math/NativeMath.mod + f64.const 0 + f64.eq + local.set $3 + local.get $2 + call $~lib/rt/purerc/__release + local.get $3 + ) + (func $~lib/typedarray/Float64Array#every (; 319 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + block $~lib/typedarray/EVERY<~lib/typedarray/Float64Array,f64>|inlined.0 (result i32) + local.get $0 + call $~lib/rt/purerc/__retain + local.set $3 + local.get $1 + local.set $2 + local.get $3 + i32.load offset=4 + local.set $4 + block $break|0 + block + i32.const 0 + local.set $5 + local.get $3 + call $~lib/typedarray/Float64Array#get:length + local.set $6 + end + loop $repeat|0 + block $continue|0 + local.get $5 + local.get $6 + i32.lt_s + i32.eqz + br_if $break|0 + block (result i32) + i32.const 3 + global.set $~lib/argc + local.get $4 + local.get $5 + i32.const 3 + i32.shl + i32.add + f64.load + local.get $5 + local.get $3 + local.get $2 + call_indirect (type $FUNCSIG$idii) + end + if + br $continue|0 + end + i32.const 0 + br $~lib/typedarray/EVERY<~lib/typedarray/Float64Array,f64>|inlined.0 + end + local.get $5 + i32.const 1 + i32.add + local.set $5 + br $repeat|0 + unreachable + end + unreachable + end + i32.const 1 + local.set $6 + local.get $3 + call $~lib/rt/purerc/__release + local.get $6 + end + ) + (func $std/typedarray/testArrayEvery<~lib/typedarray/Float64Array,f64>~anonymous|1 (; 320 ;) (type $FUNCSIG$idii) (param $0 f64) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + local.get $2 + call $~lib/rt/purerc/__retain + drop + local.get $0 + f64.const 2 + f64.eq + local.set $3 + local.get $2 + call $~lib/rt/purerc/__release + local.get $3 + ) + (func $std/typedarray/testArrayEvery<~lib/typedarray/Float64Array,f64> (; 321 ;) (type $FUNCSIG$v) + (local $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + i32.const 0 + i32.const 3 + call $~lib/typedarray/Float64Array#constructor + local.tee $0 + call $~lib/rt/purerc/__retain + local.set $1 + local.get $1 + i32.const 0 + f64.const 2 + call $~lib/typedarray/Float64Array#__set + local.get $1 + i32.const 1 + f64.const 4 + call $~lib/typedarray/Float64Array#__set + local.get $1 + i32.const 2 + f64.const 6 + call $~lib/typedarray/Float64Array#__set + local.get $1 + i32.const 99 + call $~lib/typedarray/Float64Array#every + local.set $2 + local.get $2 + i32.const 0 + i32.ne + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 395 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 100 + call $~lib/typedarray/Float64Array#every + local.set $3 + local.get $3 + i32.const 0 + i32.ne + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 398 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $0 + call $~lib/rt/purerc/__release + local.get $1 + call $~lib/rt/purerc/__release + ) + (func $std/typedarray/testArrayForEach<~lib/typedarray/Int8Array,i8>~anonymous|0 (; 322 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + local.get $2 + call $~lib/rt/purerc/__retain + drop + global.get $std/typedarray/forEachValues + local.get $1 + call $~lib/array/Array#__get + local.set $3 + local.get $0 + i32.const 24 + i32.shl + i32.const 24 + i32.shr_s + local.get $3 + i32.const 24 + i32.shl + i32.const 24 + i32.shr_s + i32.eq + i32.eqz + if + i32.const 1112 + i32.const 24 + i32.const 425 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $1 + global.get $std/typedarray/forEachCallCount + i32.eq + i32.eqz + if + i32.const 1176 + i32.const 24 + i32.const 426 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + global.get $std/typedarray/forEachSelf + local.get $2 + i32.eq + i32.eqz + if + i32.const 1240 + i32.const 24 + i32.const 427 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + global.get $std/typedarray/forEachCallCount + i32.const 1 + i32.add + global.set $std/typedarray/forEachCallCount + local.get $2 + call $~lib/rt/purerc/__release + ) + (func $~lib/typedarray/Int8Array#forEach (; 323 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + local.get $0 + call $~lib/rt/purerc/__retain + local.set $3 + local.get $1 + local.set $2 + local.get $3 + i32.load offset=4 + local.set $4 + block $break|0 + block + i32.const 0 + local.set $5 + local.get $3 + call $~lib/typedarray/Int8Array#get:length + local.set $6 + end + loop $repeat|0 + local.get $5 + local.get $6 + i32.lt_s + i32.eqz + br_if $break|0 + i32.const 3 + global.set $~lib/argc + local.get $4 + local.get $5 + i32.const 0 + i32.shl + i32.add + i32.load8_s + local.get $5 + local.get $3 + local.get $2 + call_indirect (type $FUNCSIG$viii) + local.get $5 + i32.const 1 + i32.add + local.set $5 + br $repeat|0 + unreachable + end + unreachable + end + local.get $3 + call $~lib/rt/purerc/__release + ) + (func $std/typedarray/testArrayForEach<~lib/typedarray/Int8Array,i8> (; 324 ;) (type $FUNCSIG$v) + (local $0 i32) + (local $1 i32) + i32.const 0 + global.set $std/typedarray/forEachCallCount + i32.const 0 + i32.const 3 + call $~lib/typedarray/Int8Array#constructor + local.tee $0 + call $~lib/rt/purerc/__retain + local.set $1 + local.get $1 + global.set $std/typedarray/forEachSelf + local.get $1 + i32.const 0 + global.get $std/typedarray/forEachValues + i32.const 0 + call $~lib/array/Array#__get + i32.const 24 + i32.shl + i32.const 24 + i32.shr_s + call $~lib/typedarray/Int8Array#__set + local.get $1 + i32.const 1 + global.get $std/typedarray/forEachValues + i32.const 1 + call $~lib/array/Array#__get + i32.const 24 + i32.shl + i32.const 24 + i32.shr_s + call $~lib/typedarray/Int8Array#__set + local.get $1 + i32.const 2 + global.get $std/typedarray/forEachValues + i32.const 2 + call $~lib/array/Array#__get + i32.const 24 + i32.shl + i32.const 24 + i32.shr_s + call $~lib/typedarray/Int8Array#__set + local.get $1 + i32.const 101 + call $~lib/typedarray/Int8Array#forEach + global.get $std/typedarray/forEachCallCount + i32.const 3 + i32.eq + i32.eqz + if + i32.const 1320 + i32.const 24 + i32.const 430 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $0 + call $~lib/rt/purerc/__release + local.get $1 + call $~lib/rt/purerc/__release + ) + (func $std/typedarray/testArrayForEach<~lib/typedarray/Uint8Array,u8>~anonymous|0 (; 325 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + local.get $2 + call $~lib/rt/purerc/__retain + drop + global.get $std/typedarray/forEachValues + local.get $1 + call $~lib/array/Array#__get + local.set $3 + local.get $0 + i32.const 255 + i32.and + local.get $3 + i32.const 255 + i32.and + i32.eq + i32.eqz + if + i32.const 1112 + i32.const 24 + i32.const 425 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $1 + global.get $std/typedarray/forEachCallCount + i32.eq + i32.eqz + if + i32.const 1176 + i32.const 24 + i32.const 426 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + global.get $std/typedarray/forEachSelf + local.get $2 + i32.eq + i32.eqz + if + i32.const 1240 + i32.const 24 + i32.const 427 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + global.get $std/typedarray/forEachCallCount + i32.const 1 + i32.add + global.set $std/typedarray/forEachCallCount + local.get $2 + call $~lib/rt/purerc/__release + ) + (func $~lib/typedarray/Uint8Array#forEach (; 326 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + local.get $0 + call $~lib/rt/purerc/__retain + local.set $3 + local.get $1 + local.set $2 + local.get $3 + i32.load offset=4 + local.set $4 + block $break|0 + block + i32.const 0 + local.set $5 + local.get $3 + call $~lib/typedarray/Uint8Array#get:length + local.set $6 + end + loop $repeat|0 + local.get $5 + local.get $6 + i32.lt_s + i32.eqz + br_if $break|0 + i32.const 3 + global.set $~lib/argc + local.get $4 + local.get $5 + i32.const 0 + i32.shl + i32.add + i32.load8_u + local.get $5 + local.get $3 + local.get $2 + call_indirect (type $FUNCSIG$viii) + local.get $5 + i32.const 1 + i32.add + local.set $5 + br $repeat|0 + unreachable + end + unreachable + end + local.get $3 + call $~lib/rt/purerc/__release + ) + (func $std/typedarray/testArrayForEach<~lib/typedarray/Uint8Array,u8> (; 327 ;) (type $FUNCSIG$v) + (local $0 i32) + (local $1 i32) + i32.const 0 + global.set $std/typedarray/forEachCallCount + i32.const 0 + i32.const 3 + call $~lib/typedarray/Uint8Array#constructor + local.tee $0 + call $~lib/rt/purerc/__retain + local.set $1 + local.get $1 + global.set $std/typedarray/forEachSelf + local.get $1 + i32.const 0 + global.get $std/typedarray/forEachValues + i32.const 0 + call $~lib/array/Array#__get + i32.const 255 + i32.and + call $~lib/typedarray/Uint8Array#__set + local.get $1 + i32.const 1 + global.get $std/typedarray/forEachValues + i32.const 1 + call $~lib/array/Array#__get + i32.const 255 + i32.and + call $~lib/typedarray/Uint8Array#__set + local.get $1 + i32.const 2 + global.get $std/typedarray/forEachValues + i32.const 2 + call $~lib/array/Array#__get + i32.const 255 + i32.and + call $~lib/typedarray/Uint8Array#__set + local.get $1 + i32.const 102 + call $~lib/typedarray/Uint8Array#forEach + global.get $std/typedarray/forEachCallCount + i32.const 3 + i32.eq + i32.eqz + if + i32.const 1320 + i32.const 24 + i32.const 430 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $0 + call $~lib/rt/purerc/__release + local.get $1 + call $~lib/rt/purerc/__release + ) + (func $std/typedarray/testArrayForEach<~lib/typedarray/Uint8ClampedArray,u8>~anonymous|0 (; 328 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + local.get $2 + call $~lib/rt/purerc/__retain + drop + global.get $std/typedarray/forEachValues + local.get $1 + call $~lib/array/Array#__get + local.set $3 + local.get $0 + i32.const 255 + i32.and + local.get $3 + i32.const 255 + i32.and + i32.eq + i32.eqz + if + i32.const 1112 + i32.const 24 + i32.const 425 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $1 + global.get $std/typedarray/forEachCallCount + i32.eq + i32.eqz + if + i32.const 1176 + i32.const 24 + i32.const 426 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + global.get $std/typedarray/forEachSelf + local.get $2 + i32.eq + i32.eqz + if + i32.const 1240 + i32.const 24 + i32.const 427 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + global.get $std/typedarray/forEachCallCount + i32.const 1 + i32.add + global.set $std/typedarray/forEachCallCount + local.get $2 + call $~lib/rt/purerc/__release + ) + (func $~lib/typedarray/Uint8ClampedArray#forEach (; 329 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + local.get $0 + call $~lib/rt/purerc/__retain + local.set $3 + local.get $1 + local.set $2 + local.get $3 + i32.load offset=4 + local.set $4 + block $break|0 + block + i32.const 0 + local.set $5 + local.get $3 + call $~lib/typedarray/Uint8ClampedArray#get:length + local.set $6 + end + loop $repeat|0 + local.get $5 + local.get $6 + i32.lt_s + i32.eqz + br_if $break|0 + i32.const 3 + global.set $~lib/argc + local.get $4 + local.get $5 + i32.const 0 + i32.shl + i32.add + i32.load8_u + local.get $5 + local.get $3 + local.get $2 + call_indirect (type $FUNCSIG$viii) + local.get $5 + i32.const 1 + i32.add + local.set $5 + br $repeat|0 + unreachable + end + unreachable + end + local.get $3 + call $~lib/rt/purerc/__release + ) + (func $std/typedarray/testArrayForEach<~lib/typedarray/Uint8ClampedArray,u8> (; 330 ;) (type $FUNCSIG$v) + (local $0 i32) + (local $1 i32) + i32.const 0 + global.set $std/typedarray/forEachCallCount + i32.const 0 + i32.const 3 + call $~lib/typedarray/Uint8ClampedArray#constructor + local.tee $0 + call $~lib/rt/purerc/__retain + local.set $1 + local.get $1 + global.set $std/typedarray/forEachSelf + local.get $1 + i32.const 0 + global.get $std/typedarray/forEachValues + i32.const 0 + call $~lib/array/Array#__get + i32.const 255 + i32.and + call $~lib/typedarray/Uint8ClampedArray#__set + local.get $1 + i32.const 1 + global.get $std/typedarray/forEachValues + i32.const 1 + call $~lib/array/Array#__get + i32.const 255 + i32.and + call $~lib/typedarray/Uint8ClampedArray#__set + local.get $1 + i32.const 2 + global.get $std/typedarray/forEachValues + i32.const 2 + call $~lib/array/Array#__get + i32.const 255 + i32.and + call $~lib/typedarray/Uint8ClampedArray#__set + local.get $1 + i32.const 103 + call $~lib/typedarray/Uint8ClampedArray#forEach + global.get $std/typedarray/forEachCallCount + i32.const 3 + i32.eq + i32.eqz + if + i32.const 1320 + i32.const 24 + i32.const 430 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $0 + call $~lib/rt/purerc/__release + local.get $1 + call $~lib/rt/purerc/__release + ) + (func $std/typedarray/testArrayForEach<~lib/typedarray/Int16Array,i16>~anonymous|0 (; 331 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + local.get $2 + call $~lib/rt/purerc/__retain + drop + global.get $std/typedarray/forEachValues + local.get $1 + call $~lib/array/Array#__get + local.set $3 + local.get $0 + i32.const 16 + i32.shl + i32.const 16 + i32.shr_s + local.get $3 + i32.const 16 + i32.shl + i32.const 16 + i32.shr_s + i32.eq + i32.eqz + if + i32.const 1112 + i32.const 24 + i32.const 425 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $1 + global.get $std/typedarray/forEachCallCount + i32.eq + i32.eqz + if + i32.const 1176 + i32.const 24 + i32.const 426 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + global.get $std/typedarray/forEachSelf + local.get $2 + i32.eq + i32.eqz + if + i32.const 1240 + i32.const 24 + i32.const 427 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + global.get $std/typedarray/forEachCallCount + i32.const 1 + i32.add + global.set $std/typedarray/forEachCallCount + local.get $2 + call $~lib/rt/purerc/__release + ) + (func $~lib/typedarray/Int16Array#forEach (; 332 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + local.get $0 + call $~lib/rt/purerc/__retain + local.set $3 + local.get $1 + local.set $2 + local.get $3 + i32.load offset=4 + local.set $4 + block $break|0 + block + i32.const 0 + local.set $5 + local.get $3 + call $~lib/typedarray/Int16Array#get:length + local.set $6 + end + loop $repeat|0 + local.get $5 + local.get $6 + i32.lt_s + i32.eqz + br_if $break|0 + i32.const 3 + global.set $~lib/argc + local.get $4 + local.get $5 + i32.const 1 + i32.shl + i32.add + i32.load16_s + local.get $5 + local.get $3 + local.get $2 + call_indirect (type $FUNCSIG$viii) + local.get $5 + i32.const 1 + i32.add + local.set $5 + br $repeat|0 + unreachable + end + unreachable + end + local.get $3 + call $~lib/rt/purerc/__release + ) + (func $std/typedarray/testArrayForEach<~lib/typedarray/Int16Array,i16> (; 333 ;) (type $FUNCSIG$v) + (local $0 i32) + (local $1 i32) + i32.const 0 + global.set $std/typedarray/forEachCallCount + i32.const 0 + i32.const 3 + call $~lib/typedarray/Int16Array#constructor + local.tee $0 + call $~lib/rt/purerc/__retain + local.set $1 + local.get $1 + global.set $std/typedarray/forEachSelf + local.get $1 + i32.const 0 + global.get $std/typedarray/forEachValues + i32.const 0 + call $~lib/array/Array#__get + i32.const 16 + i32.shl + i32.const 16 + i32.shr_s + call $~lib/typedarray/Int16Array#__set + local.get $1 + i32.const 1 + global.get $std/typedarray/forEachValues + i32.const 1 + call $~lib/array/Array#__get + i32.const 16 + i32.shl + i32.const 16 + i32.shr_s + call $~lib/typedarray/Int16Array#__set + local.get $1 + i32.const 2 + global.get $std/typedarray/forEachValues + i32.const 2 + call $~lib/array/Array#__get + i32.const 16 + i32.shl + i32.const 16 + i32.shr_s + call $~lib/typedarray/Int16Array#__set + local.get $1 + i32.const 104 + call $~lib/typedarray/Int16Array#forEach + global.get $std/typedarray/forEachCallCount + i32.const 3 + i32.eq + i32.eqz + if + i32.const 1320 + i32.const 24 + i32.const 430 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $0 + call $~lib/rt/purerc/__release + local.get $1 + call $~lib/rt/purerc/__release + ) + (func $std/typedarray/testArrayForEach<~lib/typedarray/Uint16Array,u16>~anonymous|0 (; 334 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + local.get $2 + call $~lib/rt/purerc/__retain + drop + global.get $std/typedarray/forEachValues + local.get $1 + call $~lib/array/Array#__get + local.set $3 + local.get $0 + i32.const 65535 + i32.and + local.get $3 + i32.const 65535 + i32.and + i32.eq + i32.eqz + if + i32.const 1112 + i32.const 24 + i32.const 425 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $1 + global.get $std/typedarray/forEachCallCount + i32.eq + i32.eqz + if + i32.const 1176 + i32.const 24 + i32.const 426 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + global.get $std/typedarray/forEachSelf + local.get $2 + i32.eq + i32.eqz + if + i32.const 1240 + i32.const 24 + i32.const 427 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + global.get $std/typedarray/forEachCallCount + i32.const 1 + i32.add + global.set $std/typedarray/forEachCallCount + local.get $2 + call $~lib/rt/purerc/__release + ) + (func $~lib/typedarray/Uint16Array#forEach (; 335 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + local.get $0 + call $~lib/rt/purerc/__retain + local.set $3 + local.get $1 + local.set $2 + local.get $3 + i32.load offset=4 + local.set $4 + block $break|0 + block + i32.const 0 + local.set $5 + local.get $3 + call $~lib/typedarray/Uint16Array#get:length + local.set $6 + end + loop $repeat|0 + local.get $5 + local.get $6 + i32.lt_s + i32.eqz + br_if $break|0 + i32.const 3 + global.set $~lib/argc + local.get $4 + local.get $5 + i32.const 1 + i32.shl + i32.add + i32.load16_u + local.get $5 + local.get $3 + local.get $2 + call_indirect (type $FUNCSIG$viii) + local.get $5 + i32.const 1 + i32.add + local.set $5 + br $repeat|0 + unreachable + end + unreachable + end + local.get $3 + call $~lib/rt/purerc/__release + ) + (func $std/typedarray/testArrayForEach<~lib/typedarray/Uint16Array,u16> (; 336 ;) (type $FUNCSIG$v) + (local $0 i32) + (local $1 i32) + i32.const 0 + global.set $std/typedarray/forEachCallCount + i32.const 0 + i32.const 3 + call $~lib/typedarray/Uint16Array#constructor + local.tee $0 + call $~lib/rt/purerc/__retain + local.set $1 + local.get $1 + global.set $std/typedarray/forEachSelf + local.get $1 + i32.const 0 + global.get $std/typedarray/forEachValues + i32.const 0 + call $~lib/array/Array#__get + i32.const 65535 + i32.and + call $~lib/typedarray/Uint16Array#__set + local.get $1 + i32.const 1 + global.get $std/typedarray/forEachValues + i32.const 1 + call $~lib/array/Array#__get + i32.const 65535 + i32.and + call $~lib/typedarray/Uint16Array#__set + local.get $1 + i32.const 2 + global.get $std/typedarray/forEachValues + i32.const 2 + call $~lib/array/Array#__get + i32.const 65535 + i32.and + call $~lib/typedarray/Uint16Array#__set + local.get $1 + i32.const 105 + call $~lib/typedarray/Uint16Array#forEach + global.get $std/typedarray/forEachCallCount + i32.const 3 + i32.eq + i32.eqz + if + i32.const 1320 + i32.const 24 + i32.const 430 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $0 + call $~lib/rt/purerc/__release + local.get $1 + call $~lib/rt/purerc/__release + ) + (func $std/typedarray/testArrayForEach<~lib/typedarray/Int32Array,i32>~anonymous|0 (; 337 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + local.get $2 + call $~lib/rt/purerc/__retain + drop + global.get $std/typedarray/forEachValues + local.get $1 + call $~lib/array/Array#__get + local.set $3 + local.get $0 + local.get $3 + i32.eq + i32.eqz + if + i32.const 1112 + i32.const 24 + i32.const 425 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $1 + global.get $std/typedarray/forEachCallCount + i32.eq + i32.eqz + if + i32.const 1176 + i32.const 24 + i32.const 426 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + global.get $std/typedarray/forEachSelf + local.get $2 + i32.eq + i32.eqz + if + i32.const 1240 + i32.const 24 + i32.const 427 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + global.get $std/typedarray/forEachCallCount + i32.const 1 + i32.add + global.set $std/typedarray/forEachCallCount + local.get $2 + call $~lib/rt/purerc/__release + ) + (func $~lib/typedarray/Int32Array#forEach (; 338 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + local.get $0 + call $~lib/rt/purerc/__retain + local.set $3 + local.get $1 + local.set $2 + local.get $3 + i32.load offset=4 + local.set $4 + block $break|0 + block + i32.const 0 + local.set $5 + local.get $3 + call $~lib/typedarray/Int32Array#get:length + local.set $6 + end + loop $repeat|0 + local.get $5 + local.get $6 + i32.lt_s + i32.eqz + br_if $break|0 + i32.const 3 + global.set $~lib/argc + local.get $4 + local.get $5 + i32.const 2 + i32.shl + i32.add + i32.load + local.get $5 + local.get $3 + local.get $2 + call_indirect (type $FUNCSIG$viii) + local.get $5 + i32.const 1 + i32.add + local.set $5 + br $repeat|0 + unreachable + end + unreachable + end + local.get $3 + call $~lib/rt/purerc/__release + ) + (func $std/typedarray/testArrayForEach<~lib/typedarray/Int32Array,i32> (; 339 ;) (type $FUNCSIG$v) + (local $0 i32) + (local $1 i32) + i32.const 0 + global.set $std/typedarray/forEachCallCount + i32.const 0 + i32.const 3 + call $~lib/typedarray/Int32Array#constructor + local.tee $0 + call $~lib/rt/purerc/__retain + local.set $1 + local.get $1 + global.set $std/typedarray/forEachSelf + local.get $1 + i32.const 0 + global.get $std/typedarray/forEachValues + i32.const 0 + call $~lib/array/Array#__get + call $~lib/typedarray/Int32Array#__set + local.get $1 + i32.const 1 + global.get $std/typedarray/forEachValues + i32.const 1 + call $~lib/array/Array#__get + call $~lib/typedarray/Int32Array#__set + local.get $1 + i32.const 2 + global.get $std/typedarray/forEachValues + i32.const 2 + call $~lib/array/Array#__get + call $~lib/typedarray/Int32Array#__set + local.get $1 + i32.const 106 + call $~lib/typedarray/Int32Array#forEach + global.get $std/typedarray/forEachCallCount + i32.const 3 + i32.eq + i32.eqz + if + i32.const 1320 + i32.const 24 + i32.const 430 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $0 + call $~lib/rt/purerc/__release + local.get $1 + call $~lib/rt/purerc/__release + ) + (func $std/typedarray/testArrayForEach<~lib/typedarray/Uint32Array,u32>~anonymous|0 (; 340 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + local.get $2 + call $~lib/rt/purerc/__retain + drop + global.get $std/typedarray/forEachValues + local.get $1 + call $~lib/array/Array#__get + local.set $3 + local.get $0 + local.get $3 + i32.eq + i32.eqz + if + i32.const 1112 + i32.const 24 + i32.const 425 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $1 + global.get $std/typedarray/forEachCallCount + i32.eq + i32.eqz + if + i32.const 1176 + i32.const 24 + i32.const 426 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + global.get $std/typedarray/forEachSelf + local.get $2 + i32.eq + i32.eqz + if + i32.const 1240 + i32.const 24 + i32.const 427 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + global.get $std/typedarray/forEachCallCount + i32.const 1 + i32.add + global.set $std/typedarray/forEachCallCount + local.get $2 + call $~lib/rt/purerc/__release + ) + (func $~lib/typedarray/Uint32Array#forEach (; 341 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + local.get $0 + call $~lib/rt/purerc/__retain + local.set $3 + local.get $1 + local.set $2 + local.get $3 + i32.load offset=4 + local.set $4 + block $break|0 + block + i32.const 0 + local.set $5 + local.get $3 + call $~lib/typedarray/Uint32Array#get:length + local.set $6 + end + loop $repeat|0 + local.get $5 + local.get $6 + i32.lt_s + i32.eqz + br_if $break|0 + i32.const 3 + global.set $~lib/argc + local.get $4 + local.get $5 + i32.const 2 + i32.shl + i32.add + i32.load + local.get $5 + local.get $3 + local.get $2 + call_indirect (type $FUNCSIG$viii) + local.get $5 + i32.const 1 + i32.add + local.set $5 + br $repeat|0 + unreachable + end + unreachable + end + local.get $3 + call $~lib/rt/purerc/__release + ) + (func $std/typedarray/testArrayForEach<~lib/typedarray/Uint32Array,u32> (; 342 ;) (type $FUNCSIG$v) + (local $0 i32) + (local $1 i32) + i32.const 0 + global.set $std/typedarray/forEachCallCount + i32.const 0 + i32.const 3 + call $~lib/typedarray/Uint32Array#constructor + local.tee $0 + call $~lib/rt/purerc/__retain + local.set $1 + local.get $1 + global.set $std/typedarray/forEachSelf + local.get $1 + i32.const 0 + global.get $std/typedarray/forEachValues + i32.const 0 + call $~lib/array/Array#__get + call $~lib/typedarray/Uint32Array#__set + local.get $1 + i32.const 1 + global.get $std/typedarray/forEachValues + i32.const 1 + call $~lib/array/Array#__get + call $~lib/typedarray/Uint32Array#__set + local.get $1 + i32.const 2 + global.get $std/typedarray/forEachValues + i32.const 2 + call $~lib/array/Array#__get + call $~lib/typedarray/Uint32Array#__set + local.get $1 + i32.const 107 + call $~lib/typedarray/Uint32Array#forEach + global.get $std/typedarray/forEachCallCount + i32.const 3 + i32.eq + i32.eqz + if + i32.const 1320 + i32.const 24 + i32.const 430 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $0 + call $~lib/rt/purerc/__release + local.get $1 + call $~lib/rt/purerc/__release + ) + (func $std/typedarray/testArrayForEach<~lib/typedarray/Int64Array,i64>~anonymous|0 (; 343 ;) (type $FUNCSIG$vjii) (param $0 i64) (param $1 i32) (param $2 i32) + (local $3 i32) + local.get $2 + call $~lib/rt/purerc/__retain + drop + global.get $std/typedarray/forEachValues + local.get $1 + call $~lib/array/Array#__get + local.set $3 + local.get $0 + local.get $3 + i64.extend_i32_s + i64.eq + i32.eqz + if + i32.const 1112 + i32.const 24 + i32.const 425 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $1 + global.get $std/typedarray/forEachCallCount + i32.eq + i32.eqz + if + i32.const 1176 + i32.const 24 + i32.const 426 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + global.get $std/typedarray/forEachSelf + local.get $2 + i32.eq + i32.eqz + if + i32.const 1240 + i32.const 24 + i32.const 427 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + global.get $std/typedarray/forEachCallCount + i32.const 1 + i32.add + global.set $std/typedarray/forEachCallCount + local.get $2 + call $~lib/rt/purerc/__release + ) + (func $~lib/typedarray/Int64Array#forEach (; 344 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + local.get $0 + call $~lib/rt/purerc/__retain + local.set $3 + local.get $1 + local.set $2 + local.get $3 + i32.load offset=4 + local.set $4 + block $break|0 + block + i32.const 0 + local.set $5 + local.get $3 + call $~lib/typedarray/Int64Array#get:length + local.set $6 + end + loop $repeat|0 + local.get $5 + local.get $6 + i32.lt_s + i32.eqz + br_if $break|0 + i32.const 3 + global.set $~lib/argc + local.get $4 + local.get $5 + i32.const 3 + i32.shl + i32.add + i64.load + local.get $5 + local.get $3 + local.get $2 + call_indirect (type $FUNCSIG$vjii) + local.get $5 + i32.const 1 + i32.add + local.set $5 + br $repeat|0 + unreachable + end + unreachable + end + local.get $3 + call $~lib/rt/purerc/__release + ) + (func $std/typedarray/testArrayForEach<~lib/typedarray/Int64Array,i64> (; 345 ;) (type $FUNCSIG$v) + (local $0 i32) + (local $1 i32) + i32.const 0 + global.set $std/typedarray/forEachCallCount + i32.const 0 + i32.const 3 + call $~lib/typedarray/Int64Array#constructor + local.tee $0 + call $~lib/rt/purerc/__retain + local.set $1 + local.get $1 + global.set $std/typedarray/forEachSelf + local.get $1 + i32.const 0 + global.get $std/typedarray/forEachValues + i32.const 0 + call $~lib/array/Array#__get + i64.extend_i32_s + call $~lib/typedarray/Int64Array#__set + local.get $1 + i32.const 1 + global.get $std/typedarray/forEachValues + i32.const 1 + call $~lib/array/Array#__get + i64.extend_i32_s + call $~lib/typedarray/Int64Array#__set + local.get $1 + i32.const 2 + global.get $std/typedarray/forEachValues + i32.const 2 + call $~lib/array/Array#__get + i64.extend_i32_s + call $~lib/typedarray/Int64Array#__set + local.get $1 + i32.const 108 + call $~lib/typedarray/Int64Array#forEach + global.get $std/typedarray/forEachCallCount + i32.const 3 + i32.eq + i32.eqz + if + i32.const 1320 + i32.const 24 + i32.const 430 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $0 + call $~lib/rt/purerc/__release + local.get $1 + call $~lib/rt/purerc/__release + ) + (func $std/typedarray/testArrayForEach<~lib/typedarray/Uint64Array,u64>~anonymous|0 (; 346 ;) (type $FUNCSIG$vjii) (param $0 i64) (param $1 i32) (param $2 i32) + (local $3 i32) + local.get $2 + call $~lib/rt/purerc/__retain + drop + global.get $std/typedarray/forEachValues + local.get $1 + call $~lib/array/Array#__get + local.set $3 + local.get $0 + local.get $3 + i64.extend_i32_s + i64.eq + i32.eqz + if + i32.const 1112 + i32.const 24 + i32.const 425 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $1 + global.get $std/typedarray/forEachCallCount + i32.eq + i32.eqz + if + i32.const 1176 + i32.const 24 + i32.const 426 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + global.get $std/typedarray/forEachSelf + local.get $2 + i32.eq + i32.eqz + if + i32.const 1240 + i32.const 24 + i32.const 427 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + global.get $std/typedarray/forEachCallCount + i32.const 1 + i32.add + global.set $std/typedarray/forEachCallCount + local.get $2 + call $~lib/rt/purerc/__release + ) + (func $~lib/typedarray/Uint64Array#forEach (; 347 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + local.get $0 + call $~lib/rt/purerc/__retain + local.set $3 + local.get $1 + local.set $2 + local.get $3 + i32.load offset=4 + local.set $4 + block $break|0 + block + i32.const 0 + local.set $5 + local.get $3 + call $~lib/typedarray/Uint64Array#get:length + local.set $6 + end + loop $repeat|0 + local.get $5 + local.get $6 + i32.lt_s + i32.eqz + br_if $break|0 + i32.const 3 + global.set $~lib/argc + local.get $4 + local.get $5 + i32.const 3 + i32.shl + i32.add + i64.load + local.get $5 + local.get $3 + local.get $2 + call_indirect (type $FUNCSIG$vjii) + local.get $5 + i32.const 1 + i32.add + local.set $5 + br $repeat|0 + unreachable + end + unreachable + end + local.get $3 + call $~lib/rt/purerc/__release + ) + (func $std/typedarray/testArrayForEach<~lib/typedarray/Uint64Array,u64> (; 348 ;) (type $FUNCSIG$v) + (local $0 i32) + (local $1 i32) + i32.const 0 + global.set $std/typedarray/forEachCallCount + i32.const 0 + i32.const 3 + call $~lib/typedarray/Uint64Array#constructor + local.tee $0 + call $~lib/rt/purerc/__retain + local.set $1 + local.get $1 + global.set $std/typedarray/forEachSelf + local.get $1 + i32.const 0 + global.get $std/typedarray/forEachValues + i32.const 0 + call $~lib/array/Array#__get + i64.extend_i32_s + call $~lib/typedarray/Uint64Array#__set + local.get $1 + i32.const 1 + global.get $std/typedarray/forEachValues + i32.const 1 + call $~lib/array/Array#__get + i64.extend_i32_s + call $~lib/typedarray/Uint64Array#__set + local.get $1 + i32.const 2 + global.get $std/typedarray/forEachValues + i32.const 2 + call $~lib/array/Array#__get + i64.extend_i32_s + call $~lib/typedarray/Uint64Array#__set + local.get $1 + i32.const 109 + call $~lib/typedarray/Uint64Array#forEach + global.get $std/typedarray/forEachCallCount + i32.const 3 + i32.eq + i32.eqz + if + i32.const 1320 + i32.const 24 + i32.const 430 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $0 + call $~lib/rt/purerc/__release + local.get $1 + call $~lib/rt/purerc/__release + ) + (func $std/typedarray/testArrayForEach<~lib/typedarray/Float32Array,f32>~anonymous|0 (; 349 ;) (type $FUNCSIG$vfii) (param $0 f32) (param $1 i32) (param $2 i32) + (local $3 i32) + local.get $2 + call $~lib/rt/purerc/__retain + drop + global.get $std/typedarray/forEachValues + local.get $1 + call $~lib/array/Array#__get + local.set $3 + local.get $0 + local.get $3 + f32.convert_i32_s + f32.eq + i32.eqz + if + i32.const 1112 + i32.const 24 + i32.const 425 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $1 + global.get $std/typedarray/forEachCallCount + i32.eq + i32.eqz + if + i32.const 1176 + i32.const 24 + i32.const 426 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + global.get $std/typedarray/forEachSelf + local.get $2 + i32.eq + i32.eqz + if + i32.const 1240 + i32.const 24 + i32.const 427 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + global.get $std/typedarray/forEachCallCount + i32.const 1 + i32.add + global.set $std/typedarray/forEachCallCount + local.get $2 + call $~lib/rt/purerc/__release + ) + (func $~lib/typedarray/Float32Array#forEach (; 350 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + local.get $0 + call $~lib/rt/purerc/__retain + local.set $3 + local.get $1 + local.set $2 + local.get $3 + i32.load offset=4 + local.set $4 + block $break|0 + block + i32.const 0 + local.set $5 + local.get $3 + call $~lib/typedarray/Float32Array#get:length + local.set $6 + end + loop $repeat|0 + local.get $5 + local.get $6 + i32.lt_s + i32.eqz + br_if $break|0 + i32.const 3 + global.set $~lib/argc + local.get $4 + local.get $5 + i32.const 2 + i32.shl + i32.add + f32.load + local.get $5 + local.get $3 + local.get $2 + call_indirect (type $FUNCSIG$vfii) + local.get $5 + i32.const 1 + i32.add + local.set $5 + br $repeat|0 + unreachable + end + unreachable + end + local.get $3 + call $~lib/rt/purerc/__release + ) + (func $std/typedarray/testArrayForEach<~lib/typedarray/Float32Array,f32> (; 351 ;) (type $FUNCSIG$v) + (local $0 i32) + (local $1 i32) + i32.const 0 + global.set $std/typedarray/forEachCallCount + i32.const 0 + i32.const 3 + call $~lib/typedarray/Float32Array#constructor + local.tee $0 + call $~lib/rt/purerc/__retain + local.set $1 + local.get $1 + global.set $std/typedarray/forEachSelf + local.get $1 + i32.const 0 + global.get $std/typedarray/forEachValues + i32.const 0 + call $~lib/array/Array#__get + f32.convert_i32_s + call $~lib/typedarray/Float32Array#__set + local.get $1 + i32.const 1 + global.get $std/typedarray/forEachValues + i32.const 1 + call $~lib/array/Array#__get + f32.convert_i32_s + call $~lib/typedarray/Float32Array#__set + local.get $1 + i32.const 2 + global.get $std/typedarray/forEachValues + i32.const 2 + call $~lib/array/Array#__get + f32.convert_i32_s + call $~lib/typedarray/Float32Array#__set + local.get $1 + i32.const 110 + call $~lib/typedarray/Float32Array#forEach + global.get $std/typedarray/forEachCallCount + i32.const 3 + i32.eq + i32.eqz + if + i32.const 1320 + i32.const 24 + i32.const 430 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $0 + call $~lib/rt/purerc/__release + local.get $1 + call $~lib/rt/purerc/__release + ) + (func $std/typedarray/testArrayForEach<~lib/typedarray/Float64Array,f64>~anonymous|0 (; 352 ;) (type $FUNCSIG$vdii) (param $0 f64) (param $1 i32) (param $2 i32) + (local $3 i32) + local.get $2 + call $~lib/rt/purerc/__retain + drop + global.get $std/typedarray/forEachValues + local.get $1 + call $~lib/array/Array#__get + local.set $3 + local.get $0 + local.get $3 + f64.convert_i32_s + f64.eq + i32.eqz + if + i32.const 1112 + i32.const 24 + i32.const 425 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $1 + global.get $std/typedarray/forEachCallCount + i32.eq + i32.eqz + if + i32.const 1176 + i32.const 24 + i32.const 426 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + global.get $std/typedarray/forEachSelf + local.get $2 + i32.eq + i32.eqz + if + i32.const 1240 + i32.const 24 + i32.const 427 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + global.get $std/typedarray/forEachCallCount + i32.const 1 + i32.add + global.set $std/typedarray/forEachCallCount + local.get $2 + call $~lib/rt/purerc/__release + ) + (func $~lib/typedarray/Float64Array#forEach (; 353 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + local.get $0 + call $~lib/rt/purerc/__retain + local.set $3 + local.get $1 + local.set $2 + local.get $3 + i32.load offset=4 + local.set $4 + block $break|0 + block + i32.const 0 + local.set $5 + local.get $3 + call $~lib/typedarray/Float64Array#get:length + local.set $6 + end + loop $repeat|0 + local.get $5 + local.get $6 + i32.lt_s + i32.eqz + br_if $break|0 + i32.const 3 + global.set $~lib/argc + local.get $4 + local.get $5 + i32.const 3 + i32.shl + i32.add + f64.load + local.get $5 + local.get $3 + local.get $2 + call_indirect (type $FUNCSIG$vdii) + local.get $5 + i32.const 1 + i32.add + local.set $5 + br $repeat|0 + unreachable + end + unreachable + end + local.get $3 + call $~lib/rt/purerc/__release + ) + (func $std/typedarray/testArrayForEach<~lib/typedarray/Float64Array,f64> (; 354 ;) (type $FUNCSIG$v) + (local $0 i32) + (local $1 i32) + i32.const 0 + global.set $std/typedarray/forEachCallCount + i32.const 0 + i32.const 3 + call $~lib/typedarray/Float64Array#constructor + local.tee $0 + call $~lib/rt/purerc/__retain + local.set $1 + local.get $1 + global.set $std/typedarray/forEachSelf + local.get $1 + i32.const 0 + global.get $std/typedarray/forEachValues + i32.const 0 + call $~lib/array/Array#__get + f64.convert_i32_s + call $~lib/typedarray/Float64Array#__set + local.get $1 + i32.const 1 + global.get $std/typedarray/forEachValues + i32.const 1 + call $~lib/array/Array#__get + f64.convert_i32_s + call $~lib/typedarray/Float64Array#__set + local.get $1 + i32.const 2 + global.get $std/typedarray/forEachValues + i32.const 2 + call $~lib/array/Array#__get + f64.convert_i32_s + call $~lib/typedarray/Float64Array#__set + local.get $1 + i32.const 111 + call $~lib/typedarray/Float64Array#forEach + global.get $std/typedarray/forEachCallCount + i32.const 3 + i32.eq + i32.eqz + if + i32.const 1320 + i32.const 24 + i32.const 430 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $0 + call $~lib/rt/purerc/__release + local.get $1 + call $~lib/rt/purerc/__release + ) + (func $~lib/typedarray/Int8Array#reverse (; 355 ;) (type $FUNCSIG$ii) (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) + block $~lib/typedarray/REVERSE<~lib/typedarray/Int8Array,i8>|inlined.0 (result i32) + local.get $0 + call $~lib/rt/purerc/__retain + local.set $1 + local.get $1 + i32.load offset=4 + local.set $2 + block $break|0 + block + i32.const 0 + local.set $3 + local.get $1 + call $~lib/typedarray/Int8Array#get:length + i32.const 1 + i32.sub + local.set $4 + end + loop $repeat|0 + local.get $3 + local.get $4 + i32.lt_s + i32.eqz + br_if $break|0 + local.get $2 + local.get $3 + i32.const 0 + i32.shl + i32.add + local.set $5 + local.get $2 + local.get $4 + i32.const 0 + i32.shl + i32.add + local.set $6 + local.get $5 + i32.load8_s + local.set $7 + local.get $5 + local.get $6 + i32.load8_s + i32.store8 + local.get $6 + local.get $7 + i32.store8 + block + local.get $3 + i32.const 1 + i32.add + local.set $3 + local.get $4 + i32.const 1 + i32.sub + local.set $4 + end + br $repeat|0 + unreachable + end + unreachable + end + local.get $1 + end + local.tee $2 + call $~lib/rt/purerc/__retain + local.set $1 + local.get $2 + call $~lib/rt/purerc/__release + local.get $1 + ) + (func $std/typedarray/testArrayReverse<~lib/typedarray/Int8Array,i8> (; 356 ;) (type $FUNCSIG$v) + (local $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + global.get $std/typedarray/testArrayReverseValues + call $~lib/rt/purerc/__retain + local.set $0 + i32.const 0 + i32.const 9 + call $~lib/typedarray/Int8Array#constructor + local.tee $1 + call $~lib/rt/purerc/__retain + local.set $2 + i32.const 0 + i32.const 9 + call $~lib/typedarray/Int8Array#constructor + local.tee $3 + call $~lib/rt/purerc/__retain + local.set $4 + i32.const 0 + local.set $5 + block $break|0 + i32.const 0 + local.set $5 + loop $repeat|0 + local.get $5 + i32.const 9 + i32.lt_s + i32.eqz + br_if $break|0 + local.get $2 + local.get $5 + local.get $0 + local.get $5 + call $~lib/array/Array#__get + i32.const 24 + i32.shl + i32.const 24 + i32.shr_s + call $~lib/typedarray/Int8Array#__set + local.get $4 + local.get $5 + local.get $0 + local.get $5 + call $~lib/array/Array#__get + i32.const 24 + i32.shl + i32.const 24 + i32.shr_s + call $~lib/typedarray/Int8Array#__set + local.get $5 + i32.const 1 + i32.add + local.set $5 + br $repeat|0 + unreachable + end + unreachable + end + local.get $2 + call $~lib/typedarray/Int8Array#reverse + call $~lib/rt/purerc/__release + block $break|1 + i32.const 0 + local.set $5 + loop $repeat|1 + local.get $5 + i32.const 9 + i32.lt_s + i32.eqz + br_if $break|1 + local.get $2 + local.get $5 + call $~lib/typedarray/Int8Array#__get + local.get $0 + i32.const 8 + local.get $5 + i32.sub + call $~lib/array/Array#__get + i32.const 24 + i32.shl + i32.const 24 + i32.shr_s + i32.eq + i32.eqz + if + i32.const 1480 + i32.const 24 + i32.const 460 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $5 + i32.const 1 + i32.add + local.set $5 + br $repeat|1 + unreachable + end + unreachable + end + local.get $4 + i32.const 4 + i32.const 8 + call $~lib/typedarray/Int8Array#subarray + local.tee $6 + call $~lib/typedarray/Int8Array#reverse + local.set $7 + local.get $7 + i32.const 0 + call $~lib/typedarray/Int8Array#__get + i32.const 8 + i32.eq + i32.eqz + if + i32.const 1568 + i32.const 24 + i32.const 465 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $7 + i32.const 1 + call $~lib/typedarray/Int8Array#__get + i32.const 7 + i32.eq + i32.eqz + if + i32.const 1568 + i32.const 24 + i32.const 466 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $7 + i32.const 2 + call $~lib/typedarray/Int8Array#__get + i32.const 6 + i32.eq + i32.eqz + if + i32.const 1568 + i32.const 24 + i32.const 467 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $7 + i32.const 3 + call $~lib/typedarray/Int8Array#__get + i32.const 5 + i32.eq + i32.eqz + if + i32.const 1568 + i32.const 24 + i32.const 468 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $1 + call $~lib/rt/purerc/__release + local.get $3 + call $~lib/rt/purerc/__release + local.get $6 + call $~lib/rt/purerc/__release + local.get $0 + call $~lib/rt/purerc/__release + local.get $2 + call $~lib/rt/purerc/__release + local.get $4 + call $~lib/rt/purerc/__release + local.get $7 + call $~lib/rt/purerc/__release + ) + (func $~lib/typedarray/Uint8Array#reverse (; 357 ;) (type $FUNCSIG$ii) (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) + block $~lib/typedarray/REVERSE<~lib/typedarray/Uint8Array,u8>|inlined.0 (result i32) + local.get $0 + call $~lib/rt/purerc/__retain + local.set $1 + local.get $1 + i32.load offset=4 + local.set $2 + block $break|0 + block + i32.const 0 + local.set $3 + local.get $1 + call $~lib/typedarray/Uint8Array#get:length + i32.const 1 + i32.sub + local.set $4 + end + loop $repeat|0 + local.get $3 + local.get $4 + i32.lt_s + i32.eqz + br_if $break|0 + local.get $2 + local.get $3 + i32.const 0 + i32.shl + i32.add + local.set $5 + local.get $2 + local.get $4 + i32.const 0 + i32.shl + i32.add + local.set $6 + local.get $5 + i32.load8_u + local.set $7 + local.get $5 + local.get $6 + i32.load8_u + i32.store8 + local.get $6 + local.get $7 + i32.store8 + block + local.get $3 + i32.const 1 + i32.add + local.set $3 + local.get $4 + i32.const 1 + i32.sub + local.set $4 + end + br $repeat|0 + unreachable + end + unreachable + end + local.get $1 + end + local.tee $2 + call $~lib/rt/purerc/__retain + local.set $1 + local.get $2 + call $~lib/rt/purerc/__release + local.get $1 + ) + (func $~lib/typedarray/Uint8Array#subarray (; 358 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + block $~lib/typedarray/SUBARRAY<~lib/typedarray/Uint8Array,u8>|inlined.0 (result i32) + local.get $0 + call $~lib/rt/purerc/__retain + local.set $5 + local.get $1 + local.set $4 + local.get $2 + local.set $3 + local.get $5 + call $~lib/typedarray/Uint8Array#get:length + local.set $6 + local.get $4 + i32.const 0 + i32.lt_s + if + local.get $6 + local.get $4 + i32.add + local.tee $7 + i32.const 0 + local.tee $8 + local.get $7 + local.get $8 + i32.gt_s + select + local.set $4 + else + local.get $4 + local.tee $7 + local.get $6 + local.tee $8 + local.get $7 + local.get $8 + i32.lt_s + select + local.set $4 + end + local.get $3 + i32.const 0 + i32.lt_s + if + local.get $6 + local.get $3 + i32.add + local.tee $7 + local.get $4 + local.tee $8 + local.get $7 + local.get $8 + i32.gt_s + select + local.set $3 + else + local.get $3 + local.tee $7 + local.get $6 + local.tee $8 + local.get $7 + local.get $8 + i32.lt_s + select + local.tee $7 + local.get $4 + local.tee $8 + local.get $7 + local.get $8 + i32.gt_s + select + local.set $3 + end + i32.const 12 + i32.const 18 + call $~lib/rt/tlsf/__alloc + local.set $7 + local.get $7 + local.tee $8 + local.get $5 + i32.load + local.get $8 + i32.load + call $~lib/rt/purerc/__retainRelease + i32.store + local.get $7 + local.get $5 + i32.load offset=4 + local.get $4 + i32.const 0 + i32.shl + i32.add + i32.store offset=4 + local.get $7 + local.get $3 + local.get $4 + i32.sub + i32.const 0 + i32.shl + i32.store offset=8 + local.get $7 + call $~lib/rt/purerc/__retain + local.set $8 + local.get $5 + call $~lib/rt/purerc/__release + local.get $8 + end + local.tee $7 + call $~lib/rt/purerc/__retain + local.set $6 + local.get $7 + call $~lib/rt/purerc/__release + local.get $6 + ) + (func $std/typedarray/testArrayReverse<~lib/typedarray/Uint8Array,u8> (; 359 ;) (type $FUNCSIG$v) + (local $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + global.get $std/typedarray/testArrayReverseValues + call $~lib/rt/purerc/__retain + local.set $0 + i32.const 0 + i32.const 9 + call $~lib/typedarray/Uint8Array#constructor + local.tee $1 + call $~lib/rt/purerc/__retain + local.set $2 + i32.const 0 + i32.const 9 + call $~lib/typedarray/Uint8Array#constructor + local.tee $3 + call $~lib/rt/purerc/__retain + local.set $4 + i32.const 0 + local.set $5 + block $break|0 + i32.const 0 + local.set $5 + loop $repeat|0 + local.get $5 + i32.const 9 + i32.lt_s + i32.eqz + br_if $break|0 + local.get $2 + local.get $5 + local.get $0 + local.get $5 + call $~lib/array/Array#__get + i32.const 255 + i32.and + call $~lib/typedarray/Uint8Array#__set + local.get $4 + local.get $5 + local.get $0 + local.get $5 + call $~lib/array/Array#__get + i32.const 255 + i32.and + call $~lib/typedarray/Uint8Array#__set + local.get $5 + i32.const 1 + i32.add + local.set $5 + br $repeat|0 + unreachable + end + unreachable + end + local.get $2 + call $~lib/typedarray/Uint8Array#reverse + call $~lib/rt/purerc/__release + block $break|1 + i32.const 0 + local.set $5 + loop $repeat|1 + local.get $5 + i32.const 9 + i32.lt_s + i32.eqz + br_if $break|1 + local.get $2 + local.get $5 + call $~lib/typedarray/Uint8Array#__get + local.get $0 + i32.const 8 + local.get $5 + i32.sub + call $~lib/array/Array#__get + i32.const 255 + i32.and + i32.eq + i32.eqz + if + i32.const 1480 + i32.const 24 + i32.const 460 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $5 + i32.const 1 + i32.add + local.set $5 + br $repeat|1 + unreachable + end + unreachable + end + local.get $4 + i32.const 4 + i32.const 8 + call $~lib/typedarray/Uint8Array#subarray + local.tee $6 + call $~lib/typedarray/Uint8Array#reverse + local.set $7 + local.get $7 + i32.const 0 + call $~lib/typedarray/Uint8Array#__get + i32.const 8 + i32.eq + i32.eqz + if + i32.const 1568 + i32.const 24 + i32.const 465 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $7 + i32.const 1 + call $~lib/typedarray/Uint8Array#__get + i32.const 7 + i32.eq + i32.eqz + if + i32.const 1568 + i32.const 24 + i32.const 466 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $7 + i32.const 2 + call $~lib/typedarray/Uint8Array#__get + i32.const 6 + i32.eq + i32.eqz + if + i32.const 1568 + i32.const 24 + i32.const 467 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $7 + i32.const 3 + call $~lib/typedarray/Uint8Array#__get + i32.const 5 + i32.eq + i32.eqz + if + i32.const 1568 + i32.const 24 + i32.const 468 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $1 + call $~lib/rt/purerc/__release + local.get $3 + call $~lib/rt/purerc/__release + local.get $6 + call $~lib/rt/purerc/__release + local.get $0 + call $~lib/rt/purerc/__release + local.get $2 + call $~lib/rt/purerc/__release + local.get $4 + call $~lib/rt/purerc/__release + local.get $7 + call $~lib/rt/purerc/__release + ) + (func $~lib/typedarray/Uint8ClampedArray#reverse (; 360 ;) (type $FUNCSIG$ii) (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) + block $~lib/typedarray/REVERSE<~lib/typedarray/Uint8ClampedArray,u8>|inlined.0 (result i32) + local.get $0 + call $~lib/rt/purerc/__retain + local.set $1 + local.get $1 + i32.load offset=4 + local.set $2 + block $break|0 + block + i32.const 0 + local.set $3 + local.get $1 + call $~lib/typedarray/Uint8ClampedArray#get:length + i32.const 1 + i32.sub + local.set $4 + end + loop $repeat|0 + local.get $3 + local.get $4 + i32.lt_s + i32.eqz + br_if $break|0 + local.get $2 + local.get $3 + i32.const 0 + i32.shl + i32.add + local.set $5 + local.get $2 + local.get $4 + i32.const 0 + i32.shl + i32.add + local.set $6 + local.get $5 + i32.load8_u + local.set $7 + local.get $5 + local.get $6 + i32.load8_u + i32.store8 + local.get $6 + local.get $7 + i32.store8 + block + local.get $3 + i32.const 1 + i32.add + local.set $3 + local.get $4 + i32.const 1 + i32.sub + local.set $4 + end + br $repeat|0 + unreachable + end + unreachable + end + local.get $1 + end + local.tee $2 + call $~lib/rt/purerc/__retain + local.set $1 + local.get $2 + call $~lib/rt/purerc/__release + local.get $1 + ) + (func $~lib/typedarray/Uint8ClampedArray#subarray (; 361 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + block $~lib/typedarray/SUBARRAY<~lib/typedarray/Uint8ClampedArray,u8>|inlined.0 (result i32) + local.get $0 + call $~lib/rt/purerc/__retain + local.set $5 + local.get $1 + local.set $4 + local.get $2 + local.set $3 + local.get $5 + call $~lib/typedarray/Uint8ClampedArray#get:length + local.set $6 + local.get $4 + i32.const 0 + i32.lt_s + if + local.get $6 + local.get $4 + i32.add + local.tee $7 + i32.const 0 + local.tee $8 + local.get $7 + local.get $8 + i32.gt_s + select + local.set $4 + else + local.get $4 + local.tee $7 + local.get $6 + local.tee $8 + local.get $7 + local.get $8 + i32.lt_s + select + local.set $4 + end + local.get $3 + i32.const 0 + i32.lt_s + if + local.get $6 + local.get $3 + i32.add + local.tee $7 + local.get $4 + local.tee $8 + local.get $7 + local.get $8 + i32.gt_s + select + local.set $3 + else + local.get $3 + local.tee $7 + local.get $6 + local.tee $8 + local.get $7 + local.get $8 + i32.lt_s + select + local.tee $7 + local.get $4 + local.tee $8 + local.get $7 + local.get $8 + i32.gt_s + select + local.set $3 + end + i32.const 12 + i32.const 19 + call $~lib/rt/tlsf/__alloc + local.set $7 + local.get $7 + local.tee $8 + local.get $5 + i32.load + local.get $8 + i32.load + call $~lib/rt/purerc/__retainRelease + i32.store + local.get $7 + local.get $5 + i32.load offset=4 + local.get $4 + i32.const 0 + i32.shl + i32.add + i32.store offset=4 + local.get $7 + local.get $3 + local.get $4 + i32.sub + i32.const 0 + i32.shl + i32.store offset=8 + local.get $7 + call $~lib/rt/purerc/__retain + local.set $8 + local.get $5 + call $~lib/rt/purerc/__release + local.get $8 + end + local.tee $7 + call $~lib/rt/purerc/__retain + local.set $6 + local.get $7 + call $~lib/rt/purerc/__release + local.get $6 + ) + (func $std/typedarray/testArrayReverse<~lib/typedarray/Uint8ClampedArray,u8> (; 362 ;) (type $FUNCSIG$v) + (local $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + global.get $std/typedarray/testArrayReverseValues + call $~lib/rt/purerc/__retain + local.set $0 + i32.const 0 + i32.const 9 + call $~lib/typedarray/Uint8ClampedArray#constructor + local.tee $1 + call $~lib/rt/purerc/__retain + local.set $2 + i32.const 0 + i32.const 9 + call $~lib/typedarray/Uint8ClampedArray#constructor + local.tee $3 + call $~lib/rt/purerc/__retain + local.set $4 + i32.const 0 + local.set $5 + block $break|0 + i32.const 0 + local.set $5 + loop $repeat|0 + local.get $5 + i32.const 9 + i32.lt_s + i32.eqz + br_if $break|0 + local.get $2 + local.get $5 + local.get $0 + local.get $5 + call $~lib/array/Array#__get + i32.const 255 + i32.and + call $~lib/typedarray/Uint8ClampedArray#__set + local.get $4 + local.get $5 + local.get $0 + local.get $5 + call $~lib/array/Array#__get + i32.const 255 + i32.and + call $~lib/typedarray/Uint8ClampedArray#__set + local.get $5 + i32.const 1 + i32.add + local.set $5 + br $repeat|0 + unreachable + end + unreachable + end + local.get $2 + call $~lib/typedarray/Uint8ClampedArray#reverse + call $~lib/rt/purerc/__release + block $break|1 + i32.const 0 + local.set $5 + loop $repeat|1 + local.get $5 + i32.const 9 + i32.lt_s + i32.eqz + br_if $break|1 + local.get $2 + local.get $5 + call $~lib/typedarray/Uint8ClampedArray#__get + local.get $0 + i32.const 8 + local.get $5 + i32.sub + call $~lib/array/Array#__get + i32.const 255 + i32.and + i32.eq + i32.eqz + if + i32.const 1480 + i32.const 24 + i32.const 460 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $5 + i32.const 1 + i32.add + local.set $5 + br $repeat|1 + unreachable + end + unreachable + end + local.get $4 + i32.const 4 + i32.const 8 + call $~lib/typedarray/Uint8ClampedArray#subarray + local.tee $6 + call $~lib/typedarray/Uint8ClampedArray#reverse + local.set $7 + local.get $7 + i32.const 0 + call $~lib/typedarray/Uint8ClampedArray#__get + i32.const 8 + i32.eq + i32.eqz + if + i32.const 1568 + i32.const 24 + i32.const 465 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $7 + i32.const 1 + call $~lib/typedarray/Uint8ClampedArray#__get + i32.const 7 + i32.eq + i32.eqz + if + i32.const 1568 + i32.const 24 + i32.const 466 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $7 + i32.const 2 + call $~lib/typedarray/Uint8ClampedArray#__get + i32.const 6 + i32.eq + i32.eqz + if + i32.const 1568 + i32.const 24 + i32.const 467 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $7 + i32.const 3 + call $~lib/typedarray/Uint8ClampedArray#__get + i32.const 5 + i32.eq + i32.eqz + if + i32.const 1568 + i32.const 24 + i32.const 468 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $1 + call $~lib/rt/purerc/__release + local.get $3 + call $~lib/rt/purerc/__release + local.get $6 + call $~lib/rt/purerc/__release + local.get $0 + call $~lib/rt/purerc/__release + local.get $2 + call $~lib/rt/purerc/__release + local.get $4 + call $~lib/rt/purerc/__release + local.get $7 + call $~lib/rt/purerc/__release + ) + (func $~lib/typedarray/Int16Array#reverse (; 363 ;) (type $FUNCSIG$ii) (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) + block $~lib/typedarray/REVERSE<~lib/typedarray/Int16Array,i16>|inlined.0 (result i32) + local.get $0 + call $~lib/rt/purerc/__retain + local.set $1 + local.get $1 + i32.load offset=4 + local.set $2 + block $break|0 + block + i32.const 0 + local.set $3 + local.get $1 + call $~lib/typedarray/Int16Array#get:length + i32.const 1 + i32.sub + local.set $4 + end + loop $repeat|0 + local.get $3 + local.get $4 + i32.lt_s + i32.eqz + br_if $break|0 + local.get $2 + local.get $3 + i32.const 1 + i32.shl + i32.add + local.set $5 + local.get $2 + local.get $4 + i32.const 1 + i32.shl + i32.add + local.set $6 + local.get $5 + i32.load16_s + local.set $7 + local.get $5 + local.get $6 + i32.load16_s + i32.store16 + local.get $6 + local.get $7 + i32.store16 + block + local.get $3 + i32.const 1 + i32.add + local.set $3 + local.get $4 + i32.const 1 + i32.sub + local.set $4 + end + br $repeat|0 + unreachable + end + unreachable + end + local.get $1 + end + local.tee $2 + call $~lib/rt/purerc/__retain + local.set $1 + local.get $2 + call $~lib/rt/purerc/__release + local.get $1 + ) + (func $~lib/typedarray/Int16Array#subarray (; 364 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + block $~lib/typedarray/SUBARRAY<~lib/typedarray/Int16Array,i16>|inlined.0 (result i32) + local.get $0 + call $~lib/rt/purerc/__retain + local.set $5 + local.get $1 + local.set $4 + local.get $2 + local.set $3 + local.get $5 + call $~lib/typedarray/Int16Array#get:length + local.set $6 + local.get $4 + i32.const 0 + i32.lt_s + if + local.get $6 + local.get $4 + i32.add + local.tee $7 + i32.const 0 + local.tee $8 + local.get $7 + local.get $8 + i32.gt_s + select + local.set $4 + else + local.get $4 + local.tee $7 + local.get $6 + local.tee $8 + local.get $7 + local.get $8 + i32.lt_s + select + local.set $4 + end + local.get $3 + i32.const 0 + i32.lt_s + if + local.get $6 + local.get $3 + i32.add + local.tee $7 + local.get $4 + local.tee $8 + local.get $7 + local.get $8 + i32.gt_s + select + local.set $3 + else + local.get $3 + local.tee $7 + local.get $6 + local.tee $8 + local.get $7 + local.get $8 + i32.lt_s + select + local.tee $7 + local.get $4 + local.tee $8 + local.get $7 + local.get $8 + i32.gt_s + select + local.set $3 + end + i32.const 12 + i32.const 20 + call $~lib/rt/tlsf/__alloc + local.set $7 + local.get $7 + local.tee $8 + local.get $5 + i32.load + local.get $8 + i32.load + call $~lib/rt/purerc/__retainRelease + i32.store + local.get $7 + local.get $5 + i32.load offset=4 + local.get $4 + i32.const 1 + i32.shl + i32.add + i32.store offset=4 + local.get $7 + local.get $3 + local.get $4 + i32.sub + i32.const 1 + i32.shl + i32.store offset=8 + local.get $7 + call $~lib/rt/purerc/__retain + local.set $8 + local.get $5 + call $~lib/rt/purerc/__release + local.get $8 + end + local.tee $7 + call $~lib/rt/purerc/__retain + local.set $6 + local.get $7 + call $~lib/rt/purerc/__release + local.get $6 + ) + (func $std/typedarray/testArrayReverse<~lib/typedarray/Int16Array,i16> (; 365 ;) (type $FUNCSIG$v) + (local $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + global.get $std/typedarray/testArrayReverseValues + call $~lib/rt/purerc/__retain + local.set $0 + i32.const 0 + i32.const 9 + call $~lib/typedarray/Int16Array#constructor + local.tee $1 + call $~lib/rt/purerc/__retain + local.set $2 + i32.const 0 + i32.const 9 + call $~lib/typedarray/Int16Array#constructor + local.tee $3 + call $~lib/rt/purerc/__retain + local.set $4 + i32.const 0 + local.set $5 + block $break|0 + i32.const 0 + local.set $5 + loop $repeat|0 + local.get $5 + i32.const 9 + i32.lt_s + i32.eqz + br_if $break|0 + local.get $2 + local.get $5 + local.get $0 + local.get $5 + call $~lib/array/Array#__get + i32.const 16 + i32.shl + i32.const 16 + i32.shr_s + call $~lib/typedarray/Int16Array#__set + local.get $4 + local.get $5 + local.get $0 + local.get $5 + call $~lib/array/Array#__get + i32.const 16 + i32.shl + i32.const 16 + i32.shr_s + call $~lib/typedarray/Int16Array#__set + local.get $5 + i32.const 1 + i32.add + local.set $5 + br $repeat|0 + unreachable + end + unreachable + end + local.get $2 + call $~lib/typedarray/Int16Array#reverse + call $~lib/rt/purerc/__release + block $break|1 + i32.const 0 + local.set $5 + loop $repeat|1 + local.get $5 + i32.const 9 + i32.lt_s + i32.eqz + br_if $break|1 + local.get $2 + local.get $5 + call $~lib/typedarray/Int16Array#__get + local.get $0 + i32.const 8 + local.get $5 + i32.sub + call $~lib/array/Array#__get + i32.const 16 + i32.shl + i32.const 16 + i32.shr_s + i32.eq + i32.eqz + if + i32.const 1480 + i32.const 24 + i32.const 460 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $5 + i32.const 1 + i32.add + local.set $5 + br $repeat|1 + unreachable + end + unreachable + end + local.get $4 + i32.const 4 + i32.const 8 + call $~lib/typedarray/Int16Array#subarray + local.tee $6 + call $~lib/typedarray/Int16Array#reverse + local.set $7 + local.get $7 + i32.const 0 + call $~lib/typedarray/Int16Array#__get + i32.const 8 + i32.eq + i32.eqz + if + i32.const 1568 + i32.const 24 + i32.const 465 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $7 + i32.const 1 + call $~lib/typedarray/Int16Array#__get + i32.const 7 + i32.eq + i32.eqz + if + i32.const 1568 + i32.const 24 + i32.const 466 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $7 + i32.const 2 + call $~lib/typedarray/Int16Array#__get + i32.const 6 + i32.eq + i32.eqz + if + i32.const 1568 + i32.const 24 + i32.const 467 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $7 + i32.const 3 + call $~lib/typedarray/Int16Array#__get + i32.const 5 + i32.eq + i32.eqz + if + i32.const 1568 + i32.const 24 + i32.const 468 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $1 + call $~lib/rt/purerc/__release + local.get $3 + call $~lib/rt/purerc/__release + local.get $6 + call $~lib/rt/purerc/__release + local.get $0 + call $~lib/rt/purerc/__release + local.get $2 + call $~lib/rt/purerc/__release + local.get $4 + call $~lib/rt/purerc/__release + local.get $7 + call $~lib/rt/purerc/__release + ) + (func $~lib/typedarray/Uint16Array#reverse (; 366 ;) (type $FUNCSIG$ii) (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) + block $~lib/typedarray/REVERSE<~lib/typedarray/Uint16Array,u16>|inlined.0 (result i32) + local.get $0 + call $~lib/rt/purerc/__retain + local.set $1 + local.get $1 + i32.load offset=4 + local.set $2 + block $break|0 + block + i32.const 0 + local.set $3 + local.get $1 + call $~lib/typedarray/Uint16Array#get:length + i32.const 1 + i32.sub + local.set $4 + end + loop $repeat|0 + local.get $3 + local.get $4 + i32.lt_s + i32.eqz + br_if $break|0 + local.get $2 + local.get $3 + i32.const 1 + i32.shl + i32.add + local.set $5 + local.get $2 + local.get $4 + i32.const 1 + i32.shl + i32.add + local.set $6 + local.get $5 + i32.load16_u + local.set $7 + local.get $5 + local.get $6 + i32.load16_u + i32.store16 + local.get $6 + local.get $7 + i32.store16 + block + local.get $3 + i32.const 1 + i32.add + local.set $3 + local.get $4 + i32.const 1 + i32.sub + local.set $4 + end + br $repeat|0 + unreachable + end + unreachable + end + local.get $1 + end + local.tee $2 + call $~lib/rt/purerc/__retain + local.set $1 + local.get $2 + call $~lib/rt/purerc/__release + local.get $1 + ) + (func $~lib/typedarray/Uint16Array#subarray (; 367 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + block $~lib/typedarray/SUBARRAY<~lib/typedarray/Uint16Array,u16>|inlined.0 (result i32) + local.get $0 + call $~lib/rt/purerc/__retain + local.set $5 + local.get $1 + local.set $4 + local.get $2 + local.set $3 + local.get $5 + call $~lib/typedarray/Uint16Array#get:length + local.set $6 + local.get $4 + i32.const 0 + i32.lt_s + if + local.get $6 + local.get $4 + i32.add + local.tee $7 + i32.const 0 + local.tee $8 + local.get $7 + local.get $8 + i32.gt_s + select + local.set $4 + else + local.get $4 + local.tee $7 + local.get $6 + local.tee $8 + local.get $7 + local.get $8 + i32.lt_s + select + local.set $4 + end + local.get $3 + i32.const 0 + i32.lt_s + if + local.get $6 + local.get $3 + i32.add + local.tee $7 + local.get $4 + local.tee $8 + local.get $7 + local.get $8 + i32.gt_s + select + local.set $3 + else + local.get $3 + local.tee $7 + local.get $6 + local.tee $8 + local.get $7 + local.get $8 + i32.lt_s + select + local.tee $7 + local.get $4 + local.tee $8 + local.get $7 + local.get $8 + i32.gt_s + select + local.set $3 + end + i32.const 12 + i32.const 21 + call $~lib/rt/tlsf/__alloc + local.set $7 + local.get $7 + local.tee $8 + local.get $5 + i32.load + local.get $8 + i32.load + call $~lib/rt/purerc/__retainRelease + i32.store + local.get $7 + local.get $5 + i32.load offset=4 + local.get $4 + i32.const 1 + i32.shl + i32.add + i32.store offset=4 + local.get $7 + local.get $3 + local.get $4 + i32.sub + i32.const 1 + i32.shl + i32.store offset=8 + local.get $7 + call $~lib/rt/purerc/__retain + local.set $8 + local.get $5 + call $~lib/rt/purerc/__release + local.get $8 + end + local.tee $7 + call $~lib/rt/purerc/__retain + local.set $6 + local.get $7 + call $~lib/rt/purerc/__release + local.get $6 + ) + (func $std/typedarray/testArrayReverse<~lib/typedarray/Uint16Array,u16> (; 368 ;) (type $FUNCSIG$v) + (local $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + global.get $std/typedarray/testArrayReverseValues + call $~lib/rt/purerc/__retain + local.set $0 + i32.const 0 + i32.const 9 + call $~lib/typedarray/Uint16Array#constructor + local.tee $1 + call $~lib/rt/purerc/__retain + local.set $2 + i32.const 0 + i32.const 9 + call $~lib/typedarray/Uint16Array#constructor + local.tee $3 + call $~lib/rt/purerc/__retain + local.set $4 + i32.const 0 + local.set $5 + block $break|0 + i32.const 0 + local.set $5 + loop $repeat|0 + local.get $5 + i32.const 9 + i32.lt_s + i32.eqz + br_if $break|0 + local.get $2 + local.get $5 + local.get $0 + local.get $5 + call $~lib/array/Array#__get + i32.const 65535 + i32.and + call $~lib/typedarray/Uint16Array#__set + local.get $4 + local.get $5 + local.get $0 + local.get $5 + call $~lib/array/Array#__get + i32.const 65535 + i32.and + call $~lib/typedarray/Uint16Array#__set + local.get $5 + i32.const 1 + i32.add + local.set $5 + br $repeat|0 + unreachable + end + unreachable + end + local.get $2 + call $~lib/typedarray/Uint16Array#reverse + call $~lib/rt/purerc/__release + block $break|1 + i32.const 0 + local.set $5 + loop $repeat|1 + local.get $5 + i32.const 9 + i32.lt_s + i32.eqz + br_if $break|1 + local.get $2 + local.get $5 + call $~lib/typedarray/Uint16Array#__get + local.get $0 + i32.const 8 + local.get $5 + i32.sub + call $~lib/array/Array#__get + i32.const 65535 + i32.and + i32.eq + i32.eqz + if + i32.const 1480 + i32.const 24 + i32.const 460 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $5 + i32.const 1 + i32.add + local.set $5 + br $repeat|1 + unreachable + end + unreachable + end + local.get $4 + i32.const 4 + i32.const 8 + call $~lib/typedarray/Uint16Array#subarray + local.tee $6 + call $~lib/typedarray/Uint16Array#reverse + local.set $7 + local.get $7 + i32.const 0 + call $~lib/typedarray/Uint16Array#__get + i32.const 8 + i32.eq + i32.eqz + if + i32.const 1568 + i32.const 24 + i32.const 465 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $7 + i32.const 1 + call $~lib/typedarray/Uint16Array#__get + i32.const 7 + i32.eq + i32.eqz + if + i32.const 1568 + i32.const 24 + i32.const 466 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $7 + i32.const 2 + call $~lib/typedarray/Uint16Array#__get + i32.const 6 + i32.eq + i32.eqz + if + i32.const 1568 + i32.const 24 + i32.const 467 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $7 + i32.const 3 + call $~lib/typedarray/Uint16Array#__get + i32.const 5 + i32.eq + i32.eqz + if + i32.const 1568 + i32.const 24 + i32.const 468 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $1 + call $~lib/rt/purerc/__release + local.get $3 + call $~lib/rt/purerc/__release + local.get $6 + call $~lib/rt/purerc/__release + local.get $0 + call $~lib/rt/purerc/__release + local.get $2 + call $~lib/rt/purerc/__release + local.get $4 + call $~lib/rt/purerc/__release + local.get $7 + call $~lib/rt/purerc/__release + ) + (func $~lib/typedarray/Int32Array#reverse (; 369 ;) (type $FUNCSIG$ii) (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) + block $~lib/typedarray/REVERSE<~lib/typedarray/Int32Array,i32>|inlined.0 (result i32) + local.get $0 + call $~lib/rt/purerc/__retain + local.set $1 + local.get $1 + i32.load offset=4 + local.set $2 + block $break|0 + block + i32.const 0 + local.set $3 + local.get $1 + call $~lib/typedarray/Int32Array#get:length + i32.const 1 + i32.sub + local.set $4 + end + loop $repeat|0 + local.get $3 + local.get $4 + i32.lt_s + i32.eqz + br_if $break|0 + local.get $2 + local.get $3 + i32.const 2 + i32.shl + i32.add + local.set $5 + local.get $2 + local.get $4 + i32.const 2 + i32.shl + i32.add + local.set $6 + local.get $5 + i32.load + local.set $7 + local.get $5 + local.get $6 + i32.load + i32.store + local.get $6 + local.get $7 + i32.store + block + local.get $3 + i32.const 1 + i32.add + local.set $3 + local.get $4 + i32.const 1 + i32.sub + local.set $4 + end + br $repeat|0 + unreachable + end + unreachable + end + local.get $1 + end + local.tee $2 + call $~lib/rt/purerc/__retain + local.set $1 + local.get $2 + call $~lib/rt/purerc/__release + local.get $1 + ) + (func $std/typedarray/testArrayReverse<~lib/typedarray/Int32Array,i32> (; 370 ;) (type $FUNCSIG$v) + (local $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + global.get $std/typedarray/testArrayReverseValues + call $~lib/rt/purerc/__retain + local.set $0 + i32.const 0 + i32.const 9 + call $~lib/typedarray/Int32Array#constructor + local.tee $1 + call $~lib/rt/purerc/__retain + local.set $2 + i32.const 0 + i32.const 9 + call $~lib/typedarray/Int32Array#constructor + local.tee $3 + call $~lib/rt/purerc/__retain + local.set $4 + i32.const 0 + local.set $5 + block $break|0 + i32.const 0 + local.set $5 + loop $repeat|0 + local.get $5 + i32.const 9 + i32.lt_s + i32.eqz + br_if $break|0 + local.get $2 + local.get $5 + local.get $0 + local.get $5 + call $~lib/array/Array#__get + call $~lib/typedarray/Int32Array#__set + local.get $4 + local.get $5 + local.get $0 + local.get $5 + call $~lib/array/Array#__get + call $~lib/typedarray/Int32Array#__set + local.get $5 + i32.const 1 + i32.add + local.set $5 + br $repeat|0 + unreachable + end + unreachable + end + local.get $2 + call $~lib/typedarray/Int32Array#reverse + call $~lib/rt/purerc/__release + block $break|1 + i32.const 0 + local.set $5 + loop $repeat|1 + local.get $5 + i32.const 9 + i32.lt_s + i32.eqz + br_if $break|1 + local.get $2 + local.get $5 + call $~lib/typedarray/Int32Array#__get + local.get $0 + i32.const 8 + local.get $5 + i32.sub + call $~lib/array/Array#__get + i32.eq + i32.eqz + if + i32.const 1480 + i32.const 24 + i32.const 460 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $5 + i32.const 1 + i32.add + local.set $5 + br $repeat|1 + unreachable + end + unreachable + end + local.get $4 + i32.const 4 + i32.const 8 + call $~lib/typedarray/Int32Array#subarray + local.tee $6 + call $~lib/typedarray/Int32Array#reverse + local.set $7 + local.get $7 + i32.const 0 + call $~lib/typedarray/Int32Array#__get + i32.const 8 + i32.eq + i32.eqz + if + i32.const 1568 + i32.const 24 + i32.const 465 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $7 + i32.const 1 + call $~lib/typedarray/Int32Array#__get + i32.const 7 + i32.eq + i32.eqz + if + i32.const 1568 + i32.const 24 + i32.const 466 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $7 + i32.const 2 + call $~lib/typedarray/Int32Array#__get + i32.const 6 + i32.eq + i32.eqz + if + i32.const 1568 + i32.const 24 + i32.const 467 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $7 + i32.const 3 + call $~lib/typedarray/Int32Array#__get + i32.const 5 + i32.eq + i32.eqz + if + i32.const 1568 + i32.const 24 + i32.const 468 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $1 + call $~lib/rt/purerc/__release + local.get $3 + call $~lib/rt/purerc/__release + local.get $6 + call $~lib/rt/purerc/__release + local.get $0 + call $~lib/rt/purerc/__release + local.get $2 + call $~lib/rt/purerc/__release + local.get $4 + call $~lib/rt/purerc/__release + local.get $7 + call $~lib/rt/purerc/__release + ) + (func $~lib/typedarray/Uint32Array#reverse (; 371 ;) (type $FUNCSIG$ii) (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) + block $~lib/typedarray/REVERSE<~lib/typedarray/Uint32Array,u32>|inlined.0 (result i32) + local.get $0 + call $~lib/rt/purerc/__retain + local.set $1 + local.get $1 + i32.load offset=4 + local.set $2 + block $break|0 + block + i32.const 0 + local.set $3 + local.get $1 + call $~lib/typedarray/Uint32Array#get:length + i32.const 1 + i32.sub + local.set $4 + end + loop $repeat|0 + local.get $3 + local.get $4 + i32.lt_s + i32.eqz + br_if $break|0 + local.get $2 + local.get $3 + i32.const 2 + i32.shl + i32.add + local.set $5 + local.get $2 + local.get $4 + i32.const 2 + i32.shl + i32.add + local.set $6 + local.get $5 + i32.load + local.set $7 + local.get $5 + local.get $6 + i32.load + i32.store + local.get $6 + local.get $7 + i32.store + block + local.get $3 + i32.const 1 + i32.add + local.set $3 + local.get $4 + i32.const 1 + i32.sub + local.set $4 + end + br $repeat|0 + unreachable + end + unreachable + end + local.get $1 + end + local.tee $2 + call $~lib/rt/purerc/__retain + local.set $1 + local.get $2 + call $~lib/rt/purerc/__release + local.get $1 + ) + (func $~lib/typedarray/Uint32Array#subarray (; 372 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + block $~lib/typedarray/SUBARRAY<~lib/typedarray/Uint32Array,u32>|inlined.0 (result i32) + local.get $0 + call $~lib/rt/purerc/__retain + local.set $5 + local.get $1 + local.set $4 + local.get $2 + local.set $3 + local.get $5 + call $~lib/typedarray/Uint32Array#get:length + local.set $6 + local.get $4 + i32.const 0 + i32.lt_s + if + local.get $6 + local.get $4 + i32.add + local.tee $7 + i32.const 0 + local.tee $8 + local.get $7 + local.get $8 + i32.gt_s + select + local.set $4 + else + local.get $4 + local.tee $7 + local.get $6 + local.tee $8 + local.get $7 + local.get $8 + i32.lt_s + select + local.set $4 + end + local.get $3 + i32.const 0 + i32.lt_s + if + local.get $6 + local.get $3 + i32.add + local.tee $7 + local.get $4 + local.tee $8 + local.get $7 + local.get $8 + i32.gt_s + select + local.set $3 + else + local.get $3 + local.tee $7 + local.get $6 + local.tee $8 + local.get $7 + local.get $8 + i32.lt_s + select + local.tee $7 + local.get $4 + local.tee $8 + local.get $7 + local.get $8 + i32.gt_s + select + local.set $3 + end + i32.const 12 + i32.const 23 + call $~lib/rt/tlsf/__alloc + local.set $7 + local.get $7 + local.tee $8 + local.get $5 + i32.load + local.get $8 + i32.load + call $~lib/rt/purerc/__retainRelease + i32.store + local.get $7 + local.get $5 + i32.load offset=4 + local.get $4 + i32.const 2 + i32.shl + i32.add + i32.store offset=4 + local.get $7 + local.get $3 + local.get $4 + i32.sub + i32.const 2 + i32.shl + i32.store offset=8 + local.get $7 + call $~lib/rt/purerc/__retain + local.set $8 + local.get $5 + call $~lib/rt/purerc/__release + local.get $8 + end + local.tee $7 + call $~lib/rt/purerc/__retain + local.set $6 + local.get $7 + call $~lib/rt/purerc/__release + local.get $6 + ) + (func $std/typedarray/testArrayReverse<~lib/typedarray/Uint32Array,u32> (; 373 ;) (type $FUNCSIG$v) + (local $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + global.get $std/typedarray/testArrayReverseValues + call $~lib/rt/purerc/__retain + local.set $0 + i32.const 0 + i32.const 9 + call $~lib/typedarray/Uint32Array#constructor + local.tee $1 + call $~lib/rt/purerc/__retain + local.set $2 + i32.const 0 + i32.const 9 + call $~lib/typedarray/Uint32Array#constructor + local.tee $3 + call $~lib/rt/purerc/__retain + local.set $4 + i32.const 0 + local.set $5 + block $break|0 + i32.const 0 + local.set $5 + loop $repeat|0 + local.get $5 + i32.const 9 + i32.lt_s + i32.eqz + br_if $break|0 + local.get $2 + local.get $5 + local.get $0 + local.get $5 + call $~lib/array/Array#__get + call $~lib/typedarray/Uint32Array#__set + local.get $4 + local.get $5 + local.get $0 + local.get $5 + call $~lib/array/Array#__get + call $~lib/typedarray/Uint32Array#__set + local.get $5 + i32.const 1 + i32.add + local.set $5 + br $repeat|0 + unreachable + end + unreachable + end + local.get $2 + call $~lib/typedarray/Uint32Array#reverse + call $~lib/rt/purerc/__release + block $break|1 + i32.const 0 + local.set $5 + loop $repeat|1 + local.get $5 + i32.const 9 + i32.lt_s + i32.eqz + br_if $break|1 + local.get $2 + local.get $5 + call $~lib/typedarray/Uint32Array#__get + local.get $0 + i32.const 8 + local.get $5 + i32.sub + call $~lib/array/Array#__get + i32.eq + i32.eqz + if + i32.const 1480 + i32.const 24 + i32.const 460 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $5 + i32.const 1 + i32.add + local.set $5 + br $repeat|1 + unreachable + end + unreachable + end + local.get $4 + i32.const 4 + i32.const 8 + call $~lib/typedarray/Uint32Array#subarray + local.tee $6 + call $~lib/typedarray/Uint32Array#reverse + local.set $7 + local.get $7 + i32.const 0 + call $~lib/typedarray/Uint32Array#__get + i32.const 8 + i32.eq + i32.eqz + if + i32.const 1568 + i32.const 24 + i32.const 465 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $7 + i32.const 1 + call $~lib/typedarray/Uint32Array#__get + i32.const 7 + i32.eq + i32.eqz + if + i32.const 1568 + i32.const 24 + i32.const 466 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $7 + i32.const 2 + call $~lib/typedarray/Uint32Array#__get + i32.const 6 + i32.eq + i32.eqz + if + i32.const 1568 + i32.const 24 + i32.const 467 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $7 + i32.const 3 + call $~lib/typedarray/Uint32Array#__get + i32.const 5 + i32.eq + i32.eqz + if + i32.const 1568 + i32.const 24 + i32.const 468 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $1 + call $~lib/rt/purerc/__release + local.get $3 + call $~lib/rt/purerc/__release + local.get $6 + call $~lib/rt/purerc/__release + local.get $0 + call $~lib/rt/purerc/__release + local.get $2 + call $~lib/rt/purerc/__release + local.get $4 + call $~lib/rt/purerc/__release + local.get $7 + call $~lib/rt/purerc/__release + ) + (func $~lib/typedarray/Int64Array#reverse (; 374 ;) (type $FUNCSIG$ii) (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 i64) + block $~lib/typedarray/REVERSE<~lib/typedarray/Int64Array,i64>|inlined.0 (result i32) + local.get $0 + call $~lib/rt/purerc/__retain + local.set $1 + local.get $1 + i32.load offset=4 + local.set $2 + block $break|0 + block + i32.const 0 + local.set $3 + local.get $1 + call $~lib/typedarray/Int64Array#get:length + i32.const 1 + i32.sub + local.set $4 + end + loop $repeat|0 + local.get $3 + local.get $4 + i32.lt_s + i32.eqz + br_if $break|0 + local.get $2 + local.get $3 + i32.const 3 + i32.shl + i32.add + local.set $5 + local.get $2 + local.get $4 + i32.const 3 + i32.shl + i32.add + local.set $6 + local.get $5 + i64.load + local.set $7 + local.get $5 + local.get $6 + i64.load + i64.store + local.get $6 + local.get $7 + i64.store + block + local.get $3 + i32.const 1 + i32.add + local.set $3 + local.get $4 + i32.const 1 + i32.sub + local.set $4 + end + br $repeat|0 + unreachable + end + unreachable + end + local.get $1 + end + local.tee $2 + call $~lib/rt/purerc/__retain + local.set $1 + local.get $2 + call $~lib/rt/purerc/__release + local.get $1 + ) + (func $~lib/typedarray/Int64Array#subarray (; 375 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + block $~lib/typedarray/SUBARRAY<~lib/typedarray/Int64Array,i64>|inlined.0 (result i32) + local.get $0 + call $~lib/rt/purerc/__retain + local.set $5 + local.get $1 + local.set $4 + local.get $2 + local.set $3 + local.get $5 + call $~lib/typedarray/Int64Array#get:length + local.set $6 + local.get $4 + i32.const 0 + i32.lt_s + if + local.get $6 + local.get $4 + i32.add + local.tee $7 + i32.const 0 + local.tee $8 + local.get $7 + local.get $8 + i32.gt_s + select + local.set $4 + else + local.get $4 + local.tee $7 + local.get $6 + local.tee $8 + local.get $7 + local.get $8 + i32.lt_s + select + local.set $4 + end + local.get $3 + i32.const 0 + i32.lt_s + if + local.get $6 + local.get $3 + i32.add + local.tee $7 + local.get $4 + local.tee $8 + local.get $7 + local.get $8 + i32.gt_s + select + local.set $3 + else + local.get $3 + local.tee $7 + local.get $6 + local.tee $8 + local.get $7 + local.get $8 + i32.lt_s + select + local.tee $7 + local.get $4 + local.tee $8 + local.get $7 + local.get $8 + i32.gt_s + select + local.set $3 + end + i32.const 12 + i32.const 24 + call $~lib/rt/tlsf/__alloc + local.set $7 + local.get $7 + local.tee $8 + local.get $5 + i32.load + local.get $8 + i32.load + call $~lib/rt/purerc/__retainRelease + i32.store + local.get $7 + local.get $5 + i32.load offset=4 + local.get $4 + i32.const 3 + i32.shl + i32.add + i32.store offset=4 + local.get $7 + local.get $3 + local.get $4 + i32.sub + i32.const 3 + i32.shl + i32.store offset=8 + local.get $7 + call $~lib/rt/purerc/__retain + local.set $8 + local.get $5 + call $~lib/rt/purerc/__release + local.get $8 + end + local.tee $7 + call $~lib/rt/purerc/__retain + local.set $6 + local.get $7 + call $~lib/rt/purerc/__release + local.get $6 + ) + (func $std/typedarray/testArrayReverse<~lib/typedarray/Int64Array,i64> (; 376 ;) (type $FUNCSIG$v) + (local $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + global.get $std/typedarray/testArrayReverseValues + call $~lib/rt/purerc/__retain + local.set $0 + i32.const 0 + i32.const 9 + call $~lib/typedarray/Int64Array#constructor + local.tee $1 + call $~lib/rt/purerc/__retain + local.set $2 + i32.const 0 + i32.const 9 + call $~lib/typedarray/Int64Array#constructor + local.tee $3 + call $~lib/rt/purerc/__retain + local.set $4 + i32.const 0 + local.set $5 + block $break|0 + i32.const 0 + local.set $5 + loop $repeat|0 + local.get $5 + i32.const 9 + i32.lt_s + i32.eqz + br_if $break|0 + local.get $2 + local.get $5 + local.get $0 + local.get $5 + call $~lib/array/Array#__get + i64.extend_i32_s + call $~lib/typedarray/Int64Array#__set + local.get $4 + local.get $5 + local.get $0 + local.get $5 + call $~lib/array/Array#__get + i64.extend_i32_s + call $~lib/typedarray/Int64Array#__set + local.get $5 + i32.const 1 + i32.add + local.set $5 + br $repeat|0 + unreachable + end + unreachable + end + local.get $2 + call $~lib/typedarray/Int64Array#reverse + call $~lib/rt/purerc/__release + block $break|1 + i32.const 0 + local.set $5 + loop $repeat|1 + local.get $5 + i32.const 9 + i32.lt_s + i32.eqz + br_if $break|1 + local.get $2 + local.get $5 + call $~lib/typedarray/Int64Array#__get + local.get $0 + i32.const 8 + local.get $5 + i32.sub + call $~lib/array/Array#__get + i64.extend_i32_s + i64.eq + i32.eqz + if + i32.const 1480 + i32.const 24 + i32.const 460 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $5 + i32.const 1 + i32.add + local.set $5 + br $repeat|1 + unreachable + end + unreachable + end + local.get $4 + i32.const 4 + i32.const 8 + call $~lib/typedarray/Int64Array#subarray + local.tee $6 + call $~lib/typedarray/Int64Array#reverse + local.set $7 + local.get $7 + i32.const 0 + call $~lib/typedarray/Int64Array#__get + i64.const 8 + i64.eq + i32.eqz + if + i32.const 1568 + i32.const 24 + i32.const 465 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $7 + i32.const 1 + call $~lib/typedarray/Int64Array#__get + i64.const 7 + i64.eq + i32.eqz + if + i32.const 1568 + i32.const 24 + i32.const 466 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $7 + i32.const 2 + call $~lib/typedarray/Int64Array#__get + i64.const 6 + i64.eq + i32.eqz + if + i32.const 1568 + i32.const 24 + i32.const 467 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $7 + i32.const 3 + call $~lib/typedarray/Int64Array#__get + i64.const 5 + i64.eq + i32.eqz + if + i32.const 1568 + i32.const 24 + i32.const 468 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $1 + call $~lib/rt/purerc/__release + local.get $3 + call $~lib/rt/purerc/__release + local.get $6 + call $~lib/rt/purerc/__release + local.get $0 + call $~lib/rt/purerc/__release + local.get $2 + call $~lib/rt/purerc/__release + local.get $4 + call $~lib/rt/purerc/__release + local.get $7 + call $~lib/rt/purerc/__release + ) + (func $~lib/typedarray/Uint64Array#reverse (; 377 ;) (type $FUNCSIG$ii) (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 i64) + block $~lib/typedarray/REVERSE<~lib/typedarray/Uint64Array,u64>|inlined.0 (result i32) + local.get $0 + call $~lib/rt/purerc/__retain + local.set $1 + local.get $1 + i32.load offset=4 + local.set $2 + block $break|0 + block + i32.const 0 + local.set $3 + local.get $1 + call $~lib/typedarray/Uint64Array#get:length + i32.const 1 + i32.sub + local.set $4 + end + loop $repeat|0 + local.get $3 + local.get $4 + i32.lt_s + i32.eqz + br_if $break|0 + local.get $2 + local.get $3 + i32.const 3 + i32.shl + i32.add + local.set $5 + local.get $2 + local.get $4 + i32.const 3 + i32.shl + i32.add + local.set $6 + local.get $5 + i64.load + local.set $7 + local.get $5 + local.get $6 + i64.load + i64.store + local.get $6 + local.get $7 + i64.store + block + local.get $3 + i32.const 1 + i32.add + local.set $3 + local.get $4 + i32.const 1 + i32.sub + local.set $4 + end + br $repeat|0 + unreachable + end + unreachable + end + local.get $1 + end + local.tee $2 + call $~lib/rt/purerc/__retain + local.set $1 + local.get $2 + call $~lib/rt/purerc/__release + local.get $1 + ) + (func $~lib/typedarray/Uint64Array#subarray (; 378 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + block $~lib/typedarray/SUBARRAY<~lib/typedarray/Uint64Array,u64>|inlined.0 (result i32) + local.get $0 + call $~lib/rt/purerc/__retain + local.set $5 + local.get $1 + local.set $4 + local.get $2 + local.set $3 + local.get $5 + call $~lib/typedarray/Uint64Array#get:length + local.set $6 + local.get $4 + i32.const 0 + i32.lt_s + if + local.get $6 + local.get $4 + i32.add + local.tee $7 + i32.const 0 + local.tee $8 + local.get $7 + local.get $8 + i32.gt_s + select + local.set $4 + else + local.get $4 + local.tee $7 + local.get $6 + local.tee $8 + local.get $7 + local.get $8 + i32.lt_s + select + local.set $4 + end + local.get $3 + i32.const 0 + i32.lt_s + if + local.get $6 + local.get $3 + i32.add + local.tee $7 + local.get $4 + local.tee $8 + local.get $7 + local.get $8 + i32.gt_s + select + local.set $3 + else + local.get $3 + local.tee $7 + local.get $6 + local.tee $8 + local.get $7 + local.get $8 + i32.lt_s + select + local.tee $7 + local.get $4 + local.tee $8 + local.get $7 + local.get $8 + i32.gt_s + select + local.set $3 + end + i32.const 12 + i32.const 25 + call $~lib/rt/tlsf/__alloc + local.set $7 + local.get $7 + local.tee $8 + local.get $5 + i32.load + local.get $8 + i32.load + call $~lib/rt/purerc/__retainRelease + i32.store + local.get $7 + local.get $5 + i32.load offset=4 + local.get $4 + i32.const 3 + i32.shl + i32.add + i32.store offset=4 + local.get $7 + local.get $3 + local.get $4 + i32.sub + i32.const 3 + i32.shl + i32.store offset=8 + local.get $7 + call $~lib/rt/purerc/__retain + local.set $8 + local.get $5 + call $~lib/rt/purerc/__release + local.get $8 + end + local.tee $7 + call $~lib/rt/purerc/__retain + local.set $6 + local.get $7 + call $~lib/rt/purerc/__release + local.get $6 + ) + (func $std/typedarray/testArrayReverse<~lib/typedarray/Uint64Array,u64> (; 379 ;) (type $FUNCSIG$v) + (local $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + global.get $std/typedarray/testArrayReverseValues + call $~lib/rt/purerc/__retain + local.set $0 + i32.const 0 + i32.const 9 + call $~lib/typedarray/Uint64Array#constructor + local.tee $1 + call $~lib/rt/purerc/__retain + local.set $2 + i32.const 0 + i32.const 9 + call $~lib/typedarray/Uint64Array#constructor + local.tee $3 + call $~lib/rt/purerc/__retain + local.set $4 + i32.const 0 + local.set $5 + block $break|0 + i32.const 0 + local.set $5 + loop $repeat|0 + local.get $5 + i32.const 9 + i32.lt_s + i32.eqz + br_if $break|0 + local.get $2 + local.get $5 + local.get $0 + local.get $5 + call $~lib/array/Array#__get + i64.extend_i32_s + call $~lib/typedarray/Uint64Array#__set + local.get $4 + local.get $5 + local.get $0 + local.get $5 + call $~lib/array/Array#__get + i64.extend_i32_s + call $~lib/typedarray/Uint64Array#__set + local.get $5 + i32.const 1 + i32.add + local.set $5 + br $repeat|0 + unreachable + end + unreachable + end + local.get $2 + call $~lib/typedarray/Uint64Array#reverse + call $~lib/rt/purerc/__release + block $break|1 + i32.const 0 + local.set $5 + loop $repeat|1 + local.get $5 + i32.const 9 + i32.lt_s + i32.eqz + br_if $break|1 + local.get $2 + local.get $5 + call $~lib/typedarray/Uint64Array#__get + local.get $0 + i32.const 8 + local.get $5 + i32.sub + call $~lib/array/Array#__get + i64.extend_i32_s + i64.eq + i32.eqz + if + i32.const 1480 + i32.const 24 + i32.const 460 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $5 + i32.const 1 + i32.add + local.set $5 + br $repeat|1 + unreachable + end + unreachable + end + local.get $4 + i32.const 4 + i32.const 8 + call $~lib/typedarray/Uint64Array#subarray + local.tee $6 + call $~lib/typedarray/Uint64Array#reverse + local.set $7 + local.get $7 + i32.const 0 + call $~lib/typedarray/Uint64Array#__get + i64.const 8 + i64.eq + i32.eqz + if + i32.const 1568 + i32.const 24 + i32.const 465 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $7 + i32.const 1 + call $~lib/typedarray/Uint64Array#__get + i64.const 7 + i64.eq + i32.eqz + if + i32.const 1568 + i32.const 24 + i32.const 466 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $7 + i32.const 2 + call $~lib/typedarray/Uint64Array#__get + i64.const 6 + i64.eq + i32.eqz + if + i32.const 1568 + i32.const 24 + i32.const 467 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $7 + i32.const 3 + call $~lib/typedarray/Uint64Array#__get + i64.const 5 + i64.eq + i32.eqz + if + i32.const 1568 + i32.const 24 + i32.const 468 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $1 + call $~lib/rt/purerc/__release + local.get $3 + call $~lib/rt/purerc/__release + local.get $6 + call $~lib/rt/purerc/__release + local.get $0 + call $~lib/rt/purerc/__release + local.get $2 + call $~lib/rt/purerc/__release + local.get $4 + call $~lib/rt/purerc/__release + local.get $7 + call $~lib/rt/purerc/__release + ) + (func $~lib/typedarray/Float32Array#reverse (; 380 ;) (type $FUNCSIG$ii) (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) + block $~lib/typedarray/REVERSE<~lib/typedarray/Float32Array,f32>|inlined.0 (result i32) + local.get $0 + call $~lib/rt/purerc/__retain + local.set $1 + local.get $1 + i32.load offset=4 + local.set $2 + block $break|0 + block + i32.const 0 + local.set $3 + local.get $1 + call $~lib/typedarray/Float32Array#get:length + i32.const 1 + i32.sub + local.set $4 + end + loop $repeat|0 + local.get $3 + local.get $4 + i32.lt_s + i32.eqz + br_if $break|0 + local.get $2 + local.get $3 + i32.const 2 + i32.shl + i32.add + local.set $5 + local.get $2 + local.get $4 + i32.const 2 + i32.shl + i32.add + local.set $6 + local.get $5 + f32.load + local.set $7 + local.get $5 + local.get $6 + f32.load + f32.store + local.get $6 + local.get $7 + f32.store + block + local.get $3 + i32.const 1 + i32.add + local.set $3 + local.get $4 + i32.const 1 + i32.sub + local.set $4 + end + br $repeat|0 + unreachable + end + unreachable + end + local.get $1 + end + local.tee $2 + call $~lib/rt/purerc/__retain + local.set $1 + local.get $2 + call $~lib/rt/purerc/__release + local.get $1 + ) + (func $~lib/typedarray/Float32Array#subarray (; 381 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + block $~lib/typedarray/SUBARRAY<~lib/typedarray/Float32Array,f32>|inlined.0 (result i32) + local.get $0 + call $~lib/rt/purerc/__retain + local.set $5 + local.get $1 + local.set $4 + local.get $2 + local.set $3 + local.get $5 + call $~lib/typedarray/Float32Array#get:length + local.set $6 + local.get $4 + i32.const 0 + i32.lt_s + if + local.get $6 + local.get $4 + i32.add + local.tee $7 + i32.const 0 + local.tee $8 + local.get $7 + local.get $8 + i32.gt_s + select + local.set $4 + else + local.get $4 + local.tee $7 + local.get $6 + local.tee $8 + local.get $7 + local.get $8 + i32.lt_s + select + local.set $4 + end + local.get $3 + i32.const 0 + i32.lt_s + if + local.get $6 + local.get $3 + i32.add + local.tee $7 + local.get $4 + local.tee $8 + local.get $7 + local.get $8 + i32.gt_s + select + local.set $3 + else + local.get $3 + local.tee $7 + local.get $6 + local.tee $8 + local.get $7 + local.get $8 + i32.lt_s + select + local.tee $7 + local.get $4 + local.tee $8 + local.get $7 + local.get $8 + i32.gt_s + select + local.set $3 + end + i32.const 12 + i32.const 26 + call $~lib/rt/tlsf/__alloc + local.set $7 + local.get $7 + local.tee $8 + local.get $5 + i32.load + local.get $8 + i32.load + call $~lib/rt/purerc/__retainRelease + i32.store + local.get $7 + local.get $5 + i32.load offset=4 + local.get $4 + i32.const 2 + i32.shl + i32.add + i32.store offset=4 + local.get $7 + local.get $3 + local.get $4 + i32.sub + i32.const 2 + i32.shl + i32.store offset=8 + local.get $7 + call $~lib/rt/purerc/__retain + local.set $8 + local.get $5 + call $~lib/rt/purerc/__release + local.get $8 + end + local.tee $7 + call $~lib/rt/purerc/__retain + local.set $6 + local.get $7 + call $~lib/rt/purerc/__release + local.get $6 + ) + (func $std/typedarray/testArrayReverse<~lib/typedarray/Float32Array,f32> (; 382 ;) (type $FUNCSIG$v) + (local $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + global.get $std/typedarray/testArrayReverseValues + call $~lib/rt/purerc/__retain + local.set $0 + i32.const 0 + i32.const 9 + call $~lib/typedarray/Float32Array#constructor + local.tee $1 + call $~lib/rt/purerc/__retain + local.set $2 + i32.const 0 + i32.const 9 + call $~lib/typedarray/Float32Array#constructor + local.tee $3 + call $~lib/rt/purerc/__retain + local.set $4 + i32.const 0 + local.set $5 + block $break|0 + i32.const 0 + local.set $5 + loop $repeat|0 + local.get $5 + i32.const 9 + i32.lt_s + i32.eqz + br_if $break|0 + local.get $2 + local.get $5 + local.get $0 + local.get $5 + call $~lib/array/Array#__get + f32.convert_i32_s + call $~lib/typedarray/Float32Array#__set + local.get $4 + local.get $5 + local.get $0 + local.get $5 + call $~lib/array/Array#__get + f32.convert_i32_s + call $~lib/typedarray/Float32Array#__set + local.get $5 + i32.const 1 + i32.add + local.set $5 + br $repeat|0 + unreachable + end + unreachable + end + local.get $2 + call $~lib/typedarray/Float32Array#reverse + call $~lib/rt/purerc/__release + block $break|1 + i32.const 0 + local.set $5 + loop $repeat|1 + local.get $5 + i32.const 9 + i32.lt_s + i32.eqz + br_if $break|1 + local.get $2 + local.get $5 + call $~lib/typedarray/Float32Array#__get + local.get $0 + i32.const 8 + local.get $5 + i32.sub + call $~lib/array/Array#__get + f32.convert_i32_s + f32.eq + i32.eqz + if + i32.const 1480 + i32.const 24 + i32.const 460 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $5 + i32.const 1 + i32.add + local.set $5 + br $repeat|1 + unreachable + end + unreachable + end + local.get $4 + i32.const 4 + i32.const 8 + call $~lib/typedarray/Float32Array#subarray + local.tee $6 + call $~lib/typedarray/Float32Array#reverse + local.set $7 + local.get $7 + i32.const 0 + call $~lib/typedarray/Float32Array#__get + f32.const 8 + f32.eq + i32.eqz + if + i32.const 1568 + i32.const 24 + i32.const 465 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $7 + i32.const 1 + call $~lib/typedarray/Float32Array#__get + f32.const 7 + f32.eq + i32.eqz + if + i32.const 1568 + i32.const 24 + i32.const 466 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $7 + i32.const 2 + call $~lib/typedarray/Float32Array#__get + f32.const 6 + f32.eq + i32.eqz + if + i32.const 1568 + i32.const 24 + i32.const 467 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $7 + i32.const 3 + call $~lib/typedarray/Float32Array#__get + f32.const 5 + f32.eq + i32.eqz + if + i32.const 1568 + i32.const 24 + i32.const 468 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $1 + call $~lib/rt/purerc/__release + local.get $3 + call $~lib/rt/purerc/__release + local.get $6 + call $~lib/rt/purerc/__release + local.get $0 + call $~lib/rt/purerc/__release + local.get $2 + call $~lib/rt/purerc/__release + local.get $4 + call $~lib/rt/purerc/__release + local.get $7 + call $~lib/rt/purerc/__release + ) + (func $~lib/typedarray/Float64Array#reverse (; 383 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -5245,6413 +20131,405 @@ (local $5 i32) (local $6 i32) (local $7 f64) - local.get $0 - i32.load offset=4 - local.set $3 - local.get $0 - i32.load offset=8 - i32.const 3 - i32.shr_u - local.tee $2 - local.set $4 - local.get $2 - call $~lib/typedarray/Float64Array#constructor - local.tee $2 - i32.load offset=4 - local.set $5 - loop $repeat|0 - local.get $1 - local.get $4 - i32.lt_s - if - i32.const 3 - global.set $~lib/argc - local.get $1 - i32.const 3 - i32.shl - local.tee $6 - local.get $3 - i32.add - f64.load - local.get $1 - local.get $0 - call $std/typedarray/testArrayMap<~lib/typedarray/Float64Array,f64>~anonymous|0 - local.set $7 - local.get $5 - local.get $6 - i32.add - local.get $7 - f64.store - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $repeat|0 - end - end - local.get $2 - ) - (func $std/typedarray/testArrayMap<~lib/typedarray/Float64Array,f64> (; 123 ;) (type $FUNCSIG$v) - (local $0 i32) - i32.const 3 - call $~lib/typedarray/Float64Array#constructor - local.tee $0 - i32.const 0 - f64.const 1 - call $~lib/typedarray/Float64Array#__set - local.get $0 - i32.const 1 - f64.const 2 - call $~lib/typedarray/Float64Array#__set - local.get $0 - i32.const 2 - f64.const 3 - call $~lib/typedarray/Float64Array#__set - local.get $0 - call $~lib/typedarray/Float64Array#map - local.tee $0 - i32.const 0 - call $~lib/typedarray/Float64Array#__get - f64.const 1 - f64.ne - if - i32.const 0 - i32.const 24 - i32.const 306 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 1 - call $~lib/typedarray/Float64Array#__get - f64.const 4 - f64.ne - if - i32.const 0 - i32.const 24 - i32.const 307 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 2 - call $~lib/typedarray/Float64Array#__get - f64.const 9 - f64.ne - if - i32.const 0 - i32.const 24 - i32.const 308 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - ) - (func $std/typedarray/testArraySome<~lib/typedarray/Int8Array,i8>~anonymous|0 (; 124 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - local.get $0 - i32.const 255 - i32.and - i32.const 2 - i32.eq - ) - (func $~lib/typedarray/Int8Array#some (; 125 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - block $~lib/typedarray/SOME<~lib/typedarray/Int8Array,i8>|inlined.0 (result i32) + block $~lib/typedarray/REVERSE<~lib/typedarray/Float64Array,f64>|inlined.0 (result i32) local.get $0 - i32.load offset=4 - local.set $3 - local.get $0 - i32.load offset=8 - local.set $4 - loop $repeat|0 - local.get $2 - local.get $4 - i32.lt_s - if - i32.const 3 - global.set $~lib/argc - i32.const 1 - local.get $2 - local.get $3 - i32.add - i32.load8_s - local.get $2 - local.get $0 - local.get $1 - call_indirect (type $FUNCSIG$iiii) - br_if $~lib/typedarray/SOME<~lib/typedarray/Int8Array,i8>|inlined.0 - drop - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $repeat|0 - end - end - i32.const 0 - end - ) - (func $std/typedarray/testArraySome<~lib/typedarray/Int8Array,i8>~anonymous|1 (; 126 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - local.get $0 - i32.const 255 - i32.and - i32.eqz - ) - (func $std/typedarray/testArraySome<~lib/typedarray/Int8Array,i8> (; 127 ;) (type $FUNCSIG$v) - (local $0 i32) - i32.const 3 - call $~lib/typedarray/Int8Array#constructor - local.tee $0 - i32.const 0 - i32.const 2 - call $~lib/typedarray/Int8Array#__set - local.get $0 - i32.const 1 - i32.const 4 - call $~lib/typedarray/Int8Array#__set - local.get $0 - i32.const 2 - i32.const 6 - call $~lib/typedarray/Int8Array#__set - local.get $0 - i32.const 35 - call $~lib/typedarray/Int8Array#some - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 335 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 36 - call $~lib/typedarray/Int8Array#some - if - i32.const 0 - i32.const 24 - i32.const 338 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - ) - (func $~lib/typedarray/Uint8Array#some (; 128 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - block $~lib/typedarray/SOME<~lib/typedarray/Uint8Array,u8>|inlined.0 (result i32) - local.get $0 - i32.load offset=4 - local.set $3 - local.get $0 - i32.load offset=8 - local.set $4 - loop $repeat|0 - local.get $2 - local.get $4 - i32.lt_s - if - i32.const 3 - global.set $~lib/argc - i32.const 1 - local.get $2 - local.get $3 - i32.add - i32.load8_u - local.get $2 - local.get $0 - local.get $1 - call_indirect (type $FUNCSIG$iiii) - br_if $~lib/typedarray/SOME<~lib/typedarray/Uint8Array,u8>|inlined.0 - drop - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $repeat|0 - end - end - i32.const 0 - end - ) - (func $std/typedarray/testArraySome<~lib/typedarray/Uint8Array,u8> (; 129 ;) (type $FUNCSIG$v) - (local $0 i32) - i32.const 3 - call $~lib/typedarray/Uint8Array#constructor - local.tee $0 - i32.const 0 - i32.const 2 - call $~lib/typedarray/Uint8Array#__set - local.get $0 - i32.const 1 - i32.const 4 - call $~lib/typedarray/Uint8Array#__set - local.get $0 - i32.const 2 - i32.const 6 - call $~lib/typedarray/Uint8Array#__set - local.get $0 - i32.const 37 - call $~lib/typedarray/Uint8Array#some - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 335 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 38 - call $~lib/typedarray/Uint8Array#some - if - i32.const 0 - i32.const 24 - i32.const 338 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - ) - (func $std/typedarray/testArraySome<~lib/typedarray/Uint8ClampedArray,u8> (; 130 ;) (type $FUNCSIG$v) - (local $0 i32) - i32.const 3 - call $~lib/typedarray/Uint8ClampedArray#constructor - local.tee $0 - i32.const 0 - i32.const 2 - call $~lib/typedarray/Uint8ClampedArray#__set - local.get $0 - i32.const 1 - i32.const 4 - call $~lib/typedarray/Uint8ClampedArray#__set - local.get $0 - i32.const 2 - i32.const 6 - call $~lib/typedarray/Uint8ClampedArray#__set - local.get $0 - i32.const 39 - call $~lib/typedarray/Uint8Array#some - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 335 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 40 - call $~lib/typedarray/Uint8Array#some - if - i32.const 0 - i32.const 24 - i32.const 338 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - ) - (func $std/typedarray/testArraySome<~lib/typedarray/Int16Array,i16>~anonymous|0 (; 131 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - local.get $0 - i32.const 65535 - i32.and - i32.const 2 - i32.eq - ) - (func $~lib/typedarray/Int16Array#some (; 132 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - block $~lib/typedarray/SOME<~lib/typedarray/Int16Array,i16>|inlined.0 (result i32) - local.get $0 - i32.load offset=4 - local.set $3 - local.get $0 - i32.load offset=8 - i32.const 1 - i32.shr_u - local.set $4 - loop $repeat|0 - local.get $2 - local.get $4 - i32.lt_s - if - i32.const 3 - global.set $~lib/argc - i32.const 1 - local.get $2 - i32.const 1 - i32.shl - local.get $3 - i32.add - i32.load16_s - local.get $2 - local.get $0 - local.get $1 - call_indirect (type $FUNCSIG$iiii) - br_if $~lib/typedarray/SOME<~lib/typedarray/Int16Array,i16>|inlined.0 - drop - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $repeat|0 - end - end - i32.const 0 - end - ) - (func $std/typedarray/testArraySome<~lib/typedarray/Int16Array,i16>~anonymous|1 (; 133 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - local.get $0 - i32.const 65535 - i32.and - i32.eqz - ) - (func $std/typedarray/testArraySome<~lib/typedarray/Int16Array,i16> (; 134 ;) (type $FUNCSIG$v) - (local $0 i32) - i32.const 3 - call $~lib/typedarray/Int16Array#constructor - local.tee $0 - i32.const 0 - i32.const 2 - call $~lib/typedarray/Int16Array#__set - local.get $0 - i32.const 1 - i32.const 4 - call $~lib/typedarray/Int16Array#__set - local.get $0 - i32.const 2 - i32.const 6 - call $~lib/typedarray/Int16Array#__set - local.get $0 - i32.const 41 - call $~lib/typedarray/Int16Array#some - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 335 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 42 - call $~lib/typedarray/Int16Array#some - if - i32.const 0 - i32.const 24 - i32.const 338 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - ) - (func $~lib/typedarray/Uint16Array#some (; 135 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - block $~lib/typedarray/SOME<~lib/typedarray/Uint16Array,u16>|inlined.0 (result i32) - local.get $0 - i32.load offset=4 - local.set $3 - local.get $0 - i32.load offset=8 - i32.const 1 - i32.shr_u - local.set $4 - loop $repeat|0 - local.get $2 - local.get $4 - i32.lt_s - if - i32.const 3 - global.set $~lib/argc - i32.const 1 - local.get $2 - i32.const 1 - i32.shl - local.get $3 - i32.add - i32.load16_u - local.get $2 - local.get $0 - local.get $1 - call_indirect (type $FUNCSIG$iiii) - br_if $~lib/typedarray/SOME<~lib/typedarray/Uint16Array,u16>|inlined.0 - drop - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $repeat|0 - end - end - i32.const 0 - end - ) - (func $std/typedarray/testArraySome<~lib/typedarray/Uint16Array,u16> (; 136 ;) (type $FUNCSIG$v) - (local $0 i32) - i32.const 3 - call $~lib/typedarray/Uint16Array#constructor - local.tee $0 - i32.const 0 - i32.const 2 - call $~lib/typedarray/Uint16Array#__set - local.get $0 - i32.const 1 - i32.const 4 - call $~lib/typedarray/Uint16Array#__set - local.get $0 - i32.const 2 - i32.const 6 - call $~lib/typedarray/Uint16Array#__set - local.get $0 - i32.const 43 - call $~lib/typedarray/Uint16Array#some - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 335 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 44 - call $~lib/typedarray/Uint16Array#some - if - i32.const 0 - i32.const 24 - i32.const 338 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - ) - (func $std/typedarray/testArraySome<~lib/typedarray/Int32Array,i32>~anonymous|0 (; 137 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - local.get $0 - i32.const 2 - i32.eq - ) - (func $~lib/typedarray/Int32Array#some (; 138 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - block $~lib/typedarray/SOME<~lib/typedarray/Int32Array,i32>|inlined.0 (result i32) - local.get $0 - i32.load offset=4 - local.set $3 - local.get $0 - i32.load offset=8 - i32.const 2 - i32.shr_u - local.set $4 - loop $repeat|0 - local.get $2 - local.get $4 - i32.lt_s - if - i32.const 3 - global.set $~lib/argc - i32.const 1 - local.get $2 - i32.const 2 - i32.shl - local.get $3 - i32.add - i32.load - local.get $2 - local.get $0 - local.get $1 - call_indirect (type $FUNCSIG$iiii) - br_if $~lib/typedarray/SOME<~lib/typedarray/Int32Array,i32>|inlined.0 - drop - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $repeat|0 - end - end - i32.const 0 - end - ) - (func $std/typedarray/testArraySome<~lib/typedarray/Int32Array,i32>~anonymous|1 (; 139 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - local.get $0 - i32.eqz - ) - (func $std/typedarray/testArraySome<~lib/typedarray/Int32Array,i32> (; 140 ;) (type $FUNCSIG$v) - (local $0 i32) - i32.const 3 - call $~lib/typedarray/Int32Array#constructor - local.tee $0 - i32.const 0 - i32.const 2 - call $~lib/typedarray/Int32Array#__set - local.get $0 - i32.const 1 - i32.const 4 - call $~lib/typedarray/Int32Array#__set - local.get $0 - i32.const 2 - i32.const 6 - call $~lib/typedarray/Int32Array#__set - local.get $0 - i32.const 45 - call $~lib/typedarray/Int32Array#some - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 335 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 46 - call $~lib/typedarray/Int32Array#some - if - i32.const 0 - i32.const 24 - i32.const 338 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - ) - (func $std/typedarray/testArraySome<~lib/typedarray/Uint32Array,u32> (; 141 ;) (type $FUNCSIG$v) - (local $0 i32) - i32.const 3 - call $~lib/typedarray/Uint32Array#constructor - local.tee $0 - i32.const 0 - i32.const 2 - call $~lib/typedarray/Uint32Array#__set - local.get $0 - i32.const 1 - i32.const 4 - call $~lib/typedarray/Uint32Array#__set - local.get $0 - i32.const 2 - i32.const 6 - call $~lib/typedarray/Uint32Array#__set - local.get $0 - i32.const 47 - call $~lib/typedarray/Int32Array#some - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 335 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 48 - call $~lib/typedarray/Int32Array#some - if - i32.const 0 - i32.const 24 - i32.const 338 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - ) - (func $std/typedarray/testArraySome<~lib/typedarray/Int64Array,i64>~anonymous|0 (; 142 ;) (type $FUNCSIG$ijii) (param $0 i64) (param $1 i32) (param $2 i32) (result i32) - local.get $0 - i64.const 2 - i64.eq - ) - (func $~lib/typedarray/Int64Array#some (; 143 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - block $~lib/typedarray/SOME<~lib/typedarray/Int64Array,i64>|inlined.0 (result i32) - local.get $0 - i32.load offset=4 - local.set $3 - local.get $0 - i32.load offset=8 - i32.const 3 - i32.shr_u - local.set $4 - loop $repeat|0 - local.get $2 - local.get $4 - i32.lt_s - if - i32.const 3 - global.set $~lib/argc - i32.const 1 - local.get $2 - i32.const 3 - i32.shl - local.get $3 - i32.add - i64.load - local.get $2 - local.get $0 - local.get $1 - call_indirect (type $FUNCSIG$ijii) - br_if $~lib/typedarray/SOME<~lib/typedarray/Int64Array,i64>|inlined.0 - drop - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $repeat|0 - end - end - i32.const 0 - end - ) - (func $std/typedarray/testArraySome<~lib/typedarray/Int64Array,i64>~anonymous|1 (; 144 ;) (type $FUNCSIG$ijii) (param $0 i64) (param $1 i32) (param $2 i32) (result i32) - local.get $0 - i64.const 0 - i64.eq - ) - (func $std/typedarray/testArraySome<~lib/typedarray/Int64Array,i64> (; 145 ;) (type $FUNCSIG$v) - (local $0 i32) - i32.const 3 - call $~lib/typedarray/Int64Array#constructor - local.tee $0 - i32.const 0 - i64.const 2 - call $~lib/typedarray/Int64Array#__set - local.get $0 - i32.const 1 - i64.const 4 - call $~lib/typedarray/Int64Array#__set - local.get $0 - i32.const 2 - i64.const 6 - call $~lib/typedarray/Int64Array#__set - local.get $0 - i32.const 49 - call $~lib/typedarray/Int64Array#some - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 335 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 50 - call $~lib/typedarray/Int64Array#some - if - i32.const 0 - i32.const 24 - i32.const 338 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - ) - (func $std/typedarray/testArraySome<~lib/typedarray/Uint64Array,u64> (; 146 ;) (type $FUNCSIG$v) - (local $0 i32) - i32.const 3 - call $~lib/typedarray/Uint64Array#constructor - local.tee $0 - i32.const 0 - i64.const 2 - call $~lib/typedarray/Uint64Array#__set - local.get $0 - i32.const 1 - i64.const 4 - call $~lib/typedarray/Uint64Array#__set - local.get $0 - i32.const 2 - i64.const 6 - call $~lib/typedarray/Uint64Array#__set - local.get $0 - i32.const 51 - call $~lib/typedarray/Int64Array#some - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 335 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 52 - call $~lib/typedarray/Int64Array#some - if - i32.const 0 - i32.const 24 - i32.const 338 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - ) - (func $std/typedarray/testArraySome<~lib/typedarray/Float32Array,f32>~anonymous|0 (; 147 ;) (type $FUNCSIG$ifii) (param $0 f32) (param $1 i32) (param $2 i32) (result i32) - local.get $0 - f32.const 2 - f32.eq - ) - (func $~lib/typedarray/Float32Array#some (; 148 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - block $~lib/typedarray/SOME<~lib/typedarray/Float32Array,f32>|inlined.0 (result i32) - local.get $0 - i32.load offset=4 - local.set $3 - local.get $0 - i32.load offset=8 - i32.const 2 - i32.shr_u - local.set $4 - loop $repeat|0 - local.get $2 - local.get $4 - i32.lt_s - if - i32.const 3 - global.set $~lib/argc - i32.const 1 - local.get $2 - i32.const 2 - i32.shl - local.get $3 - i32.add - f32.load - local.get $2 - local.get $0 - local.get $1 - call_indirect (type $FUNCSIG$ifii) - br_if $~lib/typedarray/SOME<~lib/typedarray/Float32Array,f32>|inlined.0 - drop - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $repeat|0 - end - end - i32.const 0 - end - ) - (func $std/typedarray/testArraySome<~lib/typedarray/Float32Array,f32>~anonymous|1 (; 149 ;) (type $FUNCSIG$ifii) (param $0 f32) (param $1 i32) (param $2 i32) (result i32) - local.get $0 - f32.const 0 - f32.eq - ) - (func $std/typedarray/testArraySome<~lib/typedarray/Float32Array,f32> (; 150 ;) (type $FUNCSIG$v) - (local $0 i32) - i32.const 3 - call $~lib/typedarray/Float32Array#constructor - local.tee $0 - i32.const 0 - f32.const 2 - call $~lib/typedarray/Float32Array#__set - local.get $0 - i32.const 1 - f32.const 4 - call $~lib/typedarray/Float32Array#__set - local.get $0 - i32.const 2 - f32.const 6 - call $~lib/typedarray/Float32Array#__set - local.get $0 - i32.const 53 - call $~lib/typedarray/Float32Array#some - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 335 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 54 - call $~lib/typedarray/Float32Array#some - if - i32.const 0 - i32.const 24 - i32.const 338 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - ) - (func $std/typedarray/testArraySome<~lib/typedarray/Float64Array,f64>~anonymous|0 (; 151 ;) (type $FUNCSIG$idii) (param $0 f64) (param $1 i32) (param $2 i32) (result i32) - local.get $0 - f64.const 2 - f64.eq - ) - (func $~lib/typedarray/Float64Array#some (; 152 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - block $~lib/typedarray/SOME<~lib/typedarray/Float64Array,f64>|inlined.0 (result i32) - local.get $0 - i32.load offset=4 - local.set $3 - local.get $0 - i32.load offset=8 - i32.const 3 - i32.shr_u - local.set $4 - loop $repeat|0 - local.get $2 - local.get $4 - i32.lt_s - if - i32.const 3 - global.set $~lib/argc - i32.const 1 - local.get $2 - i32.const 3 - i32.shl - local.get $3 - i32.add - f64.load - local.get $2 - local.get $0 - local.get $1 - call_indirect (type $FUNCSIG$idii) - br_if $~lib/typedarray/SOME<~lib/typedarray/Float64Array,f64>|inlined.0 - drop - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $repeat|0 - end - end - i32.const 0 - end - ) - (func $std/typedarray/testArraySome<~lib/typedarray/Float64Array,f64>~anonymous|1 (; 153 ;) (type $FUNCSIG$idii) (param $0 f64) (param $1 i32) (param $2 i32) (result i32) - local.get $0 - f64.const 0 - f64.eq - ) - (func $std/typedarray/testArraySome<~lib/typedarray/Float64Array,f64> (; 154 ;) (type $FUNCSIG$v) - (local $0 i32) - i32.const 3 - call $~lib/typedarray/Float64Array#constructor - local.tee $0 - i32.const 0 - f64.const 2 - call $~lib/typedarray/Float64Array#__set - local.get $0 - i32.const 1 - f64.const 4 - call $~lib/typedarray/Float64Array#__set - local.get $0 - i32.const 2 - f64.const 6 - call $~lib/typedarray/Float64Array#__set - local.get $0 - i32.const 55 - call $~lib/typedarray/Float64Array#some - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 335 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 56 - call $~lib/typedarray/Float64Array#some - if - i32.const 0 - i32.const 24 - i32.const 338 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - ) - (func $~lib/typedarray/Int8Array#findIndex (; 155 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - local.get $0 - local.tee $2 - i32.load offset=4 - local.set $3 - i32.const 0 - local.set $0 - local.get $2 - i32.load offset=8 - local.set $4 - block $~lib/typedarray/FIND_INDEX<~lib/typedarray/Int8Array,i8>|inlined.0 - loop $repeat|0 - local.get $0 - local.get $4 - i32.lt_s - if - i32.const 3 - global.set $~lib/argc - local.get $0 - local.get $3 - i32.add - i32.load8_s - local.get $0 - local.get $2 - local.get $1 - call_indirect (type $FUNCSIG$iiii) - br_if $~lib/typedarray/FIND_INDEX<~lib/typedarray/Int8Array,i8>|inlined.0 - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $repeat|0 - end - end - i32.const -1 - local.set $0 - end - local.get $0 - ) - (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Int8Array,i8>~anonymous|1 (; 156 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - local.get $0 - i32.const 255 - i32.and - i32.const 4 - i32.eq - ) - (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Int8Array,i8> (; 157 ;) (type $FUNCSIG$v) - (local $0 i32) - i32.const 3 - call $~lib/typedarray/Int8Array#constructor - local.tee $0 - i32.const 0 - i32.const 1 - call $~lib/typedarray/Int8Array#__set - local.get $0 - i32.const 1 - i32.const 2 - call $~lib/typedarray/Int8Array#__set - local.get $0 - i32.const 2 - i32.const 3 - call $~lib/typedarray/Int8Array#__set - local.get $0 - i32.const 57 - call $~lib/typedarray/Int8Array#findIndex - i32.const 1 - i32.ne - if - i32.const 736 - i32.const 24 - i32.const 365 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 58 - call $~lib/typedarray/Int8Array#findIndex - i32.const -1 - i32.ne - if - i32.const 784 - i32.const 24 - i32.const 368 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - ) - (func $~lib/typedarray/Uint8Array#findIndex (; 158 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - local.get $0 - local.tee $2 - i32.load offset=4 - local.set $3 - i32.const 0 - local.set $0 - local.get $2 - i32.load offset=8 - local.set $4 - block $~lib/typedarray/FIND_INDEX<~lib/typedarray/Uint8Array,u8>|inlined.0 - loop $repeat|0 - local.get $0 - local.get $4 - i32.lt_s - if - i32.const 3 - global.set $~lib/argc - local.get $0 - local.get $3 - i32.add - i32.load8_u - local.get $0 - local.get $2 - local.get $1 - call_indirect (type $FUNCSIG$iiii) - br_if $~lib/typedarray/FIND_INDEX<~lib/typedarray/Uint8Array,u8>|inlined.0 - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $repeat|0 - end - end - i32.const -1 - local.set $0 - end - local.get $0 - ) - (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Uint8Array,u8> (; 159 ;) (type $FUNCSIG$v) - (local $0 i32) - i32.const 3 - call $~lib/typedarray/Uint8Array#constructor - local.tee $0 - i32.const 0 - i32.const 1 - call $~lib/typedarray/Uint8Array#__set - local.get $0 - i32.const 1 - i32.const 2 - call $~lib/typedarray/Uint8Array#__set - local.get $0 - i32.const 2 - i32.const 3 - call $~lib/typedarray/Uint8Array#__set - local.get $0 - i32.const 59 - call $~lib/typedarray/Uint8Array#findIndex - i32.const 1 - i32.ne - if - i32.const 736 - i32.const 24 - i32.const 365 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 60 - call $~lib/typedarray/Uint8Array#findIndex - i32.const -1 - i32.ne - if - i32.const 784 - i32.const 24 - i32.const 368 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - ) - (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Uint8ClampedArray,u8> (; 160 ;) (type $FUNCSIG$v) - (local $0 i32) - i32.const 3 - call $~lib/typedarray/Uint8ClampedArray#constructor - local.tee $0 - i32.const 0 - i32.const 1 - call $~lib/typedarray/Uint8ClampedArray#__set - local.get $0 - i32.const 1 - i32.const 2 - call $~lib/typedarray/Uint8ClampedArray#__set - local.get $0 - i32.const 2 - i32.const 3 - call $~lib/typedarray/Uint8ClampedArray#__set - local.get $0 - i32.const 61 - call $~lib/typedarray/Uint8Array#findIndex - i32.const 1 - i32.ne - if - i32.const 736 - i32.const 24 - i32.const 365 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 62 - call $~lib/typedarray/Uint8Array#findIndex - i32.const -1 - i32.ne - if - i32.const 784 - i32.const 24 - i32.const 368 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - ) - (func $~lib/typedarray/Int16Array#findIndex (; 161 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - local.get $0 - local.tee $2 - i32.load offset=4 - local.set $3 - i32.const 0 - local.set $0 - local.get $2 - i32.load offset=8 - i32.const 1 - i32.shr_u - local.set $4 - block $~lib/typedarray/FIND_INDEX<~lib/typedarray/Int16Array,i16>|inlined.0 - loop $repeat|0 - local.get $0 - local.get $4 - i32.lt_s - if - i32.const 3 - global.set $~lib/argc - local.get $0 - i32.const 1 - i32.shl - local.get $3 - i32.add - i32.load16_s - local.get $0 - local.get $2 - local.get $1 - call_indirect (type $FUNCSIG$iiii) - br_if $~lib/typedarray/FIND_INDEX<~lib/typedarray/Int16Array,i16>|inlined.0 - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $repeat|0 - end - end - i32.const -1 - local.set $0 - end - local.get $0 - ) - (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Int16Array,i16>~anonymous|1 (; 162 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - local.get $0 - i32.const 65535 - i32.and - i32.const 4 - i32.eq - ) - (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Int16Array,i16> (; 163 ;) (type $FUNCSIG$v) - (local $0 i32) - i32.const 3 - call $~lib/typedarray/Int16Array#constructor - local.tee $0 - i32.const 0 - i32.const 1 - call $~lib/typedarray/Int16Array#__set - local.get $0 - i32.const 1 - i32.const 2 - call $~lib/typedarray/Int16Array#__set - local.get $0 - i32.const 2 - i32.const 3 - call $~lib/typedarray/Int16Array#__set - local.get $0 - i32.const 63 - call $~lib/typedarray/Int16Array#findIndex - i32.const 1 - i32.ne - if - i32.const 736 - i32.const 24 - i32.const 365 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 64 - call $~lib/typedarray/Int16Array#findIndex - i32.const -1 - i32.ne - if - i32.const 784 - i32.const 24 - i32.const 368 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - ) - (func $~lib/typedarray/Uint16Array#findIndex (; 164 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - local.get $0 - local.tee $2 - i32.load offset=4 - local.set $3 - i32.const 0 - local.set $0 - local.get $2 - i32.load offset=8 - i32.const 1 - i32.shr_u - local.set $4 - block $~lib/typedarray/FIND_INDEX<~lib/typedarray/Uint16Array,u16>|inlined.0 - loop $repeat|0 - local.get $0 - local.get $4 - i32.lt_s - if - i32.const 3 - global.set $~lib/argc - local.get $0 - i32.const 1 - i32.shl - local.get $3 - i32.add - i32.load16_u - local.get $0 - local.get $2 - local.get $1 - call_indirect (type $FUNCSIG$iiii) - br_if $~lib/typedarray/FIND_INDEX<~lib/typedarray/Uint16Array,u16>|inlined.0 - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $repeat|0 - end - end - i32.const -1 - local.set $0 - end - local.get $0 - ) - (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Uint16Array,u16> (; 165 ;) (type $FUNCSIG$v) - (local $0 i32) - i32.const 3 - call $~lib/typedarray/Uint16Array#constructor - local.tee $0 - i32.const 0 - i32.const 1 - call $~lib/typedarray/Uint16Array#__set - local.get $0 - i32.const 1 - i32.const 2 - call $~lib/typedarray/Uint16Array#__set - local.get $0 - i32.const 2 - i32.const 3 - call $~lib/typedarray/Uint16Array#__set - local.get $0 - i32.const 65 - call $~lib/typedarray/Uint16Array#findIndex - i32.const 1 - i32.ne - if - i32.const 736 - i32.const 24 - i32.const 365 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 66 - call $~lib/typedarray/Uint16Array#findIndex - i32.const -1 - i32.ne - if - i32.const 784 - i32.const 24 - i32.const 368 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - ) - (func $~lib/typedarray/Int32Array#findIndex (; 166 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - local.get $0 - local.tee $2 - i32.load offset=4 - local.set $3 - i32.const 0 - local.set $0 - local.get $2 - i32.load offset=8 - i32.const 2 - i32.shr_u - local.set $4 - block $~lib/typedarray/FIND_INDEX<~lib/typedarray/Int32Array,i32>|inlined.0 - loop $repeat|0 - local.get $0 - local.get $4 - i32.lt_s - if - i32.const 3 - global.set $~lib/argc - local.get $0 - i32.const 2 - i32.shl - local.get $3 - i32.add - i32.load - local.get $0 - local.get $2 - local.get $1 - call_indirect (type $FUNCSIG$iiii) - br_if $~lib/typedarray/FIND_INDEX<~lib/typedarray/Int32Array,i32>|inlined.0 - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $repeat|0 - end - end - i32.const -1 - local.set $0 - end - local.get $0 - ) - (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Int32Array,i32>~anonymous|1 (; 167 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - local.get $0 - i32.const 4 - i32.eq - ) - (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Int32Array,i32> (; 168 ;) (type $FUNCSIG$v) - (local $0 i32) - i32.const 3 - call $~lib/typedarray/Int32Array#constructor - local.tee $0 - i32.const 0 - i32.const 1 - call $~lib/typedarray/Int32Array#__set - local.get $0 - i32.const 1 - i32.const 2 - call $~lib/typedarray/Int32Array#__set - local.get $0 - i32.const 2 - i32.const 3 - call $~lib/typedarray/Int32Array#__set - local.get $0 - i32.const 67 - call $~lib/typedarray/Int32Array#findIndex - i32.const 1 - i32.ne - if - i32.const 736 - i32.const 24 - i32.const 365 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 68 - call $~lib/typedarray/Int32Array#findIndex - i32.const -1 - i32.ne - if - i32.const 784 - i32.const 24 - i32.const 368 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - ) - (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Uint32Array,u32> (; 169 ;) (type $FUNCSIG$v) - (local $0 i32) - i32.const 3 - call $~lib/typedarray/Uint32Array#constructor - local.tee $0 - i32.const 0 - i32.const 1 - call $~lib/typedarray/Uint32Array#__set - local.get $0 - i32.const 1 - i32.const 2 - call $~lib/typedarray/Uint32Array#__set - local.get $0 - i32.const 2 - i32.const 3 - call $~lib/typedarray/Uint32Array#__set - local.get $0 - i32.const 69 - call $~lib/typedarray/Int32Array#findIndex - i32.const 1 - i32.ne - if - i32.const 736 - i32.const 24 - i32.const 365 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 70 - call $~lib/typedarray/Int32Array#findIndex - i32.const -1 - i32.ne - if - i32.const 784 - i32.const 24 - i32.const 368 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - ) - (func $~lib/typedarray/Int64Array#findIndex (; 170 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - local.get $0 - local.tee $2 - i32.load offset=4 - local.set $3 - i32.const 0 - local.set $0 - local.get $2 - i32.load offset=8 - i32.const 3 - i32.shr_u - local.set $4 - block $~lib/typedarray/FIND_INDEX<~lib/typedarray/Int64Array,i64>|inlined.0 - loop $repeat|0 - local.get $0 - local.get $4 - i32.lt_s - if - i32.const 3 - global.set $~lib/argc - local.get $0 - i32.const 3 - i32.shl - local.get $3 - i32.add - i64.load - local.get $0 - local.get $2 - local.get $1 - call_indirect (type $FUNCSIG$ijii) - br_if $~lib/typedarray/FIND_INDEX<~lib/typedarray/Int64Array,i64>|inlined.0 - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $repeat|0 - end - end - i32.const -1 - local.set $0 - end - local.get $0 - ) - (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Int64Array,i64>~anonymous|1 (; 171 ;) (type $FUNCSIG$ijii) (param $0 i64) (param $1 i32) (param $2 i32) (result i32) - local.get $0 - i64.const 4 - i64.eq - ) - (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Int64Array,i64> (; 172 ;) (type $FUNCSIG$v) - (local $0 i32) - i32.const 3 - call $~lib/typedarray/Int64Array#constructor - local.tee $0 - i32.const 0 - i64.const 1 - call $~lib/typedarray/Int64Array#__set - local.get $0 - i32.const 1 - i64.const 2 - call $~lib/typedarray/Int64Array#__set - local.get $0 - i32.const 2 - i64.const 3 - call $~lib/typedarray/Int64Array#__set - local.get $0 - i32.const 71 - call $~lib/typedarray/Int64Array#findIndex - i32.const 1 - i32.ne - if - i32.const 736 - i32.const 24 - i32.const 365 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 72 - call $~lib/typedarray/Int64Array#findIndex - i32.const -1 - i32.ne - if - i32.const 784 - i32.const 24 - i32.const 368 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - ) - (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Uint64Array,u64> (; 173 ;) (type $FUNCSIG$v) - (local $0 i32) - i32.const 3 - call $~lib/typedarray/Uint64Array#constructor - local.tee $0 - i32.const 0 - i64.const 1 - call $~lib/typedarray/Uint64Array#__set - local.get $0 - i32.const 1 - i64.const 2 - call $~lib/typedarray/Uint64Array#__set - local.get $0 - i32.const 2 - i64.const 3 - call $~lib/typedarray/Uint64Array#__set - local.get $0 - i32.const 73 - call $~lib/typedarray/Int64Array#findIndex - i32.const 1 - i32.ne - if - i32.const 736 - i32.const 24 - i32.const 365 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 74 - call $~lib/typedarray/Int64Array#findIndex - i32.const -1 - i32.ne - if - i32.const 784 - i32.const 24 - i32.const 368 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - ) - (func $~lib/typedarray/Float32Array#findIndex (; 174 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - local.get $0 - local.tee $2 - i32.load offset=4 - local.set $3 - i32.const 0 - local.set $0 - local.get $2 - i32.load offset=8 - i32.const 2 - i32.shr_u - local.set $4 - block $~lib/typedarray/FIND_INDEX<~lib/typedarray/Float32Array,f32>|inlined.0 - loop $repeat|0 - local.get $0 - local.get $4 - i32.lt_s - if - i32.const 3 - global.set $~lib/argc - local.get $0 - i32.const 2 - i32.shl - local.get $3 - i32.add - f32.load - local.get $0 - local.get $2 - local.get $1 - call_indirect (type $FUNCSIG$ifii) - br_if $~lib/typedarray/FIND_INDEX<~lib/typedarray/Float32Array,f32>|inlined.0 - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $repeat|0 - end - end - i32.const -1 - local.set $0 - end - local.get $0 - ) - (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Float32Array,f32>~anonymous|1 (; 175 ;) (type $FUNCSIG$ifii) (param $0 f32) (param $1 i32) (param $2 i32) (result i32) - local.get $0 - f32.const 4 - f32.eq - ) - (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Float32Array,f32> (; 176 ;) (type $FUNCSIG$v) - (local $0 i32) - i32.const 3 - call $~lib/typedarray/Float32Array#constructor - local.tee $0 - i32.const 0 - f32.const 1 - call $~lib/typedarray/Float32Array#__set - local.get $0 - i32.const 1 - f32.const 2 - call $~lib/typedarray/Float32Array#__set - local.get $0 - i32.const 2 - f32.const 3 - call $~lib/typedarray/Float32Array#__set - local.get $0 - i32.const 75 - call $~lib/typedarray/Float32Array#findIndex - i32.const 1 - i32.ne - if - i32.const 736 - i32.const 24 - i32.const 365 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 76 - call $~lib/typedarray/Float32Array#findIndex - i32.const -1 - i32.ne - if - i32.const 784 - i32.const 24 - i32.const 368 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - ) - (func $~lib/typedarray/Float64Array#findIndex (; 177 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - local.get $0 - local.tee $2 - i32.load offset=4 - local.set $3 - i32.const 0 - local.set $0 - local.get $2 - i32.load offset=8 - i32.const 3 - i32.shr_u - local.set $4 - block $~lib/typedarray/FIND_INDEX<~lib/typedarray/Float64Array,f64>|inlined.0 - loop $repeat|0 - local.get $0 - local.get $4 - i32.lt_s - if - i32.const 3 - global.set $~lib/argc - local.get $0 - i32.const 3 - i32.shl - local.get $3 - i32.add - f64.load - local.get $0 - local.get $2 - local.get $1 - call_indirect (type $FUNCSIG$idii) - br_if $~lib/typedarray/FIND_INDEX<~lib/typedarray/Float64Array,f64>|inlined.0 - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $repeat|0 - end - end - i32.const -1 - local.set $0 - end - local.get $0 - ) - (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Float64Array,f64>~anonymous|1 (; 178 ;) (type $FUNCSIG$idii) (param $0 f64) (param $1 i32) (param $2 i32) (result i32) - local.get $0 - f64.const 4 - f64.eq - ) - (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Float64Array,f64> (; 179 ;) (type $FUNCSIG$v) - (local $0 i32) - i32.const 3 - call $~lib/typedarray/Float64Array#constructor - local.tee $0 - i32.const 0 - f64.const 1 - call $~lib/typedarray/Float64Array#__set - local.get $0 - i32.const 1 - f64.const 2 - call $~lib/typedarray/Float64Array#__set - local.get $0 - i32.const 2 - f64.const 3 - call $~lib/typedarray/Float64Array#__set - local.get $0 - i32.const 77 - call $~lib/typedarray/Float64Array#findIndex - i32.const 1 - i32.ne - if - i32.const 736 - i32.const 24 - i32.const 365 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 78 - call $~lib/typedarray/Float64Array#findIndex - i32.const -1 - i32.ne - if - i32.const 784 - i32.const 24 - i32.const 368 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - ) - (func $std/typedarray/testArrayEvery<~lib/typedarray/Int8Array,i8>~anonymous|0 (; 180 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - local.get $0 - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s - i32.const 2 - i32.rem_s - i32.eqz - ) - (func $~lib/typedarray/Int8Array#every (; 181 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - block $~lib/typedarray/EVERY<~lib/typedarray/Int8Array,i8>|inlined.0 (result i32) - local.get $0 - i32.load offset=4 - local.set $3 - local.get $0 - i32.load offset=8 - local.set $4 - loop $repeat|0 - local.get $2 - local.get $4 - i32.lt_s - if - i32.const 3 - global.set $~lib/argc - i32.const 0 - local.get $2 - local.get $3 - i32.add - i32.load8_s - local.get $2 - local.get $0 - local.get $1 - call_indirect (type $FUNCSIG$iiii) - i32.eqz - br_if $~lib/typedarray/EVERY<~lib/typedarray/Int8Array,i8>|inlined.0 - drop - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $repeat|0 - end - end - i32.const 1 - end - ) - (func $std/typedarray/testArrayEvery<~lib/typedarray/Int8Array,i8> (; 182 ;) (type $FUNCSIG$v) - (local $0 i32) - i32.const 3 - call $~lib/typedarray/Int8Array#constructor - local.tee $0 - i32.const 0 - i32.const 2 - call $~lib/typedarray/Int8Array#__set - local.get $0 - i32.const 1 - i32.const 4 - call $~lib/typedarray/Int8Array#__set - local.get $0 - i32.const 2 - i32.const 6 - call $~lib/typedarray/Int8Array#__set - local.get $0 - i32.const 79 - call $~lib/typedarray/Int8Array#every - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 395 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 80 - call $~lib/typedarray/Int8Array#every - if - i32.const 0 - i32.const 24 - i32.const 398 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - ) - (func $std/typedarray/testArrayEvery<~lib/typedarray/Uint8Array,u8>~anonymous|0 (; 183 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - local.get $0 - i32.const 1 - i32.and - i32.eqz - ) - (func $~lib/typedarray/Uint8Array#every (; 184 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - block $~lib/typedarray/EVERY<~lib/typedarray/Uint8Array,u8>|inlined.0 (result i32) - local.get $0 - i32.load offset=4 - local.set $3 - local.get $0 - i32.load offset=8 - local.set $4 - loop $repeat|0 - local.get $2 - local.get $4 - i32.lt_s - if - i32.const 3 - global.set $~lib/argc - i32.const 0 - local.get $2 - local.get $3 - i32.add - i32.load8_u - local.get $2 - local.get $0 - local.get $1 - call_indirect (type $FUNCSIG$iiii) - i32.eqz - br_if $~lib/typedarray/EVERY<~lib/typedarray/Uint8Array,u8>|inlined.0 - drop - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $repeat|0 - end - end - i32.const 1 - end - ) - (func $std/typedarray/testArrayEvery<~lib/typedarray/Uint8Array,u8> (; 185 ;) (type $FUNCSIG$v) - (local $0 i32) - i32.const 3 - call $~lib/typedarray/Uint8Array#constructor - local.tee $0 - i32.const 0 - i32.const 2 - call $~lib/typedarray/Uint8Array#__set - local.get $0 - i32.const 1 - i32.const 4 - call $~lib/typedarray/Uint8Array#__set - local.get $0 - i32.const 2 - i32.const 6 - call $~lib/typedarray/Uint8Array#__set - local.get $0 - i32.const 81 - call $~lib/typedarray/Uint8Array#every - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 395 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 82 - call $~lib/typedarray/Uint8Array#every - if - i32.const 0 - i32.const 24 - i32.const 398 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - ) - (func $std/typedarray/testArrayEvery<~lib/typedarray/Uint8ClampedArray,u8> (; 186 ;) (type $FUNCSIG$v) - (local $0 i32) - i32.const 3 - call $~lib/typedarray/Uint8ClampedArray#constructor - local.tee $0 - i32.const 0 - i32.const 2 - call $~lib/typedarray/Uint8ClampedArray#__set - local.get $0 - i32.const 1 - i32.const 4 - call $~lib/typedarray/Uint8ClampedArray#__set - local.get $0 - i32.const 2 - i32.const 6 - call $~lib/typedarray/Uint8ClampedArray#__set - local.get $0 - i32.const 83 - call $~lib/typedarray/Uint8Array#every - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 395 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 84 - call $~lib/typedarray/Uint8Array#every - if - i32.const 0 - i32.const 24 - i32.const 398 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - ) - (func $std/typedarray/testArrayEvery<~lib/typedarray/Int16Array,i16>~anonymous|0 (; 187 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - local.get $0 - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s - i32.const 2 - i32.rem_s - i32.eqz - ) - (func $~lib/typedarray/Int16Array#every (; 188 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - block $~lib/typedarray/EVERY<~lib/typedarray/Int16Array,i16>|inlined.0 (result i32) - local.get $0 - i32.load offset=4 - local.set $3 - local.get $0 - i32.load offset=8 - i32.const 1 - i32.shr_u - local.set $4 - loop $repeat|0 - local.get $2 - local.get $4 - i32.lt_s - if - i32.const 3 - global.set $~lib/argc - i32.const 0 - local.get $2 - i32.const 1 - i32.shl - local.get $3 - i32.add - i32.load16_s - local.get $2 - local.get $0 - local.get $1 - call_indirect (type $FUNCSIG$iiii) - i32.eqz - br_if $~lib/typedarray/EVERY<~lib/typedarray/Int16Array,i16>|inlined.0 - drop - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $repeat|0 - end - end - i32.const 1 - end - ) - (func $std/typedarray/testArrayEvery<~lib/typedarray/Int16Array,i16> (; 189 ;) (type $FUNCSIG$v) - (local $0 i32) - i32.const 3 - call $~lib/typedarray/Int16Array#constructor - local.tee $0 - i32.const 0 - i32.const 2 - call $~lib/typedarray/Int16Array#__set - local.get $0 - i32.const 1 - i32.const 4 - call $~lib/typedarray/Int16Array#__set - local.get $0 - i32.const 2 - i32.const 6 - call $~lib/typedarray/Int16Array#__set - local.get $0 - i32.const 85 - call $~lib/typedarray/Int16Array#every - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 395 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 86 - call $~lib/typedarray/Int16Array#every - if - i32.const 0 - i32.const 24 - i32.const 398 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - ) - (func $~lib/typedarray/Uint16Array#every (; 190 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - block $~lib/typedarray/EVERY<~lib/typedarray/Uint16Array,u16>|inlined.0 (result i32) - local.get $0 - i32.load offset=4 - local.set $3 - local.get $0 - i32.load offset=8 - i32.const 1 - i32.shr_u - local.set $4 - loop $repeat|0 - local.get $2 - local.get $4 - i32.lt_s - if - i32.const 3 - global.set $~lib/argc - i32.const 0 - local.get $2 - i32.const 1 - i32.shl - local.get $3 - i32.add - i32.load16_u - local.get $2 - local.get $0 - local.get $1 - call_indirect (type $FUNCSIG$iiii) - i32.eqz - br_if $~lib/typedarray/EVERY<~lib/typedarray/Uint16Array,u16>|inlined.0 - drop - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $repeat|0 - end - end - i32.const 1 - end - ) - (func $std/typedarray/testArrayEvery<~lib/typedarray/Uint16Array,u16> (; 191 ;) (type $FUNCSIG$v) - (local $0 i32) - i32.const 3 - call $~lib/typedarray/Uint16Array#constructor - local.tee $0 - i32.const 0 - i32.const 2 - call $~lib/typedarray/Uint16Array#__set - local.get $0 - i32.const 1 - i32.const 4 - call $~lib/typedarray/Uint16Array#__set - local.get $0 - i32.const 2 - i32.const 6 - call $~lib/typedarray/Uint16Array#__set - local.get $0 - i32.const 87 - call $~lib/typedarray/Uint16Array#every - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 395 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 88 - call $~lib/typedarray/Uint16Array#every - if - i32.const 0 - i32.const 24 - i32.const 398 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - ) - (func $std/typedarray/testArrayEvery<~lib/typedarray/Int32Array,i32>~anonymous|0 (; 192 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - local.get $0 - i32.const 2 - i32.rem_s - i32.eqz - ) - (func $~lib/typedarray/Int32Array#every (; 193 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - block $~lib/typedarray/EVERY<~lib/typedarray/Int32Array,i32>|inlined.0 (result i32) - local.get $0 - i32.load offset=4 - local.set $3 - local.get $0 - i32.load offset=8 - i32.const 2 - i32.shr_u - local.set $4 - loop $repeat|0 - local.get $2 - local.get $4 - i32.lt_s - if - i32.const 3 - global.set $~lib/argc - i32.const 0 - local.get $2 - i32.const 2 - i32.shl - local.get $3 - i32.add - i32.load - local.get $2 - local.get $0 - local.get $1 - call_indirect (type $FUNCSIG$iiii) - i32.eqz - br_if $~lib/typedarray/EVERY<~lib/typedarray/Int32Array,i32>|inlined.0 - drop - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $repeat|0 - end - end - i32.const 1 - end - ) - (func $std/typedarray/testArrayEvery<~lib/typedarray/Int32Array,i32> (; 194 ;) (type $FUNCSIG$v) - (local $0 i32) - i32.const 3 - call $~lib/typedarray/Int32Array#constructor - local.tee $0 - i32.const 0 - i32.const 2 - call $~lib/typedarray/Int32Array#__set - local.get $0 - i32.const 1 - i32.const 4 - call $~lib/typedarray/Int32Array#__set - local.get $0 - i32.const 2 - i32.const 6 - call $~lib/typedarray/Int32Array#__set - local.get $0 - i32.const 89 - call $~lib/typedarray/Int32Array#every - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 395 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 90 - call $~lib/typedarray/Int32Array#every - if - i32.const 0 - i32.const 24 - i32.const 398 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - ) - (func $std/typedarray/testArrayEvery<~lib/typedarray/Uint32Array,u32> (; 195 ;) (type $FUNCSIG$v) - (local $0 i32) - i32.const 3 - call $~lib/typedarray/Uint32Array#constructor - local.tee $0 - i32.const 0 - i32.const 2 - call $~lib/typedarray/Uint32Array#__set - local.get $0 - i32.const 1 - i32.const 4 - call $~lib/typedarray/Uint32Array#__set - local.get $0 - i32.const 2 - i32.const 6 - call $~lib/typedarray/Uint32Array#__set - local.get $0 - i32.const 91 - call $~lib/typedarray/Int32Array#every - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 395 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 92 - call $~lib/typedarray/Int32Array#every - if - i32.const 0 - i32.const 24 - i32.const 398 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - ) - (func $std/typedarray/testArrayEvery<~lib/typedarray/Int64Array,i64>~anonymous|0 (; 196 ;) (type $FUNCSIG$ijii) (param $0 i64) (param $1 i32) (param $2 i32) (result i32) - local.get $0 - i64.const 2 - i64.rem_s - i64.const 0 - i64.eq - ) - (func $~lib/typedarray/Int64Array#every (; 197 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - block $~lib/typedarray/EVERY<~lib/typedarray/Int64Array,i64>|inlined.0 (result i32) - local.get $0 - i32.load offset=4 - local.set $3 - local.get $0 - i32.load offset=8 - i32.const 3 - i32.shr_u - local.set $4 - loop $repeat|0 - local.get $2 - local.get $4 - i32.lt_s - if - i32.const 3 - global.set $~lib/argc - i32.const 0 - local.get $2 - i32.const 3 - i32.shl - local.get $3 - i32.add - i64.load - local.get $2 - local.get $0 - local.get $1 - call_indirect (type $FUNCSIG$ijii) - i32.eqz - br_if $~lib/typedarray/EVERY<~lib/typedarray/Int64Array,i64>|inlined.0 - drop - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $repeat|0 - end - end - i32.const 1 - end - ) - (func $std/typedarray/testArrayEvery<~lib/typedarray/Int64Array,i64> (; 198 ;) (type $FUNCSIG$v) - (local $0 i32) - i32.const 3 - call $~lib/typedarray/Int64Array#constructor - local.tee $0 - i32.const 0 - i64.const 2 - call $~lib/typedarray/Int64Array#__set - local.get $0 - i32.const 1 - i64.const 4 - call $~lib/typedarray/Int64Array#__set - local.get $0 - i32.const 2 - i64.const 6 - call $~lib/typedarray/Int64Array#__set - local.get $0 - i32.const 93 - call $~lib/typedarray/Int64Array#every - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 395 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 94 - call $~lib/typedarray/Int64Array#every - if - i32.const 0 - i32.const 24 - i32.const 398 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - ) - (func $std/typedarray/testArrayEvery<~lib/typedarray/Uint64Array,u64>~anonymous|0 (; 199 ;) (type $FUNCSIG$ijii) (param $0 i64) (param $1 i32) (param $2 i32) (result i32) - local.get $0 - i64.const 2 - i64.rem_u - i64.const 0 - i64.eq - ) - (func $std/typedarray/testArrayEvery<~lib/typedarray/Uint64Array,u64> (; 200 ;) (type $FUNCSIG$v) - (local $0 i32) - i32.const 3 - call $~lib/typedarray/Uint64Array#constructor - local.tee $0 - i32.const 0 - i64.const 2 - call $~lib/typedarray/Uint64Array#__set - local.get $0 - i32.const 1 - i64.const 4 - call $~lib/typedarray/Uint64Array#__set - local.get $0 - i32.const 2 - i64.const 6 - call $~lib/typedarray/Uint64Array#__set - local.get $0 - i32.const 95 - call $~lib/typedarray/Int64Array#every - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 395 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 96 - call $~lib/typedarray/Int64Array#every - if - i32.const 0 - i32.const 24 - i32.const 398 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - ) - (func $~lib/math/NativeMathf.mod (; 201 ;) (type $FUNCSIG$ff) (param $0 f32) (result f32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - local.get $0 - i32.reinterpret_f32 - local.tee $2 - i32.const -2147483648 - i32.and - local.set $4 - local.get $2 - i32.const 23 - i32.shr_u - i32.const 255 - i32.and - local.tee $3 - i32.const 255 - i32.eq - if (result i32) - i32.const 1 - else - i32.const 0 - end - if - local.get $0 - f32.const 2 - f32.mul - local.tee $0 - local.get $0 - f32.div - return - end - block $folding-inner0 - local.get $2 - i32.const 1 - i32.shl - local.tee $1 - i32.const -2147483648 - i32.le_u - if - local.get $1 - i32.const -2147483648 - i32.eq - br_if $folding-inner0 - local.get $0 - return - end - local.get $3 - if (result i32) - local.get $2 - i32.const 8388607 - i32.and - i32.const 8388608 - i32.or - else - local.get $2 - i32.const 1 - local.get $3 - local.get $2 - i32.const 9 - i32.shl - i32.clz - i32.sub - local.tee $3 - i32.sub - i32.shl - end + call $~lib/rt/purerc/__retain local.set $1 - loop $continue|0 - local.get $3 - i32.const 128 - i32.gt_s - if + local.get $1 + i32.load offset=4 + local.set $2 + block $break|0 + block + i32.const 0 + local.set $3 local.get $1 - i32.const 8388608 - i32.ge_u - if (result i32) - local.get $1 - i32.const 8388608 - i32.eq - br_if $folding-inner0 - local.get $1 - i32.const 8388608 - i32.sub - else - local.get $1 - end - i32.const 1 - i32.shl - local.set $1 - local.get $3 + call $~lib/typedarray/Float64Array#get:length i32.const 1 i32.sub - local.set $3 - br $continue|0 + local.set $4 end - end - local.get $1 - i32.const 8388608 - i32.ge_u - if - local.get $1 - i32.const 8388608 - i32.eq - br_if $folding-inner0 - local.get $1 - i32.const 8388608 - i32.sub - local.set $1 - end - local.get $1 - local.get $1 - i32.const 8 - i32.shl - i32.clz - local.tee $1 - i32.shl - local.set $2 - local.get $3 - local.get $1 - i32.sub - local.tee $1 - i32.const 0 - i32.gt_s - if (result i32) - local.get $2 - i32.const 8388608 - i32.sub - local.get $1 - i32.const 23 - i32.shl - i32.or - else - local.get $2 - i32.const 1 - local.get $1 - i32.sub - i32.shr_u - end - local.get $4 - i32.or - f32.reinterpret_i32 - return - end - f32.const 0 - local.get $0 - f32.mul - ) - (func $std/typedarray/testArrayEvery<~lib/typedarray/Float32Array,f32>~anonymous|0 (; 202 ;) (type $FUNCSIG$ifii) (param $0 f32) (param $1 i32) (param $2 i32) (result i32) - local.get $0 - call $~lib/math/NativeMathf.mod - f32.const 0 - f32.eq - ) - (func $~lib/typedarray/Float32Array#every (; 203 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - block $~lib/typedarray/EVERY<~lib/typedarray/Float32Array,f32>|inlined.0 (result i32) - local.get $0 - i32.load offset=4 - local.set $3 - local.get $0 - i32.load offset=8 - i32.const 2 - i32.shr_u - local.set $4 - loop $repeat|0 - local.get $2 - local.get $4 - i32.lt_s - if - i32.const 3 - global.set $~lib/argc - i32.const 0 - local.get $2 - i32.const 2 - i32.shl + loop $repeat|0 local.get $3 - i32.add - f32.load - local.get $2 - local.get $0 - local.get $1 - call_indirect (type $FUNCSIG$ifii) + local.get $4 + i32.lt_s i32.eqz - br_if $~lib/typedarray/EVERY<~lib/typedarray/Float32Array,f32>|inlined.0 - drop + br_if $break|0 local.get $2 - i32.const 1 - i32.add - local.set $2 - br $repeat|0 - end - end - i32.const 1 - end - ) - (func $std/typedarray/testArrayEvery<~lib/typedarray/Float32Array,f32> (; 204 ;) (type $FUNCSIG$v) - (local $0 i32) - i32.const 3 - call $~lib/typedarray/Float32Array#constructor - local.tee $0 - i32.const 0 - f32.const 2 - call $~lib/typedarray/Float32Array#__set - local.get $0 - i32.const 1 - f32.const 4 - call $~lib/typedarray/Float32Array#__set - local.get $0 - i32.const 2 - f32.const 6 - call $~lib/typedarray/Float32Array#__set - local.get $0 - i32.const 97 - call $~lib/typedarray/Float32Array#every - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 395 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 98 - call $~lib/typedarray/Float32Array#every - if - i32.const 0 - i32.const 24 - i32.const 398 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - ) - (func $~lib/math/NativeMath.mod (; 205 ;) (type $FUNCSIG$dd) (param $0 f64) (result f64) - (local $1 i64) - (local $2 i64) - (local $3 i64) - (local $4 i64) - local.get $0 - i64.reinterpret_f64 - local.tee $2 - i64.const 63 - i64.shr_u - local.set $4 - local.get $2 - i64.const 52 - i64.shr_u - i64.const 2047 - i64.and - local.tee $3 - i64.const 2047 - i64.eq - if (result i32) - i32.const 1 - else - i32.const 0 - end - if - local.get $0 - f64.const 2 - f64.mul - local.tee $0 - local.get $0 - f64.div - return - end - block $folding-inner0 - local.get $2 - i64.const 1 - i64.shl - local.tee $1 - i64.const -9223372036854775808 - i64.le_u - if - local.get $1 - i64.const -9223372036854775808 - i64.eq - br_if $folding-inner0 - local.get $0 - return - end - local.get $3 - i64.eqz - if (result i64) - local.get $2 - i64.const 0 - local.get $3 - local.get $2 - i64.const 12 - i64.shl - i64.clz - i64.sub - local.tee $3 - i64.sub - i64.const 1 - i64.add - i64.shl - else - local.get $2 - i64.const 4503599627370495 - i64.and - i64.const 4503599627370496 - i64.or - end - local.set $1 - loop $continue|0 - local.get $3 - i64.const 1024 - i64.gt_s - if - local.get $1 - i64.const 4503599627370496 - i64.ge_u - if (result i64) - local.get $1 - i64.const 4503599627370496 - i64.eq - br_if $folding-inner0 - local.get $1 - i64.const 4503599627370496 - i64.sub - else - local.get $1 - end - i64.const 1 - i64.shl - local.set $1 local.get $3 - i64.const 1 - i64.sub - local.set $3 - br $continue|0 - end - end - local.get $1 - i64.const 4503599627370496 - i64.ge_u - if - local.get $1 - i64.const 4503599627370496 - i64.eq - br_if $folding-inner0 - local.get $1 - i64.const 4503599627370496 - i64.sub - local.set $1 - end - local.get $1 - local.get $1 - i64.const 11 - i64.shl - i64.clz - local.tee $1 - i64.shl - local.set $2 - local.get $3 - local.get $1 - i64.sub - local.tee $1 - i64.const 0 - i64.gt_s - if (result i64) - local.get $2 - i64.const 4503599627370496 - i64.sub - local.get $1 - i64.const 52 - i64.shl - i64.or - else - local.get $2 - i64.const 0 - local.get $1 - i64.sub - i64.const 1 - i64.add - i64.shr_u - end - local.get $4 - i64.const 63 - i64.shl - i64.or - f64.reinterpret_i64 - return - end - f64.const 0 - local.get $0 - f64.mul - ) - (func $std/typedarray/testArrayEvery<~lib/typedarray/Float64Array,f64>~anonymous|0 (; 206 ;) (type $FUNCSIG$idii) (param $0 f64) (param $1 i32) (param $2 i32) (result i32) - local.get $0 - call $~lib/math/NativeMath.mod - f64.const 0 - f64.eq - ) - (func $~lib/typedarray/Float64Array#every (; 207 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - block $~lib/typedarray/EVERY<~lib/typedarray/Float64Array,f64>|inlined.0 (result i32) - local.get $0 - i32.load offset=4 - local.set $3 - local.get $0 - i32.load offset=8 - i32.const 3 - i32.shr_u - local.set $4 - loop $repeat|0 - local.get $2 - local.get $4 - i32.lt_s - if - i32.const 3 - global.set $~lib/argc - i32.const 0 - local.get $2 i32.const 3 i32.shl - local.get $3 i32.add + local.set $5 + local.get $2 + local.get $4 + i32.const 3 + i32.shl + i32.add + local.set $6 + local.get $5 f64.load - local.get $2 - local.get $0 - local.get $1 - call_indirect (type $FUNCSIG$idii) - i32.eqz - br_if $~lib/typedarray/EVERY<~lib/typedarray/Float64Array,f64>|inlined.0 - drop - local.get $2 - i32.const 1 - i32.add - local.set $2 + local.set $7 + local.get $5 + local.get $6 + f64.load + f64.store + local.get $6 + local.get $7 + f64.store + block + local.get $3 + i32.const 1 + i32.add + local.set $3 + local.get $4 + i32.const 1 + i32.sub + local.set $4 + end br $repeat|0 + unreachable end + unreachable end - i32.const 1 + local.get $1 end + local.tee $2 + call $~lib/rt/purerc/__retain + local.set $1 + local.get $2 + call $~lib/rt/purerc/__release + local.get $1 ) - (func $std/typedarray/testArrayEvery<~lib/typedarray/Float64Array,f64> (; 208 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayReverse<~lib/typedarray/Float64Array,f64> (; 384 ;) (type $FUNCSIG$v) (local $0 i32) - i32.const 3 - call $~lib/typedarray/Float64Array#constructor - local.tee $0 + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + global.get $std/typedarray/testArrayReverseValues + call $~lib/rt/purerc/__retain + local.set $0 i32.const 0 - f64.const 2 - call $~lib/typedarray/Float64Array#__set - local.get $0 - i32.const 1 - f64.const 4 - call $~lib/typedarray/Float64Array#__set - local.get $0 - i32.const 2 - f64.const 6 - call $~lib/typedarray/Float64Array#__set - local.get $0 - i32.const 99 - call $~lib/typedarray/Float64Array#every - i32.eqz - if + i32.const 9 + call $~lib/typedarray/Float64Array#constructor + local.tee $1 + call $~lib/rt/purerc/__retain + local.set $2 + i32.const 0 + i32.const 9 + call $~lib/typedarray/Float64Array#constructor + local.tee $3 + call $~lib/rt/purerc/__retain + local.set $4 + i32.const 0 + local.set $5 + block $break|0 i32.const 0 - i32.const 24 - i32.const 395 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 100 - call $~lib/typedarray/Float64Array#every - if - i32.const 0 - i32.const 24 - i32.const 398 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - ) - (func $std/typedarray/testArrayForEach<~lib/typedarray/Int8Array,i8>~anonymous|0 (; 209 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) - local.get $0 - i32.const 255 - i32.and - global.get $std/typedarray/forEachValues - local.get $1 - call $~lib/array/Array#__get - i32.const 255 - i32.and - i32.ne - if - i32.const 904 - i32.const 24 - i32.const 425 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $1 - global.get $std/typedarray/forEachCallCount - i32.ne - if - i32.const 968 - i32.const 24 - i32.const 426 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $2 - global.get $std/typedarray/forEachSelf - i32.ne - if - i32.const 1032 - i32.const 24 - i32.const 427 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - global.get $std/typedarray/forEachCallCount - i32.const 1 - i32.add - global.set $std/typedarray/forEachCallCount - ) - (func $~lib/typedarray/Int8Array#forEach (; 210 ;) (type $FUNCSIG$vi) (param $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - local.get $0 - i32.load offset=4 - local.set $2 - local.get $0 - i32.load offset=8 - local.set $3 - loop $repeat|0 - local.get $1 - local.get $3 - i32.lt_s - if - i32.const 3 - global.set $~lib/argc - local.get $1 - local.get $2 - i32.add - i32.load8_s - local.get $1 - local.get $0 - call $std/typedarray/testArrayForEach<~lib/typedarray/Int8Array,i8>~anonymous|0 - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $repeat|0 - end - end - ) - (func $std/typedarray/testArrayForEach<~lib/typedarray/Int8Array,i8> (; 211 ;) (type $FUNCSIG$v) - (local $0 i32) - i32.const 0 - global.set $std/typedarray/forEachCallCount - i32.const 3 - call $~lib/typedarray/Int8Array#constructor - local.tee $0 - global.set $std/typedarray/forEachSelf - local.get $0 - i32.const 0 - global.get $std/typedarray/forEachValues - i32.const 0 - call $~lib/array/Array#__get - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s - call $~lib/typedarray/Int8Array#__set - local.get $0 - i32.const 1 - global.get $std/typedarray/forEachValues - i32.const 1 - call $~lib/array/Array#__get - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s - call $~lib/typedarray/Int8Array#__set - local.get $0 - i32.const 2 - global.get $std/typedarray/forEachValues - i32.const 2 - call $~lib/array/Array#__get - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s - call $~lib/typedarray/Int8Array#__set - local.get $0 - call $~lib/typedarray/Int8Array#forEach - global.get $std/typedarray/forEachCallCount - i32.const 3 - i32.ne - if - i32.const 1112 - i32.const 24 - i32.const 430 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - ) - (func $~lib/typedarray/Uint8Array#forEach (; 212 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - local.get $0 - i32.load offset=4 - local.set $3 - local.get $0 - i32.load offset=8 - local.set $4 - loop $repeat|0 - local.get $2 - local.get $4 - i32.lt_s - if - i32.const 3 - global.set $~lib/argc - local.get $2 - local.get $3 - i32.add - i32.load8_u - local.get $2 - local.get $0 - local.get $1 - call_indirect (type $FUNCSIG$viii) - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $repeat|0 - end - end - ) - (func $std/typedarray/testArrayForEach<~lib/typedarray/Uint8Array,u8> (; 213 ;) (type $FUNCSIG$v) - (local $0 i32) - i32.const 0 - global.set $std/typedarray/forEachCallCount - i32.const 3 - call $~lib/typedarray/Uint8Array#constructor - local.tee $0 - global.set $std/typedarray/forEachSelf - local.get $0 - i32.const 0 - global.get $std/typedarray/forEachValues - i32.const 0 - call $~lib/array/Array#__get - i32.const 255 - i32.and - call $~lib/typedarray/Uint8Array#__set - local.get $0 - i32.const 1 - global.get $std/typedarray/forEachValues - i32.const 1 - call $~lib/array/Array#__get - i32.const 255 - i32.and - call $~lib/typedarray/Uint8Array#__set - local.get $0 - i32.const 2 - global.get $std/typedarray/forEachValues - i32.const 2 - call $~lib/array/Array#__get - i32.const 255 - i32.and - call $~lib/typedarray/Uint8Array#__set - local.get $0 - i32.const 102 - call $~lib/typedarray/Uint8Array#forEach - global.get $std/typedarray/forEachCallCount - i32.const 3 - i32.ne - if - i32.const 1112 - i32.const 24 - i32.const 430 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - ) - (func $std/typedarray/testArrayForEach<~lib/typedarray/Uint8ClampedArray,u8> (; 214 ;) (type $FUNCSIG$v) - (local $0 i32) - i32.const 0 - global.set $std/typedarray/forEachCallCount - i32.const 3 - call $~lib/typedarray/Uint8ClampedArray#constructor - local.tee $0 - global.set $std/typedarray/forEachSelf - local.get $0 - i32.const 0 - global.get $std/typedarray/forEachValues - i32.const 0 - call $~lib/array/Array#__get - i32.const 255 - i32.and - call $~lib/typedarray/Uint8ClampedArray#__set - local.get $0 - i32.const 1 - global.get $std/typedarray/forEachValues - i32.const 1 - call $~lib/array/Array#__get - i32.const 255 - i32.and - call $~lib/typedarray/Uint8ClampedArray#__set - local.get $0 - i32.const 2 - global.get $std/typedarray/forEachValues - i32.const 2 - call $~lib/array/Array#__get - i32.const 255 - i32.and - call $~lib/typedarray/Uint8ClampedArray#__set - local.get $0 - i32.const 103 - call $~lib/typedarray/Uint8Array#forEach - global.get $std/typedarray/forEachCallCount - i32.const 3 - i32.ne - if - i32.const 1112 - i32.const 24 - i32.const 430 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - ) - (func $std/typedarray/testArrayForEach<~lib/typedarray/Int16Array,i16>~anonymous|0 (; 215 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) - local.get $0 - i32.const 65535 - i32.and - global.get $std/typedarray/forEachValues - local.get $1 - call $~lib/array/Array#__get - i32.const 65535 - i32.and - i32.ne - if - i32.const 904 - i32.const 24 - i32.const 425 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $1 - global.get $std/typedarray/forEachCallCount - i32.ne - if - i32.const 968 - i32.const 24 - i32.const 426 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $2 - global.get $std/typedarray/forEachSelf - i32.ne - if - i32.const 1032 - i32.const 24 - i32.const 427 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - global.get $std/typedarray/forEachCallCount - i32.const 1 - i32.add - global.set $std/typedarray/forEachCallCount - ) - (func $~lib/typedarray/Int16Array#forEach (; 216 ;) (type $FUNCSIG$vi) (param $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - local.get $0 - i32.load offset=4 - local.set $2 - local.get $0 - i32.load offset=8 - i32.const 1 - i32.shr_u - local.set $3 - loop $repeat|0 - local.get $1 - local.get $3 - i32.lt_s - if - i32.const 3 - global.set $~lib/argc - local.get $1 - i32.const 1 - i32.shl - local.get $2 - i32.add - i32.load16_s - local.get $1 - local.get $0 - call $std/typedarray/testArrayForEach<~lib/typedarray/Int16Array,i16>~anonymous|0 - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $repeat|0 - end - end - ) - (func $std/typedarray/testArrayForEach<~lib/typedarray/Int16Array,i16> (; 217 ;) (type $FUNCSIG$v) - (local $0 i32) - i32.const 0 - global.set $std/typedarray/forEachCallCount - i32.const 3 - call $~lib/typedarray/Int16Array#constructor - local.tee $0 - global.set $std/typedarray/forEachSelf - local.get $0 - i32.const 0 - global.get $std/typedarray/forEachValues - i32.const 0 - call $~lib/array/Array#__get - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s - call $~lib/typedarray/Int16Array#__set - local.get $0 - i32.const 1 - global.get $std/typedarray/forEachValues - i32.const 1 - call $~lib/array/Array#__get - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s - call $~lib/typedarray/Int16Array#__set - local.get $0 - i32.const 2 - global.get $std/typedarray/forEachValues - i32.const 2 - call $~lib/array/Array#__get - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s - call $~lib/typedarray/Int16Array#__set - local.get $0 - call $~lib/typedarray/Int16Array#forEach - global.get $std/typedarray/forEachCallCount - i32.const 3 - i32.ne - if - i32.const 1112 - i32.const 24 - i32.const 430 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - ) - (func $~lib/typedarray/Uint16Array#forEach (; 218 ;) (type $FUNCSIG$vi) (param $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - local.get $0 - i32.load offset=4 - local.set $2 - local.get $0 - i32.load offset=8 - i32.const 1 - i32.shr_u - local.set $3 - loop $repeat|0 - local.get $1 - local.get $3 - i32.lt_s - if - i32.const 3 - global.set $~lib/argc - local.get $1 - i32.const 1 - i32.shl - local.get $2 - i32.add - i32.load16_u - local.get $1 - local.get $0 - call $std/typedarray/testArrayForEach<~lib/typedarray/Int16Array,i16>~anonymous|0 - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $repeat|0 - end - end - ) - (func $std/typedarray/testArrayForEach<~lib/typedarray/Uint16Array,u16> (; 219 ;) (type $FUNCSIG$v) - (local $0 i32) - i32.const 0 - global.set $std/typedarray/forEachCallCount - i32.const 3 - call $~lib/typedarray/Uint16Array#constructor - local.tee $0 - global.set $std/typedarray/forEachSelf - local.get $0 - i32.const 0 - global.get $std/typedarray/forEachValues - i32.const 0 - call $~lib/array/Array#__get - i32.const 65535 - i32.and - call $~lib/typedarray/Uint16Array#__set - local.get $0 - i32.const 1 - global.get $std/typedarray/forEachValues - i32.const 1 - call $~lib/array/Array#__get - i32.const 65535 - i32.and - call $~lib/typedarray/Uint16Array#__set - local.get $0 - i32.const 2 - global.get $std/typedarray/forEachValues - i32.const 2 - call $~lib/array/Array#__get - i32.const 65535 - i32.and - call $~lib/typedarray/Uint16Array#__set - local.get $0 - call $~lib/typedarray/Uint16Array#forEach - global.get $std/typedarray/forEachCallCount - i32.const 3 - i32.ne - if - i32.const 1112 - i32.const 24 - i32.const 430 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - ) - (func $std/typedarray/testArrayForEach<~lib/typedarray/Int32Array,i32>~anonymous|0 (; 220 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) - global.get $std/typedarray/forEachValues - local.get $1 - call $~lib/array/Array#__get - local.get $0 - i32.ne - if - i32.const 904 - i32.const 24 - i32.const 425 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $1 - global.get $std/typedarray/forEachCallCount - i32.ne - if - i32.const 968 - i32.const 24 - i32.const 426 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $2 - global.get $std/typedarray/forEachSelf - i32.ne - if - i32.const 1032 - i32.const 24 - i32.const 427 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - global.get $std/typedarray/forEachCallCount - i32.const 1 - i32.add - global.set $std/typedarray/forEachCallCount - ) - (func $~lib/typedarray/Int32Array#forEach (; 221 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - local.get $0 - i32.load offset=4 - local.set $3 - local.get $0 - i32.load offset=8 - i32.const 2 - i32.shr_u - local.set $4 - loop $repeat|0 - local.get $2 - local.get $4 - i32.lt_s - if - i32.const 3 - global.set $~lib/argc - local.get $2 - i32.const 2 - i32.shl - local.get $3 - i32.add - i32.load - local.get $2 - local.get $0 - local.get $1 - call_indirect (type $FUNCSIG$viii) - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $repeat|0 - end - end - ) - (func $std/typedarray/testArrayForEach<~lib/typedarray/Int32Array,i32> (; 222 ;) (type $FUNCSIG$v) - (local $0 i32) - i32.const 0 - global.set $std/typedarray/forEachCallCount - i32.const 3 - call $~lib/typedarray/Int32Array#constructor - local.tee $0 - global.set $std/typedarray/forEachSelf - local.get $0 - i32.const 0 - global.get $std/typedarray/forEachValues - i32.const 0 - call $~lib/array/Array#__get - call $~lib/typedarray/Int32Array#__set - local.get $0 - i32.const 1 - global.get $std/typedarray/forEachValues - i32.const 1 - call $~lib/array/Array#__get - call $~lib/typedarray/Int32Array#__set - local.get $0 - i32.const 2 - global.get $std/typedarray/forEachValues - i32.const 2 - call $~lib/array/Array#__get - call $~lib/typedarray/Int32Array#__set - local.get $0 - i32.const 106 - call $~lib/typedarray/Int32Array#forEach - global.get $std/typedarray/forEachCallCount - i32.const 3 - i32.ne - if - i32.const 1112 - i32.const 24 - i32.const 430 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - ) - (func $std/typedarray/testArrayForEach<~lib/typedarray/Uint32Array,u32> (; 223 ;) (type $FUNCSIG$v) - (local $0 i32) - i32.const 0 - global.set $std/typedarray/forEachCallCount - i32.const 3 - call $~lib/typedarray/Uint32Array#constructor - local.tee $0 - global.set $std/typedarray/forEachSelf - local.get $0 - i32.const 0 - global.get $std/typedarray/forEachValues - i32.const 0 - call $~lib/array/Array#__get - call $~lib/typedarray/Uint32Array#__set - local.get $0 - i32.const 1 - global.get $std/typedarray/forEachValues - i32.const 1 - call $~lib/array/Array#__get - call $~lib/typedarray/Uint32Array#__set - local.get $0 - i32.const 2 - global.get $std/typedarray/forEachValues - i32.const 2 - call $~lib/array/Array#__get - call $~lib/typedarray/Uint32Array#__set - local.get $0 - i32.const 107 - call $~lib/typedarray/Int32Array#forEach - global.get $std/typedarray/forEachCallCount - i32.const 3 - i32.ne - if - i32.const 1112 - i32.const 24 - i32.const 430 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - ) - (func $std/typedarray/testArrayForEach<~lib/typedarray/Int64Array,i64>~anonymous|0 (; 224 ;) (type $FUNCSIG$vjii) (param $0 i64) (param $1 i32) (param $2 i32) - local.get $0 - global.get $std/typedarray/forEachValues - local.get $1 - call $~lib/array/Array#__get - i64.extend_i32_s - i64.ne - if - i32.const 904 - i32.const 24 - i32.const 425 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $1 - global.get $std/typedarray/forEachCallCount - i32.ne - if - i32.const 968 - i32.const 24 - i32.const 426 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $2 - global.get $std/typedarray/forEachSelf - i32.ne - if - i32.const 1032 - i32.const 24 - i32.const 427 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - global.get $std/typedarray/forEachCallCount - i32.const 1 - i32.add - global.set $std/typedarray/forEachCallCount - ) - (func $~lib/typedarray/Int64Array#forEach (; 225 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - local.get $0 - i32.load offset=4 - local.set $3 - local.get $0 - i32.load offset=8 - i32.const 3 - i32.shr_u - local.set $4 - loop $repeat|0 - local.get $2 - local.get $4 - i32.lt_s - if - i32.const 3 - global.set $~lib/argc - local.get $2 - i32.const 3 - i32.shl - local.get $3 - i32.add - i64.load - local.get $2 - local.get $0 - local.get $1 - call_indirect (type $FUNCSIG$vjii) - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $repeat|0 - end - end - ) - (func $std/typedarray/testArrayForEach<~lib/typedarray/Int64Array,i64> (; 226 ;) (type $FUNCSIG$v) - (local $0 i32) - i32.const 0 - global.set $std/typedarray/forEachCallCount - i32.const 3 - call $~lib/typedarray/Int64Array#constructor - local.tee $0 - global.set $std/typedarray/forEachSelf - local.get $0 - i32.const 0 - global.get $std/typedarray/forEachValues - i32.const 0 - call $~lib/array/Array#__get - i64.extend_i32_s - call $~lib/typedarray/Int64Array#__set - local.get $0 - i32.const 1 - global.get $std/typedarray/forEachValues - i32.const 1 - call $~lib/array/Array#__get - i64.extend_i32_s - call $~lib/typedarray/Int64Array#__set - local.get $0 - i32.const 2 - global.get $std/typedarray/forEachValues - i32.const 2 - call $~lib/array/Array#__get - i64.extend_i32_s - call $~lib/typedarray/Int64Array#__set - local.get $0 - i32.const 108 - call $~lib/typedarray/Int64Array#forEach - global.get $std/typedarray/forEachCallCount - i32.const 3 - i32.ne - if - i32.const 1112 - i32.const 24 - i32.const 430 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - ) - (func $std/typedarray/testArrayForEach<~lib/typedarray/Uint64Array,u64> (; 227 ;) (type $FUNCSIG$v) - (local $0 i32) - i32.const 0 - global.set $std/typedarray/forEachCallCount - i32.const 3 - call $~lib/typedarray/Uint64Array#constructor - local.tee $0 - global.set $std/typedarray/forEachSelf - local.get $0 - i32.const 0 - global.get $std/typedarray/forEachValues - i32.const 0 - call $~lib/array/Array#__get - i64.extend_i32_s - call $~lib/typedarray/Uint64Array#__set - local.get $0 - i32.const 1 - global.get $std/typedarray/forEachValues - i32.const 1 - call $~lib/array/Array#__get - i64.extend_i32_s - call $~lib/typedarray/Uint64Array#__set - local.get $0 - i32.const 2 - global.get $std/typedarray/forEachValues - i32.const 2 - call $~lib/array/Array#__get - i64.extend_i32_s - call $~lib/typedarray/Uint64Array#__set - local.get $0 - i32.const 109 - call $~lib/typedarray/Int64Array#forEach - global.get $std/typedarray/forEachCallCount - i32.const 3 - i32.ne - if - i32.const 1112 - i32.const 24 - i32.const 430 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - ) - (func $std/typedarray/testArrayForEach<~lib/typedarray/Float32Array,f32>~anonymous|0 (; 228 ;) (type $FUNCSIG$vfii) (param $0 f32) (param $1 i32) (param $2 i32) - local.get $0 - global.get $std/typedarray/forEachValues - local.get $1 - call $~lib/array/Array#__get - f32.convert_i32_s - f32.ne - if - i32.const 904 - i32.const 24 - i32.const 425 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $1 - global.get $std/typedarray/forEachCallCount - i32.ne - if - i32.const 968 - i32.const 24 - i32.const 426 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $2 - global.get $std/typedarray/forEachSelf - i32.ne - if - i32.const 1032 - i32.const 24 - i32.const 427 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - global.get $std/typedarray/forEachCallCount - i32.const 1 - i32.add - global.set $std/typedarray/forEachCallCount - ) - (func $~lib/typedarray/Float32Array#forEach (; 229 ;) (type $FUNCSIG$vi) (param $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - local.get $0 - i32.load offset=4 - local.set $2 - local.get $0 - i32.load offset=8 - i32.const 2 - i32.shr_u - local.set $3 - loop $repeat|0 - local.get $1 - local.get $3 - i32.lt_s - if - i32.const 3 - global.set $~lib/argc - local.get $1 - i32.const 2 - i32.shl - local.get $2 - i32.add - f32.load - local.get $1 - local.get $0 - call $std/typedarray/testArrayForEach<~lib/typedarray/Float32Array,f32>~anonymous|0 - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $repeat|0 - end - end - ) - (func $std/typedarray/testArrayForEach<~lib/typedarray/Float32Array,f32> (; 230 ;) (type $FUNCSIG$v) - (local $0 i32) - i32.const 0 - global.set $std/typedarray/forEachCallCount - i32.const 3 - call $~lib/typedarray/Float32Array#constructor - local.tee $0 - global.set $std/typedarray/forEachSelf - local.get $0 - i32.const 0 - global.get $std/typedarray/forEachValues - i32.const 0 - call $~lib/array/Array#__get - f32.convert_i32_s - call $~lib/typedarray/Float32Array#__set - local.get $0 - i32.const 1 - global.get $std/typedarray/forEachValues - i32.const 1 - call $~lib/array/Array#__get - f32.convert_i32_s - call $~lib/typedarray/Float32Array#__set - local.get $0 - i32.const 2 - global.get $std/typedarray/forEachValues - i32.const 2 - call $~lib/array/Array#__get - f32.convert_i32_s - call $~lib/typedarray/Float32Array#__set - local.get $0 - call $~lib/typedarray/Float32Array#forEach - global.get $std/typedarray/forEachCallCount - i32.const 3 - i32.ne - if - i32.const 1112 - i32.const 24 - i32.const 430 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - ) - (func $std/typedarray/testArrayForEach<~lib/typedarray/Float64Array,f64>~anonymous|0 (; 231 ;) (type $FUNCSIG$vdii) (param $0 f64) (param $1 i32) (param $2 i32) - local.get $0 - global.get $std/typedarray/forEachValues - local.get $1 - call $~lib/array/Array#__get - f64.convert_i32_s - f64.ne - if - i32.const 904 - i32.const 24 - i32.const 425 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $1 - global.get $std/typedarray/forEachCallCount - i32.ne - if - i32.const 968 - i32.const 24 - i32.const 426 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $2 - global.get $std/typedarray/forEachSelf - i32.ne - if - i32.const 1032 - i32.const 24 - i32.const 427 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - global.get $std/typedarray/forEachCallCount - i32.const 1 - i32.add - global.set $std/typedarray/forEachCallCount - ) - (func $~lib/typedarray/Float64Array#forEach (; 232 ;) (type $FUNCSIG$vi) (param $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - local.get $0 - i32.load offset=4 - local.set $2 - local.get $0 - i32.load offset=8 - i32.const 3 - i32.shr_u - local.set $3 - loop $repeat|0 - local.get $1 - local.get $3 - i32.lt_s - if - i32.const 3 - global.set $~lib/argc - local.get $1 - i32.const 3 - i32.shl - local.get $2 - i32.add - f64.load - local.get $1 - local.get $0 - call $std/typedarray/testArrayForEach<~lib/typedarray/Float64Array,f64>~anonymous|0 - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $repeat|0 - end - end - ) - (func $std/typedarray/testArrayForEach<~lib/typedarray/Float64Array,f64> (; 233 ;) (type $FUNCSIG$v) - (local $0 i32) - i32.const 0 - global.set $std/typedarray/forEachCallCount - i32.const 3 - call $~lib/typedarray/Float64Array#constructor - local.tee $0 - global.set $std/typedarray/forEachSelf - local.get $0 - i32.const 0 - global.get $std/typedarray/forEachValues - i32.const 0 - call $~lib/array/Array#__get - f64.convert_i32_s - call $~lib/typedarray/Float64Array#__set - local.get $0 - i32.const 1 - global.get $std/typedarray/forEachValues - i32.const 1 - call $~lib/array/Array#__get - f64.convert_i32_s - call $~lib/typedarray/Float64Array#__set - local.get $0 - i32.const 2 - global.get $std/typedarray/forEachValues - i32.const 2 - call $~lib/array/Array#__get - f64.convert_i32_s - call $~lib/typedarray/Float64Array#__set - local.get $0 - call $~lib/typedarray/Float64Array#forEach - global.get $std/typedarray/forEachCallCount - i32.const 3 - i32.ne - if - i32.const 1112 - i32.const 24 - i32.const 430 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - ) - (func $~lib/typedarray/Int8Array#reverse (; 234 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $0 - i32.load offset=4 - local.set $4 - local.get $0 - i32.load offset=8 - i32.const 1 - i32.sub - local.set $1 - loop $repeat|0 - local.get $2 - local.get $1 - i32.lt_s - if - local.get $2 - local.get $4 - i32.add - local.tee $3 - i32.load8_s - local.set $5 - local.get $3 - local.get $1 - local.get $4 - i32.add - local.tee $3 - i32.load8_s - i32.store8 - local.get $3 + local.set $5 + loop $repeat|0 local.get $5 - i32.store8 - local.get $2 - i32.const 1 - i32.add - local.set $2 - local.get $1 - i32.const 1 - i32.sub - local.set $1 - br $repeat|0 - end - end - local.get $0 - ) - (func $std/typedarray/testArrayReverse<~lib/typedarray/Int8Array,i8> (; 235 ;) (type $FUNCSIG$v) - (local $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - global.get $std/typedarray/testArrayReverseValues - local.set $1 - i32.const 9 - call $~lib/typedarray/Int8Array#constructor - local.set $2 - i32.const 9 - call $~lib/typedarray/Int8Array#constructor - local.set $3 - loop $repeat|0 - block $break|0 - local.get $0 i32.const 9 - i32.ge_s + i32.lt_s + i32.eqz br_if $break|0 local.get $2 - local.get $0 - local.get $1 - local.get $0 - call $~lib/array/Array#__get - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s - call $~lib/typedarray/Int8Array#__set - local.get $3 - local.get $0 - local.get $1 - local.get $0 - call $~lib/array/Array#__get - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s - call $~lib/typedarray/Int8Array#__set - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $repeat|0 - end - end - local.get $2 - call $~lib/typedarray/Int8Array#reverse - drop - i32.const 0 - local.set $0 - loop $repeat|1 - block $break|1 - local.get $0 - i32.const 9 - i32.ge_s - br_if $break|1 - local.get $2 - local.get $0 - call $~lib/typedarray/Int8Array#__get - local.get $1 - i32.const 8 - local.get $0 - i32.sub - call $~lib/array/Array#__get - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s - i32.ne - if - i32.const 1272 - i32.const 24 - i32.const 461 - i32.const 4 - call $~lib/builtins/abort - unreachable - else - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $repeat|1 - end - unreachable - end - end - local.get $3 - i32.const 4 - i32.const 8 - call $~lib/typedarray/Int8Array#subarray - call $~lib/typedarray/Int8Array#reverse - local.tee $0 - i32.const 0 - call $~lib/typedarray/Int8Array#__get - i32.const 8 - i32.ne - if - i32.const 1360 - i32.const 24 - i32.const 466 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 1 - call $~lib/typedarray/Int8Array#__get - i32.const 7 - i32.ne - if - i32.const 1360 - i32.const 24 - i32.const 467 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 2 - call $~lib/typedarray/Int8Array#__get - i32.const 6 - i32.ne - if - i32.const 1360 - i32.const 24 - i32.const 468 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 3 - call $~lib/typedarray/Int8Array#__get - i32.const 5 - i32.ne - if - i32.const 1360 - i32.const 24 - i32.const 469 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - ) - (func $~lib/typedarray/Uint8Array#reverse (; 236 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $0 - i32.load offset=4 - local.set $4 - local.get $0 - i32.load offset=8 - i32.const 1 - i32.sub - local.set $1 - loop $repeat|0 - local.get $2 - local.get $1 - i32.lt_s - if - local.get $2 - local.get $4 - i32.add - local.tee $3 - i32.load8_u - local.set $5 - local.get $3 - local.get $1 - local.get $4 - i32.add - local.tee $3 - i32.load8_u - i32.store8 - local.get $3 local.get $5 - i32.store8 - local.get $2 - i32.const 1 - i32.add - local.set $2 - local.get $1 - i32.const 1 - i32.sub - local.set $1 - br $repeat|0 - end - end - local.get $0 - ) - (func $~lib/typedarray/Uint8Array#subarray (; 237 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - i32.const 8 - local.get $0 - i32.load offset=8 - local.tee $2 - i32.const 8 - local.get $2 - i32.lt_s - select - local.set $3 - i32.const 12 - call $~lib/util/runtime/allocate - local.set $1 - local.get $0 - i32.load offset=4 - local.set $4 - local.get $0 - i32.load - local.tee $0 - local.get $1 - i32.load - i32.ne - drop - local.get $1 - local.get $0 - i32.store - local.get $1 - local.get $4 - i32.const 4 - local.get $2 - i32.const 4 - local.get $2 - i32.lt_s - select - local.tee $0 - i32.add - i32.store offset=4 - local.get $1 - local.get $3 - local.get $0 - local.get $3 - local.get $0 - i32.gt_s - select - local.get $0 - i32.sub - i32.store offset=8 - local.get $1 - i32.const 18 - call $~lib/util/runtime/register - ) - (func $std/typedarray/testArrayReverse<~lib/typedarray/Uint8Array,u8> (; 238 ;) (type $FUNCSIG$v) - (local $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - global.get $std/typedarray/testArrayReverseValues - local.set $1 - i32.const 9 - call $~lib/typedarray/Uint8Array#constructor - local.set $2 - i32.const 9 - call $~lib/typedarray/Uint8Array#constructor - local.set $3 - loop $repeat|0 - block $break|0 local.get $0 - i32.const 9 - i32.ge_s - br_if $break|0 - local.get $2 - local.get $0 - local.get $1 - local.get $0 - call $~lib/array/Array#__get - i32.const 255 - i32.and - call $~lib/typedarray/Uint8Array#__set - local.get $3 - local.get $0 - local.get $1 - local.get $0 - call $~lib/array/Array#__get - i32.const 255 - i32.and - call $~lib/typedarray/Uint8Array#__set - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $repeat|0 - end - end - local.get $2 - call $~lib/typedarray/Uint8Array#reverse - drop - i32.const 0 - local.set $0 - loop $repeat|1 - block $break|1 - local.get $0 - i32.const 9 - i32.ge_s - br_if $break|1 - local.get $2 - local.get $0 - call $~lib/typedarray/Uint8Array#__get - local.get $1 - i32.const 8 - local.get $0 - i32.sub - call $~lib/array/Array#__get - i32.const 255 - i32.and - i32.ne - if - i32.const 1272 - i32.const 24 - i32.const 461 - i32.const 4 - call $~lib/builtins/abort - unreachable - else - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $repeat|1 - end - unreachable - end - end - local.get $3 - call $~lib/typedarray/Uint8Array#subarray - call $~lib/typedarray/Uint8Array#reverse - local.tee $0 - i32.const 0 - call $~lib/typedarray/Uint8Array#__get - i32.const 8 - i32.ne - if - i32.const 1360 - i32.const 24 - i32.const 466 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 1 - call $~lib/typedarray/Uint8Array#__get - i32.const 7 - i32.ne - if - i32.const 1360 - i32.const 24 - i32.const 467 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 2 - call $~lib/typedarray/Uint8Array#__get - i32.const 6 - i32.ne - if - i32.const 1360 - i32.const 24 - i32.const 468 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 3 - call $~lib/typedarray/Uint8Array#__get - i32.const 5 - i32.ne - if - i32.const 1360 - i32.const 24 - i32.const 469 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - ) - (func $~lib/typedarray/Uint8ClampedArray#subarray (; 239 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - i32.const 8 - local.get $0 - i32.load offset=8 - local.tee $2 - i32.const 8 - local.get $2 - i32.lt_s - select - local.set $3 - i32.const 12 - call $~lib/util/runtime/allocate - local.set $1 - local.get $0 - i32.load offset=4 - local.set $4 - local.get $0 - i32.load - local.tee $0 - local.get $1 - i32.load - i32.ne - drop - local.get $1 - local.get $0 - i32.store - local.get $1 - local.get $4 - i32.const 4 - local.get $2 - i32.const 4 - local.get $2 - i32.lt_s - select - local.tee $0 - i32.add - i32.store offset=4 - local.get $1 - local.get $3 - local.get $0 - local.get $3 - local.get $0 - i32.gt_s - select - local.get $0 - i32.sub - i32.store offset=8 - local.get $1 - i32.const 19 - call $~lib/util/runtime/register - ) - (func $std/typedarray/testArrayReverse<~lib/typedarray/Uint8ClampedArray,u8> (; 240 ;) (type $FUNCSIG$v) - (local $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - global.get $std/typedarray/testArrayReverseValues - local.set $1 - i32.const 9 - call $~lib/typedarray/Uint8ClampedArray#constructor - local.set $2 - i32.const 9 - call $~lib/typedarray/Uint8ClampedArray#constructor - local.set $3 - loop $repeat|0 - block $break|0 - local.get $0 - i32.const 9 - i32.ge_s - br_if $break|0 - local.get $2 - local.get $0 - local.get $1 - local.get $0 - call $~lib/array/Array#__get - i32.const 255 - i32.and - call $~lib/typedarray/Uint8ClampedArray#__set - local.get $3 - local.get $0 - local.get $1 - local.get $0 - call $~lib/array/Array#__get - i32.const 255 - i32.and - call $~lib/typedarray/Uint8ClampedArray#__set - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $repeat|0 - end - end - local.get $2 - call $~lib/typedarray/Uint8Array#reverse - drop - i32.const 0 - local.set $0 - loop $repeat|1 - block $break|1 - local.get $0 - i32.const 9 - i32.ge_s - br_if $break|1 - local.get $2 - local.get $0 - call $~lib/typedarray/Uint8ClampedArray#__get - local.get $1 - i32.const 8 - local.get $0 - i32.sub - call $~lib/array/Array#__get - i32.const 255 - i32.and - i32.ne - if - i32.const 1272 - i32.const 24 - i32.const 461 - i32.const 4 - call $~lib/builtins/abort - unreachable - else - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $repeat|1 - end - unreachable - end - end - local.get $3 - call $~lib/typedarray/Uint8ClampedArray#subarray - call $~lib/typedarray/Uint8Array#reverse - local.tee $0 - i32.const 0 - call $~lib/typedarray/Uint8ClampedArray#__get - i32.const 8 - i32.ne - if - i32.const 1360 - i32.const 24 - i32.const 466 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 1 - call $~lib/typedarray/Uint8ClampedArray#__get - i32.const 7 - i32.ne - if - i32.const 1360 - i32.const 24 - i32.const 467 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 2 - call $~lib/typedarray/Uint8ClampedArray#__get - i32.const 6 - i32.ne - if - i32.const 1360 - i32.const 24 - i32.const 468 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 3 - call $~lib/typedarray/Uint8ClampedArray#__get - i32.const 5 - i32.ne - if - i32.const 1360 - i32.const 24 - i32.const 469 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - ) - (func $~lib/typedarray/Int16Array#reverse (; 241 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $0 - i32.load offset=4 - local.set $4 - local.get $0 - i32.load offset=8 - i32.const 1 - i32.shr_u - i32.const 1 - i32.sub - local.set $1 - loop $repeat|0 - local.get $2 - local.get $1 - i32.lt_s - if - local.get $2 - i32.const 1 - i32.shl - local.get $4 - i32.add - local.tee $3 - i32.load16_s - local.set $5 - local.get $3 - local.get $1 - i32.const 1 - i32.shl - local.get $4 - i32.add - local.tee $3 - i32.load16_s - i32.store16 - local.get $3 local.get $5 - i32.store16 - local.get $2 - i32.const 1 - i32.add - local.set $2 - local.get $1 - i32.const 1 - i32.sub - local.set $1 - br $repeat|0 - end - end - local.get $0 - ) - (func $~lib/typedarray/Int16Array#subarray (; 242 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - i32.const 8 - local.get $0 - i32.load offset=8 - i32.const 1 - i32.shr_u - local.tee $2 - i32.const 8 - local.get $2 - i32.lt_s - select - local.set $3 - i32.const 12 - call $~lib/util/runtime/allocate - local.set $1 - local.get $0 - i32.load offset=4 - local.set $4 - local.get $0 - i32.load - local.tee $0 - local.get $1 - i32.load - i32.ne - drop - local.get $1 - local.get $0 - i32.store - local.get $1 - i32.const 4 - local.get $2 - i32.const 4 - local.get $2 - i32.lt_s - select - local.tee $0 - i32.const 1 - i32.shl - local.get $4 - i32.add - i32.store offset=4 - local.get $1 - local.get $3 - local.get $0 - local.get $3 - local.get $0 - i32.gt_s - select - local.get $0 - i32.sub - i32.const 1 - i32.shl - i32.store offset=8 - local.get $1 - i32.const 20 - call $~lib/util/runtime/register - ) - (func $std/typedarray/testArrayReverse<~lib/typedarray/Int16Array,i16> (; 243 ;) (type $FUNCSIG$v) - (local $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - global.get $std/typedarray/testArrayReverseValues - local.set $1 - i32.const 9 - call $~lib/typedarray/Int16Array#constructor - local.set $2 - i32.const 9 - call $~lib/typedarray/Int16Array#constructor - local.set $3 - loop $repeat|0 - block $break|0 - local.get $0 - i32.const 9 - i32.ge_s - br_if $break|0 - local.get $2 - local.get $0 - local.get $1 - local.get $0 - call $~lib/array/Array#__get - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s - call $~lib/typedarray/Int16Array#__set - local.get $3 - local.get $0 - local.get $1 - local.get $0 - call $~lib/array/Array#__get - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s - call $~lib/typedarray/Int16Array#__set - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $repeat|0 - end - end - local.get $2 - call $~lib/typedarray/Int16Array#reverse - drop - i32.const 0 - local.set $0 - loop $repeat|1 - block $break|1 - local.get $0 - i32.const 9 - i32.ge_s - br_if $break|1 - local.get $2 - local.get $0 - call $~lib/typedarray/Int16Array#__get - local.get $1 - i32.const 8 - local.get $0 - i32.sub - call $~lib/array/Array#__get - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s - i32.ne - if - i32.const 1272 - i32.const 24 - i32.const 461 - i32.const 4 - call $~lib/builtins/abort - unreachable - else - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $repeat|1 - end - unreachable - end - end - local.get $3 - call $~lib/typedarray/Int16Array#subarray - call $~lib/typedarray/Int16Array#reverse - local.tee $0 - i32.const 0 - call $~lib/typedarray/Int16Array#__get - i32.const 8 - i32.ne - if - i32.const 1360 - i32.const 24 - i32.const 466 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 1 - call $~lib/typedarray/Int16Array#__get - i32.const 7 - i32.ne - if - i32.const 1360 - i32.const 24 - i32.const 467 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 2 - call $~lib/typedarray/Int16Array#__get - i32.const 6 - i32.ne - if - i32.const 1360 - i32.const 24 - i32.const 468 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 3 - call $~lib/typedarray/Int16Array#__get - i32.const 5 - i32.ne - if - i32.const 1360 - i32.const 24 - i32.const 469 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - ) - (func $~lib/typedarray/Uint16Array#reverse (; 244 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $0 - i32.load offset=4 - local.set $4 - local.get $0 - i32.load offset=8 - i32.const 1 - i32.shr_u - i32.const 1 - i32.sub - local.set $1 - loop $repeat|0 - local.get $2 - local.get $1 - i32.lt_s - if - local.get $2 - i32.const 1 - i32.shl - local.get $4 - i32.add - local.tee $3 - i32.load16_u - local.set $5 - local.get $3 - local.get $1 - i32.const 1 - i32.shl - local.get $4 - i32.add - local.tee $3 - i32.load16_u - i32.store16 - local.get $3 - local.get $5 - i32.store16 - local.get $2 - i32.const 1 - i32.add - local.set $2 - local.get $1 - i32.const 1 - i32.sub - local.set $1 - br $repeat|0 - end - end - local.get $0 - ) - (func $~lib/typedarray/Uint16Array#subarray (; 245 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - i32.const 8 - local.get $0 - i32.load offset=8 - i32.const 1 - i32.shr_u - local.tee $2 - i32.const 8 - local.get $2 - i32.lt_s - select - local.set $3 - i32.const 12 - call $~lib/util/runtime/allocate - local.set $1 - local.get $0 - i32.load offset=4 - local.set $4 - local.get $0 - i32.load - local.tee $0 - local.get $1 - i32.load - i32.ne - drop - local.get $1 - local.get $0 - i32.store - local.get $1 - i32.const 4 - local.get $2 - i32.const 4 - local.get $2 - i32.lt_s - select - local.tee $0 - i32.const 1 - i32.shl - local.get $4 - i32.add - i32.store offset=4 - local.get $1 - local.get $3 - local.get $0 - local.get $3 - local.get $0 - i32.gt_s - select - local.get $0 - i32.sub - i32.const 1 - i32.shl - i32.store offset=8 - local.get $1 - i32.const 21 - call $~lib/util/runtime/register - ) - (func $std/typedarray/testArrayReverse<~lib/typedarray/Uint16Array,u16> (; 246 ;) (type $FUNCSIG$v) - (local $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - global.get $std/typedarray/testArrayReverseValues - local.set $1 - i32.const 9 - call $~lib/typedarray/Uint16Array#constructor - local.set $2 - i32.const 9 - call $~lib/typedarray/Uint16Array#constructor - local.set $3 - loop $repeat|0 - block $break|0 - local.get $0 - i32.const 9 - i32.ge_s - br_if $break|0 - local.get $2 - local.get $0 - local.get $1 - local.get $0 - call $~lib/array/Array#__get - i32.const 65535 - i32.and - call $~lib/typedarray/Uint16Array#__set - local.get $3 - local.get $0 - local.get $1 - local.get $0 - call $~lib/array/Array#__get - i32.const 65535 - i32.and - call $~lib/typedarray/Uint16Array#__set - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $repeat|0 - end - end - local.get $2 - call $~lib/typedarray/Uint16Array#reverse - drop - i32.const 0 - local.set $0 - loop $repeat|1 - block $break|1 - local.get $0 - i32.const 9 - i32.ge_s - br_if $break|1 - local.get $2 - local.get $0 - call $~lib/typedarray/Uint16Array#__get - local.get $1 - i32.const 8 - local.get $0 - i32.sub - call $~lib/array/Array#__get - i32.const 65535 - i32.and - i32.ne - if - i32.const 1272 - i32.const 24 - i32.const 461 - i32.const 4 - call $~lib/builtins/abort - unreachable - else - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $repeat|1 - end - unreachable - end - end - local.get $3 - call $~lib/typedarray/Uint16Array#subarray - call $~lib/typedarray/Uint16Array#reverse - local.tee $0 - i32.const 0 - call $~lib/typedarray/Uint16Array#__get - i32.const 8 - i32.ne - if - i32.const 1360 - i32.const 24 - i32.const 466 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 1 - call $~lib/typedarray/Uint16Array#__get - i32.const 7 - i32.ne - if - i32.const 1360 - i32.const 24 - i32.const 467 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 2 - call $~lib/typedarray/Uint16Array#__get - i32.const 6 - i32.ne - if - i32.const 1360 - i32.const 24 - i32.const 468 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 3 - call $~lib/typedarray/Uint16Array#__get - i32.const 5 - i32.ne - if - i32.const 1360 - i32.const 24 - i32.const 469 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - ) - (func $~lib/typedarray/Int32Array#reverse (; 247 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $0 - i32.load offset=4 - local.set $4 - local.get $0 - i32.load offset=8 - i32.const 2 - i32.shr_u - i32.const 1 - i32.sub - local.set $1 - loop $repeat|0 - local.get $2 - local.get $1 - i32.lt_s - if - local.get $2 - i32.const 2 - i32.shl - local.get $4 - i32.add - local.tee $3 - i32.load - local.set $5 - local.get $3 - local.get $1 - i32.const 2 - i32.shl - local.get $4 - i32.add - local.tee $3 - i32.load - i32.store - local.get $3 - local.get $5 - i32.store - local.get $2 - i32.const 1 - i32.add - local.set $2 - local.get $1 - i32.const 1 - i32.sub - local.set $1 - br $repeat|0 - end - end - local.get $0 - ) - (func $std/typedarray/testArrayReverse<~lib/typedarray/Int32Array,i32> (; 248 ;) (type $FUNCSIG$v) - (local $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - global.get $std/typedarray/testArrayReverseValues - local.set $1 - i32.const 9 - call $~lib/typedarray/Int32Array#constructor - local.set $2 - i32.const 9 - call $~lib/typedarray/Int32Array#constructor - local.set $3 - loop $repeat|0 - block $break|0 - local.get $0 - i32.const 9 - i32.ge_s - br_if $break|0 - local.get $2 - local.get $0 - local.get $1 - local.get $0 - call $~lib/array/Array#__get - call $~lib/typedarray/Int32Array#__set - local.get $3 - local.get $0 - local.get $1 - local.get $0 - call $~lib/array/Array#__get - call $~lib/typedarray/Int32Array#__set - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $repeat|0 - end - end - local.get $2 - call $~lib/typedarray/Int32Array#reverse - drop - i32.const 0 - local.set $0 - loop $repeat|1 - block $break|1 - local.get $0 - i32.const 9 - i32.ge_s - br_if $break|1 - local.get $2 - local.get $0 - call $~lib/typedarray/Int32Array#__get - local.get $1 - i32.const 8 - local.get $0 - i32.sub - call $~lib/array/Array#__get - i32.ne - if - i32.const 1272 - i32.const 24 - i32.const 461 - i32.const 4 - call $~lib/builtins/abort - unreachable - else - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $repeat|1 - end - unreachable - end - end - local.get $3 - i32.const 4 - i32.const 8 - call $~lib/typedarray/Int32Array#subarray - call $~lib/typedarray/Int32Array#reverse - local.tee $0 - i32.const 0 - call $~lib/typedarray/Int32Array#__get - i32.const 8 - i32.ne - if - i32.const 1360 - i32.const 24 - i32.const 466 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 1 - call $~lib/typedarray/Int32Array#__get - i32.const 7 - i32.ne - if - i32.const 1360 - i32.const 24 - i32.const 467 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 2 - call $~lib/typedarray/Int32Array#__get - i32.const 6 - i32.ne - if - i32.const 1360 - i32.const 24 - i32.const 468 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 3 - call $~lib/typedarray/Int32Array#__get - i32.const 5 - i32.ne - if - i32.const 1360 - i32.const 24 - i32.const 469 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - ) - (func $~lib/typedarray/Uint32Array#subarray (; 249 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - i32.const 8 - local.get $0 - i32.load offset=8 - i32.const 2 - i32.shr_u - local.tee $2 - i32.const 8 - local.get $2 - i32.lt_s - select - local.set $3 - i32.const 12 - call $~lib/util/runtime/allocate - local.set $1 - local.get $0 - i32.load offset=4 - local.set $4 - local.get $0 - i32.load - local.tee $0 - local.get $1 - i32.load - i32.ne - drop - local.get $1 - local.get $0 - i32.store - local.get $1 - i32.const 4 - local.get $2 - i32.const 4 - local.get $2 - i32.lt_s - select - local.tee $0 - i32.const 2 - i32.shl - local.get $4 - i32.add - i32.store offset=4 - local.get $1 - local.get $3 - local.get $0 - local.get $3 - local.get $0 - i32.gt_s - select - local.get $0 - i32.sub - i32.const 2 - i32.shl - i32.store offset=8 - local.get $1 - i32.const 23 - call $~lib/util/runtime/register - ) - (func $std/typedarray/testArrayReverse<~lib/typedarray/Uint32Array,u32> (; 250 ;) (type $FUNCSIG$v) - (local $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - global.get $std/typedarray/testArrayReverseValues - local.set $1 - i32.const 9 - call $~lib/typedarray/Uint32Array#constructor - local.set $2 - i32.const 9 - call $~lib/typedarray/Uint32Array#constructor - local.set $3 - loop $repeat|0 - block $break|0 - local.get $0 - i32.const 9 - i32.ge_s - br_if $break|0 - local.get $2 - local.get $0 - local.get $1 - local.get $0 - call $~lib/array/Array#__get - call $~lib/typedarray/Uint32Array#__set - local.get $3 - local.get $0 - local.get $1 - local.get $0 - call $~lib/array/Array#__get - call $~lib/typedarray/Uint32Array#__set - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $repeat|0 - end - end - local.get $2 - call $~lib/typedarray/Int32Array#reverse - drop - i32.const 0 - local.set $0 - loop $repeat|1 - block $break|1 - local.get $0 - i32.const 9 - i32.ge_s - br_if $break|1 - local.get $2 - local.get $0 - call $~lib/typedarray/Uint32Array#__get - local.get $1 - i32.const 8 - local.get $0 - i32.sub - call $~lib/array/Array#__get - i32.ne - if - i32.const 1272 - i32.const 24 - i32.const 461 - i32.const 4 - call $~lib/builtins/abort - unreachable - else - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $repeat|1 - end - unreachable - end - end - local.get $3 - call $~lib/typedarray/Uint32Array#subarray - call $~lib/typedarray/Int32Array#reverse - local.tee $0 - i32.const 0 - call $~lib/typedarray/Uint32Array#__get - i32.const 8 - i32.ne - if - i32.const 1360 - i32.const 24 - i32.const 466 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 1 - call $~lib/typedarray/Uint32Array#__get - i32.const 7 - i32.ne - if - i32.const 1360 - i32.const 24 - i32.const 467 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 2 - call $~lib/typedarray/Uint32Array#__get - i32.const 6 - i32.ne - if - i32.const 1360 - i32.const 24 - i32.const 468 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 3 - call $~lib/typedarray/Uint32Array#__get - i32.const 5 - i32.ne - if - i32.const 1360 - i32.const 24 - i32.const 469 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - ) - (func $~lib/typedarray/Int64Array#reverse (; 251 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i64) - local.get $0 - i32.load offset=4 - local.set $4 - local.get $0 - i32.load offset=8 - i32.const 3 - i32.shr_u - i32.const 1 - i32.sub - local.set $1 - loop $repeat|0 - local.get $2 - local.get $1 - i32.lt_s - if - local.get $2 - i32.const 3 - i32.shl - local.get $4 - i32.add - local.tee $3 - i64.load - local.set $5 - local.get $3 - local.get $1 - i32.const 3 - i32.shl - local.get $4 - i32.add - local.tee $3 - i64.load - i64.store - local.get $3 - local.get $5 - i64.store - local.get $2 - i32.const 1 - i32.add - local.set $2 - local.get $1 - i32.const 1 - i32.sub - local.set $1 - br $repeat|0 - end - end - local.get $0 - ) - (func $~lib/typedarray/Int64Array#subarray (; 252 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - i32.const 8 - local.get $0 - i32.load offset=8 - i32.const 3 - i32.shr_u - local.tee $2 - i32.const 8 - local.get $2 - i32.lt_s - select - local.set $3 - i32.const 12 - call $~lib/util/runtime/allocate - local.set $1 - local.get $0 - i32.load offset=4 - local.set $4 - local.get $0 - i32.load - local.tee $0 - local.get $1 - i32.load - i32.ne - drop - local.get $1 - local.get $0 - i32.store - local.get $1 - i32.const 4 - local.get $2 - i32.const 4 - local.get $2 - i32.lt_s - select - local.tee $0 - i32.const 3 - i32.shl - local.get $4 - i32.add - i32.store offset=4 - local.get $1 - local.get $3 - local.get $0 - local.get $3 - local.get $0 - i32.gt_s - select - local.get $0 - i32.sub - i32.const 3 - i32.shl - i32.store offset=8 - local.get $1 - i32.const 24 - call $~lib/util/runtime/register - ) - (func $std/typedarray/testArrayReverse<~lib/typedarray/Int64Array,i64> (; 253 ;) (type $FUNCSIG$v) - (local $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - global.get $std/typedarray/testArrayReverseValues - local.set $1 - i32.const 9 - call $~lib/typedarray/Int64Array#constructor - local.set $2 - i32.const 9 - call $~lib/typedarray/Int64Array#constructor - local.set $3 - loop $repeat|0 - block $break|0 - local.get $0 - i32.const 9 - i32.ge_s - br_if $break|0 - local.get $2 - local.get $0 - local.get $1 - local.get $0 - call $~lib/array/Array#__get - i64.extend_i32_s - call $~lib/typedarray/Int64Array#__set - local.get $3 - local.get $0 - local.get $1 - local.get $0 - call $~lib/array/Array#__get - i64.extend_i32_s - call $~lib/typedarray/Int64Array#__set - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $repeat|0 - end - end - local.get $2 - call $~lib/typedarray/Int64Array#reverse - drop - i32.const 0 - local.set $0 - loop $repeat|1 - block $break|1 - local.get $0 - i32.const 9 - i32.ge_s - br_if $break|1 - local.get $2 - local.get $0 - call $~lib/typedarray/Int64Array#__get - local.get $1 - i32.const 8 - local.get $0 - i32.sub - call $~lib/array/Array#__get - i64.extend_i32_s - i64.ne - if - i32.const 1272 - i32.const 24 - i32.const 461 - i32.const 4 - call $~lib/builtins/abort - unreachable - else - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $repeat|1 - end - unreachable - end - end - local.get $3 - call $~lib/typedarray/Int64Array#subarray - call $~lib/typedarray/Int64Array#reverse - local.tee $0 - i32.const 0 - call $~lib/typedarray/Int64Array#__get - i64.const 8 - i64.ne - if - i32.const 1360 - i32.const 24 - i32.const 466 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 1 - call $~lib/typedarray/Int64Array#__get - i64.const 7 - i64.ne - if - i32.const 1360 - i32.const 24 - i32.const 467 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 2 - call $~lib/typedarray/Int64Array#__get - i64.const 6 - i64.ne - if - i32.const 1360 - i32.const 24 - i32.const 468 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 3 - call $~lib/typedarray/Int64Array#__get - i64.const 5 - i64.ne - if - i32.const 1360 - i32.const 24 - i32.const 469 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - ) - (func $~lib/typedarray/Uint64Array#subarray (; 254 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - i32.const 8 - local.get $0 - i32.load offset=8 - i32.const 3 - i32.shr_u - local.tee $2 - i32.const 8 - local.get $2 - i32.lt_s - select - local.set $3 - i32.const 12 - call $~lib/util/runtime/allocate - local.set $1 - local.get $0 - i32.load offset=4 - local.set $4 - local.get $0 - i32.load - local.tee $0 - local.get $1 - i32.load - i32.ne - drop - local.get $1 - local.get $0 - i32.store - local.get $1 - i32.const 4 - local.get $2 - i32.const 4 - local.get $2 - i32.lt_s - select - local.tee $0 - i32.const 3 - i32.shl - local.get $4 - i32.add - i32.store offset=4 - local.get $1 - local.get $3 - local.get $0 - local.get $3 - local.get $0 - i32.gt_s - select - local.get $0 - i32.sub - i32.const 3 - i32.shl - i32.store offset=8 - local.get $1 - i32.const 25 - call $~lib/util/runtime/register - ) - (func $std/typedarray/testArrayReverse<~lib/typedarray/Uint64Array,u64> (; 255 ;) (type $FUNCSIG$v) - (local $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - global.get $std/typedarray/testArrayReverseValues - local.set $1 - i32.const 9 - call $~lib/typedarray/Uint64Array#constructor - local.set $2 - i32.const 9 - call $~lib/typedarray/Uint64Array#constructor - local.set $3 - loop $repeat|0 - block $break|0 - local.get $0 - i32.const 9 - i32.ge_s - br_if $break|0 - local.get $2 - local.get $0 - local.get $1 - local.get $0 - call $~lib/array/Array#__get - i64.extend_i32_s - call $~lib/typedarray/Uint64Array#__set - local.get $3 - local.get $0 - local.get $1 - local.get $0 - call $~lib/array/Array#__get - i64.extend_i32_s - call $~lib/typedarray/Uint64Array#__set - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $repeat|0 - end - end - local.get $2 - call $~lib/typedarray/Int64Array#reverse - drop - i32.const 0 - local.set $0 - loop $repeat|1 - block $break|1 - local.get $0 - i32.const 9 - i32.ge_s - br_if $break|1 - local.get $2 - local.get $0 - call $~lib/typedarray/Uint64Array#__get - local.get $1 - i32.const 8 - local.get $0 - i32.sub - call $~lib/array/Array#__get - i64.extend_i32_s - i64.ne - if - i32.const 1272 - i32.const 24 - i32.const 461 - i32.const 4 - call $~lib/builtins/abort - unreachable - else - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $repeat|1 - end - unreachable - end - end - local.get $3 - call $~lib/typedarray/Uint64Array#subarray - call $~lib/typedarray/Int64Array#reverse - local.tee $0 - i32.const 0 - call $~lib/typedarray/Uint64Array#__get - i64.const 8 - i64.ne - if - i32.const 1360 - i32.const 24 - i32.const 466 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 1 - call $~lib/typedarray/Uint64Array#__get - i64.const 7 - i64.ne - if - i32.const 1360 - i32.const 24 - i32.const 467 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 2 - call $~lib/typedarray/Uint64Array#__get - i64.const 6 - i64.ne - if - i32.const 1360 - i32.const 24 - i32.const 468 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 3 - call $~lib/typedarray/Uint64Array#__get - i64.const 5 - i64.ne - if - i32.const 1360 - i32.const 24 - i32.const 469 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - ) - (func $~lib/typedarray/Float32Array#reverse (; 256 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 f32) - local.get $0 - i32.load offset=4 - local.set $4 - local.get $0 - i32.load offset=8 - i32.const 2 - i32.shr_u - i32.const 1 - i32.sub - local.set $1 - loop $repeat|0 - local.get $2 - local.get $1 - i32.lt_s - if - local.get $2 - i32.const 2 - i32.shl - local.get $4 - i32.add - local.tee $3 - f32.load - local.set $5 - local.get $3 - local.get $1 - i32.const 2 - i32.shl - local.get $4 - i32.add - local.tee $3 - f32.load - f32.store - local.get $3 - local.get $5 - f32.store - local.get $2 - i32.const 1 - i32.add - local.set $2 - local.get $1 - i32.const 1 - i32.sub - local.set $1 - br $repeat|0 - end - end - local.get $0 - ) - (func $~lib/typedarray/Float32Array#subarray (; 257 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - i32.const 8 - local.get $0 - i32.load offset=8 - i32.const 2 - i32.shr_u - local.tee $2 - i32.const 8 - local.get $2 - i32.lt_s - select - local.set $3 - i32.const 12 - call $~lib/util/runtime/allocate - local.set $1 - local.get $0 - i32.load offset=4 - local.set $4 - local.get $0 - i32.load - local.tee $0 - local.get $1 - i32.load - i32.ne - drop - local.get $1 - local.get $0 - i32.store - local.get $1 - i32.const 4 - local.get $2 - i32.const 4 - local.get $2 - i32.lt_s - select - local.tee $0 - i32.const 2 - i32.shl - local.get $4 - i32.add - i32.store offset=4 - local.get $1 - local.get $3 - local.get $0 - local.get $3 - local.get $0 - i32.gt_s - select - local.get $0 - i32.sub - i32.const 2 - i32.shl - i32.store offset=8 - local.get $1 - i32.const 26 - call $~lib/util/runtime/register - ) - (func $std/typedarray/testArrayReverse<~lib/typedarray/Float32Array,f32> (; 258 ;) (type $FUNCSIG$v) - (local $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - global.get $std/typedarray/testArrayReverseValues - local.set $1 - i32.const 9 - call $~lib/typedarray/Float32Array#constructor - local.set $2 - i32.const 9 - call $~lib/typedarray/Float32Array#constructor - local.set $3 - loop $repeat|0 - block $break|0 - local.get $0 - i32.const 9 - i32.ge_s - br_if $break|0 - local.get $2 - local.get $0 - local.get $1 - local.get $0 - call $~lib/array/Array#__get - f32.convert_i32_s - call $~lib/typedarray/Float32Array#__set - local.get $3 - local.get $0 - local.get $1 - local.get $0 - call $~lib/array/Array#__get - f32.convert_i32_s - call $~lib/typedarray/Float32Array#__set - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $repeat|0 - end - end - local.get $2 - call $~lib/typedarray/Float32Array#reverse - drop - i32.const 0 - local.set $0 - loop $repeat|1 - block $break|1 - local.get $0 - i32.const 9 - i32.ge_s - br_if $break|1 - local.get $2 - local.get $0 - call $~lib/typedarray/Float32Array#__get - local.get $1 - i32.const 8 - local.get $0 - i32.sub - call $~lib/array/Array#__get - f32.convert_i32_s - f32.ne - if - i32.const 1272 - i32.const 24 - i32.const 461 - i32.const 4 - call $~lib/builtins/abort - unreachable - else - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $repeat|1 - end - unreachable - end - end - local.get $3 - call $~lib/typedarray/Float32Array#subarray - call $~lib/typedarray/Float32Array#reverse - local.tee $0 - i32.const 0 - call $~lib/typedarray/Float32Array#__get - f32.const 8 - f32.ne - if - i32.const 1360 - i32.const 24 - i32.const 466 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 1 - call $~lib/typedarray/Float32Array#__get - f32.const 7 - f32.ne - if - i32.const 1360 - i32.const 24 - i32.const 467 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 2 - call $~lib/typedarray/Float32Array#__get - f32.const 6 - f32.ne - if - i32.const 1360 - i32.const 24 - i32.const 468 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 3 - call $~lib/typedarray/Float32Array#__get - f32.const 5 - f32.ne - if - i32.const 1360 - i32.const 24 - i32.const 469 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - ) - (func $~lib/typedarray/Float64Array#reverse (; 259 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 f64) - local.get $0 - i32.load offset=4 - local.set $4 - local.get $0 - i32.load offset=8 - i32.const 3 - i32.shr_u - i32.const 1 - i32.sub - local.set $1 - loop $repeat|0 - local.get $2 - local.get $1 - i32.lt_s - if - local.get $2 - i32.const 3 - i32.shl - local.get $4 - i32.add - local.tee $3 - f64.load - local.set $5 - local.get $3 - local.get $1 - i32.const 3 - i32.shl - local.get $4 - i32.add - local.tee $3 - f64.load - f64.store - local.get $3 - local.get $5 - f64.store - local.get $2 - i32.const 1 - i32.add - local.set $2 - local.get $1 - i32.const 1 - i32.sub - local.set $1 - br $repeat|0 - end - end - local.get $0 - ) - (func $std/typedarray/testArrayReverse<~lib/typedarray/Float64Array,f64> (; 260 ;) (type $FUNCSIG$v) - (local $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - global.get $std/typedarray/testArrayReverseValues - local.set $1 - i32.const 9 - call $~lib/typedarray/Float64Array#constructor - local.set $2 - i32.const 9 - call $~lib/typedarray/Float64Array#constructor - local.set $3 - loop $repeat|0 - block $break|0 - local.get $0 - i32.const 9 - i32.ge_s - br_if $break|0 - local.get $2 - local.get $0 - local.get $1 - local.get $0 call $~lib/array/Array#__get f64.convert_i32_s call $~lib/typedarray/Float64Array#__set - local.get $3 - local.get $0 - local.get $1 + local.get $4 + local.get $5 local.get $0 + local.get $5 call $~lib/array/Array#__get f64.convert_i32_s call $~lib/typedarray/Float64Array#__set - local.get $0 + local.get $5 i32.const 1 i32.add - local.set $0 + local.set $5 br $repeat|0 + unreachable end + unreachable end local.get $2 call $~lib/typedarray/Float64Array#reverse - drop - i32.const 0 - local.set $0 - loop $repeat|1 - block $break|1 - local.get $0 + call $~lib/rt/purerc/__release + block $break|1 + i32.const 0 + local.set $5 + loop $repeat|1 + local.get $5 i32.const 9 - i32.ge_s + i32.lt_s + i32.eqz br_if $break|1 local.get $2 - local.get $0 + local.get $5 call $~lib/typedarray/Float64Array#__get - local.get $1 - i32.const 8 local.get $0 + i32.const 8 + local.get $5 i32.sub call $~lib/array/Array#__get f64.convert_i32_s - f64.ne + f64.eq + i32.eqz if - i32.const 1272 + i32.const 1480 i32.const 24 - i32.const 461 + i32.const 460 i32.const 4 call $~lib/builtins/abort unreachable - else - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $repeat|1 end + local.get $5 + i32.const 1 + i32.add + local.set $5 + br $repeat|1 unreachable end + unreachable end - local.get $3 + local.get $4 i32.const 4 i32.const 8 call $~lib/typedarray/Float64Array#subarray + local.tee $6 call $~lib/typedarray/Float64Array#reverse - local.tee $0 + local.set $7 + local.get $7 i32.const 0 call $~lib/typedarray/Float64Array#__get f64.const 8 - f64.ne + f64.eq + i32.eqz if - i32.const 1360 + i32.const 1568 + i32.const 24 + i32.const 465 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $7 + i32.const 1 + call $~lib/typedarray/Float64Array#__get + f64.const 7 + f64.eq + i32.eqz + if + i32.const 1568 i32.const 24 i32.const 466 i32.const 2 call $~lib/builtins/abort unreachable end - local.get $0 - i32.const 1 + local.get $7 + i32.const 2 call $~lib/typedarray/Float64Array#__get - f64.const 7 - f64.ne + f64.const 6 + f64.eq + i32.eqz if - i32.const 1360 + i32.const 1568 i32.const 24 i32.const 467 i32.const 2 call $~lib/builtins/abort unreachable end - local.get $0 - i32.const 2 + local.get $7 + i32.const 3 call $~lib/typedarray/Float64Array#__get - f64.const 6 - f64.ne + f64.const 5 + f64.eq + i32.eqz if - i32.const 1360 + i32.const 1568 i32.const 24 i32.const 468 i32.const 2 call $~lib/builtins/abort unreachable end + local.get $1 + call $~lib/rt/purerc/__release + local.get $3 + call $~lib/rt/purerc/__release + local.get $6 + call $~lib/rt/purerc/__release local.get $0 - i32.const 3 - call $~lib/typedarray/Float64Array#__get - f64.const 5 - f64.ne + call $~lib/rt/purerc/__release + local.get $2 + call $~lib/rt/purerc/__release + local.get $4 + call $~lib/rt/purerc/__release + local.get $7 + call $~lib/rt/purerc/__release + ) + (func $start:std/typedarray (; 385 ;) (type $FUNCSIG$v) + (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) + (local $9 i32) + (local $10 i32) + (local $11 i32) + (local $12 i32) + (local $13 i32) + (local $14 i32) + (local $15 i32) + global.get $~lib/typedarray/Int8Array.BYTES_PER_ELEMENT + i32.const 1 + i32.eq + i32.eqz if - i32.const 1360 + i32.const 0 i32.const 24 - i32.const 469 - i32.const 2 + i32.const 3 + i32.const 0 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/typedarray/Uint8Array.BYTES_PER_ELEMENT + i32.const 1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 4 + i32.const 0 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/typedarray/Uint8ClampedArray.BYTES_PER_ELEMENT + i32.const 1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 5 + i32.const 0 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/typedarray/Int16Array.BYTES_PER_ELEMENT + i32.const 2 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 6 + i32.const 0 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/typedarray/Uint16Array.BYTES_PER_ELEMENT + i32.const 2 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 7 + i32.const 0 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/typedarray/Int32Array.BYTES_PER_ELEMENT + i32.const 4 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 8 + i32.const 0 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/typedarray/Uint32Array.BYTES_PER_ELEMENT + i32.const 4 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 9 + i32.const 0 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/typedarray/Int64Array.BYTES_PER_ELEMENT + i32.const 8 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 10 + i32.const 0 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/typedarray/Uint64Array.BYTES_PER_ELEMENT + i32.const 8 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 11 + i32.const 0 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/typedarray/Float32Array.BYTES_PER_ELEMENT + i32.const 4 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 12 + i32.const 0 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/typedarray/Float64Array.BYTES_PER_ELEMENT + i32.const 8 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 13 + i32.const 0 call $~lib/builtins/abort unreachable end - ) - (func $start:std/typedarray (; 261 ;) (type $FUNCSIG$v) - (local $0 i32) - (local $1 i32) - i32.const 1696 - global.set $~lib/allocator/arena/startOffset - global.get $~lib/allocator/arena/startOffset - global.set $~lib/allocator/arena/offset i32.const 0 call $std/typedarray/testInstantiate i32.const 5 call $std/typedarray/testInstantiate + i32.const 0 i32.const 3 call $~lib/typedarray/Int32Array#constructor global.set $std/typedarray/arr @@ -11668,11 +20546,10 @@ i32.const 3 call $~lib/typedarray/Int32Array#__set global.get $std/typedarray/arr - i32.load offset=8 - i32.const 2 - i32.shr_u + call $~lib/typedarray/Int32Array#get:length i32.const 3 - i32.ne + i32.eq + i32.eqz if i32.const 0 i32.const 24 @@ -11682,11 +20559,10 @@ unreachable end global.get $std/typedarray/arr - local.tee $0 - i32.load offset=4 - local.get $0 - i32.load - i32.sub + call $~lib/arraybuffer/ArrayBufferView#get:byteOffset + i32.const 0 + i32.eq + i32.eqz if i32.const 0 i32.const 24 @@ -11696,9 +20572,12 @@ unreachable end global.get $std/typedarray/arr - i32.load offset=8 - i32.const 12 - i32.ne + call $~lib/arraybuffer/ArrayBufferView#get:byteLength + i32.const 3 + i32.const 4 + i32.mul + i32.eq + i32.eqz if i32.const 0 i32.const 24 @@ -11711,7 +20590,8 @@ i32.const 0 call $~lib/typedarray/Int32Array#__get i32.const 1 - i32.ne + i32.eq + i32.eqz if i32.const 0 i32.const 24 @@ -11724,7 +20604,8 @@ i32.const 1 call $~lib/typedarray/Int32Array#__get i32.const 2 - i32.ne + i32.eq + i32.eqz if i32.const 0 i32.const 24 @@ -11737,7 +20618,8 @@ i32.const 2 call $~lib/typedarray/Int32Array#__get i32.const 3 - i32.ne + i32.eq + i32.eqz if i32.const 0 i32.const 24 @@ -11746,17 +20628,20 @@ call $~lib/builtins/abort unreachable end - global.get $std/typedarray/arr - i32.const 1 - i32.const 2 - call $~lib/typedarray/Int32Array#subarray + block (result i32) + global.get $std/typedarray/arr + call $~lib/rt/purerc/__release + global.get $std/typedarray/arr + i32.const 1 + i32.const 2 + call $~lib/typedarray/Int32Array#subarray + end global.set $std/typedarray/arr global.get $std/typedarray/arr - i32.load offset=8 - i32.const 2 - i32.shr_u + call $~lib/typedarray/Int32Array#get:length i32.const 1 - i32.ne + i32.eq + i32.eqz if i32.const 0 i32.const 24 @@ -11766,13 +20651,12 @@ unreachable end global.get $std/typedarray/arr - local.tee $0 - i32.load offset=4 - local.get $0 - i32.load - i32.sub + call $~lib/arraybuffer/ArrayBufferView#get:byteOffset + i32.const 1 i32.const 4 - i32.ne + i32.mul + i32.eq + i32.eqz if i32.const 0 i32.const 24 @@ -11782,9 +20666,12 @@ unreachable end global.get $std/typedarray/arr - i32.load offset=8 + call $~lib/arraybuffer/ArrayBufferView#get:byteLength + i32.const 1 i32.const 4 - i32.ne + i32.mul + i32.eq + i32.eqz if i32.const 0 i32.const 24 @@ -11797,7 +20684,8 @@ i32.const 0 call $~lib/typedarray/Int32Array#__get i32.const 2 - i32.ne + i32.eq + i32.eqz if i32.const 0 i32.const 24 @@ -11806,6 +20694,7 @@ call $~lib/builtins/abort unreachable end + i32.const 0 i32.const 8 call $~lib/typedarray/Float64Array#constructor global.set $std/typedarray/af64 @@ -11841,17 +20730,20 @@ i32.const 7 f64.const 8 call $~lib/typedarray/Float64Array#__set - global.get $std/typedarray/af64 - i32.const 2 - i32.const 6 - call $~lib/typedarray/Float64Array#subarray + block (result i32) + global.get $std/typedarray/af64 + call $~lib/rt/purerc/__release + global.get $std/typedarray/af64 + i32.const 2 + i32.const 6 + call $~lib/typedarray/Float64Array#subarray + end global.set $std/typedarray/af64 global.get $std/typedarray/af64 - i32.load offset=8 - i32.const 3 - i32.shr_u + call $~lib/typedarray/Float64Array#get:length i32.const 4 - i32.ne + i32.eq + i32.eqz if i32.const 0 i32.const 24 @@ -11861,13 +20753,12 @@ unreachable end global.get $std/typedarray/af64 - local.tee $0 - i32.load offset=4 - local.get $0 - i32.load - i32.sub - i32.const 16 - i32.ne + call $~lib/arraybuffer/ArrayBufferView#get:byteOffset + i32.const 2 + i32.const 8 + i32.mul + i32.eq + i32.eqz if i32.const 0 i32.const 24 @@ -11877,9 +20768,12 @@ unreachable end global.get $std/typedarray/af64 - i32.load offset=8 - i32.const 32 - i32.ne + call $~lib/arraybuffer/ArrayBufferView#get:byteLength + i32.const 4 + i32.const 8 + i32.mul + i32.eq + i32.eqz if i32.const 0 i32.const 24 @@ -11888,26 +20782,14 @@ call $~lib/builtins/abort unreachable end - i32.const 0 - global.set $~lib/argc - global.get $std/typedarray/af64 - local.set $1 - i32.const 0 - local.set $0 - block $1of1 - block $0of1 - block $outOfRange - global.get $~lib/argc - br_table $0of1 $1of1 $outOfRange - end - unreachable - end - i32.const 1 - local.set $0 + block + i32.const 0 + global.set $~lib/argc + global.get $std/typedarray/af64 + i32.const 0 + call $~lib/typedarray/Float64Array#sort|trampoline + call $~lib/rt/purerc/__release end - local.get $1 - local.get $0 - call $~lib/typedarray/Float64Array#sort global.get $std/typedarray/af64 i32.const 0 call $~lib/typedarray/Float64Array#__get @@ -11949,6 +20831,7 @@ call $~lib/builtins/abort unreachable end + i32.const 0 i32.const 3 call $~lib/typedarray/Uint8ClampedArray#constructor global.set $std/typedarray/clampedArr @@ -11967,6 +20850,9 @@ global.get $std/typedarray/clampedArr i32.const 0 call $~lib/typedarray/Uint8ClampedArray#__get + i32.const 0 + i32.eq + i32.eqz if i32.const 0 i32.const 24 @@ -11979,7 +20865,8 @@ i32.const 1 call $~lib/typedarray/Uint8ClampedArray#__get i32.const 2 - i32.ne + i32.eq + i32.eqz if i32.const 0 i32.const 24 @@ -11992,7 +20879,8 @@ i32.const 2 call $~lib/typedarray/Uint8ClampedArray#__get i32.const 255 - i32.ne + i32.eq + i32.eqz if i32.const 0 i32.const 24 @@ -12001,6 +20889,7 @@ call $~lib/builtins/abort unreachable end + i32.const 0 i32.const 5 call $~lib/typedarray/Int8Array#constructor global.set $std/typedarray/arr8 @@ -12029,12 +20918,15 @@ i32.const 1 i32.const 3 call $~lib/typedarray/Int8Array#fill + call $~lib/rt/purerc/__release global.get $std/typedarray/arr8 i32.const 5 i32.const 0 i32.const 28 - i32.const 248 - call $~lib/util/runtime/makeArray + i32.const 400 + call $~lib/rt/common/__allocArray + call $~lib/rt/purerc/__retain + local.tee $1 call $std/typedarray/isInt8ArrayEqual i32.eqz if @@ -12048,14 +20940,17 @@ global.get $std/typedarray/arr8 i32.const 0 i32.const 0 - i32.const 2147483647 + global.get $~lib/builtins/i32.MAX_VALUE call $~lib/typedarray/Int8Array#fill + call $~lib/rt/purerc/__release global.get $std/typedarray/arr8 i32.const 5 i32.const 0 i32.const 28 - i32.const 320 - call $~lib/util/runtime/makeArray + i32.const 528 + call $~lib/rt/common/__allocArray + call $~lib/rt/purerc/__retain + local.tee $2 call $std/typedarray/isInt8ArrayEqual i32.eqz if @@ -12071,12 +20966,15 @@ i32.const 0 i32.const -3 call $~lib/typedarray/Int8Array#fill + call $~lib/rt/purerc/__release global.get $std/typedarray/arr8 i32.const 5 i32.const 0 i32.const 28 - i32.const 344 - call $~lib/util/runtime/makeArray + i32.const 552 + call $~lib/rt/common/__allocArray + call $~lib/rt/purerc/__retain + local.tee $3 call $std/typedarray/isInt8ArrayEqual i32.eqz if @@ -12090,14 +20988,17 @@ global.get $std/typedarray/arr8 i32.const 2 i32.const -2 - i32.const 2147483647 + global.get $~lib/builtins/i32.MAX_VALUE call $~lib/typedarray/Int8Array#fill + call $~lib/rt/purerc/__release global.get $std/typedarray/arr8 i32.const 5 i32.const 0 i32.const 28 - i32.const 368 - call $~lib/util/runtime/makeArray + i32.const 576 + call $~lib/rt/common/__allocArray + call $~lib/rt/purerc/__retain + local.tee $4 call $std/typedarray/isInt8ArrayEqual i32.eqz if @@ -12113,12 +21014,15 @@ i32.const 1 i32.const 0 call $~lib/typedarray/Int8Array#fill + call $~lib/rt/purerc/__release global.get $std/typedarray/arr8 i32.const 5 i32.const 0 i32.const 28 - i32.const 392 - call $~lib/util/runtime/makeArray + i32.const 600 + call $~lib/rt/common/__allocArray + call $~lib/rt/purerc/__retain + local.tee $5 call $std/typedarray/isInt8ArrayEqual i32.eqz if @@ -12137,12 +21041,14 @@ global.get $std/typedarray/sub8 i32.const 0 i32.const 0 - i32.const 2147483647 + global.get $~lib/builtins/i32.MAX_VALUE call $~lib/typedarray/Int8Array#fill + call $~lib/rt/purerc/__release global.get $std/typedarray/sub8 - i32.load offset=8 + call $~lib/typedarray/Int8Array#get:length i32.const 3 - i32.ne + i32.eq + i32.eqz if i32.const 0 i32.const 24 @@ -12152,13 +21058,10 @@ unreachable end global.get $std/typedarray/sub8 - local.tee $0 - i32.load offset=4 - local.get $0 - i32.load - i32.sub + call $~lib/arraybuffer/ArrayBufferView#get:byteOffset i32.const 1 - i32.ne + i32.eq + i32.eqz if i32.const 0 i32.const 24 @@ -12168,9 +21071,10 @@ unreachable end global.get $std/typedarray/sub8 - i32.load offset=8 + call $~lib/arraybuffer/ArrayBufferView#get:byteLength i32.const 3 - i32.ne + i32.eq + i32.eqz if i32.const 0 i32.const 24 @@ -12183,8 +21087,10 @@ i32.const 3 i32.const 0 i32.const 28 - i32.const 416 - call $~lib/util/runtime/makeArray + i32.const 624 + call $~lib/rt/common/__allocArray + call $~lib/rt/purerc/__retain + local.tee $6 call $std/typedarray/isInt8ArrayEqual i32.eqz if @@ -12199,8 +21105,10 @@ i32.const 5 i32.const 0 i32.const 28 - i32.const 440 - call $~lib/util/runtime/makeArray + i32.const 648 + call $~lib/rt/common/__allocArray + call $~lib/rt/purerc/__retain + local.tee $7 call $std/typedarray/isInt8ArrayEqual i32.eqz if @@ -12211,6 +21119,7 @@ call $~lib/builtins/abort unreachable end + i32.const 0 i32.const 5 call $~lib/typedarray/Int32Array#constructor global.set $std/typedarray/arr32 @@ -12239,12 +21148,15 @@ i32.const 1 i32.const 3 call $~lib/typedarray/Int32Array#fill + call $~lib/rt/purerc/__release global.get $std/typedarray/arr32 i32.const 5 i32.const 2 i32.const 29 - i32.const 464 - call $~lib/util/runtime/makeArray + i32.const 672 + call $~lib/rt/common/__allocArray + call $~lib/rt/purerc/__retain + local.tee $8 call $std/typedarray/isInt32ArrayEqual i32.eqz if @@ -12258,14 +21170,17 @@ global.get $std/typedarray/arr32 i32.const 0 i32.const 0 - i32.const 2147483647 + global.get $~lib/builtins/i32.MAX_VALUE call $~lib/typedarray/Int32Array#fill + call $~lib/rt/purerc/__release global.get $std/typedarray/arr32 i32.const 5 i32.const 2 i32.const 29 - i32.const 504 - call $~lib/util/runtime/makeArray + i32.const 712 + call $~lib/rt/common/__allocArray + call $~lib/rt/purerc/__retain + local.tee $9 call $std/typedarray/isInt32ArrayEqual i32.eqz if @@ -12281,12 +21196,15 @@ i32.const 0 i32.const -3 call $~lib/typedarray/Int32Array#fill + call $~lib/rt/purerc/__release global.get $std/typedarray/arr32 i32.const 5 i32.const 2 i32.const 29 - i32.const 544 - call $~lib/util/runtime/makeArray + i32.const 752 + call $~lib/rt/common/__allocArray + call $~lib/rt/purerc/__retain + local.tee $10 call $std/typedarray/isInt32ArrayEqual i32.eqz if @@ -12300,14 +21218,17 @@ global.get $std/typedarray/arr32 i32.const 2 i32.const -2 - i32.const 2147483647 + global.get $~lib/builtins/i32.MAX_VALUE call $~lib/typedarray/Int32Array#fill + call $~lib/rt/purerc/__release global.get $std/typedarray/arr32 i32.const 5 i32.const 2 i32.const 29 - i32.const 584 - call $~lib/util/runtime/makeArray + i32.const 792 + call $~lib/rt/common/__allocArray + call $~lib/rt/purerc/__retain + local.tee $11 call $std/typedarray/isInt32ArrayEqual i32.eqz if @@ -12323,12 +21244,15 @@ i32.const 1 i32.const 0 call $~lib/typedarray/Int32Array#fill + call $~lib/rt/purerc/__release global.get $std/typedarray/arr32 i32.const 5 i32.const 2 i32.const 29 - i32.const 624 - call $~lib/util/runtime/makeArray + i32.const 832 + call $~lib/rt/common/__allocArray + call $~lib/rt/purerc/__retain + local.tee $12 call $std/typedarray/isInt32ArrayEqual i32.eqz if @@ -12347,14 +21271,14 @@ global.get $std/typedarray/sub32 i32.const 0 i32.const 0 - i32.const 2147483647 + global.get $~lib/builtins/i32.MAX_VALUE call $~lib/typedarray/Int32Array#fill + call $~lib/rt/purerc/__release global.get $std/typedarray/sub32 - i32.load offset=8 - i32.const 2 - i32.shr_u + call $~lib/typedarray/Int32Array#get:length i32.const 3 - i32.ne + i32.eq + i32.eqz if i32.const 0 i32.const 24 @@ -12364,13 +21288,12 @@ unreachable end global.get $std/typedarray/sub32 - local.tee $0 - i32.load offset=4 - local.get $0 - i32.load - i32.sub + call $~lib/arraybuffer/ArrayBufferView#get:byteOffset + i32.const 1 i32.const 4 - i32.ne + i32.mul + i32.eq + i32.eqz if i32.const 0 i32.const 24 @@ -12380,9 +21303,12 @@ unreachable end global.get $std/typedarray/sub32 - i32.load offset=8 - i32.const 12 - i32.ne + call $~lib/arraybuffer/ArrayBufferView#get:byteLength + i32.const 3 + i32.const 4 + i32.mul + i32.eq + i32.eqz if i32.const 0 i32.const 24 @@ -12395,8 +21321,10 @@ i32.const 3 i32.const 2 i32.const 29 - i32.const 664 - call $~lib/util/runtime/makeArray + i32.const 872 + call $~lib/rt/common/__allocArray + call $~lib/rt/purerc/__retain + local.tee $13 call $std/typedarray/isInt32ArrayEqual i32.eqz if @@ -12411,8 +21339,10 @@ i32.const 5 i32.const 2 i32.const 29 - i32.const 696 - call $~lib/util/runtime/makeArray + i32.const 904 + call $~lib/rt/common/__allocArray + call $~lib/rt/purerc/__retain + local.tee $14 call $std/typedarray/isInt32ArrayEqual i32.eqz if @@ -12423,9 +21353,11 @@ call $~lib/builtins/abort unreachable end - i32.const 134217726 + i32.const 0 + global.get $std/typedarray/MAX_F64LENGTH call $~lib/typedarray/Float64Array#constructor - drop + call $~lib/rt/purerc/__release + i32.const 0 i32.const 6 call $~lib/typedarray/Int8Array#constructor global.set $std/typedarray/multisubarr @@ -12462,7 +21394,8 @@ i32.const 0 call $~lib/typedarray/Int8Array#__get i32.const 2 - i32.ne + i32.eq + i32.eqz if i32.const 0 i32.const 24 @@ -12472,9 +21405,10 @@ unreachable end global.get $std/typedarray/multisubarr1 - i32.load offset=8 + call $~lib/typedarray/Int8Array#get:length i32.const 5 - i32.ne + i32.eq + i32.eqz if i32.const 0 i32.const 24 @@ -12484,13 +21418,10 @@ unreachable end global.get $std/typedarray/multisubarr1 - local.tee $0 - i32.load offset=4 - local.get $0 - i32.load - i32.sub + call $~lib/arraybuffer/ArrayBufferView#get:byteOffset i32.const 1 - i32.ne + i32.eq + i32.eqz if i32.const 0 i32.const 24 @@ -12500,9 +21431,10 @@ unreachable end global.get $std/typedarray/multisubarr1 - i32.load offset=8 + call $~lib/arraybuffer/ArrayBufferView#get:byteLength i32.const 5 - i32.ne + i32.eq + i32.eqz if i32.const 0 i32.const 24 @@ -12520,7 +21452,8 @@ i32.const 0 call $~lib/typedarray/Int8Array#__get i32.const 3 - i32.ne + i32.eq + i32.eqz if i32.const 0 i32.const 24 @@ -12530,9 +21463,10 @@ unreachable end global.get $std/typedarray/multisubarr2 - i32.load offset=8 + call $~lib/typedarray/Int8Array#get:length i32.const 4 - i32.ne + i32.eq + i32.eqz if i32.const 0 i32.const 24 @@ -12542,13 +21476,10 @@ unreachable end global.get $std/typedarray/multisubarr2 - local.tee $0 - i32.load offset=4 - local.get $0 - i32.load - i32.sub + call $~lib/arraybuffer/ArrayBufferView#get:byteOffset i32.const 2 - i32.ne + i32.eq + i32.eqz if i32.const 0 i32.const 24 @@ -12558,9 +21489,10 @@ unreachable end global.get $std/typedarray/multisubarr2 - i32.load offset=8 + call $~lib/arraybuffer/ArrayBufferView#get:byteLength i32.const 4 - i32.ne + i32.eq + i32.eqz if i32.const 0 i32.const 24 @@ -12578,7 +21510,8 @@ i32.const 0 call $~lib/typedarray/Int8Array#__get i32.const 4 - i32.ne + i32.eq + i32.eqz if i32.const 0 i32.const 24 @@ -12588,9 +21521,10 @@ unreachable end global.get $std/typedarray/multisubarr3 - i32.load offset=8 + call $~lib/typedarray/Int8Array#get:length i32.const 3 - i32.ne + i32.eq + i32.eqz if i32.const 0 i32.const 24 @@ -12600,13 +21534,10 @@ unreachable end global.get $std/typedarray/multisubarr3 - local.tee $0 - i32.load offset=4 - local.get $0 - i32.load - i32.sub + call $~lib/arraybuffer/ArrayBufferView#get:byteOffset i32.const 3 - i32.ne + i32.eq + i32.eqz if i32.const 0 i32.const 24 @@ -12616,9 +21547,10 @@ unreachable end global.get $std/typedarray/multisubarr3 - i32.load offset=8 + call $~lib/arraybuffer/ArrayBufferView#get:byteLength i32.const 3 - i32.ne + i32.eq + i32.eqz if i32.const 0 i32.const 24 @@ -12715,182 +21647,651 @@ call $std/typedarray/testArrayReverse<~lib/typedarray/Uint64Array,u64> call $std/typedarray/testArrayReverse<~lib/typedarray/Float32Array,f32> call $std/typedarray/testArrayReverse<~lib/typedarray/Float64Array,f64> + local.get $1 + call $~lib/rt/purerc/__release + local.get $2 + call $~lib/rt/purerc/__release + local.get $3 + call $~lib/rt/purerc/__release + local.get $4 + call $~lib/rt/purerc/__release + local.get $5 + call $~lib/rt/purerc/__release + local.get $6 + call $~lib/rt/purerc/__release + local.get $7 + call $~lib/rt/purerc/__release + local.get $8 + call $~lib/rt/purerc/__release + local.get $9 + call $~lib/rt/purerc/__release + local.get $10 + call $~lib/rt/purerc/__release + local.get $11 + call $~lib/rt/purerc/__release + local.get $12 + call $~lib/rt/purerc/__release + local.get $13 + call $~lib/rt/purerc/__release + local.get $14 + call $~lib/rt/purerc/__release ) - (func $~lib/runtime/runtime.instanceof (; 262 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - local.get $0 - i32.const 16 - i32.sub - i32.load - local.tee $0 - if (result i32) - local.get $0 - i32.const 1448 - i32.load - i32.le_u - else - i32.const 0 - end + (func $std/typedarray/main (; 386 ;) (type $FUNCSIG$v) + global.get $~lib/started + i32.eqz if - loop $continue|0 - local.get $0 - local.get $1 - i32.eq - if - i32.const 1 - return - end - local.get $0 - i32.const 3 - i32.shl - i32.const 1448 - i32.add - i32.load offset=4 - local.tee $0 - br_if $continue|0 - end + call $start + i32.const 1 + global.set $~lib/started end - i32.const 0 ) - (func $~lib/runtime/runtime.flags (; 263 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $start (; 387 ;) (type $FUNCSIG$v) + call $start:std/typedarray + ) + (func $~lib/rt/common/__typeinfo (; 388 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + global.get $~lib/builtins/RTTI_BASE + local.set $1 local.get $0 + i32.eqz if (result i32) + i32.const 1 + else local.get $0 - i32.const 1448 + local.get $1 i32.load i32.gt_u - else - i32.const 1 end - if (result i32) + if + i32.const 288 + i32.const 1672 + i32.const 55 + i32.const 34 + call $~lib/builtins/abort unreachable - else - local.get $0 - i32.const 3 - i32.shl - i32.const 1448 - i32.add - i32.load end - ) - (func $~lib/runtime/runtime.newObject (; 264 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - local.get $0 - call $~lib/util/runtime/allocate local.get $1 - call $~lib/util/runtime/register - ) - (func $~lib/runtime/runtime.newString (; 265 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 - i32.const 1 - i32.shl - i32.const 16 - call $~lib/runtime/runtime.newObject + i32.const 8 + i32.mul + i32.add + i32.load ) - (func $~lib/runtime/runtime.newArrayBuffer (; 266 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - local.get $0 - i32.const 15 - call $~lib/runtime/runtime.newObject - ) - (func $~lib/runtime/runtime.newArray (; 267 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/rt/purerc/growRoots (; 389 ;) (type $FUNCSIG$v) + (local $0 i32) + (local $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) + (local $5 i32) + global.get $~lib/rt/purerc/ROOTS + local.set $0 + global.get $~lib/rt/purerc/CUR local.get $0 + i32.sub + local.set $1 + local.get $1 + i32.const 2 + i32.mul local.tee $2 - if (result i32) - local.get $2 - i32.const 1448 - i32.load - i32.gt_u - else - i32.const 1 - end - if (result i32) - unreachable - else - local.get $2 - i32.const 3 - i32.shl - i32.const 1448 - i32.add - i32.load - end - local.tee $0 - i32.const 16 - i32.div_u - i32.const 31 - i32.and + i32.const 64 + i32.const 2 + i32.shl + local.tee $3 + local.get $2 + local.get $3 + i32.gt_u + select local.set $4 - local.get $1 - if (result i32) - local.get $1 - i32.const 16 - i32.sub - i32.load offset=4 - else - i32.const 0 - call $~lib/runtime/runtime.newArrayBuffer - local.set $1 - i32.const 0 - end - local.set $3 - local.get $2 - i32.const 16 - call $~lib/runtime/runtime.newObject - local.tee $2 - i32.load - drop - local.get $2 - local.get $1 - i32.store - local.get $2 - local.get $1 - i32.store offset=4 - local.get $2 - local.get $3 - i32.store offset=8 - local.get $2 - local.get $3 local.get $4 - i32.shr_u - i32.store offset=12 + i32.const 0 + call $~lib/rt/tlsf/__alloc + local.set $5 + local.get $5 local.get $0 - i32.const 1024 - i32.and + local.get $1 + call $~lib/memory/memory.copy + local.get $5 + global.set $~lib/rt/purerc/ROOTS + local.get $5 + local.get $1 + i32.add + global.set $~lib/rt/purerc/CUR + local.get $5 + local.get $4 + i32.add + global.set $~lib/rt/purerc/END + ) + (func $~lib/rt/purerc/appendRoot (; 390 ;) (type $FUNCSIG$vi) (param $0 i32) + (local $1 i32) + global.get $~lib/rt/purerc/CUR + local.set $1 + local.get $1 + global.get $~lib/rt/purerc/END + i32.ge_u if - local.get $1 - local.get $3 + call $~lib/rt/purerc/growRoots + global.get $~lib/rt/purerc/CUR + local.set $1 + end + local.get $1 + local.get $0 + i32.store + local.get $1 + i32.const 1 + i32.add + global.set $~lib/rt/purerc/CUR + ) + (func $~lib/rt/purerc/decrement (; 391 ;) (type $FUNCSIG$vi) (param $0 i32) + (local $1 i32) + (local $2 i32) + local.get $0 + i32.load offset=4 + local.set $1 + local.get $1 + i32.const 268435455 + i32.and + local.set $2 + local.get $0 + call $~lib/rt/purerc/onDecrement + local.get $0 + i32.load + i32.const 1 + i32.and + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 424 + i32.const 114 + i32.const 13 + call $~lib/builtins/abort + unreachable + end + local.get $2 + i32.const 1 + i32.eq + if + local.get $0 + i32.const 16 i32.add - local.set $0 - loop $continue|0 - local.get $1 + i32.const 1 + call $~lib/builtins/__visit_members + local.get $1 + i32.const -2147483648 + i32.and + i32.eqz + if + global.get $~lib/rt/tlsf/ROOT local.get $0 - i32.lt_u + call $~lib/rt/tlsf/freeBlock + else + local.get $0 + i32.const -2147483648 + i32.const 0 + i32.or + i32.const 0 + i32.or + i32.store offset=4 + end + else + local.get $2 + i32.const 0 + i32.gt_u + i32.eqz + if + i32.const 0 + i32.const 424 + i32.const 123 + i32.const 15 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load offset=8 + call $~lib/rt/common/__typeinfo + i32.const 8 + i32.and + i32.eqz + if + local.get $0 + i32.const -2147483648 + i32.const 805306368 + i32.or + local.get $2 + i32.const 1 + i32.sub + i32.or + i32.store offset=4 + local.get $1 + i32.const -2147483648 + i32.and + i32.eqz if - local.get $1 - i32.load - drop - local.get $1 - i32.const 4 - i32.add - local.set $1 - br $continue|0 + local.get $0 + call $~lib/rt/purerc/appendRoot end + else + local.get $0 + local.get $1 + i32.const 268435455 + i32.const -1 + i32.xor + i32.and + local.get $2 + i32.const 1 + i32.sub + i32.or + i32.store offset=4 end end - local.get $2 ) - (func $~lib/runtime/runtime.retain (; 268 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $~lib/rt/purerc/__retainRelease (; 392 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + local.get $0 + local.get $1 + i32.ne + if + global.get $~lib/builtins/HEAP_BASE + local.set $2 + local.get $0 + local.get $2 + i32.gt_u + if + local.get $0 + i32.const 16 + i32.sub + call $~lib/rt/purerc/increment + end + local.get $1 + local.get $2 + i32.gt_u + if + local.get $1 + i32.const 16 + i32.sub + call $~lib/rt/purerc/decrement + end + end + local.get $0 + ) + (func $~lib/rt/purerc/__release (; 393 ;) (type $FUNCSIG$vi) (param $0 i32) + local.get $0 + global.get $~lib/builtins/HEAP_BASE + i32.gt_u + if + local.get $0 + i32.const 16 + i32.sub + call $~lib/rt/purerc/decrement + end + ) + (func $~lib/array/Array#__visit_impl (; 394 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) nop ) - (func $~lib/runtime/runtime.collect (; 269 ;) (type $FUNCSIG$v) + (func $~lib/array/Array#__visit_impl (; 395 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) nop ) - (func $start (; 270 ;) (type $FUNCSIG$v) - call $start:std/typedarray + (func $~lib/rt/purerc/markGray (; 396 ;) (type $FUNCSIG$vi) (param $0 i32) + (local $1 i32) + local.get $0 + i32.load offset=4 + local.set $1 + local.get $1 + i32.const 1879048192 + i32.and + i32.const 268435456 + i32.ne + if + local.get $0 + local.get $1 + i32.const 1879048192 + i32.const -1 + i32.xor + i32.and + i32.const 268435456 + i32.or + i32.store offset=4 + local.get $0 + i32.const 16 + i32.add + i32.const 2 + call $~lib/builtins/__visit_members + end + ) + (func $~lib/rt/purerc/scanBlack (; 397 ;) (type $FUNCSIG$vi) (param $0 i32) + local.get $0 + local.get $0 + i32.load offset=4 + i32.const 1879048192 + i32.const -1 + i32.xor + i32.and i32.const 0 - call $~lib/util/runtime/allocate - i32.const 30 - call $~lib/util/runtime/register - global.set $~lib/runtime/ROOT + i32.or + i32.store offset=4 + local.get $0 + i32.const 16 + i32.add + i32.const 4 + call $~lib/builtins/__visit_members + ) + (func $~lib/rt/purerc/scan (; 398 ;) (type $FUNCSIG$vi) (param $0 i32) + (local $1 i32) + local.get $0 + i32.load offset=4 + local.set $1 + local.get $1 + i32.const 1879048192 + i32.and + i32.const 268435456 + i32.eq + if + local.get $1 + i32.const 268435455 + i32.and + i32.const 0 + i32.gt_u + if + local.get $0 + call $~lib/rt/purerc/scanBlack + else + local.get $0 + local.get $1 + i32.const 1879048192 + i32.const -1 + i32.xor + i32.and + i32.const 536870912 + i32.or + i32.store offset=4 + local.get $0 + i32.const 16 + i32.add + i32.const 3 + call $~lib/builtins/__visit_members + end + end + ) + (func $~lib/rt/purerc/collectWhite (; 399 ;) (type $FUNCSIG$vi) (param $0 i32) + (local $1 i32) + local.get $0 + i32.load offset=4 + local.set $1 + local.get $1 + i32.const 1879048192 + i32.and + i32.const 536870912 + i32.eq + if (result i32) + local.get $1 + i32.const -2147483648 + i32.and + i32.eqz + else + i32.const 0 + end + if + local.get $0 + i32.const 16 + i32.add + i32.const 5 + call $~lib/builtins/__visit_members + end + global.get $~lib/rt/tlsf/ROOT + local.get $0 + call $~lib/rt/tlsf/freeBlock + ) + (func $~lib/rt/purerc/__visit (; 400 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + local.get $0 + global.get $~lib/builtins/HEAP_BASE + i32.lt_u + if + return + end + local.get $0 + i32.const 16 + i32.sub + local.set $2 + block $break|0 + block $case5|0 + block $case4|0 + block $case3|0 + block $case2|0 + block $case1|0 + block $case0|0 + local.get $1 + local.set $3 + local.get $3 + i32.const 1 + i32.eq + br_if $case0|0 + local.get $3 + i32.const 2 + i32.eq + br_if $case1|0 + local.get $3 + i32.const 3 + i32.eq + br_if $case2|0 + local.get $3 + i32.const 4 + i32.eq + br_if $case3|0 + local.get $3 + i32.const 5 + i32.eq + br_if $case4|0 + br $case5|0 + end + block + local.get $2 + call $~lib/rt/purerc/decrement + br $break|0 + unreachable + end + unreachable + end + block + local.get $2 + i32.load offset=4 + i32.const 268435455 + i32.and + i32.const 0 + i32.gt_u + i32.eqz + if + i32.const 0 + i32.const 424 + i32.const 74 + i32.const 17 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.get $2 + i32.load offset=4 + i32.const 1 + i32.sub + i32.store offset=4 + local.get $2 + call $~lib/rt/purerc/markGray + br $break|0 + unreachable + end + unreachable + end + block + local.get $2 + call $~lib/rt/purerc/scan + br $break|0 + unreachable + end + unreachable + end + block + local.get $2 + i32.load offset=4 + local.set $3 + local.get $3 + i32.const 268435455 + i32.const -1 + i32.xor + i32.and + local.get $3 + i32.const 1 + i32.add + i32.const 268435455 + i32.const -1 + i32.xor + i32.and + i32.eq + i32.eqz + if + i32.const 0 + i32.const 424 + i32.const 85 + i32.const 6 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.get $3 + i32.const 1 + i32.add + i32.store offset=4 + local.get $3 + i32.const 1879048192 + i32.and + i32.const 0 + i32.ne + if + local.get $2 + call $~lib/rt/purerc/scanBlack + end + br $break|0 + unreachable + end + unreachable + end + block + local.get $2 + call $~lib/rt/purerc/collectWhite + br $break|0 + unreachable + end + unreachable + end + i32.const 0 + i32.eqz + if + i32.const 0 + i32.const 424 + i32.const 96 + i32.const 24 + call $~lib/builtins/abort + unreachable + end + end + ) + (func $~lib/builtins/__visit_members (; 401 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (local $2 i32) + block $block$16$break + block + end + block $switch$1$leave + block $switch$1$case$31 + block $switch$1$case$30 + block $switch$1$case$16 + block $switch$1$case$3 + block $switch$1$default + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $switch$1$default $switch$1$case$3 $switch$1$case$3 $switch$1$case$3 $switch$1$case$3 $switch$1$case$3 $switch$1$case$3 $switch$1$case$3 $switch$1$case$3 $switch$1$case$3 $switch$1$case$3 $switch$1$case$3 $switch$1$case$3 $switch$1$case$3 $switch$1$case$16 $switch$1$case$3 $switch$1$case$3 $switch$1$case$16 $switch$1$case$16 $switch$1$case$16 $switch$1$case$16 $switch$1$case$16 $switch$1$case$16 $switch$1$case$16 $switch$1$case$16 $switch$1$case$16 $switch$1$case$16 $switch$1$case$16 $switch$1$case$30 $switch$1$case$31 $switch$1$default + end + block + block + unreachable + unreachable + end + unreachable + unreachable + end + unreachable + end + block + block + return + unreachable + end + unreachable + unreachable + end + unreachable + end + block + br $block$16$break + unreachable + end + unreachable + end + block + block + local.get $0 + local.get $1 + call $~lib/array/Array#__visit_impl + block + br $block$16$break + unreachable + end + unreachable + unreachable + end + unreachable + unreachable + end + unreachable + end + block + block + local.get $0 + local.get $1 + call $~lib/array/Array#__visit_impl + block + br $block$16$break + unreachable + end + unreachable + unreachable + end + unreachable + unreachable + end + unreachable + end + end + block + block + local.get $0 + i32.load + local.tee $2 + if + local.get $2 + local.get $1 + call $~lib/rt/purerc/__visit + end + return + unreachable + end + unreachable + unreachable + end + unreachable + ) + (func $null (; 402 ;) (type $FUNCSIG$v) ) ) diff --git a/tests/compiler/std/typedarray.ts b/tests/compiler/std/typedarray.ts index a53bff9b..77027d89 100644 --- a/tests/compiler/std/typedarray.ts +++ b/tests/compiler/std/typedarray.ts @@ -442,7 +442,6 @@ testArrayForEach(); testArrayForEach(); testArrayForEach(); - var testArrayReverseValues: i32[] = [1, 2, 3, 4, 5, 6, 7, 8, 9]; function testArrayReverse, T extends number>(): void { var values = testArrayReverseValues; @@ -480,3 +479,5 @@ testArrayReverse(); testArrayReverse(); testArrayReverse(); testArrayReverse(); + +@start export function main(): void {} diff --git a/tests/compiler/std/typedarray.untouched.wat b/tests/compiler/std/typedarray.untouched.wat index be12393a..9f9de100 100644 --- a/tests/compiler/std/typedarray.untouched.wat +++ b/tests/compiler/std/typedarray.untouched.wat @@ -3,14 +3,14 @@ (type $FUNCSIG$vi (func (param i32))) (type $FUNCSIG$iii (func (param i32 i32) (result i32))) (type $FUNCSIG$iiii (func (param i32 i32 i32) (result i32))) + (type $FUNCSIG$v (func)) + (type $FUNCSIG$vii (func (param i32 i32))) (type $FUNCSIG$ii (func (param i32) (result i32))) (type $FUNCSIG$viii (func (param i32 i32 i32))) - (type $FUNCSIG$vii (func (param i32 i32))) (type $FUNCSIG$viid (func (param i32 i32 f64))) (type $FUNCSIG$idd (func (param f64 f64) (result i32))) (type $FUNCSIG$dii (func (param i32 i32) (result f64))) (type $FUNCSIG$iiiii (func (param i32 i32 i32 i32) (result i32))) - (type $FUNCSIG$v (func)) (type $FUNCSIG$viij (func (param i32 i32 i64))) (type $FUNCSIG$jjjii (func (param i64 i64 i32 i32) (result i64))) (type $FUNCSIG$jiij (func (param i32 i32 i64) (result i64))) @@ -35,39 +35,47 @@ (type $FUNCSIG$vfii (func (param f32 i32 i32))) (type $FUNCSIG$vdii (func (param f64 i32 i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (import "rtrace" "free" (func $~lib/rt/tlsf/onFree (param i32))) + (import "rtrace" "retain" (func $~lib/rt/purerc/onIncrement (param i32))) + (import "rtrace" "release" (func $~lib/rt/purerc/onDecrement (param i32))) (memory $0 1) - (data (i32.const 8) "\10\00\00\00\"\00\00\00\00\00\00\00\00\00\00\00s\00t\00d\00/\00t\00y\00p\00e\00d\00a\00r\00r\00a\00y\00.\00t\00s\00") - (data (i32.const 64) "\10\00\00\00&\00\00\00\00\00\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 120) "\10\00\00\00(\00\00\00\00\00\00\00\00\00\00\00~\00l\00i\00b\00/\00u\00t\00i\00l\00/\00r\00u\00n\00t\00i\00m\00e\00.\00t\00s\00") - (data (i32.const 176) "\10\00\00\00$\00\00\00\00\00\00\00\00\00\00\00~\00l\00i\00b\00/\00t\00y\00p\00e\00d\00a\00r\00r\00a\00y\00.\00t\00s\00") - (data (i32.const 232) "\0f\00\00\00\05\00\00\00\00\00\00\00\00\00\00\00\01\01\01\04\05") - (data (i32.const 256) "\10\00\00\00\1a\00\00\00\00\00\00\00\00\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00.\00t\00s\00") - (data (i32.const 304) "\0f\00\00\00\05\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 328) "\0f\00\00\00\05\00\00\00\00\00\00\00\00\00\00\00\01\01\00\00\00") - (data (i32.const 352) "\0f\00\00\00\05\00\00\00\00\00\00\00\00\00\00\00\01\01\00\02\02") - (data (i32.const 376) "\0f\00\00\00\05\00\00\00\00\00\00\00\00\00\00\00\01\01\00\02\02") - (data (i32.const 400) "\0f\00\00\00\03\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 424) "\0f\00\00\00\05\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\02") - (data (i32.const 448) "\0f\00\00\00\14\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\01\00\00\00\01\00\00\00\04\00\00\00\05\00\00\00") - (data (i32.const 488) "\0f\00\00\00\14\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") - (data (i32.const 528) "\0f\00\00\00\14\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 568) "\0f\00\00\00\14\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\01\00\00\00\00\00\00\00\02\00\00\00\02\00\00\00") - (data (i32.const 608) "\0f\00\00\00\14\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\01\00\00\00\00\00\00\00\02\00\00\00\02\00\00\00") - (data (i32.const 648) "\0f\00\00\00\0c\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 680) "\0f\00\00\00\14\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00") - (data (i32.const 720) "\10\00\00\00\1e\00\00\00\00\00\00\00\00\00\00\00r\00e\00s\00u\00l\00t\00 \00m\00i\00s\00m\00a\00t\00c\00h\00") - (data (i32.const 768) "\10\00\00\00(\00\00\00\00\00\00\00\00\00\00\00f\00a\00i\00l\00 \00r\00e\00s\00u\00l\00t\00 \00m\00i\00s\00m\00a\00t\00c\00h\00") - (data (i32.const 824) "\0f\00\00\00\0c\00\00\00\00\00\00\00\00\00\00\00\n\00\00\00\0c\00\00\00\0e\00\00\00") - (data (i32.const 856) "\1d\00\00\00\10\00\00\00\00\00\00\00\00\00\00\00H\03\00\00H\03\00\00\0c\00\00\00\03\00\00\00") - (data (i32.const 888) "\10\00\00\00,\00\00\00\00\00\00\00\00\00\00\00f\00o\00r\00E\00a\00c\00h\00 \00v\00a\00l\00u\00e\00 \00m\00i\00s\00m\00a\00t\00c\00h\00") - (data (i32.const 952) "\10\00\00\00,\00\00\00\00\00\00\00\00\00\00\00f\00o\00r\00E\00a\00c\00h\00 \00i\00n\00d\00e\00x\00 \00m\00i\00s\00m\00a\00t\00c\00h\00") - (data (i32.const 1016) "\10\00\00\00>\00\00\00\00\00\00\00\00\00\00\00f\00o\00r\00E\00a\00c\00h\00 \00s\00e\00l\00f\00 \00p\00a\00r\00a\00m\00e\00t\00e\00r\00 \00m\00i\00s\00m\00a\00t\00c\00h\00") - (data (i32.const 1096) "\10\00\00\006\00\00\00\00\00\00\00\00\00\00\00f\00o\00r\00E\00a\00c\00h\00 \00c\00a\00l\00l\00 \00c\00o\00u\00n\00t\00 \00m\00i\00s\00m\00a\00t\00c\00h\00") - (data (i32.const 1168) "\0f\00\00\00$\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00\06\00\00\00\07\00\00\00\08\00\00\00\t\00\00\00") - (data (i32.const 1224) "\1d\00\00\00\10\00\00\00\00\00\00\00\00\00\00\00\a0\04\00\00\a0\04\00\00$\00\00\00\t\00\00\00") - (data (i32.const 1256) "\10\00\00\00B\00\00\00\00\00\00\00\00\00\00\00T\00y\00p\00e\00d\00A\00r\00r\00a\00y\00 \00r\00e\00v\00e\00r\00s\00e\00 \00v\00a\00l\00u\00e\00 \00m\00i\00s\00m\00a\00t\00c\00h\00") - (data (i32.const 1344) "\10\00\00\00V\00\00\00\00\00\00\00\00\00\00\00T\00y\00p\00e\00d\00A\00r\00r\00a\00y\00 \00r\00e\00v\00e\00r\00s\00e\00 \00w\00i\00t\00h\00 \00b\00y\00t\00e\00O\00f\00f\00s\00e\00t\00 \00m\00i\00s\00m\00a\00t\00c\00h\00") - (data (i32.const 1448) "\1e\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\0e\00\00\00\08\00\00\00\0e\00\00\00\08\00\00\00\0e\00\00\00\08\00\00\00\0e\00\00\00\08\00\00\00\0e\00\00\00\08\00\00\00\0e\00\00\00\08\00\00\00\0e\00\00\00\08\00\00\00\0e\00\00\00\08\00\00\00\0e\00\00\00\08\00\00\00\0e\00\00\00\08\00\00\00\0e\00\00\00\19\00\00\00\0e\00\00\00I\00\00\00\0e\00\00\00\08\00\00\00\00\00\00\00") + (data (i32.const 8) "\"\00\00\00\01\00\00\00\10\00\00\00\"\00\00\00s\00t\00d\00/\00t\00y\00p\00e\00d\00a\00r\00r\00a\00y\00.\00t\00s\00") + (data (i32.const 64) "\1c\00\00\00\01\00\00\00\10\00\00\00\1c\00\00\00I\00n\00v\00a\00l\00i\00d\00 \00l\00e\00n\00g\00t\00h\00") + (data (i32.const 112) "&\00\00\00\01\00\00\00\10\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 168) "\1e\00\00\00\01\00\00\00\10\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 216) "(\00\00\00\01\00\00\00\10\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 272) "$\00\00\00\01\00\00\00\10\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 328) "$\00\00\00\01\00\00\00\10\00\00\00$\00\00\00~\00l\00i\00b\00/\00t\00y\00p\00e\00d\00a\00r\00r\00a\00y\00.\00t\00s\00") + (data (i32.const 384) "\05\00\00\00\01\00\00\00\0f\00\00\00\05\00\00\00\01\01\01\04\05") + (data (i32.const 408) "\"\00\00\00\01\00\00\00\10\00\00\00\"\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00p\00u\00r\00e\00r\00c\00.\00t\00s\00") + (data (i32.const 464) "\1a\00\00\00\01\00\00\00\10\00\00\00\1a\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00.\00t\00s\00") + (data (i32.const 512) "\05\00\00\00\01\00\00\00\0f\00\00\00\05\00\00\00\00\00\00\00\00") + (data (i32.const 536) "\05\00\00\00\01\00\00\00\0f\00\00\00\05\00\00\00\01\01\00\00\00") + (data (i32.const 560) "\05\00\00\00\01\00\00\00\0f\00\00\00\05\00\00\00\01\01\00\02\02") + (data (i32.const 584) "\05\00\00\00\01\00\00\00\0f\00\00\00\05\00\00\00\01\01\00\02\02") + (data (i32.const 608) "\03\00\00\00\01\00\00\00\0f\00\00\00\03\00\00\00\00\00\00") + (data (i32.const 632) "\05\00\00\00\01\00\00\00\0f\00\00\00\05\00\00\00\01\00\00\00\02") + (data (i32.const 656) "\14\00\00\00\01\00\00\00\0f\00\00\00\14\00\00\00\01\00\00\00\01\00\00\00\01\00\00\00\04\00\00\00\05\00\00\00") + (data (i32.const 696) "\14\00\00\00\01\00\00\00\0f\00\00\00\14\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 736) "\14\00\00\00\01\00\00\00\0f\00\00\00\14\00\00\00\01\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 776) "\14\00\00\00\01\00\00\00\0f\00\00\00\14\00\00\00\01\00\00\00\01\00\00\00\00\00\00\00\02\00\00\00\02\00\00\00") + (data (i32.const 816) "\14\00\00\00\01\00\00\00\0f\00\00\00\14\00\00\00\01\00\00\00\01\00\00\00\00\00\00\00\02\00\00\00\02\00\00\00") + (data (i32.const 856) "\0c\00\00\00\01\00\00\00\0f\00\00\00\0c\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 888) "\14\00\00\00\01\00\00\00\0f\00\00\00\14\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00") + (data (i32.const 928) "\1e\00\00\00\01\00\00\00\10\00\00\00\1e\00\00\00r\00e\00s\00u\00l\00t\00 \00m\00i\00s\00m\00a\00t\00c\00h\00") + (data (i32.const 976) "(\00\00\00\01\00\00\00\10\00\00\00(\00\00\00f\00a\00i\00l\00 \00r\00e\00s\00u\00l\00t\00 \00m\00i\00s\00m\00a\00t\00c\00h\00") + (data (i32.const 1032) "\0c\00\00\00\01\00\00\00\0f\00\00\00\0c\00\00\00\n\00\00\00\0c\00\00\00\0e\00\00\00") + (data (i32.const 1064) "\10\00\00\00\01\00\00\00\1d\00\00\00\10\00\00\00\18\04\00\00\18\04\00\00\0c\00\00\00\03\00\00\00") + (data (i32.const 1096) ",\00\00\00\01\00\00\00\10\00\00\00,\00\00\00f\00o\00r\00E\00a\00c\00h\00 \00v\00a\00l\00u\00e\00 \00m\00i\00s\00m\00a\00t\00c\00h\00") + (data (i32.const 1160) ",\00\00\00\01\00\00\00\10\00\00\00,\00\00\00f\00o\00r\00E\00a\00c\00h\00 \00i\00n\00d\00e\00x\00 \00m\00i\00s\00m\00a\00t\00c\00h\00") + (data (i32.const 1224) ">\00\00\00\01\00\00\00\10\00\00\00>\00\00\00f\00o\00r\00E\00a\00c\00h\00 \00s\00e\00l\00f\00 \00p\00a\00r\00a\00m\00e\00t\00e\00r\00 \00m\00i\00s\00m\00a\00t\00c\00h\00") + (data (i32.const 1304) "6\00\00\00\01\00\00\00\10\00\00\006\00\00\00f\00o\00r\00E\00a\00c\00h\00 \00c\00a\00l\00l\00 \00c\00o\00u\00n\00t\00 \00m\00i\00s\00m\00a\00t\00c\00h\00") + (data (i32.const 1376) "$\00\00\00\01\00\00\00\0f\00\00\00$\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00\06\00\00\00\07\00\00\00\08\00\00\00\t\00\00\00") + (data (i32.const 1432) "\10\00\00\00\01\00\00\00\1d\00\00\00\10\00\00\00p\05\00\00p\05\00\00$\00\00\00\t\00\00\00") + (data (i32.const 1464) "B\00\00\00\01\00\00\00\10\00\00\00B\00\00\00T\00y\00p\00e\00d\00A\00r\00r\00a\00y\00 \00r\00e\00v\00e\00r\00s\00e\00 \00v\00a\00l\00u\00e\00 \00m\00i\00s\00m\00a\00t\00c\00h\00") + (data (i32.const 1552) "V\00\00\00\01\00\00\00\10\00\00\00V\00\00\00T\00y\00p\00e\00d\00A\00r\00r\00a\00y\00 \00r\00e\00v\00e\00r\00s\00e\00 \00w\00i\00t\00h\00 \00b\00y\00t\00e\00O\00f\00f\00s\00e\00t\00 \00m\00i\00s\00m\00a\00t\00c\00h\00") + (data (i32.const 1656) "\"\00\00\00\01\00\00\00\10\00\00\00\"\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00c\00o\00m\00m\00o\00n\00.\00t\00s\00") + (data (i32.const 1712) "\1d\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\0e\00\00\00\08\00\00\00\0e\00\00\00\08\00\00\00\0e\00\00\00\08\00\00\00\0e\00\00\00\08\00\00\00\0e\00\00\00\08\00\00\00\0e\00\00\00\08\00\00\00\0e\00\00\00\08\00\00\00\0e\00\00\00\08\00\00\00\0e\00\00\00\08\00\00\00\0e\00\00\00\08\00\00\00\0e\00\00\00\19\00\00\00\0e\00\00\00I\00\00\00\0e\00\00\00") (table $0 112 funcref) (elem (i32.const 0) $null $~lib/util/sort/COMPARATOR~anonymous|0 $std/typedarray/testReduce<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testReduce<~lib/typedarray/Uint8Array,u8>~anonymous|0 $std/typedarray/testReduce<~lib/typedarray/Uint8ClampedArray,u8>~anonymous|0 $std/typedarray/testReduce<~lib/typedarray/Int16Array,i16>~anonymous|0 $std/typedarray/testReduce<~lib/typedarray/Uint16Array,u16>~anonymous|0 $std/typedarray/testReduce<~lib/typedarray/Int32Array,i32>~anonymous|0 $std/typedarray/testReduce<~lib/typedarray/Uint32Array,u32>~anonymous|0 $std/typedarray/testReduce<~lib/typedarray/Int64Array,i64>~anonymous|0 $std/typedarray/testReduce<~lib/typedarray/Uint64Array,u64>~anonymous|0 $std/typedarray/testReduce<~lib/typedarray/Float32Array,f32>~anonymous|0 $std/typedarray/testReduce<~lib/typedarray/Float64Array,f64>~anonymous|0 $std/typedarray/testReduceRight<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testReduceRight<~lib/typedarray/Uint8Array,u8>~anonymous|0 $std/typedarray/testReduceRight<~lib/typedarray/Uint8ClampedArray,u8>~anonymous|0 $std/typedarray/testReduceRight<~lib/typedarray/Int16Array,i16>~anonymous|0 $std/typedarray/testReduceRight<~lib/typedarray/Uint16Array,u16>~anonymous|0 $std/typedarray/testReduceRight<~lib/typedarray/Int32Array,i32>~anonymous|0 $std/typedarray/testReduceRight<~lib/typedarray/Uint32Array,u32>~anonymous|0 $std/typedarray/testReduceRight<~lib/typedarray/Int64Array,i64>~anonymous|0 $std/typedarray/testReduceRight<~lib/typedarray/Uint64Array,u64>~anonymous|0 $std/typedarray/testReduceRight<~lib/typedarray/Float32Array,f32>~anonymous|0 $std/typedarray/testReduceRight<~lib/typedarray/Float64Array,f64>~anonymous|0 $std/typedarray/testArrayMap<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testArrayMap<~lib/typedarray/Uint8Array,u8>~anonymous|0 $std/typedarray/testArrayMap<~lib/typedarray/Uint8ClampedArray,u8>~anonymous|0 $std/typedarray/testArrayMap<~lib/typedarray/Int16Array,i16>~anonymous|0 $std/typedarray/testArrayMap<~lib/typedarray/Uint16Array,u16>~anonymous|0 $std/typedarray/testArrayMap<~lib/typedarray/Int32Array,i32>~anonymous|0 $std/typedarray/testArrayMap<~lib/typedarray/Uint32Array,u32>~anonymous|0 $std/typedarray/testArrayMap<~lib/typedarray/Int64Array,i64>~anonymous|0 $std/typedarray/testArrayMap<~lib/typedarray/Uint64Array,u64>~anonymous|0 $std/typedarray/testArrayMap<~lib/typedarray/Float32Array,f32>~anonymous|0 $std/typedarray/testArrayMap<~lib/typedarray/Float64Array,f64>~anonymous|0 $std/typedarray/testArraySome<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testArraySome<~lib/typedarray/Int8Array,i8>~anonymous|1 $std/typedarray/testArraySome<~lib/typedarray/Uint8Array,u8>~anonymous|0 $std/typedarray/testArraySome<~lib/typedarray/Uint8Array,u8>~anonymous|1 $std/typedarray/testArraySome<~lib/typedarray/Uint8ClampedArray,u8>~anonymous|0 $std/typedarray/testArraySome<~lib/typedarray/Uint8ClampedArray,u8>~anonymous|1 $std/typedarray/testArraySome<~lib/typedarray/Int16Array,i16>~anonymous|0 $std/typedarray/testArraySome<~lib/typedarray/Int16Array,i16>~anonymous|1 $std/typedarray/testArraySome<~lib/typedarray/Uint16Array,u16>~anonymous|0 $std/typedarray/testArraySome<~lib/typedarray/Uint16Array,u16>~anonymous|1 $std/typedarray/testArraySome<~lib/typedarray/Int32Array,i32>~anonymous|0 $std/typedarray/testArraySome<~lib/typedarray/Int32Array,i32>~anonymous|1 $std/typedarray/testArraySome<~lib/typedarray/Uint32Array,u32>~anonymous|0 $std/typedarray/testArraySome<~lib/typedarray/Uint32Array,u32>~anonymous|1 $std/typedarray/testArraySome<~lib/typedarray/Int64Array,i64>~anonymous|0 $std/typedarray/testArraySome<~lib/typedarray/Int64Array,i64>~anonymous|1 $std/typedarray/testArraySome<~lib/typedarray/Uint64Array,u64>~anonymous|0 $std/typedarray/testArraySome<~lib/typedarray/Uint64Array,u64>~anonymous|1 $std/typedarray/testArraySome<~lib/typedarray/Float32Array,f32>~anonymous|0 $std/typedarray/testArraySome<~lib/typedarray/Float32Array,f32>~anonymous|1 $std/typedarray/testArraySome<~lib/typedarray/Float64Array,f64>~anonymous|0 $std/typedarray/testArraySome<~lib/typedarray/Float64Array,f64>~anonymous|1 $std/typedarray/testArrayFindIndex<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testArrayFindIndex<~lib/typedarray/Int8Array,i8>~anonymous|1 $std/typedarray/testArrayFindIndex<~lib/typedarray/Uint8Array,u8>~anonymous|0 $std/typedarray/testArrayFindIndex<~lib/typedarray/Uint8Array,u8>~anonymous|1 $std/typedarray/testArrayFindIndex<~lib/typedarray/Uint8ClampedArray,u8>~anonymous|0 $std/typedarray/testArrayFindIndex<~lib/typedarray/Uint8ClampedArray,u8>~anonymous|1 $std/typedarray/testArrayFindIndex<~lib/typedarray/Int16Array,i16>~anonymous|0 $std/typedarray/testArrayFindIndex<~lib/typedarray/Int16Array,i16>~anonymous|1 $std/typedarray/testArrayFindIndex<~lib/typedarray/Uint16Array,u16>~anonymous|0 $std/typedarray/testArrayFindIndex<~lib/typedarray/Uint16Array,u16>~anonymous|1 $std/typedarray/testArrayFindIndex<~lib/typedarray/Int32Array,i32>~anonymous|0 $std/typedarray/testArrayFindIndex<~lib/typedarray/Int32Array,i32>~anonymous|1 $std/typedarray/testArrayFindIndex<~lib/typedarray/Uint32Array,u32>~anonymous|0 $std/typedarray/testArrayFindIndex<~lib/typedarray/Uint32Array,u32>~anonymous|1 $std/typedarray/testArrayFindIndex<~lib/typedarray/Int64Array,i64>~anonymous|0 $std/typedarray/testArrayFindIndex<~lib/typedarray/Int64Array,i64>~anonymous|1 $std/typedarray/testArrayFindIndex<~lib/typedarray/Uint64Array,u64>~anonymous|0 $std/typedarray/testArrayFindIndex<~lib/typedarray/Uint64Array,u64>~anonymous|1 $std/typedarray/testArrayFindIndex<~lib/typedarray/Float32Array,f32>~anonymous|0 $std/typedarray/testArrayFindIndex<~lib/typedarray/Float32Array,f32>~anonymous|1 $std/typedarray/testArrayFindIndex<~lib/typedarray/Float64Array,f64>~anonymous|0 $std/typedarray/testArrayFindIndex<~lib/typedarray/Float64Array,f64>~anonymous|1 $std/typedarray/testArrayEvery<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testArrayEvery<~lib/typedarray/Int8Array,i8>~anonymous|1 $std/typedarray/testArrayEvery<~lib/typedarray/Uint8Array,u8>~anonymous|0 $std/typedarray/testArrayEvery<~lib/typedarray/Uint8Array,u8>~anonymous|1 $std/typedarray/testArrayEvery<~lib/typedarray/Uint8ClampedArray,u8>~anonymous|0 $std/typedarray/testArrayEvery<~lib/typedarray/Uint8ClampedArray,u8>~anonymous|1 $std/typedarray/testArrayEvery<~lib/typedarray/Int16Array,i16>~anonymous|0 $std/typedarray/testArrayEvery<~lib/typedarray/Int16Array,i16>~anonymous|1 $std/typedarray/testArrayEvery<~lib/typedarray/Uint16Array,u16>~anonymous|0 $std/typedarray/testArrayEvery<~lib/typedarray/Uint16Array,u16>~anonymous|1 $std/typedarray/testArrayEvery<~lib/typedarray/Int32Array,i32>~anonymous|0 $std/typedarray/testArrayEvery<~lib/typedarray/Int32Array,i32>~anonymous|1 $std/typedarray/testArrayEvery<~lib/typedarray/Uint32Array,u32>~anonymous|0 $std/typedarray/testArrayEvery<~lib/typedarray/Uint32Array,u32>~anonymous|1 $std/typedarray/testArrayEvery<~lib/typedarray/Int64Array,i64>~anonymous|0 $std/typedarray/testArrayEvery<~lib/typedarray/Int64Array,i64>~anonymous|1 $std/typedarray/testArrayEvery<~lib/typedarray/Uint64Array,u64>~anonymous|0 $std/typedarray/testArrayEvery<~lib/typedarray/Uint64Array,u64>~anonymous|1 $std/typedarray/testArrayEvery<~lib/typedarray/Float32Array,f32>~anonymous|0 $std/typedarray/testArrayEvery<~lib/typedarray/Float32Array,f32>~anonymous|1 $std/typedarray/testArrayEvery<~lib/typedarray/Float64Array,f64>~anonymous|0 $std/typedarray/testArrayEvery<~lib/typedarray/Float64Array,f64>~anonymous|1 $std/typedarray/testArrayForEach<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testArrayForEach<~lib/typedarray/Uint8Array,u8>~anonymous|0 $std/typedarray/testArrayForEach<~lib/typedarray/Uint8ClampedArray,u8>~anonymous|0 $std/typedarray/testArrayForEach<~lib/typedarray/Int16Array,i16>~anonymous|0 $std/typedarray/testArrayForEach<~lib/typedarray/Uint16Array,u16>~anonymous|0 $std/typedarray/testArrayForEach<~lib/typedarray/Int32Array,i32>~anonymous|0 $std/typedarray/testArrayForEach<~lib/typedarray/Uint32Array,u32>~anonymous|0 $std/typedarray/testArrayForEach<~lib/typedarray/Int64Array,i64>~anonymous|0 $std/typedarray/testArrayForEach<~lib/typedarray/Uint64Array,u64>~anonymous|0 $std/typedarray/testArrayForEach<~lib/typedarray/Float32Array,f32>~anonymous|0 $std/typedarray/testArrayForEach<~lib/typedarray/Float64Array,f64>~anonymous|0) (global $~lib/typedarray/Int8Array.BYTES_PER_ELEMENT i32 (i32.const 1)) @@ -81,12 +89,7 @@ (global $~lib/typedarray/Uint64Array.BYTES_PER_ELEMENT i32 (i32.const 8)) (global $~lib/typedarray/Float32Array.BYTES_PER_ELEMENT i32 (i32.const 4)) (global $~lib/typedarray/Float64Array.BYTES_PER_ELEMENT i32 (i32.const 8)) - (global $~lib/util/runtime/HEADER_SIZE i32 (i32.const 16)) - (global $~lib/util/runtime/MAX_BYTELENGTH i32 (i32.const 1073741808)) - (global $~lib/allocator/arena/startOffset (mut i32) (i32.const 0)) - (global $~lib/allocator/arena/offset (mut i32) (i32.const 0)) - (global $~lib/util/runtime/HEADER_MAGIC i32 (i32.const -1520547049)) - (global $~lib/ASC_NO_ASSERT i32 (i32.const 0)) + (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) (global $std/typedarray/arr (mut i32) (i32.const 0)) (global $std/typedarray/af64 (mut i32) (i32.const 0)) (global $~lib/argc (mut i32) (i32.const 0)) @@ -103,501 +106,1390 @@ (global $std/typedarray/multisubarr3 (mut i32) (i32.const 0)) (global $std/typedarray/forEachCallCount (mut i32) (i32.const 0)) (global $std/typedarray/forEachSelf (mut i32) (i32.const 0)) - (global $std/typedarray/forEachValues (mut i32) (i32.const 872)) - (global $std/typedarray/testArrayReverseValues (mut i32) (i32.const 1240)) - (global $~lib/runtime/ROOT (mut i32) (i32.const 0)) - (global $~lib/runtime/RTTI_BASE i32 (i32.const 1448)) - (global $~lib/memory/HEAP_BASE i32 (i32.const 1696)) + (global $std/typedarray/forEachValues (mut i32) (i32.const 1080)) + (global $std/typedarray/testArrayReverseValues (mut i32) (i32.const 1448)) + (global $~lib/started (mut i32) (i32.const 0)) + (global $~lib/rt/purerc/CUR (mut i32) (i32.const 0)) + (global $~lib/rt/purerc/END (mut i32) (i32.const 0)) + (global $~lib/rt/purerc/ROOTS (mut i32) (i32.const 0)) + (global $~lib/builtins/RTTI_BASE i32 (i32.const 1712)) + (global $~lib/builtins/HEAP_BASE i32 (i32.const 1952)) (export "memory" (memory $0)) - (export "$.instanceof" (func $~lib/runtime/runtime.instanceof)) - (export "$.flags" (func $~lib/runtime/runtime.flags)) - (export "$.newObject" (func $~lib/runtime/runtime.newObject)) - (export "$.newString" (func $~lib/runtime/runtime.newString)) - (export "$.newArrayBuffer" (func $~lib/runtime/runtime.newArrayBuffer)) - (export "$.newArray" (func $~lib/runtime/runtime.newArray)) - (export "$.retain" (func $~lib/runtime/runtime.retain)) - (export "$.release" (func $~lib/runtime/runtime.release)) - (export "$.collect" (func $~lib/runtime/runtime.collect)) - (start $start) - (func $~lib/util/runtime/adjust (; 1 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (export "main" (func $std/typedarray/main)) + (func $~lib/rt/tlsf/removeBlock (; 4 ;) (type $FUNCSIG$vii) (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 $9 i32) + (local $10 i32) + (local $11 i32) + local.get $1 + i32.load + local.set $2 + local.get $2 i32.const 1 - i32.const 32 - local.get $0 - global.get $~lib/util/runtime/HEADER_SIZE - i32.add - i32.const 1 - i32.sub - i32.clz - i32.sub - i32.shl + i32.and + i32.eqz + if + i32.const 0 + i32.const 184 + i32.const 275 + i32.const 13 + call $~lib/builtins/abort + unreachable + end + local.get $2 + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.set $3 + local.get $3 + i32.const 16 + i32.ge_u + if (result i32) + local.get $3 + i32.const 1073741808 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 184 + i32.const 277 + i32.const 13 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const 256 + i32.lt_u + if + i32.const 0 + local.set $4 + local.get $3 + i32.const 4 + i32.shr_u + local.set $5 + else + i32.const 31 + local.get $3 + i32.clz + i32.sub + local.set $4 + local.get $3 + local.get $4 + i32.const 4 + i32.sub + i32.shr_u + i32.const 1 + i32.const 4 + i32.shl + i32.xor + local.set $5 + local.get $4 + i32.const 8 + i32.const 1 + i32.sub + i32.sub + local.set $4 + end + local.get $4 + i32.const 23 + i32.lt_u + if (result i32) + local.get $5 + i32.const 16 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 184 + i32.const 290 + i32.const 13 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.load offset=16 + local.set $6 + local.get $1 + i32.load offset=20 + local.set $7 + local.get $6 + if + local.get $6 + local.get $7 + i32.store offset=20 + end + local.get $7 + if + local.get $7 + local.get $6 + i32.store offset=16 + end + local.get $1 + block $~lib/rt/tlsf/GETHEAD|inlined.0 (result i32) + local.get $0 + local.set $10 + local.get $4 + local.set $9 + local.get $5 + local.set $8 + local.get $10 + local.get $9 + i32.const 4 + i32.shl + local.get $8 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + end + i32.eq + if + block $~lib/rt/tlsf/SETHEAD|inlined.1 + local.get $0 + local.set $11 + local.get $4 + local.set $10 + local.get $5 + local.set $9 + local.get $7 + local.set $8 + local.get $11 + local.get $10 + i32.const 4 + i32.shl + local.get $9 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $8 + i32.store offset=96 + end + local.get $7 + i32.eqz + if + block $~lib/rt/tlsf/GETSL|inlined.0 (result i32) + local.get $0 + local.set $9 + local.get $4 + local.set $8 + local.get $9 + local.get $8 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + end + local.set $8 + block $~lib/rt/tlsf/SETSL|inlined.1 + local.get $0 + local.set $11 + local.get $4 + local.set $10 + local.get $8 + i32.const 1 + local.get $5 + i32.shl + i32.const -1 + i32.xor + i32.and + local.tee $8 + local.set $9 + local.get $11 + local.get $10 + i32.const 2 + i32.shl + i32.add + local.get $9 + i32.store offset=4 + end + local.get $8 + i32.eqz + if + local.get $0 + local.get $0 + i32.load + i32.const 1 + local.get $4 + i32.shl + i32.const -1 + i32.xor + i32.and + i32.store + end + end + end ) - (func $~lib/allocator/arena/__mem_allocate (; 2 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/rt/tlsf/insertBlock (; 5 ;) (type $FUNCSIG$vii) (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 $9 i32) + (local $10 i32) + (local $11 i32) + (local $12 i32) + (local $13 i32) + local.get $1 + i32.eqz + if + i32.const 0 + i32.const 184 + i32.const 203 + i32.const 13 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.load + local.set $2 + local.get $2 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 184 + i32.const 205 + i32.const 13 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETRIGHT|inlined.0 (result i32) + local.get $1 + local.set $3 + local.get $3 + i32.const 16 + i32.add + local.get $3 + i32.load + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + end + local.set $4 + local.get $4 + i32.load + local.set $5 + local.get $5 + i32.const 1 + i32.and + if + local.get $2 + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.const 16 + i32.add + local.get $5 + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + local.set $3 + local.get $3 + i32.const 1073741808 + i32.lt_u + if + local.get $0 + local.get $4 + call $~lib/rt/tlsf/removeBlock + local.get $1 + local.get $2 + i32.const 3 + i32.and + local.get $3 + i32.or + local.tee $2 + i32.store + block $~lib/rt/tlsf/GETRIGHT|inlined.1 (result i32) + local.get $1 + local.set $6 + local.get $6 + i32.const 16 + i32.add + local.get $6 + i32.load + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + end + local.set $4 + local.get $4 + i32.load + local.set $5 + end + end + local.get $2 + i32.const 2 + i32.and + if + block $~lib/rt/tlsf/GETFREELEFT|inlined.0 (result i32) + local.get $1 + local.set $3 + local.get $3 + i32.const 4 + i32.sub + i32.load + end + local.set $3 + local.get $3 + i32.load + local.set $6 + local.get $6 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 184 + i32.const 226 + i32.const 15 + call $~lib/builtins/abort + unreachable + end + local.get $6 + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.const 16 + i32.add + local.get $2 + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + local.set $7 + local.get $7 + i32.const 1073741808 + i32.lt_u + if + local.get $0 + local.get $3 + call $~lib/rt/tlsf/removeBlock + local.get $3 + local.get $6 + i32.const 3 + i32.and + local.get $7 + i32.or + local.tee $2 + i32.store + local.get $3 + local.set $1 + end + end + local.get $4 + local.get $5 + i32.const 2 + i32.or + i32.store + local.get $2 + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.set $8 + local.get $8 + i32.const 16 + i32.ge_u + if (result i32) + local.get $8 + i32.const 1073741808 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 184 + i32.const 241 + i32.const 13 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 16 + i32.add + local.get $8 + i32.add + local.get $4 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 184 + i32.const 242 + i32.const 13 + call $~lib/builtins/abort + unreachable + end + local.get $4 + i32.const 4 + i32.sub + local.get $1 + i32.store + local.get $8 + i32.const 256 + i32.lt_u + if + i32.const 0 + local.set $9 + local.get $8 + i32.const 4 + i32.shr_u + local.set $10 + else + i32.const 31 + local.get $8 + i32.clz + i32.sub + local.set $9 + local.get $8 + local.get $9 + i32.const 4 + i32.sub + i32.shr_u + i32.const 1 + i32.const 4 + i32.shl + i32.xor + local.set $10 + local.get $9 + i32.const 8 + i32.const 1 + i32.sub + i32.sub + local.set $9 + end + local.get $9 + i32.const 23 + i32.lt_u + if (result i32) + local.get $10 + i32.const 16 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 184 + i32.const 258 + i32.const 13 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETHEAD|inlined.1 (result i32) + local.get $0 + local.set $3 + local.get $9 + local.set $6 + local.get $10 + local.set $7 + local.get $3 + local.get $6 + i32.const 4 + i32.shl + local.get $7 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + end + local.set $11 + local.get $1 + i32.const 0 + i32.store offset=16 + local.get $1 + local.get $11 + i32.store offset=20 + local.get $11 + if + local.get $11 + local.get $1 + i32.store offset=16 + end + block $~lib/rt/tlsf/SETHEAD|inlined.2 + local.get $0 + local.set $12 + local.get $9 + local.set $3 + local.get $10 + local.set $6 + local.get $1 + local.set $7 + local.get $12 + local.get $3 + i32.const 4 + i32.shl + local.get $6 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $7 + i32.store offset=96 + end + local.get $0 + local.get $0 + i32.load + i32.const 1 + local.get $9 + i32.shl + i32.or + i32.store + block $~lib/rt/tlsf/SETSL|inlined.2 + local.get $0 + local.set $3 + local.get $9 + local.set $6 + block $~lib/rt/tlsf/GETSL|inlined.1 (result i32) + local.get $0 + local.set $13 + local.get $9 + local.set $12 + local.get $13 + local.get $12 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + end + i32.const 1 + local.get $10 + i32.shl + i32.or + local.set $7 + local.get $3 + local.get $6 + i32.const 2 + i32.shl + i32.add + local.get $7 + i32.store offset=4 + end + ) + (func $~lib/rt/tlsf/addMemory (; 6 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) + local.get $1 + local.get $2 + i32.le_u + if (result i32) + local.get $1 + i32.const 15 + i32.and + i32.eqz + else + i32.const 0 + end + if (result i32) + local.get $2 + i32.const 15 + i32.and + i32.eqz + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 184 + i32.const 384 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETTAIL|inlined.0 (result i32) + local.get $0 + local.set $3 + local.get $3 + i32.load offset=1568 + end + local.set $4 + i32.const 0 + local.set $5 + local.get $4 + if + local.get $1 + local.get $4 + i32.const 16 + i32.add + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 184 + i32.const 394 + i32.const 15 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 16 + i32.sub + local.get $4 + i32.eq + if + local.get $1 + i32.const 16 + i32.sub + local.set $1 + local.get $4 + i32.load + local.set $5 + else + nop + end + else + local.get $1 + local.get $0 + i32.const 1572 + i32.add + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 184 + i32.const 406 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + end + local.get $2 + local.get $1 + i32.sub + local.set $6 + local.get $6 + i32.const 48 + i32.lt_u + if + i32.const 0 + return + end + local.get $6 + i32.const 2 + i32.const 16 + i32.mul + i32.sub + local.set $7 + local.get $1 + local.set $8 + local.get $8 + local.get $7 + i32.const 1 + i32.or + local.get $5 + i32.const 2 + i32.and + i32.or + i32.store + local.get $8 + i32.const 0 + i32.store offset=16 + local.get $8 + i32.const 0 + i32.store offset=20 + local.get $1 + local.get $6 + i32.add + i32.const 16 + i32.sub + local.set $4 + local.get $4 + i32.const 0 + i32.const 2 + i32.or + i32.store + block $~lib/rt/tlsf/SETTAIL|inlined.1 + local.get $0 + local.set $9 + local.get $4 + local.set $3 + local.get $9 + local.get $3 + i32.store offset=1568 + end + local.get $0 + local.get $8 + call $~lib/rt/tlsf/insertBlock + i32.const 1 + ) + (func $~lib/rt/tlsf/initializeRoot (; 7 ;) (type $FUNCSIG$v) + (local $0 i32) (local $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) (local $6 i32) - local.get $0 - i32.const 1073741824 - i32.gt_u - if - unreachable - end - global.get $~lib/allocator/arena/offset - local.set $1 - local.get $1 - local.get $0 - local.tee $2 - i32.const 1 - local.tee $3 - local.get $2 - local.get $3 - i32.gt_u - select + (local $7 i32) + (local $8 i32) + (local $9 i32) + global.get $~lib/builtins/HEAP_BASE + i32.const 15 i32.add - i32.const 7 - i32.add - i32.const 7 + i32.const 15 i32.const -1 i32.xor i32.and - local.set $4 + local.set $0 current_memory - local.set $5 - local.get $4 - local.get $5 + local.set $1 + local.get $0 + i32.const 1572 + i32.add + i32.const 65535 + i32.add + i32.const 65535 + i32.const -1 + i32.xor + i32.and i32.const 16 - i32.shl - i32.gt_u - if - local.get $4 + i32.shr_u + local.set $2 + local.get $2 + local.get $1 + i32.gt_s + if (result i32) + local.get $2 local.get $1 i32.sub - i32.const 65535 + grow_memory + i32.const 0 + i32.lt_s + else + i32.const 0 + end + if + unreachable + end + local.get $0 + local.set $3 + local.get $3 + i32.const 0 + i32.store + block $~lib/rt/tlsf/SETTAIL|inlined.0 + local.get $3 + local.set $5 + i32.const 0 + local.set $4 + local.get $5 + local.get $4 + i32.store offset=1568 + end + block $break|0 + i32.const 0 + local.set $4 + loop $repeat|0 + local.get $4 + i32.const 23 + i32.lt_u + i32.eqz + br_if $break|0 + block $~lib/rt/tlsf/SETSL|inlined.0 + local.get $3 + local.set $7 + local.get $4 + local.set $6 + i32.const 0 + local.set $5 + local.get $7 + local.get $6 + i32.const 2 + i32.shl + i32.add + local.get $5 + i32.store offset=4 + end + block $break|1 + i32.const 0 + local.set $5 + loop $repeat|1 + local.get $5 + i32.const 16 + i32.lt_u + i32.eqz + br_if $break|1 + block $~lib/rt/tlsf/SETHEAD|inlined.0 + local.get $3 + local.set $9 + local.get $4 + local.set $8 + local.get $5 + local.set $7 + i32.const 0 + local.set $6 + local.get $9 + local.get $8 + i32.const 4 + i32.shl + local.get $7 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $6 + i32.store offset=96 + end + local.get $5 + i32.const 1 + i32.add + local.set $5 + br $repeat|1 + unreachable + end + unreachable + end + local.get $4 + i32.const 1 + i32.add + local.set $4 + br $repeat|0 + unreachable + end + unreachable + end + local.get $3 + local.get $0 + i32.const 1572 + i32.add + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + current_memory + i32.const 16 + i32.shl + call $~lib/rt/tlsf/addMemory + drop + local.get $3 + global.set $~lib/rt/tlsf/ROOT + ) + (func $~lib/rt/tlsf/prepareSize (; 8 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + local.get $0 + i32.const 1073741808 + i32.ge_u + if + i32.const 232 + i32.const 184 + i32.const 446 + i32.const 29 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + local.tee $1 + i32.const 16 + local.tee $2 + local.get $1 + local.get $2 + i32.gt_u + select + ) + (func $~lib/rt/tlsf/searchBlock (; 9 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result 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 $1 + i32.const 256 + i32.lt_u + if + i32.const 0 + local.set $2 + local.get $1 + i32.const 4 + i32.shr_u + local.set $3 + else + local.get $1 + i32.const 536870904 + i32.lt_u + if (result i32) + local.get $1 + i32.const 1 + i32.const 27 + local.get $1 + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + else + local.get $1 + end + local.set $4 + i32.const 31 + local.get $4 + i32.clz + i32.sub + local.set $2 + local.get $4 + local.get $2 + i32.const 4 + i32.sub + i32.shr_u + i32.const 1 + i32.const 4 + i32.shl + i32.xor + local.set $3 + local.get $2 + i32.const 8 + i32.const 1 + i32.sub + i32.sub + local.set $2 + end + local.get $2 + i32.const 23 + i32.lt_u + if (result i32) + local.get $3 + i32.const 16 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 184 + i32.const 336 + i32.const 13 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETSL|inlined.2 (result i32) + local.get $0 + local.set $5 + local.get $2 + local.set $4 + local.get $5 + local.get $4 + i32.const 2 + i32.shl i32.add - i32.const 65535 + i32.load offset=4 + end + i32.const 0 + i32.const -1 + i32.xor + local.get $3 + i32.shl + i32.and + local.set $6 + local.get $6 + i32.eqz + if + local.get $0 + i32.load + i32.const 0 i32.const -1 i32.xor - i32.and - i32.const 16 - i32.shr_u - local.set $2 - local.get $5 - local.tee $3 local.get $2 - local.tee $6 - local.get $3 - local.get $6 - i32.gt_s - select - local.set $3 + i32.const 1 + i32.add + i32.shl + i32.and + local.set $4 + local.get $4 + i32.eqz + if + i32.const 0 + local.set $7 + else + local.get $4 + i32.ctz + local.set $2 + block $~lib/rt/tlsf/GETSL|inlined.3 (result i32) + local.get $0 + local.set $8 + local.get $2 + local.set $5 + local.get $8 + local.get $5 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + end + local.set $6 + local.get $6 + i32.eqz + if + i32.const 0 + i32.const 184 + i32.const 349 + i32.const 17 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETHEAD|inlined.2 (result i32) + local.get $0 + local.set $9 + local.get $2 + local.set $8 + local.get $6 + i32.ctz + local.set $5 + local.get $9 + local.get $8 + i32.const 4 + i32.shl + local.get $5 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + end + local.set $7 + end + else + block $~lib/rt/tlsf/GETHEAD|inlined.3 (result i32) + local.get $0 + local.set $8 + local.get $2 + local.set $5 + local.get $6 + i32.ctz + local.set $4 + local.get $8 + local.get $5 + i32.const 4 + i32.shl + local.get $4 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + end + local.set $7 + end + local.get $7 + ) + (func $~lib/rt/tlsf/growMemory (; 10 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + current_memory + local.set $2 + local.get $1 + i32.const 65535 + i32.add + i32.const 65535 + i32.const -1 + i32.xor + i32.and + i32.const 16 + i32.shr_u + local.set $3 + local.get $2 + local.tee $4 + local.get $3 + local.tee $5 + local.get $4 + local.get $5 + i32.gt_s + select + local.set $6 + local.get $6 + grow_memory + i32.const 0 + i32.lt_s + if local.get $3 grow_memory i32.const 0 i32.lt_s if - local.get $2 - grow_memory - i32.const 0 - i32.lt_s - if - unreachable - end + unreachable end end - local.get $4 - global.set $~lib/allocator/arena/offset - local.get $1 - ) - (func $~lib/memory/memory.allocate (; 3 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + current_memory + local.set $7 local.get $0 - call $~lib/allocator/arena/__mem_allocate - return + local.get $2 + i32.const 16 + i32.shl + local.get $7 + i32.const 16 + i32.shl + call $~lib/rt/tlsf/addMemory + drop ) - (func $~lib/util/runtime/allocate (; 4 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - (local $1 i32) - local.get $0 - call $~lib/util/runtime/adjust - call $~lib/memory/memory.allocate - local.set $1 - local.get $1 - global.get $~lib/util/runtime/HEADER_MAGIC - i32.store - local.get $1 - local.get $0 - i32.store offset=4 - local.get $1 - i32.const 0 - i32.store offset=8 - local.get $1 - i32.const 0 - i32.store offset=12 - local.get $1 - global.get $~lib/util/runtime/HEADER_SIZE - i32.add - ) - (func $~lib/memory/memory.fill (; 5 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/rt/tlsf/prepareBlock (; 11 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) - (local $6 i64) - block $~lib/util/memory/memset|inlined.0 - local.get $2 - i32.eqz - if - br $~lib/util/memory/memset|inlined.0 - end - local.get $0 - local.get $1 - i32.store8 - local.get $0 - local.get $2 - i32.add - i32.const 1 - i32.sub - local.get $1 - i32.store8 - local.get $2 - i32.const 2 - i32.le_u - if - br $~lib/util/memory/memset|inlined.0 - end - local.get $0 - i32.const 1 - i32.add - local.get $1 - i32.store8 - local.get $0 - i32.const 2 - i32.add - local.get $1 - i32.store8 - local.get $0 - local.get $2 - i32.add - i32.const 2 - i32.sub - local.get $1 - i32.store8 - local.get $0 - local.get $2 - i32.add - i32.const 3 - i32.sub - local.get $1 - i32.store8 - local.get $2 - i32.const 6 - i32.le_u - if - br $~lib/util/memory/memset|inlined.0 - end - local.get $0 - i32.const 3 - i32.add - local.get $1 - i32.store8 - local.get $0 - local.get $2 - i32.add - i32.const 4 - i32.sub - local.get $1 - i32.store8 - local.get $2 - i32.const 8 - i32.le_u - if - br $~lib/util/memory/memset|inlined.0 - end - i32.const 0 - local.get $0 - i32.sub - i32.const 3 - i32.and - local.set $5 - local.get $0 - local.get $5 - i32.add - local.set $0 - local.get $2 - local.get $5 - i32.sub - local.set $2 - local.get $2 - i32.const -4 - i32.and - local.set $2 - i32.const -1 - i32.const 255 - i32.div_u - local.get $1 - i32.const 255 - i32.and - i32.mul - local.set $4 - local.get $0 - local.get $4 - i32.store - local.get $0 - local.get $2 - i32.add - i32.const 4 - i32.sub - local.get $4 - i32.store - local.get $2 - i32.const 8 - i32.le_u - if - br $~lib/util/memory/memset|inlined.0 - end - local.get $0 - i32.const 4 - i32.add - local.get $4 - i32.store - local.get $0 - i32.const 8 - i32.add - local.get $4 - i32.store - local.get $0 - local.get $2 - i32.add - i32.const 12 - i32.sub - local.get $4 - i32.store - local.get $0 - local.get $2 - i32.add - i32.const 8 - i32.sub - local.get $4 - i32.store - local.get $2 - i32.const 24 - i32.le_u - if - br $~lib/util/memory/memset|inlined.0 - end - local.get $0 - i32.const 12 - i32.add - local.get $4 - i32.store - local.get $0 - i32.const 16 - i32.add - local.get $4 - i32.store - local.get $0 - i32.const 20 - i32.add - local.get $4 - i32.store - local.get $0 - i32.const 24 - i32.add - local.get $4 - i32.store - local.get $0 - local.get $2 - i32.add - i32.const 28 - i32.sub - local.get $4 - i32.store - local.get $0 - local.get $2 - i32.add - i32.const 24 - i32.sub - local.get $4 - i32.store - local.get $0 - local.get $2 - i32.add - i32.const 20 - i32.sub - local.get $4 - i32.store - local.get $0 - local.get $2 - i32.add - i32.const 16 - i32.sub - local.get $4 - i32.store - i32.const 24 - local.get $0 - i32.const 4 - i32.and - i32.add - local.set $5 - local.get $0 - local.get $5 - i32.add - local.set $0 - local.get $2 - local.get $5 - i32.sub - local.set $2 - local.get $4 - i64.extend_i32_u - local.get $4 - i64.extend_i32_u - i64.const 32 - i64.shl - i64.or - local.set $6 - block $break|0 - loop $continue|0 - local.get $2 - i32.const 32 - i32.ge_u - if - block - local.get $0 - local.get $6 - i64.store - local.get $0 - i32.const 8 - i32.add - local.get $6 - i64.store - local.get $0 - i32.const 16 - i32.add - local.get $6 - i64.store - local.get $0 - i32.const 24 - i32.add - local.get $6 - i64.store - local.get $2 - i32.const 32 - i32.sub - local.set $2 - local.get $0 - i32.const 32 - i32.add - local.set $0 - end - br $continue|0 - end - end - end - end - ) - (func $~lib/collector/dummy/__ref_register (; 6 ;) (type $FUNCSIG$vi) (param $0 i32) - nop - ) - (func $~lib/util/runtime/register (; 7 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - local.get $0 - global.get $~lib/memory/HEAP_BASE - i32.gt_u - i32.eqz - if - i32.const 0 - i32.const 136 - i32.const 129 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $0 - global.get $~lib/util/runtime/HEADER_SIZE - i32.sub - local.set $2 - local.get $2 + local.get $1 i32.load - global.get $~lib/util/runtime/HEADER_MAGIC - i32.eq - i32.eqz - if - i32.const 0 - i32.const 136 - i32.const 131 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $2 - local.get $1 - i32.store - local.get $0 - call $~lib/collector/dummy/__ref_register - local.get $0 - ) - (func $~lib/arraybuffer/ArrayBuffer#constructor (; 8 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - local.get $1 - global.get $~lib/util/runtime/MAX_BYTELENGTH - i32.gt_u - if - i32.const 0 - i32.const 80 - i32.const 54 - i32.const 43 - call $~lib/builtins/abort - unreachable - end - local.get $1 - call $~lib/util/runtime/allocate - local.set $2 - local.get $2 - i32.const 0 - local.get $1 - call $~lib/memory/memory.fill + local.set $3 local.get $2 i32.const 15 - call $~lib/util/runtime/register + i32.and + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 184 + i32.const 363 + i32.const 13 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.get $2 + i32.sub + local.set $4 + local.get $4 + i32.const 32 + i32.ge_u + if + local.get $1 + local.get $2 + local.get $3 + i32.const 2 + i32.and + i32.or + i32.store + local.get $1 + i32.const 16 + i32.add + local.get $2 + i32.add + local.set $5 + local.get $5 + local.get $4 + i32.const 16 + i32.sub + i32.const 1 + i32.or + i32.store + local.get $0 + local.get $5 + call $~lib/rt/tlsf/insertBlock + else + local.get $1 + local.get $3 + i32.const 1 + i32.const -1 + i32.xor + i32.and + i32.store + block $~lib/rt/tlsf/GETRIGHT|inlined.3 (result i32) + local.get $1 + local.set $5 + local.get $5 + i32.const 16 + i32.add + local.get $5 + i32.load + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + end + block $~lib/rt/tlsf/GETRIGHT|inlined.2 (result i32) + local.get $1 + local.set $5 + local.get $5 + i32.const 16 + i32.add + local.get $5 + i32.load + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + end + i32.load + i32.const 2 + i32.const -1 + i32.xor + i32.and + i32.store + end ) - (func $~lib/collector/dummy/__ref_link (; 9 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) - nop + (func $~lib/rt/tlsf/allocateBlock (; 12 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + local.get $1 + call $~lib/rt/tlsf/prepareSize + local.set $2 + local.get $0 + local.get $2 + call $~lib/rt/tlsf/searchBlock + local.set $3 + local.get $3 + i32.eqz + if + local.get $0 + local.get $2 + call $~lib/rt/tlsf/growMemory + local.get $0 + local.get $2 + call $~lib/rt/tlsf/searchBlock + local.set $3 + local.get $3 + i32.eqz + if + i32.const 0 + i32.const 184 + i32.const 476 + i32.const 15 + call $~lib/builtins/abort + unreachable + end + end + local.get $3 + i32.load + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.get $2 + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 184 + i32.const 478 + i32.const 13 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const 0 + i32.store offset=4 + local.get $3 + local.get $1 + i32.store offset=12 + local.get $0 + local.get $3 + call $~lib/rt/tlsf/removeBlock + local.get $0 + local.get $3 + local.get $2 + call $~lib/rt/tlsf/prepareBlock + local.get $3 ) - (func $~lib/collector/dummy/__ref_unlink (; 10 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) - nop + (func $~lib/rt/tlsf/__alloc (; 13 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + global.get $~lib/rt/tlsf/ROOT + local.set $2 + local.get $2 + i32.eqz + if + call $~lib/rt/tlsf/initializeRoot + global.get $~lib/rt/tlsf/ROOT + local.set $2 + end + local.get $2 + local.get $0 + call $~lib/rt/tlsf/allocateBlock + local.set $3 + local.get $3 + local.get $1 + i32.store offset=8 + local.get $3 + i32.const 16 + i32.add ) - (func $~lib/arraybuffer/ArrayBufferView#constructor (; 11 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/arraybuffer/ArrayBufferView#constructor (; 14 ;) (type $FUNCSIG$iiii) (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 - global.get $~lib/util/runtime/MAX_BYTELENGTH + i32.const 1073741808 local.get $2 i32.shr_u i32.gt_u if - i32.const 0 i32.const 80 - i32.const 12 - i32.const 57 + i32.const 128 + i32.const 14 + i32.const 56 call $~lib/builtins/abort unreachable end - i32.const 0 local.get $1 local.get $2 i32.shl local.tee $1 - call $~lib/arraybuffer/ArrayBuffer#constructor + i32.const 15 + call $~lib/rt/tlsf/__alloc local.set $3 block (result i32) local.get $0 i32.eqz if i32.const 12 - call $~lib/util/runtime/allocate i32.const 14 - call $~lib/util/runtime/register + call $~lib/rt/tlsf/__alloc + call $~lib/rt/purerc/__retain local.set $0 end local.get $0 @@ -613,25 +1505,9 @@ end local.tee $4 local.get $3 - local.tee $5 local.get $4 i32.load - local.tee $6 - i32.ne - if (result i32) - local.get $6 - if - local.get $6 - local.get $4 - call $~lib/collector/dummy/__ref_unlink - end - local.get $5 - local.get $4 - call $~lib/collector/dummy/__ref_link - local.get $5 - else - local.get $5 - end + call $~lib/rt/purerc/__retainRelease i32.store local.get $0 local.get $3 @@ -641,254 +1517,276 @@ i32.store offset=8 local.get $0 ) - (func $~lib/typedarray/Int8Array#constructor (; 12 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Int8Array#constructor (; 15 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) local.get $0 if (result i32) local.get $0 else i32.const 12 - call $~lib/util/runtime/allocate i32.const 17 - call $~lib/util/runtime/register + call $~lib/rt/tlsf/__alloc + call $~lib/rt/purerc/__retain end local.get $1 i32.const 0 call $~lib/arraybuffer/ArrayBufferView#constructor + local.tee $2 local.set $0 local.get $0 ) - (func $~lib/arraybuffer/ArrayBufferView#get:byteOffset (; 13 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/arraybuffer/ArrayBufferView#get:byteOffset (; 16 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.load offset=4 local.get $0 i32.load i32.sub ) - (func $~lib/arraybuffer/ArrayBufferView#get:byteLength (; 14 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/arraybuffer/ArrayBufferView#get:byteLength (; 17 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.load offset=8 ) - (func $~lib/typedarray/Int8Array#get:length (; 15 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/typedarray/Int8Array#get:length (; 18 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 call $~lib/arraybuffer/ArrayBufferView#get:byteLength ) - (func $~lib/typedarray/Uint8Array#constructor (; 16 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Uint8Array#constructor (; 19 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) local.get $0 if (result i32) local.get $0 else i32.const 12 - call $~lib/util/runtime/allocate i32.const 18 - call $~lib/util/runtime/register + call $~lib/rt/tlsf/__alloc + call $~lib/rt/purerc/__retain end local.get $1 i32.const 0 call $~lib/arraybuffer/ArrayBufferView#constructor + local.tee $2 local.set $0 local.get $0 ) - (func $~lib/typedarray/Uint8Array#get:length (; 17 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/typedarray/Uint8Array#get:length (; 20 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 call $~lib/arraybuffer/ArrayBufferView#get:byteLength ) - (func $~lib/typedarray/Uint8ClampedArray#constructor (; 18 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Uint8ClampedArray#constructor (; 21 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) local.get $0 if (result i32) local.get $0 else i32.const 12 - call $~lib/util/runtime/allocate i32.const 19 - call $~lib/util/runtime/register + call $~lib/rt/tlsf/__alloc + call $~lib/rt/purerc/__retain end local.get $1 i32.const 0 call $~lib/arraybuffer/ArrayBufferView#constructor + local.tee $2 local.set $0 local.get $0 ) - (func $~lib/typedarray/Uint8ClampedArray#get:length (; 19 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/typedarray/Uint8ClampedArray#get:length (; 22 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 call $~lib/arraybuffer/ArrayBufferView#get:byteLength ) - (func $~lib/typedarray/Int16Array#constructor (; 20 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Int16Array#constructor (; 23 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) local.get $0 if (result i32) local.get $0 else i32.const 12 - call $~lib/util/runtime/allocate i32.const 20 - call $~lib/util/runtime/register + call $~lib/rt/tlsf/__alloc + call $~lib/rt/purerc/__retain end local.get $1 i32.const 1 call $~lib/arraybuffer/ArrayBufferView#constructor + local.tee $2 local.set $0 local.get $0 ) - (func $~lib/typedarray/Int16Array#get:length (; 21 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/typedarray/Int16Array#get:length (; 24 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 call $~lib/arraybuffer/ArrayBufferView#get:byteLength i32.const 1 i32.shr_u ) - (func $~lib/typedarray/Uint16Array#constructor (; 22 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Uint16Array#constructor (; 25 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) local.get $0 if (result i32) local.get $0 else i32.const 12 - call $~lib/util/runtime/allocate i32.const 21 - call $~lib/util/runtime/register + call $~lib/rt/tlsf/__alloc + call $~lib/rt/purerc/__retain end local.get $1 i32.const 1 call $~lib/arraybuffer/ArrayBufferView#constructor + local.tee $2 local.set $0 local.get $0 ) - (func $~lib/typedarray/Uint16Array#get:length (; 23 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/typedarray/Uint16Array#get:length (; 26 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 call $~lib/arraybuffer/ArrayBufferView#get:byteLength i32.const 1 i32.shr_u ) - (func $~lib/typedarray/Int32Array#constructor (; 24 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Int32Array#constructor (; 27 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) local.get $0 if (result i32) local.get $0 else i32.const 12 - call $~lib/util/runtime/allocate i32.const 22 - call $~lib/util/runtime/register + call $~lib/rt/tlsf/__alloc + call $~lib/rt/purerc/__retain end local.get $1 i32.const 2 call $~lib/arraybuffer/ArrayBufferView#constructor + local.tee $2 local.set $0 local.get $0 ) - (func $~lib/typedarray/Int32Array#get:length (; 25 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/typedarray/Int32Array#get:length (; 28 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 call $~lib/arraybuffer/ArrayBufferView#get:byteLength i32.const 2 i32.shr_u ) - (func $~lib/typedarray/Uint32Array#constructor (; 26 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Uint32Array#constructor (; 29 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) local.get $0 if (result i32) local.get $0 else i32.const 12 - call $~lib/util/runtime/allocate i32.const 23 - call $~lib/util/runtime/register + call $~lib/rt/tlsf/__alloc + call $~lib/rt/purerc/__retain end local.get $1 i32.const 2 call $~lib/arraybuffer/ArrayBufferView#constructor + local.tee $2 local.set $0 local.get $0 ) - (func $~lib/typedarray/Uint32Array#get:length (; 27 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/typedarray/Uint32Array#get:length (; 30 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 call $~lib/arraybuffer/ArrayBufferView#get:byteLength i32.const 2 i32.shr_u ) - (func $~lib/typedarray/Int64Array#constructor (; 28 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Int64Array#constructor (; 31 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) local.get $0 if (result i32) local.get $0 else i32.const 12 - call $~lib/util/runtime/allocate i32.const 24 - call $~lib/util/runtime/register + call $~lib/rt/tlsf/__alloc + call $~lib/rt/purerc/__retain end local.get $1 i32.const 3 call $~lib/arraybuffer/ArrayBufferView#constructor + local.tee $2 local.set $0 local.get $0 ) - (func $~lib/typedarray/Int64Array#get:length (; 29 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/typedarray/Int64Array#get:length (; 32 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 call $~lib/arraybuffer/ArrayBufferView#get:byteLength i32.const 3 i32.shr_u ) - (func $~lib/typedarray/Uint64Array#constructor (; 30 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Uint64Array#constructor (; 33 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) local.get $0 if (result i32) local.get $0 else i32.const 12 - call $~lib/util/runtime/allocate i32.const 25 - call $~lib/util/runtime/register + call $~lib/rt/tlsf/__alloc + call $~lib/rt/purerc/__retain end local.get $1 i32.const 3 call $~lib/arraybuffer/ArrayBufferView#constructor + local.tee $2 local.set $0 local.get $0 ) - (func $~lib/typedarray/Uint64Array#get:length (; 31 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/typedarray/Uint64Array#get:length (; 34 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 call $~lib/arraybuffer/ArrayBufferView#get:byteLength i32.const 3 i32.shr_u ) - (func $~lib/typedarray/Float32Array#constructor (; 32 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Float32Array#constructor (; 35 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) local.get $0 if (result i32) local.get $0 else i32.const 12 - call $~lib/util/runtime/allocate i32.const 26 - call $~lib/util/runtime/register + call $~lib/rt/tlsf/__alloc + call $~lib/rt/purerc/__retain end local.get $1 i32.const 2 call $~lib/arraybuffer/ArrayBufferView#constructor + local.tee $2 local.set $0 local.get $0 ) - (func $~lib/typedarray/Float32Array#get:length (; 33 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/typedarray/Float32Array#get:length (; 36 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 call $~lib/arraybuffer/ArrayBufferView#get:byteLength i32.const 2 i32.shr_u ) - (func $~lib/typedarray/Float64Array#constructor (; 34 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Float64Array#constructor (; 37 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) local.get $0 if (result i32) local.get $0 else i32.const 12 - call $~lib/util/runtime/allocate i32.const 27 - call $~lib/util/runtime/register + call $~lib/rt/tlsf/__alloc + call $~lib/rt/purerc/__retain end local.get $1 i32.const 3 call $~lib/arraybuffer/ArrayBufferView#constructor + local.tee $2 local.set $0 local.get $0 ) - (func $~lib/typedarray/Float64Array#get:length (; 35 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/typedarray/Float64Array#get:length (; 38 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 call $~lib/arraybuffer/ArrayBufferView#get:byteLength i32.const 3 i32.shr_u ) - (func $std/typedarray/testInstantiate (; 36 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $std/typedarray/testInstantiate (; 39 ;) (type $FUNCSIG$vi) (param $0 i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -1395,8 +2293,30 @@ call $~lib/builtins/abort unreachable end + local.get $1 + call $~lib/rt/purerc/__release + local.get $2 + call $~lib/rt/purerc/__release + local.get $3 + call $~lib/rt/purerc/__release + local.get $4 + call $~lib/rt/purerc/__release + local.get $5 + call $~lib/rt/purerc/__release + local.get $6 + call $~lib/rt/purerc/__release + local.get $7 + call $~lib/rt/purerc/__release + local.get $8 + call $~lib/rt/purerc/__release + local.get $9 + call $~lib/rt/purerc/__release + local.get $10 + call $~lib/rt/purerc/__release + local.get $11 + call $~lib/rt/purerc/__release ) - (func $~lib/typedarray/Int32Array#__set (; 37 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/typedarray/Int32Array#__set (; 40 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) local.get $1 local.get $0 i32.load offset=8 @@ -1404,9 +2324,9 @@ i32.shr_u i32.ge_u if - i32.const 0 - i32.const 192 - i32.const 444 + i32.const 288 + i32.const 344 + i32.const 443 i32.const 63 call $~lib/builtins/abort unreachable @@ -1420,7 +2340,7 @@ local.get $2 i32.store ) - (func $~lib/typedarray/Int32Array#__get (; 38 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Int32Array#__get (; 41 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $1 local.get $0 i32.load offset=8 @@ -1428,9 +2348,9 @@ i32.shr_u i32.ge_u if - i32.const 0 - i32.const 192 - i32.const 438 + i32.const 288 + i32.const 344 + i32.const 437 i32.const 63 call $~lib/builtins/abort unreachable @@ -1443,136 +2363,125 @@ i32.add i32.load ) - (func $~lib/typedarray/Int32Array#subarray (; 39 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/typedarray/Int32Array#subarray (; 42 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) (local $6 i32) (local $7 i32) (local $8 i32) - (local $9 i32) - (local $10 i32) - (local $11 i32) - (local $12 i32) - local.get $0 - local.set $5 - local.get $1 - local.set $4 - local.get $2 - local.set $3 - local.get $5 - call $~lib/typedarray/Int32Array#get:length - local.set $6 - local.get $4 - i32.const 0 - i32.lt_s - if - local.get $6 + block $~lib/typedarray/SUBARRAY<~lib/typedarray/Int32Array,i32>|inlined.0 (result i32) + local.get $0 + call $~lib/rt/purerc/__retain + local.set $5 + local.get $1 + local.set $4 + local.get $2 + local.set $3 + local.get $5 + call $~lib/typedarray/Int32Array#get:length + local.set $6 local.get $4 - i32.add - local.tee $7 i32.const 0 - local.tee $8 - local.get $7 - local.get $8 - i32.gt_s - select - local.set $4 - else - local.get $4 - local.tee $7 - local.get $6 - local.tee $8 - local.get $7 - local.get $8 i32.lt_s - select - local.set $4 - end - local.get $3 - i32.const 0 - i32.lt_s - if - local.get $6 - local.get $3 - i32.add - local.tee $7 - local.get $4 - local.tee $8 - local.get $7 - local.get $8 - i32.gt_s - select - local.set $3 - else - local.get $3 - local.tee $7 - local.get $6 - local.tee $8 - local.get $7 - local.get $8 - i32.lt_s - select - local.tee $7 - local.get $4 - local.tee $8 - local.get $7 - local.get $8 - i32.gt_s - select - local.set $3 - end - i32.const 12 - call $~lib/util/runtime/allocate - local.set $7 - local.get $5 - i32.load - local.set $8 - local.get $5 - i32.load offset=4 - local.set $9 - local.get $7 - local.tee $10 - local.get $8 - local.tee $11 - local.get $10 - i32.load - local.tee $12 - i32.ne - if (result i32) - local.get $12 if - local.get $12 - local.get $10 - call $~lib/collector/dummy/__ref_unlink + local.get $6 + local.get $4 + i32.add + local.tee $7 + i32.const 0 + local.tee $8 + local.get $7 + local.get $8 + i32.gt_s + select + local.set $4 + else + local.get $4 + local.tee $7 + local.get $6 + local.tee $8 + local.get $7 + local.get $8 + i32.lt_s + select + local.set $4 end - local.get $11 - local.get $10 - call $~lib/collector/dummy/__ref_link - local.get $11 - else - local.get $11 + local.get $3 + i32.const 0 + i32.lt_s + if + local.get $6 + local.get $3 + i32.add + local.tee $7 + local.get $4 + local.tee $8 + local.get $7 + local.get $8 + i32.gt_s + select + local.set $3 + else + local.get $3 + local.tee $7 + local.get $6 + local.tee $8 + local.get $7 + local.get $8 + i32.lt_s + select + local.tee $7 + local.get $4 + local.tee $8 + local.get $7 + local.get $8 + i32.gt_s + select + local.set $3 + end + i32.const 12 + i32.const 22 + call $~lib/rt/tlsf/__alloc + local.set $7 + local.get $7 + local.tee $8 + local.get $5 + i32.load + local.get $8 + i32.load + call $~lib/rt/purerc/__retainRelease + i32.store + local.get $7 + local.get $5 + i32.load offset=4 + local.get $4 + i32.const 2 + i32.shl + i32.add + i32.store offset=4 + local.get $7 + local.get $3 + local.get $4 + i32.sub + i32.const 2 + i32.shl + i32.store offset=8 + local.get $7 + call $~lib/rt/purerc/__retain + local.set $8 + local.get $5 + call $~lib/rt/purerc/__release + local.get $8 end - i32.store + local.tee $7 + call $~lib/rt/purerc/__retain + local.set $6 local.get $7 - local.get $9 - local.get $4 - i32.const 2 - i32.shl - i32.add - i32.store offset=4 - local.get $7 - local.get $3 - local.get $4 - i32.sub - i32.const 2 - i32.shl - i32.store offset=8 - local.get $7 - i32.const 22 - call $~lib/util/runtime/register + call $~lib/rt/purerc/__release + local.get $6 ) - (func $~lib/typedarray/Float64Array#__set (; 40 ;) (type $FUNCSIG$viid) (param $0 i32) (param $1 i32) (param $2 f64) + (func $~lib/typedarray/Float64Array#__set (; 43 ;) (type $FUNCSIG$viid) (param $0 i32) (param $1 i32) (param $2 f64) local.get $1 local.get $0 i32.load offset=8 @@ -1580,9 +2489,9 @@ i32.shr_u i32.ge_u if - i32.const 0 - i32.const 192 - i32.const 854 + i32.const 288 + i32.const 344 + i32.const 853 i32.const 63 call $~lib/builtins/abort unreachable @@ -1596,136 +2505,125 @@ local.get $2 f64.store ) - (func $~lib/typedarray/Float64Array#subarray (; 41 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/typedarray/Float64Array#subarray (; 44 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) (local $6 i32) (local $7 i32) (local $8 i32) - (local $9 i32) - (local $10 i32) - (local $11 i32) - (local $12 i32) - local.get $0 - local.set $5 - local.get $1 - local.set $4 - local.get $2 - local.set $3 - local.get $5 - call $~lib/typedarray/Float64Array#get:length - local.set $6 - local.get $4 - i32.const 0 - i32.lt_s - if - local.get $6 + block $~lib/typedarray/SUBARRAY<~lib/typedarray/Float64Array,f64>|inlined.0 (result i32) + local.get $0 + call $~lib/rt/purerc/__retain + local.set $5 + local.get $1 + local.set $4 + local.get $2 + local.set $3 + local.get $5 + call $~lib/typedarray/Float64Array#get:length + local.set $6 local.get $4 - i32.add - local.tee $7 i32.const 0 - local.tee $8 - local.get $7 - local.get $8 - i32.gt_s - select - local.set $4 - else - local.get $4 - local.tee $7 - local.get $6 - local.tee $8 - local.get $7 - local.get $8 i32.lt_s - select - local.set $4 - end - local.get $3 - i32.const 0 - i32.lt_s - if - local.get $6 - local.get $3 - i32.add - local.tee $7 - local.get $4 - local.tee $8 - local.get $7 - local.get $8 - i32.gt_s - select - local.set $3 - else - local.get $3 - local.tee $7 - local.get $6 - local.tee $8 - local.get $7 - local.get $8 - i32.lt_s - select - local.tee $7 - local.get $4 - local.tee $8 - local.get $7 - local.get $8 - i32.gt_s - select - local.set $3 - end - i32.const 12 - call $~lib/util/runtime/allocate - local.set $7 - local.get $5 - i32.load - local.set $8 - local.get $5 - i32.load offset=4 - local.set $9 - local.get $7 - local.tee $10 - local.get $8 - local.tee $11 - local.get $10 - i32.load - local.tee $12 - i32.ne - if (result i32) - local.get $12 if - local.get $12 - local.get $10 - call $~lib/collector/dummy/__ref_unlink + local.get $6 + local.get $4 + i32.add + local.tee $7 + i32.const 0 + local.tee $8 + local.get $7 + local.get $8 + i32.gt_s + select + local.set $4 + else + local.get $4 + local.tee $7 + local.get $6 + local.tee $8 + local.get $7 + local.get $8 + i32.lt_s + select + local.set $4 end - local.get $11 - local.get $10 - call $~lib/collector/dummy/__ref_link - local.get $11 - else - local.get $11 + local.get $3 + i32.const 0 + i32.lt_s + if + local.get $6 + local.get $3 + i32.add + local.tee $7 + local.get $4 + local.tee $8 + local.get $7 + local.get $8 + i32.gt_s + select + local.set $3 + else + local.get $3 + local.tee $7 + local.get $6 + local.tee $8 + local.get $7 + local.get $8 + i32.lt_s + select + local.tee $7 + local.get $4 + local.tee $8 + local.get $7 + local.get $8 + i32.gt_s + select + local.set $3 + end + i32.const 12 + i32.const 27 + call $~lib/rt/tlsf/__alloc + local.set $7 + local.get $7 + local.tee $8 + local.get $5 + i32.load + local.get $8 + i32.load + call $~lib/rt/purerc/__retainRelease + i32.store + local.get $7 + local.get $5 + i32.load offset=4 + local.get $4 + i32.const 3 + i32.shl + i32.add + i32.store offset=4 + local.get $7 + local.get $3 + local.get $4 + i32.sub + i32.const 3 + i32.shl + i32.store offset=8 + local.get $7 + call $~lib/rt/purerc/__retain + local.set $8 + local.get $5 + call $~lib/rt/purerc/__release + local.get $8 end - i32.store + local.tee $7 + call $~lib/rt/purerc/__retain + local.set $6 local.get $7 - local.get $9 - local.get $4 - i32.const 3 - i32.shl - i32.add - i32.store offset=4 - local.get $7 - local.get $3 - local.get $4 - i32.sub - i32.const 3 - i32.shl - i32.store offset=8 - local.get $7 - i32.const 27 - call $~lib/util/runtime/register + call $~lib/rt/purerc/__release + local.get $6 ) - (func $~lib/util/sort/insertionSort (; 42 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/util/sort/insertionSort (; 45 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 f64) (local $5 i32) @@ -1740,77 +2638,73 @@ i32.lt_s i32.eqz br_if $break|0 - block - local.get $0 - local.get $3 - i32.const 3 - i32.shl - i32.add - f64.load - local.set $4 - local.get $3 - i32.const 1 - i32.sub - local.set $5 - block $break|1 - loop $continue|1 + local.get $0 + local.get $3 + i32.const 3 + i32.shl + i32.add + f64.load + local.set $4 + local.get $3 + i32.const 1 + i32.sub + local.set $5 + block $break|1 + loop $continue|1 + local.get $5 + i32.const 0 + i32.ge_s + if + local.get $0 local.get $5 - i32.const 0 - i32.ge_s - if - block - local.get $0 - local.get $5 - i32.const 3 - i32.shl - i32.add - f64.load - local.set $6 - block (result i32) - i32.const 2 - global.set $~lib/argc - local.get $4 - local.get $6 - local.get $2 - call_indirect (type $FUNCSIG$idd) - end - i32.const 0 - i32.lt_s - if - local.get $0 - block (result i32) - local.get $5 - local.tee $7 - i32.const 1 - i32.sub - local.set $5 - local.get $7 - end - i32.const 1 - i32.add - i32.const 3 - i32.shl - i32.add - local.get $6 - f64.store - else - br $break|1 - end - end - br $continue|1 + i32.const 3 + i32.shl + i32.add + f64.load + local.set $6 + block (result i32) + i32.const 2 + global.set $~lib/argc + local.get $4 + local.get $6 + local.get $2 + call_indirect (type $FUNCSIG$idd) end + i32.const 0 + i32.lt_s + if + local.get $0 + block (result i32) + local.get $5 + local.tee $7 + i32.const 1 + i32.sub + local.set $5 + local.get $7 + end + i32.const 1 + i32.add + i32.const 3 + i32.shl + i32.add + local.get $6 + f64.store + else + br $break|1 + end + br $continue|1 end end - local.get $0 - local.get $5 - i32.const 1 - i32.add - i32.const 3 - i32.shl - i32.add - local.get $4 - f64.store end + local.get $0 + local.get $5 + i32.const 1 + i32.add + i32.const 3 + i32.shl + i32.add + local.get $4 + f64.store local.get $3 i32.const 1 i32.add @@ -1821,14 +2715,336 @@ unreachable end ) - (func $~lib/allocator/arena/__mem_free (; 43 ;) (type $FUNCSIG$vi) (param $0 i32) - nop + (func $~lib/memory/memory.fill (; 46 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i64) + block $~lib/util/memory/memset|inlined.0 + local.get $0 + local.set $5 + local.get $1 + local.set $4 + local.get $2 + local.set $3 + local.get $3 + i32.eqz + if + br $~lib/util/memory/memset|inlined.0 + end + local.get $5 + local.get $4 + i32.store8 + local.get $5 + local.get $3 + i32.add + i32.const 1 + i32.sub + local.get $4 + i32.store8 + local.get $3 + i32.const 2 + i32.le_u + if + br $~lib/util/memory/memset|inlined.0 + end + local.get $5 + i32.const 1 + i32.add + local.get $4 + i32.store8 + local.get $5 + i32.const 2 + i32.add + local.get $4 + i32.store8 + local.get $5 + local.get $3 + i32.add + i32.const 2 + i32.sub + local.get $4 + i32.store8 + local.get $5 + local.get $3 + i32.add + i32.const 3 + i32.sub + local.get $4 + i32.store8 + local.get $3 + i32.const 6 + i32.le_u + if + br $~lib/util/memory/memset|inlined.0 + end + local.get $5 + i32.const 3 + i32.add + local.get $4 + i32.store8 + local.get $5 + local.get $3 + i32.add + i32.const 4 + i32.sub + local.get $4 + i32.store8 + local.get $3 + i32.const 8 + i32.le_u + if + br $~lib/util/memory/memset|inlined.0 + end + i32.const 0 + local.get $5 + i32.sub + i32.const 3 + i32.and + local.set $6 + local.get $5 + local.get $6 + i32.add + local.set $5 + local.get $3 + local.get $6 + i32.sub + local.set $3 + local.get $3 + i32.const -4 + i32.and + local.set $3 + i32.const -1 + i32.const 255 + i32.div_u + local.get $4 + i32.const 255 + i32.and + i32.mul + local.set $7 + local.get $5 + local.get $7 + i32.store + local.get $5 + local.get $3 + i32.add + i32.const 4 + i32.sub + local.get $7 + i32.store + local.get $3 + i32.const 8 + i32.le_u + if + br $~lib/util/memory/memset|inlined.0 + end + local.get $5 + i32.const 4 + i32.add + local.get $7 + i32.store + local.get $5 + i32.const 8 + i32.add + local.get $7 + i32.store + local.get $5 + local.get $3 + i32.add + i32.const 12 + i32.sub + local.get $7 + i32.store + local.get $5 + local.get $3 + i32.add + i32.const 8 + i32.sub + local.get $7 + i32.store + local.get $3 + i32.const 24 + i32.le_u + if + br $~lib/util/memory/memset|inlined.0 + end + local.get $5 + i32.const 12 + i32.add + local.get $7 + i32.store + local.get $5 + i32.const 16 + i32.add + local.get $7 + i32.store + local.get $5 + i32.const 20 + i32.add + local.get $7 + i32.store + local.get $5 + i32.const 24 + i32.add + local.get $7 + i32.store + local.get $5 + local.get $3 + i32.add + i32.const 28 + i32.sub + local.get $7 + i32.store + local.get $5 + local.get $3 + i32.add + i32.const 24 + i32.sub + local.get $7 + i32.store + local.get $5 + local.get $3 + i32.add + i32.const 20 + i32.sub + local.get $7 + i32.store + local.get $5 + local.get $3 + i32.add + i32.const 16 + i32.sub + local.get $7 + i32.store + i32.const 24 + local.get $5 + i32.const 4 + i32.and + i32.add + local.set $6 + local.get $5 + local.get $6 + i32.add + local.set $5 + local.get $3 + local.get $6 + i32.sub + local.set $3 + local.get $7 + i64.extend_i32_u + local.get $7 + i64.extend_i32_u + i64.const 32 + i64.shl + i64.or + local.set $8 + block $break|0 + loop $continue|0 + local.get $3 + i32.const 32 + i32.ge_u + if + local.get $5 + local.get $8 + i64.store + local.get $5 + i32.const 8 + i32.add + local.get $8 + i64.store + local.get $5 + i32.const 16 + i32.add + local.get $8 + i64.store + local.get $5 + i32.const 24 + i32.add + local.get $8 + i64.store + local.get $3 + i32.const 32 + i32.sub + local.set $3 + local.get $5 + i32.const 32 + i32.add + local.set $5 + br $continue|0 + end + end + end + end ) - (func $~lib/memory/memory.free (; 44 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $~lib/rt/tlsf/freeBlock (; 47 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (local $2 i32) + local.get $1 + i32.load + local.set $2 + local.get $2 + i32.const 1 + i32.and + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 184 + i32.const 530 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.get $2 + i32.const 1 + i32.or + i32.store local.get $0 - call $~lib/allocator/arena/__mem_free + local.get $1 + call $~lib/rt/tlsf/insertBlock + local.get $1 + call $~lib/rt/tlsf/onFree ) - (func $~lib/util/sort/weakHeapSort (; 45 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/rt/tlsf/__free (; 48 ;) (type $FUNCSIG$vi) (param $0 i32) + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + i32.const 0 + i32.const 184 + i32.const 560 + i32.const 13 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 0 + i32.ne + if (result i32) + local.get $0 + i32.const 15 + i32.and + i32.eqz + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 184 + i32.const 561 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/rt/tlsf/ROOT + local.get $0 + i32.const 16 + i32.sub + call $~lib/rt/tlsf/freeBlock + ) + (func $~lib/util/sort/weakHeapSort (; 49 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -1846,7 +3062,8 @@ i32.shl local.set $3 local.get $3 - call $~lib/memory/memory.allocate + i32.const 0 + call $~lib/rt/tlsf/__alloc local.set $4 local.get $4 i32.const 0 @@ -1863,107 +3080,105 @@ i32.gt_s i32.eqz br_if $break|0 - block - local.get $5 - local.set $6 - block $break|1 - loop $continue|1 - local.get $6 - i32.const 1 - i32.and - local.get $4 - local.get $6 - i32.const 6 - i32.shr_s - i32.const 2 - i32.shl - i32.add - i32.load - local.get $6 - i32.const 1 - i32.shr_s - i32.const 31 - i32.and - i32.shr_u - i32.const 1 - i32.and - i32.eq - if - local.get $6 - i32.const 1 - i32.shr_s - local.set $6 - br $continue|1 - end - end - end - local.get $6 - i32.const 1 - i32.shr_s - local.set $7 - local.get $0 - local.get $7 - i32.const 3 - i32.shl - i32.add - f64.load - local.set $8 - local.get $0 - local.get $5 - i32.const 3 - i32.shl - i32.add - f64.load - local.set $9 - block (result i32) - i32.const 2 - global.set $~lib/argc - local.get $8 - local.get $9 - local.get $2 - call_indirect (type $FUNCSIG$idd) - end - i32.const 0 - i32.lt_s - if + local.get $5 + local.set $6 + block $break|1 + loop $continue|1 + local.get $6 + i32.const 1 + i32.and local.get $4 - local.get $5 - i32.const 5 - i32.shr_s - i32.const 2 - i32.shl - i32.add - local.get $4 - local.get $5 - i32.const 5 + local.get $6 + i32.const 6 i32.shr_s i32.const 2 i32.shl i32.add i32.load + local.get $6 i32.const 1 - local.get $5 + i32.shr_s i32.const 31 i32.and - i32.shl - i32.xor - i32.store - local.get $0 - local.get $5 - i32.const 3 - i32.shl - i32.add - local.get $8 - f64.store - local.get $0 - local.get $7 - i32.const 3 - i32.shl - i32.add - local.get $9 - f64.store + i32.shr_u + i32.const 1 + i32.and + i32.eq + if + local.get $6 + i32.const 1 + i32.shr_s + local.set $6 + br $continue|1 + end end end + local.get $6 + i32.const 1 + i32.shr_s + local.set $7 + local.get $0 + local.get $7 + i32.const 3 + i32.shl + i32.add + f64.load + local.set $8 + local.get $0 + local.get $5 + i32.const 3 + i32.shl + i32.add + f64.load + local.set $9 + block (result i32) + i32.const 2 + global.set $~lib/argc + local.get $8 + local.get $9 + local.get $2 + call_indirect (type $FUNCSIG$idd) + end + i32.const 0 + i32.lt_s + if + local.get $4 + local.get $5 + i32.const 5 + i32.shr_s + i32.const 2 + i32.shl + i32.add + local.get $4 + local.get $5 + i32.const 5 + i32.shr_s + i32.const 2 + i32.shl + i32.add + i32.load + i32.const 1 + local.get $5 + i32.const 31 + i32.and + i32.shl + i32.xor + i32.store + local.get $0 + local.get $5 + i32.const 3 + i32.shl + i32.add + local.get $8 + f64.store + local.get $0 + local.get $7 + i32.const 3 + i32.shl + i32.add + local.get $9 + f64.store + end local.get $5 i32.const 1 i32.sub @@ -1977,146 +3192,142 @@ local.get $1 i32.const 1 i32.sub - local.set $5 + local.set $7 loop $repeat|2 - local.get $5 + local.get $7 i32.const 2 i32.ge_s i32.eqz br_if $break|2 - block - local.get $0 - f64.load - local.set $9 - local.get $0 - local.get $0 - local.get $5 - i32.const 3 - i32.shl - i32.add - f64.load - f64.store - local.get $0 - local.get $5 - i32.const 3 - i32.shl - i32.add - local.get $9 - f64.store - i32.const 1 - local.set $7 - block $break|3 - loop $continue|3 - local.get $7 - i32.const 1 - i32.shl - local.get $4 - local.get $7 - i32.const 5 - i32.shr_s - i32.const 2 - i32.shl - i32.add - i32.load - local.get $7 - i32.const 31 - i32.and - i32.shr_u - i32.const 1 - i32.and - i32.add - local.tee $6 + local.get $0 + f64.load + local.set $9 + local.get $0 + local.get $0 + local.get $7 + i32.const 3 + i32.shl + i32.add + f64.load + f64.store + local.get $0 + local.get $7 + i32.const 3 + i32.shl + i32.add + local.get $9 + f64.store + i32.const 1 + local.set $6 + block $break|3 + loop $continue|3 + local.get $6 + i32.const 1 + i32.shl + local.get $4 + local.get $6 + i32.const 5 + i32.shr_s + i32.const 2 + i32.shl + i32.add + i32.load + local.get $6 + i32.const 31 + i32.and + i32.shr_u + i32.const 1 + i32.and + i32.add + local.tee $5 + local.get $7 + i32.lt_s + if local.get $5 - i32.lt_s - if - local.get $6 - local.set $7 - br $continue|3 - end - end - end - block $break|4 - loop $continue|4 - local.get $7 - i32.const 0 - i32.gt_s - if - block - local.get $0 - f64.load - local.set $9 - local.get $0 - local.get $7 - i32.const 3 - i32.shl - i32.add - f64.load - local.set $8 - block (result i32) - i32.const 2 - global.set $~lib/argc - local.get $9 - local.get $8 - local.get $2 - call_indirect (type $FUNCSIG$idd) - end - i32.const 0 - i32.lt_s - if - local.get $4 - local.get $7 - i32.const 5 - i32.shr_s - i32.const 2 - i32.shl - i32.add - local.get $4 - local.get $7 - i32.const 5 - i32.shr_s - i32.const 2 - i32.shl - i32.add - i32.load - i32.const 1 - local.get $7 - i32.const 31 - i32.and - i32.shl - i32.xor - i32.store - local.get $0 - local.get $7 - i32.const 3 - i32.shl - i32.add - local.get $9 - f64.store - local.get $0 - local.get $8 - f64.store - end - local.get $7 - i32.const 1 - i32.shr_s - local.set $7 - end - br $continue|4 - end + local.set $6 + br $continue|3 end end end - local.get $5 + block $break|4 + loop $continue|4 + local.get $6 + i32.const 0 + i32.gt_s + if + local.get $0 + f64.load + local.set $9 + local.get $0 + local.get $6 + i32.const 3 + i32.shl + i32.add + f64.load + local.set $8 + block (result i32) + i32.const 2 + global.set $~lib/argc + local.get $9 + local.get $8 + local.get $2 + call_indirect (type $FUNCSIG$idd) + end + i32.const 0 + i32.lt_s + if + local.get $4 + local.get $6 + i32.const 5 + i32.shr_s + i32.const 2 + i32.shl + i32.add + local.get $4 + local.get $6 + i32.const 5 + i32.shr_s + i32.const 2 + i32.shl + i32.add + i32.load + i32.const 1 + local.get $6 + i32.const 31 + i32.and + i32.shl + i32.xor + i32.store + local.get $0 + local.get $6 + i32.const 3 + i32.shl + i32.add + local.get $9 + f64.store + local.get $0 + local.get $8 + f64.store + end + local.get $6 + i32.const 1 + i32.shr_s + local.set $6 + br $continue|4 + end + end + end + local.get $7 i32.const 1 i32.sub - local.set $5 + local.set $7 br $repeat|2 unreachable end unreachable end local.get $4 - call $~lib/memory/memory.free + call $~lib/rt/tlsf/__free local.get $0 f64.load offset=8 local.set $10 @@ -2128,7 +3339,7 @@ local.get $10 f64.store ) - (func $~lib/typedarray/Float64Array#sort (; 46 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Float64Array#sort (; 50 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -2140,6 +3351,7 @@ (local $10 i32) block $~lib/typedarray/SORT<~lib/typedarray/Float64Array,f64>|inlined.0 (result i32) local.get $0 + call $~lib/rt/purerc/__retain local.set $3 local.get $1 local.set $2 @@ -2211,8 +3423,14 @@ end local.get $3 end + local.tee $5 + call $~lib/rt/purerc/__retain + local.set $4 + local.get $5 + call $~lib/rt/purerc/__release + local.get $4 ) - (func $~lib/util/sort/COMPARATOR~anonymous|0 (; 47 ;) (type $FUNCSIG$idd) (param $0 f64) (param $1 f64) (result i32) + (func $~lib/util/sort/COMPARATOR~anonymous|0 (; 51 ;) (type $FUNCSIG$idd) (param $0 f64) (param $1 f64) (result i32) (local $2 i64) (local $3 i64) local.get $0 @@ -2245,7 +3463,7 @@ i64.lt_s i32.sub ) - (func $~lib/typedarray/Float64Array#sort|trampoline (; 48 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Float64Array#sort|trampoline (; 52 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) block $1of1 block $0of1 block $outOfRange @@ -2264,7 +3482,7 @@ local.get $1 call $~lib/typedarray/Float64Array#sort ) - (func $~lib/typedarray/Float64Array#__get (; 49 ;) (type $FUNCSIG$dii) (param $0 i32) (param $1 i32) (result f64) + (func $~lib/typedarray/Float64Array#__get (; 53 ;) (type $FUNCSIG$dii) (param $0 i32) (param $1 i32) (result f64) local.get $1 local.get $0 i32.load offset=8 @@ -2272,9 +3490,9 @@ i32.shr_u i32.ge_u if - i32.const 0 - i32.const 192 - i32.const 848 + i32.const 288 + i32.const 344 + i32.const 847 i32.const 63 call $~lib/builtins/abort unreachable @@ -2287,15 +3505,15 @@ i32.add f64.load ) - (func $~lib/typedarray/Uint8ClampedArray#__set (; 50 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/typedarray/Uint8ClampedArray#__set (; 54 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) local.get $1 local.get $0 i32.load offset=8 i32.ge_u if - i32.const 0 - i32.const 192 - i32.const 198 + i32.const 288 + i32.const 344 + i32.const 197 i32.const 44 call $~lib/builtins/abort unreachable @@ -2319,15 +3537,15 @@ i32.and i32.store8 ) - (func $~lib/typedarray/Uint8ClampedArray#__get (; 51 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Uint8ClampedArray#__get (; 55 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $1 local.get $0 i32.load offset=8 i32.ge_u if - i32.const 0 - i32.const 192 - i32.const 192 + i32.const 288 + i32.const 344 + i32.const 191 i32.const 44 call $~lib/builtins/abort unreachable @@ -2338,15 +3556,15 @@ i32.add i32.load8_u ) - (func $~lib/typedarray/Int8Array#__set (; 52 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/typedarray/Int8Array#__set (; 56 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) local.get $1 local.get $0 i32.load offset=8 i32.ge_u if - i32.const 0 - i32.const 192 - i32.const 34 + i32.const 288 + i32.const 344 + i32.const 33 i32.const 44 call $~lib/builtins/abort unreachable @@ -2358,7 +3576,7 @@ local.get $2 i32.store8 ) - (func $~lib/typedarray/Int8Array#fill (; 53 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + (func $~lib/typedarray/Int8Array#fill (; 57 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) (local $4 i32) (local $5 i32) (local $6 i32) @@ -2367,171 +3585,244 @@ (local $9 i32) (local $10 i32) (local $11 i32) - local.get $0 - local.set $7 - local.get $1 - local.set $6 - local.get $2 - local.set $5 - local.get $3 - local.set $4 - local.get $7 - i32.load offset=4 + block $~lib/typedarray/FILL<~lib/typedarray/Int8Array,i8>|inlined.0 (result i32) + local.get $0 + call $~lib/rt/purerc/__retain + local.set $7 + local.get $1 + local.set $6 + local.get $2 + local.set $5 + local.get $3 + local.set $4 + local.get $7 + i32.load offset=4 + local.set $8 + local.get $7 + call $~lib/typedarray/Int8Array#get:length + local.set $9 + local.get $5 + i32.const 0 + i32.lt_s + if (result i32) + local.get $9 + local.get $5 + i32.add + local.tee $10 + i32.const 0 + local.tee $11 + local.get $10 + local.get $11 + i32.gt_s + select + else + local.get $5 + local.tee $10 + local.get $9 + local.tee $11 + local.get $10 + local.get $11 + i32.lt_s + select + end + local.set $5 + local.get $4 + i32.const 0 + i32.lt_s + if (result i32) + local.get $9 + local.get $4 + i32.add + local.tee $10 + i32.const 0 + local.tee $11 + local.get $10 + local.get $11 + i32.gt_s + select + else + local.get $4 + local.tee $10 + local.get $9 + local.tee $11 + local.get $10 + local.get $11 + i32.lt_s + select + end + local.set $4 + local.get $5 + local.get $4 + i32.lt_s + if + local.get $8 + local.get $5 + i32.add + local.get $6 + local.get $4 + local.get $5 + i32.sub + call $~lib/memory/memory.fill + end + local.get $7 + end + local.tee $9 + call $~lib/rt/purerc/__retain local.set $8 - local.get $7 - call $~lib/typedarray/Int8Array#get:length - local.set $9 - local.get $5 - i32.const 0 - i32.lt_s - if (result i32) - local.get $9 - local.get $5 - i32.add - local.tee $10 - i32.const 0 - local.tee $11 - local.get $10 - local.get $11 - i32.gt_s - select - else - local.get $5 - local.tee $10 - local.get $9 - local.tee $11 - local.get $10 - local.get $11 - i32.lt_s - select - end - local.set $5 - local.get $4 - i32.const 0 - i32.lt_s - if (result i32) - local.get $9 - local.get $4 - i32.add - local.tee $10 - i32.const 0 - local.tee $11 - local.get $10 - local.get $11 - i32.gt_s - select - else - local.get $4 - local.tee $10 - local.get $9 - local.tee $11 - local.get $10 - local.get $11 - i32.lt_s - select - end - local.set $4 - local.get $5 - local.get $4 - i32.lt_s - if - local.get $8 - local.get $5 - i32.add - local.get $6 - local.get $4 - local.get $5 - i32.sub - call $~lib/memory/memory.fill - end - local.get $7 + local.get $9 + call $~lib/rt/purerc/__release + local.get $8 ) - (func $~lib/memory/memory.copy (; 54 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/rt/purerc/increment (; 58 ;) (type $FUNCSIG$vi) (param $0 i32) + (local $1 i32) + local.get $0 + i32.load offset=4 + local.set $1 + local.get $1 + i32.const 268435455 + i32.const -1 + i32.xor + i32.and + local.get $1 + i32.const 1 + i32.add + i32.const 268435455 + i32.const -1 + i32.xor + i32.and + i32.eq + i32.eqz + if + i32.const 0 + i32.const 424 + i32.const 103 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + i32.const 1 + i32.add + i32.store offset=4 + local.get $0 + call $~lib/rt/purerc/onIncrement + local.get $0 + i32.load + i32.const 1 + i32.and + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 424 + i32.const 106 + i32.const 13 + call $~lib/builtins/abort + unreachable + end + ) + (func $~lib/rt/purerc/__retain (; 59 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + local.get $0 + global.get $~lib/builtins/HEAP_BASE + i32.gt_u + if + local.get $0 + i32.const 16 + i32.sub + call $~lib/rt/purerc/increment + end + local.get $0 + ) + (func $~lib/memory/memory.copy (; 60 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) + (local $6 i32) block $~lib/util/memory/memmove|inlined.0 local.get $0 + local.set $5 local.get $1 + local.set $4 + local.get $2 + local.set $3 + local.get $5 + local.get $4 i32.eq if br $~lib/util/memory/memmove|inlined.0 end - local.get $0 - local.get $1 + local.get $5 + local.get $4 i32.lt_u if - local.get $1 + local.get $4 i32.const 7 i32.and - local.get $0 + local.get $5 i32.const 7 i32.and i32.eq if block $break|0 loop $continue|0 - local.get $0 + local.get $5 i32.const 7 i32.and if - block - local.get $2 - i32.eqz - if - br $~lib/util/memory/memmove|inlined.0 - end - local.get $2 - i32.const 1 - i32.sub - local.set $2 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end - i32.load8_u - i32.store8 + local.get $3 + i32.eqz + if + br $~lib/util/memory/memmove|inlined.0 end + local.get $3 + i32.const 1 + i32.sub + local.set $3 + block (result i32) + local.get $5 + local.tee $6 + i32.const 1 + i32.add + local.set $5 + local.get $6 + end + block (result i32) + local.get $4 + local.tee $6 + i32.const 1 + i32.add + local.set $4 + local.get $6 + end + i32.load8_u + i32.store8 br $continue|0 end end end block $break|1 loop $continue|1 - local.get $2 + local.get $3 i32.const 8 i32.ge_u if - block - local.get $0 - local.get $1 - i64.load - i64.store - local.get $2 - i32.const 8 - i32.sub - local.set $2 - local.get $0 - i32.const 8 - i32.add - local.set $0 - local.get $1 - i32.const 8 - i32.add - local.set $1 - end + local.get $5 + local.get $4 + i64.load + i64.store + local.get $3 + i32.const 8 + i32.sub + local.set $3 + local.get $5 + i32.const 8 + i32.add + local.set $5 + local.get $4 + i32.const 8 + i32.add + local.set $4 br $continue|1 end end @@ -2539,95 +3830,89 @@ end block $break|2 loop $continue|2 - local.get $2 + local.get $3 if - block - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end - i32.load8_u - i32.store8 - local.get $2 + block (result i32) + local.get $5 + local.tee $6 i32.const 1 - i32.sub - local.set $2 + i32.add + local.set $5 + local.get $6 end + block (result i32) + local.get $4 + local.tee $6 + i32.const 1 + i32.add + local.set $4 + local.get $6 + end + i32.load8_u + i32.store8 + local.get $3 + i32.const 1 + i32.sub + local.set $3 br $continue|2 end end end else - local.get $1 + local.get $4 i32.const 7 i32.and - local.get $0 + local.get $5 i32.const 7 i32.and i32.eq if block $break|3 loop $continue|3 - local.get $0 - local.get $2 + local.get $5 + local.get $3 i32.add i32.const 7 i32.and if - block - local.get $2 - i32.eqz - if - br $~lib/util/memory/memmove|inlined.0 - end - local.get $0 - local.get $2 - i32.const 1 - i32.sub - local.tee $2 - i32.add - local.get $1 - local.get $2 - i32.add - i32.load8_u - i32.store8 + local.get $3 + i32.eqz + if + br $~lib/util/memory/memmove|inlined.0 end + local.get $5 + local.get $3 + i32.const 1 + i32.sub + local.tee $3 + i32.add + local.get $4 + local.get $3 + i32.add + i32.load8_u + i32.store8 br $continue|3 end end end block $break|4 loop $continue|4 - local.get $2 + local.get $3 i32.const 8 i32.ge_u if - block - local.get $2 - i32.const 8 - i32.sub - local.set $2 - local.get $0 - local.get $2 - i32.add - local.get $1 - local.get $2 - i32.add - i64.load - i64.store - end + local.get $3 + i32.const 8 + i32.sub + local.set $3 + local.get $5 + local.get $3 + i32.add + local.get $4 + local.get $3 + i32.add + i64.load + i64.store br $continue|4 end end @@ -2635,16 +3920,16 @@ end block $break|5 loop $continue|5 - local.get $2 + local.get $3 if - local.get $0 - local.get $2 + local.get $5 + local.get $3 i32.const 1 i32.sub - local.tee $2 + local.tee $3 i32.add - local.get $1 - local.get $2 + local.get $4 + local.get $3 i32.add i32.load8_u i32.store8 @@ -2655,49 +3940,25 @@ end end ) - (func $~lib/util/runtime/makeArray (; 55 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + (func $~lib/rt/common/__allocArray (; 61 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) (local $4 i32) (local $5 i32) (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) i32.const 16 - call $~lib/util/runtime/allocate local.get $2 - call $~lib/util/runtime/register + call $~lib/rt/tlsf/__alloc local.set $4 local.get $0 local.get $1 i32.shl local.set $5 local.get $5 - call $~lib/util/runtime/allocate i32.const 15 - call $~lib/util/runtime/register + call $~lib/rt/tlsf/__alloc local.set $6 local.get $4 - local.tee $7 local.get $6 - local.tee $8 - local.get $7 - i32.load - local.tee $9 - i32.ne - if (result i32) - local.get $9 - if - local.get $9 - local.get $7 - call $~lib/collector/dummy/__ref_unlink - end - local.get $8 - local.get $7 - call $~lib/collector/dummy/__ref_link - local.get $8 - else - local.get $8 - end + call $~lib/rt/purerc/__retain i32.store local.get $4 local.get $6 @@ -2717,19 +3978,19 @@ end local.get $4 ) - (func $~lib/array/Array#get:length (; 56 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/array/Array#get:length (; 62 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.load offset=12 ) - (func $~lib/typedarray/Int8Array#__get (; 57 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Int8Array#__get (; 63 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $1 local.get $0 i32.load offset=8 i32.ge_u if - i32.const 0 - i32.const 192 - i32.const 28 + i32.const 288 + i32.const 344 + i32.const 27 i32.const 44 call $~lib/builtins/abort unreachable @@ -2740,7 +4001,7 @@ i32.add i32.load8_s ) - (func $~lib/array/Array#__unchecked_get (; 58 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array#__unchecked_get (; 64 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $0 i32.load offset=4 local.get $1 @@ -2749,7 +4010,7 @@ i32.add i32.load8_s ) - (func $~lib/array/Array#__get (; 59 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array#__get (; 65 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $1 local.get $0 i32.load offset=8 @@ -2757,9 +4018,9 @@ i32.shr_u i32.ge_u if - i32.const 0 - i32.const 272 - i32.const 99 + i32.const 288 + i32.const 480 + i32.const 100 i32.const 61 call $~lib/builtins/abort unreachable @@ -2768,9 +4029,16 @@ local.get $1 call $~lib/array/Array#__unchecked_get ) - (func $std/typedarray/isInt8ArrayEqual (; 60 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $std/typedarray/isInt8ArrayEqual (; 66 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) + (local $4 i32) + local.get $0 + call $~lib/rt/purerc/__retain + drop + local.get $1 + call $~lib/rt/purerc/__retain + drop local.get $0 call $~lib/typedarray/Int8Array#get:length local.get $1 @@ -2778,6 +4046,12 @@ i32.ne if i32.const 0 + local.set $2 + local.get $0 + call $~lib/rt/purerc/__release + local.get $1 + call $~lib/rt/purerc/__release + local.get $2 return end block $break|0 @@ -2803,6 +4077,12 @@ i32.ne if i32.const 0 + local.set $4 + local.get $0 + call $~lib/rt/purerc/__release + local.get $1 + call $~lib/rt/purerc/__release + local.get $4 return end local.get $2 @@ -2815,137 +4095,132 @@ unreachable end i32.const 1 + local.set $3 + local.get $0 + call $~lib/rt/purerc/__release + local.get $1 + call $~lib/rt/purerc/__release + local.get $3 ) - (func $~lib/typedarray/Int8Array#subarray (; 61 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/typedarray/Int8Array#subarray (; 67 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) (local $6 i32) (local $7 i32) (local $8 i32) - (local $9 i32) - (local $10 i32) - (local $11 i32) - (local $12 i32) - local.get $0 - local.set $5 - local.get $1 - local.set $4 - local.get $2 - local.set $3 - local.get $5 - call $~lib/typedarray/Int8Array#get:length - local.set $6 - local.get $4 - i32.const 0 - i32.lt_s - if - local.get $6 + block $~lib/typedarray/SUBARRAY<~lib/typedarray/Int8Array,i8>|inlined.0 (result i32) + local.get $0 + call $~lib/rt/purerc/__retain + local.set $5 + local.get $1 + local.set $4 + local.get $2 + local.set $3 + local.get $5 + call $~lib/typedarray/Int8Array#get:length + local.set $6 local.get $4 - i32.add - local.tee $7 i32.const 0 - local.tee $8 - local.get $7 - local.get $8 - i32.gt_s - select - local.set $4 - else - local.get $4 - local.tee $7 - local.get $6 - local.tee $8 - local.get $7 - local.get $8 i32.lt_s - select - local.set $4 - end - local.get $3 - i32.const 0 - i32.lt_s - if - local.get $6 - local.get $3 - i32.add - local.tee $7 - local.get $4 - local.tee $8 - local.get $7 - local.get $8 - i32.gt_s - select - local.set $3 - else - local.get $3 - local.tee $7 - local.get $6 - local.tee $8 - local.get $7 - local.get $8 - i32.lt_s - select - local.tee $7 - local.get $4 - local.tee $8 - local.get $7 - local.get $8 - i32.gt_s - select - local.set $3 - end - i32.const 12 - call $~lib/util/runtime/allocate - local.set $7 - local.get $5 - i32.load - local.set $8 - local.get $5 - i32.load offset=4 - local.set $9 - local.get $7 - local.tee $10 - local.get $8 - local.tee $11 - local.get $10 - i32.load - local.tee $12 - i32.ne - if (result i32) - local.get $12 if - local.get $12 - local.get $10 - call $~lib/collector/dummy/__ref_unlink + local.get $6 + local.get $4 + i32.add + local.tee $7 + i32.const 0 + local.tee $8 + local.get $7 + local.get $8 + i32.gt_s + select + local.set $4 + else + local.get $4 + local.tee $7 + local.get $6 + local.tee $8 + local.get $7 + local.get $8 + i32.lt_s + select + local.set $4 end - local.get $11 - local.get $10 - call $~lib/collector/dummy/__ref_link - local.get $11 - else - local.get $11 + local.get $3 + i32.const 0 + i32.lt_s + if + local.get $6 + local.get $3 + i32.add + local.tee $7 + local.get $4 + local.tee $8 + local.get $7 + local.get $8 + i32.gt_s + select + local.set $3 + else + local.get $3 + local.tee $7 + local.get $6 + local.tee $8 + local.get $7 + local.get $8 + i32.lt_s + select + local.tee $7 + local.get $4 + local.tee $8 + local.get $7 + local.get $8 + i32.gt_s + select + local.set $3 + end + i32.const 12 + i32.const 17 + call $~lib/rt/tlsf/__alloc + local.set $7 + local.get $7 + local.tee $8 + local.get $5 + i32.load + local.get $8 + i32.load + call $~lib/rt/purerc/__retainRelease + i32.store + local.get $7 + local.get $5 + i32.load offset=4 + local.get $4 + i32.const 0 + i32.shl + i32.add + i32.store offset=4 + local.get $7 + local.get $3 + local.get $4 + i32.sub + i32.const 0 + i32.shl + i32.store offset=8 + local.get $7 + call $~lib/rt/purerc/__retain + local.set $8 + local.get $5 + call $~lib/rt/purerc/__release + local.get $8 end - i32.store + local.tee $7 + call $~lib/rt/purerc/__retain + local.set $6 local.get $7 - local.get $9 - local.get $4 - i32.const 0 - i32.shl - i32.add - i32.store offset=4 - local.get $7 - local.get $3 - local.get $4 - i32.sub - i32.const 0 - i32.shl - i32.store offset=8 - local.get $7 - i32.const 17 - call $~lib/util/runtime/register + call $~lib/rt/purerc/__release + local.get $6 ) - (func $~lib/typedarray/Int32Array#fill (; 62 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + (func $~lib/typedarray/Int32Array#fill (; 68 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) (local $4 i32) (local $5 i32) (local $6 i32) @@ -2954,100 +4229,109 @@ (local $9 i32) (local $10 i32) (local $11 i32) - local.get $0 - local.set $7 - local.get $1 - local.set $6 - local.get $2 - local.set $5 - local.get $3 - local.set $4 - local.get $7 - i32.load offset=4 - local.set $8 - local.get $7 - call $~lib/typedarray/Int32Array#get:length - local.set $9 - local.get $5 - i32.const 0 - i32.lt_s - if (result i32) - local.get $9 + block $~lib/typedarray/FILL<~lib/typedarray/Int32Array,i32>|inlined.0 (result i32) + local.get $0 + call $~lib/rt/purerc/__retain + local.set $7 + local.get $1 + local.set $6 + local.get $2 + local.set $5 + local.get $3 + local.set $4 + local.get $7 + i32.load offset=4 + local.set $8 + local.get $7 + call $~lib/typedarray/Int32Array#get:length + local.set $9 local.get $5 - i32.add - local.tee $10 i32.const 0 - local.tee $11 - local.get $10 - local.get $11 - i32.gt_s - select - else - local.get $5 - local.tee $10 - local.get $9 - local.tee $11 - local.get $10 - local.get $11 i32.lt_s - select - end - local.set $5 - local.get $4 - i32.const 0 - i32.lt_s - if (result i32) - local.get $9 - local.get $4 - i32.add - local.tee $10 - i32.const 0 - local.tee $11 - local.get $10 - local.get $11 - i32.gt_s - select - else - local.get $4 - local.tee $10 - local.get $9 - local.tee $11 - local.get $10 - local.get $11 - i32.lt_s - select - end - local.set $4 - block $break|0 - loop $repeat|0 + if (result i32) + local.get $9 local.get $5 - local.get $4 + i32.add + local.tee $10 + i32.const 0 + local.tee $11 + local.get $10 + local.get $11 + i32.gt_s + select + else + local.get $5 + local.tee $10 + local.get $9 + local.tee $11 + local.get $10 + local.get $11 i32.lt_s - i32.eqz - br_if $break|0 - local.get $8 - local.get $5 - i32.const 2 - i32.shl + select + end + local.set $5 + local.get $4 + i32.const 0 + i32.lt_s + if (result i32) + local.get $9 + local.get $4 i32.add - local.get $6 - i32.store - local.get $5 - i32.const 1 - i32.add - local.set $5 - br $repeat|0 + local.tee $10 + i32.const 0 + local.tee $11 + local.get $10 + local.get $11 + i32.gt_s + select + else + local.get $4 + local.tee $10 + local.get $9 + local.tee $11 + local.get $10 + local.get $11 + i32.lt_s + select + end + local.set $4 + block $break|0 + loop $repeat|0 + local.get $5 + local.get $4 + i32.lt_s + i32.eqz + br_if $break|0 + local.get $8 + local.get $5 + i32.const 2 + i32.shl + i32.add + local.get $6 + i32.store + local.get $5 + i32.const 1 + i32.add + local.set $5 + br $repeat|0 + unreachable + end unreachable end - unreachable + local.get $7 end - local.get $7 + local.tee $9 + call $~lib/rt/purerc/__retain + local.set $8 + local.get $9 + call $~lib/rt/purerc/__release + local.get $8 ) - (func $~lib/array/Array#get:length (; 63 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/array/Array#get:length (; 69 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.load offset=12 ) - (func $~lib/array/Array#__unchecked_get (; 64 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array#__unchecked_get (; 70 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $0 i32.load offset=4 local.get $1 @@ -3056,7 +4340,7 @@ i32.add i32.load ) - (func $~lib/array/Array#__get (; 65 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array#__get (; 71 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $1 local.get $0 i32.load offset=8 @@ -3064,9 +4348,9 @@ i32.shr_u i32.ge_u if - i32.const 0 - i32.const 272 - i32.const 99 + i32.const 288 + i32.const 480 + i32.const 100 i32.const 61 call $~lib/builtins/abort unreachable @@ -3075,9 +4359,16 @@ local.get $1 call $~lib/array/Array#__unchecked_get ) - (func $std/typedarray/isInt32ArrayEqual (; 66 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $std/typedarray/isInt32ArrayEqual (; 72 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) + (local $4 i32) + local.get $0 + call $~lib/rt/purerc/__retain + drop + local.get $1 + call $~lib/rt/purerc/__retain + drop local.get $0 call $~lib/typedarray/Int32Array#get:length local.get $1 @@ -3085,6 +4376,12 @@ i32.ne if i32.const 0 + local.set $2 + local.get $0 + call $~lib/rt/purerc/__release + local.get $1 + call $~lib/rt/purerc/__release + local.get $2 return end block $break|0 @@ -3110,6 +4407,12 @@ i32.ne if i32.const 0 + local.set $4 + local.get $0 + call $~lib/rt/purerc/__release + local.get $1 + call $~lib/rt/purerc/__release + local.get $4 return end local.get $2 @@ -3122,13 +4425,27 @@ unreachable end i32.const 1 + local.set $3 + local.get $0 + call $~lib/rt/purerc/__release + local.get $1 + call $~lib/rt/purerc/__release + local.get $3 ) - (func $std/typedarray/testReduce<~lib/typedarray/Int8Array,i8>~anonymous|0 (; 67 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + (func $std/typedarray/testReduce<~lib/typedarray/Int8Array,i8>~anonymous|0 (; 73 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + (local $4 i32) + local.get $3 + call $~lib/rt/purerc/__retain + drop local.get $0 local.get $1 i32.add + local.set $4 + local.get $3 + call $~lib/rt/purerc/__release + local.get $4 ) - (func $~lib/typedarray/Int8Array#reduce (; 68 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/typedarray/Int8Array#reduce (; 74 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -3136,6 +4453,7 @@ (local $7 i32) (local $8 i32) local.get $0 + call $~lib/rt/purerc/__retain local.set $5 local.get $1 local.set $4 @@ -3184,32 +4502,39 @@ unreachable end local.get $3 + local.set $8 + local.get $5 + call $~lib/rt/purerc/__release + local.get $8 ) - (func $std/typedarray/testReduce<~lib/typedarray/Int8Array,i8> (; 69 ;) (type $FUNCSIG$v) + (func $std/typedarray/testReduce<~lib/typedarray/Int8Array,i8> (; 75 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) + (local $2 i32) i32.const 0 i32.const 3 call $~lib/typedarray/Int8Array#constructor - local.set $0 - local.get $0 + local.tee $0 + call $~lib/rt/purerc/__retain + local.set $1 + local.get $1 i32.const 0 i32.const 1 call $~lib/typedarray/Int8Array#__set - local.get $0 + local.get $1 i32.const 1 i32.const 2 call $~lib/typedarray/Int8Array#__set - local.get $0 + local.get $1 i32.const 2 i32.const 3 call $~lib/typedarray/Int8Array#__set - local.get $0 + local.get $1 i32.const 2 i32.const 0 call $~lib/typedarray/Int8Array#reduce - local.set $1 - local.get $1 + local.set $2 + local.get $2 i32.const 24 i32.shl i32.const 24 @@ -3225,16 +4550,20 @@ call $~lib/builtins/abort unreachable end + local.get $0 + call $~lib/rt/purerc/__release + local.get $1 + call $~lib/rt/purerc/__release ) - (func $~lib/typedarray/Uint8Array#__set (; 70 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/typedarray/Uint8Array#__set (; 76 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) local.get $1 local.get $0 i32.load offset=8 i32.ge_u if - i32.const 0 - i32.const 192 - i32.const 116 + i32.const 288 + i32.const 344 + i32.const 115 i32.const 44 call $~lib/builtins/abort unreachable @@ -3246,12 +4575,20 @@ local.get $2 i32.store8 ) - (func $std/typedarray/testReduce<~lib/typedarray/Uint8Array,u8>~anonymous|0 (; 71 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + (func $std/typedarray/testReduce<~lib/typedarray/Uint8Array,u8>~anonymous|0 (; 77 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + (local $4 i32) + local.get $3 + call $~lib/rt/purerc/__retain + drop local.get $0 local.get $1 i32.add + local.set $4 + local.get $3 + call $~lib/rt/purerc/__release + local.get $4 ) - (func $~lib/typedarray/Uint8Array#reduce (; 72 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/typedarray/Uint8Array#reduce (; 78 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -3259,6 +4596,7 @@ (local $7 i32) (local $8 i32) local.get $0 + call $~lib/rt/purerc/__retain local.set $5 local.get $1 local.set $4 @@ -3307,32 +4645,39 @@ unreachable end local.get $3 + local.set $8 + local.get $5 + call $~lib/rt/purerc/__release + local.get $8 ) - (func $std/typedarray/testReduce<~lib/typedarray/Uint8Array,u8> (; 73 ;) (type $FUNCSIG$v) + (func $std/typedarray/testReduce<~lib/typedarray/Uint8Array,u8> (; 79 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) + (local $2 i32) i32.const 0 i32.const 3 call $~lib/typedarray/Uint8Array#constructor - local.set $0 - local.get $0 + local.tee $0 + call $~lib/rt/purerc/__retain + local.set $1 + local.get $1 i32.const 0 i32.const 1 call $~lib/typedarray/Uint8Array#__set - local.get $0 + local.get $1 i32.const 1 i32.const 2 call $~lib/typedarray/Uint8Array#__set - local.get $0 + local.get $1 i32.const 2 i32.const 3 call $~lib/typedarray/Uint8Array#__set - local.get $0 + local.get $1 i32.const 3 i32.const 0 call $~lib/typedarray/Uint8Array#reduce - local.set $1 - local.get $1 + local.set $2 + local.get $2 i32.const 255 i32.and i32.const 6 @@ -3346,13 +4691,25 @@ call $~lib/builtins/abort unreachable end + local.get $0 + call $~lib/rt/purerc/__release + local.get $1 + call $~lib/rt/purerc/__release ) - (func $std/typedarray/testReduce<~lib/typedarray/Uint8ClampedArray,u8>~anonymous|0 (; 74 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + (func $std/typedarray/testReduce<~lib/typedarray/Uint8ClampedArray,u8>~anonymous|0 (; 80 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + (local $4 i32) + local.get $3 + call $~lib/rt/purerc/__retain + drop local.get $0 local.get $1 i32.add + local.set $4 + local.get $3 + call $~lib/rt/purerc/__release + local.get $4 ) - (func $~lib/typedarray/Uint8ClampedArray#reduce (; 75 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/typedarray/Uint8ClampedArray#reduce (; 81 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -3360,6 +4717,7 @@ (local $7 i32) (local $8 i32) local.get $0 + call $~lib/rt/purerc/__retain local.set $5 local.get $1 local.set $4 @@ -3408,32 +4766,39 @@ unreachable end local.get $3 + local.set $8 + local.get $5 + call $~lib/rt/purerc/__release + local.get $8 ) - (func $std/typedarray/testReduce<~lib/typedarray/Uint8ClampedArray,u8> (; 76 ;) (type $FUNCSIG$v) + (func $std/typedarray/testReduce<~lib/typedarray/Uint8ClampedArray,u8> (; 82 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) + (local $2 i32) i32.const 0 i32.const 3 call $~lib/typedarray/Uint8ClampedArray#constructor - local.set $0 - local.get $0 + local.tee $0 + call $~lib/rt/purerc/__retain + local.set $1 + local.get $1 i32.const 0 i32.const 1 call $~lib/typedarray/Uint8ClampedArray#__set - local.get $0 + local.get $1 i32.const 1 i32.const 2 call $~lib/typedarray/Uint8ClampedArray#__set - local.get $0 + local.get $1 i32.const 2 i32.const 3 call $~lib/typedarray/Uint8ClampedArray#__set - local.get $0 + local.get $1 i32.const 4 i32.const 0 call $~lib/typedarray/Uint8ClampedArray#reduce - local.set $1 - local.get $1 + local.set $2 + local.get $2 i32.const 255 i32.and i32.const 6 @@ -3447,8 +4812,12 @@ call $~lib/builtins/abort unreachable end + local.get $0 + call $~lib/rt/purerc/__release + local.get $1 + call $~lib/rt/purerc/__release ) - (func $~lib/typedarray/Int16Array#__set (; 77 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/typedarray/Int16Array#__set (; 83 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) local.get $1 local.get $0 i32.load offset=8 @@ -3456,9 +4825,9 @@ i32.shr_u i32.ge_u if - i32.const 0 - i32.const 192 - i32.const 280 + i32.const 288 + i32.const 344 + i32.const 279 i32.const 63 call $~lib/builtins/abort unreachable @@ -3472,12 +4841,20 @@ local.get $2 i32.store16 ) - (func $std/typedarray/testReduce<~lib/typedarray/Int16Array,i16>~anonymous|0 (; 78 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + (func $std/typedarray/testReduce<~lib/typedarray/Int16Array,i16>~anonymous|0 (; 84 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + (local $4 i32) + local.get $3 + call $~lib/rt/purerc/__retain + drop local.get $0 local.get $1 i32.add + local.set $4 + local.get $3 + call $~lib/rt/purerc/__release + local.get $4 ) - (func $~lib/typedarray/Int16Array#reduce (; 79 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/typedarray/Int16Array#reduce (; 85 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -3485,6 +4862,7 @@ (local $7 i32) (local $8 i32) local.get $0 + call $~lib/rt/purerc/__retain local.set $5 local.get $1 local.set $4 @@ -3533,32 +4911,39 @@ unreachable end local.get $3 + local.set $8 + local.get $5 + call $~lib/rt/purerc/__release + local.get $8 ) - (func $std/typedarray/testReduce<~lib/typedarray/Int16Array,i16> (; 80 ;) (type $FUNCSIG$v) + (func $std/typedarray/testReduce<~lib/typedarray/Int16Array,i16> (; 86 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) + (local $2 i32) i32.const 0 i32.const 3 call $~lib/typedarray/Int16Array#constructor - local.set $0 - local.get $0 + local.tee $0 + call $~lib/rt/purerc/__retain + local.set $1 + local.get $1 i32.const 0 i32.const 1 call $~lib/typedarray/Int16Array#__set - local.get $0 + local.get $1 i32.const 1 i32.const 2 call $~lib/typedarray/Int16Array#__set - local.get $0 + local.get $1 i32.const 2 i32.const 3 call $~lib/typedarray/Int16Array#__set - local.get $0 + local.get $1 i32.const 5 i32.const 0 call $~lib/typedarray/Int16Array#reduce - local.set $1 - local.get $1 + local.set $2 + local.get $2 i32.const 16 i32.shl i32.const 16 @@ -3574,8 +4959,12 @@ call $~lib/builtins/abort unreachable end + local.get $0 + call $~lib/rt/purerc/__release + local.get $1 + call $~lib/rt/purerc/__release ) - (func $~lib/typedarray/Uint16Array#__set (; 81 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/typedarray/Uint16Array#__set (; 87 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) local.get $1 local.get $0 i32.load offset=8 @@ -3583,9 +4972,9 @@ i32.shr_u i32.ge_u if - i32.const 0 - i32.const 192 - i32.const 362 + i32.const 288 + i32.const 344 + i32.const 361 i32.const 63 call $~lib/builtins/abort unreachable @@ -3599,12 +4988,20 @@ local.get $2 i32.store16 ) - (func $std/typedarray/testReduce<~lib/typedarray/Uint16Array,u16>~anonymous|0 (; 82 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + (func $std/typedarray/testReduce<~lib/typedarray/Uint16Array,u16>~anonymous|0 (; 88 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + (local $4 i32) + local.get $3 + call $~lib/rt/purerc/__retain + drop local.get $0 local.get $1 i32.add + local.set $4 + local.get $3 + call $~lib/rt/purerc/__release + local.get $4 ) - (func $~lib/typedarray/Uint16Array#reduce (; 83 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/typedarray/Uint16Array#reduce (; 89 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -3612,6 +5009,7 @@ (local $7 i32) (local $8 i32) local.get $0 + call $~lib/rt/purerc/__retain local.set $5 local.get $1 local.set $4 @@ -3660,32 +5058,39 @@ unreachable end local.get $3 + local.set $8 + local.get $5 + call $~lib/rt/purerc/__release + local.get $8 ) - (func $std/typedarray/testReduce<~lib/typedarray/Uint16Array,u16> (; 84 ;) (type $FUNCSIG$v) + (func $std/typedarray/testReduce<~lib/typedarray/Uint16Array,u16> (; 90 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) + (local $2 i32) i32.const 0 i32.const 3 call $~lib/typedarray/Uint16Array#constructor - local.set $0 - local.get $0 + local.tee $0 + call $~lib/rt/purerc/__retain + local.set $1 + local.get $1 i32.const 0 i32.const 1 call $~lib/typedarray/Uint16Array#__set - local.get $0 + local.get $1 i32.const 1 i32.const 2 call $~lib/typedarray/Uint16Array#__set - local.get $0 + local.get $1 i32.const 2 i32.const 3 call $~lib/typedarray/Uint16Array#__set - local.get $0 + local.get $1 i32.const 6 i32.const 0 call $~lib/typedarray/Uint16Array#reduce - local.set $1 - local.get $1 + local.set $2 + local.get $2 i32.const 65535 i32.and i32.const 6 @@ -3699,13 +5104,25 @@ call $~lib/builtins/abort unreachable end + local.get $0 + call $~lib/rt/purerc/__release + local.get $1 + call $~lib/rt/purerc/__release ) - (func $std/typedarray/testReduce<~lib/typedarray/Int32Array,i32>~anonymous|0 (; 85 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + (func $std/typedarray/testReduce<~lib/typedarray/Int32Array,i32>~anonymous|0 (; 91 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + (local $4 i32) + local.get $3 + call $~lib/rt/purerc/__retain + drop local.get $0 local.get $1 i32.add + local.set $4 + local.get $3 + call $~lib/rt/purerc/__release + local.get $4 ) - (func $~lib/typedarray/Int32Array#reduce (; 86 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/typedarray/Int32Array#reduce (; 92 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -3713,6 +5130,7 @@ (local $7 i32) (local $8 i32) local.get $0 + call $~lib/rt/purerc/__retain local.set $5 local.get $1 local.set $4 @@ -3761,32 +5179,39 @@ unreachable end local.get $3 + local.set $8 + local.get $5 + call $~lib/rt/purerc/__release + local.get $8 ) - (func $std/typedarray/testReduce<~lib/typedarray/Int32Array,i32> (; 87 ;) (type $FUNCSIG$v) + (func $std/typedarray/testReduce<~lib/typedarray/Int32Array,i32> (; 93 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) + (local $2 i32) i32.const 0 i32.const 3 call $~lib/typedarray/Int32Array#constructor - local.set $0 - local.get $0 + local.tee $0 + call $~lib/rt/purerc/__retain + local.set $1 + local.get $1 i32.const 0 i32.const 1 call $~lib/typedarray/Int32Array#__set - local.get $0 + local.get $1 i32.const 1 i32.const 2 call $~lib/typedarray/Int32Array#__set - local.get $0 + local.get $1 i32.const 2 i32.const 3 call $~lib/typedarray/Int32Array#__set - local.get $0 + local.get $1 i32.const 7 i32.const 0 call $~lib/typedarray/Int32Array#reduce - local.set $1 - local.get $1 + local.set $2 + local.get $2 i32.const 6 i32.eq i32.eqz @@ -3798,8 +5223,12 @@ call $~lib/builtins/abort unreachable end + local.get $0 + call $~lib/rt/purerc/__release + local.get $1 + call $~lib/rt/purerc/__release ) - (func $~lib/typedarray/Uint32Array#__set (; 88 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/typedarray/Uint32Array#__set (; 94 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) local.get $1 local.get $0 i32.load offset=8 @@ -3807,9 +5236,9 @@ i32.shr_u i32.ge_u if - i32.const 0 - i32.const 192 - i32.const 526 + i32.const 288 + i32.const 344 + i32.const 525 i32.const 63 call $~lib/builtins/abort unreachable @@ -3823,12 +5252,20 @@ local.get $2 i32.store ) - (func $std/typedarray/testReduce<~lib/typedarray/Uint32Array,u32>~anonymous|0 (; 89 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + (func $std/typedarray/testReduce<~lib/typedarray/Uint32Array,u32>~anonymous|0 (; 95 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + (local $4 i32) + local.get $3 + call $~lib/rt/purerc/__retain + drop local.get $0 local.get $1 i32.add + local.set $4 + local.get $3 + call $~lib/rt/purerc/__release + local.get $4 ) - (func $~lib/typedarray/Uint32Array#reduce (; 90 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/typedarray/Uint32Array#reduce (; 96 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -3836,6 +5273,7 @@ (local $7 i32) (local $8 i32) local.get $0 + call $~lib/rt/purerc/__retain local.set $5 local.get $1 local.set $4 @@ -3884,32 +5322,39 @@ unreachable end local.get $3 + local.set $8 + local.get $5 + call $~lib/rt/purerc/__release + local.get $8 ) - (func $std/typedarray/testReduce<~lib/typedarray/Uint32Array,u32> (; 91 ;) (type $FUNCSIG$v) + (func $std/typedarray/testReduce<~lib/typedarray/Uint32Array,u32> (; 97 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) + (local $2 i32) i32.const 0 i32.const 3 call $~lib/typedarray/Uint32Array#constructor - local.set $0 - local.get $0 + local.tee $0 + call $~lib/rt/purerc/__retain + local.set $1 + local.get $1 i32.const 0 i32.const 1 call $~lib/typedarray/Uint32Array#__set - local.get $0 + local.get $1 i32.const 1 i32.const 2 call $~lib/typedarray/Uint32Array#__set - local.get $0 + local.get $1 i32.const 2 i32.const 3 call $~lib/typedarray/Uint32Array#__set - local.get $0 + local.get $1 i32.const 8 i32.const 0 call $~lib/typedarray/Uint32Array#reduce - local.set $1 - local.get $1 + local.set $2 + local.get $2 i32.const 6 i32.eq i32.eqz @@ -3921,8 +5366,12 @@ call $~lib/builtins/abort unreachable end + local.get $0 + call $~lib/rt/purerc/__release + local.get $1 + call $~lib/rt/purerc/__release ) - (func $~lib/typedarray/Int64Array#__set (; 92 ;) (type $FUNCSIG$viij) (param $0 i32) (param $1 i32) (param $2 i64) + (func $~lib/typedarray/Int64Array#__set (; 98 ;) (type $FUNCSIG$viij) (param $0 i32) (param $1 i32) (param $2 i64) local.get $1 local.get $0 i32.load offset=8 @@ -3930,9 +5379,9 @@ i32.shr_u i32.ge_u if - i32.const 0 - i32.const 192 - i32.const 608 + i32.const 288 + i32.const 344 + i32.const 607 i32.const 63 call $~lib/builtins/abort unreachable @@ -3946,19 +5395,29 @@ local.get $2 i64.store ) - (func $std/typedarray/testReduce<~lib/typedarray/Int64Array,i64>~anonymous|0 (; 93 ;) (type $FUNCSIG$jjjii) (param $0 i64) (param $1 i64) (param $2 i32) (param $3 i32) (result i64) + (func $std/typedarray/testReduce<~lib/typedarray/Int64Array,i64>~anonymous|0 (; 99 ;) (type $FUNCSIG$jjjii) (param $0 i64) (param $1 i64) (param $2 i32) (param $3 i32) (result i64) + (local $4 i64) + local.get $3 + call $~lib/rt/purerc/__retain + drop local.get $0 local.get $1 i64.add + local.set $4 + local.get $3 + call $~lib/rt/purerc/__release + local.get $4 ) - (func $~lib/typedarray/Int64Array#reduce (; 94 ;) (type $FUNCSIG$jiij) (param $0 i32) (param $1 i32) (param $2 i64) (result i64) + (func $~lib/typedarray/Int64Array#reduce (; 100 ;) (type $FUNCSIG$jiij) (param $0 i32) (param $1 i32) (param $2 i64) (result i64) (local $3 i32) (local $4 i32) (local $5 i64) (local $6 i32) (local $7 i32) (local $8 i32) + (local $9 i64) local.get $0 + call $~lib/rt/purerc/__retain local.set $4 local.get $1 local.set $3 @@ -4007,32 +5466,39 @@ unreachable end local.get $5 + local.set $9 + local.get $4 + call $~lib/rt/purerc/__release + local.get $9 ) - (func $std/typedarray/testReduce<~lib/typedarray/Int64Array,i64> (; 95 ;) (type $FUNCSIG$v) + (func $std/typedarray/testReduce<~lib/typedarray/Int64Array,i64> (; 101 ;) (type $FUNCSIG$v) (local $0 i32) - (local $1 i64) + (local $1 i32) + (local $2 i64) i32.const 0 i32.const 3 call $~lib/typedarray/Int64Array#constructor - local.set $0 - local.get $0 + local.tee $0 + call $~lib/rt/purerc/__retain + local.set $1 + local.get $1 i32.const 0 i64.const 1 call $~lib/typedarray/Int64Array#__set - local.get $0 + local.get $1 i32.const 1 i64.const 2 call $~lib/typedarray/Int64Array#__set - local.get $0 + local.get $1 i32.const 2 i64.const 3 call $~lib/typedarray/Int64Array#__set - local.get $0 + local.get $1 i32.const 9 i64.const 0 call $~lib/typedarray/Int64Array#reduce - local.set $1 - local.get $1 + local.set $2 + local.get $2 i64.const 6 i64.eq i32.eqz @@ -4044,8 +5510,12 @@ call $~lib/builtins/abort unreachable end + local.get $0 + call $~lib/rt/purerc/__release + local.get $1 + call $~lib/rt/purerc/__release ) - (func $~lib/typedarray/Uint64Array#__set (; 96 ;) (type $FUNCSIG$viij) (param $0 i32) (param $1 i32) (param $2 i64) + (func $~lib/typedarray/Uint64Array#__set (; 102 ;) (type $FUNCSIG$viij) (param $0 i32) (param $1 i32) (param $2 i64) local.get $1 local.get $0 i32.load offset=8 @@ -4053,9 +5523,9 @@ i32.shr_u i32.ge_u if - i32.const 0 - i32.const 192 - i32.const 690 + i32.const 288 + i32.const 344 + i32.const 689 i32.const 63 call $~lib/builtins/abort unreachable @@ -4069,19 +5539,29 @@ local.get $2 i64.store ) - (func $std/typedarray/testReduce<~lib/typedarray/Uint64Array,u64>~anonymous|0 (; 97 ;) (type $FUNCSIG$jjjii) (param $0 i64) (param $1 i64) (param $2 i32) (param $3 i32) (result i64) + (func $std/typedarray/testReduce<~lib/typedarray/Uint64Array,u64>~anonymous|0 (; 103 ;) (type $FUNCSIG$jjjii) (param $0 i64) (param $1 i64) (param $2 i32) (param $3 i32) (result i64) + (local $4 i64) + local.get $3 + call $~lib/rt/purerc/__retain + drop local.get $0 local.get $1 i64.add + local.set $4 + local.get $3 + call $~lib/rt/purerc/__release + local.get $4 ) - (func $~lib/typedarray/Uint64Array#reduce (; 98 ;) (type $FUNCSIG$jiij) (param $0 i32) (param $1 i32) (param $2 i64) (result i64) + (func $~lib/typedarray/Uint64Array#reduce (; 104 ;) (type $FUNCSIG$jiij) (param $0 i32) (param $1 i32) (param $2 i64) (result i64) (local $3 i32) (local $4 i32) (local $5 i64) (local $6 i32) (local $7 i32) (local $8 i32) + (local $9 i64) local.get $0 + call $~lib/rt/purerc/__retain local.set $4 local.get $1 local.set $3 @@ -4130,32 +5610,39 @@ unreachable end local.get $5 + local.set $9 + local.get $4 + call $~lib/rt/purerc/__release + local.get $9 ) - (func $std/typedarray/testReduce<~lib/typedarray/Uint64Array,u64> (; 99 ;) (type $FUNCSIG$v) + (func $std/typedarray/testReduce<~lib/typedarray/Uint64Array,u64> (; 105 ;) (type $FUNCSIG$v) (local $0 i32) - (local $1 i64) + (local $1 i32) + (local $2 i64) i32.const 0 i32.const 3 call $~lib/typedarray/Uint64Array#constructor - local.set $0 - local.get $0 + local.tee $0 + call $~lib/rt/purerc/__retain + local.set $1 + local.get $1 i32.const 0 i64.const 1 call $~lib/typedarray/Uint64Array#__set - local.get $0 + local.get $1 i32.const 1 i64.const 2 call $~lib/typedarray/Uint64Array#__set - local.get $0 + local.get $1 i32.const 2 i64.const 3 call $~lib/typedarray/Uint64Array#__set - local.get $0 + local.get $1 i32.const 10 i64.const 0 call $~lib/typedarray/Uint64Array#reduce - local.set $1 - local.get $1 + local.set $2 + local.get $2 i64.const 6 i64.eq i32.eqz @@ -4167,8 +5654,12 @@ call $~lib/builtins/abort unreachable end + local.get $0 + call $~lib/rt/purerc/__release + local.get $1 + call $~lib/rt/purerc/__release ) - (func $~lib/typedarray/Float32Array#__set (; 100 ;) (type $FUNCSIG$viif) (param $0 i32) (param $1 i32) (param $2 f32) + (func $~lib/typedarray/Float32Array#__set (; 106 ;) (type $FUNCSIG$viif) (param $0 i32) (param $1 i32) (param $2 f32) local.get $1 local.get $0 i32.load offset=8 @@ -4176,9 +5667,9 @@ i32.shr_u i32.ge_u if - i32.const 0 - i32.const 192 - i32.const 772 + i32.const 288 + i32.const 344 + i32.const 771 i32.const 63 call $~lib/builtins/abort unreachable @@ -4192,19 +5683,29 @@ local.get $2 f32.store ) - (func $std/typedarray/testReduce<~lib/typedarray/Float32Array,f32>~anonymous|0 (; 101 ;) (type $FUNCSIG$fffii) (param $0 f32) (param $1 f32) (param $2 i32) (param $3 i32) (result f32) + (func $std/typedarray/testReduce<~lib/typedarray/Float32Array,f32>~anonymous|0 (; 107 ;) (type $FUNCSIG$fffii) (param $0 f32) (param $1 f32) (param $2 i32) (param $3 i32) (result f32) + (local $4 f32) + local.get $3 + call $~lib/rt/purerc/__retain + drop local.get $0 local.get $1 f32.add + local.set $4 + local.get $3 + call $~lib/rt/purerc/__release + local.get $4 ) - (func $~lib/typedarray/Float32Array#reduce (; 102 ;) (type $FUNCSIG$fiif) (param $0 i32) (param $1 i32) (param $2 f32) (result f32) + (func $~lib/typedarray/Float32Array#reduce (; 108 ;) (type $FUNCSIG$fiif) (param $0 i32) (param $1 i32) (param $2 f32) (result f32) (local $3 i32) (local $4 i32) (local $5 f32) (local $6 i32) (local $7 i32) (local $8 i32) + (local $9 f32) local.get $0 + call $~lib/rt/purerc/__retain local.set $4 local.get $1 local.set $3 @@ -4253,32 +5754,39 @@ unreachable end local.get $5 + local.set $9 + local.get $4 + call $~lib/rt/purerc/__release + local.get $9 ) - (func $std/typedarray/testReduce<~lib/typedarray/Float32Array,f32> (; 103 ;) (type $FUNCSIG$v) + (func $std/typedarray/testReduce<~lib/typedarray/Float32Array,f32> (; 109 ;) (type $FUNCSIG$v) (local $0 i32) - (local $1 f32) + (local $1 i32) + (local $2 f32) i32.const 0 i32.const 3 call $~lib/typedarray/Float32Array#constructor - local.set $0 - local.get $0 + local.tee $0 + call $~lib/rt/purerc/__retain + local.set $1 + local.get $1 i32.const 0 f32.const 1 call $~lib/typedarray/Float32Array#__set - local.get $0 + local.get $1 i32.const 1 f32.const 2 call $~lib/typedarray/Float32Array#__set - local.get $0 + local.get $1 i32.const 2 f32.const 3 call $~lib/typedarray/Float32Array#__set - local.get $0 + local.get $1 i32.const 11 f32.const 0 call $~lib/typedarray/Float32Array#reduce - local.set $1 - local.get $1 + local.set $2 + local.get $2 f32.const 6 f32.eq i32.eqz @@ -4290,20 +5798,34 @@ call $~lib/builtins/abort unreachable end + local.get $0 + call $~lib/rt/purerc/__release + local.get $1 + call $~lib/rt/purerc/__release ) - (func $std/typedarray/testReduce<~lib/typedarray/Float64Array,f64>~anonymous|0 (; 104 ;) (type $FUNCSIG$dddii) (param $0 f64) (param $1 f64) (param $2 i32) (param $3 i32) (result f64) + (func $std/typedarray/testReduce<~lib/typedarray/Float64Array,f64>~anonymous|0 (; 110 ;) (type $FUNCSIG$dddii) (param $0 f64) (param $1 f64) (param $2 i32) (param $3 i32) (result f64) + (local $4 f64) + local.get $3 + call $~lib/rt/purerc/__retain + drop local.get $0 local.get $1 f64.add + local.set $4 + local.get $3 + call $~lib/rt/purerc/__release + local.get $4 ) - (func $~lib/typedarray/Float64Array#reduce (; 105 ;) (type $FUNCSIG$diid) (param $0 i32) (param $1 i32) (param $2 f64) (result f64) + (func $~lib/typedarray/Float64Array#reduce (; 111 ;) (type $FUNCSIG$diid) (param $0 i32) (param $1 i32) (param $2 f64) (result f64) (local $3 i32) (local $4 i32) (local $5 f64) (local $6 i32) (local $7 i32) (local $8 i32) + (local $9 f64) local.get $0 + call $~lib/rt/purerc/__retain local.set $4 local.get $1 local.set $3 @@ -4352,32 +5874,39 @@ unreachable end local.get $5 + local.set $9 + local.get $4 + call $~lib/rt/purerc/__release + local.get $9 ) - (func $std/typedarray/testReduce<~lib/typedarray/Float64Array,f64> (; 106 ;) (type $FUNCSIG$v) + (func $std/typedarray/testReduce<~lib/typedarray/Float64Array,f64> (; 112 ;) (type $FUNCSIG$v) (local $0 i32) - (local $1 f64) + (local $1 i32) + (local $2 f64) i32.const 0 i32.const 3 call $~lib/typedarray/Float64Array#constructor - local.set $0 - local.get $0 + local.tee $0 + call $~lib/rt/purerc/__retain + local.set $1 + local.get $1 i32.const 0 f64.const 1 call $~lib/typedarray/Float64Array#__set - local.get $0 + local.get $1 i32.const 1 f64.const 2 call $~lib/typedarray/Float64Array#__set - local.get $0 + local.get $1 i32.const 2 f64.const 3 call $~lib/typedarray/Float64Array#__set - local.get $0 + local.get $1 i32.const 12 f64.const 0 call $~lib/typedarray/Float64Array#reduce - local.set $1 - local.get $1 + local.set $2 + local.get $2 f64.const 6 f64.eq i32.eqz @@ -4389,19 +5918,32 @@ call $~lib/builtins/abort unreachable end + local.get $0 + call $~lib/rt/purerc/__release + local.get $1 + call $~lib/rt/purerc/__release ) - (func $std/typedarray/testReduceRight<~lib/typedarray/Int8Array,i8>~anonymous|0 (; 107 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + (func $std/typedarray/testReduceRight<~lib/typedarray/Int8Array,i8>~anonymous|0 (; 113 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + (local $4 i32) + local.get $3 + call $~lib/rt/purerc/__retain + drop local.get $0 local.get $1 i32.add + local.set $4 + local.get $3 + call $~lib/rt/purerc/__release + local.get $4 ) - (func $~lib/typedarray/Int8Array#reduceRight (; 108 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/typedarray/Int8Array#reduceRight (; 114 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) (local $6 i32) (local $7 i32) local.get $0 + call $~lib/rt/purerc/__retain local.set $5 local.get $1 local.set $4 @@ -4448,32 +5990,39 @@ unreachable end local.get $3 + local.set $7 + local.get $5 + call $~lib/rt/purerc/__release + local.get $7 ) - (func $std/typedarray/testReduceRight<~lib/typedarray/Int8Array,i8> (; 109 ;) (type $FUNCSIG$v) + (func $std/typedarray/testReduceRight<~lib/typedarray/Int8Array,i8> (; 115 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) + (local $2 i32) i32.const 0 i32.const 3 call $~lib/typedarray/Int8Array#constructor - local.set $0 - local.get $0 + local.tee $0 + call $~lib/rt/purerc/__retain + local.set $1 + local.get $1 i32.const 0 i32.const 1 call $~lib/typedarray/Int8Array#__set - local.get $0 + local.get $1 i32.const 1 i32.const 2 call $~lib/typedarray/Int8Array#__set - local.get $0 + local.get $1 i32.const 2 i32.const 3 call $~lib/typedarray/Int8Array#__set - local.get $0 + local.get $1 i32.const 13 i32.const 0 call $~lib/typedarray/Int8Array#reduceRight - local.set $1 - local.get $1 + local.set $2 + local.get $2 i32.const 24 i32.shl i32.const 24 @@ -4489,19 +6038,32 @@ call $~lib/builtins/abort unreachable end + local.get $0 + call $~lib/rt/purerc/__release + local.get $1 + call $~lib/rt/purerc/__release ) - (func $std/typedarray/testReduceRight<~lib/typedarray/Uint8Array,u8>~anonymous|0 (; 110 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + (func $std/typedarray/testReduceRight<~lib/typedarray/Uint8Array,u8>~anonymous|0 (; 116 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + (local $4 i32) + local.get $3 + call $~lib/rt/purerc/__retain + drop local.get $0 local.get $1 i32.add + local.set $4 + local.get $3 + call $~lib/rt/purerc/__release + local.get $4 ) - (func $~lib/typedarray/Uint8Array#reduceRight (; 111 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/typedarray/Uint8Array#reduceRight (; 117 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) (local $6 i32) (local $7 i32) local.get $0 + call $~lib/rt/purerc/__retain local.set $5 local.get $1 local.set $4 @@ -4548,32 +6110,39 @@ unreachable end local.get $3 + local.set $7 + local.get $5 + call $~lib/rt/purerc/__release + local.get $7 ) - (func $std/typedarray/testReduceRight<~lib/typedarray/Uint8Array,u8> (; 112 ;) (type $FUNCSIG$v) + (func $std/typedarray/testReduceRight<~lib/typedarray/Uint8Array,u8> (; 118 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) + (local $2 i32) i32.const 0 i32.const 3 call $~lib/typedarray/Uint8Array#constructor - local.set $0 - local.get $0 + local.tee $0 + call $~lib/rt/purerc/__retain + local.set $1 + local.get $1 i32.const 0 i32.const 1 call $~lib/typedarray/Uint8Array#__set - local.get $0 + local.get $1 i32.const 1 i32.const 2 call $~lib/typedarray/Uint8Array#__set - local.get $0 + local.get $1 i32.const 2 i32.const 3 call $~lib/typedarray/Uint8Array#__set - local.get $0 + local.get $1 i32.const 14 i32.const 0 call $~lib/typedarray/Uint8Array#reduceRight - local.set $1 - local.get $1 + local.set $2 + local.get $2 i32.const 255 i32.and i32.const 6 @@ -4587,19 +6156,32 @@ call $~lib/builtins/abort unreachable end + local.get $0 + call $~lib/rt/purerc/__release + local.get $1 + call $~lib/rt/purerc/__release ) - (func $std/typedarray/testReduceRight<~lib/typedarray/Uint8ClampedArray,u8>~anonymous|0 (; 113 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + (func $std/typedarray/testReduceRight<~lib/typedarray/Uint8ClampedArray,u8>~anonymous|0 (; 119 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + (local $4 i32) + local.get $3 + call $~lib/rt/purerc/__retain + drop local.get $0 local.get $1 i32.add + local.set $4 + local.get $3 + call $~lib/rt/purerc/__release + local.get $4 ) - (func $~lib/typedarray/Uint8ClampedArray#reduceRight (; 114 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/typedarray/Uint8ClampedArray#reduceRight (; 120 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) (local $6 i32) (local $7 i32) local.get $0 + call $~lib/rt/purerc/__retain local.set $5 local.get $1 local.set $4 @@ -4646,32 +6228,39 @@ unreachable end local.get $3 + local.set $7 + local.get $5 + call $~lib/rt/purerc/__release + local.get $7 ) - (func $std/typedarray/testReduceRight<~lib/typedarray/Uint8ClampedArray,u8> (; 115 ;) (type $FUNCSIG$v) + (func $std/typedarray/testReduceRight<~lib/typedarray/Uint8ClampedArray,u8> (; 121 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) + (local $2 i32) i32.const 0 i32.const 3 call $~lib/typedarray/Uint8ClampedArray#constructor - local.set $0 - local.get $0 + local.tee $0 + call $~lib/rt/purerc/__retain + local.set $1 + local.get $1 i32.const 0 i32.const 1 call $~lib/typedarray/Uint8ClampedArray#__set - local.get $0 + local.get $1 i32.const 1 i32.const 2 call $~lib/typedarray/Uint8ClampedArray#__set - local.get $0 + local.get $1 i32.const 2 i32.const 3 call $~lib/typedarray/Uint8ClampedArray#__set - local.get $0 + local.get $1 i32.const 15 i32.const 0 call $~lib/typedarray/Uint8ClampedArray#reduceRight - local.set $1 - local.get $1 + local.set $2 + local.get $2 i32.const 255 i32.and i32.const 6 @@ -4685,19 +6274,32 @@ call $~lib/builtins/abort unreachable end + local.get $0 + call $~lib/rt/purerc/__release + local.get $1 + call $~lib/rt/purerc/__release ) - (func $std/typedarray/testReduceRight<~lib/typedarray/Int16Array,i16>~anonymous|0 (; 116 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + (func $std/typedarray/testReduceRight<~lib/typedarray/Int16Array,i16>~anonymous|0 (; 122 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + (local $4 i32) + local.get $3 + call $~lib/rt/purerc/__retain + drop local.get $0 local.get $1 i32.add + local.set $4 + local.get $3 + call $~lib/rt/purerc/__release + local.get $4 ) - (func $~lib/typedarray/Int16Array#reduceRight (; 117 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/typedarray/Int16Array#reduceRight (; 123 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) (local $6 i32) (local $7 i32) local.get $0 + call $~lib/rt/purerc/__retain local.set $5 local.get $1 local.set $4 @@ -4744,32 +6346,39 @@ unreachable end local.get $3 + local.set $7 + local.get $5 + call $~lib/rt/purerc/__release + local.get $7 ) - (func $std/typedarray/testReduceRight<~lib/typedarray/Int16Array,i16> (; 118 ;) (type $FUNCSIG$v) + (func $std/typedarray/testReduceRight<~lib/typedarray/Int16Array,i16> (; 124 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) + (local $2 i32) i32.const 0 i32.const 3 call $~lib/typedarray/Int16Array#constructor - local.set $0 - local.get $0 + local.tee $0 + call $~lib/rt/purerc/__retain + local.set $1 + local.get $1 i32.const 0 i32.const 1 call $~lib/typedarray/Int16Array#__set - local.get $0 + local.get $1 i32.const 1 i32.const 2 call $~lib/typedarray/Int16Array#__set - local.get $0 + local.get $1 i32.const 2 i32.const 3 call $~lib/typedarray/Int16Array#__set - local.get $0 + local.get $1 i32.const 16 i32.const 0 call $~lib/typedarray/Int16Array#reduceRight - local.set $1 - local.get $1 + local.set $2 + local.get $2 i32.const 16 i32.shl i32.const 16 @@ -4785,19 +6394,32 @@ call $~lib/builtins/abort unreachable end + local.get $0 + call $~lib/rt/purerc/__release + local.get $1 + call $~lib/rt/purerc/__release ) - (func $std/typedarray/testReduceRight<~lib/typedarray/Uint16Array,u16>~anonymous|0 (; 119 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + (func $std/typedarray/testReduceRight<~lib/typedarray/Uint16Array,u16>~anonymous|0 (; 125 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + (local $4 i32) + local.get $3 + call $~lib/rt/purerc/__retain + drop local.get $0 local.get $1 i32.add + local.set $4 + local.get $3 + call $~lib/rt/purerc/__release + local.get $4 ) - (func $~lib/typedarray/Uint16Array#reduceRight (; 120 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/typedarray/Uint16Array#reduceRight (; 126 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) (local $6 i32) (local $7 i32) local.get $0 + call $~lib/rt/purerc/__retain local.set $5 local.get $1 local.set $4 @@ -4844,32 +6466,39 @@ unreachable end local.get $3 + local.set $7 + local.get $5 + call $~lib/rt/purerc/__release + local.get $7 ) - (func $std/typedarray/testReduceRight<~lib/typedarray/Uint16Array,u16> (; 121 ;) (type $FUNCSIG$v) + (func $std/typedarray/testReduceRight<~lib/typedarray/Uint16Array,u16> (; 127 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) + (local $2 i32) i32.const 0 i32.const 3 call $~lib/typedarray/Uint16Array#constructor - local.set $0 - local.get $0 + local.tee $0 + call $~lib/rt/purerc/__retain + local.set $1 + local.get $1 i32.const 0 i32.const 1 call $~lib/typedarray/Uint16Array#__set - local.get $0 + local.get $1 i32.const 1 i32.const 2 call $~lib/typedarray/Uint16Array#__set - local.get $0 + local.get $1 i32.const 2 i32.const 3 call $~lib/typedarray/Uint16Array#__set - local.get $0 + local.get $1 i32.const 17 i32.const 0 call $~lib/typedarray/Uint16Array#reduceRight - local.set $1 - local.get $1 + local.set $2 + local.get $2 i32.const 65535 i32.and i32.const 6 @@ -4883,19 +6512,32 @@ call $~lib/builtins/abort unreachable end + local.get $0 + call $~lib/rt/purerc/__release + local.get $1 + call $~lib/rt/purerc/__release ) - (func $std/typedarray/testReduceRight<~lib/typedarray/Int32Array,i32>~anonymous|0 (; 122 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + (func $std/typedarray/testReduceRight<~lib/typedarray/Int32Array,i32>~anonymous|0 (; 128 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + (local $4 i32) + local.get $3 + call $~lib/rt/purerc/__retain + drop local.get $0 local.get $1 i32.add + local.set $4 + local.get $3 + call $~lib/rt/purerc/__release + local.get $4 ) - (func $~lib/typedarray/Int32Array#reduceRight (; 123 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/typedarray/Int32Array#reduceRight (; 129 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) (local $6 i32) (local $7 i32) local.get $0 + call $~lib/rt/purerc/__retain local.set $5 local.get $1 local.set $4 @@ -4942,32 +6584,39 @@ unreachable end local.get $3 + local.set $7 + local.get $5 + call $~lib/rt/purerc/__release + local.get $7 ) - (func $std/typedarray/testReduceRight<~lib/typedarray/Int32Array,i32> (; 124 ;) (type $FUNCSIG$v) + (func $std/typedarray/testReduceRight<~lib/typedarray/Int32Array,i32> (; 130 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) + (local $2 i32) i32.const 0 i32.const 3 call $~lib/typedarray/Int32Array#constructor - local.set $0 - local.get $0 + local.tee $0 + call $~lib/rt/purerc/__retain + local.set $1 + local.get $1 i32.const 0 i32.const 1 call $~lib/typedarray/Int32Array#__set - local.get $0 + local.get $1 i32.const 1 i32.const 2 call $~lib/typedarray/Int32Array#__set - local.get $0 + local.get $1 i32.const 2 i32.const 3 call $~lib/typedarray/Int32Array#__set - local.get $0 + local.get $1 i32.const 18 i32.const 0 call $~lib/typedarray/Int32Array#reduceRight - local.set $1 - local.get $1 + local.set $2 + local.get $2 i32.const 6 i32.eq i32.eqz @@ -4979,19 +6628,32 @@ call $~lib/builtins/abort unreachable end + local.get $0 + call $~lib/rt/purerc/__release + local.get $1 + call $~lib/rt/purerc/__release ) - (func $std/typedarray/testReduceRight<~lib/typedarray/Uint32Array,u32>~anonymous|0 (; 125 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + (func $std/typedarray/testReduceRight<~lib/typedarray/Uint32Array,u32>~anonymous|0 (; 131 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + (local $4 i32) + local.get $3 + call $~lib/rt/purerc/__retain + drop local.get $0 local.get $1 i32.add + local.set $4 + local.get $3 + call $~lib/rt/purerc/__release + local.get $4 ) - (func $~lib/typedarray/Uint32Array#reduceRight (; 126 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/typedarray/Uint32Array#reduceRight (; 132 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) (local $6 i32) (local $7 i32) local.get $0 + call $~lib/rt/purerc/__retain local.set $5 local.get $1 local.set $4 @@ -5038,32 +6700,39 @@ unreachable end local.get $3 + local.set $7 + local.get $5 + call $~lib/rt/purerc/__release + local.get $7 ) - (func $std/typedarray/testReduceRight<~lib/typedarray/Uint32Array,u32> (; 127 ;) (type $FUNCSIG$v) + (func $std/typedarray/testReduceRight<~lib/typedarray/Uint32Array,u32> (; 133 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) + (local $2 i32) i32.const 0 i32.const 3 call $~lib/typedarray/Uint32Array#constructor - local.set $0 - local.get $0 + local.tee $0 + call $~lib/rt/purerc/__retain + local.set $1 + local.get $1 i32.const 0 i32.const 1 call $~lib/typedarray/Uint32Array#__set - local.get $0 + local.get $1 i32.const 1 i32.const 2 call $~lib/typedarray/Uint32Array#__set - local.get $0 + local.get $1 i32.const 2 i32.const 3 call $~lib/typedarray/Uint32Array#__set - local.get $0 + local.get $1 i32.const 19 i32.const 0 call $~lib/typedarray/Uint32Array#reduceRight - local.set $1 - local.get $1 + local.set $2 + local.get $2 i32.const 6 i32.eq i32.eqz @@ -5075,19 +6744,33 @@ call $~lib/builtins/abort unreachable end + local.get $0 + call $~lib/rt/purerc/__release + local.get $1 + call $~lib/rt/purerc/__release ) - (func $std/typedarray/testReduceRight<~lib/typedarray/Int64Array,i64>~anonymous|0 (; 128 ;) (type $FUNCSIG$jjjii) (param $0 i64) (param $1 i64) (param $2 i32) (param $3 i32) (result i64) + (func $std/typedarray/testReduceRight<~lib/typedarray/Int64Array,i64>~anonymous|0 (; 134 ;) (type $FUNCSIG$jjjii) (param $0 i64) (param $1 i64) (param $2 i32) (param $3 i32) (result i64) + (local $4 i64) + local.get $3 + call $~lib/rt/purerc/__retain + drop local.get $0 local.get $1 i64.add + local.set $4 + local.get $3 + call $~lib/rt/purerc/__release + local.get $4 ) - (func $~lib/typedarray/Int64Array#reduceRight (; 129 ;) (type $FUNCSIG$jiij) (param $0 i32) (param $1 i32) (param $2 i64) (result i64) + (func $~lib/typedarray/Int64Array#reduceRight (; 135 ;) (type $FUNCSIG$jiij) (param $0 i32) (param $1 i32) (param $2 i64) (result i64) (local $3 i32) (local $4 i32) (local $5 i64) (local $6 i32) (local $7 i32) + (local $8 i64) local.get $0 + call $~lib/rt/purerc/__retain local.set $4 local.get $1 local.set $3 @@ -5134,32 +6817,39 @@ unreachable end local.get $5 + local.set $8 + local.get $4 + call $~lib/rt/purerc/__release + local.get $8 ) - (func $std/typedarray/testReduceRight<~lib/typedarray/Int64Array,i64> (; 130 ;) (type $FUNCSIG$v) + (func $std/typedarray/testReduceRight<~lib/typedarray/Int64Array,i64> (; 136 ;) (type $FUNCSIG$v) (local $0 i32) - (local $1 i64) + (local $1 i32) + (local $2 i64) i32.const 0 i32.const 3 call $~lib/typedarray/Int64Array#constructor - local.set $0 - local.get $0 + local.tee $0 + call $~lib/rt/purerc/__retain + local.set $1 + local.get $1 i32.const 0 i64.const 1 call $~lib/typedarray/Int64Array#__set - local.get $0 + local.get $1 i32.const 1 i64.const 2 call $~lib/typedarray/Int64Array#__set - local.get $0 + local.get $1 i32.const 2 i64.const 3 call $~lib/typedarray/Int64Array#__set - local.get $0 + local.get $1 i32.const 20 i64.const 0 call $~lib/typedarray/Int64Array#reduceRight - local.set $1 - local.get $1 + local.set $2 + local.get $2 i64.const 6 i64.eq i32.eqz @@ -5171,19 +6861,33 @@ call $~lib/builtins/abort unreachable end + local.get $0 + call $~lib/rt/purerc/__release + local.get $1 + call $~lib/rt/purerc/__release ) - (func $std/typedarray/testReduceRight<~lib/typedarray/Uint64Array,u64>~anonymous|0 (; 131 ;) (type $FUNCSIG$jjjii) (param $0 i64) (param $1 i64) (param $2 i32) (param $3 i32) (result i64) + (func $std/typedarray/testReduceRight<~lib/typedarray/Uint64Array,u64>~anonymous|0 (; 137 ;) (type $FUNCSIG$jjjii) (param $0 i64) (param $1 i64) (param $2 i32) (param $3 i32) (result i64) + (local $4 i64) + local.get $3 + call $~lib/rt/purerc/__retain + drop local.get $0 local.get $1 i64.add + local.set $4 + local.get $3 + call $~lib/rt/purerc/__release + local.get $4 ) - (func $~lib/typedarray/Uint64Array#reduceRight (; 132 ;) (type $FUNCSIG$jiij) (param $0 i32) (param $1 i32) (param $2 i64) (result i64) + (func $~lib/typedarray/Uint64Array#reduceRight (; 138 ;) (type $FUNCSIG$jiij) (param $0 i32) (param $1 i32) (param $2 i64) (result i64) (local $3 i32) (local $4 i32) (local $5 i64) (local $6 i32) (local $7 i32) + (local $8 i64) local.get $0 + call $~lib/rt/purerc/__retain local.set $4 local.get $1 local.set $3 @@ -5230,32 +6934,39 @@ unreachable end local.get $5 + local.set $8 + local.get $4 + call $~lib/rt/purerc/__release + local.get $8 ) - (func $std/typedarray/testReduceRight<~lib/typedarray/Uint64Array,u64> (; 133 ;) (type $FUNCSIG$v) + (func $std/typedarray/testReduceRight<~lib/typedarray/Uint64Array,u64> (; 139 ;) (type $FUNCSIG$v) (local $0 i32) - (local $1 i64) + (local $1 i32) + (local $2 i64) i32.const 0 i32.const 3 call $~lib/typedarray/Uint64Array#constructor - local.set $0 - local.get $0 + local.tee $0 + call $~lib/rt/purerc/__retain + local.set $1 + local.get $1 i32.const 0 i64.const 1 call $~lib/typedarray/Uint64Array#__set - local.get $0 + local.get $1 i32.const 1 i64.const 2 call $~lib/typedarray/Uint64Array#__set - local.get $0 + local.get $1 i32.const 2 i64.const 3 call $~lib/typedarray/Uint64Array#__set - local.get $0 + local.get $1 i32.const 21 i64.const 0 call $~lib/typedarray/Uint64Array#reduceRight - local.set $1 - local.get $1 + local.set $2 + local.get $2 i64.const 6 i64.eq i32.eqz @@ -5267,19 +6978,33 @@ call $~lib/builtins/abort unreachable end + local.get $0 + call $~lib/rt/purerc/__release + local.get $1 + call $~lib/rt/purerc/__release ) - (func $std/typedarray/testReduceRight<~lib/typedarray/Float32Array,f32>~anonymous|0 (; 134 ;) (type $FUNCSIG$fffii) (param $0 f32) (param $1 f32) (param $2 i32) (param $3 i32) (result f32) + (func $std/typedarray/testReduceRight<~lib/typedarray/Float32Array,f32>~anonymous|0 (; 140 ;) (type $FUNCSIG$fffii) (param $0 f32) (param $1 f32) (param $2 i32) (param $3 i32) (result f32) + (local $4 f32) + local.get $3 + call $~lib/rt/purerc/__retain + drop local.get $0 local.get $1 f32.add + local.set $4 + local.get $3 + call $~lib/rt/purerc/__release + local.get $4 ) - (func $~lib/typedarray/Float32Array#reduceRight (; 135 ;) (type $FUNCSIG$fiif) (param $0 i32) (param $1 i32) (param $2 f32) (result f32) + (func $~lib/typedarray/Float32Array#reduceRight (; 141 ;) (type $FUNCSIG$fiif) (param $0 i32) (param $1 i32) (param $2 f32) (result f32) (local $3 i32) (local $4 i32) (local $5 f32) (local $6 i32) (local $7 i32) + (local $8 f32) local.get $0 + call $~lib/rt/purerc/__retain local.set $4 local.get $1 local.set $3 @@ -5326,32 +7051,39 @@ unreachable end local.get $5 + local.set $8 + local.get $4 + call $~lib/rt/purerc/__release + local.get $8 ) - (func $std/typedarray/testReduceRight<~lib/typedarray/Float32Array,f32> (; 136 ;) (type $FUNCSIG$v) + (func $std/typedarray/testReduceRight<~lib/typedarray/Float32Array,f32> (; 142 ;) (type $FUNCSIG$v) (local $0 i32) - (local $1 f32) + (local $1 i32) + (local $2 f32) i32.const 0 i32.const 3 call $~lib/typedarray/Float32Array#constructor - local.set $0 - local.get $0 + local.tee $0 + call $~lib/rt/purerc/__retain + local.set $1 + local.get $1 i32.const 0 f32.const 1 call $~lib/typedarray/Float32Array#__set - local.get $0 + local.get $1 i32.const 1 f32.const 2 call $~lib/typedarray/Float32Array#__set - local.get $0 + local.get $1 i32.const 2 f32.const 3 call $~lib/typedarray/Float32Array#__set - local.get $0 + local.get $1 i32.const 22 f32.const 0 call $~lib/typedarray/Float32Array#reduceRight - local.set $1 - local.get $1 + local.set $2 + local.get $2 f32.const 6 f32.eq i32.eqz @@ -5363,19 +7095,33 @@ call $~lib/builtins/abort unreachable end + local.get $0 + call $~lib/rt/purerc/__release + local.get $1 + call $~lib/rt/purerc/__release ) - (func $std/typedarray/testReduceRight<~lib/typedarray/Float64Array,f64>~anonymous|0 (; 137 ;) (type $FUNCSIG$dddii) (param $0 f64) (param $1 f64) (param $2 i32) (param $3 i32) (result f64) + (func $std/typedarray/testReduceRight<~lib/typedarray/Float64Array,f64>~anonymous|0 (; 143 ;) (type $FUNCSIG$dddii) (param $0 f64) (param $1 f64) (param $2 i32) (param $3 i32) (result f64) + (local $4 f64) + local.get $3 + call $~lib/rt/purerc/__retain + drop local.get $0 local.get $1 f64.add + local.set $4 + local.get $3 + call $~lib/rt/purerc/__release + local.get $4 ) - (func $~lib/typedarray/Float64Array#reduceRight (; 138 ;) (type $FUNCSIG$diid) (param $0 i32) (param $1 i32) (param $2 f64) (result f64) + (func $~lib/typedarray/Float64Array#reduceRight (; 144 ;) (type $FUNCSIG$diid) (param $0 i32) (param $1 i32) (param $2 f64) (result f64) (local $3 i32) (local $4 i32) (local $5 f64) (local $6 i32) (local $7 i32) + (local $8 f64) local.get $0 + call $~lib/rt/purerc/__retain local.set $4 local.get $1 local.set $3 @@ -5422,32 +7168,39 @@ unreachable end local.get $5 + local.set $8 + local.get $4 + call $~lib/rt/purerc/__release + local.get $8 ) - (func $std/typedarray/testReduceRight<~lib/typedarray/Float64Array,f64> (; 139 ;) (type $FUNCSIG$v) + (func $std/typedarray/testReduceRight<~lib/typedarray/Float64Array,f64> (; 145 ;) (type $FUNCSIG$v) (local $0 i32) - (local $1 f64) + (local $1 i32) + (local $2 f64) i32.const 0 i32.const 3 call $~lib/typedarray/Float64Array#constructor - local.set $0 - local.get $0 + local.tee $0 + call $~lib/rt/purerc/__retain + local.set $1 + local.get $1 i32.const 0 f64.const 1 call $~lib/typedarray/Float64Array#__set - local.get $0 + local.get $1 i32.const 1 f64.const 2 call $~lib/typedarray/Float64Array#__set - local.get $0 + local.get $1 i32.const 2 f64.const 3 call $~lib/typedarray/Float64Array#__set - local.get $0 + local.get $1 i32.const 23 f64.const 0 call $~lib/typedarray/Float64Array#reduceRight - local.set $1 - local.get $1 + local.set $2 + local.get $2 f64.const 6 f64.eq i32.eqz @@ -5459,13 +7212,25 @@ call $~lib/builtins/abort unreachable end + local.get $0 + call $~lib/rt/purerc/__release + local.get $1 + call $~lib/rt/purerc/__release ) - (func $std/typedarray/testArrayMap<~lib/typedarray/Int8Array,i8>~anonymous|0 (; 140 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArrayMap<~lib/typedarray/Int8Array,i8>~anonymous|0 (; 146 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + local.get $2 + call $~lib/rt/purerc/__retain + drop local.get $0 local.get $0 i32.mul + local.set $3 + local.get $2 + call $~lib/rt/purerc/__release + local.get $3 ) - (func $~lib/typedarray/Int8Array#map (; 141 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Int8Array#map (; 147 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -5473,87 +7238,108 @@ (local $6 i32) (local $7 i32) (local $8 i32) - local.get $0 - local.set $3 - local.get $1 - local.set $2 - local.get $3 - call $~lib/typedarray/Int8Array#get:length - local.set $4 - local.get $3 - i32.load offset=4 - local.set $5 - i32.const 0 - local.get $4 - call $~lib/typedarray/Int8Array#constructor - local.set $6 - local.get $6 - i32.load offset=4 - local.set $7 - block $break|0 + (local $9 i32) + block $~lib/typedarray/MAP<~lib/typedarray/Int8Array,i8>|inlined.0 (result i32) + local.get $0 + call $~lib/rt/purerc/__retain + local.set $3 + local.get $1 + local.set $2 + local.get $3 + call $~lib/typedarray/Int8Array#get:length + local.set $4 + local.get $3 + i32.load offset=4 + local.set $5 i32.const 0 + local.get $4 + call $~lib/typedarray/Int8Array#constructor + local.tee $6 + call $~lib/rt/purerc/__retain + local.set $7 + local.get $7 + i32.load offset=4 local.set $8 - loop $repeat|0 - local.get $8 - local.get $4 - i32.lt_s - i32.eqz - br_if $break|0 - local.get $7 - local.get $8 + block $break|0 i32.const 0 - i32.shl - i32.add - block (result i32) - i32.const 3 - global.set $~lib/argc - local.get $5 + local.set $9 + loop $repeat|0 + local.get $9 + local.get $4 + i32.lt_s + i32.eqz + br_if $break|0 local.get $8 + local.get $9 i32.const 0 i32.shl i32.add - i32.load8_s - local.get $8 - local.get $3 - local.get $2 - call_indirect (type $FUNCSIG$iiii) + block (result i32) + i32.const 3 + global.set $~lib/argc + local.get $5 + local.get $9 + i32.const 0 + i32.shl + i32.add + i32.load8_s + local.get $9 + local.get $3 + local.get $2 + call_indirect (type $FUNCSIG$iiii) + end + i32.store8 + local.get $9 + i32.const 1 + i32.add + local.set $9 + br $repeat|0 + unreachable end - i32.store8 - local.get $8 - i32.const 1 - i32.add - local.set $8 - br $repeat|0 unreachable end - unreachable + local.get $7 + local.set $9 + local.get $3 + call $~lib/rt/purerc/__release + local.get $6 + call $~lib/rt/purerc/__release + local.get $9 end - local.get $6 + local.tee $8 + call $~lib/rt/purerc/__retain + local.set $7 + local.get $8 + call $~lib/rt/purerc/__release + local.get $7 ) - (func $std/typedarray/testArrayMap<~lib/typedarray/Int8Array,i8> (; 142 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayMap<~lib/typedarray/Int8Array,i8> (; 148 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) + (local $2 i32) i32.const 0 i32.const 3 call $~lib/typedarray/Int8Array#constructor - local.set $0 - local.get $0 + local.tee $0 + call $~lib/rt/purerc/__retain + local.set $1 + local.get $1 i32.const 0 i32.const 1 call $~lib/typedarray/Int8Array#__set - local.get $0 + local.get $1 i32.const 1 i32.const 2 call $~lib/typedarray/Int8Array#__set - local.get $0 + local.get $1 i32.const 2 i32.const 3 call $~lib/typedarray/Int8Array#__set - local.get $0 + local.get $1 i32.const 24 call $~lib/typedarray/Int8Array#map - local.set $1 - local.get $1 + local.set $2 + local.get $2 i32.const 0 call $~lib/typedarray/Int8Array#__get i32.const 1 @@ -5567,7 +7353,7 @@ call $~lib/builtins/abort unreachable end - local.get $1 + local.get $2 i32.const 1 call $~lib/typedarray/Int8Array#__get i32.const 4 @@ -5581,7 +7367,7 @@ call $~lib/builtins/abort unreachable end - local.get $1 + local.get $2 i32.const 2 call $~lib/typedarray/Int8Array#__get i32.const 9 @@ -5595,13 +7381,27 @@ call $~lib/builtins/abort unreachable end + local.get $0 + call $~lib/rt/purerc/__release + local.get $1 + call $~lib/rt/purerc/__release + local.get $2 + call $~lib/rt/purerc/__release ) - (func $std/typedarray/testArrayMap<~lib/typedarray/Uint8Array,u8>~anonymous|0 (; 143 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArrayMap<~lib/typedarray/Uint8Array,u8>~anonymous|0 (; 149 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + local.get $2 + call $~lib/rt/purerc/__retain + drop local.get $0 local.get $0 i32.mul + local.set $3 + local.get $2 + call $~lib/rt/purerc/__release + local.get $3 ) - (func $~lib/typedarray/Uint8Array#map (; 144 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Uint8Array#map (; 150 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -5609,72 +7409,90 @@ (local $6 i32) (local $7 i32) (local $8 i32) - local.get $0 - local.set $3 - local.get $1 - local.set $2 - local.get $3 - call $~lib/typedarray/Uint8Array#get:length - local.set $4 - local.get $3 - i32.load offset=4 - local.set $5 - i32.const 0 - local.get $4 - call $~lib/typedarray/Uint8Array#constructor - local.set $6 - local.get $6 - i32.load offset=4 - local.set $7 - block $break|0 + (local $9 i32) + block $~lib/typedarray/MAP<~lib/typedarray/Uint8Array,u8>|inlined.0 (result i32) + local.get $0 + call $~lib/rt/purerc/__retain + local.set $3 + local.get $1 + local.set $2 + local.get $3 + call $~lib/typedarray/Uint8Array#get:length + local.set $4 + local.get $3 + i32.load offset=4 + local.set $5 i32.const 0 + local.get $4 + call $~lib/typedarray/Uint8Array#constructor + local.tee $6 + call $~lib/rt/purerc/__retain + local.set $7 + local.get $7 + i32.load offset=4 local.set $8 - loop $repeat|0 - local.get $8 - local.get $4 - i32.lt_s - i32.eqz - br_if $break|0 - local.get $7 - local.get $8 + block $break|0 i32.const 0 - i32.shl - i32.add - block (result i32) - i32.const 3 - global.set $~lib/argc - local.get $5 + local.set $9 + loop $repeat|0 + local.get $9 + local.get $4 + i32.lt_s + i32.eqz + br_if $break|0 local.get $8 + local.get $9 i32.const 0 i32.shl i32.add - i32.load8_u - local.get $8 - local.get $3 - local.get $2 - call_indirect (type $FUNCSIG$iiii) + block (result i32) + i32.const 3 + global.set $~lib/argc + local.get $5 + local.get $9 + i32.const 0 + i32.shl + i32.add + i32.load8_u + local.get $9 + local.get $3 + local.get $2 + call_indirect (type $FUNCSIG$iiii) + end + i32.store8 + local.get $9 + i32.const 1 + i32.add + local.set $9 + br $repeat|0 + unreachable end - i32.store8 - local.get $8 - i32.const 1 - i32.add - local.set $8 - br $repeat|0 unreachable end - unreachable + local.get $7 + local.set $9 + local.get $3 + call $~lib/rt/purerc/__release + local.get $6 + call $~lib/rt/purerc/__release + local.get $9 end - local.get $6 + local.tee $8 + call $~lib/rt/purerc/__retain + local.set $7 + local.get $8 + call $~lib/rt/purerc/__release + local.get $7 ) - (func $~lib/typedarray/Uint8Array#__get (; 145 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Uint8Array#__get (; 151 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $1 local.get $0 i32.load offset=8 i32.ge_u if - i32.const 0 - i32.const 192 - i32.const 110 + i32.const 288 + i32.const 344 + i32.const 109 i32.const 44 call $~lib/builtins/abort unreachable @@ -5685,30 +7503,33 @@ i32.add i32.load8_u ) - (func $std/typedarray/testArrayMap<~lib/typedarray/Uint8Array,u8> (; 146 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayMap<~lib/typedarray/Uint8Array,u8> (; 152 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) + (local $2 i32) i32.const 0 i32.const 3 call $~lib/typedarray/Uint8Array#constructor - local.set $0 - local.get $0 + local.tee $0 + call $~lib/rt/purerc/__retain + local.set $1 + local.get $1 i32.const 0 i32.const 1 call $~lib/typedarray/Uint8Array#__set - local.get $0 + local.get $1 i32.const 1 i32.const 2 call $~lib/typedarray/Uint8Array#__set - local.get $0 + local.get $1 i32.const 2 i32.const 3 call $~lib/typedarray/Uint8Array#__set - local.get $0 + local.get $1 i32.const 25 call $~lib/typedarray/Uint8Array#map - local.set $1 - local.get $1 + local.set $2 + local.get $2 i32.const 0 call $~lib/typedarray/Uint8Array#__get i32.const 1 @@ -5722,7 +7543,7 @@ call $~lib/builtins/abort unreachable end - local.get $1 + local.get $2 i32.const 1 call $~lib/typedarray/Uint8Array#__get i32.const 4 @@ -5736,7 +7557,7 @@ call $~lib/builtins/abort unreachable end - local.get $1 + local.get $2 i32.const 2 call $~lib/typedarray/Uint8Array#__get i32.const 9 @@ -5750,13 +7571,27 @@ call $~lib/builtins/abort unreachable end + local.get $0 + call $~lib/rt/purerc/__release + local.get $1 + call $~lib/rt/purerc/__release + local.get $2 + call $~lib/rt/purerc/__release ) - (func $std/typedarray/testArrayMap<~lib/typedarray/Uint8ClampedArray,u8>~anonymous|0 (; 147 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArrayMap<~lib/typedarray/Uint8ClampedArray,u8>~anonymous|0 (; 153 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + local.get $2 + call $~lib/rt/purerc/__retain + drop local.get $0 local.get $0 i32.mul + local.set $3 + local.get $2 + call $~lib/rt/purerc/__release + local.get $3 ) - (func $~lib/typedarray/Uint8ClampedArray#map (; 148 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Uint8ClampedArray#map (; 154 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -5764,87 +7599,108 @@ (local $6 i32) (local $7 i32) (local $8 i32) - local.get $0 - local.set $3 - local.get $1 - local.set $2 - local.get $3 - call $~lib/typedarray/Uint8ClampedArray#get:length - local.set $4 - local.get $3 - i32.load offset=4 - local.set $5 - i32.const 0 - local.get $4 - call $~lib/typedarray/Uint8ClampedArray#constructor - local.set $6 - local.get $6 - i32.load offset=4 - local.set $7 - block $break|0 + (local $9 i32) + block $~lib/typedarray/MAP<~lib/typedarray/Uint8ClampedArray,u8>|inlined.0 (result i32) + local.get $0 + call $~lib/rt/purerc/__retain + local.set $3 + local.get $1 + local.set $2 + local.get $3 + call $~lib/typedarray/Uint8ClampedArray#get:length + local.set $4 + local.get $3 + i32.load offset=4 + local.set $5 i32.const 0 + local.get $4 + call $~lib/typedarray/Uint8ClampedArray#constructor + local.tee $6 + call $~lib/rt/purerc/__retain + local.set $7 + local.get $7 + i32.load offset=4 local.set $8 - loop $repeat|0 - local.get $8 - local.get $4 - i32.lt_s - i32.eqz - br_if $break|0 - local.get $7 - local.get $8 + block $break|0 i32.const 0 - i32.shl - i32.add - block (result i32) - i32.const 3 - global.set $~lib/argc - local.get $5 + local.set $9 + loop $repeat|0 + local.get $9 + local.get $4 + i32.lt_s + i32.eqz + br_if $break|0 local.get $8 + local.get $9 i32.const 0 i32.shl i32.add - i32.load8_u - local.get $8 - local.get $3 - local.get $2 - call_indirect (type $FUNCSIG$iiii) + block (result i32) + i32.const 3 + global.set $~lib/argc + local.get $5 + local.get $9 + i32.const 0 + i32.shl + i32.add + i32.load8_u + local.get $9 + local.get $3 + local.get $2 + call_indirect (type $FUNCSIG$iiii) + end + i32.store8 + local.get $9 + i32.const 1 + i32.add + local.set $9 + br $repeat|0 + unreachable end - i32.store8 - local.get $8 - i32.const 1 - i32.add - local.set $8 - br $repeat|0 unreachable end - unreachable + local.get $7 + local.set $9 + local.get $3 + call $~lib/rt/purerc/__release + local.get $6 + call $~lib/rt/purerc/__release + local.get $9 end - local.get $6 + local.tee $8 + call $~lib/rt/purerc/__retain + local.set $7 + local.get $8 + call $~lib/rt/purerc/__release + local.get $7 ) - (func $std/typedarray/testArrayMap<~lib/typedarray/Uint8ClampedArray,u8> (; 149 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayMap<~lib/typedarray/Uint8ClampedArray,u8> (; 155 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) + (local $2 i32) i32.const 0 i32.const 3 call $~lib/typedarray/Uint8ClampedArray#constructor - local.set $0 - local.get $0 + local.tee $0 + call $~lib/rt/purerc/__retain + local.set $1 + local.get $1 i32.const 0 i32.const 1 call $~lib/typedarray/Uint8ClampedArray#__set - local.get $0 + local.get $1 i32.const 1 i32.const 2 call $~lib/typedarray/Uint8ClampedArray#__set - local.get $0 + local.get $1 i32.const 2 i32.const 3 call $~lib/typedarray/Uint8ClampedArray#__set - local.get $0 + local.get $1 i32.const 26 call $~lib/typedarray/Uint8ClampedArray#map - local.set $1 - local.get $1 + local.set $2 + local.get $2 i32.const 0 call $~lib/typedarray/Uint8ClampedArray#__get i32.const 1 @@ -5858,7 +7714,7 @@ call $~lib/builtins/abort unreachable end - local.get $1 + local.get $2 i32.const 1 call $~lib/typedarray/Uint8ClampedArray#__get i32.const 4 @@ -5872,7 +7728,7 @@ call $~lib/builtins/abort unreachable end - local.get $1 + local.get $2 i32.const 2 call $~lib/typedarray/Uint8ClampedArray#__get i32.const 9 @@ -5886,13 +7742,27 @@ call $~lib/builtins/abort unreachable end + local.get $0 + call $~lib/rt/purerc/__release + local.get $1 + call $~lib/rt/purerc/__release + local.get $2 + call $~lib/rt/purerc/__release ) - (func $std/typedarray/testArrayMap<~lib/typedarray/Int16Array,i16>~anonymous|0 (; 150 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArrayMap<~lib/typedarray/Int16Array,i16>~anonymous|0 (; 156 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + local.get $2 + call $~lib/rt/purerc/__retain + drop local.get $0 local.get $0 i32.mul + local.set $3 + local.get $2 + call $~lib/rt/purerc/__release + local.get $3 ) - (func $~lib/typedarray/Int16Array#map (; 151 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Int16Array#map (; 157 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -5900,64 +7770,82 @@ (local $6 i32) (local $7 i32) (local $8 i32) - local.get $0 - local.set $3 - local.get $1 - local.set $2 - local.get $3 - call $~lib/typedarray/Int16Array#get:length - local.set $4 - local.get $3 - i32.load offset=4 - local.set $5 - i32.const 0 - local.get $4 - call $~lib/typedarray/Int16Array#constructor - local.set $6 - local.get $6 - i32.load offset=4 - local.set $7 - block $break|0 + (local $9 i32) + block $~lib/typedarray/MAP<~lib/typedarray/Int16Array,i16>|inlined.0 (result i32) + local.get $0 + call $~lib/rt/purerc/__retain + local.set $3 + local.get $1 + local.set $2 + local.get $3 + call $~lib/typedarray/Int16Array#get:length + local.set $4 + local.get $3 + i32.load offset=4 + local.set $5 i32.const 0 + local.get $4 + call $~lib/typedarray/Int16Array#constructor + local.tee $6 + call $~lib/rt/purerc/__retain + local.set $7 + local.get $7 + i32.load offset=4 local.set $8 - loop $repeat|0 - local.get $8 - local.get $4 - i32.lt_s - i32.eqz - br_if $break|0 - local.get $7 - local.get $8 - i32.const 1 - i32.shl - i32.add - block (result i32) - i32.const 3 - global.set $~lib/argc - local.get $5 + block $break|0 + i32.const 0 + local.set $9 + loop $repeat|0 + local.get $9 + local.get $4 + i32.lt_s + i32.eqz + br_if $break|0 local.get $8 + local.get $9 i32.const 1 i32.shl i32.add - i32.load16_s - local.get $8 - local.get $3 - local.get $2 - call_indirect (type $FUNCSIG$iiii) + block (result i32) + i32.const 3 + global.set $~lib/argc + local.get $5 + local.get $9 + i32.const 1 + i32.shl + i32.add + i32.load16_s + local.get $9 + local.get $3 + local.get $2 + call_indirect (type $FUNCSIG$iiii) + end + i32.store16 + local.get $9 + i32.const 1 + i32.add + local.set $9 + br $repeat|0 + unreachable end - i32.store16 - local.get $8 - i32.const 1 - i32.add - local.set $8 - br $repeat|0 unreachable end - unreachable + local.get $7 + local.set $9 + local.get $3 + call $~lib/rt/purerc/__release + local.get $6 + call $~lib/rt/purerc/__release + local.get $9 end - local.get $6 + local.tee $8 + call $~lib/rt/purerc/__retain + local.set $7 + local.get $8 + call $~lib/rt/purerc/__release + local.get $7 ) - (func $~lib/typedarray/Int16Array#__get (; 152 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Int16Array#__get (; 158 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $1 local.get $0 i32.load offset=8 @@ -5965,9 +7853,9 @@ i32.shr_u i32.ge_u if - i32.const 0 - i32.const 192 - i32.const 274 + i32.const 288 + i32.const 344 + i32.const 273 i32.const 63 call $~lib/builtins/abort unreachable @@ -5980,30 +7868,33 @@ i32.add i32.load16_s ) - (func $std/typedarray/testArrayMap<~lib/typedarray/Int16Array,i16> (; 153 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayMap<~lib/typedarray/Int16Array,i16> (; 159 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) + (local $2 i32) i32.const 0 i32.const 3 call $~lib/typedarray/Int16Array#constructor - local.set $0 - local.get $0 + local.tee $0 + call $~lib/rt/purerc/__retain + local.set $1 + local.get $1 i32.const 0 i32.const 1 call $~lib/typedarray/Int16Array#__set - local.get $0 + local.get $1 i32.const 1 i32.const 2 call $~lib/typedarray/Int16Array#__set - local.get $0 + local.get $1 i32.const 2 i32.const 3 call $~lib/typedarray/Int16Array#__set - local.get $0 + local.get $1 i32.const 27 call $~lib/typedarray/Int16Array#map - local.set $1 - local.get $1 + local.set $2 + local.get $2 i32.const 0 call $~lib/typedarray/Int16Array#__get i32.const 1 @@ -6017,7 +7908,7 @@ call $~lib/builtins/abort unreachable end - local.get $1 + local.get $2 i32.const 1 call $~lib/typedarray/Int16Array#__get i32.const 4 @@ -6031,7 +7922,7 @@ call $~lib/builtins/abort unreachable end - local.get $1 + local.get $2 i32.const 2 call $~lib/typedarray/Int16Array#__get i32.const 9 @@ -6045,13 +7936,27 @@ call $~lib/builtins/abort unreachable end + local.get $0 + call $~lib/rt/purerc/__release + local.get $1 + call $~lib/rt/purerc/__release + local.get $2 + call $~lib/rt/purerc/__release ) - (func $std/typedarray/testArrayMap<~lib/typedarray/Uint16Array,u16>~anonymous|0 (; 154 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArrayMap<~lib/typedarray/Uint16Array,u16>~anonymous|0 (; 160 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + local.get $2 + call $~lib/rt/purerc/__retain + drop local.get $0 local.get $0 i32.mul + local.set $3 + local.get $2 + call $~lib/rt/purerc/__release + local.get $3 ) - (func $~lib/typedarray/Uint16Array#map (; 155 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Uint16Array#map (; 161 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -6059,64 +7964,82 @@ (local $6 i32) (local $7 i32) (local $8 i32) - local.get $0 - local.set $3 - local.get $1 - local.set $2 - local.get $3 - call $~lib/typedarray/Uint16Array#get:length - local.set $4 - local.get $3 - i32.load offset=4 - local.set $5 - i32.const 0 - local.get $4 - call $~lib/typedarray/Uint16Array#constructor - local.set $6 - local.get $6 - i32.load offset=4 - local.set $7 - block $break|0 + (local $9 i32) + block $~lib/typedarray/MAP<~lib/typedarray/Uint16Array,u16>|inlined.0 (result i32) + local.get $0 + call $~lib/rt/purerc/__retain + local.set $3 + local.get $1 + local.set $2 + local.get $3 + call $~lib/typedarray/Uint16Array#get:length + local.set $4 + local.get $3 + i32.load offset=4 + local.set $5 i32.const 0 + local.get $4 + call $~lib/typedarray/Uint16Array#constructor + local.tee $6 + call $~lib/rt/purerc/__retain + local.set $7 + local.get $7 + i32.load offset=4 local.set $8 - loop $repeat|0 - local.get $8 - local.get $4 - i32.lt_s - i32.eqz - br_if $break|0 - local.get $7 - local.get $8 - i32.const 1 - i32.shl - i32.add - block (result i32) - i32.const 3 - global.set $~lib/argc - local.get $5 + block $break|0 + i32.const 0 + local.set $9 + loop $repeat|0 + local.get $9 + local.get $4 + i32.lt_s + i32.eqz + br_if $break|0 local.get $8 + local.get $9 i32.const 1 i32.shl i32.add - i32.load16_u - local.get $8 - local.get $3 - local.get $2 - call_indirect (type $FUNCSIG$iiii) + block (result i32) + i32.const 3 + global.set $~lib/argc + local.get $5 + local.get $9 + i32.const 1 + i32.shl + i32.add + i32.load16_u + local.get $9 + local.get $3 + local.get $2 + call_indirect (type $FUNCSIG$iiii) + end + i32.store16 + local.get $9 + i32.const 1 + i32.add + local.set $9 + br $repeat|0 + unreachable end - i32.store16 - local.get $8 - i32.const 1 - i32.add - local.set $8 - br $repeat|0 unreachable end - unreachable + local.get $7 + local.set $9 + local.get $3 + call $~lib/rt/purerc/__release + local.get $6 + call $~lib/rt/purerc/__release + local.get $9 end - local.get $6 + local.tee $8 + call $~lib/rt/purerc/__retain + local.set $7 + local.get $8 + call $~lib/rt/purerc/__release + local.get $7 ) - (func $~lib/typedarray/Uint16Array#__get (; 156 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Uint16Array#__get (; 162 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $1 local.get $0 i32.load offset=8 @@ -6124,9 +8047,9 @@ i32.shr_u i32.ge_u if - i32.const 0 - i32.const 192 - i32.const 356 + i32.const 288 + i32.const 344 + i32.const 355 i32.const 63 call $~lib/builtins/abort unreachable @@ -6139,30 +8062,33 @@ i32.add i32.load16_u ) - (func $std/typedarray/testArrayMap<~lib/typedarray/Uint16Array,u16> (; 157 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayMap<~lib/typedarray/Uint16Array,u16> (; 163 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) + (local $2 i32) i32.const 0 i32.const 3 call $~lib/typedarray/Uint16Array#constructor - local.set $0 - local.get $0 + local.tee $0 + call $~lib/rt/purerc/__retain + local.set $1 + local.get $1 i32.const 0 i32.const 1 call $~lib/typedarray/Uint16Array#__set - local.get $0 + local.get $1 i32.const 1 i32.const 2 call $~lib/typedarray/Uint16Array#__set - local.get $0 + local.get $1 i32.const 2 i32.const 3 call $~lib/typedarray/Uint16Array#__set - local.get $0 + local.get $1 i32.const 28 call $~lib/typedarray/Uint16Array#map - local.set $1 - local.get $1 + local.set $2 + local.get $2 i32.const 0 call $~lib/typedarray/Uint16Array#__get i32.const 1 @@ -6176,7 +8102,7 @@ call $~lib/builtins/abort unreachable end - local.get $1 + local.get $2 i32.const 1 call $~lib/typedarray/Uint16Array#__get i32.const 4 @@ -6190,7 +8116,7 @@ call $~lib/builtins/abort unreachable end - local.get $1 + local.get $2 i32.const 2 call $~lib/typedarray/Uint16Array#__get i32.const 9 @@ -6204,13 +8130,27 @@ call $~lib/builtins/abort unreachable end + local.get $0 + call $~lib/rt/purerc/__release + local.get $1 + call $~lib/rt/purerc/__release + local.get $2 + call $~lib/rt/purerc/__release ) - (func $std/typedarray/testArrayMap<~lib/typedarray/Int32Array,i32>~anonymous|0 (; 158 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArrayMap<~lib/typedarray/Int32Array,i32>~anonymous|0 (; 164 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + local.get $2 + call $~lib/rt/purerc/__retain + drop local.get $0 local.get $0 i32.mul + local.set $3 + local.get $2 + call $~lib/rt/purerc/__release + local.get $3 ) - (func $~lib/typedarray/Int32Array#map (; 159 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Int32Array#map (; 165 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -6218,87 +8158,108 @@ (local $6 i32) (local $7 i32) (local $8 i32) - local.get $0 - local.set $3 - local.get $1 - local.set $2 - local.get $3 - call $~lib/typedarray/Int32Array#get:length - local.set $4 - local.get $3 - i32.load offset=4 - local.set $5 - i32.const 0 - local.get $4 - call $~lib/typedarray/Int32Array#constructor - local.set $6 - local.get $6 - i32.load offset=4 - local.set $7 - block $break|0 + (local $9 i32) + block $~lib/typedarray/MAP<~lib/typedarray/Int32Array,i32>|inlined.0 (result i32) + local.get $0 + call $~lib/rt/purerc/__retain + local.set $3 + local.get $1 + local.set $2 + local.get $3 + call $~lib/typedarray/Int32Array#get:length + local.set $4 + local.get $3 + i32.load offset=4 + local.set $5 i32.const 0 + local.get $4 + call $~lib/typedarray/Int32Array#constructor + local.tee $6 + call $~lib/rt/purerc/__retain + local.set $7 + local.get $7 + i32.load offset=4 local.set $8 - loop $repeat|0 - local.get $8 - local.get $4 - i32.lt_s - i32.eqz - br_if $break|0 - local.get $7 - local.get $8 - i32.const 2 - i32.shl - i32.add - block (result i32) - i32.const 3 - global.set $~lib/argc - local.get $5 + block $break|0 + i32.const 0 + local.set $9 + loop $repeat|0 + local.get $9 + local.get $4 + i32.lt_s + i32.eqz + br_if $break|0 local.get $8 + local.get $9 i32.const 2 i32.shl i32.add - i32.load - local.get $8 - local.get $3 - local.get $2 - call_indirect (type $FUNCSIG$iiii) + block (result i32) + i32.const 3 + global.set $~lib/argc + local.get $5 + local.get $9 + i32.const 2 + i32.shl + i32.add + i32.load + local.get $9 + local.get $3 + local.get $2 + call_indirect (type $FUNCSIG$iiii) + end + i32.store + local.get $9 + i32.const 1 + i32.add + local.set $9 + br $repeat|0 + unreachable end - i32.store - local.get $8 - i32.const 1 - i32.add - local.set $8 - br $repeat|0 unreachable end - unreachable + local.get $7 + local.set $9 + local.get $3 + call $~lib/rt/purerc/__release + local.get $6 + call $~lib/rt/purerc/__release + local.get $9 end - local.get $6 + local.tee $8 + call $~lib/rt/purerc/__retain + local.set $7 + local.get $8 + call $~lib/rt/purerc/__release + local.get $7 ) - (func $std/typedarray/testArrayMap<~lib/typedarray/Int32Array,i32> (; 160 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayMap<~lib/typedarray/Int32Array,i32> (; 166 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) + (local $2 i32) i32.const 0 i32.const 3 call $~lib/typedarray/Int32Array#constructor - local.set $0 - local.get $0 + local.tee $0 + call $~lib/rt/purerc/__retain + local.set $1 + local.get $1 i32.const 0 i32.const 1 call $~lib/typedarray/Int32Array#__set - local.get $0 + local.get $1 i32.const 1 i32.const 2 call $~lib/typedarray/Int32Array#__set - local.get $0 + local.get $1 i32.const 2 i32.const 3 call $~lib/typedarray/Int32Array#__set - local.get $0 + local.get $1 i32.const 29 call $~lib/typedarray/Int32Array#map - local.set $1 - local.get $1 + local.set $2 + local.get $2 i32.const 0 call $~lib/typedarray/Int32Array#__get i32.const 1 @@ -6312,7 +8273,7 @@ call $~lib/builtins/abort unreachable end - local.get $1 + local.get $2 i32.const 1 call $~lib/typedarray/Int32Array#__get i32.const 4 @@ -6326,7 +8287,7 @@ call $~lib/builtins/abort unreachable end - local.get $1 + local.get $2 i32.const 2 call $~lib/typedarray/Int32Array#__get i32.const 9 @@ -6340,13 +8301,27 @@ call $~lib/builtins/abort unreachable end + local.get $0 + call $~lib/rt/purerc/__release + local.get $1 + call $~lib/rt/purerc/__release + local.get $2 + call $~lib/rt/purerc/__release ) - (func $std/typedarray/testArrayMap<~lib/typedarray/Uint32Array,u32>~anonymous|0 (; 161 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArrayMap<~lib/typedarray/Uint32Array,u32>~anonymous|0 (; 167 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + local.get $2 + call $~lib/rt/purerc/__retain + drop local.get $0 local.get $0 i32.mul + local.set $3 + local.get $2 + call $~lib/rt/purerc/__release + local.get $3 ) - (func $~lib/typedarray/Uint32Array#map (; 162 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Uint32Array#map (; 168 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -6354,64 +8329,82 @@ (local $6 i32) (local $7 i32) (local $8 i32) - local.get $0 - local.set $3 - local.get $1 - local.set $2 - local.get $3 - call $~lib/typedarray/Uint32Array#get:length - local.set $4 - local.get $3 - i32.load offset=4 - local.set $5 - i32.const 0 - local.get $4 - call $~lib/typedarray/Uint32Array#constructor - local.set $6 - local.get $6 - i32.load offset=4 - local.set $7 - block $break|0 + (local $9 i32) + block $~lib/typedarray/MAP<~lib/typedarray/Uint32Array,u32>|inlined.0 (result i32) + local.get $0 + call $~lib/rt/purerc/__retain + local.set $3 + local.get $1 + local.set $2 + local.get $3 + call $~lib/typedarray/Uint32Array#get:length + local.set $4 + local.get $3 + i32.load offset=4 + local.set $5 i32.const 0 + local.get $4 + call $~lib/typedarray/Uint32Array#constructor + local.tee $6 + call $~lib/rt/purerc/__retain + local.set $7 + local.get $7 + i32.load offset=4 local.set $8 - loop $repeat|0 - local.get $8 - local.get $4 - i32.lt_s - i32.eqz - br_if $break|0 - local.get $7 - local.get $8 - i32.const 2 - i32.shl - i32.add - block (result i32) - i32.const 3 - global.set $~lib/argc - local.get $5 + block $break|0 + i32.const 0 + local.set $9 + loop $repeat|0 + local.get $9 + local.get $4 + i32.lt_s + i32.eqz + br_if $break|0 local.get $8 + local.get $9 i32.const 2 i32.shl i32.add - i32.load - local.get $8 - local.get $3 - local.get $2 - call_indirect (type $FUNCSIG$iiii) + block (result i32) + i32.const 3 + global.set $~lib/argc + local.get $5 + local.get $9 + i32.const 2 + i32.shl + i32.add + i32.load + local.get $9 + local.get $3 + local.get $2 + call_indirect (type $FUNCSIG$iiii) + end + i32.store + local.get $9 + i32.const 1 + i32.add + local.set $9 + br $repeat|0 + unreachable end - i32.store - local.get $8 - i32.const 1 - i32.add - local.set $8 - br $repeat|0 unreachable end - unreachable + local.get $7 + local.set $9 + local.get $3 + call $~lib/rt/purerc/__release + local.get $6 + call $~lib/rt/purerc/__release + local.get $9 end - local.get $6 + local.tee $8 + call $~lib/rt/purerc/__retain + local.set $7 + local.get $8 + call $~lib/rt/purerc/__release + local.get $7 ) - (func $~lib/typedarray/Uint32Array#__get (; 163 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Uint32Array#__get (; 169 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $1 local.get $0 i32.load offset=8 @@ -6419,9 +8412,9 @@ i32.shr_u i32.ge_u if - i32.const 0 - i32.const 192 - i32.const 520 + i32.const 288 + i32.const 344 + i32.const 519 i32.const 63 call $~lib/builtins/abort unreachable @@ -6434,30 +8427,33 @@ i32.add i32.load ) - (func $std/typedarray/testArrayMap<~lib/typedarray/Uint32Array,u32> (; 164 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayMap<~lib/typedarray/Uint32Array,u32> (; 170 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) + (local $2 i32) i32.const 0 i32.const 3 call $~lib/typedarray/Uint32Array#constructor - local.set $0 - local.get $0 + local.tee $0 + call $~lib/rt/purerc/__retain + local.set $1 + local.get $1 i32.const 0 i32.const 1 call $~lib/typedarray/Uint32Array#__set - local.get $0 + local.get $1 i32.const 1 i32.const 2 call $~lib/typedarray/Uint32Array#__set - local.get $0 + local.get $1 i32.const 2 i32.const 3 call $~lib/typedarray/Uint32Array#__set - local.get $0 + local.get $1 i32.const 30 call $~lib/typedarray/Uint32Array#map - local.set $1 - local.get $1 + local.set $2 + local.get $2 i32.const 0 call $~lib/typedarray/Uint32Array#__get i32.const 1 @@ -6471,7 +8467,7 @@ call $~lib/builtins/abort unreachable end - local.get $1 + local.get $2 i32.const 1 call $~lib/typedarray/Uint32Array#__get i32.const 4 @@ -6485,7 +8481,7 @@ call $~lib/builtins/abort unreachable end - local.get $1 + local.get $2 i32.const 2 call $~lib/typedarray/Uint32Array#__get i32.const 9 @@ -6499,13 +8495,27 @@ call $~lib/builtins/abort unreachable end + local.get $0 + call $~lib/rt/purerc/__release + local.get $1 + call $~lib/rt/purerc/__release + local.get $2 + call $~lib/rt/purerc/__release ) - (func $std/typedarray/testArrayMap<~lib/typedarray/Int64Array,i64>~anonymous|0 (; 165 ;) (type $FUNCSIG$jjii) (param $0 i64) (param $1 i32) (param $2 i32) (result i64) + (func $std/typedarray/testArrayMap<~lib/typedarray/Int64Array,i64>~anonymous|0 (; 171 ;) (type $FUNCSIG$jjii) (param $0 i64) (param $1 i32) (param $2 i32) (result i64) + (local $3 i64) + local.get $2 + call $~lib/rt/purerc/__retain + drop local.get $0 local.get $0 i64.mul + local.set $3 + local.get $2 + call $~lib/rt/purerc/__release + local.get $3 ) - (func $~lib/typedarray/Int64Array#map (; 166 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Int64Array#map (; 172 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -6513,64 +8523,82 @@ (local $6 i32) (local $7 i32) (local $8 i32) - local.get $0 - local.set $3 - local.get $1 - local.set $2 - local.get $3 - call $~lib/typedarray/Int64Array#get:length - local.set $4 - local.get $3 - i32.load offset=4 - local.set $5 - i32.const 0 - local.get $4 - call $~lib/typedarray/Int64Array#constructor - local.set $6 - local.get $6 - i32.load offset=4 - local.set $7 - block $break|0 + (local $9 i32) + block $~lib/typedarray/MAP<~lib/typedarray/Int64Array,i64>|inlined.0 (result i32) + local.get $0 + call $~lib/rt/purerc/__retain + local.set $3 + local.get $1 + local.set $2 + local.get $3 + call $~lib/typedarray/Int64Array#get:length + local.set $4 + local.get $3 + i32.load offset=4 + local.set $5 i32.const 0 + local.get $4 + call $~lib/typedarray/Int64Array#constructor + local.tee $6 + call $~lib/rt/purerc/__retain + local.set $7 + local.get $7 + i32.load offset=4 local.set $8 - loop $repeat|0 - local.get $8 - local.get $4 - i32.lt_s - i32.eqz - br_if $break|0 - local.get $7 - local.get $8 - i32.const 3 - i32.shl - i32.add - block (result i64) - i32.const 3 - global.set $~lib/argc - local.get $5 + block $break|0 + i32.const 0 + local.set $9 + loop $repeat|0 + local.get $9 + local.get $4 + i32.lt_s + i32.eqz + br_if $break|0 local.get $8 + local.get $9 i32.const 3 i32.shl i32.add - i64.load - local.get $8 - local.get $3 - local.get $2 - call_indirect (type $FUNCSIG$jjii) + block (result i64) + i32.const 3 + global.set $~lib/argc + local.get $5 + local.get $9 + i32.const 3 + i32.shl + i32.add + i64.load + local.get $9 + local.get $3 + local.get $2 + call_indirect (type $FUNCSIG$jjii) + end + i64.store + local.get $9 + i32.const 1 + i32.add + local.set $9 + br $repeat|0 + unreachable end - i64.store - local.get $8 - i32.const 1 - i32.add - local.set $8 - br $repeat|0 unreachable end - unreachable + local.get $7 + local.set $9 + local.get $3 + call $~lib/rt/purerc/__release + local.get $6 + call $~lib/rt/purerc/__release + local.get $9 end - local.get $6 + local.tee $8 + call $~lib/rt/purerc/__retain + local.set $7 + local.get $8 + call $~lib/rt/purerc/__release + local.get $7 ) - (func $~lib/typedarray/Int64Array#__get (; 167 ;) (type $FUNCSIG$jii) (param $0 i32) (param $1 i32) (result i64) + (func $~lib/typedarray/Int64Array#__get (; 173 ;) (type $FUNCSIG$jii) (param $0 i32) (param $1 i32) (result i64) local.get $1 local.get $0 i32.load offset=8 @@ -6578,9 +8606,9 @@ i32.shr_u i32.ge_u if - i32.const 0 - i32.const 192 - i32.const 602 + i32.const 288 + i32.const 344 + i32.const 601 i32.const 63 call $~lib/builtins/abort unreachable @@ -6593,30 +8621,33 @@ i32.add i64.load ) - (func $std/typedarray/testArrayMap<~lib/typedarray/Int64Array,i64> (; 168 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayMap<~lib/typedarray/Int64Array,i64> (; 174 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) + (local $2 i32) i32.const 0 i32.const 3 call $~lib/typedarray/Int64Array#constructor - local.set $0 - local.get $0 + local.tee $0 + call $~lib/rt/purerc/__retain + local.set $1 + local.get $1 i32.const 0 i64.const 1 call $~lib/typedarray/Int64Array#__set - local.get $0 + local.get $1 i32.const 1 i64.const 2 call $~lib/typedarray/Int64Array#__set - local.get $0 + local.get $1 i32.const 2 i64.const 3 call $~lib/typedarray/Int64Array#__set - local.get $0 + local.get $1 i32.const 31 call $~lib/typedarray/Int64Array#map - local.set $1 - local.get $1 + local.set $2 + local.get $2 i32.const 0 call $~lib/typedarray/Int64Array#__get i64.const 1 @@ -6630,7 +8661,7 @@ call $~lib/builtins/abort unreachable end - local.get $1 + local.get $2 i32.const 1 call $~lib/typedarray/Int64Array#__get i64.const 4 @@ -6644,7 +8675,7 @@ call $~lib/builtins/abort unreachable end - local.get $1 + local.get $2 i32.const 2 call $~lib/typedarray/Int64Array#__get i64.const 9 @@ -6658,13 +8689,27 @@ call $~lib/builtins/abort unreachable end + local.get $0 + call $~lib/rt/purerc/__release + local.get $1 + call $~lib/rt/purerc/__release + local.get $2 + call $~lib/rt/purerc/__release ) - (func $std/typedarray/testArrayMap<~lib/typedarray/Uint64Array,u64>~anonymous|0 (; 169 ;) (type $FUNCSIG$jjii) (param $0 i64) (param $1 i32) (param $2 i32) (result i64) + (func $std/typedarray/testArrayMap<~lib/typedarray/Uint64Array,u64>~anonymous|0 (; 175 ;) (type $FUNCSIG$jjii) (param $0 i64) (param $1 i32) (param $2 i32) (result i64) + (local $3 i64) + local.get $2 + call $~lib/rt/purerc/__retain + drop local.get $0 local.get $0 i64.mul + local.set $3 + local.get $2 + call $~lib/rt/purerc/__release + local.get $3 ) - (func $~lib/typedarray/Uint64Array#map (; 170 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Uint64Array#map (; 176 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -6672,64 +8717,82 @@ (local $6 i32) (local $7 i32) (local $8 i32) - local.get $0 - local.set $3 - local.get $1 - local.set $2 - local.get $3 - call $~lib/typedarray/Uint64Array#get:length - local.set $4 - local.get $3 - i32.load offset=4 - local.set $5 - i32.const 0 - local.get $4 - call $~lib/typedarray/Uint64Array#constructor - local.set $6 - local.get $6 - i32.load offset=4 - local.set $7 - block $break|0 + (local $9 i32) + block $~lib/typedarray/MAP<~lib/typedarray/Uint64Array,u64>|inlined.0 (result i32) + local.get $0 + call $~lib/rt/purerc/__retain + local.set $3 + local.get $1 + local.set $2 + local.get $3 + call $~lib/typedarray/Uint64Array#get:length + local.set $4 + local.get $3 + i32.load offset=4 + local.set $5 i32.const 0 + local.get $4 + call $~lib/typedarray/Uint64Array#constructor + local.tee $6 + call $~lib/rt/purerc/__retain + local.set $7 + local.get $7 + i32.load offset=4 local.set $8 - loop $repeat|0 - local.get $8 - local.get $4 - i32.lt_s - i32.eqz - br_if $break|0 - local.get $7 - local.get $8 - i32.const 3 - i32.shl - i32.add - block (result i64) - i32.const 3 - global.set $~lib/argc - local.get $5 + block $break|0 + i32.const 0 + local.set $9 + loop $repeat|0 + local.get $9 + local.get $4 + i32.lt_s + i32.eqz + br_if $break|0 local.get $8 + local.get $9 i32.const 3 i32.shl i32.add - i64.load - local.get $8 - local.get $3 - local.get $2 - call_indirect (type $FUNCSIG$jjii) + block (result i64) + i32.const 3 + global.set $~lib/argc + local.get $5 + local.get $9 + i32.const 3 + i32.shl + i32.add + i64.load + local.get $9 + local.get $3 + local.get $2 + call_indirect (type $FUNCSIG$jjii) + end + i64.store + local.get $9 + i32.const 1 + i32.add + local.set $9 + br $repeat|0 + unreachable end - i64.store - local.get $8 - i32.const 1 - i32.add - local.set $8 - br $repeat|0 unreachable end - unreachable + local.get $7 + local.set $9 + local.get $3 + call $~lib/rt/purerc/__release + local.get $6 + call $~lib/rt/purerc/__release + local.get $9 end - local.get $6 + local.tee $8 + call $~lib/rt/purerc/__retain + local.set $7 + local.get $8 + call $~lib/rt/purerc/__release + local.get $7 ) - (func $~lib/typedarray/Uint64Array#__get (; 171 ;) (type $FUNCSIG$jii) (param $0 i32) (param $1 i32) (result i64) + (func $~lib/typedarray/Uint64Array#__get (; 177 ;) (type $FUNCSIG$jii) (param $0 i32) (param $1 i32) (result i64) local.get $1 local.get $0 i32.load offset=8 @@ -6737,9 +8800,9 @@ i32.shr_u i32.ge_u if - i32.const 0 - i32.const 192 - i32.const 684 + i32.const 288 + i32.const 344 + i32.const 683 i32.const 63 call $~lib/builtins/abort unreachable @@ -6752,30 +8815,33 @@ i32.add i64.load ) - (func $std/typedarray/testArrayMap<~lib/typedarray/Uint64Array,u64> (; 172 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayMap<~lib/typedarray/Uint64Array,u64> (; 178 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) + (local $2 i32) i32.const 0 i32.const 3 call $~lib/typedarray/Uint64Array#constructor - local.set $0 - local.get $0 + local.tee $0 + call $~lib/rt/purerc/__retain + local.set $1 + local.get $1 i32.const 0 i64.const 1 call $~lib/typedarray/Uint64Array#__set - local.get $0 + local.get $1 i32.const 1 i64.const 2 call $~lib/typedarray/Uint64Array#__set - local.get $0 + local.get $1 i32.const 2 i64.const 3 call $~lib/typedarray/Uint64Array#__set - local.get $0 + local.get $1 i32.const 32 call $~lib/typedarray/Uint64Array#map - local.set $1 - local.get $1 + local.set $2 + local.get $2 i32.const 0 call $~lib/typedarray/Uint64Array#__get i64.const 1 @@ -6789,7 +8855,7 @@ call $~lib/builtins/abort unreachable end - local.get $1 + local.get $2 i32.const 1 call $~lib/typedarray/Uint64Array#__get i64.const 4 @@ -6803,7 +8869,7 @@ call $~lib/builtins/abort unreachable end - local.get $1 + local.get $2 i32.const 2 call $~lib/typedarray/Uint64Array#__get i64.const 9 @@ -6817,13 +8883,27 @@ call $~lib/builtins/abort unreachable end + local.get $0 + call $~lib/rt/purerc/__release + local.get $1 + call $~lib/rt/purerc/__release + local.get $2 + call $~lib/rt/purerc/__release ) - (func $std/typedarray/testArrayMap<~lib/typedarray/Float32Array,f32>~anonymous|0 (; 173 ;) (type $FUNCSIG$ffii) (param $0 f32) (param $1 i32) (param $2 i32) (result f32) + (func $std/typedarray/testArrayMap<~lib/typedarray/Float32Array,f32>~anonymous|0 (; 179 ;) (type $FUNCSIG$ffii) (param $0 f32) (param $1 i32) (param $2 i32) (result f32) + (local $3 f32) + local.get $2 + call $~lib/rt/purerc/__retain + drop local.get $0 local.get $0 f32.mul + local.set $3 + local.get $2 + call $~lib/rt/purerc/__release + local.get $3 ) - (func $~lib/typedarray/Float32Array#map (; 174 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Float32Array#map (; 180 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -6831,64 +8911,82 @@ (local $6 i32) (local $7 i32) (local $8 i32) - local.get $0 - local.set $3 - local.get $1 - local.set $2 - local.get $3 - call $~lib/typedarray/Float32Array#get:length - local.set $4 - local.get $3 - i32.load offset=4 - local.set $5 - i32.const 0 - local.get $4 - call $~lib/typedarray/Float32Array#constructor - local.set $6 - local.get $6 - i32.load offset=4 - local.set $7 - block $break|0 + (local $9 i32) + block $~lib/typedarray/MAP<~lib/typedarray/Float32Array,f32>|inlined.0 (result i32) + local.get $0 + call $~lib/rt/purerc/__retain + local.set $3 + local.get $1 + local.set $2 + local.get $3 + call $~lib/typedarray/Float32Array#get:length + local.set $4 + local.get $3 + i32.load offset=4 + local.set $5 i32.const 0 + local.get $4 + call $~lib/typedarray/Float32Array#constructor + local.tee $6 + call $~lib/rt/purerc/__retain + local.set $7 + local.get $7 + i32.load offset=4 local.set $8 - loop $repeat|0 - local.get $8 - local.get $4 - i32.lt_s - i32.eqz - br_if $break|0 - local.get $7 - local.get $8 - i32.const 2 - i32.shl - i32.add - block (result f32) - i32.const 3 - global.set $~lib/argc - local.get $5 + block $break|0 + i32.const 0 + local.set $9 + loop $repeat|0 + local.get $9 + local.get $4 + i32.lt_s + i32.eqz + br_if $break|0 local.get $8 + local.get $9 i32.const 2 i32.shl i32.add - f32.load - local.get $8 - local.get $3 - local.get $2 - call_indirect (type $FUNCSIG$ffii) + block (result f32) + i32.const 3 + global.set $~lib/argc + local.get $5 + local.get $9 + i32.const 2 + i32.shl + i32.add + f32.load + local.get $9 + local.get $3 + local.get $2 + call_indirect (type $FUNCSIG$ffii) + end + f32.store + local.get $9 + i32.const 1 + i32.add + local.set $9 + br $repeat|0 + unreachable end - f32.store - local.get $8 - i32.const 1 - i32.add - local.set $8 - br $repeat|0 unreachable end - unreachable + local.get $7 + local.set $9 + local.get $3 + call $~lib/rt/purerc/__release + local.get $6 + call $~lib/rt/purerc/__release + local.get $9 end - local.get $6 + local.tee $8 + call $~lib/rt/purerc/__retain + local.set $7 + local.get $8 + call $~lib/rt/purerc/__release + local.get $7 ) - (func $~lib/typedarray/Float32Array#__get (; 175 ;) (type $FUNCSIG$fii) (param $0 i32) (param $1 i32) (result f32) + (func $~lib/typedarray/Float32Array#__get (; 181 ;) (type $FUNCSIG$fii) (param $0 i32) (param $1 i32) (result f32) local.get $1 local.get $0 i32.load offset=8 @@ -6896,9 +8994,9 @@ i32.shr_u i32.ge_u if - i32.const 0 - i32.const 192 - i32.const 766 + i32.const 288 + i32.const 344 + i32.const 765 i32.const 63 call $~lib/builtins/abort unreachable @@ -6911,30 +9009,33 @@ i32.add f32.load ) - (func $std/typedarray/testArrayMap<~lib/typedarray/Float32Array,f32> (; 176 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayMap<~lib/typedarray/Float32Array,f32> (; 182 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) + (local $2 i32) i32.const 0 i32.const 3 call $~lib/typedarray/Float32Array#constructor - local.set $0 - local.get $0 + local.tee $0 + call $~lib/rt/purerc/__retain + local.set $1 + local.get $1 i32.const 0 f32.const 1 call $~lib/typedarray/Float32Array#__set - local.get $0 + local.get $1 i32.const 1 f32.const 2 call $~lib/typedarray/Float32Array#__set - local.get $0 + local.get $1 i32.const 2 f32.const 3 call $~lib/typedarray/Float32Array#__set - local.get $0 + local.get $1 i32.const 33 call $~lib/typedarray/Float32Array#map - local.set $1 - local.get $1 + local.set $2 + local.get $2 i32.const 0 call $~lib/typedarray/Float32Array#__get f32.const 1 @@ -6948,7 +9049,7 @@ call $~lib/builtins/abort unreachable end - local.get $1 + local.get $2 i32.const 1 call $~lib/typedarray/Float32Array#__get f32.const 4 @@ -6962,7 +9063,7 @@ call $~lib/builtins/abort unreachable end - local.get $1 + local.get $2 i32.const 2 call $~lib/typedarray/Float32Array#__get f32.const 9 @@ -6976,13 +9077,27 @@ call $~lib/builtins/abort unreachable end + local.get $0 + call $~lib/rt/purerc/__release + local.get $1 + call $~lib/rt/purerc/__release + local.get $2 + call $~lib/rt/purerc/__release ) - (func $std/typedarray/testArrayMap<~lib/typedarray/Float64Array,f64>~anonymous|0 (; 177 ;) (type $FUNCSIG$ddii) (param $0 f64) (param $1 i32) (param $2 i32) (result f64) + (func $std/typedarray/testArrayMap<~lib/typedarray/Float64Array,f64>~anonymous|0 (; 183 ;) (type $FUNCSIG$ddii) (param $0 f64) (param $1 i32) (param $2 i32) (result f64) + (local $3 f64) + local.get $2 + call $~lib/rt/purerc/__retain + drop local.get $0 local.get $0 f64.mul + local.set $3 + local.get $2 + call $~lib/rt/purerc/__release + local.get $3 ) - (func $~lib/typedarray/Float64Array#map (; 178 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Float64Array#map (; 184 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -6990,87 +9105,108 @@ (local $6 i32) (local $7 i32) (local $8 i32) - local.get $0 - local.set $3 - local.get $1 - local.set $2 - local.get $3 - call $~lib/typedarray/Float64Array#get:length - local.set $4 - local.get $3 - i32.load offset=4 - local.set $5 - i32.const 0 - local.get $4 - call $~lib/typedarray/Float64Array#constructor - local.set $6 - local.get $6 - i32.load offset=4 - local.set $7 - block $break|0 + (local $9 i32) + block $~lib/typedarray/MAP<~lib/typedarray/Float64Array,f64>|inlined.0 (result i32) + local.get $0 + call $~lib/rt/purerc/__retain + local.set $3 + local.get $1 + local.set $2 + local.get $3 + call $~lib/typedarray/Float64Array#get:length + local.set $4 + local.get $3 + i32.load offset=4 + local.set $5 i32.const 0 + local.get $4 + call $~lib/typedarray/Float64Array#constructor + local.tee $6 + call $~lib/rt/purerc/__retain + local.set $7 + local.get $7 + i32.load offset=4 local.set $8 - loop $repeat|0 - local.get $8 - local.get $4 - i32.lt_s - i32.eqz - br_if $break|0 - local.get $7 - local.get $8 - i32.const 3 - i32.shl - i32.add - block (result f64) - i32.const 3 - global.set $~lib/argc - local.get $5 + block $break|0 + i32.const 0 + local.set $9 + loop $repeat|0 + local.get $9 + local.get $4 + i32.lt_s + i32.eqz + br_if $break|0 local.get $8 + local.get $9 i32.const 3 i32.shl i32.add - f64.load - local.get $8 - local.get $3 - local.get $2 - call_indirect (type $FUNCSIG$ddii) + block (result f64) + i32.const 3 + global.set $~lib/argc + local.get $5 + local.get $9 + i32.const 3 + i32.shl + i32.add + f64.load + local.get $9 + local.get $3 + local.get $2 + call_indirect (type $FUNCSIG$ddii) + end + f64.store + local.get $9 + i32.const 1 + i32.add + local.set $9 + br $repeat|0 + unreachable end - f64.store - local.get $8 - i32.const 1 - i32.add - local.set $8 - br $repeat|0 unreachable end - unreachable + local.get $7 + local.set $9 + local.get $3 + call $~lib/rt/purerc/__release + local.get $6 + call $~lib/rt/purerc/__release + local.get $9 end - local.get $6 + local.tee $8 + call $~lib/rt/purerc/__retain + local.set $7 + local.get $8 + call $~lib/rt/purerc/__release + local.get $7 ) - (func $std/typedarray/testArrayMap<~lib/typedarray/Float64Array,f64> (; 179 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayMap<~lib/typedarray/Float64Array,f64> (; 185 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) + (local $2 i32) i32.const 0 i32.const 3 call $~lib/typedarray/Float64Array#constructor - local.set $0 - local.get $0 + local.tee $0 + call $~lib/rt/purerc/__retain + local.set $1 + local.get $1 i32.const 0 f64.const 1 call $~lib/typedarray/Float64Array#__set - local.get $0 + local.get $1 i32.const 1 f64.const 2 call $~lib/typedarray/Float64Array#__set - local.get $0 + local.get $1 i32.const 2 f64.const 3 call $~lib/typedarray/Float64Array#__set - local.get $0 + local.get $1 i32.const 34 call $~lib/typedarray/Float64Array#map - local.set $1 - local.get $1 + local.set $2 + local.get $2 i32.const 0 call $~lib/typedarray/Float64Array#__get f64.const 1 @@ -7084,7 +9220,7 @@ call $~lib/builtins/abort unreachable end - local.get $1 + local.get $2 i32.const 1 call $~lib/typedarray/Float64Array#__get f64.const 4 @@ -7098,7 +9234,7 @@ call $~lib/builtins/abort unreachable end - local.get $1 + local.get $2 i32.const 2 call $~lib/typedarray/Float64Array#__get f64.const 9 @@ -7112,8 +9248,18 @@ call $~lib/builtins/abort unreachable end + local.get $0 + call $~lib/rt/purerc/__release + local.get $1 + call $~lib/rt/purerc/__release + local.get $2 + call $~lib/rt/purerc/__release ) - (func $std/typedarray/testArraySome<~lib/typedarray/Int8Array,i8>~anonymous|0 (; 180 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArraySome<~lib/typedarray/Int8Array,i8>~anonymous|0 (; 186 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + local.get $2 + call $~lib/rt/purerc/__retain + drop local.get $0 i32.const 24 i32.shl @@ -7121,8 +9267,12 @@ i32.shr_s i32.const 2 i32.eq + local.set $3 + local.get $2 + call $~lib/rt/purerc/__release + local.get $3 ) - (func $~lib/typedarray/Int8Array#some (; 181 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Int8Array#some (; 187 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -7130,6 +9280,7 @@ (local $6 i32) block $~lib/typedarray/SOME<~lib/typedarray/Int8Array,i8>|inlined.0 (result i32) local.get $0 + call $~lib/rt/purerc/__retain local.set $3 local.get $1 local.set $2 @@ -7178,9 +9329,17 @@ unreachable end i32.const 0 + local.set $6 + local.get $3 + call $~lib/rt/purerc/__release + local.get $6 end ) - (func $std/typedarray/testArraySome<~lib/typedarray/Int8Array,i8>~anonymous|1 (; 182 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArraySome<~lib/typedarray/Int8Array,i8>~anonymous|1 (; 188 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + local.get $2 + call $~lib/rt/purerc/__retain + drop local.get $0 i32.const 24 i32.shl @@ -7188,32 +9347,39 @@ i32.shr_s i32.const 0 i32.eq + local.set $3 + local.get $2 + call $~lib/rt/purerc/__release + local.get $3 ) - (func $std/typedarray/testArraySome<~lib/typedarray/Int8Array,i8> (; 183 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArraySome<~lib/typedarray/Int8Array,i8> (; 189 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) + (local $3 i32) i32.const 0 i32.const 3 call $~lib/typedarray/Int8Array#constructor - local.set $0 - local.get $0 + local.tee $0 + call $~lib/rt/purerc/__retain + local.set $1 + local.get $1 i32.const 0 i32.const 2 call $~lib/typedarray/Int8Array#__set - local.get $0 + local.get $1 i32.const 1 i32.const 4 call $~lib/typedarray/Int8Array#__set - local.get $0 + local.get $1 i32.const 2 i32.const 6 call $~lib/typedarray/Int8Array#__set - local.get $0 + local.get $1 i32.const 35 call $~lib/typedarray/Int8Array#some - local.set $1 - local.get $1 + local.set $2 + local.get $2 i32.const 0 i32.ne i32.eqz @@ -7225,11 +9391,11 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 i32.const 36 call $~lib/typedarray/Int8Array#some - local.set $2 - local.get $2 + local.set $3 + local.get $3 i32.const 0 i32.ne i32.eqz @@ -7242,15 +9408,27 @@ call $~lib/builtins/abort unreachable end + local.get $0 + call $~lib/rt/purerc/__release + local.get $1 + call $~lib/rt/purerc/__release ) - (func $std/typedarray/testArraySome<~lib/typedarray/Uint8Array,u8>~anonymous|0 (; 184 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArraySome<~lib/typedarray/Uint8Array,u8>~anonymous|0 (; 190 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + local.get $2 + call $~lib/rt/purerc/__retain + drop local.get $0 i32.const 255 i32.and i32.const 2 i32.eq + local.set $3 + local.get $2 + call $~lib/rt/purerc/__release + local.get $3 ) - (func $~lib/typedarray/Uint8Array#some (; 185 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Uint8Array#some (; 191 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -7258,6 +9436,7 @@ (local $6 i32) block $~lib/typedarray/SOME<~lib/typedarray/Uint8Array,u8>|inlined.0 (result i32) local.get $0 + call $~lib/rt/purerc/__retain local.set $3 local.get $1 local.set $2 @@ -7306,40 +9485,55 @@ unreachable end i32.const 0 + local.set $6 + local.get $3 + call $~lib/rt/purerc/__release + local.get $6 end ) - (func $std/typedarray/testArraySome<~lib/typedarray/Uint8Array,u8>~anonymous|1 (; 186 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArraySome<~lib/typedarray/Uint8Array,u8>~anonymous|1 (; 192 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + local.get $2 + call $~lib/rt/purerc/__retain + drop local.get $0 i32.const 255 i32.and i32.const 0 i32.eq + local.set $3 + local.get $2 + call $~lib/rt/purerc/__release + local.get $3 ) - (func $std/typedarray/testArraySome<~lib/typedarray/Uint8Array,u8> (; 187 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArraySome<~lib/typedarray/Uint8Array,u8> (; 193 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) + (local $3 i32) i32.const 0 i32.const 3 call $~lib/typedarray/Uint8Array#constructor - local.set $0 - local.get $0 + local.tee $0 + call $~lib/rt/purerc/__retain + local.set $1 + local.get $1 i32.const 0 i32.const 2 call $~lib/typedarray/Uint8Array#__set - local.get $0 + local.get $1 i32.const 1 i32.const 4 call $~lib/typedarray/Uint8Array#__set - local.get $0 + local.get $1 i32.const 2 i32.const 6 call $~lib/typedarray/Uint8Array#__set - local.get $0 + local.get $1 i32.const 37 call $~lib/typedarray/Uint8Array#some - local.set $1 - local.get $1 + local.set $2 + local.get $2 i32.const 0 i32.ne i32.eqz @@ -7351,11 +9545,11 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 i32.const 38 call $~lib/typedarray/Uint8Array#some - local.set $2 - local.get $2 + local.set $3 + local.get $3 i32.const 0 i32.ne i32.eqz @@ -7368,15 +9562,27 @@ call $~lib/builtins/abort unreachable end + local.get $0 + call $~lib/rt/purerc/__release + local.get $1 + call $~lib/rt/purerc/__release ) - (func $std/typedarray/testArraySome<~lib/typedarray/Uint8ClampedArray,u8>~anonymous|0 (; 188 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArraySome<~lib/typedarray/Uint8ClampedArray,u8>~anonymous|0 (; 194 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + local.get $2 + call $~lib/rt/purerc/__retain + drop local.get $0 i32.const 255 i32.and i32.const 2 i32.eq + local.set $3 + local.get $2 + call $~lib/rt/purerc/__release + local.get $3 ) - (func $~lib/typedarray/Uint8ClampedArray#some (; 189 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Uint8ClampedArray#some (; 195 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -7384,6 +9590,7 @@ (local $6 i32) block $~lib/typedarray/SOME<~lib/typedarray/Uint8ClampedArray,u8>|inlined.0 (result i32) local.get $0 + call $~lib/rt/purerc/__retain local.set $3 local.get $1 local.set $2 @@ -7432,40 +9639,55 @@ unreachable end i32.const 0 + local.set $6 + local.get $3 + call $~lib/rt/purerc/__release + local.get $6 end ) - (func $std/typedarray/testArraySome<~lib/typedarray/Uint8ClampedArray,u8>~anonymous|1 (; 190 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArraySome<~lib/typedarray/Uint8ClampedArray,u8>~anonymous|1 (; 196 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + local.get $2 + call $~lib/rt/purerc/__retain + drop local.get $0 i32.const 255 i32.and i32.const 0 i32.eq + local.set $3 + local.get $2 + call $~lib/rt/purerc/__release + local.get $3 ) - (func $std/typedarray/testArraySome<~lib/typedarray/Uint8ClampedArray,u8> (; 191 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArraySome<~lib/typedarray/Uint8ClampedArray,u8> (; 197 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) + (local $3 i32) i32.const 0 i32.const 3 call $~lib/typedarray/Uint8ClampedArray#constructor - local.set $0 - local.get $0 + local.tee $0 + call $~lib/rt/purerc/__retain + local.set $1 + local.get $1 i32.const 0 i32.const 2 call $~lib/typedarray/Uint8ClampedArray#__set - local.get $0 + local.get $1 i32.const 1 i32.const 4 call $~lib/typedarray/Uint8ClampedArray#__set - local.get $0 + local.get $1 i32.const 2 i32.const 6 call $~lib/typedarray/Uint8ClampedArray#__set - local.get $0 + local.get $1 i32.const 39 call $~lib/typedarray/Uint8ClampedArray#some - local.set $1 - local.get $1 + local.set $2 + local.get $2 i32.const 0 i32.ne i32.eqz @@ -7477,11 +9699,11 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 i32.const 40 call $~lib/typedarray/Uint8ClampedArray#some - local.set $2 - local.get $2 + local.set $3 + local.get $3 i32.const 0 i32.ne i32.eqz @@ -7494,8 +9716,16 @@ call $~lib/builtins/abort unreachable end + local.get $0 + call $~lib/rt/purerc/__release + local.get $1 + call $~lib/rt/purerc/__release ) - (func $std/typedarray/testArraySome<~lib/typedarray/Int16Array,i16>~anonymous|0 (; 192 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArraySome<~lib/typedarray/Int16Array,i16>~anonymous|0 (; 198 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + local.get $2 + call $~lib/rt/purerc/__retain + drop local.get $0 i32.const 16 i32.shl @@ -7503,8 +9733,12 @@ i32.shr_s i32.const 2 i32.eq + local.set $3 + local.get $2 + call $~lib/rt/purerc/__release + local.get $3 ) - (func $~lib/typedarray/Int16Array#some (; 193 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Int16Array#some (; 199 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -7512,6 +9746,7 @@ (local $6 i32) block $~lib/typedarray/SOME<~lib/typedarray/Int16Array,i16>|inlined.0 (result i32) local.get $0 + call $~lib/rt/purerc/__retain local.set $3 local.get $1 local.set $2 @@ -7560,9 +9795,17 @@ unreachable end i32.const 0 + local.set $6 + local.get $3 + call $~lib/rt/purerc/__release + local.get $6 end ) - (func $std/typedarray/testArraySome<~lib/typedarray/Int16Array,i16>~anonymous|1 (; 194 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArraySome<~lib/typedarray/Int16Array,i16>~anonymous|1 (; 200 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + local.get $2 + call $~lib/rt/purerc/__retain + drop local.get $0 i32.const 16 i32.shl @@ -7570,32 +9813,39 @@ i32.shr_s i32.const 0 i32.eq + local.set $3 + local.get $2 + call $~lib/rt/purerc/__release + local.get $3 ) - (func $std/typedarray/testArraySome<~lib/typedarray/Int16Array,i16> (; 195 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArraySome<~lib/typedarray/Int16Array,i16> (; 201 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) + (local $3 i32) i32.const 0 i32.const 3 call $~lib/typedarray/Int16Array#constructor - local.set $0 - local.get $0 + local.tee $0 + call $~lib/rt/purerc/__retain + local.set $1 + local.get $1 i32.const 0 i32.const 2 call $~lib/typedarray/Int16Array#__set - local.get $0 + local.get $1 i32.const 1 i32.const 4 call $~lib/typedarray/Int16Array#__set - local.get $0 + local.get $1 i32.const 2 i32.const 6 call $~lib/typedarray/Int16Array#__set - local.get $0 + local.get $1 i32.const 41 call $~lib/typedarray/Int16Array#some - local.set $1 - local.get $1 + local.set $2 + local.get $2 i32.const 0 i32.ne i32.eqz @@ -7607,11 +9857,11 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 i32.const 42 call $~lib/typedarray/Int16Array#some - local.set $2 - local.get $2 + local.set $3 + local.get $3 i32.const 0 i32.ne i32.eqz @@ -7624,15 +9874,27 @@ call $~lib/builtins/abort unreachable end + local.get $0 + call $~lib/rt/purerc/__release + local.get $1 + call $~lib/rt/purerc/__release ) - (func $std/typedarray/testArraySome<~lib/typedarray/Uint16Array,u16>~anonymous|0 (; 196 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArraySome<~lib/typedarray/Uint16Array,u16>~anonymous|0 (; 202 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + local.get $2 + call $~lib/rt/purerc/__retain + drop local.get $0 i32.const 65535 i32.and i32.const 2 i32.eq + local.set $3 + local.get $2 + call $~lib/rt/purerc/__release + local.get $3 ) - (func $~lib/typedarray/Uint16Array#some (; 197 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Uint16Array#some (; 203 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -7640,6 +9902,7 @@ (local $6 i32) block $~lib/typedarray/SOME<~lib/typedarray/Uint16Array,u16>|inlined.0 (result i32) local.get $0 + call $~lib/rt/purerc/__retain local.set $3 local.get $1 local.set $2 @@ -7688,40 +9951,55 @@ unreachable end i32.const 0 + local.set $6 + local.get $3 + call $~lib/rt/purerc/__release + local.get $6 end ) - (func $std/typedarray/testArraySome<~lib/typedarray/Uint16Array,u16>~anonymous|1 (; 198 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArraySome<~lib/typedarray/Uint16Array,u16>~anonymous|1 (; 204 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + local.get $2 + call $~lib/rt/purerc/__retain + drop local.get $0 i32.const 65535 i32.and i32.const 0 i32.eq + local.set $3 + local.get $2 + call $~lib/rt/purerc/__release + local.get $3 ) - (func $std/typedarray/testArraySome<~lib/typedarray/Uint16Array,u16> (; 199 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArraySome<~lib/typedarray/Uint16Array,u16> (; 205 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) + (local $3 i32) i32.const 0 i32.const 3 call $~lib/typedarray/Uint16Array#constructor - local.set $0 - local.get $0 + local.tee $0 + call $~lib/rt/purerc/__retain + local.set $1 + local.get $1 i32.const 0 i32.const 2 call $~lib/typedarray/Uint16Array#__set - local.get $0 + local.get $1 i32.const 1 i32.const 4 call $~lib/typedarray/Uint16Array#__set - local.get $0 + local.get $1 i32.const 2 i32.const 6 call $~lib/typedarray/Uint16Array#__set - local.get $0 + local.get $1 i32.const 43 call $~lib/typedarray/Uint16Array#some - local.set $1 - local.get $1 + local.set $2 + local.get $2 i32.const 0 i32.ne i32.eqz @@ -7733,11 +10011,11 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 i32.const 44 call $~lib/typedarray/Uint16Array#some - local.set $2 - local.get $2 + local.set $3 + local.get $3 i32.const 0 i32.ne i32.eqz @@ -7750,13 +10028,25 @@ call $~lib/builtins/abort unreachable end + local.get $0 + call $~lib/rt/purerc/__release + local.get $1 + call $~lib/rt/purerc/__release ) - (func $std/typedarray/testArraySome<~lib/typedarray/Int32Array,i32>~anonymous|0 (; 200 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArraySome<~lib/typedarray/Int32Array,i32>~anonymous|0 (; 206 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + local.get $2 + call $~lib/rt/purerc/__retain + drop local.get $0 i32.const 2 i32.eq + local.set $3 + local.get $2 + call $~lib/rt/purerc/__release + local.get $3 ) - (func $~lib/typedarray/Int32Array#some (; 201 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Int32Array#some (; 207 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -7764,6 +10054,7 @@ (local $6 i32) block $~lib/typedarray/SOME<~lib/typedarray/Int32Array,i32>|inlined.0 (result i32) local.get $0 + call $~lib/rt/purerc/__retain local.set $3 local.get $1 local.set $2 @@ -7812,38 +10103,53 @@ unreachable end i32.const 0 + local.set $6 + local.get $3 + call $~lib/rt/purerc/__release + local.get $6 end ) - (func $std/typedarray/testArraySome<~lib/typedarray/Int32Array,i32>~anonymous|1 (; 202 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArraySome<~lib/typedarray/Int32Array,i32>~anonymous|1 (; 208 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + local.get $2 + call $~lib/rt/purerc/__retain + drop local.get $0 i32.const 0 i32.eq + local.set $3 + local.get $2 + call $~lib/rt/purerc/__release + local.get $3 ) - (func $std/typedarray/testArraySome<~lib/typedarray/Int32Array,i32> (; 203 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArraySome<~lib/typedarray/Int32Array,i32> (; 209 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) + (local $3 i32) i32.const 0 i32.const 3 call $~lib/typedarray/Int32Array#constructor - local.set $0 - local.get $0 + local.tee $0 + call $~lib/rt/purerc/__retain + local.set $1 + local.get $1 i32.const 0 i32.const 2 call $~lib/typedarray/Int32Array#__set - local.get $0 + local.get $1 i32.const 1 i32.const 4 call $~lib/typedarray/Int32Array#__set - local.get $0 + local.get $1 i32.const 2 i32.const 6 call $~lib/typedarray/Int32Array#__set - local.get $0 + local.get $1 i32.const 45 call $~lib/typedarray/Int32Array#some - local.set $1 - local.get $1 + local.set $2 + local.get $2 i32.const 0 i32.ne i32.eqz @@ -7855,11 +10161,11 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 i32.const 46 call $~lib/typedarray/Int32Array#some - local.set $2 - local.get $2 + local.set $3 + local.get $3 i32.const 0 i32.ne i32.eqz @@ -7872,13 +10178,25 @@ call $~lib/builtins/abort unreachable end + local.get $0 + call $~lib/rt/purerc/__release + local.get $1 + call $~lib/rt/purerc/__release ) - (func $std/typedarray/testArraySome<~lib/typedarray/Uint32Array,u32>~anonymous|0 (; 204 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArraySome<~lib/typedarray/Uint32Array,u32>~anonymous|0 (; 210 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + local.get $2 + call $~lib/rt/purerc/__retain + drop local.get $0 i32.const 2 i32.eq + local.set $3 + local.get $2 + call $~lib/rt/purerc/__release + local.get $3 ) - (func $~lib/typedarray/Uint32Array#some (; 205 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Uint32Array#some (; 211 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -7886,6 +10204,7 @@ (local $6 i32) block $~lib/typedarray/SOME<~lib/typedarray/Uint32Array,u32>|inlined.0 (result i32) local.get $0 + call $~lib/rt/purerc/__retain local.set $3 local.get $1 local.set $2 @@ -7934,38 +10253,53 @@ unreachable end i32.const 0 + local.set $6 + local.get $3 + call $~lib/rt/purerc/__release + local.get $6 end ) - (func $std/typedarray/testArraySome<~lib/typedarray/Uint32Array,u32>~anonymous|1 (; 206 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArraySome<~lib/typedarray/Uint32Array,u32>~anonymous|1 (; 212 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + local.get $2 + call $~lib/rt/purerc/__retain + drop local.get $0 i32.const 0 i32.eq + local.set $3 + local.get $2 + call $~lib/rt/purerc/__release + local.get $3 ) - (func $std/typedarray/testArraySome<~lib/typedarray/Uint32Array,u32> (; 207 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArraySome<~lib/typedarray/Uint32Array,u32> (; 213 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) + (local $3 i32) i32.const 0 i32.const 3 call $~lib/typedarray/Uint32Array#constructor - local.set $0 - local.get $0 + local.tee $0 + call $~lib/rt/purerc/__retain + local.set $1 + local.get $1 i32.const 0 i32.const 2 call $~lib/typedarray/Uint32Array#__set - local.get $0 + local.get $1 i32.const 1 i32.const 4 call $~lib/typedarray/Uint32Array#__set - local.get $0 + local.get $1 i32.const 2 i32.const 6 call $~lib/typedarray/Uint32Array#__set - local.get $0 + local.get $1 i32.const 47 call $~lib/typedarray/Uint32Array#some - local.set $1 - local.get $1 + local.set $2 + local.get $2 i32.const 0 i32.ne i32.eqz @@ -7977,11 +10311,11 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 i32.const 48 call $~lib/typedarray/Uint32Array#some - local.set $2 - local.get $2 + local.set $3 + local.get $3 i32.const 0 i32.ne i32.eqz @@ -7994,13 +10328,25 @@ call $~lib/builtins/abort unreachable end + local.get $0 + call $~lib/rt/purerc/__release + local.get $1 + call $~lib/rt/purerc/__release ) - (func $std/typedarray/testArraySome<~lib/typedarray/Int64Array,i64>~anonymous|0 (; 208 ;) (type $FUNCSIG$ijii) (param $0 i64) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArraySome<~lib/typedarray/Int64Array,i64>~anonymous|0 (; 214 ;) (type $FUNCSIG$ijii) (param $0 i64) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + local.get $2 + call $~lib/rt/purerc/__retain + drop local.get $0 i64.const 2 i64.eq + local.set $3 + local.get $2 + call $~lib/rt/purerc/__release + local.get $3 ) - (func $~lib/typedarray/Int64Array#some (; 209 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Int64Array#some (; 215 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -8008,6 +10354,7 @@ (local $6 i32) block $~lib/typedarray/SOME<~lib/typedarray/Int64Array,i64>|inlined.0 (result i32) local.get $0 + call $~lib/rt/purerc/__retain local.set $3 local.get $1 local.set $2 @@ -8056,38 +10403,53 @@ unreachable end i32.const 0 + local.set $6 + local.get $3 + call $~lib/rt/purerc/__release + local.get $6 end ) - (func $std/typedarray/testArraySome<~lib/typedarray/Int64Array,i64>~anonymous|1 (; 210 ;) (type $FUNCSIG$ijii) (param $0 i64) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArraySome<~lib/typedarray/Int64Array,i64>~anonymous|1 (; 216 ;) (type $FUNCSIG$ijii) (param $0 i64) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + local.get $2 + call $~lib/rt/purerc/__retain + drop local.get $0 i64.const 0 i64.eq + local.set $3 + local.get $2 + call $~lib/rt/purerc/__release + local.get $3 ) - (func $std/typedarray/testArraySome<~lib/typedarray/Int64Array,i64> (; 211 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArraySome<~lib/typedarray/Int64Array,i64> (; 217 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) + (local $3 i32) i32.const 0 i32.const 3 call $~lib/typedarray/Int64Array#constructor - local.set $0 - local.get $0 + local.tee $0 + call $~lib/rt/purerc/__retain + local.set $1 + local.get $1 i32.const 0 i64.const 2 call $~lib/typedarray/Int64Array#__set - local.get $0 + local.get $1 i32.const 1 i64.const 4 call $~lib/typedarray/Int64Array#__set - local.get $0 + local.get $1 i32.const 2 i64.const 6 call $~lib/typedarray/Int64Array#__set - local.get $0 + local.get $1 i32.const 49 call $~lib/typedarray/Int64Array#some - local.set $1 - local.get $1 + local.set $2 + local.get $2 i32.const 0 i32.ne i32.eqz @@ -8099,11 +10461,11 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 i32.const 50 call $~lib/typedarray/Int64Array#some - local.set $2 - local.get $2 + local.set $3 + local.get $3 i32.const 0 i32.ne i32.eqz @@ -8116,13 +10478,25 @@ call $~lib/builtins/abort unreachable end + local.get $0 + call $~lib/rt/purerc/__release + local.get $1 + call $~lib/rt/purerc/__release ) - (func $std/typedarray/testArraySome<~lib/typedarray/Uint64Array,u64>~anonymous|0 (; 212 ;) (type $FUNCSIG$ijii) (param $0 i64) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArraySome<~lib/typedarray/Uint64Array,u64>~anonymous|0 (; 218 ;) (type $FUNCSIG$ijii) (param $0 i64) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + local.get $2 + call $~lib/rt/purerc/__retain + drop local.get $0 i64.const 2 i64.eq + local.set $3 + local.get $2 + call $~lib/rt/purerc/__release + local.get $3 ) - (func $~lib/typedarray/Uint64Array#some (; 213 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Uint64Array#some (; 219 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -8130,6 +10504,7 @@ (local $6 i32) block $~lib/typedarray/SOME<~lib/typedarray/Uint64Array,u64>|inlined.0 (result i32) local.get $0 + call $~lib/rt/purerc/__retain local.set $3 local.get $1 local.set $2 @@ -8178,38 +10553,53 @@ unreachable end i32.const 0 + local.set $6 + local.get $3 + call $~lib/rt/purerc/__release + local.get $6 end ) - (func $std/typedarray/testArraySome<~lib/typedarray/Uint64Array,u64>~anonymous|1 (; 214 ;) (type $FUNCSIG$ijii) (param $0 i64) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArraySome<~lib/typedarray/Uint64Array,u64>~anonymous|1 (; 220 ;) (type $FUNCSIG$ijii) (param $0 i64) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + local.get $2 + call $~lib/rt/purerc/__retain + drop local.get $0 i64.const 0 i64.eq + local.set $3 + local.get $2 + call $~lib/rt/purerc/__release + local.get $3 ) - (func $std/typedarray/testArraySome<~lib/typedarray/Uint64Array,u64> (; 215 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArraySome<~lib/typedarray/Uint64Array,u64> (; 221 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) + (local $3 i32) i32.const 0 i32.const 3 call $~lib/typedarray/Uint64Array#constructor - local.set $0 - local.get $0 + local.tee $0 + call $~lib/rt/purerc/__retain + local.set $1 + local.get $1 i32.const 0 i64.const 2 call $~lib/typedarray/Uint64Array#__set - local.get $0 + local.get $1 i32.const 1 i64.const 4 call $~lib/typedarray/Uint64Array#__set - local.get $0 + local.get $1 i32.const 2 i64.const 6 call $~lib/typedarray/Uint64Array#__set - local.get $0 + local.get $1 i32.const 51 call $~lib/typedarray/Uint64Array#some - local.set $1 - local.get $1 + local.set $2 + local.get $2 i32.const 0 i32.ne i32.eqz @@ -8221,11 +10611,11 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 i32.const 52 call $~lib/typedarray/Uint64Array#some - local.set $2 - local.get $2 + local.set $3 + local.get $3 i32.const 0 i32.ne i32.eqz @@ -8238,13 +10628,25 @@ call $~lib/builtins/abort unreachable end + local.get $0 + call $~lib/rt/purerc/__release + local.get $1 + call $~lib/rt/purerc/__release ) - (func $std/typedarray/testArraySome<~lib/typedarray/Float32Array,f32>~anonymous|0 (; 216 ;) (type $FUNCSIG$ifii) (param $0 f32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArraySome<~lib/typedarray/Float32Array,f32>~anonymous|0 (; 222 ;) (type $FUNCSIG$ifii) (param $0 f32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + local.get $2 + call $~lib/rt/purerc/__retain + drop local.get $0 f32.const 2 f32.eq + local.set $3 + local.get $2 + call $~lib/rt/purerc/__release + local.get $3 ) - (func $~lib/typedarray/Float32Array#some (; 217 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Float32Array#some (; 223 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -8252,6 +10654,7 @@ (local $6 i32) block $~lib/typedarray/SOME<~lib/typedarray/Float32Array,f32>|inlined.0 (result i32) local.get $0 + call $~lib/rt/purerc/__retain local.set $3 local.get $1 local.set $2 @@ -8300,38 +10703,53 @@ unreachable end i32.const 0 + local.set $6 + local.get $3 + call $~lib/rt/purerc/__release + local.get $6 end ) - (func $std/typedarray/testArraySome<~lib/typedarray/Float32Array,f32>~anonymous|1 (; 218 ;) (type $FUNCSIG$ifii) (param $0 f32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArraySome<~lib/typedarray/Float32Array,f32>~anonymous|1 (; 224 ;) (type $FUNCSIG$ifii) (param $0 f32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + local.get $2 + call $~lib/rt/purerc/__retain + drop local.get $0 f32.const 0 f32.eq + local.set $3 + local.get $2 + call $~lib/rt/purerc/__release + local.get $3 ) - (func $std/typedarray/testArraySome<~lib/typedarray/Float32Array,f32> (; 219 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArraySome<~lib/typedarray/Float32Array,f32> (; 225 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) + (local $3 i32) i32.const 0 i32.const 3 call $~lib/typedarray/Float32Array#constructor - local.set $0 - local.get $0 + local.tee $0 + call $~lib/rt/purerc/__retain + local.set $1 + local.get $1 i32.const 0 f32.const 2 call $~lib/typedarray/Float32Array#__set - local.get $0 + local.get $1 i32.const 1 f32.const 4 call $~lib/typedarray/Float32Array#__set - local.get $0 + local.get $1 i32.const 2 f32.const 6 call $~lib/typedarray/Float32Array#__set - local.get $0 + local.get $1 i32.const 53 call $~lib/typedarray/Float32Array#some - local.set $1 - local.get $1 + local.set $2 + local.get $2 i32.const 0 i32.ne i32.eqz @@ -8343,11 +10761,11 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 i32.const 54 call $~lib/typedarray/Float32Array#some - local.set $2 - local.get $2 + local.set $3 + local.get $3 i32.const 0 i32.ne i32.eqz @@ -8360,13 +10778,25 @@ call $~lib/builtins/abort unreachable end + local.get $0 + call $~lib/rt/purerc/__release + local.get $1 + call $~lib/rt/purerc/__release ) - (func $std/typedarray/testArraySome<~lib/typedarray/Float64Array,f64>~anonymous|0 (; 220 ;) (type $FUNCSIG$idii) (param $0 f64) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArraySome<~lib/typedarray/Float64Array,f64>~anonymous|0 (; 226 ;) (type $FUNCSIG$idii) (param $0 f64) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + local.get $2 + call $~lib/rt/purerc/__retain + drop local.get $0 f64.const 2 f64.eq + local.set $3 + local.get $2 + call $~lib/rt/purerc/__release + local.get $3 ) - (func $~lib/typedarray/Float64Array#some (; 221 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Float64Array#some (; 227 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -8374,6 +10804,7 @@ (local $6 i32) block $~lib/typedarray/SOME<~lib/typedarray/Float64Array,f64>|inlined.0 (result i32) local.get $0 + call $~lib/rt/purerc/__retain local.set $3 local.get $1 local.set $2 @@ -8422,38 +10853,53 @@ unreachable end i32.const 0 + local.set $6 + local.get $3 + call $~lib/rt/purerc/__release + local.get $6 end ) - (func $std/typedarray/testArraySome<~lib/typedarray/Float64Array,f64>~anonymous|1 (; 222 ;) (type $FUNCSIG$idii) (param $0 f64) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArraySome<~lib/typedarray/Float64Array,f64>~anonymous|1 (; 228 ;) (type $FUNCSIG$idii) (param $0 f64) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + local.get $2 + call $~lib/rt/purerc/__retain + drop local.get $0 f64.const 0 f64.eq + local.set $3 + local.get $2 + call $~lib/rt/purerc/__release + local.get $3 ) - (func $std/typedarray/testArraySome<~lib/typedarray/Float64Array,f64> (; 223 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArraySome<~lib/typedarray/Float64Array,f64> (; 229 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) + (local $3 i32) i32.const 0 i32.const 3 call $~lib/typedarray/Float64Array#constructor - local.set $0 - local.get $0 + local.tee $0 + call $~lib/rt/purerc/__retain + local.set $1 + local.get $1 i32.const 0 f64.const 2 call $~lib/typedarray/Float64Array#__set - local.get $0 + local.get $1 i32.const 1 f64.const 4 call $~lib/typedarray/Float64Array#__set - local.get $0 + local.get $1 i32.const 2 f64.const 6 call $~lib/typedarray/Float64Array#__set - local.get $0 + local.get $1 i32.const 55 call $~lib/typedarray/Float64Array#some - local.set $1 - local.get $1 + local.set $2 + local.get $2 i32.const 0 i32.ne i32.eqz @@ -8465,11 +10911,11 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 i32.const 56 call $~lib/typedarray/Float64Array#some - local.set $2 - local.get $2 + local.set $3 + local.get $3 i32.const 0 i32.ne i32.eqz @@ -8482,8 +10928,16 @@ call $~lib/builtins/abort unreachable end + local.get $0 + call $~lib/rt/purerc/__release + local.get $1 + call $~lib/rt/purerc/__release ) - (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Int8Array,i8>~anonymous|0 (; 224 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Int8Array,i8>~anonymous|0 (; 230 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + local.get $2 + call $~lib/rt/purerc/__retain + drop local.get $0 i32.const 24 i32.shl @@ -8491,8 +10945,12 @@ i32.shr_s i32.const 2 i32.eq + local.set $3 + local.get $2 + call $~lib/rt/purerc/__release + local.get $3 ) - (func $~lib/typedarray/Int8Array#findIndex (; 225 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Int8Array#findIndex (; 231 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -8500,6 +10958,7 @@ (local $6 i32) block $~lib/typedarray/FIND_INDEX<~lib/typedarray/Int8Array,i8>|inlined.0 (result i32) local.get $0 + call $~lib/rt/purerc/__retain local.set $3 local.get $1 local.set $2 @@ -8548,9 +11007,17 @@ unreachable end i32.const -1 + local.set $6 + local.get $3 + call $~lib/rt/purerc/__release + local.get $6 end ) - (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Int8Array,i8>~anonymous|1 (; 226 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Int8Array,i8>~anonymous|1 (; 232 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + local.get $2 + call $~lib/rt/purerc/__retain + drop local.get $0 i32.const 24 i32.shl @@ -8558,68 +11025,87 @@ i32.shr_s i32.const 4 i32.eq + local.set $3 + local.get $2 + call $~lib/rt/purerc/__release + local.get $3 ) - (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Int8Array,i8> (; 227 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Int8Array,i8> (; 233 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) + (local $3 i32) i32.const 0 i32.const 3 call $~lib/typedarray/Int8Array#constructor - local.set $0 - local.get $0 + local.tee $0 + call $~lib/rt/purerc/__retain + local.set $1 + local.get $1 i32.const 0 i32.const 1 call $~lib/typedarray/Int8Array#__set - local.get $0 + local.get $1 i32.const 1 i32.const 2 call $~lib/typedarray/Int8Array#__set - local.get $0 + local.get $1 i32.const 2 i32.const 3 call $~lib/typedarray/Int8Array#__set - local.get $0 + local.get $1 i32.const 57 call $~lib/typedarray/Int8Array#findIndex - local.set $1 - local.get $1 + local.set $2 + local.get $2 i32.const 1 i32.eq i32.eqz if - i32.const 736 + i32.const 944 i32.const 24 i32.const 365 i32.const 2 call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 i32.const 58 call $~lib/typedarray/Int8Array#findIndex - local.set $2 - local.get $2 + local.set $3 + local.get $3 i32.const -1 i32.eq i32.eqz if - i32.const 784 + i32.const 992 i32.const 24 i32.const 368 i32.const 2 call $~lib/builtins/abort unreachable end + local.get $0 + call $~lib/rt/purerc/__release + local.get $1 + call $~lib/rt/purerc/__release ) - (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Uint8Array,u8>~anonymous|0 (; 228 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Uint8Array,u8>~anonymous|0 (; 234 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + local.get $2 + call $~lib/rt/purerc/__retain + drop local.get $0 i32.const 255 i32.and i32.const 2 i32.eq + local.set $3 + local.get $2 + call $~lib/rt/purerc/__release + local.get $3 ) - (func $~lib/typedarray/Uint8Array#findIndex (; 229 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Uint8Array#findIndex (; 235 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -8627,6 +11113,7 @@ (local $6 i32) block $~lib/typedarray/FIND_INDEX<~lib/typedarray/Uint8Array,u8>|inlined.0 (result i32) local.get $0 + call $~lib/rt/purerc/__retain local.set $3 local.get $1 local.set $2 @@ -8675,76 +11162,103 @@ unreachable end i32.const -1 + local.set $6 + local.get $3 + call $~lib/rt/purerc/__release + local.get $6 end ) - (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Uint8Array,u8>~anonymous|1 (; 230 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Uint8Array,u8>~anonymous|1 (; 236 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + local.get $2 + call $~lib/rt/purerc/__retain + drop local.get $0 i32.const 255 i32.and i32.const 4 i32.eq + local.set $3 + local.get $2 + call $~lib/rt/purerc/__release + local.get $3 ) - (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Uint8Array,u8> (; 231 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Uint8Array,u8> (; 237 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) + (local $3 i32) i32.const 0 i32.const 3 call $~lib/typedarray/Uint8Array#constructor - local.set $0 - local.get $0 + local.tee $0 + call $~lib/rt/purerc/__retain + local.set $1 + local.get $1 i32.const 0 i32.const 1 call $~lib/typedarray/Uint8Array#__set - local.get $0 + local.get $1 i32.const 1 i32.const 2 call $~lib/typedarray/Uint8Array#__set - local.get $0 + local.get $1 i32.const 2 i32.const 3 call $~lib/typedarray/Uint8Array#__set - local.get $0 + local.get $1 i32.const 59 call $~lib/typedarray/Uint8Array#findIndex - local.set $1 - local.get $1 + local.set $2 + local.get $2 i32.const 1 i32.eq i32.eqz if - i32.const 736 + i32.const 944 i32.const 24 i32.const 365 i32.const 2 call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 i32.const 60 call $~lib/typedarray/Uint8Array#findIndex - local.set $2 - local.get $2 + local.set $3 + local.get $3 i32.const -1 i32.eq i32.eqz if - i32.const 784 + i32.const 992 i32.const 24 i32.const 368 i32.const 2 call $~lib/builtins/abort unreachable end + local.get $0 + call $~lib/rt/purerc/__release + local.get $1 + call $~lib/rt/purerc/__release ) - (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Uint8ClampedArray,u8>~anonymous|0 (; 232 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Uint8ClampedArray,u8>~anonymous|0 (; 238 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + local.get $2 + call $~lib/rt/purerc/__retain + drop local.get $0 i32.const 255 i32.and i32.const 2 i32.eq + local.set $3 + local.get $2 + call $~lib/rt/purerc/__release + local.get $3 ) - (func $~lib/typedarray/Uint8ClampedArray#findIndex (; 233 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Uint8ClampedArray#findIndex (; 239 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -8752,6 +11266,7 @@ (local $6 i32) block $~lib/typedarray/FIND_INDEX<~lib/typedarray/Uint8ClampedArray,u8>|inlined.0 (result i32) local.get $0 + call $~lib/rt/purerc/__retain local.set $3 local.get $1 local.set $2 @@ -8800,69 +11315,92 @@ unreachable end i32.const -1 + local.set $6 + local.get $3 + call $~lib/rt/purerc/__release + local.get $6 end ) - (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Uint8ClampedArray,u8>~anonymous|1 (; 234 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Uint8ClampedArray,u8>~anonymous|1 (; 240 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + local.get $2 + call $~lib/rt/purerc/__retain + drop local.get $0 i32.const 255 i32.and i32.const 4 i32.eq + local.set $3 + local.get $2 + call $~lib/rt/purerc/__release + local.get $3 ) - (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Uint8ClampedArray,u8> (; 235 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Uint8ClampedArray,u8> (; 241 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) + (local $3 i32) i32.const 0 i32.const 3 call $~lib/typedarray/Uint8ClampedArray#constructor - local.set $0 - local.get $0 + local.tee $0 + call $~lib/rt/purerc/__retain + local.set $1 + local.get $1 i32.const 0 i32.const 1 call $~lib/typedarray/Uint8ClampedArray#__set - local.get $0 + local.get $1 i32.const 1 i32.const 2 call $~lib/typedarray/Uint8ClampedArray#__set - local.get $0 + local.get $1 i32.const 2 i32.const 3 call $~lib/typedarray/Uint8ClampedArray#__set - local.get $0 + local.get $1 i32.const 61 call $~lib/typedarray/Uint8ClampedArray#findIndex - local.set $1 - local.get $1 + local.set $2 + local.get $2 i32.const 1 i32.eq i32.eqz if - i32.const 736 + i32.const 944 i32.const 24 i32.const 365 i32.const 2 call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 i32.const 62 call $~lib/typedarray/Uint8ClampedArray#findIndex - local.set $2 - local.get $2 + local.set $3 + local.get $3 i32.const -1 i32.eq i32.eqz if - i32.const 784 + i32.const 992 i32.const 24 i32.const 368 i32.const 2 call $~lib/builtins/abort unreachable end + local.get $0 + call $~lib/rt/purerc/__release + local.get $1 + call $~lib/rt/purerc/__release ) - (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Int16Array,i16>~anonymous|0 (; 236 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Int16Array,i16>~anonymous|0 (; 242 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + local.get $2 + call $~lib/rt/purerc/__retain + drop local.get $0 i32.const 16 i32.shl @@ -8870,8 +11408,12 @@ i32.shr_s i32.const 2 i32.eq + local.set $3 + local.get $2 + call $~lib/rt/purerc/__release + local.get $3 ) - (func $~lib/typedarray/Int16Array#findIndex (; 237 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Int16Array#findIndex (; 243 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -8879,6 +11421,7 @@ (local $6 i32) block $~lib/typedarray/FIND_INDEX<~lib/typedarray/Int16Array,i16>|inlined.0 (result i32) local.get $0 + call $~lib/rt/purerc/__retain local.set $3 local.get $1 local.set $2 @@ -8927,9 +11470,17 @@ unreachable end i32.const -1 + local.set $6 + local.get $3 + call $~lib/rt/purerc/__release + local.get $6 end ) - (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Int16Array,i16>~anonymous|1 (; 238 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Int16Array,i16>~anonymous|1 (; 244 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + local.get $2 + call $~lib/rt/purerc/__retain + drop local.get $0 i32.const 16 i32.shl @@ -8937,68 +11488,87 @@ i32.shr_s i32.const 4 i32.eq + local.set $3 + local.get $2 + call $~lib/rt/purerc/__release + local.get $3 ) - (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Int16Array,i16> (; 239 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Int16Array,i16> (; 245 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) + (local $3 i32) i32.const 0 i32.const 3 call $~lib/typedarray/Int16Array#constructor - local.set $0 - local.get $0 + local.tee $0 + call $~lib/rt/purerc/__retain + local.set $1 + local.get $1 i32.const 0 i32.const 1 call $~lib/typedarray/Int16Array#__set - local.get $0 + local.get $1 i32.const 1 i32.const 2 call $~lib/typedarray/Int16Array#__set - local.get $0 + local.get $1 i32.const 2 i32.const 3 call $~lib/typedarray/Int16Array#__set - local.get $0 + local.get $1 i32.const 63 call $~lib/typedarray/Int16Array#findIndex - local.set $1 - local.get $1 + local.set $2 + local.get $2 i32.const 1 i32.eq i32.eqz if - i32.const 736 + i32.const 944 i32.const 24 i32.const 365 i32.const 2 call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 i32.const 64 call $~lib/typedarray/Int16Array#findIndex - local.set $2 - local.get $2 + local.set $3 + local.get $3 i32.const -1 i32.eq i32.eqz if - i32.const 784 + i32.const 992 i32.const 24 i32.const 368 i32.const 2 call $~lib/builtins/abort unreachable end + local.get $0 + call $~lib/rt/purerc/__release + local.get $1 + call $~lib/rt/purerc/__release ) - (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Uint16Array,u16>~anonymous|0 (; 240 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Uint16Array,u16>~anonymous|0 (; 246 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + local.get $2 + call $~lib/rt/purerc/__retain + drop local.get $0 i32.const 65535 i32.and i32.const 2 i32.eq + local.set $3 + local.get $2 + call $~lib/rt/purerc/__release + local.get $3 ) - (func $~lib/typedarray/Uint16Array#findIndex (; 241 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Uint16Array#findIndex (; 247 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -9006,6 +11576,7 @@ (local $6 i32) block $~lib/typedarray/FIND_INDEX<~lib/typedarray/Uint16Array,u16>|inlined.0 (result i32) local.get $0 + call $~lib/rt/purerc/__retain local.set $3 local.get $1 local.set $2 @@ -9054,74 +11625,101 @@ unreachable end i32.const -1 + local.set $6 + local.get $3 + call $~lib/rt/purerc/__release + local.get $6 end ) - (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Uint16Array,u16>~anonymous|1 (; 242 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Uint16Array,u16>~anonymous|1 (; 248 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + local.get $2 + call $~lib/rt/purerc/__retain + drop local.get $0 i32.const 65535 i32.and i32.const 4 i32.eq + local.set $3 + local.get $2 + call $~lib/rt/purerc/__release + local.get $3 ) - (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Uint16Array,u16> (; 243 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Uint16Array,u16> (; 249 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) + (local $3 i32) i32.const 0 i32.const 3 call $~lib/typedarray/Uint16Array#constructor - local.set $0 - local.get $0 + local.tee $0 + call $~lib/rt/purerc/__retain + local.set $1 + local.get $1 i32.const 0 i32.const 1 call $~lib/typedarray/Uint16Array#__set - local.get $0 + local.get $1 i32.const 1 i32.const 2 call $~lib/typedarray/Uint16Array#__set - local.get $0 + local.get $1 i32.const 2 i32.const 3 call $~lib/typedarray/Uint16Array#__set - local.get $0 + local.get $1 i32.const 65 call $~lib/typedarray/Uint16Array#findIndex - local.set $1 - local.get $1 + local.set $2 + local.get $2 i32.const 1 i32.eq i32.eqz if - i32.const 736 + i32.const 944 i32.const 24 i32.const 365 i32.const 2 call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 i32.const 66 call $~lib/typedarray/Uint16Array#findIndex - local.set $2 - local.get $2 + local.set $3 + local.get $3 i32.const -1 i32.eq i32.eqz if - i32.const 784 + i32.const 992 i32.const 24 i32.const 368 i32.const 2 call $~lib/builtins/abort unreachable end + local.get $0 + call $~lib/rt/purerc/__release + local.get $1 + call $~lib/rt/purerc/__release ) - (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Int32Array,i32>~anonymous|0 (; 244 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Int32Array,i32>~anonymous|0 (; 250 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + local.get $2 + call $~lib/rt/purerc/__retain + drop local.get $0 i32.const 2 i32.eq + local.set $3 + local.get $2 + call $~lib/rt/purerc/__release + local.get $3 ) - (func $~lib/typedarray/Int32Array#findIndex (; 245 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Int32Array#findIndex (; 251 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -9129,6 +11727,7 @@ (local $6 i32) block $~lib/typedarray/FIND_INDEX<~lib/typedarray/Int32Array,i32>|inlined.0 (result i32) local.get $0 + call $~lib/rt/purerc/__retain local.set $3 local.get $1 local.set $2 @@ -9177,72 +11776,99 @@ unreachable end i32.const -1 + local.set $6 + local.get $3 + call $~lib/rt/purerc/__release + local.get $6 end ) - (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Int32Array,i32>~anonymous|1 (; 246 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Int32Array,i32>~anonymous|1 (; 252 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + local.get $2 + call $~lib/rt/purerc/__retain + drop local.get $0 i32.const 4 i32.eq + local.set $3 + local.get $2 + call $~lib/rt/purerc/__release + local.get $3 ) - (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Int32Array,i32> (; 247 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Int32Array,i32> (; 253 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) + (local $3 i32) i32.const 0 i32.const 3 call $~lib/typedarray/Int32Array#constructor - local.set $0 - local.get $0 + local.tee $0 + call $~lib/rt/purerc/__retain + local.set $1 + local.get $1 i32.const 0 i32.const 1 call $~lib/typedarray/Int32Array#__set - local.get $0 + local.get $1 i32.const 1 i32.const 2 call $~lib/typedarray/Int32Array#__set - local.get $0 + local.get $1 i32.const 2 i32.const 3 call $~lib/typedarray/Int32Array#__set - local.get $0 + local.get $1 i32.const 67 call $~lib/typedarray/Int32Array#findIndex - local.set $1 - local.get $1 + local.set $2 + local.get $2 i32.const 1 i32.eq i32.eqz if - i32.const 736 + i32.const 944 i32.const 24 i32.const 365 i32.const 2 call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 i32.const 68 call $~lib/typedarray/Int32Array#findIndex - local.set $2 - local.get $2 + local.set $3 + local.get $3 i32.const -1 i32.eq i32.eqz if - i32.const 784 + i32.const 992 i32.const 24 i32.const 368 i32.const 2 call $~lib/builtins/abort unreachable end + local.get $0 + call $~lib/rt/purerc/__release + local.get $1 + call $~lib/rt/purerc/__release ) - (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Uint32Array,u32>~anonymous|0 (; 248 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Uint32Array,u32>~anonymous|0 (; 254 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + local.get $2 + call $~lib/rt/purerc/__retain + drop local.get $0 i32.const 2 i32.eq + local.set $3 + local.get $2 + call $~lib/rt/purerc/__release + local.get $3 ) - (func $~lib/typedarray/Uint32Array#findIndex (; 249 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Uint32Array#findIndex (; 255 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -9250,6 +11876,7 @@ (local $6 i32) block $~lib/typedarray/FIND_INDEX<~lib/typedarray/Uint32Array,u32>|inlined.0 (result i32) local.get $0 + call $~lib/rt/purerc/__retain local.set $3 local.get $1 local.set $2 @@ -9298,72 +11925,99 @@ unreachable end i32.const -1 + local.set $6 + local.get $3 + call $~lib/rt/purerc/__release + local.get $6 end ) - (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Uint32Array,u32>~anonymous|1 (; 250 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Uint32Array,u32>~anonymous|1 (; 256 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + local.get $2 + call $~lib/rt/purerc/__retain + drop local.get $0 i32.const 4 i32.eq + local.set $3 + local.get $2 + call $~lib/rt/purerc/__release + local.get $3 ) - (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Uint32Array,u32> (; 251 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Uint32Array,u32> (; 257 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) + (local $3 i32) i32.const 0 i32.const 3 call $~lib/typedarray/Uint32Array#constructor - local.set $0 - local.get $0 + local.tee $0 + call $~lib/rt/purerc/__retain + local.set $1 + local.get $1 i32.const 0 i32.const 1 call $~lib/typedarray/Uint32Array#__set - local.get $0 + local.get $1 i32.const 1 i32.const 2 call $~lib/typedarray/Uint32Array#__set - local.get $0 + local.get $1 i32.const 2 i32.const 3 call $~lib/typedarray/Uint32Array#__set - local.get $0 + local.get $1 i32.const 69 call $~lib/typedarray/Uint32Array#findIndex - local.set $1 - local.get $1 + local.set $2 + local.get $2 i32.const 1 i32.eq i32.eqz if - i32.const 736 + i32.const 944 i32.const 24 i32.const 365 i32.const 2 call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 i32.const 70 call $~lib/typedarray/Uint32Array#findIndex - local.set $2 - local.get $2 + local.set $3 + local.get $3 i32.const -1 i32.eq i32.eqz if - i32.const 784 + i32.const 992 i32.const 24 i32.const 368 i32.const 2 call $~lib/builtins/abort unreachable end + local.get $0 + call $~lib/rt/purerc/__release + local.get $1 + call $~lib/rt/purerc/__release ) - (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Int64Array,i64>~anonymous|0 (; 252 ;) (type $FUNCSIG$ijii) (param $0 i64) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Int64Array,i64>~anonymous|0 (; 258 ;) (type $FUNCSIG$ijii) (param $0 i64) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + local.get $2 + call $~lib/rt/purerc/__retain + drop local.get $0 i64.const 2 i64.eq + local.set $3 + local.get $2 + call $~lib/rt/purerc/__release + local.get $3 ) - (func $~lib/typedarray/Int64Array#findIndex (; 253 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Int64Array#findIndex (; 259 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -9371,6 +12025,7 @@ (local $6 i32) block $~lib/typedarray/FIND_INDEX<~lib/typedarray/Int64Array,i64>|inlined.0 (result i32) local.get $0 + call $~lib/rt/purerc/__retain local.set $3 local.get $1 local.set $2 @@ -9419,72 +12074,99 @@ unreachable end i32.const -1 + local.set $6 + local.get $3 + call $~lib/rt/purerc/__release + local.get $6 end ) - (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Int64Array,i64>~anonymous|1 (; 254 ;) (type $FUNCSIG$ijii) (param $0 i64) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Int64Array,i64>~anonymous|1 (; 260 ;) (type $FUNCSIG$ijii) (param $0 i64) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + local.get $2 + call $~lib/rt/purerc/__retain + drop local.get $0 i64.const 4 i64.eq + local.set $3 + local.get $2 + call $~lib/rt/purerc/__release + local.get $3 ) - (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Int64Array,i64> (; 255 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Int64Array,i64> (; 261 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) + (local $3 i32) i32.const 0 i32.const 3 call $~lib/typedarray/Int64Array#constructor - local.set $0 - local.get $0 + local.tee $0 + call $~lib/rt/purerc/__retain + local.set $1 + local.get $1 i32.const 0 i64.const 1 call $~lib/typedarray/Int64Array#__set - local.get $0 + local.get $1 i32.const 1 i64.const 2 call $~lib/typedarray/Int64Array#__set - local.get $0 + local.get $1 i32.const 2 i64.const 3 call $~lib/typedarray/Int64Array#__set - local.get $0 + local.get $1 i32.const 71 call $~lib/typedarray/Int64Array#findIndex - local.set $1 - local.get $1 + local.set $2 + local.get $2 i32.const 1 i32.eq i32.eqz if - i32.const 736 + i32.const 944 i32.const 24 i32.const 365 i32.const 2 call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 i32.const 72 call $~lib/typedarray/Int64Array#findIndex - local.set $2 - local.get $2 + local.set $3 + local.get $3 i32.const -1 i32.eq i32.eqz if - i32.const 784 + i32.const 992 i32.const 24 i32.const 368 i32.const 2 call $~lib/builtins/abort unreachable end + local.get $0 + call $~lib/rt/purerc/__release + local.get $1 + call $~lib/rt/purerc/__release ) - (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Uint64Array,u64>~anonymous|0 (; 256 ;) (type $FUNCSIG$ijii) (param $0 i64) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Uint64Array,u64>~anonymous|0 (; 262 ;) (type $FUNCSIG$ijii) (param $0 i64) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + local.get $2 + call $~lib/rt/purerc/__retain + drop local.get $0 i64.const 2 i64.eq + local.set $3 + local.get $2 + call $~lib/rt/purerc/__release + local.get $3 ) - (func $~lib/typedarray/Uint64Array#findIndex (; 257 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Uint64Array#findIndex (; 263 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -9492,6 +12174,7 @@ (local $6 i32) block $~lib/typedarray/FIND_INDEX<~lib/typedarray/Uint64Array,u64>|inlined.0 (result i32) local.get $0 + call $~lib/rt/purerc/__retain local.set $3 local.get $1 local.set $2 @@ -9540,72 +12223,99 @@ unreachable end i32.const -1 + local.set $6 + local.get $3 + call $~lib/rt/purerc/__release + local.get $6 end ) - (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Uint64Array,u64>~anonymous|1 (; 258 ;) (type $FUNCSIG$ijii) (param $0 i64) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Uint64Array,u64>~anonymous|1 (; 264 ;) (type $FUNCSIG$ijii) (param $0 i64) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + local.get $2 + call $~lib/rt/purerc/__retain + drop local.get $0 i64.const 4 i64.eq + local.set $3 + local.get $2 + call $~lib/rt/purerc/__release + local.get $3 ) - (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Uint64Array,u64> (; 259 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Uint64Array,u64> (; 265 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) + (local $3 i32) i32.const 0 i32.const 3 call $~lib/typedarray/Uint64Array#constructor - local.set $0 - local.get $0 + local.tee $0 + call $~lib/rt/purerc/__retain + local.set $1 + local.get $1 i32.const 0 i64.const 1 call $~lib/typedarray/Uint64Array#__set - local.get $0 + local.get $1 i32.const 1 i64.const 2 call $~lib/typedarray/Uint64Array#__set - local.get $0 + local.get $1 i32.const 2 i64.const 3 call $~lib/typedarray/Uint64Array#__set - local.get $0 + local.get $1 i32.const 73 call $~lib/typedarray/Uint64Array#findIndex - local.set $1 - local.get $1 + local.set $2 + local.get $2 i32.const 1 i32.eq i32.eqz if - i32.const 736 + i32.const 944 i32.const 24 i32.const 365 i32.const 2 call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 i32.const 74 call $~lib/typedarray/Uint64Array#findIndex - local.set $2 - local.get $2 + local.set $3 + local.get $3 i32.const -1 i32.eq i32.eqz if - i32.const 784 + i32.const 992 i32.const 24 i32.const 368 i32.const 2 call $~lib/builtins/abort unreachable end + local.get $0 + call $~lib/rt/purerc/__release + local.get $1 + call $~lib/rt/purerc/__release ) - (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Float32Array,f32>~anonymous|0 (; 260 ;) (type $FUNCSIG$ifii) (param $0 f32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Float32Array,f32>~anonymous|0 (; 266 ;) (type $FUNCSIG$ifii) (param $0 f32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + local.get $2 + call $~lib/rt/purerc/__retain + drop local.get $0 f32.const 2 f32.eq + local.set $3 + local.get $2 + call $~lib/rt/purerc/__release + local.get $3 ) - (func $~lib/typedarray/Float32Array#findIndex (; 261 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Float32Array#findIndex (; 267 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -9613,6 +12323,7 @@ (local $6 i32) block $~lib/typedarray/FIND_INDEX<~lib/typedarray/Float32Array,f32>|inlined.0 (result i32) local.get $0 + call $~lib/rt/purerc/__retain local.set $3 local.get $1 local.set $2 @@ -9661,72 +12372,99 @@ unreachable end i32.const -1 + local.set $6 + local.get $3 + call $~lib/rt/purerc/__release + local.get $6 end ) - (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Float32Array,f32>~anonymous|1 (; 262 ;) (type $FUNCSIG$ifii) (param $0 f32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Float32Array,f32>~anonymous|1 (; 268 ;) (type $FUNCSIG$ifii) (param $0 f32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + local.get $2 + call $~lib/rt/purerc/__retain + drop local.get $0 f32.const 4 f32.eq + local.set $3 + local.get $2 + call $~lib/rt/purerc/__release + local.get $3 ) - (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Float32Array,f32> (; 263 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Float32Array,f32> (; 269 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) + (local $3 i32) i32.const 0 i32.const 3 call $~lib/typedarray/Float32Array#constructor - local.set $0 - local.get $0 + local.tee $0 + call $~lib/rt/purerc/__retain + local.set $1 + local.get $1 i32.const 0 f32.const 1 call $~lib/typedarray/Float32Array#__set - local.get $0 + local.get $1 i32.const 1 f32.const 2 call $~lib/typedarray/Float32Array#__set - local.get $0 + local.get $1 i32.const 2 f32.const 3 call $~lib/typedarray/Float32Array#__set - local.get $0 + local.get $1 i32.const 75 call $~lib/typedarray/Float32Array#findIndex - local.set $1 - local.get $1 + local.set $2 + local.get $2 i32.const 1 i32.eq i32.eqz if - i32.const 736 + i32.const 944 i32.const 24 i32.const 365 i32.const 2 call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 i32.const 76 call $~lib/typedarray/Float32Array#findIndex - local.set $2 - local.get $2 + local.set $3 + local.get $3 i32.const -1 i32.eq i32.eqz if - i32.const 784 + i32.const 992 i32.const 24 i32.const 368 i32.const 2 call $~lib/builtins/abort unreachable end + local.get $0 + call $~lib/rt/purerc/__release + local.get $1 + call $~lib/rt/purerc/__release ) - (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Float64Array,f64>~anonymous|0 (; 264 ;) (type $FUNCSIG$idii) (param $0 f64) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Float64Array,f64>~anonymous|0 (; 270 ;) (type $FUNCSIG$idii) (param $0 f64) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + local.get $2 + call $~lib/rt/purerc/__retain + drop local.get $0 f64.const 2 f64.eq + local.set $3 + local.get $2 + call $~lib/rt/purerc/__release + local.get $3 ) - (func $~lib/typedarray/Float64Array#findIndex (; 265 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Float64Array#findIndex (; 271 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -9734,6 +12472,7 @@ (local $6 i32) block $~lib/typedarray/FIND_INDEX<~lib/typedarray/Float64Array,f64>|inlined.0 (result i32) local.get $0 + call $~lib/rt/purerc/__retain local.set $3 local.get $1 local.set $2 @@ -9782,67 +12521,90 @@ unreachable end i32.const -1 + local.set $6 + local.get $3 + call $~lib/rt/purerc/__release + local.get $6 end ) - (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Float64Array,f64>~anonymous|1 (; 266 ;) (type $FUNCSIG$idii) (param $0 f64) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Float64Array,f64>~anonymous|1 (; 272 ;) (type $FUNCSIG$idii) (param $0 f64) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + local.get $2 + call $~lib/rt/purerc/__retain + drop local.get $0 f64.const 4 f64.eq + local.set $3 + local.get $2 + call $~lib/rt/purerc/__release + local.get $3 ) - (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Float64Array,f64> (; 267 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Float64Array,f64> (; 273 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) + (local $3 i32) i32.const 0 i32.const 3 call $~lib/typedarray/Float64Array#constructor - local.set $0 - local.get $0 + local.tee $0 + call $~lib/rt/purerc/__retain + local.set $1 + local.get $1 i32.const 0 f64.const 1 call $~lib/typedarray/Float64Array#__set - local.get $0 + local.get $1 i32.const 1 f64.const 2 call $~lib/typedarray/Float64Array#__set - local.get $0 + local.get $1 i32.const 2 f64.const 3 call $~lib/typedarray/Float64Array#__set - local.get $0 + local.get $1 i32.const 77 call $~lib/typedarray/Float64Array#findIndex - local.set $1 - local.get $1 + local.set $2 + local.get $2 i32.const 1 i32.eq i32.eqz if - i32.const 736 + i32.const 944 i32.const 24 i32.const 365 i32.const 2 call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 i32.const 78 call $~lib/typedarray/Float64Array#findIndex - local.set $2 - local.get $2 + local.set $3 + local.get $3 i32.const -1 i32.eq i32.eqz if - i32.const 784 + i32.const 992 i32.const 24 i32.const 368 i32.const 2 call $~lib/builtins/abort unreachable end + local.get $0 + call $~lib/rt/purerc/__release + local.get $1 + call $~lib/rt/purerc/__release ) - (func $std/typedarray/testArrayEvery<~lib/typedarray/Int8Array,i8>~anonymous|0 (; 268 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArrayEvery<~lib/typedarray/Int8Array,i8>~anonymous|0 (; 274 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + local.get $2 + call $~lib/rt/purerc/__retain + drop local.get $0 i32.const 24 i32.shl @@ -9852,8 +12614,12 @@ i32.rem_s i32.const 0 i32.eq + local.set $3 + local.get $2 + call $~lib/rt/purerc/__release + local.get $3 ) - (func $~lib/typedarray/Int8Array#every (; 269 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Int8Array#every (; 275 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -9861,6 +12627,7 @@ (local $6 i32) block $~lib/typedarray/EVERY<~lib/typedarray/Int8Array,i8>|inlined.0 (result i32) local.get $0 + call $~lib/rt/purerc/__retain local.set $3 local.get $1 local.set $2 @@ -9882,29 +12649,25 @@ i32.lt_s i32.eqz br_if $break|0 - block - block (result i32) - i32.const 3 - global.set $~lib/argc - local.get $4 - local.get $5 - i32.const 0 - i32.shl - i32.add - i32.load8_s - local.get $5 - local.get $3 - local.get $2 - call_indirect (type $FUNCSIG$iiii) - end - if - br $continue|0 - end + block (result i32) + i32.const 3 + global.set $~lib/argc + local.get $4 + local.get $5 i32.const 0 - br $~lib/typedarray/EVERY<~lib/typedarray/Int8Array,i8>|inlined.0 - unreachable + i32.shl + i32.add + i32.load8_s + local.get $5 + local.get $3 + local.get $2 + call_indirect (type $FUNCSIG$iiii) end - unreachable + if + br $continue|0 + end + i32.const 0 + br $~lib/typedarray/EVERY<~lib/typedarray/Int8Array,i8>|inlined.0 end local.get $5 i32.const 1 @@ -9916,9 +12679,17 @@ unreachable end i32.const 1 + local.set $6 + local.get $3 + call $~lib/rt/purerc/__release + local.get $6 end ) - (func $std/typedarray/testArrayEvery<~lib/typedarray/Int8Array,i8>~anonymous|1 (; 270 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArrayEvery<~lib/typedarray/Int8Array,i8>~anonymous|1 (; 276 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + local.get $2 + call $~lib/rt/purerc/__retain + drop local.get $0 i32.const 24 i32.shl @@ -9926,32 +12697,39 @@ i32.shr_s i32.const 2 i32.eq + local.set $3 + local.get $2 + call $~lib/rt/purerc/__release + local.get $3 ) - (func $std/typedarray/testArrayEvery<~lib/typedarray/Int8Array,i8> (; 271 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayEvery<~lib/typedarray/Int8Array,i8> (; 277 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) + (local $3 i32) i32.const 0 i32.const 3 call $~lib/typedarray/Int8Array#constructor - local.set $0 - local.get $0 + local.tee $0 + call $~lib/rt/purerc/__retain + local.set $1 + local.get $1 i32.const 0 i32.const 2 call $~lib/typedarray/Int8Array#__set - local.get $0 + local.get $1 i32.const 1 i32.const 4 call $~lib/typedarray/Int8Array#__set - local.get $0 + local.get $1 i32.const 2 i32.const 6 call $~lib/typedarray/Int8Array#__set - local.get $0 + local.get $1 i32.const 79 call $~lib/typedarray/Int8Array#every - local.set $1 - local.get $1 + local.set $2 + local.get $2 i32.const 0 i32.ne i32.eqz @@ -9963,11 +12741,11 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 i32.const 80 call $~lib/typedarray/Int8Array#every - local.set $2 - local.get $2 + local.set $3 + local.get $3 i32.const 0 i32.ne i32.eqz @@ -9980,8 +12758,16 @@ call $~lib/builtins/abort unreachable end + local.get $0 + call $~lib/rt/purerc/__release + local.get $1 + call $~lib/rt/purerc/__release ) - (func $std/typedarray/testArrayEvery<~lib/typedarray/Uint8Array,u8>~anonymous|0 (; 272 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArrayEvery<~lib/typedarray/Uint8Array,u8>~anonymous|0 (; 278 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + local.get $2 + call $~lib/rt/purerc/__retain + drop local.get $0 i32.const 255 i32.and @@ -9989,8 +12775,12 @@ i32.rem_u i32.const 0 i32.eq + local.set $3 + local.get $2 + call $~lib/rt/purerc/__release + local.get $3 ) - (func $~lib/typedarray/Uint8Array#every (; 273 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Uint8Array#every (; 279 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -9998,6 +12788,7 @@ (local $6 i32) block $~lib/typedarray/EVERY<~lib/typedarray/Uint8Array,u8>|inlined.0 (result i32) local.get $0 + call $~lib/rt/purerc/__retain local.set $3 local.get $1 local.set $2 @@ -10019,29 +12810,25 @@ i32.lt_s i32.eqz br_if $break|0 - block - block (result i32) - i32.const 3 - global.set $~lib/argc - local.get $4 - local.get $5 - i32.const 0 - i32.shl - i32.add - i32.load8_u - local.get $5 - local.get $3 - local.get $2 - call_indirect (type $FUNCSIG$iiii) - end - if - br $continue|0 - end + block (result i32) + i32.const 3 + global.set $~lib/argc + local.get $4 + local.get $5 i32.const 0 - br $~lib/typedarray/EVERY<~lib/typedarray/Uint8Array,u8>|inlined.0 - unreachable + i32.shl + i32.add + i32.load8_u + local.get $5 + local.get $3 + local.get $2 + call_indirect (type $FUNCSIG$iiii) end - unreachable + if + br $continue|0 + end + i32.const 0 + br $~lib/typedarray/EVERY<~lib/typedarray/Uint8Array,u8>|inlined.0 end local.get $5 i32.const 1 @@ -10053,40 +12840,55 @@ unreachable end i32.const 1 + local.set $6 + local.get $3 + call $~lib/rt/purerc/__release + local.get $6 end ) - (func $std/typedarray/testArrayEvery<~lib/typedarray/Uint8Array,u8>~anonymous|1 (; 274 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArrayEvery<~lib/typedarray/Uint8Array,u8>~anonymous|1 (; 280 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + local.get $2 + call $~lib/rt/purerc/__retain + drop local.get $0 i32.const 255 i32.and i32.const 2 i32.eq + local.set $3 + local.get $2 + call $~lib/rt/purerc/__release + local.get $3 ) - (func $std/typedarray/testArrayEvery<~lib/typedarray/Uint8Array,u8> (; 275 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayEvery<~lib/typedarray/Uint8Array,u8> (; 281 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) + (local $3 i32) i32.const 0 i32.const 3 call $~lib/typedarray/Uint8Array#constructor - local.set $0 - local.get $0 + local.tee $0 + call $~lib/rt/purerc/__retain + local.set $1 + local.get $1 i32.const 0 i32.const 2 call $~lib/typedarray/Uint8Array#__set - local.get $0 + local.get $1 i32.const 1 i32.const 4 call $~lib/typedarray/Uint8Array#__set - local.get $0 + local.get $1 i32.const 2 i32.const 6 call $~lib/typedarray/Uint8Array#__set - local.get $0 + local.get $1 i32.const 81 call $~lib/typedarray/Uint8Array#every - local.set $1 - local.get $1 + local.set $2 + local.get $2 i32.const 0 i32.ne i32.eqz @@ -10098,11 +12900,11 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 i32.const 82 call $~lib/typedarray/Uint8Array#every - local.set $2 - local.get $2 + local.set $3 + local.get $3 i32.const 0 i32.ne i32.eqz @@ -10115,8 +12917,16 @@ call $~lib/builtins/abort unreachable end + local.get $0 + call $~lib/rt/purerc/__release + local.get $1 + call $~lib/rt/purerc/__release ) - (func $std/typedarray/testArrayEvery<~lib/typedarray/Uint8ClampedArray,u8>~anonymous|0 (; 276 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArrayEvery<~lib/typedarray/Uint8ClampedArray,u8>~anonymous|0 (; 282 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + local.get $2 + call $~lib/rt/purerc/__retain + drop local.get $0 i32.const 255 i32.and @@ -10124,8 +12934,12 @@ i32.rem_u i32.const 0 i32.eq + local.set $3 + local.get $2 + call $~lib/rt/purerc/__release + local.get $3 ) - (func $~lib/typedarray/Uint8ClampedArray#every (; 277 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Uint8ClampedArray#every (; 283 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -10133,6 +12947,7 @@ (local $6 i32) block $~lib/typedarray/EVERY<~lib/typedarray/Uint8ClampedArray,u8>|inlined.0 (result i32) local.get $0 + call $~lib/rt/purerc/__retain local.set $3 local.get $1 local.set $2 @@ -10154,29 +12969,25 @@ i32.lt_s i32.eqz br_if $break|0 - block - block (result i32) - i32.const 3 - global.set $~lib/argc - local.get $4 - local.get $5 - i32.const 0 - i32.shl - i32.add - i32.load8_u - local.get $5 - local.get $3 - local.get $2 - call_indirect (type $FUNCSIG$iiii) - end - if - br $continue|0 - end + block (result i32) + i32.const 3 + global.set $~lib/argc + local.get $4 + local.get $5 i32.const 0 - br $~lib/typedarray/EVERY<~lib/typedarray/Uint8ClampedArray,u8>|inlined.0 - unreachable + i32.shl + i32.add + i32.load8_u + local.get $5 + local.get $3 + local.get $2 + call_indirect (type $FUNCSIG$iiii) end - unreachable + if + br $continue|0 + end + i32.const 0 + br $~lib/typedarray/EVERY<~lib/typedarray/Uint8ClampedArray,u8>|inlined.0 end local.get $5 i32.const 1 @@ -10188,40 +12999,55 @@ unreachable end i32.const 1 + local.set $6 + local.get $3 + call $~lib/rt/purerc/__release + local.get $6 end ) - (func $std/typedarray/testArrayEvery<~lib/typedarray/Uint8ClampedArray,u8>~anonymous|1 (; 278 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArrayEvery<~lib/typedarray/Uint8ClampedArray,u8>~anonymous|1 (; 284 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + local.get $2 + call $~lib/rt/purerc/__retain + drop local.get $0 i32.const 255 i32.and i32.const 2 i32.eq + local.set $3 + local.get $2 + call $~lib/rt/purerc/__release + local.get $3 ) - (func $std/typedarray/testArrayEvery<~lib/typedarray/Uint8ClampedArray,u8> (; 279 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayEvery<~lib/typedarray/Uint8ClampedArray,u8> (; 285 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) + (local $3 i32) i32.const 0 i32.const 3 call $~lib/typedarray/Uint8ClampedArray#constructor - local.set $0 - local.get $0 + local.tee $0 + call $~lib/rt/purerc/__retain + local.set $1 + local.get $1 i32.const 0 i32.const 2 call $~lib/typedarray/Uint8ClampedArray#__set - local.get $0 + local.get $1 i32.const 1 i32.const 4 call $~lib/typedarray/Uint8ClampedArray#__set - local.get $0 + local.get $1 i32.const 2 i32.const 6 call $~lib/typedarray/Uint8ClampedArray#__set - local.get $0 + local.get $1 i32.const 83 call $~lib/typedarray/Uint8ClampedArray#every - local.set $1 - local.get $1 + local.set $2 + local.get $2 i32.const 0 i32.ne i32.eqz @@ -10233,11 +13059,11 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 i32.const 84 call $~lib/typedarray/Uint8ClampedArray#every - local.set $2 - local.get $2 + local.set $3 + local.get $3 i32.const 0 i32.ne i32.eqz @@ -10250,8 +13076,16 @@ call $~lib/builtins/abort unreachable end + local.get $0 + call $~lib/rt/purerc/__release + local.get $1 + call $~lib/rt/purerc/__release ) - (func $std/typedarray/testArrayEvery<~lib/typedarray/Int16Array,i16>~anonymous|0 (; 280 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArrayEvery<~lib/typedarray/Int16Array,i16>~anonymous|0 (; 286 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + local.get $2 + call $~lib/rt/purerc/__retain + drop local.get $0 i32.const 16 i32.shl @@ -10261,8 +13095,12 @@ i32.rem_s i32.const 0 i32.eq + local.set $3 + local.get $2 + call $~lib/rt/purerc/__release + local.get $3 ) - (func $~lib/typedarray/Int16Array#every (; 281 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Int16Array#every (; 287 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -10270,6 +13108,7 @@ (local $6 i32) block $~lib/typedarray/EVERY<~lib/typedarray/Int16Array,i16>|inlined.0 (result i32) local.get $0 + call $~lib/rt/purerc/__retain local.set $3 local.get $1 local.set $2 @@ -10291,29 +13130,25 @@ i32.lt_s i32.eqz br_if $break|0 - block - block (result i32) - i32.const 3 - global.set $~lib/argc - local.get $4 - local.get $5 - i32.const 1 - i32.shl - i32.add - i32.load16_s - local.get $5 - local.get $3 - local.get $2 - call_indirect (type $FUNCSIG$iiii) - end - if - br $continue|0 - end - i32.const 0 - br $~lib/typedarray/EVERY<~lib/typedarray/Int16Array,i16>|inlined.0 - unreachable + block (result i32) + i32.const 3 + global.set $~lib/argc + local.get $4 + local.get $5 + i32.const 1 + i32.shl + i32.add + i32.load16_s + local.get $5 + local.get $3 + local.get $2 + call_indirect (type $FUNCSIG$iiii) end - unreachable + if + br $continue|0 + end + i32.const 0 + br $~lib/typedarray/EVERY<~lib/typedarray/Int16Array,i16>|inlined.0 end local.get $5 i32.const 1 @@ -10325,9 +13160,17 @@ unreachable end i32.const 1 + local.set $6 + local.get $3 + call $~lib/rt/purerc/__release + local.get $6 end ) - (func $std/typedarray/testArrayEvery<~lib/typedarray/Int16Array,i16>~anonymous|1 (; 282 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArrayEvery<~lib/typedarray/Int16Array,i16>~anonymous|1 (; 288 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + local.get $2 + call $~lib/rt/purerc/__retain + drop local.get $0 i32.const 16 i32.shl @@ -10335,32 +13178,39 @@ i32.shr_s i32.const 2 i32.eq + local.set $3 + local.get $2 + call $~lib/rt/purerc/__release + local.get $3 ) - (func $std/typedarray/testArrayEvery<~lib/typedarray/Int16Array,i16> (; 283 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayEvery<~lib/typedarray/Int16Array,i16> (; 289 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) + (local $3 i32) i32.const 0 i32.const 3 call $~lib/typedarray/Int16Array#constructor - local.set $0 - local.get $0 + local.tee $0 + call $~lib/rt/purerc/__retain + local.set $1 + local.get $1 i32.const 0 i32.const 2 call $~lib/typedarray/Int16Array#__set - local.get $0 + local.get $1 i32.const 1 i32.const 4 call $~lib/typedarray/Int16Array#__set - local.get $0 + local.get $1 i32.const 2 i32.const 6 call $~lib/typedarray/Int16Array#__set - local.get $0 + local.get $1 i32.const 85 call $~lib/typedarray/Int16Array#every - local.set $1 - local.get $1 + local.set $2 + local.get $2 i32.const 0 i32.ne i32.eqz @@ -10372,11 +13222,11 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 i32.const 86 call $~lib/typedarray/Int16Array#every - local.set $2 - local.get $2 + local.set $3 + local.get $3 i32.const 0 i32.ne i32.eqz @@ -10389,8 +13239,16 @@ call $~lib/builtins/abort unreachable end + local.get $0 + call $~lib/rt/purerc/__release + local.get $1 + call $~lib/rt/purerc/__release ) - (func $std/typedarray/testArrayEvery<~lib/typedarray/Uint16Array,u16>~anonymous|0 (; 284 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArrayEvery<~lib/typedarray/Uint16Array,u16>~anonymous|0 (; 290 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + local.get $2 + call $~lib/rt/purerc/__retain + drop local.get $0 i32.const 65535 i32.and @@ -10398,8 +13256,12 @@ i32.rem_u i32.const 0 i32.eq + local.set $3 + local.get $2 + call $~lib/rt/purerc/__release + local.get $3 ) - (func $~lib/typedarray/Uint16Array#every (; 285 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Uint16Array#every (; 291 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -10407,6 +13269,7 @@ (local $6 i32) block $~lib/typedarray/EVERY<~lib/typedarray/Uint16Array,u16>|inlined.0 (result i32) local.get $0 + call $~lib/rt/purerc/__retain local.set $3 local.get $1 local.set $2 @@ -10428,29 +13291,25 @@ i32.lt_s i32.eqz br_if $break|0 - block - block (result i32) - i32.const 3 - global.set $~lib/argc - local.get $4 - local.get $5 - i32.const 1 - i32.shl - i32.add - i32.load16_u - local.get $5 - local.get $3 - local.get $2 - call_indirect (type $FUNCSIG$iiii) - end - if - br $continue|0 - end - i32.const 0 - br $~lib/typedarray/EVERY<~lib/typedarray/Uint16Array,u16>|inlined.0 - unreachable + block (result i32) + i32.const 3 + global.set $~lib/argc + local.get $4 + local.get $5 + i32.const 1 + i32.shl + i32.add + i32.load16_u + local.get $5 + local.get $3 + local.get $2 + call_indirect (type $FUNCSIG$iiii) end - unreachable + if + br $continue|0 + end + i32.const 0 + br $~lib/typedarray/EVERY<~lib/typedarray/Uint16Array,u16>|inlined.0 end local.get $5 i32.const 1 @@ -10462,40 +13321,55 @@ unreachable end i32.const 1 + local.set $6 + local.get $3 + call $~lib/rt/purerc/__release + local.get $6 end ) - (func $std/typedarray/testArrayEvery<~lib/typedarray/Uint16Array,u16>~anonymous|1 (; 286 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArrayEvery<~lib/typedarray/Uint16Array,u16>~anonymous|1 (; 292 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + local.get $2 + call $~lib/rt/purerc/__retain + drop local.get $0 i32.const 65535 i32.and i32.const 2 i32.eq + local.set $3 + local.get $2 + call $~lib/rt/purerc/__release + local.get $3 ) - (func $std/typedarray/testArrayEvery<~lib/typedarray/Uint16Array,u16> (; 287 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayEvery<~lib/typedarray/Uint16Array,u16> (; 293 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) + (local $3 i32) i32.const 0 i32.const 3 call $~lib/typedarray/Uint16Array#constructor - local.set $0 - local.get $0 + local.tee $0 + call $~lib/rt/purerc/__retain + local.set $1 + local.get $1 i32.const 0 i32.const 2 call $~lib/typedarray/Uint16Array#__set - local.get $0 + local.get $1 i32.const 1 i32.const 4 call $~lib/typedarray/Uint16Array#__set - local.get $0 + local.get $1 i32.const 2 i32.const 6 call $~lib/typedarray/Uint16Array#__set - local.get $0 + local.get $1 i32.const 87 call $~lib/typedarray/Uint16Array#every - local.set $1 - local.get $1 + local.set $2 + local.get $2 i32.const 0 i32.ne i32.eqz @@ -10507,11 +13381,11 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 i32.const 88 call $~lib/typedarray/Uint16Array#every - local.set $2 - local.get $2 + local.set $3 + local.get $3 i32.const 0 i32.ne i32.eqz @@ -10524,15 +13398,27 @@ call $~lib/builtins/abort unreachable end + local.get $0 + call $~lib/rt/purerc/__release + local.get $1 + call $~lib/rt/purerc/__release ) - (func $std/typedarray/testArrayEvery<~lib/typedarray/Int32Array,i32>~anonymous|0 (; 288 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArrayEvery<~lib/typedarray/Int32Array,i32>~anonymous|0 (; 294 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + local.get $2 + call $~lib/rt/purerc/__retain + drop local.get $0 i32.const 2 i32.rem_s i32.const 0 i32.eq + local.set $3 + local.get $2 + call $~lib/rt/purerc/__release + local.get $3 ) - (func $~lib/typedarray/Int32Array#every (; 289 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Int32Array#every (; 295 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -10540,6 +13426,7 @@ (local $6 i32) block $~lib/typedarray/EVERY<~lib/typedarray/Int32Array,i32>|inlined.0 (result i32) local.get $0 + call $~lib/rt/purerc/__retain local.set $3 local.get $1 local.set $2 @@ -10561,29 +13448,25 @@ i32.lt_s i32.eqz br_if $break|0 - block - block (result i32) - i32.const 3 - global.set $~lib/argc - local.get $4 - local.get $5 - i32.const 2 - i32.shl - i32.add - i32.load - local.get $5 - local.get $3 - local.get $2 - call_indirect (type $FUNCSIG$iiii) - end - if - br $continue|0 - end - i32.const 0 - br $~lib/typedarray/EVERY<~lib/typedarray/Int32Array,i32>|inlined.0 - unreachable + block (result i32) + i32.const 3 + global.set $~lib/argc + local.get $4 + local.get $5 + i32.const 2 + i32.shl + i32.add + i32.load + local.get $5 + local.get $3 + local.get $2 + call_indirect (type $FUNCSIG$iiii) end - unreachable + if + br $continue|0 + end + i32.const 0 + br $~lib/typedarray/EVERY<~lib/typedarray/Int32Array,i32>|inlined.0 end local.get $5 i32.const 1 @@ -10595,38 +13478,53 @@ unreachable end i32.const 1 + local.set $6 + local.get $3 + call $~lib/rt/purerc/__release + local.get $6 end ) - (func $std/typedarray/testArrayEvery<~lib/typedarray/Int32Array,i32>~anonymous|1 (; 290 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArrayEvery<~lib/typedarray/Int32Array,i32>~anonymous|1 (; 296 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + local.get $2 + call $~lib/rt/purerc/__retain + drop local.get $0 i32.const 2 i32.eq + local.set $3 + local.get $2 + call $~lib/rt/purerc/__release + local.get $3 ) - (func $std/typedarray/testArrayEvery<~lib/typedarray/Int32Array,i32> (; 291 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayEvery<~lib/typedarray/Int32Array,i32> (; 297 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) + (local $3 i32) i32.const 0 i32.const 3 call $~lib/typedarray/Int32Array#constructor - local.set $0 - local.get $0 + local.tee $0 + call $~lib/rt/purerc/__retain + local.set $1 + local.get $1 i32.const 0 i32.const 2 call $~lib/typedarray/Int32Array#__set - local.get $0 + local.get $1 i32.const 1 i32.const 4 call $~lib/typedarray/Int32Array#__set - local.get $0 + local.get $1 i32.const 2 i32.const 6 call $~lib/typedarray/Int32Array#__set - local.get $0 + local.get $1 i32.const 89 call $~lib/typedarray/Int32Array#every - local.set $1 - local.get $1 + local.set $2 + local.get $2 i32.const 0 i32.ne i32.eqz @@ -10638,11 +13536,11 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 i32.const 90 call $~lib/typedarray/Int32Array#every - local.set $2 - local.get $2 + local.set $3 + local.get $3 i32.const 0 i32.ne i32.eqz @@ -10655,15 +13553,27 @@ call $~lib/builtins/abort unreachable end + local.get $0 + call $~lib/rt/purerc/__release + local.get $1 + call $~lib/rt/purerc/__release ) - (func $std/typedarray/testArrayEvery<~lib/typedarray/Uint32Array,u32>~anonymous|0 (; 292 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArrayEvery<~lib/typedarray/Uint32Array,u32>~anonymous|0 (; 298 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + local.get $2 + call $~lib/rt/purerc/__retain + drop local.get $0 i32.const 2 i32.rem_u i32.const 0 i32.eq + local.set $3 + local.get $2 + call $~lib/rt/purerc/__release + local.get $3 ) - (func $~lib/typedarray/Uint32Array#every (; 293 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Uint32Array#every (; 299 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -10671,6 +13581,7 @@ (local $6 i32) block $~lib/typedarray/EVERY<~lib/typedarray/Uint32Array,u32>|inlined.0 (result i32) local.get $0 + call $~lib/rt/purerc/__retain local.set $3 local.get $1 local.set $2 @@ -10692,29 +13603,25 @@ i32.lt_s i32.eqz br_if $break|0 - block - block (result i32) - i32.const 3 - global.set $~lib/argc - local.get $4 - local.get $5 - i32.const 2 - i32.shl - i32.add - i32.load - local.get $5 - local.get $3 - local.get $2 - call_indirect (type $FUNCSIG$iiii) - end - if - br $continue|0 - end - i32.const 0 - br $~lib/typedarray/EVERY<~lib/typedarray/Uint32Array,u32>|inlined.0 - unreachable + block (result i32) + i32.const 3 + global.set $~lib/argc + local.get $4 + local.get $5 + i32.const 2 + i32.shl + i32.add + i32.load + local.get $5 + local.get $3 + local.get $2 + call_indirect (type $FUNCSIG$iiii) end - unreachable + if + br $continue|0 + end + i32.const 0 + br $~lib/typedarray/EVERY<~lib/typedarray/Uint32Array,u32>|inlined.0 end local.get $5 i32.const 1 @@ -10726,38 +13633,53 @@ unreachable end i32.const 1 + local.set $6 + local.get $3 + call $~lib/rt/purerc/__release + local.get $6 end ) - (func $std/typedarray/testArrayEvery<~lib/typedarray/Uint32Array,u32>~anonymous|1 (; 294 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArrayEvery<~lib/typedarray/Uint32Array,u32>~anonymous|1 (; 300 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + local.get $2 + call $~lib/rt/purerc/__retain + drop local.get $0 i32.const 2 i32.eq + local.set $3 + local.get $2 + call $~lib/rt/purerc/__release + local.get $3 ) - (func $std/typedarray/testArrayEvery<~lib/typedarray/Uint32Array,u32> (; 295 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayEvery<~lib/typedarray/Uint32Array,u32> (; 301 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) + (local $3 i32) i32.const 0 i32.const 3 call $~lib/typedarray/Uint32Array#constructor - local.set $0 - local.get $0 + local.tee $0 + call $~lib/rt/purerc/__retain + local.set $1 + local.get $1 i32.const 0 i32.const 2 call $~lib/typedarray/Uint32Array#__set - local.get $0 + local.get $1 i32.const 1 i32.const 4 call $~lib/typedarray/Uint32Array#__set - local.get $0 + local.get $1 i32.const 2 i32.const 6 call $~lib/typedarray/Uint32Array#__set - local.get $0 + local.get $1 i32.const 91 call $~lib/typedarray/Uint32Array#every - local.set $1 - local.get $1 + local.set $2 + local.get $2 i32.const 0 i32.ne i32.eqz @@ -10769,11 +13691,11 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 i32.const 92 call $~lib/typedarray/Uint32Array#every - local.set $2 - local.get $2 + local.set $3 + local.get $3 i32.const 0 i32.ne i32.eqz @@ -10786,15 +13708,27 @@ call $~lib/builtins/abort unreachable end + local.get $0 + call $~lib/rt/purerc/__release + local.get $1 + call $~lib/rt/purerc/__release ) - (func $std/typedarray/testArrayEvery<~lib/typedarray/Int64Array,i64>~anonymous|0 (; 296 ;) (type $FUNCSIG$ijii) (param $0 i64) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArrayEvery<~lib/typedarray/Int64Array,i64>~anonymous|0 (; 302 ;) (type $FUNCSIG$ijii) (param $0 i64) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + local.get $2 + call $~lib/rt/purerc/__retain + drop local.get $0 i64.const 2 i64.rem_s i64.const 0 i64.eq + local.set $3 + local.get $2 + call $~lib/rt/purerc/__release + local.get $3 ) - (func $~lib/typedarray/Int64Array#every (; 297 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Int64Array#every (; 303 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -10802,6 +13736,7 @@ (local $6 i32) block $~lib/typedarray/EVERY<~lib/typedarray/Int64Array,i64>|inlined.0 (result i32) local.get $0 + call $~lib/rt/purerc/__retain local.set $3 local.get $1 local.set $2 @@ -10823,29 +13758,25 @@ i32.lt_s i32.eqz br_if $break|0 - block - block (result i32) - i32.const 3 - global.set $~lib/argc - local.get $4 - local.get $5 - i32.const 3 - i32.shl - i32.add - i64.load - local.get $5 - local.get $3 - local.get $2 - call_indirect (type $FUNCSIG$ijii) - end - if - br $continue|0 - end - i32.const 0 - br $~lib/typedarray/EVERY<~lib/typedarray/Int64Array,i64>|inlined.0 - unreachable + block (result i32) + i32.const 3 + global.set $~lib/argc + local.get $4 + local.get $5 + i32.const 3 + i32.shl + i32.add + i64.load + local.get $5 + local.get $3 + local.get $2 + call_indirect (type $FUNCSIG$ijii) end - unreachable + if + br $continue|0 + end + i32.const 0 + br $~lib/typedarray/EVERY<~lib/typedarray/Int64Array,i64>|inlined.0 end local.get $5 i32.const 1 @@ -10857,38 +13788,53 @@ unreachable end i32.const 1 + local.set $6 + local.get $3 + call $~lib/rt/purerc/__release + local.get $6 end ) - (func $std/typedarray/testArrayEvery<~lib/typedarray/Int64Array,i64>~anonymous|1 (; 298 ;) (type $FUNCSIG$ijii) (param $0 i64) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArrayEvery<~lib/typedarray/Int64Array,i64>~anonymous|1 (; 304 ;) (type $FUNCSIG$ijii) (param $0 i64) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + local.get $2 + call $~lib/rt/purerc/__retain + drop local.get $0 i64.const 2 i64.eq + local.set $3 + local.get $2 + call $~lib/rt/purerc/__release + local.get $3 ) - (func $std/typedarray/testArrayEvery<~lib/typedarray/Int64Array,i64> (; 299 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayEvery<~lib/typedarray/Int64Array,i64> (; 305 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) + (local $3 i32) i32.const 0 i32.const 3 call $~lib/typedarray/Int64Array#constructor - local.set $0 - local.get $0 + local.tee $0 + call $~lib/rt/purerc/__retain + local.set $1 + local.get $1 i32.const 0 i64.const 2 call $~lib/typedarray/Int64Array#__set - local.get $0 + local.get $1 i32.const 1 i64.const 4 call $~lib/typedarray/Int64Array#__set - local.get $0 + local.get $1 i32.const 2 i64.const 6 call $~lib/typedarray/Int64Array#__set - local.get $0 + local.get $1 i32.const 93 call $~lib/typedarray/Int64Array#every - local.set $1 - local.get $1 + local.set $2 + local.get $2 i32.const 0 i32.ne i32.eqz @@ -10900,11 +13846,11 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 i32.const 94 call $~lib/typedarray/Int64Array#every - local.set $2 - local.get $2 + local.set $3 + local.get $3 i32.const 0 i32.ne i32.eqz @@ -10917,15 +13863,27 @@ call $~lib/builtins/abort unreachable end + local.get $0 + call $~lib/rt/purerc/__release + local.get $1 + call $~lib/rt/purerc/__release ) - (func $std/typedarray/testArrayEvery<~lib/typedarray/Uint64Array,u64>~anonymous|0 (; 300 ;) (type $FUNCSIG$ijii) (param $0 i64) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArrayEvery<~lib/typedarray/Uint64Array,u64>~anonymous|0 (; 306 ;) (type $FUNCSIG$ijii) (param $0 i64) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + local.get $2 + call $~lib/rt/purerc/__retain + drop local.get $0 i64.const 2 i64.rem_u i64.const 0 i64.eq + local.set $3 + local.get $2 + call $~lib/rt/purerc/__release + local.get $3 ) - (func $~lib/typedarray/Uint64Array#every (; 301 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Uint64Array#every (; 307 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -10933,6 +13891,7 @@ (local $6 i32) block $~lib/typedarray/EVERY<~lib/typedarray/Uint64Array,u64>|inlined.0 (result i32) local.get $0 + call $~lib/rt/purerc/__retain local.set $3 local.get $1 local.set $2 @@ -10954,29 +13913,25 @@ i32.lt_s i32.eqz br_if $break|0 - block - block (result i32) - i32.const 3 - global.set $~lib/argc - local.get $4 - local.get $5 - i32.const 3 - i32.shl - i32.add - i64.load - local.get $5 - local.get $3 - local.get $2 - call_indirect (type $FUNCSIG$ijii) - end - if - br $continue|0 - end - i32.const 0 - br $~lib/typedarray/EVERY<~lib/typedarray/Uint64Array,u64>|inlined.0 - unreachable + block (result i32) + i32.const 3 + global.set $~lib/argc + local.get $4 + local.get $5 + i32.const 3 + i32.shl + i32.add + i64.load + local.get $5 + local.get $3 + local.get $2 + call_indirect (type $FUNCSIG$ijii) end - unreachable + if + br $continue|0 + end + i32.const 0 + br $~lib/typedarray/EVERY<~lib/typedarray/Uint64Array,u64>|inlined.0 end local.get $5 i32.const 1 @@ -10988,38 +13943,53 @@ unreachable end i32.const 1 + local.set $6 + local.get $3 + call $~lib/rt/purerc/__release + local.get $6 end ) - (func $std/typedarray/testArrayEvery<~lib/typedarray/Uint64Array,u64>~anonymous|1 (; 302 ;) (type $FUNCSIG$ijii) (param $0 i64) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArrayEvery<~lib/typedarray/Uint64Array,u64>~anonymous|1 (; 308 ;) (type $FUNCSIG$ijii) (param $0 i64) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + local.get $2 + call $~lib/rt/purerc/__retain + drop local.get $0 i64.const 2 i64.eq + local.set $3 + local.get $2 + call $~lib/rt/purerc/__release + local.get $3 ) - (func $std/typedarray/testArrayEvery<~lib/typedarray/Uint64Array,u64> (; 303 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayEvery<~lib/typedarray/Uint64Array,u64> (; 309 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) + (local $3 i32) i32.const 0 i32.const 3 call $~lib/typedarray/Uint64Array#constructor - local.set $0 - local.get $0 + local.tee $0 + call $~lib/rt/purerc/__retain + local.set $1 + local.get $1 i32.const 0 i64.const 2 call $~lib/typedarray/Uint64Array#__set - local.get $0 + local.get $1 i32.const 1 i64.const 4 call $~lib/typedarray/Uint64Array#__set - local.get $0 + local.get $1 i32.const 2 i64.const 6 call $~lib/typedarray/Uint64Array#__set - local.get $0 + local.get $1 i32.const 95 call $~lib/typedarray/Uint64Array#every - local.set $1 - local.get $1 + local.set $2 + local.get $2 i32.const 0 i32.ne i32.eqz @@ -11031,11 +14001,11 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 i32.const 96 call $~lib/typedarray/Uint64Array#every - local.set $2 - local.get $2 + local.set $3 + local.get $3 i32.const 0 i32.ne i32.eqz @@ -11048,13 +14018,17 @@ call $~lib/builtins/abort unreachable end + local.get $0 + call $~lib/rt/purerc/__release + local.get $1 + call $~lib/rt/purerc/__release ) - (func $~lib/builtins/isNaN (; 304 ;) (type $FUNCSIG$if) (param $0 f32) (result i32) + (func $~lib/builtins/isNaN (; 310 ;) (type $FUNCSIG$if) (param $0 f32) (result i32) local.get $0 local.get $0 f32.ne ) - (func $~lib/math/NativeMathf.mod (; 305 ;) (type $FUNCSIG$fff) (param $0 f32) (param $1 f32) (result f32) + (func $~lib/math/NativeMathf.mod (; 311 ;) (type $FUNCSIG$fff) (param $0 f32) (param $1 f32) (result f32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -11206,34 +14180,32 @@ local.get $5 i32.gt_s if - block + local.get $2 + local.get $3 + i32.ge_u + if local.get $2 local.get $3 - i32.ge_u + i32.eq if - local.get $2 - local.get $3 - i32.eq - if - f32.const 0 - local.get $0 - f32.mul - return - end - local.get $2 - local.get $3 - i32.sub - local.set $2 + f32.const 0 + local.get $0 + f32.mul + return end local.get $2 - i32.const 1 - i32.shl - local.set $2 - local.get $4 - i32.const 1 + local.get $3 i32.sub - local.set $4 + local.set $2 end + local.get $2 + i32.const 1 + i32.shl + local.set $2 + local.get $4 + i32.const 1 + i32.sub + local.set $4 br $continue|0 end end @@ -11302,14 +14274,22 @@ local.get $2 f32.reinterpret_i32 ) - (func $std/typedarray/testArrayEvery<~lib/typedarray/Float32Array,f32>~anonymous|0 (; 306 ;) (type $FUNCSIG$ifii) (param $0 f32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArrayEvery<~lib/typedarray/Float32Array,f32>~anonymous|0 (; 312 ;) (type $FUNCSIG$ifii) (param $0 f32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + local.get $2 + call $~lib/rt/purerc/__retain + drop local.get $0 f32.const 2 call $~lib/math/NativeMathf.mod f32.const 0 f32.eq + local.set $3 + local.get $2 + call $~lib/rt/purerc/__release + local.get $3 ) - (func $~lib/typedarray/Float32Array#every (; 307 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Float32Array#every (; 313 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -11317,6 +14297,7 @@ (local $6 i32) block $~lib/typedarray/EVERY<~lib/typedarray/Float32Array,f32>|inlined.0 (result i32) local.get $0 + call $~lib/rt/purerc/__retain local.set $3 local.get $1 local.set $2 @@ -11338,29 +14319,25 @@ i32.lt_s i32.eqz br_if $break|0 - block - block (result i32) - i32.const 3 - global.set $~lib/argc - local.get $4 - local.get $5 - i32.const 2 - i32.shl - i32.add - f32.load - local.get $5 - local.get $3 - local.get $2 - call_indirect (type $FUNCSIG$ifii) - end - if - br $continue|0 - end - i32.const 0 - br $~lib/typedarray/EVERY<~lib/typedarray/Float32Array,f32>|inlined.0 - unreachable + block (result i32) + i32.const 3 + global.set $~lib/argc + local.get $4 + local.get $5 + i32.const 2 + i32.shl + i32.add + f32.load + local.get $5 + local.get $3 + local.get $2 + call_indirect (type $FUNCSIG$ifii) end - unreachable + if + br $continue|0 + end + i32.const 0 + br $~lib/typedarray/EVERY<~lib/typedarray/Float32Array,f32>|inlined.0 end local.get $5 i32.const 1 @@ -11372,38 +14349,53 @@ unreachable end i32.const 1 + local.set $6 + local.get $3 + call $~lib/rt/purerc/__release + local.get $6 end ) - (func $std/typedarray/testArrayEvery<~lib/typedarray/Float32Array,f32>~anonymous|1 (; 308 ;) (type $FUNCSIG$ifii) (param $0 f32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArrayEvery<~lib/typedarray/Float32Array,f32>~anonymous|1 (; 314 ;) (type $FUNCSIG$ifii) (param $0 f32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + local.get $2 + call $~lib/rt/purerc/__retain + drop local.get $0 f32.const 2 f32.eq + local.set $3 + local.get $2 + call $~lib/rt/purerc/__release + local.get $3 ) - (func $std/typedarray/testArrayEvery<~lib/typedarray/Float32Array,f32> (; 309 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayEvery<~lib/typedarray/Float32Array,f32> (; 315 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) + (local $3 i32) i32.const 0 i32.const 3 call $~lib/typedarray/Float32Array#constructor - local.set $0 - local.get $0 + local.tee $0 + call $~lib/rt/purerc/__retain + local.set $1 + local.get $1 i32.const 0 f32.const 2 call $~lib/typedarray/Float32Array#__set - local.get $0 + local.get $1 i32.const 1 f32.const 4 call $~lib/typedarray/Float32Array#__set - local.get $0 + local.get $1 i32.const 2 f32.const 6 call $~lib/typedarray/Float32Array#__set - local.get $0 + local.get $1 i32.const 97 call $~lib/typedarray/Float32Array#every - local.set $1 - local.get $1 + local.set $2 + local.get $2 i32.const 0 i32.ne i32.eqz @@ -11415,11 +14407,11 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 i32.const 98 call $~lib/typedarray/Float32Array#every - local.set $2 - local.get $2 + local.set $3 + local.get $3 i32.const 0 i32.ne i32.eqz @@ -11432,13 +14424,17 @@ call $~lib/builtins/abort unreachable end + local.get $0 + call $~lib/rt/purerc/__release + local.get $1 + call $~lib/rt/purerc/__release ) - (func $~lib/builtins/isNaN (; 310 ;) (type $FUNCSIG$id) (param $0 f64) (result i32) + (func $~lib/builtins/isNaN (; 316 ;) (type $FUNCSIG$id) (param $0 f64) (result i32) local.get $0 local.get $0 f64.ne ) - (func $~lib/math/NativeMath.mod (; 311 ;) (type $FUNCSIG$ddd) (param $0 f64) (param $1 f64) (result f64) + (func $~lib/math/NativeMath.mod (; 317 ;) (type $FUNCSIG$ddd) (param $0 f64) (param $1 f64) (result f64) (local $2 i64) (local $3 i64) (local $4 i64) @@ -11590,34 +14586,32 @@ local.get $5 i64.gt_s if - block + local.get $2 + local.get $3 + i64.ge_u + if local.get $2 local.get $3 - i64.ge_u + i64.eq if - local.get $2 - local.get $3 - i64.eq - if - f64.const 0 - local.get $0 - f64.mul - return - end - local.get $2 - local.get $3 - i64.sub - local.set $2 + f64.const 0 + local.get $0 + f64.mul + return end local.get $2 - i64.const 1 - i64.shl - local.set $2 - local.get $4 - i64.const 1 + local.get $3 i64.sub - local.set $4 + local.set $2 end + local.get $2 + i64.const 1 + i64.shl + local.set $2 + local.get $4 + i64.const 1 + i64.sub + local.set $4 br $continue|0 end end @@ -11688,14 +14682,22 @@ local.get $2 f64.reinterpret_i64 ) - (func $std/typedarray/testArrayEvery<~lib/typedarray/Float64Array,f64>~anonymous|0 (; 312 ;) (type $FUNCSIG$idii) (param $0 f64) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArrayEvery<~lib/typedarray/Float64Array,f64>~anonymous|0 (; 318 ;) (type $FUNCSIG$idii) (param $0 f64) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + local.get $2 + call $~lib/rt/purerc/__retain + drop local.get $0 f64.const 2 call $~lib/math/NativeMath.mod f64.const 0 f64.eq + local.set $3 + local.get $2 + call $~lib/rt/purerc/__release + local.get $3 ) - (func $~lib/typedarray/Float64Array#every (; 313 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Float64Array#every (; 319 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -11703,6 +14705,7 @@ (local $6 i32) block $~lib/typedarray/EVERY<~lib/typedarray/Float64Array,f64>|inlined.0 (result i32) local.get $0 + call $~lib/rt/purerc/__retain local.set $3 local.get $1 local.set $2 @@ -11724,29 +14727,25 @@ i32.lt_s i32.eqz br_if $break|0 - block - block (result i32) - i32.const 3 - global.set $~lib/argc - local.get $4 - local.get $5 - i32.const 3 - i32.shl - i32.add - f64.load - local.get $5 - local.get $3 - local.get $2 - call_indirect (type $FUNCSIG$idii) - end - if - br $continue|0 - end - i32.const 0 - br $~lib/typedarray/EVERY<~lib/typedarray/Float64Array,f64>|inlined.0 - unreachable + block (result i32) + i32.const 3 + global.set $~lib/argc + local.get $4 + local.get $5 + i32.const 3 + i32.shl + i32.add + f64.load + local.get $5 + local.get $3 + local.get $2 + call_indirect (type $FUNCSIG$idii) end - unreachable + if + br $continue|0 + end + i32.const 0 + br $~lib/typedarray/EVERY<~lib/typedarray/Float64Array,f64>|inlined.0 end local.get $5 i32.const 1 @@ -11758,38 +14757,53 @@ unreachable end i32.const 1 + local.set $6 + local.get $3 + call $~lib/rt/purerc/__release + local.get $6 end ) - (func $std/typedarray/testArrayEvery<~lib/typedarray/Float64Array,f64>~anonymous|1 (; 314 ;) (type $FUNCSIG$idii) (param $0 f64) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArrayEvery<~lib/typedarray/Float64Array,f64>~anonymous|1 (; 320 ;) (type $FUNCSIG$idii) (param $0 f64) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + local.get $2 + call $~lib/rt/purerc/__retain + drop local.get $0 f64.const 2 f64.eq + local.set $3 + local.get $2 + call $~lib/rt/purerc/__release + local.get $3 ) - (func $std/typedarray/testArrayEvery<~lib/typedarray/Float64Array,f64> (; 315 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayEvery<~lib/typedarray/Float64Array,f64> (; 321 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) + (local $3 i32) i32.const 0 i32.const 3 call $~lib/typedarray/Float64Array#constructor - local.set $0 - local.get $0 + local.tee $0 + call $~lib/rt/purerc/__retain + local.set $1 + local.get $1 i32.const 0 f64.const 2 call $~lib/typedarray/Float64Array#__set - local.get $0 + local.get $1 i32.const 1 f64.const 4 call $~lib/typedarray/Float64Array#__set - local.get $0 + local.get $1 i32.const 2 f64.const 6 call $~lib/typedarray/Float64Array#__set - local.get $0 + local.get $1 i32.const 99 call $~lib/typedarray/Float64Array#every - local.set $1 - local.get $1 + local.set $2 + local.get $2 i32.const 0 i32.ne i32.eqz @@ -11801,11 +14815,11 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 i32.const 100 call $~lib/typedarray/Float64Array#every - local.set $2 - local.get $2 + local.set $3 + local.get $3 i32.const 0 i32.ne i32.eqz @@ -11818,9 +14832,16 @@ call $~lib/builtins/abort unreachable end + local.get $0 + call $~lib/rt/purerc/__release + local.get $1 + call $~lib/rt/purerc/__release ) - (func $std/typedarray/testArrayForEach<~lib/typedarray/Int8Array,i8>~anonymous|0 (; 316 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $std/typedarray/testArrayForEach<~lib/typedarray/Int8Array,i8>~anonymous|0 (; 322 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) + local.get $2 + call $~lib/rt/purerc/__retain + drop global.get $std/typedarray/forEachValues local.get $1 call $~lib/array/Array#__get @@ -11838,7 +14859,7 @@ i32.eq i32.eqz if - i32.const 904 + i32.const 1112 i32.const 24 i32.const 425 i32.const 4 @@ -11850,7 +14871,7 @@ i32.eq i32.eqz if - i32.const 968 + i32.const 1176 i32.const 24 i32.const 426 i32.const 4 @@ -11862,7 +14883,7 @@ i32.eq i32.eqz if - i32.const 1032 + i32.const 1240 i32.const 24 i32.const 427 i32.const 4 @@ -11873,63 +14894,75 @@ i32.const 1 i32.add global.set $std/typedarray/forEachCallCount + local.get $2 + call $~lib/rt/purerc/__release ) - (func $~lib/typedarray/Int8Array#forEach (; 317 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/typedarray/Int8Array#forEach (; 323 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) + (local $5 i32) + (local $6 i32) local.get $0 - i32.load offset=4 + call $~lib/rt/purerc/__retain local.set $3 + local.get $1 + local.set $2 + local.get $3 + i32.load offset=4 + local.set $4 block $break|0 block i32.const 0 - local.set $2 - local.get $0 + local.set $5 + local.get $3 call $~lib/typedarray/Int8Array#get:length - local.set $4 + local.set $6 end loop $repeat|0 - local.get $2 - local.get $4 + local.get $5 + local.get $6 i32.lt_s i32.eqz br_if $break|0 - block - i32.const 3 - global.set $~lib/argc - local.get $3 - local.get $2 - i32.const 0 - i32.shl - i32.add - i32.load8_s - local.get $2 - local.get $0 - local.get $1 - call_indirect (type $FUNCSIG$viii) - end + i32.const 3 + global.set $~lib/argc + local.get $4 + local.get $5 + i32.const 0 + i32.shl + i32.add + i32.load8_s + local.get $5 + local.get $3 local.get $2 + call_indirect (type $FUNCSIG$viii) + local.get $5 i32.const 1 i32.add - local.set $2 + local.set $5 br $repeat|0 unreachable end unreachable end + local.get $3 + call $~lib/rt/purerc/__release ) - (func $std/typedarray/testArrayForEach<~lib/typedarray/Int8Array,i8> (; 318 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayForEach<~lib/typedarray/Int8Array,i8> (; 324 ;) (type $FUNCSIG$v) (local $0 i32) + (local $1 i32) i32.const 0 global.set $std/typedarray/forEachCallCount i32.const 0 i32.const 3 call $~lib/typedarray/Int8Array#constructor - local.set $0 - local.get $0 + local.tee $0 + call $~lib/rt/purerc/__retain + local.set $1 + local.get $1 global.set $std/typedarray/forEachSelf - local.get $0 + local.get $1 i32.const 0 global.get $std/typedarray/forEachValues i32.const 0 @@ -11939,7 +14972,7 @@ i32.const 24 i32.shr_s call $~lib/typedarray/Int8Array#__set - local.get $0 + local.get $1 i32.const 1 global.get $std/typedarray/forEachValues i32.const 1 @@ -11949,7 +14982,7 @@ i32.const 24 i32.shr_s call $~lib/typedarray/Int8Array#__set - local.get $0 + local.get $1 i32.const 2 global.get $std/typedarray/forEachValues i32.const 2 @@ -11959,7 +14992,7 @@ i32.const 24 i32.shr_s call $~lib/typedarray/Int8Array#__set - local.get $0 + local.get $1 i32.const 101 call $~lib/typedarray/Int8Array#forEach global.get $std/typedarray/forEachCallCount @@ -11967,16 +15000,23 @@ i32.eq i32.eqz if - i32.const 1112 + i32.const 1320 i32.const 24 i32.const 430 i32.const 2 call $~lib/builtins/abort unreachable end + local.get $0 + call $~lib/rt/purerc/__release + local.get $1 + call $~lib/rt/purerc/__release ) - (func $std/typedarray/testArrayForEach<~lib/typedarray/Uint8Array,u8>~anonymous|0 (; 319 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $std/typedarray/testArrayForEach<~lib/typedarray/Uint8Array,u8>~anonymous|0 (; 325 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) + local.get $2 + call $~lib/rt/purerc/__retain + drop global.get $std/typedarray/forEachValues local.get $1 call $~lib/array/Array#__get @@ -11990,7 +15030,7 @@ i32.eq i32.eqz if - i32.const 904 + i32.const 1112 i32.const 24 i32.const 425 i32.const 4 @@ -12002,7 +15042,7 @@ i32.eq i32.eqz if - i32.const 968 + i32.const 1176 i32.const 24 i32.const 426 i32.const 4 @@ -12014,7 +15054,7 @@ i32.eq i32.eqz if - i32.const 1032 + i32.const 1240 i32.const 24 i32.const 427 i32.const 4 @@ -12025,63 +15065,75 @@ i32.const 1 i32.add global.set $std/typedarray/forEachCallCount + local.get $2 + call $~lib/rt/purerc/__release ) - (func $~lib/typedarray/Uint8Array#forEach (; 320 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/typedarray/Uint8Array#forEach (; 326 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) + (local $5 i32) + (local $6 i32) local.get $0 - i32.load offset=4 + call $~lib/rt/purerc/__retain local.set $3 + local.get $1 + local.set $2 + local.get $3 + i32.load offset=4 + local.set $4 block $break|0 block i32.const 0 - local.set $2 - local.get $0 + local.set $5 + local.get $3 call $~lib/typedarray/Uint8Array#get:length - local.set $4 + local.set $6 end loop $repeat|0 - local.get $2 - local.get $4 + local.get $5 + local.get $6 i32.lt_s i32.eqz br_if $break|0 - block - i32.const 3 - global.set $~lib/argc - local.get $3 - local.get $2 - i32.const 0 - i32.shl - i32.add - i32.load8_u - local.get $2 - local.get $0 - local.get $1 - call_indirect (type $FUNCSIG$viii) - end + i32.const 3 + global.set $~lib/argc + local.get $4 + local.get $5 + i32.const 0 + i32.shl + i32.add + i32.load8_u + local.get $5 + local.get $3 local.get $2 + call_indirect (type $FUNCSIG$viii) + local.get $5 i32.const 1 i32.add - local.set $2 + local.set $5 br $repeat|0 unreachable end unreachable end + local.get $3 + call $~lib/rt/purerc/__release ) - (func $std/typedarray/testArrayForEach<~lib/typedarray/Uint8Array,u8> (; 321 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayForEach<~lib/typedarray/Uint8Array,u8> (; 327 ;) (type $FUNCSIG$v) (local $0 i32) + (local $1 i32) i32.const 0 global.set $std/typedarray/forEachCallCount i32.const 0 i32.const 3 call $~lib/typedarray/Uint8Array#constructor - local.set $0 - local.get $0 + local.tee $0 + call $~lib/rt/purerc/__retain + local.set $1 + local.get $1 global.set $std/typedarray/forEachSelf - local.get $0 + local.get $1 i32.const 0 global.get $std/typedarray/forEachValues i32.const 0 @@ -12089,7 +15141,7 @@ i32.const 255 i32.and call $~lib/typedarray/Uint8Array#__set - local.get $0 + local.get $1 i32.const 1 global.get $std/typedarray/forEachValues i32.const 1 @@ -12097,7 +15149,7 @@ i32.const 255 i32.and call $~lib/typedarray/Uint8Array#__set - local.get $0 + local.get $1 i32.const 2 global.get $std/typedarray/forEachValues i32.const 2 @@ -12105,7 +15157,7 @@ i32.const 255 i32.and call $~lib/typedarray/Uint8Array#__set - local.get $0 + local.get $1 i32.const 102 call $~lib/typedarray/Uint8Array#forEach global.get $std/typedarray/forEachCallCount @@ -12113,16 +15165,23 @@ i32.eq i32.eqz if - i32.const 1112 + i32.const 1320 i32.const 24 i32.const 430 i32.const 2 call $~lib/builtins/abort unreachable end + local.get $0 + call $~lib/rt/purerc/__release + local.get $1 + call $~lib/rt/purerc/__release ) - (func $std/typedarray/testArrayForEach<~lib/typedarray/Uint8ClampedArray,u8>~anonymous|0 (; 322 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $std/typedarray/testArrayForEach<~lib/typedarray/Uint8ClampedArray,u8>~anonymous|0 (; 328 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) + local.get $2 + call $~lib/rt/purerc/__retain + drop global.get $std/typedarray/forEachValues local.get $1 call $~lib/array/Array#__get @@ -12136,7 +15195,7 @@ i32.eq i32.eqz if - i32.const 904 + i32.const 1112 i32.const 24 i32.const 425 i32.const 4 @@ -12148,7 +15207,7 @@ i32.eq i32.eqz if - i32.const 968 + i32.const 1176 i32.const 24 i32.const 426 i32.const 4 @@ -12160,7 +15219,7 @@ i32.eq i32.eqz if - i32.const 1032 + i32.const 1240 i32.const 24 i32.const 427 i32.const 4 @@ -12171,63 +15230,75 @@ i32.const 1 i32.add global.set $std/typedarray/forEachCallCount + local.get $2 + call $~lib/rt/purerc/__release ) - (func $~lib/typedarray/Uint8ClampedArray#forEach (; 323 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/typedarray/Uint8ClampedArray#forEach (; 329 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) + (local $5 i32) + (local $6 i32) local.get $0 - i32.load offset=4 + call $~lib/rt/purerc/__retain local.set $3 + local.get $1 + local.set $2 + local.get $3 + i32.load offset=4 + local.set $4 block $break|0 block i32.const 0 - local.set $2 - local.get $0 + local.set $5 + local.get $3 call $~lib/typedarray/Uint8ClampedArray#get:length - local.set $4 + local.set $6 end loop $repeat|0 - local.get $2 - local.get $4 + local.get $5 + local.get $6 i32.lt_s i32.eqz br_if $break|0 - block - i32.const 3 - global.set $~lib/argc - local.get $3 - local.get $2 - i32.const 0 - i32.shl - i32.add - i32.load8_u - local.get $2 - local.get $0 - local.get $1 - call_indirect (type $FUNCSIG$viii) - end + i32.const 3 + global.set $~lib/argc + local.get $4 + local.get $5 + i32.const 0 + i32.shl + i32.add + i32.load8_u + local.get $5 + local.get $3 local.get $2 + call_indirect (type $FUNCSIG$viii) + local.get $5 i32.const 1 i32.add - local.set $2 + local.set $5 br $repeat|0 unreachable end unreachable end + local.get $3 + call $~lib/rt/purerc/__release ) - (func $std/typedarray/testArrayForEach<~lib/typedarray/Uint8ClampedArray,u8> (; 324 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayForEach<~lib/typedarray/Uint8ClampedArray,u8> (; 330 ;) (type $FUNCSIG$v) (local $0 i32) + (local $1 i32) i32.const 0 global.set $std/typedarray/forEachCallCount i32.const 0 i32.const 3 call $~lib/typedarray/Uint8ClampedArray#constructor - local.set $0 - local.get $0 + local.tee $0 + call $~lib/rt/purerc/__retain + local.set $1 + local.get $1 global.set $std/typedarray/forEachSelf - local.get $0 + local.get $1 i32.const 0 global.get $std/typedarray/forEachValues i32.const 0 @@ -12235,7 +15306,7 @@ i32.const 255 i32.and call $~lib/typedarray/Uint8ClampedArray#__set - local.get $0 + local.get $1 i32.const 1 global.get $std/typedarray/forEachValues i32.const 1 @@ -12243,7 +15314,7 @@ i32.const 255 i32.and call $~lib/typedarray/Uint8ClampedArray#__set - local.get $0 + local.get $1 i32.const 2 global.get $std/typedarray/forEachValues i32.const 2 @@ -12251,7 +15322,7 @@ i32.const 255 i32.and call $~lib/typedarray/Uint8ClampedArray#__set - local.get $0 + local.get $1 i32.const 103 call $~lib/typedarray/Uint8ClampedArray#forEach global.get $std/typedarray/forEachCallCount @@ -12259,16 +15330,23 @@ i32.eq i32.eqz if - i32.const 1112 + i32.const 1320 i32.const 24 i32.const 430 i32.const 2 call $~lib/builtins/abort unreachable end + local.get $0 + call $~lib/rt/purerc/__release + local.get $1 + call $~lib/rt/purerc/__release ) - (func $std/typedarray/testArrayForEach<~lib/typedarray/Int16Array,i16>~anonymous|0 (; 325 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $std/typedarray/testArrayForEach<~lib/typedarray/Int16Array,i16>~anonymous|0 (; 331 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) + local.get $2 + call $~lib/rt/purerc/__retain + drop global.get $std/typedarray/forEachValues local.get $1 call $~lib/array/Array#__get @@ -12286,7 +15364,7 @@ i32.eq i32.eqz if - i32.const 904 + i32.const 1112 i32.const 24 i32.const 425 i32.const 4 @@ -12298,7 +15376,7 @@ i32.eq i32.eqz if - i32.const 968 + i32.const 1176 i32.const 24 i32.const 426 i32.const 4 @@ -12310,7 +15388,7 @@ i32.eq i32.eqz if - i32.const 1032 + i32.const 1240 i32.const 24 i32.const 427 i32.const 4 @@ -12321,63 +15399,75 @@ i32.const 1 i32.add global.set $std/typedarray/forEachCallCount + local.get $2 + call $~lib/rt/purerc/__release ) - (func $~lib/typedarray/Int16Array#forEach (; 326 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/typedarray/Int16Array#forEach (; 332 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) + (local $5 i32) + (local $6 i32) local.get $0 - i32.load offset=4 + call $~lib/rt/purerc/__retain local.set $3 + local.get $1 + local.set $2 + local.get $3 + i32.load offset=4 + local.set $4 block $break|0 block i32.const 0 - local.set $2 - local.get $0 + local.set $5 + local.get $3 call $~lib/typedarray/Int16Array#get:length - local.set $4 + local.set $6 end loop $repeat|0 - local.get $2 - local.get $4 + local.get $5 + local.get $6 i32.lt_s i32.eqz br_if $break|0 - block - i32.const 3 - global.set $~lib/argc - local.get $3 - local.get $2 - i32.const 1 - i32.shl - i32.add - i32.load16_s - local.get $2 - local.get $0 - local.get $1 - call_indirect (type $FUNCSIG$viii) - end + i32.const 3 + global.set $~lib/argc + local.get $4 + local.get $5 + i32.const 1 + i32.shl + i32.add + i32.load16_s + local.get $5 + local.get $3 local.get $2 + call_indirect (type $FUNCSIG$viii) + local.get $5 i32.const 1 i32.add - local.set $2 + local.set $5 br $repeat|0 unreachable end unreachable end + local.get $3 + call $~lib/rt/purerc/__release ) - (func $std/typedarray/testArrayForEach<~lib/typedarray/Int16Array,i16> (; 327 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayForEach<~lib/typedarray/Int16Array,i16> (; 333 ;) (type $FUNCSIG$v) (local $0 i32) + (local $1 i32) i32.const 0 global.set $std/typedarray/forEachCallCount i32.const 0 i32.const 3 call $~lib/typedarray/Int16Array#constructor - local.set $0 - local.get $0 + local.tee $0 + call $~lib/rt/purerc/__retain + local.set $1 + local.get $1 global.set $std/typedarray/forEachSelf - local.get $0 + local.get $1 i32.const 0 global.get $std/typedarray/forEachValues i32.const 0 @@ -12387,7 +15477,7 @@ i32.const 16 i32.shr_s call $~lib/typedarray/Int16Array#__set - local.get $0 + local.get $1 i32.const 1 global.get $std/typedarray/forEachValues i32.const 1 @@ -12397,7 +15487,7 @@ i32.const 16 i32.shr_s call $~lib/typedarray/Int16Array#__set - local.get $0 + local.get $1 i32.const 2 global.get $std/typedarray/forEachValues i32.const 2 @@ -12407,7 +15497,7 @@ i32.const 16 i32.shr_s call $~lib/typedarray/Int16Array#__set - local.get $0 + local.get $1 i32.const 104 call $~lib/typedarray/Int16Array#forEach global.get $std/typedarray/forEachCallCount @@ -12415,16 +15505,23 @@ i32.eq i32.eqz if - i32.const 1112 + i32.const 1320 i32.const 24 i32.const 430 i32.const 2 call $~lib/builtins/abort unreachable end + local.get $0 + call $~lib/rt/purerc/__release + local.get $1 + call $~lib/rt/purerc/__release ) - (func $std/typedarray/testArrayForEach<~lib/typedarray/Uint16Array,u16>~anonymous|0 (; 328 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $std/typedarray/testArrayForEach<~lib/typedarray/Uint16Array,u16>~anonymous|0 (; 334 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) + local.get $2 + call $~lib/rt/purerc/__retain + drop global.get $std/typedarray/forEachValues local.get $1 call $~lib/array/Array#__get @@ -12438,7 +15535,7 @@ i32.eq i32.eqz if - i32.const 904 + i32.const 1112 i32.const 24 i32.const 425 i32.const 4 @@ -12450,7 +15547,7 @@ i32.eq i32.eqz if - i32.const 968 + i32.const 1176 i32.const 24 i32.const 426 i32.const 4 @@ -12462,7 +15559,7 @@ i32.eq i32.eqz if - i32.const 1032 + i32.const 1240 i32.const 24 i32.const 427 i32.const 4 @@ -12473,63 +15570,75 @@ i32.const 1 i32.add global.set $std/typedarray/forEachCallCount + local.get $2 + call $~lib/rt/purerc/__release ) - (func $~lib/typedarray/Uint16Array#forEach (; 329 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/typedarray/Uint16Array#forEach (; 335 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) + (local $5 i32) + (local $6 i32) local.get $0 - i32.load offset=4 + call $~lib/rt/purerc/__retain local.set $3 + local.get $1 + local.set $2 + local.get $3 + i32.load offset=4 + local.set $4 block $break|0 block i32.const 0 - local.set $2 - local.get $0 + local.set $5 + local.get $3 call $~lib/typedarray/Uint16Array#get:length - local.set $4 + local.set $6 end loop $repeat|0 - local.get $2 - local.get $4 + local.get $5 + local.get $6 i32.lt_s i32.eqz br_if $break|0 - block - i32.const 3 - global.set $~lib/argc - local.get $3 - local.get $2 - i32.const 1 - i32.shl - i32.add - i32.load16_u - local.get $2 - local.get $0 - local.get $1 - call_indirect (type $FUNCSIG$viii) - end + i32.const 3 + global.set $~lib/argc + local.get $4 + local.get $5 + i32.const 1 + i32.shl + i32.add + i32.load16_u + local.get $5 + local.get $3 local.get $2 + call_indirect (type $FUNCSIG$viii) + local.get $5 i32.const 1 i32.add - local.set $2 + local.set $5 br $repeat|0 unreachable end unreachable end + local.get $3 + call $~lib/rt/purerc/__release ) - (func $std/typedarray/testArrayForEach<~lib/typedarray/Uint16Array,u16> (; 330 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayForEach<~lib/typedarray/Uint16Array,u16> (; 336 ;) (type $FUNCSIG$v) (local $0 i32) + (local $1 i32) i32.const 0 global.set $std/typedarray/forEachCallCount i32.const 0 i32.const 3 call $~lib/typedarray/Uint16Array#constructor - local.set $0 - local.get $0 + local.tee $0 + call $~lib/rt/purerc/__retain + local.set $1 + local.get $1 global.set $std/typedarray/forEachSelf - local.get $0 + local.get $1 i32.const 0 global.get $std/typedarray/forEachValues i32.const 0 @@ -12537,7 +15646,7 @@ i32.const 65535 i32.and call $~lib/typedarray/Uint16Array#__set - local.get $0 + local.get $1 i32.const 1 global.get $std/typedarray/forEachValues i32.const 1 @@ -12545,7 +15654,7 @@ i32.const 65535 i32.and call $~lib/typedarray/Uint16Array#__set - local.get $0 + local.get $1 i32.const 2 global.get $std/typedarray/forEachValues i32.const 2 @@ -12553,7 +15662,7 @@ i32.const 65535 i32.and call $~lib/typedarray/Uint16Array#__set - local.get $0 + local.get $1 i32.const 105 call $~lib/typedarray/Uint16Array#forEach global.get $std/typedarray/forEachCallCount @@ -12561,16 +15670,23 @@ i32.eq i32.eqz if - i32.const 1112 + i32.const 1320 i32.const 24 i32.const 430 i32.const 2 call $~lib/builtins/abort unreachable end + local.get $0 + call $~lib/rt/purerc/__release + local.get $1 + call $~lib/rt/purerc/__release ) - (func $std/typedarray/testArrayForEach<~lib/typedarray/Int32Array,i32>~anonymous|0 (; 331 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $std/typedarray/testArrayForEach<~lib/typedarray/Int32Array,i32>~anonymous|0 (; 337 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) + local.get $2 + call $~lib/rt/purerc/__retain + drop global.get $std/typedarray/forEachValues local.get $1 call $~lib/array/Array#__get @@ -12580,7 +15696,7 @@ i32.eq i32.eqz if - i32.const 904 + i32.const 1112 i32.const 24 i32.const 425 i32.const 4 @@ -12592,7 +15708,7 @@ i32.eq i32.eqz if - i32.const 968 + i32.const 1176 i32.const 24 i32.const 426 i32.const 4 @@ -12604,7 +15720,7 @@ i32.eq i32.eqz if - i32.const 1032 + i32.const 1240 i32.const 24 i32.const 427 i32.const 4 @@ -12615,81 +15731,93 @@ i32.const 1 i32.add global.set $std/typedarray/forEachCallCount + local.get $2 + call $~lib/rt/purerc/__release ) - (func $~lib/typedarray/Int32Array#forEach (; 332 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/typedarray/Int32Array#forEach (; 338 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) + (local $5 i32) + (local $6 i32) local.get $0 - i32.load offset=4 + call $~lib/rt/purerc/__retain local.set $3 + local.get $1 + local.set $2 + local.get $3 + i32.load offset=4 + local.set $4 block $break|0 block i32.const 0 - local.set $2 - local.get $0 + local.set $5 + local.get $3 call $~lib/typedarray/Int32Array#get:length - local.set $4 + local.set $6 end loop $repeat|0 - local.get $2 - local.get $4 + local.get $5 + local.get $6 i32.lt_s i32.eqz br_if $break|0 - block - i32.const 3 - global.set $~lib/argc - local.get $3 - local.get $2 - i32.const 2 - i32.shl - i32.add - i32.load - local.get $2 - local.get $0 - local.get $1 - call_indirect (type $FUNCSIG$viii) - end + i32.const 3 + global.set $~lib/argc + local.get $4 + local.get $5 + i32.const 2 + i32.shl + i32.add + i32.load + local.get $5 + local.get $3 local.get $2 + call_indirect (type $FUNCSIG$viii) + local.get $5 i32.const 1 i32.add - local.set $2 + local.set $5 br $repeat|0 unreachable end unreachable end + local.get $3 + call $~lib/rt/purerc/__release ) - (func $std/typedarray/testArrayForEach<~lib/typedarray/Int32Array,i32> (; 333 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayForEach<~lib/typedarray/Int32Array,i32> (; 339 ;) (type $FUNCSIG$v) (local $0 i32) + (local $1 i32) i32.const 0 global.set $std/typedarray/forEachCallCount i32.const 0 i32.const 3 call $~lib/typedarray/Int32Array#constructor - local.set $0 - local.get $0 + local.tee $0 + call $~lib/rt/purerc/__retain + local.set $1 + local.get $1 global.set $std/typedarray/forEachSelf - local.get $0 + local.get $1 i32.const 0 global.get $std/typedarray/forEachValues i32.const 0 call $~lib/array/Array#__get call $~lib/typedarray/Int32Array#__set - local.get $0 + local.get $1 i32.const 1 global.get $std/typedarray/forEachValues i32.const 1 call $~lib/array/Array#__get call $~lib/typedarray/Int32Array#__set - local.get $0 + local.get $1 i32.const 2 global.get $std/typedarray/forEachValues i32.const 2 call $~lib/array/Array#__get call $~lib/typedarray/Int32Array#__set - local.get $0 + local.get $1 i32.const 106 call $~lib/typedarray/Int32Array#forEach global.get $std/typedarray/forEachCallCount @@ -12697,16 +15825,23 @@ i32.eq i32.eqz if - i32.const 1112 + i32.const 1320 i32.const 24 i32.const 430 i32.const 2 call $~lib/builtins/abort unreachable end + local.get $0 + call $~lib/rt/purerc/__release + local.get $1 + call $~lib/rt/purerc/__release ) - (func $std/typedarray/testArrayForEach<~lib/typedarray/Uint32Array,u32>~anonymous|0 (; 334 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $std/typedarray/testArrayForEach<~lib/typedarray/Uint32Array,u32>~anonymous|0 (; 340 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) + local.get $2 + call $~lib/rt/purerc/__retain + drop global.get $std/typedarray/forEachValues local.get $1 call $~lib/array/Array#__get @@ -12716,7 +15851,7 @@ i32.eq i32.eqz if - i32.const 904 + i32.const 1112 i32.const 24 i32.const 425 i32.const 4 @@ -12728,7 +15863,7 @@ i32.eq i32.eqz if - i32.const 968 + i32.const 1176 i32.const 24 i32.const 426 i32.const 4 @@ -12740,7 +15875,7 @@ i32.eq i32.eqz if - i32.const 1032 + i32.const 1240 i32.const 24 i32.const 427 i32.const 4 @@ -12751,81 +15886,93 @@ i32.const 1 i32.add global.set $std/typedarray/forEachCallCount + local.get $2 + call $~lib/rt/purerc/__release ) - (func $~lib/typedarray/Uint32Array#forEach (; 335 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/typedarray/Uint32Array#forEach (; 341 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) + (local $5 i32) + (local $6 i32) local.get $0 - i32.load offset=4 + call $~lib/rt/purerc/__retain local.set $3 + local.get $1 + local.set $2 + local.get $3 + i32.load offset=4 + local.set $4 block $break|0 block i32.const 0 - local.set $2 - local.get $0 + local.set $5 + local.get $3 call $~lib/typedarray/Uint32Array#get:length - local.set $4 + local.set $6 end loop $repeat|0 - local.get $2 - local.get $4 + local.get $5 + local.get $6 i32.lt_s i32.eqz br_if $break|0 - block - i32.const 3 - global.set $~lib/argc - local.get $3 - local.get $2 - i32.const 2 - i32.shl - i32.add - i32.load - local.get $2 - local.get $0 - local.get $1 - call_indirect (type $FUNCSIG$viii) - end + i32.const 3 + global.set $~lib/argc + local.get $4 + local.get $5 + i32.const 2 + i32.shl + i32.add + i32.load + local.get $5 + local.get $3 local.get $2 + call_indirect (type $FUNCSIG$viii) + local.get $5 i32.const 1 i32.add - local.set $2 + local.set $5 br $repeat|0 unreachable end unreachable end + local.get $3 + call $~lib/rt/purerc/__release ) - (func $std/typedarray/testArrayForEach<~lib/typedarray/Uint32Array,u32> (; 336 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayForEach<~lib/typedarray/Uint32Array,u32> (; 342 ;) (type $FUNCSIG$v) (local $0 i32) + (local $1 i32) i32.const 0 global.set $std/typedarray/forEachCallCount i32.const 0 i32.const 3 call $~lib/typedarray/Uint32Array#constructor - local.set $0 - local.get $0 + local.tee $0 + call $~lib/rt/purerc/__retain + local.set $1 + local.get $1 global.set $std/typedarray/forEachSelf - local.get $0 + local.get $1 i32.const 0 global.get $std/typedarray/forEachValues i32.const 0 call $~lib/array/Array#__get call $~lib/typedarray/Uint32Array#__set - local.get $0 + local.get $1 i32.const 1 global.get $std/typedarray/forEachValues i32.const 1 call $~lib/array/Array#__get call $~lib/typedarray/Uint32Array#__set - local.get $0 + local.get $1 i32.const 2 global.get $std/typedarray/forEachValues i32.const 2 call $~lib/array/Array#__get call $~lib/typedarray/Uint32Array#__set - local.get $0 + local.get $1 i32.const 107 call $~lib/typedarray/Uint32Array#forEach global.get $std/typedarray/forEachCallCount @@ -12833,16 +15980,23 @@ i32.eq i32.eqz if - i32.const 1112 + i32.const 1320 i32.const 24 i32.const 430 i32.const 2 call $~lib/builtins/abort unreachable end + local.get $0 + call $~lib/rt/purerc/__release + local.get $1 + call $~lib/rt/purerc/__release ) - (func $std/typedarray/testArrayForEach<~lib/typedarray/Int64Array,i64>~anonymous|0 (; 337 ;) (type $FUNCSIG$vjii) (param $0 i64) (param $1 i32) (param $2 i32) + (func $std/typedarray/testArrayForEach<~lib/typedarray/Int64Array,i64>~anonymous|0 (; 343 ;) (type $FUNCSIG$vjii) (param $0 i64) (param $1 i32) (param $2 i32) (local $3 i32) + local.get $2 + call $~lib/rt/purerc/__retain + drop global.get $std/typedarray/forEachValues local.get $1 call $~lib/array/Array#__get @@ -12853,7 +16007,7 @@ i64.eq i32.eqz if - i32.const 904 + i32.const 1112 i32.const 24 i32.const 425 i32.const 4 @@ -12865,7 +16019,7 @@ i32.eq i32.eqz if - i32.const 968 + i32.const 1176 i32.const 24 i32.const 426 i32.const 4 @@ -12877,7 +16031,7 @@ i32.eq i32.eqz if - i32.const 1032 + i32.const 1240 i32.const 24 i32.const 427 i32.const 4 @@ -12888,84 +16042,96 @@ i32.const 1 i32.add global.set $std/typedarray/forEachCallCount + local.get $2 + call $~lib/rt/purerc/__release ) - (func $~lib/typedarray/Int64Array#forEach (; 338 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/typedarray/Int64Array#forEach (; 344 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) + (local $5 i32) + (local $6 i32) local.get $0 - i32.load offset=4 + call $~lib/rt/purerc/__retain local.set $3 + local.get $1 + local.set $2 + local.get $3 + i32.load offset=4 + local.set $4 block $break|0 block i32.const 0 - local.set $2 - local.get $0 + local.set $5 + local.get $3 call $~lib/typedarray/Int64Array#get:length - local.set $4 + local.set $6 end loop $repeat|0 - local.get $2 - local.get $4 + local.get $5 + local.get $6 i32.lt_s i32.eqz br_if $break|0 - block - i32.const 3 - global.set $~lib/argc - local.get $3 - local.get $2 - i32.const 3 - i32.shl - i32.add - i64.load - local.get $2 - local.get $0 - local.get $1 - call_indirect (type $FUNCSIG$vjii) - end + i32.const 3 + global.set $~lib/argc + local.get $4 + local.get $5 + i32.const 3 + i32.shl + i32.add + i64.load + local.get $5 + local.get $3 local.get $2 + call_indirect (type $FUNCSIG$vjii) + local.get $5 i32.const 1 i32.add - local.set $2 + local.set $5 br $repeat|0 unreachable end unreachable end + local.get $3 + call $~lib/rt/purerc/__release ) - (func $std/typedarray/testArrayForEach<~lib/typedarray/Int64Array,i64> (; 339 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayForEach<~lib/typedarray/Int64Array,i64> (; 345 ;) (type $FUNCSIG$v) (local $0 i32) + (local $1 i32) i32.const 0 global.set $std/typedarray/forEachCallCount i32.const 0 i32.const 3 call $~lib/typedarray/Int64Array#constructor - local.set $0 - local.get $0 + local.tee $0 + call $~lib/rt/purerc/__retain + local.set $1 + local.get $1 global.set $std/typedarray/forEachSelf - local.get $0 + local.get $1 i32.const 0 global.get $std/typedarray/forEachValues i32.const 0 call $~lib/array/Array#__get i64.extend_i32_s call $~lib/typedarray/Int64Array#__set - local.get $0 + local.get $1 i32.const 1 global.get $std/typedarray/forEachValues i32.const 1 call $~lib/array/Array#__get i64.extend_i32_s call $~lib/typedarray/Int64Array#__set - local.get $0 + local.get $1 i32.const 2 global.get $std/typedarray/forEachValues i32.const 2 call $~lib/array/Array#__get i64.extend_i32_s call $~lib/typedarray/Int64Array#__set - local.get $0 + local.get $1 i32.const 108 call $~lib/typedarray/Int64Array#forEach global.get $std/typedarray/forEachCallCount @@ -12973,16 +16139,23 @@ i32.eq i32.eqz if - i32.const 1112 + i32.const 1320 i32.const 24 i32.const 430 i32.const 2 call $~lib/builtins/abort unreachable end + local.get $0 + call $~lib/rt/purerc/__release + local.get $1 + call $~lib/rt/purerc/__release ) - (func $std/typedarray/testArrayForEach<~lib/typedarray/Uint64Array,u64>~anonymous|0 (; 340 ;) (type $FUNCSIG$vjii) (param $0 i64) (param $1 i32) (param $2 i32) + (func $std/typedarray/testArrayForEach<~lib/typedarray/Uint64Array,u64>~anonymous|0 (; 346 ;) (type $FUNCSIG$vjii) (param $0 i64) (param $1 i32) (param $2 i32) (local $3 i32) + local.get $2 + call $~lib/rt/purerc/__retain + drop global.get $std/typedarray/forEachValues local.get $1 call $~lib/array/Array#__get @@ -12993,7 +16166,7 @@ i64.eq i32.eqz if - i32.const 904 + i32.const 1112 i32.const 24 i32.const 425 i32.const 4 @@ -13005,7 +16178,7 @@ i32.eq i32.eqz if - i32.const 968 + i32.const 1176 i32.const 24 i32.const 426 i32.const 4 @@ -13017,7 +16190,7 @@ i32.eq i32.eqz if - i32.const 1032 + i32.const 1240 i32.const 24 i32.const 427 i32.const 4 @@ -13028,84 +16201,96 @@ i32.const 1 i32.add global.set $std/typedarray/forEachCallCount + local.get $2 + call $~lib/rt/purerc/__release ) - (func $~lib/typedarray/Uint64Array#forEach (; 341 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/typedarray/Uint64Array#forEach (; 347 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) + (local $5 i32) + (local $6 i32) local.get $0 - i32.load offset=4 + call $~lib/rt/purerc/__retain local.set $3 + local.get $1 + local.set $2 + local.get $3 + i32.load offset=4 + local.set $4 block $break|0 block i32.const 0 - local.set $2 - local.get $0 + local.set $5 + local.get $3 call $~lib/typedarray/Uint64Array#get:length - local.set $4 + local.set $6 end loop $repeat|0 - local.get $2 - local.get $4 + local.get $5 + local.get $6 i32.lt_s i32.eqz br_if $break|0 - block - i32.const 3 - global.set $~lib/argc - local.get $3 - local.get $2 - i32.const 3 - i32.shl - i32.add - i64.load - local.get $2 - local.get $0 - local.get $1 - call_indirect (type $FUNCSIG$vjii) - end + i32.const 3 + global.set $~lib/argc + local.get $4 + local.get $5 + i32.const 3 + i32.shl + i32.add + i64.load + local.get $5 + local.get $3 local.get $2 + call_indirect (type $FUNCSIG$vjii) + local.get $5 i32.const 1 i32.add - local.set $2 + local.set $5 br $repeat|0 unreachable end unreachable end + local.get $3 + call $~lib/rt/purerc/__release ) - (func $std/typedarray/testArrayForEach<~lib/typedarray/Uint64Array,u64> (; 342 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayForEach<~lib/typedarray/Uint64Array,u64> (; 348 ;) (type $FUNCSIG$v) (local $0 i32) + (local $1 i32) i32.const 0 global.set $std/typedarray/forEachCallCount i32.const 0 i32.const 3 call $~lib/typedarray/Uint64Array#constructor - local.set $0 - local.get $0 + local.tee $0 + call $~lib/rt/purerc/__retain + local.set $1 + local.get $1 global.set $std/typedarray/forEachSelf - local.get $0 + local.get $1 i32.const 0 global.get $std/typedarray/forEachValues i32.const 0 call $~lib/array/Array#__get i64.extend_i32_s call $~lib/typedarray/Uint64Array#__set - local.get $0 + local.get $1 i32.const 1 global.get $std/typedarray/forEachValues i32.const 1 call $~lib/array/Array#__get i64.extend_i32_s call $~lib/typedarray/Uint64Array#__set - local.get $0 + local.get $1 i32.const 2 global.get $std/typedarray/forEachValues i32.const 2 call $~lib/array/Array#__get i64.extend_i32_s call $~lib/typedarray/Uint64Array#__set - local.get $0 + local.get $1 i32.const 109 call $~lib/typedarray/Uint64Array#forEach global.get $std/typedarray/forEachCallCount @@ -13113,16 +16298,23 @@ i32.eq i32.eqz if - i32.const 1112 + i32.const 1320 i32.const 24 i32.const 430 i32.const 2 call $~lib/builtins/abort unreachable end + local.get $0 + call $~lib/rt/purerc/__release + local.get $1 + call $~lib/rt/purerc/__release ) - (func $std/typedarray/testArrayForEach<~lib/typedarray/Float32Array,f32>~anonymous|0 (; 343 ;) (type $FUNCSIG$vfii) (param $0 f32) (param $1 i32) (param $2 i32) + (func $std/typedarray/testArrayForEach<~lib/typedarray/Float32Array,f32>~anonymous|0 (; 349 ;) (type $FUNCSIG$vfii) (param $0 f32) (param $1 i32) (param $2 i32) (local $3 i32) + local.get $2 + call $~lib/rt/purerc/__retain + drop global.get $std/typedarray/forEachValues local.get $1 call $~lib/array/Array#__get @@ -13133,7 +16325,7 @@ f32.eq i32.eqz if - i32.const 904 + i32.const 1112 i32.const 24 i32.const 425 i32.const 4 @@ -13145,7 +16337,7 @@ i32.eq i32.eqz if - i32.const 968 + i32.const 1176 i32.const 24 i32.const 426 i32.const 4 @@ -13157,7 +16349,7 @@ i32.eq i32.eqz if - i32.const 1032 + i32.const 1240 i32.const 24 i32.const 427 i32.const 4 @@ -13168,84 +16360,96 @@ i32.const 1 i32.add global.set $std/typedarray/forEachCallCount + local.get $2 + call $~lib/rt/purerc/__release ) - (func $~lib/typedarray/Float32Array#forEach (; 344 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/typedarray/Float32Array#forEach (; 350 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) + (local $5 i32) + (local $6 i32) local.get $0 - i32.load offset=4 + call $~lib/rt/purerc/__retain local.set $3 + local.get $1 + local.set $2 + local.get $3 + i32.load offset=4 + local.set $4 block $break|0 block i32.const 0 - local.set $2 - local.get $0 + local.set $5 + local.get $3 call $~lib/typedarray/Float32Array#get:length - local.set $4 + local.set $6 end loop $repeat|0 - local.get $2 - local.get $4 + local.get $5 + local.get $6 i32.lt_s i32.eqz br_if $break|0 - block - i32.const 3 - global.set $~lib/argc - local.get $3 - local.get $2 - i32.const 2 - i32.shl - i32.add - f32.load - local.get $2 - local.get $0 - local.get $1 - call_indirect (type $FUNCSIG$vfii) - end + i32.const 3 + global.set $~lib/argc + local.get $4 + local.get $5 + i32.const 2 + i32.shl + i32.add + f32.load + local.get $5 + local.get $3 local.get $2 + call_indirect (type $FUNCSIG$vfii) + local.get $5 i32.const 1 i32.add - local.set $2 + local.set $5 br $repeat|0 unreachable end unreachable end + local.get $3 + call $~lib/rt/purerc/__release ) - (func $std/typedarray/testArrayForEach<~lib/typedarray/Float32Array,f32> (; 345 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayForEach<~lib/typedarray/Float32Array,f32> (; 351 ;) (type $FUNCSIG$v) (local $0 i32) + (local $1 i32) i32.const 0 global.set $std/typedarray/forEachCallCount i32.const 0 i32.const 3 call $~lib/typedarray/Float32Array#constructor - local.set $0 - local.get $0 + local.tee $0 + call $~lib/rt/purerc/__retain + local.set $1 + local.get $1 global.set $std/typedarray/forEachSelf - local.get $0 + local.get $1 i32.const 0 global.get $std/typedarray/forEachValues i32.const 0 call $~lib/array/Array#__get f32.convert_i32_s call $~lib/typedarray/Float32Array#__set - local.get $0 + local.get $1 i32.const 1 global.get $std/typedarray/forEachValues i32.const 1 call $~lib/array/Array#__get f32.convert_i32_s call $~lib/typedarray/Float32Array#__set - local.get $0 + local.get $1 i32.const 2 global.get $std/typedarray/forEachValues i32.const 2 call $~lib/array/Array#__get f32.convert_i32_s call $~lib/typedarray/Float32Array#__set - local.get $0 + local.get $1 i32.const 110 call $~lib/typedarray/Float32Array#forEach global.get $std/typedarray/forEachCallCount @@ -13253,16 +16457,23 @@ i32.eq i32.eqz if - i32.const 1112 + i32.const 1320 i32.const 24 i32.const 430 i32.const 2 call $~lib/builtins/abort unreachable end + local.get $0 + call $~lib/rt/purerc/__release + local.get $1 + call $~lib/rt/purerc/__release ) - (func $std/typedarray/testArrayForEach<~lib/typedarray/Float64Array,f64>~anonymous|0 (; 346 ;) (type $FUNCSIG$vdii) (param $0 f64) (param $1 i32) (param $2 i32) + (func $std/typedarray/testArrayForEach<~lib/typedarray/Float64Array,f64>~anonymous|0 (; 352 ;) (type $FUNCSIG$vdii) (param $0 f64) (param $1 i32) (param $2 i32) (local $3 i32) + local.get $2 + call $~lib/rt/purerc/__retain + drop global.get $std/typedarray/forEachValues local.get $1 call $~lib/array/Array#__get @@ -13273,7 +16484,7 @@ f64.eq i32.eqz if - i32.const 904 + i32.const 1112 i32.const 24 i32.const 425 i32.const 4 @@ -13285,7 +16496,7 @@ i32.eq i32.eqz if - i32.const 968 + i32.const 1176 i32.const 24 i32.const 426 i32.const 4 @@ -13297,7 +16508,7 @@ i32.eq i32.eqz if - i32.const 1032 + i32.const 1240 i32.const 24 i32.const 427 i32.const 4 @@ -13308,84 +16519,96 @@ i32.const 1 i32.add global.set $std/typedarray/forEachCallCount + local.get $2 + call $~lib/rt/purerc/__release ) - (func $~lib/typedarray/Float64Array#forEach (; 347 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/typedarray/Float64Array#forEach (; 353 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) + (local $5 i32) + (local $6 i32) local.get $0 - i32.load offset=4 + call $~lib/rt/purerc/__retain local.set $3 + local.get $1 + local.set $2 + local.get $3 + i32.load offset=4 + local.set $4 block $break|0 block i32.const 0 - local.set $2 - local.get $0 + local.set $5 + local.get $3 call $~lib/typedarray/Float64Array#get:length - local.set $4 + local.set $6 end loop $repeat|0 - local.get $2 - local.get $4 + local.get $5 + local.get $6 i32.lt_s i32.eqz br_if $break|0 - block - i32.const 3 - global.set $~lib/argc - local.get $3 - local.get $2 - i32.const 3 - i32.shl - i32.add - f64.load - local.get $2 - local.get $0 - local.get $1 - call_indirect (type $FUNCSIG$vdii) - end + i32.const 3 + global.set $~lib/argc + local.get $4 + local.get $5 + i32.const 3 + i32.shl + i32.add + f64.load + local.get $5 + local.get $3 local.get $2 + call_indirect (type $FUNCSIG$vdii) + local.get $5 i32.const 1 i32.add - local.set $2 + local.set $5 br $repeat|0 unreachable end unreachable end + local.get $3 + call $~lib/rt/purerc/__release ) - (func $std/typedarray/testArrayForEach<~lib/typedarray/Float64Array,f64> (; 348 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayForEach<~lib/typedarray/Float64Array,f64> (; 354 ;) (type $FUNCSIG$v) (local $0 i32) + (local $1 i32) i32.const 0 global.set $std/typedarray/forEachCallCount i32.const 0 i32.const 3 call $~lib/typedarray/Float64Array#constructor - local.set $0 - local.get $0 + local.tee $0 + call $~lib/rt/purerc/__retain + local.set $1 + local.get $1 global.set $std/typedarray/forEachSelf - local.get $0 + local.get $1 i32.const 0 global.get $std/typedarray/forEachValues i32.const 0 call $~lib/array/Array#__get f64.convert_i32_s call $~lib/typedarray/Float64Array#__set - local.get $0 + local.get $1 i32.const 1 global.get $std/typedarray/forEachValues i32.const 1 call $~lib/array/Array#__get f64.convert_i32_s call $~lib/typedarray/Float64Array#__set - local.get $0 + local.get $1 i32.const 2 global.get $std/typedarray/forEachValues i32.const 2 call $~lib/array/Array#__get f64.convert_i32_s call $~lib/typedarray/Float64Array#__set - local.get $0 + local.get $1 i32.const 111 call $~lib/typedarray/Float64Array#forEach global.get $std/typedarray/forEachCallCount @@ -13393,15 +16616,19 @@ i32.eq i32.eqz if - i32.const 1112 + i32.const 1320 i32.const 24 i32.const 430 i32.const 2 call $~lib/builtins/abort unreachable end + local.get $0 + call $~lib/rt/purerc/__release + local.get $1 + call $~lib/rt/purerc/__release ) - (func $~lib/typedarray/Int8Array#reverse (; 349 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/typedarray/Int8Array#reverse (; 355 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -13409,28 +16636,29 @@ (local $5 i32) (local $6 i32) (local $7 i32) - local.get $0 - local.set $1 - local.get $1 - i32.load offset=4 - local.set $2 - block $break|0 - block - i32.const 0 - local.set $3 - local.get $1 - call $~lib/typedarray/Int8Array#get:length - i32.const 1 - i32.sub - local.set $4 - end - loop $repeat|0 - local.get $3 - local.get $4 - i32.lt_s - i32.eqz - br_if $break|0 + block $~lib/typedarray/REVERSE<~lib/typedarray/Int8Array,i8>|inlined.0 (result i32) + local.get $0 + call $~lib/rt/purerc/__retain + local.set $1 + local.get $1 + i32.load offset=4 + local.set $2 + block $break|0 block + i32.const 0 + local.set $3 + local.get $1 + call $~lib/typedarray/Int8Array#get:length + i32.const 1 + i32.sub + local.set $4 + end + loop $repeat|0 + local.get $3 + local.get $4 + i32.lt_s + i32.eqz + br_if $break|0 local.get $2 local.get $3 i32.const 0 @@ -13453,100 +16681,112 @@ local.get $6 local.get $7 i32.store8 + block + local.get $3 + i32.const 1 + i32.add + local.set $3 + local.get $4 + i32.const 1 + i32.sub + local.set $4 + end + br $repeat|0 + unreachable end - block - local.get $3 - i32.const 1 - i32.add - local.set $3 - local.get $4 - i32.const 1 - i32.sub - local.set $4 - end - br $repeat|0 unreachable end - unreachable + local.get $1 end + local.tee $2 + call $~lib/rt/purerc/__retain + local.set $1 + local.get $2 + call $~lib/rt/purerc/__release local.get $1 ) - (func $std/typedarray/testArrayReverse<~lib/typedarray/Int8Array,i8> (; 350 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayReverse<~lib/typedarray/Int8Array,i8> (; 356 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) global.get $std/typedarray/testArrayReverseValues + call $~lib/rt/purerc/__retain local.set $0 i32.const 0 i32.const 9 call $~lib/typedarray/Int8Array#constructor - local.set $1 + local.tee $1 + call $~lib/rt/purerc/__retain + local.set $2 i32.const 0 i32.const 9 call $~lib/typedarray/Int8Array#constructor - local.set $2 + local.tee $3 + call $~lib/rt/purerc/__retain + local.set $4 i32.const 0 - local.set $3 + local.set $5 block $break|0 i32.const 0 - local.set $3 + local.set $5 loop $repeat|0 - local.get $3 + local.get $5 i32.const 9 i32.lt_s i32.eqz br_if $break|0 - block - local.get $1 - local.get $3 - local.get $0 - local.get $3 - call $~lib/array/Array#__get - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s - call $~lib/typedarray/Int8Array#__set - local.get $2 - local.get $3 - local.get $0 - local.get $3 - call $~lib/array/Array#__get - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s - call $~lib/typedarray/Int8Array#__set - end - local.get $3 + local.get $2 + local.get $5 + local.get $0 + local.get $5 + call $~lib/array/Array#__get + i32.const 24 + i32.shl + i32.const 24 + i32.shr_s + call $~lib/typedarray/Int8Array#__set + local.get $4 + local.get $5 + local.get $0 + local.get $5 + call $~lib/array/Array#__get + i32.const 24 + i32.shl + i32.const 24 + i32.shr_s + call $~lib/typedarray/Int8Array#__set + local.get $5 i32.const 1 i32.add - local.set $3 + local.set $5 br $repeat|0 unreachable end unreachable end - local.get $1 + local.get $2 call $~lib/typedarray/Int8Array#reverse - drop + call $~lib/rt/purerc/__release block $break|1 i32.const 0 - local.set $3 + local.set $5 loop $repeat|1 - local.get $3 + local.get $5 i32.const 9 i32.lt_s i32.eqz br_if $break|1 - local.get $1 - local.get $3 + local.get $2 + local.get $5 call $~lib/typedarray/Int8Array#__get local.get $0 i32.const 8 - local.get $3 + local.get $5 i32.sub call $~lib/array/Array#__get i32.const 24 @@ -13556,86 +16796,101 @@ i32.eq i32.eqz if - i32.const 1272 + i32.const 1480 i32.const 24 - i32.const 461 + i32.const 460 i32.const 4 call $~lib/builtins/abort unreachable end - local.get $3 + local.get $5 i32.const 1 i32.add - local.set $3 + local.set $5 br $repeat|1 unreachable end unreachable end - local.get $2 + local.get $4 i32.const 4 i32.const 8 call $~lib/typedarray/Int8Array#subarray + local.tee $6 call $~lib/typedarray/Int8Array#reverse - local.set $4 - local.get $4 + local.set $7 + local.get $7 i32.const 0 call $~lib/typedarray/Int8Array#__get i32.const 8 i32.eq i32.eqz if - i32.const 1360 + i32.const 1568 i32.const 24 - i32.const 466 + i32.const 465 i32.const 2 call $~lib/builtins/abort unreachable end - local.get $4 + local.get $7 i32.const 1 call $~lib/typedarray/Int8Array#__get i32.const 7 i32.eq i32.eqz if - i32.const 1360 + i32.const 1568 i32.const 24 - i32.const 467 + i32.const 466 i32.const 2 call $~lib/builtins/abort unreachable end - local.get $4 + local.get $7 i32.const 2 call $~lib/typedarray/Int8Array#__get i32.const 6 i32.eq i32.eqz if - i32.const 1360 + i32.const 1568 i32.const 24 - i32.const 468 + i32.const 467 i32.const 2 call $~lib/builtins/abort unreachable end - local.get $4 + local.get $7 i32.const 3 call $~lib/typedarray/Int8Array#__get i32.const 5 i32.eq i32.eqz if - i32.const 1360 + i32.const 1568 i32.const 24 - i32.const 469 + i32.const 468 i32.const 2 call $~lib/builtins/abort unreachable end + local.get $1 + call $~lib/rt/purerc/__release + local.get $3 + call $~lib/rt/purerc/__release + local.get $6 + call $~lib/rt/purerc/__release + local.get $0 + call $~lib/rt/purerc/__release + local.get $2 + call $~lib/rt/purerc/__release + local.get $4 + call $~lib/rt/purerc/__release + local.get $7 + call $~lib/rt/purerc/__release ) - (func $~lib/typedarray/Uint8Array#reverse (; 351 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/typedarray/Uint8Array#reverse (; 357 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -13643,28 +16898,29 @@ (local $5 i32) (local $6 i32) (local $7 i32) - local.get $0 - local.set $1 - local.get $1 - i32.load offset=4 - local.set $2 - block $break|0 - block - i32.const 0 - local.set $3 - local.get $1 - call $~lib/typedarray/Uint8Array#get:length - i32.const 1 - i32.sub - local.set $4 - end - loop $repeat|0 - local.get $3 - local.get $4 - i32.lt_s - i32.eqz - br_if $break|0 + block $~lib/typedarray/REVERSE<~lib/typedarray/Uint8Array,u8>|inlined.0 (result i32) + local.get $0 + call $~lib/rt/purerc/__retain + local.set $1 + local.get $1 + i32.load offset=4 + local.set $2 + block $break|0 block + i32.const 0 + local.set $3 + local.get $1 + call $~lib/typedarray/Uint8Array#get:length + i32.const 1 + i32.sub + local.set $4 + end + loop $repeat|0 + local.get $3 + local.get $4 + i32.lt_s + i32.eqz + br_if $break|0 local.get $2 local.get $3 i32.const 0 @@ -13687,225 +16943,226 @@ local.get $6 local.get $7 i32.store8 + block + local.get $3 + i32.const 1 + i32.add + local.set $3 + local.get $4 + i32.const 1 + i32.sub + local.set $4 + end + br $repeat|0 + unreachable end - block - local.get $3 - i32.const 1 - i32.add - local.set $3 - local.get $4 - i32.const 1 - i32.sub - local.set $4 - end - br $repeat|0 unreachable end - unreachable + local.get $1 end + local.tee $2 + call $~lib/rt/purerc/__retain + local.set $1 + local.get $2 + call $~lib/rt/purerc/__release local.get $1 ) - (func $~lib/typedarray/Uint8Array#subarray (; 352 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/typedarray/Uint8Array#subarray (; 358 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) (local $6 i32) (local $7 i32) (local $8 i32) - (local $9 i32) - (local $10 i32) - (local $11 i32) - (local $12 i32) - local.get $0 - local.set $5 - local.get $1 - local.set $4 - local.get $2 - local.set $3 - local.get $5 - call $~lib/typedarray/Uint8Array#get:length - local.set $6 - local.get $4 - i32.const 0 - i32.lt_s - if - local.get $6 + block $~lib/typedarray/SUBARRAY<~lib/typedarray/Uint8Array,u8>|inlined.0 (result i32) + local.get $0 + call $~lib/rt/purerc/__retain + local.set $5 + local.get $1 + local.set $4 + local.get $2 + local.set $3 + local.get $5 + call $~lib/typedarray/Uint8Array#get:length + local.set $6 local.get $4 - i32.add - local.tee $7 i32.const 0 - local.tee $8 - local.get $7 - local.get $8 - i32.gt_s - select - local.set $4 - else - local.get $4 - local.tee $7 - local.get $6 - local.tee $8 - local.get $7 - local.get $8 i32.lt_s - select - local.set $4 - end - local.get $3 - i32.const 0 - i32.lt_s - if - local.get $6 - local.get $3 - i32.add - local.tee $7 - local.get $4 - local.tee $8 - local.get $7 - local.get $8 - i32.gt_s - select - local.set $3 - else - local.get $3 - local.tee $7 - local.get $6 - local.tee $8 - local.get $7 - local.get $8 - i32.lt_s - select - local.tee $7 - local.get $4 - local.tee $8 - local.get $7 - local.get $8 - i32.gt_s - select - local.set $3 - end - i32.const 12 - call $~lib/util/runtime/allocate - local.set $7 - local.get $5 - i32.load - local.set $8 - local.get $5 - i32.load offset=4 - local.set $9 - local.get $7 - local.tee $10 - local.get $8 - local.tee $11 - local.get $10 - i32.load - local.tee $12 - i32.ne - if (result i32) - local.get $12 if - local.get $12 - local.get $10 - call $~lib/collector/dummy/__ref_unlink + local.get $6 + local.get $4 + i32.add + local.tee $7 + i32.const 0 + local.tee $8 + local.get $7 + local.get $8 + i32.gt_s + select + local.set $4 + else + local.get $4 + local.tee $7 + local.get $6 + local.tee $8 + local.get $7 + local.get $8 + i32.lt_s + select + local.set $4 end - local.get $11 - local.get $10 - call $~lib/collector/dummy/__ref_link - local.get $11 - else - local.get $11 + local.get $3 + i32.const 0 + i32.lt_s + if + local.get $6 + local.get $3 + i32.add + local.tee $7 + local.get $4 + local.tee $8 + local.get $7 + local.get $8 + i32.gt_s + select + local.set $3 + else + local.get $3 + local.tee $7 + local.get $6 + local.tee $8 + local.get $7 + local.get $8 + i32.lt_s + select + local.tee $7 + local.get $4 + local.tee $8 + local.get $7 + local.get $8 + i32.gt_s + select + local.set $3 + end + i32.const 12 + i32.const 18 + call $~lib/rt/tlsf/__alloc + local.set $7 + local.get $7 + local.tee $8 + local.get $5 + i32.load + local.get $8 + i32.load + call $~lib/rt/purerc/__retainRelease + i32.store + local.get $7 + local.get $5 + i32.load offset=4 + local.get $4 + i32.const 0 + i32.shl + i32.add + i32.store offset=4 + local.get $7 + local.get $3 + local.get $4 + i32.sub + i32.const 0 + i32.shl + i32.store offset=8 + local.get $7 + call $~lib/rt/purerc/__retain + local.set $8 + local.get $5 + call $~lib/rt/purerc/__release + local.get $8 end - i32.store + local.tee $7 + call $~lib/rt/purerc/__retain + local.set $6 local.get $7 - local.get $9 - local.get $4 - i32.const 0 - i32.shl - i32.add - i32.store offset=4 - local.get $7 - local.get $3 - local.get $4 - i32.sub - i32.const 0 - i32.shl - i32.store offset=8 - local.get $7 - i32.const 18 - call $~lib/util/runtime/register + call $~lib/rt/purerc/__release + local.get $6 ) - (func $std/typedarray/testArrayReverse<~lib/typedarray/Uint8Array,u8> (; 353 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayReverse<~lib/typedarray/Uint8Array,u8> (; 359 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) global.get $std/typedarray/testArrayReverseValues + call $~lib/rt/purerc/__retain local.set $0 i32.const 0 i32.const 9 call $~lib/typedarray/Uint8Array#constructor - local.set $1 + local.tee $1 + call $~lib/rt/purerc/__retain + local.set $2 i32.const 0 i32.const 9 call $~lib/typedarray/Uint8Array#constructor - local.set $2 + local.tee $3 + call $~lib/rt/purerc/__retain + local.set $4 i32.const 0 - local.set $3 + local.set $5 block $break|0 i32.const 0 - local.set $3 + local.set $5 loop $repeat|0 - local.get $3 + local.get $5 i32.const 9 i32.lt_s i32.eqz br_if $break|0 - block - local.get $1 - local.get $3 - local.get $0 - local.get $3 - call $~lib/array/Array#__get - i32.const 255 - i32.and - call $~lib/typedarray/Uint8Array#__set - local.get $2 - local.get $3 - local.get $0 - local.get $3 - call $~lib/array/Array#__get - i32.const 255 - i32.and - call $~lib/typedarray/Uint8Array#__set - end - local.get $3 + local.get $2 + local.get $5 + local.get $0 + local.get $5 + call $~lib/array/Array#__get + i32.const 255 + i32.and + call $~lib/typedarray/Uint8Array#__set + local.get $4 + local.get $5 + local.get $0 + local.get $5 + call $~lib/array/Array#__get + i32.const 255 + i32.and + call $~lib/typedarray/Uint8Array#__set + local.get $5 i32.const 1 i32.add - local.set $3 + local.set $5 br $repeat|0 unreachable end unreachable end - local.get $1 + local.get $2 call $~lib/typedarray/Uint8Array#reverse - drop + call $~lib/rt/purerc/__release block $break|1 i32.const 0 - local.set $3 + local.set $5 loop $repeat|1 - local.get $3 + local.get $5 i32.const 9 i32.lt_s i32.eqz br_if $break|1 - local.get $1 - local.get $3 + local.get $2 + local.get $5 call $~lib/typedarray/Uint8Array#__get local.get $0 i32.const 8 - local.get $3 + local.get $5 i32.sub call $~lib/array/Array#__get i32.const 255 @@ -13913,86 +17170,101 @@ i32.eq i32.eqz if - i32.const 1272 + i32.const 1480 i32.const 24 - i32.const 461 + i32.const 460 i32.const 4 call $~lib/builtins/abort unreachable end - local.get $3 + local.get $5 i32.const 1 i32.add - local.set $3 + local.set $5 br $repeat|1 unreachable end unreachable end - local.get $2 + local.get $4 i32.const 4 i32.const 8 call $~lib/typedarray/Uint8Array#subarray + local.tee $6 call $~lib/typedarray/Uint8Array#reverse - local.set $4 - local.get $4 + local.set $7 + local.get $7 i32.const 0 call $~lib/typedarray/Uint8Array#__get i32.const 8 i32.eq i32.eqz if - i32.const 1360 + i32.const 1568 i32.const 24 - i32.const 466 + i32.const 465 i32.const 2 call $~lib/builtins/abort unreachable end - local.get $4 + local.get $7 i32.const 1 call $~lib/typedarray/Uint8Array#__get i32.const 7 i32.eq i32.eqz if - i32.const 1360 + i32.const 1568 i32.const 24 - i32.const 467 + i32.const 466 i32.const 2 call $~lib/builtins/abort unreachable end - local.get $4 + local.get $7 i32.const 2 call $~lib/typedarray/Uint8Array#__get i32.const 6 i32.eq i32.eqz if - i32.const 1360 + i32.const 1568 i32.const 24 - i32.const 468 + i32.const 467 i32.const 2 call $~lib/builtins/abort unreachable end - local.get $4 + local.get $7 i32.const 3 call $~lib/typedarray/Uint8Array#__get i32.const 5 i32.eq i32.eqz if - i32.const 1360 + i32.const 1568 i32.const 24 - i32.const 469 + i32.const 468 i32.const 2 call $~lib/builtins/abort unreachable end + local.get $1 + call $~lib/rt/purerc/__release + local.get $3 + call $~lib/rt/purerc/__release + local.get $6 + call $~lib/rt/purerc/__release + local.get $0 + call $~lib/rt/purerc/__release + local.get $2 + call $~lib/rt/purerc/__release + local.get $4 + call $~lib/rt/purerc/__release + local.get $7 + call $~lib/rt/purerc/__release ) - (func $~lib/typedarray/Uint8ClampedArray#reverse (; 354 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/typedarray/Uint8ClampedArray#reverse (; 360 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -14000,28 +17272,29 @@ (local $5 i32) (local $6 i32) (local $7 i32) - local.get $0 - local.set $1 - local.get $1 - i32.load offset=4 - local.set $2 - block $break|0 - block - i32.const 0 - local.set $3 - local.get $1 - call $~lib/typedarray/Uint8ClampedArray#get:length - i32.const 1 - i32.sub - local.set $4 - end - loop $repeat|0 - local.get $3 - local.get $4 - i32.lt_s - i32.eqz - br_if $break|0 + block $~lib/typedarray/REVERSE<~lib/typedarray/Uint8ClampedArray,u8>|inlined.0 (result i32) + local.get $0 + call $~lib/rt/purerc/__retain + local.set $1 + local.get $1 + i32.load offset=4 + local.set $2 + block $break|0 block + i32.const 0 + local.set $3 + local.get $1 + call $~lib/typedarray/Uint8ClampedArray#get:length + i32.const 1 + i32.sub + local.set $4 + end + loop $repeat|0 + local.get $3 + local.get $4 + i32.lt_s + i32.eqz + br_if $break|0 local.get $2 local.get $3 i32.const 0 @@ -14044,225 +17317,226 @@ local.get $6 local.get $7 i32.store8 + block + local.get $3 + i32.const 1 + i32.add + local.set $3 + local.get $4 + i32.const 1 + i32.sub + local.set $4 + end + br $repeat|0 + unreachable end - block - local.get $3 - i32.const 1 - i32.add - local.set $3 - local.get $4 - i32.const 1 - i32.sub - local.set $4 - end - br $repeat|0 unreachable end - unreachable + local.get $1 end + local.tee $2 + call $~lib/rt/purerc/__retain + local.set $1 + local.get $2 + call $~lib/rt/purerc/__release local.get $1 ) - (func $~lib/typedarray/Uint8ClampedArray#subarray (; 355 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/typedarray/Uint8ClampedArray#subarray (; 361 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) (local $6 i32) (local $7 i32) (local $8 i32) - (local $9 i32) - (local $10 i32) - (local $11 i32) - (local $12 i32) - local.get $0 - local.set $5 - local.get $1 - local.set $4 - local.get $2 - local.set $3 - local.get $5 - call $~lib/typedarray/Uint8ClampedArray#get:length - local.set $6 - local.get $4 - i32.const 0 - i32.lt_s - if - local.get $6 + block $~lib/typedarray/SUBARRAY<~lib/typedarray/Uint8ClampedArray,u8>|inlined.0 (result i32) + local.get $0 + call $~lib/rt/purerc/__retain + local.set $5 + local.get $1 + local.set $4 + local.get $2 + local.set $3 + local.get $5 + call $~lib/typedarray/Uint8ClampedArray#get:length + local.set $6 local.get $4 - i32.add - local.tee $7 i32.const 0 - local.tee $8 - local.get $7 - local.get $8 - i32.gt_s - select - local.set $4 - else - local.get $4 - local.tee $7 - local.get $6 - local.tee $8 - local.get $7 - local.get $8 i32.lt_s - select - local.set $4 - end - local.get $3 - i32.const 0 - i32.lt_s - if - local.get $6 - local.get $3 - i32.add - local.tee $7 - local.get $4 - local.tee $8 - local.get $7 - local.get $8 - i32.gt_s - select - local.set $3 - else - local.get $3 - local.tee $7 - local.get $6 - local.tee $8 - local.get $7 - local.get $8 - i32.lt_s - select - local.tee $7 - local.get $4 - local.tee $8 - local.get $7 - local.get $8 - i32.gt_s - select - local.set $3 - end - i32.const 12 - call $~lib/util/runtime/allocate - local.set $7 - local.get $5 - i32.load - local.set $8 - local.get $5 - i32.load offset=4 - local.set $9 - local.get $7 - local.tee $10 - local.get $8 - local.tee $11 - local.get $10 - i32.load - local.tee $12 - i32.ne - if (result i32) - local.get $12 if - local.get $12 - local.get $10 - call $~lib/collector/dummy/__ref_unlink + local.get $6 + local.get $4 + i32.add + local.tee $7 + i32.const 0 + local.tee $8 + local.get $7 + local.get $8 + i32.gt_s + select + local.set $4 + else + local.get $4 + local.tee $7 + local.get $6 + local.tee $8 + local.get $7 + local.get $8 + i32.lt_s + select + local.set $4 end - local.get $11 - local.get $10 - call $~lib/collector/dummy/__ref_link - local.get $11 - else - local.get $11 + local.get $3 + i32.const 0 + i32.lt_s + if + local.get $6 + local.get $3 + i32.add + local.tee $7 + local.get $4 + local.tee $8 + local.get $7 + local.get $8 + i32.gt_s + select + local.set $3 + else + local.get $3 + local.tee $7 + local.get $6 + local.tee $8 + local.get $7 + local.get $8 + i32.lt_s + select + local.tee $7 + local.get $4 + local.tee $8 + local.get $7 + local.get $8 + i32.gt_s + select + local.set $3 + end + i32.const 12 + i32.const 19 + call $~lib/rt/tlsf/__alloc + local.set $7 + local.get $7 + local.tee $8 + local.get $5 + i32.load + local.get $8 + i32.load + call $~lib/rt/purerc/__retainRelease + i32.store + local.get $7 + local.get $5 + i32.load offset=4 + local.get $4 + i32.const 0 + i32.shl + i32.add + i32.store offset=4 + local.get $7 + local.get $3 + local.get $4 + i32.sub + i32.const 0 + i32.shl + i32.store offset=8 + local.get $7 + call $~lib/rt/purerc/__retain + local.set $8 + local.get $5 + call $~lib/rt/purerc/__release + local.get $8 end - i32.store + local.tee $7 + call $~lib/rt/purerc/__retain + local.set $6 local.get $7 - local.get $9 - local.get $4 - i32.const 0 - i32.shl - i32.add - i32.store offset=4 - local.get $7 - local.get $3 - local.get $4 - i32.sub - i32.const 0 - i32.shl - i32.store offset=8 - local.get $7 - i32.const 19 - call $~lib/util/runtime/register + call $~lib/rt/purerc/__release + local.get $6 ) - (func $std/typedarray/testArrayReverse<~lib/typedarray/Uint8ClampedArray,u8> (; 356 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayReverse<~lib/typedarray/Uint8ClampedArray,u8> (; 362 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) global.get $std/typedarray/testArrayReverseValues + call $~lib/rt/purerc/__retain local.set $0 i32.const 0 i32.const 9 call $~lib/typedarray/Uint8ClampedArray#constructor - local.set $1 + local.tee $1 + call $~lib/rt/purerc/__retain + local.set $2 i32.const 0 i32.const 9 call $~lib/typedarray/Uint8ClampedArray#constructor - local.set $2 + local.tee $3 + call $~lib/rt/purerc/__retain + local.set $4 i32.const 0 - local.set $3 + local.set $5 block $break|0 i32.const 0 - local.set $3 + local.set $5 loop $repeat|0 - local.get $3 + local.get $5 i32.const 9 i32.lt_s i32.eqz br_if $break|0 - block - local.get $1 - local.get $3 - local.get $0 - local.get $3 - call $~lib/array/Array#__get - i32.const 255 - i32.and - call $~lib/typedarray/Uint8ClampedArray#__set - local.get $2 - local.get $3 - local.get $0 - local.get $3 - call $~lib/array/Array#__get - i32.const 255 - i32.and - call $~lib/typedarray/Uint8ClampedArray#__set - end - local.get $3 + local.get $2 + local.get $5 + local.get $0 + local.get $5 + call $~lib/array/Array#__get + i32.const 255 + i32.and + call $~lib/typedarray/Uint8ClampedArray#__set + local.get $4 + local.get $5 + local.get $0 + local.get $5 + call $~lib/array/Array#__get + i32.const 255 + i32.and + call $~lib/typedarray/Uint8ClampedArray#__set + local.get $5 i32.const 1 i32.add - local.set $3 + local.set $5 br $repeat|0 unreachable end unreachable end - local.get $1 + local.get $2 call $~lib/typedarray/Uint8ClampedArray#reverse - drop + call $~lib/rt/purerc/__release block $break|1 i32.const 0 - local.set $3 + local.set $5 loop $repeat|1 - local.get $3 + local.get $5 i32.const 9 i32.lt_s i32.eqz br_if $break|1 - local.get $1 - local.get $3 + local.get $2 + local.get $5 call $~lib/typedarray/Uint8ClampedArray#__get local.get $0 i32.const 8 - local.get $3 + local.get $5 i32.sub call $~lib/array/Array#__get i32.const 255 @@ -14270,86 +17544,101 @@ i32.eq i32.eqz if - i32.const 1272 + i32.const 1480 i32.const 24 - i32.const 461 + i32.const 460 i32.const 4 call $~lib/builtins/abort unreachable end - local.get $3 + local.get $5 i32.const 1 i32.add - local.set $3 + local.set $5 br $repeat|1 unreachable end unreachable end - local.get $2 + local.get $4 i32.const 4 i32.const 8 call $~lib/typedarray/Uint8ClampedArray#subarray + local.tee $6 call $~lib/typedarray/Uint8ClampedArray#reverse - local.set $4 - local.get $4 + local.set $7 + local.get $7 i32.const 0 call $~lib/typedarray/Uint8ClampedArray#__get i32.const 8 i32.eq i32.eqz if - i32.const 1360 + i32.const 1568 i32.const 24 - i32.const 466 + i32.const 465 i32.const 2 call $~lib/builtins/abort unreachable end - local.get $4 + local.get $7 i32.const 1 call $~lib/typedarray/Uint8ClampedArray#__get i32.const 7 i32.eq i32.eqz if - i32.const 1360 + i32.const 1568 i32.const 24 - i32.const 467 + i32.const 466 i32.const 2 call $~lib/builtins/abort unreachable end - local.get $4 + local.get $7 i32.const 2 call $~lib/typedarray/Uint8ClampedArray#__get i32.const 6 i32.eq i32.eqz if - i32.const 1360 + i32.const 1568 i32.const 24 - i32.const 468 + i32.const 467 i32.const 2 call $~lib/builtins/abort unreachable end - local.get $4 + local.get $7 i32.const 3 call $~lib/typedarray/Uint8ClampedArray#__get i32.const 5 i32.eq i32.eqz if - i32.const 1360 + i32.const 1568 i32.const 24 - i32.const 469 + i32.const 468 i32.const 2 call $~lib/builtins/abort unreachable end + local.get $1 + call $~lib/rt/purerc/__release + local.get $3 + call $~lib/rt/purerc/__release + local.get $6 + call $~lib/rt/purerc/__release + local.get $0 + call $~lib/rt/purerc/__release + local.get $2 + call $~lib/rt/purerc/__release + local.get $4 + call $~lib/rt/purerc/__release + local.get $7 + call $~lib/rt/purerc/__release ) - (func $~lib/typedarray/Int16Array#reverse (; 357 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/typedarray/Int16Array#reverse (; 363 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -14357,28 +17646,29 @@ (local $5 i32) (local $6 i32) (local $7 i32) - local.get $0 - local.set $1 - local.get $1 - i32.load offset=4 - local.set $2 - block $break|0 - block - i32.const 0 - local.set $3 - local.get $1 - call $~lib/typedarray/Int16Array#get:length - i32.const 1 - i32.sub - local.set $4 - end - loop $repeat|0 - local.get $3 - local.get $4 - i32.lt_s - i32.eqz - br_if $break|0 + block $~lib/typedarray/REVERSE<~lib/typedarray/Int16Array,i16>|inlined.0 (result i32) + local.get $0 + call $~lib/rt/purerc/__retain + local.set $1 + local.get $1 + i32.load offset=4 + local.set $2 + block $break|0 block + i32.const 0 + local.set $3 + local.get $1 + call $~lib/typedarray/Int16Array#get:length + i32.const 1 + i32.sub + local.set $4 + end + loop $repeat|0 + local.get $3 + local.get $4 + i32.lt_s + i32.eqz + br_if $break|0 local.get $2 local.get $3 i32.const 1 @@ -14401,229 +17691,230 @@ local.get $6 local.get $7 i32.store16 + block + local.get $3 + i32.const 1 + i32.add + local.set $3 + local.get $4 + i32.const 1 + i32.sub + local.set $4 + end + br $repeat|0 + unreachable end - block - local.get $3 - i32.const 1 - i32.add - local.set $3 - local.get $4 - i32.const 1 - i32.sub - local.set $4 - end - br $repeat|0 unreachable end - unreachable + local.get $1 end + local.tee $2 + call $~lib/rt/purerc/__retain + local.set $1 + local.get $2 + call $~lib/rt/purerc/__release local.get $1 ) - (func $~lib/typedarray/Int16Array#subarray (; 358 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/typedarray/Int16Array#subarray (; 364 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) (local $6 i32) (local $7 i32) (local $8 i32) - (local $9 i32) - (local $10 i32) - (local $11 i32) - (local $12 i32) - local.get $0 - local.set $5 - local.get $1 - local.set $4 - local.get $2 - local.set $3 - local.get $5 - call $~lib/typedarray/Int16Array#get:length - local.set $6 - local.get $4 - i32.const 0 - i32.lt_s - if - local.get $6 + block $~lib/typedarray/SUBARRAY<~lib/typedarray/Int16Array,i16>|inlined.0 (result i32) + local.get $0 + call $~lib/rt/purerc/__retain + local.set $5 + local.get $1 + local.set $4 + local.get $2 + local.set $3 + local.get $5 + call $~lib/typedarray/Int16Array#get:length + local.set $6 local.get $4 - i32.add - local.tee $7 i32.const 0 - local.tee $8 - local.get $7 - local.get $8 - i32.gt_s - select - local.set $4 - else - local.get $4 - local.tee $7 - local.get $6 - local.tee $8 - local.get $7 - local.get $8 i32.lt_s - select - local.set $4 - end - local.get $3 - i32.const 0 - i32.lt_s - if - local.get $6 - local.get $3 - i32.add - local.tee $7 - local.get $4 - local.tee $8 - local.get $7 - local.get $8 - i32.gt_s - select - local.set $3 - else - local.get $3 - local.tee $7 - local.get $6 - local.tee $8 - local.get $7 - local.get $8 - i32.lt_s - select - local.tee $7 - local.get $4 - local.tee $8 - local.get $7 - local.get $8 - i32.gt_s - select - local.set $3 - end - i32.const 12 - call $~lib/util/runtime/allocate - local.set $7 - local.get $5 - i32.load - local.set $8 - local.get $5 - i32.load offset=4 - local.set $9 - local.get $7 - local.tee $10 - local.get $8 - local.tee $11 - local.get $10 - i32.load - local.tee $12 - i32.ne - if (result i32) - local.get $12 if - local.get $12 - local.get $10 - call $~lib/collector/dummy/__ref_unlink + local.get $6 + local.get $4 + i32.add + local.tee $7 + i32.const 0 + local.tee $8 + local.get $7 + local.get $8 + i32.gt_s + select + local.set $4 + else + local.get $4 + local.tee $7 + local.get $6 + local.tee $8 + local.get $7 + local.get $8 + i32.lt_s + select + local.set $4 end - local.get $11 - local.get $10 - call $~lib/collector/dummy/__ref_link - local.get $11 - else - local.get $11 + local.get $3 + i32.const 0 + i32.lt_s + if + local.get $6 + local.get $3 + i32.add + local.tee $7 + local.get $4 + local.tee $8 + local.get $7 + local.get $8 + i32.gt_s + select + local.set $3 + else + local.get $3 + local.tee $7 + local.get $6 + local.tee $8 + local.get $7 + local.get $8 + i32.lt_s + select + local.tee $7 + local.get $4 + local.tee $8 + local.get $7 + local.get $8 + i32.gt_s + select + local.set $3 + end + i32.const 12 + i32.const 20 + call $~lib/rt/tlsf/__alloc + local.set $7 + local.get $7 + local.tee $8 + local.get $5 + i32.load + local.get $8 + i32.load + call $~lib/rt/purerc/__retainRelease + i32.store + local.get $7 + local.get $5 + i32.load offset=4 + local.get $4 + i32.const 1 + i32.shl + i32.add + i32.store offset=4 + local.get $7 + local.get $3 + local.get $4 + i32.sub + i32.const 1 + i32.shl + i32.store offset=8 + local.get $7 + call $~lib/rt/purerc/__retain + local.set $8 + local.get $5 + call $~lib/rt/purerc/__release + local.get $8 end - i32.store + local.tee $7 + call $~lib/rt/purerc/__retain + local.set $6 local.get $7 - local.get $9 - local.get $4 - i32.const 1 - i32.shl - i32.add - i32.store offset=4 - local.get $7 - local.get $3 - local.get $4 - i32.sub - i32.const 1 - i32.shl - i32.store offset=8 - local.get $7 - i32.const 20 - call $~lib/util/runtime/register + call $~lib/rt/purerc/__release + local.get $6 ) - (func $std/typedarray/testArrayReverse<~lib/typedarray/Int16Array,i16> (; 359 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayReverse<~lib/typedarray/Int16Array,i16> (; 365 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) global.get $std/typedarray/testArrayReverseValues + call $~lib/rt/purerc/__retain local.set $0 i32.const 0 i32.const 9 call $~lib/typedarray/Int16Array#constructor - local.set $1 + local.tee $1 + call $~lib/rt/purerc/__retain + local.set $2 i32.const 0 i32.const 9 call $~lib/typedarray/Int16Array#constructor - local.set $2 + local.tee $3 + call $~lib/rt/purerc/__retain + local.set $4 i32.const 0 - local.set $3 + local.set $5 block $break|0 i32.const 0 - local.set $3 + local.set $5 loop $repeat|0 - local.get $3 + local.get $5 i32.const 9 i32.lt_s i32.eqz br_if $break|0 - block - local.get $1 - local.get $3 - local.get $0 - local.get $3 - call $~lib/array/Array#__get - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s - call $~lib/typedarray/Int16Array#__set - local.get $2 - local.get $3 - local.get $0 - local.get $3 - call $~lib/array/Array#__get - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s - call $~lib/typedarray/Int16Array#__set - end - local.get $3 + local.get $2 + local.get $5 + local.get $0 + local.get $5 + call $~lib/array/Array#__get + i32.const 16 + i32.shl + i32.const 16 + i32.shr_s + call $~lib/typedarray/Int16Array#__set + local.get $4 + local.get $5 + local.get $0 + local.get $5 + call $~lib/array/Array#__get + i32.const 16 + i32.shl + i32.const 16 + i32.shr_s + call $~lib/typedarray/Int16Array#__set + local.get $5 i32.const 1 i32.add - local.set $3 + local.set $5 br $repeat|0 unreachable end unreachable end - local.get $1 + local.get $2 call $~lib/typedarray/Int16Array#reverse - drop + call $~lib/rt/purerc/__release block $break|1 i32.const 0 - local.set $3 + local.set $5 loop $repeat|1 - local.get $3 + local.get $5 i32.const 9 i32.lt_s i32.eqz br_if $break|1 - local.get $1 - local.get $3 + local.get $2 + local.get $5 call $~lib/typedarray/Int16Array#__get local.get $0 i32.const 8 - local.get $3 + local.get $5 i32.sub call $~lib/array/Array#__get i32.const 16 @@ -14633,86 +17924,101 @@ i32.eq i32.eqz if - i32.const 1272 + i32.const 1480 i32.const 24 - i32.const 461 + i32.const 460 i32.const 4 call $~lib/builtins/abort unreachable end - local.get $3 + local.get $5 i32.const 1 i32.add - local.set $3 + local.set $5 br $repeat|1 unreachable end unreachable end - local.get $2 + local.get $4 i32.const 4 i32.const 8 call $~lib/typedarray/Int16Array#subarray + local.tee $6 call $~lib/typedarray/Int16Array#reverse - local.set $4 - local.get $4 + local.set $7 + local.get $7 i32.const 0 call $~lib/typedarray/Int16Array#__get i32.const 8 i32.eq i32.eqz if - i32.const 1360 + i32.const 1568 i32.const 24 - i32.const 466 + i32.const 465 i32.const 2 call $~lib/builtins/abort unreachable end - local.get $4 + local.get $7 i32.const 1 call $~lib/typedarray/Int16Array#__get i32.const 7 i32.eq i32.eqz if - i32.const 1360 + i32.const 1568 i32.const 24 - i32.const 467 + i32.const 466 i32.const 2 call $~lib/builtins/abort unreachable end - local.get $4 + local.get $7 i32.const 2 call $~lib/typedarray/Int16Array#__get i32.const 6 i32.eq i32.eqz if - i32.const 1360 + i32.const 1568 i32.const 24 - i32.const 468 + i32.const 467 i32.const 2 call $~lib/builtins/abort unreachable end - local.get $4 + local.get $7 i32.const 3 call $~lib/typedarray/Int16Array#__get i32.const 5 i32.eq i32.eqz if - i32.const 1360 + i32.const 1568 i32.const 24 - i32.const 469 + i32.const 468 i32.const 2 call $~lib/builtins/abort unreachable end + local.get $1 + call $~lib/rt/purerc/__release + local.get $3 + call $~lib/rt/purerc/__release + local.get $6 + call $~lib/rt/purerc/__release + local.get $0 + call $~lib/rt/purerc/__release + local.get $2 + call $~lib/rt/purerc/__release + local.get $4 + call $~lib/rt/purerc/__release + local.get $7 + call $~lib/rt/purerc/__release ) - (func $~lib/typedarray/Uint16Array#reverse (; 360 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/typedarray/Uint16Array#reverse (; 366 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -14720,28 +18026,29 @@ (local $5 i32) (local $6 i32) (local $7 i32) - local.get $0 - local.set $1 - local.get $1 - i32.load offset=4 - local.set $2 - block $break|0 - block - i32.const 0 - local.set $3 - local.get $1 - call $~lib/typedarray/Uint16Array#get:length - i32.const 1 - i32.sub - local.set $4 - end - loop $repeat|0 - local.get $3 - local.get $4 - i32.lt_s - i32.eqz - br_if $break|0 + block $~lib/typedarray/REVERSE<~lib/typedarray/Uint16Array,u16>|inlined.0 (result i32) + local.get $0 + call $~lib/rt/purerc/__retain + local.set $1 + local.get $1 + i32.load offset=4 + local.set $2 + block $break|0 block + i32.const 0 + local.set $3 + local.get $1 + call $~lib/typedarray/Uint16Array#get:length + i32.const 1 + i32.sub + local.set $4 + end + loop $repeat|0 + local.get $3 + local.get $4 + i32.lt_s + i32.eqz + br_if $break|0 local.get $2 local.get $3 i32.const 1 @@ -14764,225 +18071,226 @@ local.get $6 local.get $7 i32.store16 + block + local.get $3 + i32.const 1 + i32.add + local.set $3 + local.get $4 + i32.const 1 + i32.sub + local.set $4 + end + br $repeat|0 + unreachable end - block - local.get $3 - i32.const 1 - i32.add - local.set $3 - local.get $4 - i32.const 1 - i32.sub - local.set $4 - end - br $repeat|0 unreachable end - unreachable + local.get $1 end + local.tee $2 + call $~lib/rt/purerc/__retain + local.set $1 + local.get $2 + call $~lib/rt/purerc/__release local.get $1 ) - (func $~lib/typedarray/Uint16Array#subarray (; 361 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/typedarray/Uint16Array#subarray (; 367 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) (local $6 i32) (local $7 i32) (local $8 i32) - (local $9 i32) - (local $10 i32) - (local $11 i32) - (local $12 i32) - local.get $0 - local.set $5 - local.get $1 - local.set $4 - local.get $2 - local.set $3 - local.get $5 - call $~lib/typedarray/Uint16Array#get:length - local.set $6 - local.get $4 - i32.const 0 - i32.lt_s - if - local.get $6 + block $~lib/typedarray/SUBARRAY<~lib/typedarray/Uint16Array,u16>|inlined.0 (result i32) + local.get $0 + call $~lib/rt/purerc/__retain + local.set $5 + local.get $1 + local.set $4 + local.get $2 + local.set $3 + local.get $5 + call $~lib/typedarray/Uint16Array#get:length + local.set $6 local.get $4 - i32.add - local.tee $7 i32.const 0 - local.tee $8 - local.get $7 - local.get $8 - i32.gt_s - select - local.set $4 - else - local.get $4 - local.tee $7 - local.get $6 - local.tee $8 - local.get $7 - local.get $8 i32.lt_s - select - local.set $4 - end - local.get $3 - i32.const 0 - i32.lt_s - if - local.get $6 - local.get $3 - i32.add - local.tee $7 - local.get $4 - local.tee $8 - local.get $7 - local.get $8 - i32.gt_s - select - local.set $3 - else - local.get $3 - local.tee $7 - local.get $6 - local.tee $8 - local.get $7 - local.get $8 - i32.lt_s - select - local.tee $7 - local.get $4 - local.tee $8 - local.get $7 - local.get $8 - i32.gt_s - select - local.set $3 - end - i32.const 12 - call $~lib/util/runtime/allocate - local.set $7 - local.get $5 - i32.load - local.set $8 - local.get $5 - i32.load offset=4 - local.set $9 - local.get $7 - local.tee $10 - local.get $8 - local.tee $11 - local.get $10 - i32.load - local.tee $12 - i32.ne - if (result i32) - local.get $12 if - local.get $12 - local.get $10 - call $~lib/collector/dummy/__ref_unlink + local.get $6 + local.get $4 + i32.add + local.tee $7 + i32.const 0 + local.tee $8 + local.get $7 + local.get $8 + i32.gt_s + select + local.set $4 + else + local.get $4 + local.tee $7 + local.get $6 + local.tee $8 + local.get $7 + local.get $8 + i32.lt_s + select + local.set $4 end - local.get $11 - local.get $10 - call $~lib/collector/dummy/__ref_link - local.get $11 - else - local.get $11 + local.get $3 + i32.const 0 + i32.lt_s + if + local.get $6 + local.get $3 + i32.add + local.tee $7 + local.get $4 + local.tee $8 + local.get $7 + local.get $8 + i32.gt_s + select + local.set $3 + else + local.get $3 + local.tee $7 + local.get $6 + local.tee $8 + local.get $7 + local.get $8 + i32.lt_s + select + local.tee $7 + local.get $4 + local.tee $8 + local.get $7 + local.get $8 + i32.gt_s + select + local.set $3 + end + i32.const 12 + i32.const 21 + call $~lib/rt/tlsf/__alloc + local.set $7 + local.get $7 + local.tee $8 + local.get $5 + i32.load + local.get $8 + i32.load + call $~lib/rt/purerc/__retainRelease + i32.store + local.get $7 + local.get $5 + i32.load offset=4 + local.get $4 + i32.const 1 + i32.shl + i32.add + i32.store offset=4 + local.get $7 + local.get $3 + local.get $4 + i32.sub + i32.const 1 + i32.shl + i32.store offset=8 + local.get $7 + call $~lib/rt/purerc/__retain + local.set $8 + local.get $5 + call $~lib/rt/purerc/__release + local.get $8 end - i32.store + local.tee $7 + call $~lib/rt/purerc/__retain + local.set $6 local.get $7 - local.get $9 - local.get $4 - i32.const 1 - i32.shl - i32.add - i32.store offset=4 - local.get $7 - local.get $3 - local.get $4 - i32.sub - i32.const 1 - i32.shl - i32.store offset=8 - local.get $7 - i32.const 21 - call $~lib/util/runtime/register + call $~lib/rt/purerc/__release + local.get $6 ) - (func $std/typedarray/testArrayReverse<~lib/typedarray/Uint16Array,u16> (; 362 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayReverse<~lib/typedarray/Uint16Array,u16> (; 368 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) global.get $std/typedarray/testArrayReverseValues + call $~lib/rt/purerc/__retain local.set $0 i32.const 0 i32.const 9 call $~lib/typedarray/Uint16Array#constructor - local.set $1 + local.tee $1 + call $~lib/rt/purerc/__retain + local.set $2 i32.const 0 i32.const 9 call $~lib/typedarray/Uint16Array#constructor - local.set $2 + local.tee $3 + call $~lib/rt/purerc/__retain + local.set $4 i32.const 0 - local.set $3 + local.set $5 block $break|0 i32.const 0 - local.set $3 + local.set $5 loop $repeat|0 - local.get $3 + local.get $5 i32.const 9 i32.lt_s i32.eqz br_if $break|0 - block - local.get $1 - local.get $3 - local.get $0 - local.get $3 - call $~lib/array/Array#__get - i32.const 65535 - i32.and - call $~lib/typedarray/Uint16Array#__set - local.get $2 - local.get $3 - local.get $0 - local.get $3 - call $~lib/array/Array#__get - i32.const 65535 - i32.and - call $~lib/typedarray/Uint16Array#__set - end - local.get $3 + local.get $2 + local.get $5 + local.get $0 + local.get $5 + call $~lib/array/Array#__get + i32.const 65535 + i32.and + call $~lib/typedarray/Uint16Array#__set + local.get $4 + local.get $5 + local.get $0 + local.get $5 + call $~lib/array/Array#__get + i32.const 65535 + i32.and + call $~lib/typedarray/Uint16Array#__set + local.get $5 i32.const 1 i32.add - local.set $3 + local.set $5 br $repeat|0 unreachable end unreachable end - local.get $1 + local.get $2 call $~lib/typedarray/Uint16Array#reverse - drop + call $~lib/rt/purerc/__release block $break|1 i32.const 0 - local.set $3 + local.set $5 loop $repeat|1 - local.get $3 + local.get $5 i32.const 9 i32.lt_s i32.eqz br_if $break|1 - local.get $1 - local.get $3 + local.get $2 + local.get $5 call $~lib/typedarray/Uint16Array#__get local.get $0 i32.const 8 - local.get $3 + local.get $5 i32.sub call $~lib/array/Array#__get i32.const 65535 @@ -14990,86 +18298,101 @@ i32.eq i32.eqz if - i32.const 1272 + i32.const 1480 i32.const 24 - i32.const 461 + i32.const 460 i32.const 4 call $~lib/builtins/abort unreachable end - local.get $3 + local.get $5 i32.const 1 i32.add - local.set $3 + local.set $5 br $repeat|1 unreachable end unreachable end - local.get $2 + local.get $4 i32.const 4 i32.const 8 call $~lib/typedarray/Uint16Array#subarray + local.tee $6 call $~lib/typedarray/Uint16Array#reverse - local.set $4 - local.get $4 + local.set $7 + local.get $7 i32.const 0 call $~lib/typedarray/Uint16Array#__get i32.const 8 i32.eq i32.eqz if - i32.const 1360 + i32.const 1568 i32.const 24 - i32.const 466 + i32.const 465 i32.const 2 call $~lib/builtins/abort unreachable end - local.get $4 + local.get $7 i32.const 1 call $~lib/typedarray/Uint16Array#__get i32.const 7 i32.eq i32.eqz if - i32.const 1360 + i32.const 1568 i32.const 24 - i32.const 467 + i32.const 466 i32.const 2 call $~lib/builtins/abort unreachable end - local.get $4 + local.get $7 i32.const 2 call $~lib/typedarray/Uint16Array#__get i32.const 6 i32.eq i32.eqz if - i32.const 1360 + i32.const 1568 i32.const 24 - i32.const 468 + i32.const 467 i32.const 2 call $~lib/builtins/abort unreachable end - local.get $4 + local.get $7 i32.const 3 call $~lib/typedarray/Uint16Array#__get i32.const 5 i32.eq i32.eqz if - i32.const 1360 + i32.const 1568 i32.const 24 - i32.const 469 + i32.const 468 i32.const 2 call $~lib/builtins/abort unreachable end + local.get $1 + call $~lib/rt/purerc/__release + local.get $3 + call $~lib/rt/purerc/__release + local.get $6 + call $~lib/rt/purerc/__release + local.get $0 + call $~lib/rt/purerc/__release + local.get $2 + call $~lib/rt/purerc/__release + local.get $4 + call $~lib/rt/purerc/__release + local.get $7 + call $~lib/rt/purerc/__release ) - (func $~lib/typedarray/Int32Array#reverse (; 363 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/typedarray/Int32Array#reverse (; 369 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -15077,28 +18400,29 @@ (local $5 i32) (local $6 i32) (local $7 i32) - local.get $0 - local.set $1 - local.get $1 - i32.load offset=4 - local.set $2 - block $break|0 - block - i32.const 0 - local.set $3 - local.get $1 - call $~lib/typedarray/Int32Array#get:length - i32.const 1 - i32.sub - local.set $4 - end - loop $repeat|0 - local.get $3 - local.get $4 - i32.lt_s - i32.eqz - br_if $break|0 + block $~lib/typedarray/REVERSE<~lib/typedarray/Int32Array,i32>|inlined.0 (result i32) + local.get $0 + call $~lib/rt/purerc/__retain + local.set $1 + local.get $1 + i32.load offset=4 + local.set $2 + block $break|0 block + i32.const 0 + local.set $3 + local.get $1 + call $~lib/typedarray/Int32Array#get:length + i32.const 1 + i32.sub + local.set $4 + end + loop $repeat|0 + local.get $3 + local.get $4 + i32.lt_s + i32.eqz + br_if $break|0 local.get $2 local.get $3 i32.const 2 @@ -15121,177 +18445,204 @@ local.get $6 local.get $7 i32.store + block + local.get $3 + i32.const 1 + i32.add + local.set $3 + local.get $4 + i32.const 1 + i32.sub + local.set $4 + end + br $repeat|0 + unreachable end - block - local.get $3 - i32.const 1 - i32.add - local.set $3 - local.get $4 - i32.const 1 - i32.sub - local.set $4 - end - br $repeat|0 unreachable end - unreachable + local.get $1 end + local.tee $2 + call $~lib/rt/purerc/__retain + local.set $1 + local.get $2 + call $~lib/rt/purerc/__release local.get $1 ) - (func $std/typedarray/testArrayReverse<~lib/typedarray/Int32Array,i32> (; 364 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayReverse<~lib/typedarray/Int32Array,i32> (; 370 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) global.get $std/typedarray/testArrayReverseValues + call $~lib/rt/purerc/__retain local.set $0 i32.const 0 i32.const 9 call $~lib/typedarray/Int32Array#constructor - local.set $1 + local.tee $1 + call $~lib/rt/purerc/__retain + local.set $2 i32.const 0 i32.const 9 call $~lib/typedarray/Int32Array#constructor - local.set $2 + local.tee $3 + call $~lib/rt/purerc/__retain + local.set $4 i32.const 0 - local.set $3 + local.set $5 block $break|0 i32.const 0 - local.set $3 + local.set $5 loop $repeat|0 - local.get $3 + local.get $5 i32.const 9 i32.lt_s i32.eqz br_if $break|0 - block - local.get $1 - local.get $3 - local.get $0 - local.get $3 - call $~lib/array/Array#__get - call $~lib/typedarray/Int32Array#__set - local.get $2 - local.get $3 - local.get $0 - local.get $3 - call $~lib/array/Array#__get - call $~lib/typedarray/Int32Array#__set - end - local.get $3 + local.get $2 + local.get $5 + local.get $0 + local.get $5 + call $~lib/array/Array#__get + call $~lib/typedarray/Int32Array#__set + local.get $4 + local.get $5 + local.get $0 + local.get $5 + call $~lib/array/Array#__get + call $~lib/typedarray/Int32Array#__set + local.get $5 i32.const 1 i32.add - local.set $3 + local.set $5 br $repeat|0 unreachable end unreachable end - local.get $1 + local.get $2 call $~lib/typedarray/Int32Array#reverse - drop + call $~lib/rt/purerc/__release block $break|1 i32.const 0 - local.set $3 + local.set $5 loop $repeat|1 - local.get $3 + local.get $5 i32.const 9 i32.lt_s i32.eqz br_if $break|1 - local.get $1 - local.get $3 + local.get $2 + local.get $5 call $~lib/typedarray/Int32Array#__get local.get $0 i32.const 8 - local.get $3 + local.get $5 i32.sub call $~lib/array/Array#__get i32.eq i32.eqz if - i32.const 1272 + i32.const 1480 i32.const 24 - i32.const 461 + i32.const 460 i32.const 4 call $~lib/builtins/abort unreachable end - local.get $3 + local.get $5 i32.const 1 i32.add - local.set $3 + local.set $5 br $repeat|1 unreachable end unreachable end - local.get $2 + local.get $4 i32.const 4 i32.const 8 call $~lib/typedarray/Int32Array#subarray + local.tee $6 call $~lib/typedarray/Int32Array#reverse - local.set $4 - local.get $4 + local.set $7 + local.get $7 i32.const 0 call $~lib/typedarray/Int32Array#__get i32.const 8 i32.eq i32.eqz if - i32.const 1360 + i32.const 1568 i32.const 24 - i32.const 466 + i32.const 465 i32.const 2 call $~lib/builtins/abort unreachable end - local.get $4 + local.get $7 i32.const 1 call $~lib/typedarray/Int32Array#__get i32.const 7 i32.eq i32.eqz if - i32.const 1360 + i32.const 1568 i32.const 24 - i32.const 467 + i32.const 466 i32.const 2 call $~lib/builtins/abort unreachable end - local.get $4 + local.get $7 i32.const 2 call $~lib/typedarray/Int32Array#__get i32.const 6 i32.eq i32.eqz if - i32.const 1360 + i32.const 1568 i32.const 24 - i32.const 468 + i32.const 467 i32.const 2 call $~lib/builtins/abort unreachable end - local.get $4 + local.get $7 i32.const 3 call $~lib/typedarray/Int32Array#__get i32.const 5 i32.eq i32.eqz if - i32.const 1360 + i32.const 1568 i32.const 24 - i32.const 469 + i32.const 468 i32.const 2 call $~lib/builtins/abort unreachable end + local.get $1 + call $~lib/rt/purerc/__release + local.get $3 + call $~lib/rt/purerc/__release + local.get $6 + call $~lib/rt/purerc/__release + local.get $0 + call $~lib/rt/purerc/__release + local.get $2 + call $~lib/rt/purerc/__release + local.get $4 + call $~lib/rt/purerc/__release + local.get $7 + call $~lib/rt/purerc/__release ) - (func $~lib/typedarray/Uint32Array#reverse (; 365 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/typedarray/Uint32Array#reverse (; 371 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -15299,28 +18650,29 @@ (local $5 i32) (local $6 i32) (local $7 i32) - local.get $0 - local.set $1 - local.get $1 - i32.load offset=4 - local.set $2 - block $break|0 - block - i32.const 0 - local.set $3 - local.get $1 - call $~lib/typedarray/Uint32Array#get:length - i32.const 1 - i32.sub - local.set $4 - end - loop $repeat|0 - local.get $3 - local.get $4 - i32.lt_s - i32.eqz - br_if $break|0 + block $~lib/typedarray/REVERSE<~lib/typedarray/Uint32Array,u32>|inlined.0 (result i32) + local.get $0 + call $~lib/rt/purerc/__retain + local.set $1 + local.get $1 + i32.load offset=4 + local.set $2 + block $break|0 block + i32.const 0 + local.set $3 + local.get $1 + call $~lib/typedarray/Uint32Array#get:length + i32.const 1 + i32.sub + local.set $4 + end + loop $repeat|0 + local.get $3 + local.get $4 + i32.lt_s + i32.eqz + br_if $break|0 local.get $2 local.get $3 i32.const 2 @@ -15343,306 +18695,322 @@ local.get $6 local.get $7 i32.store + block + local.get $3 + i32.const 1 + i32.add + local.set $3 + local.get $4 + i32.const 1 + i32.sub + local.set $4 + end + br $repeat|0 + unreachable end - block - local.get $3 - i32.const 1 - i32.add - local.set $3 - local.get $4 - i32.const 1 - i32.sub - local.set $4 - end - br $repeat|0 unreachable end - unreachable + local.get $1 end + local.tee $2 + call $~lib/rt/purerc/__retain + local.set $1 + local.get $2 + call $~lib/rt/purerc/__release local.get $1 ) - (func $~lib/typedarray/Uint32Array#subarray (; 366 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/typedarray/Uint32Array#subarray (; 372 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) (local $6 i32) (local $7 i32) (local $8 i32) - (local $9 i32) - (local $10 i32) - (local $11 i32) - (local $12 i32) - local.get $0 - local.set $5 - local.get $1 - local.set $4 - local.get $2 - local.set $3 - local.get $5 - call $~lib/typedarray/Uint32Array#get:length - local.set $6 - local.get $4 - i32.const 0 - i32.lt_s - if - local.get $6 + block $~lib/typedarray/SUBARRAY<~lib/typedarray/Uint32Array,u32>|inlined.0 (result i32) + local.get $0 + call $~lib/rt/purerc/__retain + local.set $5 + local.get $1 + local.set $4 + local.get $2 + local.set $3 + local.get $5 + call $~lib/typedarray/Uint32Array#get:length + local.set $6 local.get $4 - i32.add - local.tee $7 i32.const 0 - local.tee $8 - local.get $7 - local.get $8 - i32.gt_s - select - local.set $4 - else - local.get $4 - local.tee $7 - local.get $6 - local.tee $8 - local.get $7 - local.get $8 i32.lt_s - select - local.set $4 - end - local.get $3 - i32.const 0 - i32.lt_s - if - local.get $6 - local.get $3 - i32.add - local.tee $7 - local.get $4 - local.tee $8 - local.get $7 - local.get $8 - i32.gt_s - select - local.set $3 - else - local.get $3 - local.tee $7 - local.get $6 - local.tee $8 - local.get $7 - local.get $8 - i32.lt_s - select - local.tee $7 - local.get $4 - local.tee $8 - local.get $7 - local.get $8 - i32.gt_s - select - local.set $3 - end - i32.const 12 - call $~lib/util/runtime/allocate - local.set $7 - local.get $5 - i32.load - local.set $8 - local.get $5 - i32.load offset=4 - local.set $9 - local.get $7 - local.tee $10 - local.get $8 - local.tee $11 - local.get $10 - i32.load - local.tee $12 - i32.ne - if (result i32) - local.get $12 if - local.get $12 - local.get $10 - call $~lib/collector/dummy/__ref_unlink + local.get $6 + local.get $4 + i32.add + local.tee $7 + i32.const 0 + local.tee $8 + local.get $7 + local.get $8 + i32.gt_s + select + local.set $4 + else + local.get $4 + local.tee $7 + local.get $6 + local.tee $8 + local.get $7 + local.get $8 + i32.lt_s + select + local.set $4 end - local.get $11 - local.get $10 - call $~lib/collector/dummy/__ref_link - local.get $11 - else - local.get $11 + local.get $3 + i32.const 0 + i32.lt_s + if + local.get $6 + local.get $3 + i32.add + local.tee $7 + local.get $4 + local.tee $8 + local.get $7 + local.get $8 + i32.gt_s + select + local.set $3 + else + local.get $3 + local.tee $7 + local.get $6 + local.tee $8 + local.get $7 + local.get $8 + i32.lt_s + select + local.tee $7 + local.get $4 + local.tee $8 + local.get $7 + local.get $8 + i32.gt_s + select + local.set $3 + end + i32.const 12 + i32.const 23 + call $~lib/rt/tlsf/__alloc + local.set $7 + local.get $7 + local.tee $8 + local.get $5 + i32.load + local.get $8 + i32.load + call $~lib/rt/purerc/__retainRelease + i32.store + local.get $7 + local.get $5 + i32.load offset=4 + local.get $4 + i32.const 2 + i32.shl + i32.add + i32.store offset=4 + local.get $7 + local.get $3 + local.get $4 + i32.sub + i32.const 2 + i32.shl + i32.store offset=8 + local.get $7 + call $~lib/rt/purerc/__retain + local.set $8 + local.get $5 + call $~lib/rt/purerc/__release + local.get $8 end - i32.store + local.tee $7 + call $~lib/rt/purerc/__retain + local.set $6 local.get $7 - local.get $9 - local.get $4 - i32.const 2 - i32.shl - i32.add - i32.store offset=4 - local.get $7 - local.get $3 - local.get $4 - i32.sub - i32.const 2 - i32.shl - i32.store offset=8 - local.get $7 - i32.const 23 - call $~lib/util/runtime/register + call $~lib/rt/purerc/__release + local.get $6 ) - (func $std/typedarray/testArrayReverse<~lib/typedarray/Uint32Array,u32> (; 367 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayReverse<~lib/typedarray/Uint32Array,u32> (; 373 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) global.get $std/typedarray/testArrayReverseValues + call $~lib/rt/purerc/__retain local.set $0 i32.const 0 i32.const 9 call $~lib/typedarray/Uint32Array#constructor - local.set $1 + local.tee $1 + call $~lib/rt/purerc/__retain + local.set $2 i32.const 0 i32.const 9 call $~lib/typedarray/Uint32Array#constructor - local.set $2 + local.tee $3 + call $~lib/rt/purerc/__retain + local.set $4 i32.const 0 - local.set $3 + local.set $5 block $break|0 i32.const 0 - local.set $3 + local.set $5 loop $repeat|0 - local.get $3 + local.get $5 i32.const 9 i32.lt_s i32.eqz br_if $break|0 - block - local.get $1 - local.get $3 - local.get $0 - local.get $3 - call $~lib/array/Array#__get - call $~lib/typedarray/Uint32Array#__set - local.get $2 - local.get $3 - local.get $0 - local.get $3 - call $~lib/array/Array#__get - call $~lib/typedarray/Uint32Array#__set - end - local.get $3 + local.get $2 + local.get $5 + local.get $0 + local.get $5 + call $~lib/array/Array#__get + call $~lib/typedarray/Uint32Array#__set + local.get $4 + local.get $5 + local.get $0 + local.get $5 + call $~lib/array/Array#__get + call $~lib/typedarray/Uint32Array#__set + local.get $5 i32.const 1 i32.add - local.set $3 + local.set $5 br $repeat|0 unreachable end unreachable end - local.get $1 + local.get $2 call $~lib/typedarray/Uint32Array#reverse - drop + call $~lib/rt/purerc/__release block $break|1 i32.const 0 - local.set $3 + local.set $5 loop $repeat|1 - local.get $3 + local.get $5 i32.const 9 i32.lt_s i32.eqz br_if $break|1 - local.get $1 - local.get $3 + local.get $2 + local.get $5 call $~lib/typedarray/Uint32Array#__get local.get $0 i32.const 8 - local.get $3 + local.get $5 i32.sub call $~lib/array/Array#__get i32.eq i32.eqz if - i32.const 1272 + i32.const 1480 i32.const 24 - i32.const 461 + i32.const 460 i32.const 4 call $~lib/builtins/abort unreachable end - local.get $3 + local.get $5 i32.const 1 i32.add - local.set $3 + local.set $5 br $repeat|1 unreachable end unreachable end - local.get $2 + local.get $4 i32.const 4 i32.const 8 call $~lib/typedarray/Uint32Array#subarray + local.tee $6 call $~lib/typedarray/Uint32Array#reverse - local.set $4 - local.get $4 + local.set $7 + local.get $7 i32.const 0 call $~lib/typedarray/Uint32Array#__get i32.const 8 i32.eq i32.eqz if - i32.const 1360 + i32.const 1568 i32.const 24 - i32.const 466 + i32.const 465 i32.const 2 call $~lib/builtins/abort unreachable end - local.get $4 + local.get $7 i32.const 1 call $~lib/typedarray/Uint32Array#__get i32.const 7 i32.eq i32.eqz if - i32.const 1360 + i32.const 1568 i32.const 24 - i32.const 467 + i32.const 466 i32.const 2 call $~lib/builtins/abort unreachable end - local.get $4 + local.get $7 i32.const 2 call $~lib/typedarray/Uint32Array#__get i32.const 6 i32.eq i32.eqz if - i32.const 1360 + i32.const 1568 i32.const 24 - i32.const 468 + i32.const 467 i32.const 2 call $~lib/builtins/abort unreachable end - local.get $4 + local.get $7 i32.const 3 call $~lib/typedarray/Uint32Array#__get i32.const 5 i32.eq i32.eqz if - i32.const 1360 + i32.const 1568 i32.const 24 - i32.const 469 + i32.const 468 i32.const 2 call $~lib/builtins/abort unreachable end + local.get $1 + call $~lib/rt/purerc/__release + local.get $3 + call $~lib/rt/purerc/__release + local.get $6 + call $~lib/rt/purerc/__release + local.get $0 + call $~lib/rt/purerc/__release + local.get $2 + call $~lib/rt/purerc/__release + local.get $4 + call $~lib/rt/purerc/__release + local.get $7 + call $~lib/rt/purerc/__release ) - (func $~lib/typedarray/Int64Array#reverse (; 368 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/typedarray/Int64Array#reverse (; 374 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -15650,28 +19018,29 @@ (local $5 i32) (local $6 i32) (local $7 i64) - local.get $0 - local.set $1 - local.get $1 - i32.load offset=4 - local.set $2 - block $break|0 - block - i32.const 0 - local.set $3 - local.get $1 - call $~lib/typedarray/Int64Array#get:length - i32.const 1 - i32.sub - local.set $4 - end - loop $repeat|0 - local.get $3 - local.get $4 - i32.lt_s - i32.eqz - br_if $break|0 + block $~lib/typedarray/REVERSE<~lib/typedarray/Int64Array,i64>|inlined.0 (result i32) + local.get $0 + call $~lib/rt/purerc/__retain + local.set $1 + local.get $1 + i32.load offset=4 + local.set $2 + block $break|0 block + i32.const 0 + local.set $3 + local.get $1 + call $~lib/typedarray/Int64Array#get:length + i32.const 1 + i32.sub + local.set $4 + end + loop $repeat|0 + local.get $3 + local.get $4 + i32.lt_s + i32.eqz + br_if $break|0 local.get $2 local.get $3 i32.const 3 @@ -15694,309 +19063,325 @@ local.get $6 local.get $7 i64.store + block + local.get $3 + i32.const 1 + i32.add + local.set $3 + local.get $4 + i32.const 1 + i32.sub + local.set $4 + end + br $repeat|0 + unreachable end - block - local.get $3 - i32.const 1 - i32.add - local.set $3 - local.get $4 - i32.const 1 - i32.sub - local.set $4 - end - br $repeat|0 unreachable end - unreachable + local.get $1 end + local.tee $2 + call $~lib/rt/purerc/__retain + local.set $1 + local.get $2 + call $~lib/rt/purerc/__release local.get $1 ) - (func $~lib/typedarray/Int64Array#subarray (; 369 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/typedarray/Int64Array#subarray (; 375 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) (local $6 i32) (local $7 i32) (local $8 i32) - (local $9 i32) - (local $10 i32) - (local $11 i32) - (local $12 i32) - local.get $0 - local.set $5 - local.get $1 - local.set $4 - local.get $2 - local.set $3 - local.get $5 - call $~lib/typedarray/Int64Array#get:length - local.set $6 - local.get $4 - i32.const 0 - i32.lt_s - if - local.get $6 + block $~lib/typedarray/SUBARRAY<~lib/typedarray/Int64Array,i64>|inlined.0 (result i32) + local.get $0 + call $~lib/rt/purerc/__retain + local.set $5 + local.get $1 + local.set $4 + local.get $2 + local.set $3 + local.get $5 + call $~lib/typedarray/Int64Array#get:length + local.set $6 local.get $4 - i32.add - local.tee $7 i32.const 0 - local.tee $8 - local.get $7 - local.get $8 - i32.gt_s - select - local.set $4 - else - local.get $4 - local.tee $7 - local.get $6 - local.tee $8 - local.get $7 - local.get $8 i32.lt_s - select - local.set $4 - end - local.get $3 - i32.const 0 - i32.lt_s - if - local.get $6 - local.get $3 - i32.add - local.tee $7 - local.get $4 - local.tee $8 - local.get $7 - local.get $8 - i32.gt_s - select - local.set $3 - else - local.get $3 - local.tee $7 - local.get $6 - local.tee $8 - local.get $7 - local.get $8 - i32.lt_s - select - local.tee $7 - local.get $4 - local.tee $8 - local.get $7 - local.get $8 - i32.gt_s - select - local.set $3 - end - i32.const 12 - call $~lib/util/runtime/allocate - local.set $7 - local.get $5 - i32.load - local.set $8 - local.get $5 - i32.load offset=4 - local.set $9 - local.get $7 - local.tee $10 - local.get $8 - local.tee $11 - local.get $10 - i32.load - local.tee $12 - i32.ne - if (result i32) - local.get $12 if - local.get $12 - local.get $10 - call $~lib/collector/dummy/__ref_unlink + local.get $6 + local.get $4 + i32.add + local.tee $7 + i32.const 0 + local.tee $8 + local.get $7 + local.get $8 + i32.gt_s + select + local.set $4 + else + local.get $4 + local.tee $7 + local.get $6 + local.tee $8 + local.get $7 + local.get $8 + i32.lt_s + select + local.set $4 end - local.get $11 - local.get $10 - call $~lib/collector/dummy/__ref_link - local.get $11 - else - local.get $11 + local.get $3 + i32.const 0 + i32.lt_s + if + local.get $6 + local.get $3 + i32.add + local.tee $7 + local.get $4 + local.tee $8 + local.get $7 + local.get $8 + i32.gt_s + select + local.set $3 + else + local.get $3 + local.tee $7 + local.get $6 + local.tee $8 + local.get $7 + local.get $8 + i32.lt_s + select + local.tee $7 + local.get $4 + local.tee $8 + local.get $7 + local.get $8 + i32.gt_s + select + local.set $3 + end + i32.const 12 + i32.const 24 + call $~lib/rt/tlsf/__alloc + local.set $7 + local.get $7 + local.tee $8 + local.get $5 + i32.load + local.get $8 + i32.load + call $~lib/rt/purerc/__retainRelease + i32.store + local.get $7 + local.get $5 + i32.load offset=4 + local.get $4 + i32.const 3 + i32.shl + i32.add + i32.store offset=4 + local.get $7 + local.get $3 + local.get $4 + i32.sub + i32.const 3 + i32.shl + i32.store offset=8 + local.get $7 + call $~lib/rt/purerc/__retain + local.set $8 + local.get $5 + call $~lib/rt/purerc/__release + local.get $8 end - i32.store + local.tee $7 + call $~lib/rt/purerc/__retain + local.set $6 local.get $7 - local.get $9 - local.get $4 - i32.const 3 - i32.shl - i32.add - i32.store offset=4 - local.get $7 - local.get $3 - local.get $4 - i32.sub - i32.const 3 - i32.shl - i32.store offset=8 - local.get $7 - i32.const 24 - call $~lib/util/runtime/register + call $~lib/rt/purerc/__release + local.get $6 ) - (func $std/typedarray/testArrayReverse<~lib/typedarray/Int64Array,i64> (; 370 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayReverse<~lib/typedarray/Int64Array,i64> (; 376 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) global.get $std/typedarray/testArrayReverseValues + call $~lib/rt/purerc/__retain local.set $0 i32.const 0 i32.const 9 call $~lib/typedarray/Int64Array#constructor - local.set $1 + local.tee $1 + call $~lib/rt/purerc/__retain + local.set $2 i32.const 0 i32.const 9 call $~lib/typedarray/Int64Array#constructor - local.set $2 + local.tee $3 + call $~lib/rt/purerc/__retain + local.set $4 i32.const 0 - local.set $3 + local.set $5 block $break|0 i32.const 0 - local.set $3 + local.set $5 loop $repeat|0 - local.get $3 + local.get $5 i32.const 9 i32.lt_s i32.eqz br_if $break|0 - block - local.get $1 - local.get $3 - local.get $0 - local.get $3 - call $~lib/array/Array#__get - i64.extend_i32_s - call $~lib/typedarray/Int64Array#__set - local.get $2 - local.get $3 - local.get $0 - local.get $3 - call $~lib/array/Array#__get - i64.extend_i32_s - call $~lib/typedarray/Int64Array#__set - end - local.get $3 + local.get $2 + local.get $5 + local.get $0 + local.get $5 + call $~lib/array/Array#__get + i64.extend_i32_s + call $~lib/typedarray/Int64Array#__set + local.get $4 + local.get $5 + local.get $0 + local.get $5 + call $~lib/array/Array#__get + i64.extend_i32_s + call $~lib/typedarray/Int64Array#__set + local.get $5 i32.const 1 i32.add - local.set $3 + local.set $5 br $repeat|0 unreachable end unreachable end - local.get $1 + local.get $2 call $~lib/typedarray/Int64Array#reverse - drop + call $~lib/rt/purerc/__release block $break|1 i32.const 0 - local.set $3 + local.set $5 loop $repeat|1 - local.get $3 + local.get $5 i32.const 9 i32.lt_s i32.eqz br_if $break|1 - local.get $1 - local.get $3 + local.get $2 + local.get $5 call $~lib/typedarray/Int64Array#__get local.get $0 i32.const 8 - local.get $3 + local.get $5 i32.sub call $~lib/array/Array#__get i64.extend_i32_s i64.eq i32.eqz if - i32.const 1272 + i32.const 1480 i32.const 24 - i32.const 461 + i32.const 460 i32.const 4 call $~lib/builtins/abort unreachable end - local.get $3 + local.get $5 i32.const 1 i32.add - local.set $3 + local.set $5 br $repeat|1 unreachable end unreachable end - local.get $2 + local.get $4 i32.const 4 i32.const 8 call $~lib/typedarray/Int64Array#subarray + local.tee $6 call $~lib/typedarray/Int64Array#reverse - local.set $4 - local.get $4 + local.set $7 + local.get $7 i32.const 0 call $~lib/typedarray/Int64Array#__get i64.const 8 i64.eq i32.eqz if - i32.const 1360 + i32.const 1568 i32.const 24 - i32.const 466 + i32.const 465 i32.const 2 call $~lib/builtins/abort unreachable end - local.get $4 + local.get $7 i32.const 1 call $~lib/typedarray/Int64Array#__get i64.const 7 i64.eq i32.eqz if - i32.const 1360 + i32.const 1568 i32.const 24 - i32.const 467 + i32.const 466 i32.const 2 call $~lib/builtins/abort unreachable end - local.get $4 + local.get $7 i32.const 2 call $~lib/typedarray/Int64Array#__get i64.const 6 i64.eq i32.eqz if - i32.const 1360 + i32.const 1568 i32.const 24 - i32.const 468 + i32.const 467 i32.const 2 call $~lib/builtins/abort unreachable end - local.get $4 + local.get $7 i32.const 3 call $~lib/typedarray/Int64Array#__get i64.const 5 i64.eq i32.eqz if - i32.const 1360 + i32.const 1568 i32.const 24 - i32.const 469 + i32.const 468 i32.const 2 call $~lib/builtins/abort unreachable end + local.get $1 + call $~lib/rt/purerc/__release + local.get $3 + call $~lib/rt/purerc/__release + local.get $6 + call $~lib/rt/purerc/__release + local.get $0 + call $~lib/rt/purerc/__release + local.get $2 + call $~lib/rt/purerc/__release + local.get $4 + call $~lib/rt/purerc/__release + local.get $7 + call $~lib/rt/purerc/__release ) - (func $~lib/typedarray/Uint64Array#reverse (; 371 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/typedarray/Uint64Array#reverse (; 377 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -16004,28 +19389,29 @@ (local $5 i32) (local $6 i32) (local $7 i64) - local.get $0 - local.set $1 - local.get $1 - i32.load offset=4 - local.set $2 - block $break|0 - block - i32.const 0 - local.set $3 - local.get $1 - call $~lib/typedarray/Uint64Array#get:length - i32.const 1 - i32.sub - local.set $4 - end - loop $repeat|0 - local.get $3 - local.get $4 - i32.lt_s - i32.eqz - br_if $break|0 + block $~lib/typedarray/REVERSE<~lib/typedarray/Uint64Array,u64>|inlined.0 (result i32) + local.get $0 + call $~lib/rt/purerc/__retain + local.set $1 + local.get $1 + i32.load offset=4 + local.set $2 + block $break|0 block + i32.const 0 + local.set $3 + local.get $1 + call $~lib/typedarray/Uint64Array#get:length + i32.const 1 + i32.sub + local.set $4 + end + loop $repeat|0 + local.get $3 + local.get $4 + i32.lt_s + i32.eqz + br_if $break|0 local.get $2 local.get $3 i32.const 3 @@ -16048,309 +19434,325 @@ local.get $6 local.get $7 i64.store + block + local.get $3 + i32.const 1 + i32.add + local.set $3 + local.get $4 + i32.const 1 + i32.sub + local.set $4 + end + br $repeat|0 + unreachable end - block - local.get $3 - i32.const 1 - i32.add - local.set $3 - local.get $4 - i32.const 1 - i32.sub - local.set $4 - end - br $repeat|0 unreachable end - unreachable + local.get $1 end + local.tee $2 + call $~lib/rt/purerc/__retain + local.set $1 + local.get $2 + call $~lib/rt/purerc/__release local.get $1 ) - (func $~lib/typedarray/Uint64Array#subarray (; 372 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/typedarray/Uint64Array#subarray (; 378 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) (local $6 i32) (local $7 i32) (local $8 i32) - (local $9 i32) - (local $10 i32) - (local $11 i32) - (local $12 i32) - local.get $0 - local.set $5 - local.get $1 - local.set $4 - local.get $2 - local.set $3 - local.get $5 - call $~lib/typedarray/Uint64Array#get:length - local.set $6 - local.get $4 - i32.const 0 - i32.lt_s - if - local.get $6 + block $~lib/typedarray/SUBARRAY<~lib/typedarray/Uint64Array,u64>|inlined.0 (result i32) + local.get $0 + call $~lib/rt/purerc/__retain + local.set $5 + local.get $1 + local.set $4 + local.get $2 + local.set $3 + local.get $5 + call $~lib/typedarray/Uint64Array#get:length + local.set $6 local.get $4 - i32.add - local.tee $7 i32.const 0 - local.tee $8 - local.get $7 - local.get $8 - i32.gt_s - select - local.set $4 - else - local.get $4 - local.tee $7 - local.get $6 - local.tee $8 - local.get $7 - local.get $8 i32.lt_s - select - local.set $4 - end - local.get $3 - i32.const 0 - i32.lt_s - if - local.get $6 - local.get $3 - i32.add - local.tee $7 - local.get $4 - local.tee $8 - local.get $7 - local.get $8 - i32.gt_s - select - local.set $3 - else - local.get $3 - local.tee $7 - local.get $6 - local.tee $8 - local.get $7 - local.get $8 - i32.lt_s - select - local.tee $7 - local.get $4 - local.tee $8 - local.get $7 - local.get $8 - i32.gt_s - select - local.set $3 - end - i32.const 12 - call $~lib/util/runtime/allocate - local.set $7 - local.get $5 - i32.load - local.set $8 - local.get $5 - i32.load offset=4 - local.set $9 - local.get $7 - local.tee $10 - local.get $8 - local.tee $11 - local.get $10 - i32.load - local.tee $12 - i32.ne - if (result i32) - local.get $12 if - local.get $12 - local.get $10 - call $~lib/collector/dummy/__ref_unlink + local.get $6 + local.get $4 + i32.add + local.tee $7 + i32.const 0 + local.tee $8 + local.get $7 + local.get $8 + i32.gt_s + select + local.set $4 + else + local.get $4 + local.tee $7 + local.get $6 + local.tee $8 + local.get $7 + local.get $8 + i32.lt_s + select + local.set $4 end - local.get $11 - local.get $10 - call $~lib/collector/dummy/__ref_link - local.get $11 - else - local.get $11 + local.get $3 + i32.const 0 + i32.lt_s + if + local.get $6 + local.get $3 + i32.add + local.tee $7 + local.get $4 + local.tee $8 + local.get $7 + local.get $8 + i32.gt_s + select + local.set $3 + else + local.get $3 + local.tee $7 + local.get $6 + local.tee $8 + local.get $7 + local.get $8 + i32.lt_s + select + local.tee $7 + local.get $4 + local.tee $8 + local.get $7 + local.get $8 + i32.gt_s + select + local.set $3 + end + i32.const 12 + i32.const 25 + call $~lib/rt/tlsf/__alloc + local.set $7 + local.get $7 + local.tee $8 + local.get $5 + i32.load + local.get $8 + i32.load + call $~lib/rt/purerc/__retainRelease + i32.store + local.get $7 + local.get $5 + i32.load offset=4 + local.get $4 + i32.const 3 + i32.shl + i32.add + i32.store offset=4 + local.get $7 + local.get $3 + local.get $4 + i32.sub + i32.const 3 + i32.shl + i32.store offset=8 + local.get $7 + call $~lib/rt/purerc/__retain + local.set $8 + local.get $5 + call $~lib/rt/purerc/__release + local.get $8 end - i32.store + local.tee $7 + call $~lib/rt/purerc/__retain + local.set $6 local.get $7 - local.get $9 - local.get $4 - i32.const 3 - i32.shl - i32.add - i32.store offset=4 - local.get $7 - local.get $3 - local.get $4 - i32.sub - i32.const 3 - i32.shl - i32.store offset=8 - local.get $7 - i32.const 25 - call $~lib/util/runtime/register + call $~lib/rt/purerc/__release + local.get $6 ) - (func $std/typedarray/testArrayReverse<~lib/typedarray/Uint64Array,u64> (; 373 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayReverse<~lib/typedarray/Uint64Array,u64> (; 379 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) global.get $std/typedarray/testArrayReverseValues + call $~lib/rt/purerc/__retain local.set $0 i32.const 0 i32.const 9 call $~lib/typedarray/Uint64Array#constructor - local.set $1 + local.tee $1 + call $~lib/rt/purerc/__retain + local.set $2 i32.const 0 i32.const 9 call $~lib/typedarray/Uint64Array#constructor - local.set $2 + local.tee $3 + call $~lib/rt/purerc/__retain + local.set $4 i32.const 0 - local.set $3 + local.set $5 block $break|0 i32.const 0 - local.set $3 + local.set $5 loop $repeat|0 - local.get $3 + local.get $5 i32.const 9 i32.lt_s i32.eqz br_if $break|0 - block - local.get $1 - local.get $3 - local.get $0 - local.get $3 - call $~lib/array/Array#__get - i64.extend_i32_s - call $~lib/typedarray/Uint64Array#__set - local.get $2 - local.get $3 - local.get $0 - local.get $3 - call $~lib/array/Array#__get - i64.extend_i32_s - call $~lib/typedarray/Uint64Array#__set - end - local.get $3 + local.get $2 + local.get $5 + local.get $0 + local.get $5 + call $~lib/array/Array#__get + i64.extend_i32_s + call $~lib/typedarray/Uint64Array#__set + local.get $4 + local.get $5 + local.get $0 + local.get $5 + call $~lib/array/Array#__get + i64.extend_i32_s + call $~lib/typedarray/Uint64Array#__set + local.get $5 i32.const 1 i32.add - local.set $3 + local.set $5 br $repeat|0 unreachable end unreachable end - local.get $1 + local.get $2 call $~lib/typedarray/Uint64Array#reverse - drop + call $~lib/rt/purerc/__release block $break|1 i32.const 0 - local.set $3 + local.set $5 loop $repeat|1 - local.get $3 + local.get $5 i32.const 9 i32.lt_s i32.eqz br_if $break|1 - local.get $1 - local.get $3 + local.get $2 + local.get $5 call $~lib/typedarray/Uint64Array#__get local.get $0 i32.const 8 - local.get $3 + local.get $5 i32.sub call $~lib/array/Array#__get i64.extend_i32_s i64.eq i32.eqz if - i32.const 1272 + i32.const 1480 i32.const 24 - i32.const 461 + i32.const 460 i32.const 4 call $~lib/builtins/abort unreachable end - local.get $3 + local.get $5 i32.const 1 i32.add - local.set $3 + local.set $5 br $repeat|1 unreachable end unreachable end - local.get $2 + local.get $4 i32.const 4 i32.const 8 call $~lib/typedarray/Uint64Array#subarray + local.tee $6 call $~lib/typedarray/Uint64Array#reverse - local.set $4 - local.get $4 + local.set $7 + local.get $7 i32.const 0 call $~lib/typedarray/Uint64Array#__get i64.const 8 i64.eq i32.eqz if - i32.const 1360 + i32.const 1568 i32.const 24 - i32.const 466 + i32.const 465 i32.const 2 call $~lib/builtins/abort unreachable end - local.get $4 + local.get $7 i32.const 1 call $~lib/typedarray/Uint64Array#__get i64.const 7 i64.eq i32.eqz if - i32.const 1360 + i32.const 1568 i32.const 24 - i32.const 467 + i32.const 466 i32.const 2 call $~lib/builtins/abort unreachable end - local.get $4 + local.get $7 i32.const 2 call $~lib/typedarray/Uint64Array#__get i64.const 6 i64.eq i32.eqz if - i32.const 1360 + i32.const 1568 i32.const 24 - i32.const 468 + i32.const 467 i32.const 2 call $~lib/builtins/abort unreachable end - local.get $4 + local.get $7 i32.const 3 call $~lib/typedarray/Uint64Array#__get i64.const 5 i64.eq i32.eqz if - i32.const 1360 + i32.const 1568 i32.const 24 - i32.const 469 + i32.const 468 i32.const 2 call $~lib/builtins/abort unreachable end + local.get $1 + call $~lib/rt/purerc/__release + local.get $3 + call $~lib/rt/purerc/__release + local.get $6 + call $~lib/rt/purerc/__release + local.get $0 + call $~lib/rt/purerc/__release + local.get $2 + call $~lib/rt/purerc/__release + local.get $4 + call $~lib/rt/purerc/__release + local.get $7 + call $~lib/rt/purerc/__release ) - (func $~lib/typedarray/Float32Array#reverse (; 374 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/typedarray/Float32Array#reverse (; 380 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -16358,28 +19760,29 @@ (local $5 i32) (local $6 i32) (local $7 f32) - local.get $0 - local.set $1 - local.get $1 - i32.load offset=4 - local.set $2 - block $break|0 - block - i32.const 0 - local.set $3 - local.get $1 - call $~lib/typedarray/Float32Array#get:length - i32.const 1 - i32.sub - local.set $4 - end - loop $repeat|0 - local.get $3 - local.get $4 - i32.lt_s - i32.eqz - br_if $break|0 + block $~lib/typedarray/REVERSE<~lib/typedarray/Float32Array,f32>|inlined.0 (result i32) + local.get $0 + call $~lib/rt/purerc/__retain + local.set $1 + local.get $1 + i32.load offset=4 + local.set $2 + block $break|0 block + i32.const 0 + local.set $3 + local.get $1 + call $~lib/typedarray/Float32Array#get:length + i32.const 1 + i32.sub + local.set $4 + end + loop $repeat|0 + local.get $3 + local.get $4 + i32.lt_s + i32.eqz + br_if $break|0 local.get $2 local.get $3 i32.const 2 @@ -16402,25 +19805,581 @@ local.get $6 local.get $7 f32.store + block + local.get $3 + i32.const 1 + i32.add + local.set $3 + local.get $4 + i32.const 1 + i32.sub + local.set $4 + end + br $repeat|0 + unreachable end - block - local.get $3 - i32.const 1 - i32.add - local.set $3 - local.get $4 - i32.const 1 - i32.sub - local.set $4 - end + unreachable + end + local.get $1 + end + local.tee $2 + call $~lib/rt/purerc/__retain + local.set $1 + local.get $2 + call $~lib/rt/purerc/__release + local.get $1 + ) + (func $~lib/typedarray/Float32Array#subarray (; 381 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + block $~lib/typedarray/SUBARRAY<~lib/typedarray/Float32Array,f32>|inlined.0 (result i32) + local.get $0 + call $~lib/rt/purerc/__retain + local.set $5 + local.get $1 + local.set $4 + local.get $2 + local.set $3 + local.get $5 + call $~lib/typedarray/Float32Array#get:length + local.set $6 + local.get $4 + i32.const 0 + i32.lt_s + if + local.get $6 + local.get $4 + i32.add + local.tee $7 + i32.const 0 + local.tee $8 + local.get $7 + local.get $8 + i32.gt_s + select + local.set $4 + else + local.get $4 + local.tee $7 + local.get $6 + local.tee $8 + local.get $7 + local.get $8 + i32.lt_s + select + local.set $4 + end + local.get $3 + i32.const 0 + i32.lt_s + if + local.get $6 + local.get $3 + i32.add + local.tee $7 + local.get $4 + local.tee $8 + local.get $7 + local.get $8 + i32.gt_s + select + local.set $3 + else + local.get $3 + local.tee $7 + local.get $6 + local.tee $8 + local.get $7 + local.get $8 + i32.lt_s + select + local.tee $7 + local.get $4 + local.tee $8 + local.get $7 + local.get $8 + i32.gt_s + select + local.set $3 + end + i32.const 12 + i32.const 26 + call $~lib/rt/tlsf/__alloc + local.set $7 + local.get $7 + local.tee $8 + local.get $5 + i32.load + local.get $8 + i32.load + call $~lib/rt/purerc/__retainRelease + i32.store + local.get $7 + local.get $5 + i32.load offset=4 + local.get $4 + i32.const 2 + i32.shl + i32.add + i32.store offset=4 + local.get $7 + local.get $3 + local.get $4 + i32.sub + i32.const 2 + i32.shl + i32.store offset=8 + local.get $7 + call $~lib/rt/purerc/__retain + local.set $8 + local.get $5 + call $~lib/rt/purerc/__release + local.get $8 + end + local.tee $7 + call $~lib/rt/purerc/__retain + local.set $6 + local.get $7 + call $~lib/rt/purerc/__release + local.get $6 + ) + (func $std/typedarray/testArrayReverse<~lib/typedarray/Float32Array,f32> (; 382 ;) (type $FUNCSIG$v) + (local $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + global.get $std/typedarray/testArrayReverseValues + call $~lib/rt/purerc/__retain + local.set $0 + i32.const 0 + i32.const 9 + call $~lib/typedarray/Float32Array#constructor + local.tee $1 + call $~lib/rt/purerc/__retain + local.set $2 + i32.const 0 + i32.const 9 + call $~lib/typedarray/Float32Array#constructor + local.tee $3 + call $~lib/rt/purerc/__retain + local.set $4 + i32.const 0 + local.set $5 + block $break|0 + i32.const 0 + local.set $5 + loop $repeat|0 + local.get $5 + i32.const 9 + i32.lt_s + i32.eqz + br_if $break|0 + local.get $2 + local.get $5 + local.get $0 + local.get $5 + call $~lib/array/Array#__get + f32.convert_i32_s + call $~lib/typedarray/Float32Array#__set + local.get $4 + local.get $5 + local.get $0 + local.get $5 + call $~lib/array/Array#__get + f32.convert_i32_s + call $~lib/typedarray/Float32Array#__set + local.get $5 + i32.const 1 + i32.add + local.set $5 br $repeat|0 unreachable end unreachable end + local.get $2 + call $~lib/typedarray/Float32Array#reverse + call $~lib/rt/purerc/__release + block $break|1 + i32.const 0 + local.set $5 + loop $repeat|1 + local.get $5 + i32.const 9 + i32.lt_s + i32.eqz + br_if $break|1 + local.get $2 + local.get $5 + call $~lib/typedarray/Float32Array#__get + local.get $0 + i32.const 8 + local.get $5 + i32.sub + call $~lib/array/Array#__get + f32.convert_i32_s + f32.eq + i32.eqz + if + i32.const 1480 + i32.const 24 + i32.const 460 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $5 + i32.const 1 + i32.add + local.set $5 + br $repeat|1 + unreachable + end + unreachable + end + local.get $4 + i32.const 4 + i32.const 8 + call $~lib/typedarray/Float32Array#subarray + local.tee $6 + call $~lib/typedarray/Float32Array#reverse + local.set $7 + local.get $7 + i32.const 0 + call $~lib/typedarray/Float32Array#__get + f32.const 8 + f32.eq + i32.eqz + if + i32.const 1568 + i32.const 24 + i32.const 465 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $7 + i32.const 1 + call $~lib/typedarray/Float32Array#__get + f32.const 7 + f32.eq + i32.eqz + if + i32.const 1568 + i32.const 24 + i32.const 466 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $7 + i32.const 2 + call $~lib/typedarray/Float32Array#__get + f32.const 6 + f32.eq + i32.eqz + if + i32.const 1568 + i32.const 24 + i32.const 467 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $7 + i32.const 3 + call $~lib/typedarray/Float32Array#__get + f32.const 5 + f32.eq + i32.eqz + if + i32.const 1568 + i32.const 24 + i32.const 468 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $1 + call $~lib/rt/purerc/__release + local.get $3 + call $~lib/rt/purerc/__release + local.get $6 + call $~lib/rt/purerc/__release + local.get $0 + call $~lib/rt/purerc/__release + local.get $2 + call $~lib/rt/purerc/__release + local.get $4 + call $~lib/rt/purerc/__release + local.get $7 + call $~lib/rt/purerc/__release + ) + (func $~lib/typedarray/Float64Array#reverse (; 383 ;) (type $FUNCSIG$ii) (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) + block $~lib/typedarray/REVERSE<~lib/typedarray/Float64Array,f64>|inlined.0 (result i32) + local.get $0 + call $~lib/rt/purerc/__retain + local.set $1 + local.get $1 + i32.load offset=4 + local.set $2 + block $break|0 + block + i32.const 0 + local.set $3 + local.get $1 + call $~lib/typedarray/Float64Array#get:length + i32.const 1 + i32.sub + local.set $4 + end + loop $repeat|0 + local.get $3 + local.get $4 + i32.lt_s + i32.eqz + br_if $break|0 + local.get $2 + local.get $3 + i32.const 3 + i32.shl + i32.add + local.set $5 + local.get $2 + local.get $4 + i32.const 3 + i32.shl + i32.add + local.set $6 + local.get $5 + f64.load + local.set $7 + local.get $5 + local.get $6 + f64.load + f64.store + local.get $6 + local.get $7 + f64.store + block + local.get $3 + i32.const 1 + i32.add + local.set $3 + local.get $4 + i32.const 1 + i32.sub + local.set $4 + end + br $repeat|0 + unreachable + end + unreachable + end + local.get $1 + end + local.tee $2 + call $~lib/rt/purerc/__retain + local.set $1 + local.get $2 + call $~lib/rt/purerc/__release local.get $1 ) - (func $~lib/typedarray/Float32Array#subarray (; 375 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArrayReverse<~lib/typedarray/Float64Array,f64> (; 384 ;) (type $FUNCSIG$v) + (local $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + global.get $std/typedarray/testArrayReverseValues + call $~lib/rt/purerc/__retain + local.set $0 + i32.const 0 + i32.const 9 + call $~lib/typedarray/Float64Array#constructor + local.tee $1 + call $~lib/rt/purerc/__retain + local.set $2 + i32.const 0 + i32.const 9 + call $~lib/typedarray/Float64Array#constructor + local.tee $3 + call $~lib/rt/purerc/__retain + local.set $4 + i32.const 0 + local.set $5 + block $break|0 + i32.const 0 + local.set $5 + loop $repeat|0 + local.get $5 + i32.const 9 + i32.lt_s + i32.eqz + br_if $break|0 + local.get $2 + local.get $5 + local.get $0 + local.get $5 + call $~lib/array/Array#__get + f64.convert_i32_s + call $~lib/typedarray/Float64Array#__set + local.get $4 + local.get $5 + local.get $0 + local.get $5 + call $~lib/array/Array#__get + f64.convert_i32_s + call $~lib/typedarray/Float64Array#__set + local.get $5 + i32.const 1 + i32.add + local.set $5 + br $repeat|0 + unreachable + end + unreachable + end + local.get $2 + call $~lib/typedarray/Float64Array#reverse + call $~lib/rt/purerc/__release + block $break|1 + i32.const 0 + local.set $5 + loop $repeat|1 + local.get $5 + i32.const 9 + i32.lt_s + i32.eqz + br_if $break|1 + local.get $2 + local.get $5 + call $~lib/typedarray/Float64Array#__get + local.get $0 + i32.const 8 + local.get $5 + i32.sub + call $~lib/array/Array#__get + f64.convert_i32_s + f64.eq + i32.eqz + if + i32.const 1480 + i32.const 24 + i32.const 460 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $5 + i32.const 1 + i32.add + local.set $5 + br $repeat|1 + unreachable + end + unreachable + end + local.get $4 + i32.const 4 + i32.const 8 + call $~lib/typedarray/Float64Array#subarray + local.tee $6 + call $~lib/typedarray/Float64Array#reverse + local.set $7 + local.get $7 + i32.const 0 + call $~lib/typedarray/Float64Array#__get + f64.const 8 + f64.eq + i32.eqz + if + i32.const 1568 + i32.const 24 + i32.const 465 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $7 + i32.const 1 + call $~lib/typedarray/Float64Array#__get + f64.const 7 + f64.eq + i32.eqz + if + i32.const 1568 + i32.const 24 + i32.const 466 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $7 + i32.const 2 + call $~lib/typedarray/Float64Array#__get + f64.const 6 + f64.eq + i32.eqz + if + i32.const 1568 + i32.const 24 + i32.const 467 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $7 + i32.const 3 + call $~lib/typedarray/Float64Array#__get + f64.const 5 + f64.eq + i32.eqz + if + i32.const 1568 + i32.const 24 + i32.const 468 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $1 + call $~lib/rt/purerc/__release + local.get $3 + call $~lib/rt/purerc/__release + local.get $6 + call $~lib/rt/purerc/__release + local.get $0 + call $~lib/rt/purerc/__release + local.get $2 + call $~lib/rt/purerc/__release + local.get $4 + call $~lib/rt/purerc/__release + local.get $7 + call $~lib/rt/purerc/__release + ) + (func $start:std/typedarray (; 385 ;) (type $FUNCSIG$v) + (local $0 i32) + (local $1 i32) + (local $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -16431,505 +20390,9 @@ (local $10 i32) (local $11 i32) (local $12 i32) - local.get $0 - local.set $5 - local.get $1 - local.set $4 - local.get $2 - local.set $3 - local.get $5 - call $~lib/typedarray/Float32Array#get:length - local.set $6 - local.get $4 - i32.const 0 - i32.lt_s - if - local.get $6 - local.get $4 - i32.add - local.tee $7 - i32.const 0 - local.tee $8 - local.get $7 - local.get $8 - i32.gt_s - select - local.set $4 - else - local.get $4 - local.tee $7 - local.get $6 - local.tee $8 - local.get $7 - local.get $8 - i32.lt_s - select - local.set $4 - end - local.get $3 - i32.const 0 - i32.lt_s - if - local.get $6 - local.get $3 - i32.add - local.tee $7 - local.get $4 - local.tee $8 - local.get $7 - local.get $8 - i32.gt_s - select - local.set $3 - else - local.get $3 - local.tee $7 - local.get $6 - local.tee $8 - local.get $7 - local.get $8 - i32.lt_s - select - local.tee $7 - local.get $4 - local.tee $8 - local.get $7 - local.get $8 - i32.gt_s - select - local.set $3 - end - i32.const 12 - call $~lib/util/runtime/allocate - local.set $7 - local.get $5 - i32.load - local.set $8 - local.get $5 - i32.load offset=4 - local.set $9 - local.get $7 - local.tee $10 - local.get $8 - local.tee $11 - local.get $10 - i32.load - local.tee $12 - i32.ne - if (result i32) - local.get $12 - if - local.get $12 - local.get $10 - call $~lib/collector/dummy/__ref_unlink - end - local.get $11 - local.get $10 - call $~lib/collector/dummy/__ref_link - local.get $11 - else - local.get $11 - end - i32.store - local.get $7 - local.get $9 - local.get $4 - i32.const 2 - i32.shl - i32.add - i32.store offset=4 - local.get $7 - local.get $3 - local.get $4 - i32.sub - i32.const 2 - i32.shl - i32.store offset=8 - local.get $7 - i32.const 26 - call $~lib/util/runtime/register - ) - (func $std/typedarray/testArrayReverse<~lib/typedarray/Float32Array,f32> (; 376 ;) (type $FUNCSIG$v) - (local $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - global.get $std/typedarray/testArrayReverseValues - local.set $0 - i32.const 0 - i32.const 9 - call $~lib/typedarray/Float32Array#constructor - local.set $1 - i32.const 0 - i32.const 9 - call $~lib/typedarray/Float32Array#constructor - local.set $2 - i32.const 0 - local.set $3 - block $break|0 - i32.const 0 - local.set $3 - loop $repeat|0 - local.get $3 - i32.const 9 - i32.lt_s - i32.eqz - br_if $break|0 - block - local.get $1 - local.get $3 - local.get $0 - local.get $3 - call $~lib/array/Array#__get - f32.convert_i32_s - call $~lib/typedarray/Float32Array#__set - local.get $2 - local.get $3 - local.get $0 - local.get $3 - call $~lib/array/Array#__get - f32.convert_i32_s - call $~lib/typedarray/Float32Array#__set - end - local.get $3 - i32.const 1 - i32.add - local.set $3 - br $repeat|0 - unreachable - end - unreachable - end - local.get $1 - call $~lib/typedarray/Float32Array#reverse - drop - block $break|1 - i32.const 0 - local.set $3 - loop $repeat|1 - local.get $3 - i32.const 9 - i32.lt_s - i32.eqz - br_if $break|1 - local.get $1 - local.get $3 - call $~lib/typedarray/Float32Array#__get - local.get $0 - i32.const 8 - local.get $3 - i32.sub - call $~lib/array/Array#__get - f32.convert_i32_s - f32.eq - i32.eqz - if - i32.const 1272 - i32.const 24 - i32.const 461 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const 1 - i32.add - local.set $3 - br $repeat|1 - unreachable - end - unreachable - end - local.get $2 - i32.const 4 - i32.const 8 - call $~lib/typedarray/Float32Array#subarray - call $~lib/typedarray/Float32Array#reverse - local.set $4 - local.get $4 - i32.const 0 - call $~lib/typedarray/Float32Array#__get - f32.const 8 - f32.eq - i32.eqz - if - i32.const 1360 - i32.const 24 - i32.const 466 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $4 - i32.const 1 - call $~lib/typedarray/Float32Array#__get - f32.const 7 - f32.eq - i32.eqz - if - i32.const 1360 - i32.const 24 - i32.const 467 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $4 - i32.const 2 - call $~lib/typedarray/Float32Array#__get - f32.const 6 - f32.eq - i32.eqz - if - i32.const 1360 - i32.const 24 - i32.const 468 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $4 - i32.const 3 - call $~lib/typedarray/Float32Array#__get - f32.const 5 - f32.eq - i32.eqz - if - i32.const 1360 - i32.const 24 - i32.const 469 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - ) - (func $~lib/typedarray/Float64Array#reverse (; 377 ;) (type $FUNCSIG$ii) (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.get $0 - local.set $1 - local.get $1 - i32.load offset=4 - local.set $2 - block $break|0 - block - i32.const 0 - local.set $3 - local.get $1 - call $~lib/typedarray/Float64Array#get:length - i32.const 1 - i32.sub - local.set $4 - end - loop $repeat|0 - local.get $3 - local.get $4 - i32.lt_s - i32.eqz - br_if $break|0 - block - local.get $2 - local.get $3 - i32.const 3 - i32.shl - i32.add - local.set $5 - local.get $2 - local.get $4 - i32.const 3 - i32.shl - i32.add - local.set $6 - local.get $5 - f64.load - local.set $7 - local.get $5 - local.get $6 - f64.load - f64.store - local.get $6 - local.get $7 - f64.store - end - block - local.get $3 - i32.const 1 - i32.add - local.set $3 - local.get $4 - i32.const 1 - i32.sub - local.set $4 - end - br $repeat|0 - unreachable - end - unreachable - end - local.get $1 - ) - (func $std/typedarray/testArrayReverse<~lib/typedarray/Float64Array,f64> (; 378 ;) (type $FUNCSIG$v) - (local $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - global.get $std/typedarray/testArrayReverseValues - local.set $0 - i32.const 0 - i32.const 9 - call $~lib/typedarray/Float64Array#constructor - local.set $1 - i32.const 0 - i32.const 9 - call $~lib/typedarray/Float64Array#constructor - local.set $2 - i32.const 0 - local.set $3 - block $break|0 - i32.const 0 - local.set $3 - loop $repeat|0 - local.get $3 - i32.const 9 - i32.lt_s - i32.eqz - br_if $break|0 - block - local.get $1 - local.get $3 - local.get $0 - local.get $3 - call $~lib/array/Array#__get - f64.convert_i32_s - call $~lib/typedarray/Float64Array#__set - local.get $2 - local.get $3 - local.get $0 - local.get $3 - call $~lib/array/Array#__get - f64.convert_i32_s - call $~lib/typedarray/Float64Array#__set - end - local.get $3 - i32.const 1 - i32.add - local.set $3 - br $repeat|0 - unreachable - end - unreachable - end - local.get $1 - call $~lib/typedarray/Float64Array#reverse - drop - block $break|1 - i32.const 0 - local.set $3 - loop $repeat|1 - local.get $3 - i32.const 9 - i32.lt_s - i32.eqz - br_if $break|1 - local.get $1 - local.get $3 - call $~lib/typedarray/Float64Array#__get - local.get $0 - i32.const 8 - local.get $3 - i32.sub - call $~lib/array/Array#__get - f64.convert_i32_s - f64.eq - i32.eqz - if - i32.const 1272 - i32.const 24 - i32.const 461 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const 1 - i32.add - local.set $3 - br $repeat|1 - unreachable - end - unreachable - end - local.get $2 - i32.const 4 - i32.const 8 - call $~lib/typedarray/Float64Array#subarray - call $~lib/typedarray/Float64Array#reverse - local.set $4 - local.get $4 - i32.const 0 - call $~lib/typedarray/Float64Array#__get - f64.const 8 - f64.eq - i32.eqz - if - i32.const 1360 - i32.const 24 - i32.const 466 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $4 - i32.const 1 - call $~lib/typedarray/Float64Array#__get - f64.const 7 - f64.eq - i32.eqz - if - i32.const 1360 - i32.const 24 - i32.const 467 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $4 - i32.const 2 - call $~lib/typedarray/Float64Array#__get - f64.const 6 - f64.eq - i32.eqz - if - i32.const 1360 - i32.const 24 - i32.const 468 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $4 - i32.const 3 - call $~lib/typedarray/Float64Array#__get - f64.const 5 - f64.eq - i32.eqz - if - i32.const 1360 - i32.const 24 - i32.const 469 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - ) - (func $start:std/typedarray (; 379 ;) (type $FUNCSIG$v) + (local $13 i32) + (local $14 i32) + (local $15 i32) global.get $~lib/typedarray/Int8Array.BYTES_PER_ELEMENT i32.const 1 i32.eq @@ -17062,16 +20525,6 @@ call $~lib/builtins/abort unreachable end - global.get $~lib/memory/HEAP_BASE - i32.const 7 - i32.add - i32.const 7 - i32.const -1 - i32.xor - i32.and - global.set $~lib/allocator/arena/startOffset - global.get $~lib/allocator/arena/startOffset - global.set $~lib/allocator/arena/offset i32.const 0 call $std/typedarray/testInstantiate i32.const 5 @@ -17175,10 +20628,14 @@ call $~lib/builtins/abort unreachable end - global.get $std/typedarray/arr - i32.const 1 - i32.const 2 - call $~lib/typedarray/Int32Array#subarray + block (result i32) + global.get $std/typedarray/arr + call $~lib/rt/purerc/__release + global.get $std/typedarray/arr + i32.const 1 + i32.const 2 + call $~lib/typedarray/Int32Array#subarray + end global.set $std/typedarray/arr global.get $std/typedarray/arr call $~lib/typedarray/Int32Array#get:length @@ -17273,10 +20730,14 @@ i32.const 7 f64.const 8 call $~lib/typedarray/Float64Array#__set - global.get $std/typedarray/af64 - i32.const 2 - i32.const 6 - call $~lib/typedarray/Float64Array#subarray + block (result i32) + global.get $std/typedarray/af64 + call $~lib/rt/purerc/__release + global.get $std/typedarray/af64 + i32.const 2 + i32.const 6 + call $~lib/typedarray/Float64Array#subarray + end global.set $std/typedarray/af64 global.get $std/typedarray/af64 call $~lib/typedarray/Float64Array#get:length @@ -17321,14 +20782,14 @@ call $~lib/builtins/abort unreachable end - block (result i32) + block i32.const 0 global.set $~lib/argc global.get $std/typedarray/af64 i32.const 0 call $~lib/typedarray/Float64Array#sort|trampoline + call $~lib/rt/purerc/__release end - drop global.get $std/typedarray/af64 i32.const 0 call $~lib/typedarray/Float64Array#__get @@ -17457,13 +20918,15 @@ i32.const 1 i32.const 3 call $~lib/typedarray/Int8Array#fill - drop + call $~lib/rt/purerc/__release global.get $std/typedarray/arr8 i32.const 5 i32.const 0 i32.const 28 - i32.const 248 - call $~lib/util/runtime/makeArray + i32.const 400 + call $~lib/rt/common/__allocArray + call $~lib/rt/purerc/__retain + local.tee $1 call $std/typedarray/isInt8ArrayEqual i32.eqz if @@ -17479,13 +20942,15 @@ i32.const 0 global.get $~lib/builtins/i32.MAX_VALUE call $~lib/typedarray/Int8Array#fill - drop + call $~lib/rt/purerc/__release global.get $std/typedarray/arr8 i32.const 5 i32.const 0 i32.const 28 - i32.const 320 - call $~lib/util/runtime/makeArray + i32.const 528 + call $~lib/rt/common/__allocArray + call $~lib/rt/purerc/__retain + local.tee $2 call $std/typedarray/isInt8ArrayEqual i32.eqz if @@ -17501,13 +20966,15 @@ i32.const 0 i32.const -3 call $~lib/typedarray/Int8Array#fill - drop + call $~lib/rt/purerc/__release global.get $std/typedarray/arr8 i32.const 5 i32.const 0 i32.const 28 - i32.const 344 - call $~lib/util/runtime/makeArray + i32.const 552 + call $~lib/rt/common/__allocArray + call $~lib/rt/purerc/__retain + local.tee $3 call $std/typedarray/isInt8ArrayEqual i32.eqz if @@ -17523,13 +20990,15 @@ i32.const -2 global.get $~lib/builtins/i32.MAX_VALUE call $~lib/typedarray/Int8Array#fill - drop + call $~lib/rt/purerc/__release global.get $std/typedarray/arr8 i32.const 5 i32.const 0 i32.const 28 - i32.const 368 - call $~lib/util/runtime/makeArray + i32.const 576 + call $~lib/rt/common/__allocArray + call $~lib/rt/purerc/__retain + local.tee $4 call $std/typedarray/isInt8ArrayEqual i32.eqz if @@ -17545,13 +21014,15 @@ i32.const 1 i32.const 0 call $~lib/typedarray/Int8Array#fill - drop + call $~lib/rt/purerc/__release global.get $std/typedarray/arr8 i32.const 5 i32.const 0 i32.const 28 - i32.const 392 - call $~lib/util/runtime/makeArray + i32.const 600 + call $~lib/rt/common/__allocArray + call $~lib/rt/purerc/__retain + local.tee $5 call $std/typedarray/isInt8ArrayEqual i32.eqz if @@ -17572,7 +21043,7 @@ i32.const 0 global.get $~lib/builtins/i32.MAX_VALUE call $~lib/typedarray/Int8Array#fill - drop + call $~lib/rt/purerc/__release global.get $std/typedarray/sub8 call $~lib/typedarray/Int8Array#get:length i32.const 3 @@ -17616,8 +21087,10 @@ i32.const 3 i32.const 0 i32.const 28 - i32.const 416 - call $~lib/util/runtime/makeArray + i32.const 624 + call $~lib/rt/common/__allocArray + call $~lib/rt/purerc/__retain + local.tee $6 call $std/typedarray/isInt8ArrayEqual i32.eqz if @@ -17632,8 +21105,10 @@ i32.const 5 i32.const 0 i32.const 28 - i32.const 440 - call $~lib/util/runtime/makeArray + i32.const 648 + call $~lib/rt/common/__allocArray + call $~lib/rt/purerc/__retain + local.tee $7 call $std/typedarray/isInt8ArrayEqual i32.eqz if @@ -17673,13 +21148,15 @@ i32.const 1 i32.const 3 call $~lib/typedarray/Int32Array#fill - drop + call $~lib/rt/purerc/__release global.get $std/typedarray/arr32 i32.const 5 i32.const 2 i32.const 29 - i32.const 464 - call $~lib/util/runtime/makeArray + i32.const 672 + call $~lib/rt/common/__allocArray + call $~lib/rt/purerc/__retain + local.tee $8 call $std/typedarray/isInt32ArrayEqual i32.eqz if @@ -17695,13 +21172,15 @@ i32.const 0 global.get $~lib/builtins/i32.MAX_VALUE call $~lib/typedarray/Int32Array#fill - drop + call $~lib/rt/purerc/__release global.get $std/typedarray/arr32 i32.const 5 i32.const 2 i32.const 29 - i32.const 504 - call $~lib/util/runtime/makeArray + i32.const 712 + call $~lib/rt/common/__allocArray + call $~lib/rt/purerc/__retain + local.tee $9 call $std/typedarray/isInt32ArrayEqual i32.eqz if @@ -17717,13 +21196,15 @@ i32.const 0 i32.const -3 call $~lib/typedarray/Int32Array#fill - drop + call $~lib/rt/purerc/__release global.get $std/typedarray/arr32 i32.const 5 i32.const 2 i32.const 29 - i32.const 544 - call $~lib/util/runtime/makeArray + i32.const 752 + call $~lib/rt/common/__allocArray + call $~lib/rt/purerc/__retain + local.tee $10 call $std/typedarray/isInt32ArrayEqual i32.eqz if @@ -17739,13 +21220,15 @@ i32.const -2 global.get $~lib/builtins/i32.MAX_VALUE call $~lib/typedarray/Int32Array#fill - drop + call $~lib/rt/purerc/__release global.get $std/typedarray/arr32 i32.const 5 i32.const 2 i32.const 29 - i32.const 584 - call $~lib/util/runtime/makeArray + i32.const 792 + call $~lib/rt/common/__allocArray + call $~lib/rt/purerc/__retain + local.tee $11 call $std/typedarray/isInt32ArrayEqual i32.eqz if @@ -17761,13 +21244,15 @@ i32.const 1 i32.const 0 call $~lib/typedarray/Int32Array#fill - drop + call $~lib/rt/purerc/__release global.get $std/typedarray/arr32 i32.const 5 i32.const 2 i32.const 29 - i32.const 624 - call $~lib/util/runtime/makeArray + i32.const 832 + call $~lib/rt/common/__allocArray + call $~lib/rt/purerc/__retain + local.tee $12 call $std/typedarray/isInt32ArrayEqual i32.eqz if @@ -17788,7 +21273,7 @@ i32.const 0 global.get $~lib/builtins/i32.MAX_VALUE call $~lib/typedarray/Int32Array#fill - drop + call $~lib/rt/purerc/__release global.get $std/typedarray/sub32 call $~lib/typedarray/Int32Array#get:length i32.const 3 @@ -17836,8 +21321,10 @@ i32.const 3 i32.const 2 i32.const 29 - i32.const 664 - call $~lib/util/runtime/makeArray + i32.const 872 + call $~lib/rt/common/__allocArray + call $~lib/rt/purerc/__retain + local.tee $13 call $std/typedarray/isInt32ArrayEqual i32.eqz if @@ -17852,8 +21339,10 @@ i32.const 5 i32.const 2 i32.const 29 - i32.const 696 - call $~lib/util/runtime/makeArray + i32.const 904 + call $~lib/rt/common/__allocArray + call $~lib/rt/purerc/__retain + local.tee $14 call $std/typedarray/isInt32ArrayEqual i32.eqz if @@ -17867,7 +21356,7 @@ i32.const 0 global.get $std/typedarray/MAX_F64LENGTH call $~lib/typedarray/Float64Array#constructor - drop + call $~lib/rt/purerc/__release i32.const 0 i32.const 6 call $~lib/typedarray/Int8Array#constructor @@ -18158,50 +21647,50 @@ call $std/typedarray/testArrayReverse<~lib/typedarray/Uint64Array,u64> call $std/typedarray/testArrayReverse<~lib/typedarray/Float32Array,f32> call $std/typedarray/testArrayReverse<~lib/typedarray/Float64Array,f64> - ) - (func $~lib/runtime/runtime.instanceof (; 380 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - local.get $0 - global.get $~lib/util/runtime/HEADER_SIZE - i32.sub - i32.load - local.set $2 - global.get $~lib/runtime/RTTI_BASE - local.set $3 + local.get $1 + call $~lib/rt/purerc/__release local.get $2 - if (result i32) - local.get $2 - local.get $3 - i32.load - i32.le_u - else - i32.const 0 - end - if - loop $continue|0 - local.get $2 - local.get $1 - i32.eq - if - i32.const 1 - return - end - local.get $3 - local.get $2 - i32.const 8 - i32.mul - i32.add - i32.load offset=4 - local.tee $2 - br_if $continue|0 - end - end - i32.const 0 + call $~lib/rt/purerc/__release + local.get $3 + call $~lib/rt/purerc/__release + local.get $4 + call $~lib/rt/purerc/__release + local.get $5 + call $~lib/rt/purerc/__release + local.get $6 + call $~lib/rt/purerc/__release + local.get $7 + call $~lib/rt/purerc/__release + local.get $8 + call $~lib/rt/purerc/__release + local.get $9 + call $~lib/rt/purerc/__release + local.get $10 + call $~lib/rt/purerc/__release + local.get $11 + call $~lib/rt/purerc/__release + local.get $12 + call $~lib/rt/purerc/__release + local.get $13 + call $~lib/rt/purerc/__release + local.get $14 + call $~lib/rt/purerc/__release ) - (func $~lib/runtime/runtime.flags (; 381 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $std/typedarray/main (; 386 ;) (type $FUNCSIG$v) + global.get $~lib/started + i32.eqz + if + call $start + i32.const 1 + global.set $~lib/started + end + ) + (func $start (; 387 ;) (type $FUNCSIG$v) + call $start:std/typedarray + ) + (func $~lib/rt/common/__typeinfo (; 388 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) - global.get $~lib/runtime/RTTI_BASE + global.get $~lib/builtins/RTTI_BASE local.set $1 local.get $0 i32.eqz @@ -18213,183 +21702,596 @@ i32.load i32.gt_u end - if (result i32) + if + i32.const 288 + i32.const 1672 + i32.const 55 + i32.const 34 + call $~lib/builtins/abort unreachable - else - local.get $1 - local.get $0 - i32.const 8 - i32.mul - i32.add - i32.load end - ) - (func $~lib/runtime/runtime.newObject (; 382 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - local.get $0 - call $~lib/util/runtime/allocate local.get $1 - call $~lib/util/runtime/register - ) - (func $~lib/runtime/runtime.newString (; 383 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 - i32.const 1 - i32.shl - i32.const 16 - call $~lib/runtime/runtime.newObject + i32.const 8 + i32.mul + i32.add + i32.load ) - (func $~lib/runtime/runtime.newArrayBuffer (; 384 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - local.get $0 - i32.const 15 - call $~lib/runtime/runtime.newObject - ) - (func $~lib/arraybuffer/ArrayBuffer#get:byteLength (; 385 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - local.get $0 - global.get $~lib/util/runtime/HEADER_SIZE - i32.sub - i32.load offset=4 - ) - (func $~lib/runtime/runtime.newArray (; 386 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/rt/purerc/growRoots (; 389 ;) (type $FUNCSIG$v) + (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) + global.get $~lib/rt/purerc/ROOTS + local.set $0 + global.get $~lib/rt/purerc/CUR local.get $0 - call $~lib/runtime/runtime.flags - local.set $2 - local.get $2 - i32.const 16 - i32.div_u - i32.const 31 - i32.and - local.set $3 + i32.sub + local.set $1 local.get $1 - i32.eqz - if - i32.const 0 - local.tee $4 - call $~lib/runtime/runtime.newArrayBuffer - local.set $1 - else - local.get $1 - call $~lib/arraybuffer/ArrayBuffer#get:byteLength - local.set $4 - end - local.get $0 - i32.const 16 - call $~lib/runtime/runtime.newObject + i32.const 2 + i32.mul + local.tee $2 + i32.const 64 + i32.const 2 + i32.shl + local.tee $3 + local.get $2 + local.get $3 + i32.gt_u + select + local.set $4 + local.get $4 + i32.const 0 + call $~lib/rt/tlsf/__alloc local.set $5 local.get $5 - local.tee $6 - local.get $1 - local.tee $7 - local.get $6 - i32.load - local.tee $8 - i32.ne - if (result i32) - local.get $8 - if - local.get $8 - local.get $6 - call $~lib/collector/dummy/__ref_unlink - end - local.get $7 - local.get $6 - call $~lib/collector/dummy/__ref_link - local.get $7 - else - local.get $7 - end - i32.store - local.get $5 - local.get $1 - i32.store offset=4 - local.get $5 - local.get $4 - i32.store offset=8 - local.get $5 - local.get $4 - local.get $3 - i32.shr_u - i32.store offset=12 - local.get $2 - i32.const 1024 - i32.and - if - local.get $1 - local.set $6 - local.get $6 - local.get $4 - i32.add - local.set $8 - block $break|0 - loop $continue|0 - local.get $6 - local.get $8 - i32.lt_u - if - block - local.get $6 - i32.load - local.set $7 - local.get $7 - if - local.get $7 - local.get $5 - call $~lib/collector/dummy/__ref_link - end - local.get $6 - i32.const 4 - i32.add - local.set $6 - end - br $continue|0 - end - end - end - end - local.get $5 - ) - (func $~lib/runtime/Root#constructor (; 387 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 + local.get $1 + call $~lib/memory/memory.copy + local.get $5 + global.set $~lib/rt/purerc/ROOTS + local.get $5 + local.get $1 + i32.add + global.set $~lib/rt/purerc/CUR + local.get $5 + local.get $4 + i32.add + global.set $~lib/rt/purerc/END + ) + (func $~lib/rt/purerc/appendRoot (; 390 ;) (type $FUNCSIG$vi) (param $0 i32) + (local $1 i32) + global.get $~lib/rt/purerc/CUR + local.set $1 + local.get $1 + global.get $~lib/rt/purerc/END + i32.ge_u + if + call $~lib/rt/purerc/growRoots + global.get $~lib/rt/purerc/CUR + local.set $1 + end + local.get $1 + local.get $0 + i32.store + local.get $1 + i32.const 1 + i32.add + global.set $~lib/rt/purerc/CUR + ) + (func $~lib/rt/purerc/decrement (; 391 ;) (type $FUNCSIG$vi) (param $0 i32) + (local $1 i32) + (local $2 i32) + local.get $0 + i32.load offset=4 + local.set $1 + local.get $1 + i32.const 268435455 + i32.and + local.set $2 + local.get $0 + call $~lib/rt/purerc/onDecrement + local.get $0 + i32.load + i32.const 1 + i32.and + i32.eqz i32.eqz if i32.const 0 - call $~lib/util/runtime/allocate - i32.const 30 - call $~lib/util/runtime/register - local.set $0 + i32.const 424 + i32.const 114 + i32.const 13 + call $~lib/builtins/abort + unreachable + end + local.get $2 + i32.const 1 + i32.eq + if + local.get $0 + i32.const 16 + i32.add + i32.const 1 + call $~lib/builtins/__visit_members + local.get $1 + i32.const -2147483648 + i32.and + i32.eqz + if + global.get $~lib/rt/tlsf/ROOT + local.get $0 + call $~lib/rt/tlsf/freeBlock + else + local.get $0 + i32.const -2147483648 + i32.const 0 + i32.or + i32.const 0 + i32.or + i32.store offset=4 + end + else + local.get $2 + i32.const 0 + i32.gt_u + i32.eqz + if + i32.const 0 + i32.const 424 + i32.const 123 + i32.const 15 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load offset=8 + call $~lib/rt/common/__typeinfo + i32.const 8 + i32.and + i32.eqz + if + local.get $0 + i32.const -2147483648 + i32.const 805306368 + i32.or + local.get $2 + i32.const 1 + i32.sub + i32.or + i32.store offset=4 + local.get $1 + i32.const -2147483648 + i32.and + i32.eqz + if + local.get $0 + call $~lib/rt/purerc/appendRoot + end + else + local.get $0 + local.get $1 + i32.const 268435455 + i32.const -1 + i32.xor + i32.and + local.get $2 + i32.const 1 + i32.sub + i32.or + i32.store offset=4 + end + end + ) + (func $~lib/rt/purerc/__retainRelease (; 392 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + local.get $0 + local.get $1 + i32.ne + if + global.get $~lib/builtins/HEAP_BASE + local.set $2 + local.get $0 + local.get $2 + i32.gt_u + if + local.get $0 + i32.const 16 + i32.sub + call $~lib/rt/purerc/increment + end + local.get $1 + local.get $2 + i32.gt_u + if + local.get $1 + i32.const 16 + i32.sub + call $~lib/rt/purerc/decrement + end end local.get $0 ) - (func $~lib/runtime/runtime.retain (; 388 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $~lib/rt/purerc/__release (; 393 ;) (type $FUNCSIG$vi) (param $0 i32) local.get $0 - global.get $~lib/runtime/ROOT - call $~lib/collector/dummy/__ref_link + global.get $~lib/builtins/HEAP_BASE + i32.gt_u + if + local.get $0 + i32.const 16 + i32.sub + call $~lib/rt/purerc/decrement + end ) - (func $~lib/runtime/runtime.release (; 389 ;) (type $FUNCSIG$vi) (param $0 i32) - local.get $0 - global.get $~lib/runtime/ROOT - call $~lib/collector/dummy/__ref_unlink - ) - (func $~lib/collector/dummy/__ref_collect (; 390 ;) (type $FUNCSIG$v) + (func $~lib/array/Array#__visit_impl (; 394 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) nop ) - (func $~lib/runtime/runtime.collect (; 391 ;) (type $FUNCSIG$v) - call $~lib/collector/dummy/__ref_collect + (func $~lib/array/Array#__visit_impl (; 395 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + nop ) - (func $~lib/runtime/runtime#constructor (; 392 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/rt/purerc/markGray (; 396 ;) (type $FUNCSIG$vi) (param $0 i32) + (local $1 i32) + local.get $0 + i32.load offset=4 + local.set $1 + local.get $1 + i32.const 1879048192 + i32.and + i32.const 268435456 + i32.ne + if + local.get $0 + local.get $1 + i32.const 1879048192 + i32.const -1 + i32.xor + i32.and + i32.const 268435456 + i32.or + i32.store offset=4 + local.get $0 + i32.const 16 + i32.add + i32.const 2 + call $~lib/builtins/__visit_members + end + ) + (func $~lib/rt/purerc/scanBlack (; 397 ;) (type $FUNCSIG$vi) (param $0 i32) + local.get $0 + local.get $0 + i32.load offset=4 + i32.const 1879048192 + i32.const -1 + i32.xor + i32.and + i32.const 0 + i32.or + i32.store offset=4 + local.get $0 + i32.const 16 + i32.add + i32.const 4 + call $~lib/builtins/__visit_members + ) + (func $~lib/rt/purerc/scan (; 398 ;) (type $FUNCSIG$vi) (param $0 i32) + (local $1 i32) + local.get $0 + i32.load offset=4 + local.set $1 + local.get $1 + i32.const 1879048192 + i32.and + i32.const 268435456 + i32.eq + if + local.get $1 + i32.const 268435455 + i32.and + i32.const 0 + i32.gt_u + if + local.get $0 + call $~lib/rt/purerc/scanBlack + else + local.get $0 + local.get $1 + i32.const 1879048192 + i32.const -1 + i32.xor + i32.and + i32.const 536870912 + i32.or + i32.store offset=4 + local.get $0 + i32.const 16 + i32.add + i32.const 3 + call $~lib/builtins/__visit_members + end + end + ) + (func $~lib/rt/purerc/collectWhite (; 399 ;) (type $FUNCSIG$vi) (param $0 i32) + (local $1 i32) + local.get $0 + i32.load offset=4 + local.set $1 + local.get $1 + i32.const 1879048192 + i32.and + i32.const 536870912 + i32.eq + if (result i32) + local.get $1 + i32.const -2147483648 + i32.and + i32.eqz + else + i32.const 0 + end + if + local.get $0 + i32.const 16 + i32.add + i32.const 5 + call $~lib/builtins/__visit_members + end + global.get $~lib/rt/tlsf/ROOT + local.get $0 + call $~lib/rt/tlsf/freeBlock + ) + (func $~lib/rt/purerc/__visit (; 400 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + local.get $0 + global.get $~lib/builtins/HEAP_BASE + i32.lt_u + if + return + end + local.get $0 + i32.const 16 + i32.sub + local.set $2 + block $break|0 + block $case5|0 + block $case4|0 + block $case3|0 + block $case2|0 + block $case1|0 + block $case0|0 + local.get $1 + local.set $3 + local.get $3 + i32.const 1 + i32.eq + br_if $case0|0 + local.get $3 + i32.const 2 + i32.eq + br_if $case1|0 + local.get $3 + i32.const 3 + i32.eq + br_if $case2|0 + local.get $3 + i32.const 4 + i32.eq + br_if $case3|0 + local.get $3 + i32.const 5 + i32.eq + br_if $case4|0 + br $case5|0 + end + block + local.get $2 + call $~lib/rt/purerc/decrement + br $break|0 + unreachable + end + unreachable + end + block + local.get $2 + i32.load offset=4 + i32.const 268435455 + i32.and + i32.const 0 + i32.gt_u + i32.eqz + if + i32.const 0 + i32.const 424 + i32.const 74 + i32.const 17 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.get $2 + i32.load offset=4 + i32.const 1 + i32.sub + i32.store offset=4 + local.get $2 + call $~lib/rt/purerc/markGray + br $break|0 + unreachable + end + unreachable + end + block + local.get $2 + call $~lib/rt/purerc/scan + br $break|0 + unreachable + end + unreachable + end + block + local.get $2 + i32.load offset=4 + local.set $3 + local.get $3 + i32.const 268435455 + i32.const -1 + i32.xor + i32.and + local.get $3 + i32.const 1 + i32.add + i32.const 268435455 + i32.const -1 + i32.xor + i32.and + i32.eq + i32.eqz + if + i32.const 0 + i32.const 424 + i32.const 85 + i32.const 6 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.get $3 + i32.const 1 + i32.add + i32.store offset=4 + local.get $3 + i32.const 1879048192 + i32.and + i32.const 0 + i32.ne + if + local.get $2 + call $~lib/rt/purerc/scanBlack + end + br $break|0 + unreachable + end + unreachable + end + block + local.get $2 + call $~lib/rt/purerc/collectWhite + br $break|0 + unreachable + end + unreachable + end + i32.const 0 + i32.eqz + if + i32.const 0 + i32.const 424 + i32.const 96 + i32.const 24 + call $~lib/builtins/abort + unreachable + end + end + ) + (func $~lib/builtins/__visit_members (; 401 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (local $2 i32) + block $block$16$break + block + end + block $switch$1$leave + block $switch$1$case$31 + block $switch$1$case$30 + block $switch$1$case$16 + block $switch$1$case$3 + block $switch$1$default + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $switch$1$default $switch$1$case$3 $switch$1$case$3 $switch$1$case$3 $switch$1$case$3 $switch$1$case$3 $switch$1$case$3 $switch$1$case$3 $switch$1$case$3 $switch$1$case$3 $switch$1$case$3 $switch$1$case$3 $switch$1$case$3 $switch$1$case$3 $switch$1$case$16 $switch$1$case$3 $switch$1$case$3 $switch$1$case$16 $switch$1$case$16 $switch$1$case$16 $switch$1$case$16 $switch$1$case$16 $switch$1$case$16 $switch$1$case$16 $switch$1$case$16 $switch$1$case$16 $switch$1$case$16 $switch$1$case$16 $switch$1$case$30 $switch$1$case$31 $switch$1$default + end + block + block + unreachable + unreachable + end + unreachable + unreachable + end + unreachable + end + block + block + return + unreachable + end + unreachable + unreachable + end + unreachable + end + block + br $block$16$break + unreachable + end + unreachable + end + block + block + local.get $0 + local.get $1 + call $~lib/array/Array#__visit_impl + block + br $block$16$break + unreachable + end + unreachable + unreachable + end + unreachable + unreachable + end + unreachable + end + block + block + local.get $0 + local.get $1 + call $~lib/array/Array#__visit_impl + block + br $block$16$break + unreachable + end + unreachable + unreachable + end + unreachable + unreachable + end + unreachable + end + end + block + block + local.get $0 + i32.load + local.tee $2 + if + local.get $2 + local.get $1 + call $~lib/rt/purerc/__visit + end + return + unreachable + end + unreachable + unreachable + end unreachable ) - (func $start (; 393 ;) (type $FUNCSIG$v) - call $start:std/typedarray - i32.const 0 - call $~lib/runtime/Root#constructor - global.set $~lib/runtime/ROOT - ) - (func $null (; 394 ;) (type $FUNCSIG$v) + (func $null (; 402 ;) (type $FUNCSIG$v) ) )