From bf597a06c6bb4159bb3bd6a318155c6a21209d26 Mon Sep 17 00:00:00 2001 From: dcode Date: Wed, 5 Jun 2019 00:18:26 +0200 Subject: [PATCH] Fix lifetime issues in field inits/ctors and refactor inlining --- src/compiler.ts | 153 +- tests/compiler/call-super.untouched.wat | 19 +- tests/compiler/inlining.untouched.wat | 5 - .../retain-release-sanity.untouched.wat | 38 +- tests/compiler/rt/instanceof.untouched.wat | 28 +- tests/compiler/std/array.untouched.wat | 4 - tests/compiler/std/arraybuffer.untouched.wat | 6 +- tests/compiler/std/dataview.untouched.wat | 4 +- tests/compiler/std/pointer.untouched.wat | 193 +- tests/compiler/std/typedarray.optimized.wat | 445 +- tests/compiler/std/typedarray.untouched.wat | 5050 ++++++++--------- 11 files changed, 2711 insertions(+), 3234 deletions(-) diff --git a/src/compiler.ts b/src/compiler.ts index 21f0ee13..b1cd00c9 100644 --- a/src/compiler.ts +++ b/src/compiler.ts @@ -1173,9 +1173,7 @@ export class Compiler extends DiagnosticEmitter { let classInstance = assert(instance.parent); assert(classInstance.kind == ElementKind.CLASS); if (!flow.isAny(FlowFlags.ANY_TERMINATING)) { - let thisLocalIndex = flow.is(FlowFlags.INLINE_CONTEXT) - ? assert(flow.lookupLocal(CommonSymbols.this_)).index - : 0; + let thisLocal = assert(flow.lookupLocal(CommonSymbols.this_)); // if `this` wasn't accessed before, allocate if necessary and initialize `this` if (!flow.is(FlowFlags.ALLOCATES)) { @@ -1187,9 +1185,9 @@ export class Compiler extends DiagnosticEmitter { stmts.push( module.if( module.unary(nativeSizeType == NativeType.I64 ? UnaryOp.EqzI64 : UnaryOp.EqzI32, - module.local_get(thisLocalIndex, nativeSizeType) + module.local_get(thisLocal.index, nativeSizeType) ), - module.local_set(thisLocalIndex, + module.local_set(thisLocal.index, this.makeRetain( this.makeAllocation(classInstance) ), @@ -1198,13 +1196,10 @@ export class Compiler extends DiagnosticEmitter { ); this.makeFieldInitialization(classInstance, stmts); } - - // implicitly return `this`. unlike for normal functions, retaining the value isn't - // necessary because the allocation (constructor call) already did (RC=1) - stmts.push( - module.local_get(thisLocalIndex, nativeSizeType) - ); - flow.set(FlowFlags.RETURNS); + this.performAutoreleases(flow, stmts); // `this` is excluded anyway + this.finishAutoreleases(flow, stmts); + stmts.push(module.local_get(thisLocal.index, this.options.nativeSizeType)); + flow.set(FlowFlags.RETURNS | FlowFlags.RETURNS_NONNULL); } // check that super has been called if this is a derived class @@ -5735,25 +5730,26 @@ export class Compiler extends DiagnosticEmitter { // this.a = X // this.b = Y // } - let stmts: ExpressionRef[] = [ - module.local_set(thisLocal.index, - this.compileCallDirect( - this.ensureConstructor(baseClassInstance, expression), - expression.arguments, - expression, - module.if( - module.local_get(thisLocal.index, nativeSizeType), - module.local_get(thisLocal.index, nativeSizeType), - this.makeRetain( - this.makeAllocation(classInstance) - ) - ) + let theCall = this.compileCallDirect( + this.ensureConstructor(baseClassInstance, expression), + expression.arguments, + expression, + module.if( + module.local_get(thisLocal.index, nativeSizeType), + module.local_get(thisLocal.index, nativeSizeType), + this.makeRetain( + this.makeAllocation(classInstance) ) - ) + ), + ContextualFlags.SKIP_AUTORELEASE + ); + assert(this.skippedAutoreleases.has(theCall)); // guaranteed + let stmts: ExpressionRef[] = [ + module.local_set(thisLocal.index, theCall) ]; this.makeFieldInitialization(classInstance, stmts); - // check that super had been called before accessing allocating `this` + // check that super had been called before accessing `this` if (flow.isAny( FlowFlags.ALLOCATES | FlowFlags.CONDITIONALLY_ALLOCATES @@ -6151,7 +6147,24 @@ export class Compiler extends DiagnosticEmitter { ); } else { this.currentInlineFunctions.push(instance); - let expr = this.compileCallInlinePrechecked(instance, argumentExpressions, thisArg, (contextualFlags & ContextualFlags.WILL_DROP) != 0); + let parameterTypes = signature.parameterTypes; + assert(numArguments <= parameterTypes.length); + // compile argument expressions + let args = new Array(numArguments); + for (let i = 0; i < numArguments; ++i) { + args[i] = this.compileExpression(argumentExpressions[i], parameterTypes[i], + ContextualFlags.IMPLICIT | ContextualFlags.SKIP_AUTORELEASE + ); + } + // make the inlined call (is aware of autoreleases) + let expr = this.makeCallInline(instance, args, thisArg, (contextualFlags & ContextualFlags.WILL_DROP) != 0); + if (this.currentType.isManaged) { + if (!(contextualFlags & ContextualFlags.SKIP_AUTORELEASE)) { + expr = this.makeAutorelease(expr, this.currentFlow); + } else { + this.skippedAutoreleases.add(expr); + } + } this.currentInlineFunctions.pop(); return expr; } @@ -6190,47 +6203,7 @@ export class Compiler extends DiagnosticEmitter { ); } - compileCallInline( - instance: Function, - argumentExpressions: Expression[], - thisArg: ExpressionRef, - reportNode: Node, - canAlias: bool = false - ): ExpressionRef { - var numArguments = argumentExpressions.length; - var signature = instance.signature; - if (!this.checkCallSignature( // reports - signature, - numArguments, - thisArg != 0, - reportNode - )) { - this.currentType = instance.signature.returnType; - return this.module.unreachable(); - } - return this.compileCallInlinePrechecked(instance, argumentExpressions, thisArg, canAlias); - } - - private compileCallInlinePrechecked( - instance: Function, - argumentExpressions: Expression[], - thisArg: ExpressionRef = 0, - immediatelyDropped: bool = false - ): ExpressionRef { - var numArguments = argumentExpressions.length; - var signature = instance.signature; - var parameterTypes = signature.parameterTypes; - assert(numArguments <= parameterTypes.length); - var args = new Array(numArguments); - for (let i = 0; i < numArguments; ++i) { - args[i] = this.compileExpression(argumentExpressions[i], parameterTypes[i], - ContextualFlags.IMPLICIT - ); - } - return this.makeCallInlinePrechecked(instance, args, thisArg, immediatelyDropped); - } - - makeCallInlinePrechecked( + makeCallInline( instance: Function, operands: ExpressionRef[] | null, thisArg: ExpressionRef = 0, @@ -6259,21 +6232,17 @@ export class Compiler extends DiagnosticEmitter { let paramType = parameterTypes[i]; let argumentLocal = flow.addScopedLocal(signature.getParameterName(i), paramType, usedLocals); findUsedLocals(paramExpr, usedLocals); - // Normal function wouldn't know about wrap/nonnull states, but inlining does: + // inlining is aware of wrap/nonnull states: if (!previousFlow.canOverflow(paramExpr, paramType)) flow.setLocalFlag(argumentLocal.index, LocalFlags.WRAPPED); if (flow.isNonnull(paramExpr, paramType)) flow.setLocalFlag(argumentLocal.index, LocalFlags.NONNULL); + // inlining is aware of skipped autoreleases: if (paramType.isManaged) { + if (!this.skippedAutoreleases.has(paramExpr)) paramExpr = this.makeRetain(paramExpr); flow.setLocalFlag(argumentLocal.index, LocalFlags.RETAINED); - body.unshift( - module.local_set(argumentLocal.index, - this.makeRetain(paramExpr) - ) - ); - } else { - body.unshift( - module.local_set(argumentLocal.index, paramExpr) - ); } + body.unshift( + module.local_set(argumentLocal.index, paramExpr) + ); } if (thisArg) { let classInstance = assert(instance.parent); assert(classInstance.kind == ElementKind.CLASS); @@ -6335,8 +6304,6 @@ export class Compiler extends DiagnosticEmitter { if (immediatelyDropped) { expr = this.makeRelease(expr); this.currentType = Type.void; - } else { - expr = this.makeAutorelease(expr); } } return expr; @@ -7845,7 +7812,8 @@ export class Compiler extends DiagnosticEmitter { instance.prototype.setResolvedInstance("", instance); classInstance.constructorInstance = instance; var previousFlow = this.currentFlow; - this.currentFlow = instance.flow; + var flow = instance.flow; + this.currentFlow = flow; // generate body var signature = instance.signature; @@ -7888,9 +7856,9 @@ export class Compiler extends DiagnosticEmitter { ); } this.makeFieldInitialization(classInstance, stmts); - stmts.push( - module.local_get(0, nativeSizeType) - ); + var body = this.performAutoreleasesWithValue(flow, module.local_get(0, nativeSizeType), classInstance.type, stmts); + flow.freeScopedLocals(); + this.currentFlow = previousFlow; // make the function var typeRef = this.ensureFunctionType(signature.parameterTypes, signature.returnType, signature.thisType); @@ -7901,11 +7869,8 @@ export class Compiler extends DiagnosticEmitter { if (numLocals > numOperands) { for (let i = numOperands; i < numLocals; ++i) varTypes.push(locals[i].type.toNativeType()); } - var funcRef = module.addFunction(instance.internalName, typeRef, varTypes, - flatten(module, stmts, nativeSizeType) - ); + var funcRef = module.addFunction(instance.internalName, typeRef, varTypes, body); instance.finalize(module, funcRef); - this.currentFlow = previousFlow; return instance; } @@ -8926,12 +8891,16 @@ export class Compiler extends DiagnosticEmitter { let nativeFieldType = fieldType.toNativeType(); let initializerNode = field.prototype.initializerNode; if (initializerNode) { // use initializer + let initExpr = this.compileExpression(initializerNode, fieldType, // reports + ContextualFlags.IMPLICIT | ContextualFlags.SKIP_AUTORELEASE + ); + if (fieldType.isManaged && !this.skippedAutoreleases.has(initExpr)) { + initExpr = this.makeRetain(initExpr); + } stmts.push( module.store(fieldType.byteSize, module.local_get(thisLocalIndex, nativeSizeType), - this.compileExpression(initializerNode, fieldType, // reports - ContextualFlags.IMPLICIT - ), + initExpr, nativeFieldType, field.memoryOffset ) diff --git a/tests/compiler/call-super.untouched.wat b/tests/compiler/call-super.untouched.wat index 0f3f15ca..d6d81f87 100644 --- a/tests/compiler/call-super.untouched.wat +++ b/tests/compiler/call-super.untouched.wat @@ -140,7 +140,6 @@ local.get $0 ) (func $call-super/B#constructor (; 4 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - (local $1 i32) local.get $0 if (result i32) local.get $0 @@ -151,7 +150,6 @@ call $~lib/rt/stub/__retain end call $call-super/A#constructor - local.tee $1 local.set $0 local.get $0 i32.const 2 @@ -237,7 +235,6 @@ local.get $0 ) (func $call-super/D#constructor (; 8 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - (local $1 i32) local.get $0 if (result i32) local.get $0 @@ -248,7 +245,6 @@ call $~lib/rt/stub/__retain end call $call-super/C#constructor - local.tee $1 local.set $0 local.get $0 i32.const 2 @@ -347,6 +343,7 @@ ) (func $call-super/F#constructor (; 11 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) + (local $2 i32) local.get $0 i32.eqz if @@ -364,6 +361,10 @@ i32.const 2 i32.store offset=4 local.get $0 + local.set $2 + local.get $1 + call $~lib/rt/stub/__release + local.get $2 ) (func $call-super/test3 (; 12 ;) (type $FUNCSIG$v) (local $0 i32) @@ -416,6 +417,7 @@ ) (func $call-super/H#constructor (; 14 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) + (local $2 i32) local.get $0 i32.eqz if @@ -433,6 +435,10 @@ i32.const 2 i32.store offset=4 local.get $0 + local.set $2 + local.get $1 + call $~lib/rt/stub/__release + local.get $2 ) (func $call-super/test4 (; 15 ;) (type $FUNCSIG$v) (local $0 i32) @@ -485,6 +491,7 @@ ) (func $call-super/J#constructor (; 17 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) + (local $2 i32) local.get $0 i32.eqz if @@ -502,6 +509,10 @@ i32.const 2 i32.store offset=4 local.get $0 + local.set $2 + local.get $1 + call $~lib/rt/stub/__release + local.get $2 ) (func $call-super/test5 (; 18 ;) (type $FUNCSIG$v) (local $0 i32) diff --git a/tests/compiler/inlining.untouched.wat b/tests/compiler/inlining.untouched.wat index 1c6969db..986f76a3 100644 --- a/tests/compiler/inlining.untouched.wat +++ b/tests/compiler/inlining.untouched.wat @@ -431,7 +431,6 @@ i32.store offset=4 local.get $3 end - local.tee $3 local.set $1 local.get $1 i32.const 3 @@ -444,8 +443,6 @@ i32.store offset=12 local.get $1 end - local.tee $3 - call $~lib/rt/stub/__retain local.set $4 local.get $4 i32.load @@ -499,8 +496,6 @@ call $~lib/builtins/abort unreachable end - local.get $3 - call $~lib/rt/stub/__release local.get $4 call $~lib/rt/stub/__release ) diff --git a/tests/compiler/retain-release-sanity.untouched.wat b/tests/compiler/retain-release-sanity.untouched.wat index 93a6d20d..c0006def 100644 --- a/tests/compiler/retain-release-sanity.untouched.wat +++ b/tests/compiler/retain-release-sanity.untouched.wat @@ -3223,7 +3223,6 @@ local.get $0 ) (func $~lib/array/Array#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 @@ -3236,7 +3235,6 @@ local.get $1 i32.const 2 call $~lib/arraybuffer/ArrayBufferView#constructor - local.tee $2 local.set $0 local.get $0 i32.const 0 @@ -3806,7 +3804,6 @@ local.get $2 ) (func $~lib/array/Array<~lib/array/Array<~lib/string/String>>#constructor (; 34 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) local.get $0 if (result i32) local.get $0 @@ -3819,24 +3816,17 @@ local.get $1 i32.const 2 call $~lib/arraybuffer/ArrayBufferView#constructor - local.tee $2 local.set $0 local.get $0 i32.const 0 i32.store offset=12 local.get $1 if - local.get $2 - call $~lib/rt/pure/__release - block - i32.const 472 - i32.const 376 - i32.const 56 - i32.const 20 - call $~lib/builtins/abort - unreachable - unreachable - end + i32.const 472 + i32.const 376 + i32.const 56 + i32.const 20 + call $~lib/builtins/abort unreachable end local.get $0 @@ -3845,7 +3835,6 @@ local.get $0 ) (func $~lib/array/Array<~lib/string/String>#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 @@ -3858,24 +3847,17 @@ local.get $1 i32.const 2 call $~lib/arraybuffer/ArrayBufferView#constructor - local.tee $2 local.set $0 local.get $0 i32.const 0 i32.store offset=12 local.get $1 if - local.get $2 - call $~lib/rt/pure/__release - block - i32.const 472 - i32.const 376 - i32.const 56 - i32.const 20 - call $~lib/builtins/abort - unreachable - unreachable - end + i32.const 472 + i32.const 376 + i32.const 56 + i32.const 20 + call $~lib/builtins/abort unreachable end local.get $0 diff --git a/tests/compiler/rt/instanceof.untouched.wat b/tests/compiler/rt/instanceof.untouched.wat index 79531bf7..41fa7829 100644 --- a/tests/compiler/rt/instanceof.untouched.wat +++ b/tests/compiler/rt/instanceof.untouched.wat @@ -1,6 +1,7 @@ (module (type $FUNCSIG$iii (func (param i32 i32) (result i32))) (type $FUNCSIG$ii (func (param i32) (result i32))) + (type $FUNCSIG$vi (func (param i32))) (type $FUNCSIG$viiii (func (param i32 i32 i32 i32))) (type $FUNCSIG$v (func)) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) @@ -132,8 +133,12 @@ end local.get $0 ) - (func $rt/instanceof/Cat#constructor (; 4 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/rt/stub/__release (; 4 ;) (type $FUNCSIG$vi) (param $0 i32) + nop + ) + (func $rt/instanceof/Cat#constructor (; 5 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) + (local $2 i32) local.get $0 i32.eqz if @@ -148,9 +153,14 @@ local.tee $1 local.set $0 local.get $0 + local.set $2 + local.get $1 + call $~lib/rt/stub/__release + local.get $2 ) - (func $rt/instanceof/BlackCat#constructor (; 5 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $rt/instanceof/BlackCat#constructor (; 6 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) + (local $2 i32) local.get $0 i32.eqz if @@ -165,8 +175,12 @@ local.tee $1 local.set $0 local.get $0 + local.set $2 + local.get $1 + call $~lib/rt/stub/__release + local.get $2 ) - (func $~lib/rt/__instanceof (; 6 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/rt/__instanceof (; 7 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) local.get $0 @@ -203,7 +217,7 @@ end i32.const 0 ) - (func $start:rt/instanceof (; 7 ;) (type $FUNCSIG$v) + (func $start:rt/instanceof (; 8 ;) (type $FUNCSIG$v) (local $0 i32) global.get $~lib/heap/__heap_base i32.const 15 @@ -705,7 +719,7 @@ unreachable end ) - (func $rt/instanceof/main (; 8 ;) (type $FUNCSIG$v) + (func $rt/instanceof/main (; 9 ;) (type $FUNCSIG$v) global.get $~lib/started i32.eqz if @@ -714,9 +728,9 @@ global.set $~lib/started end ) - (func $start (; 9 ;) (type $FUNCSIG$v) + (func $start (; 10 ;) (type $FUNCSIG$v) call $start:rt/instanceof ) - (func $null (; 10 ;) (type $FUNCSIG$v) + (func $null (; 11 ;) (type $FUNCSIG$v) ) ) diff --git a/tests/compiler/std/array.untouched.wat b/tests/compiler/std/array.untouched.wat index 14b783f1..d3c50dca 100644 --- a/tests/compiler/std/array.untouched.wat +++ b/tests/compiler/std/array.untouched.wat @@ -3693,7 +3693,6 @@ local.get $0 ) (func $~lib/array/Array#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 @@ -3706,7 +3705,6 @@ local.get $1 i32.const 2 call $~lib/arraybuffer/ArrayBufferView#constructor - local.tee $2 local.set $0 local.get $0 i32.const 0 @@ -3783,7 +3781,6 @@ local.get $1 ) (func $~lib/typedarray/Uint8Array#constructor (; 38 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) local.get $0 if (result i32) local.get $0 @@ -3796,7 +3793,6 @@ local.get $1 i32.const 0 call $~lib/arraybuffer/ArrayBufferView#constructor - local.tee $2 local.set $0 local.get $0 ) diff --git a/tests/compiler/std/arraybuffer.untouched.wat b/tests/compiler/std/arraybuffer.untouched.wat index 6dcf692c..d2062e03 100644 --- a/tests/compiler/std/arraybuffer.untouched.wat +++ b/tests/compiler/std/arraybuffer.untouched.wat @@ -2784,7 +2784,6 @@ local.get $0 ) (func $~lib/typedarray/Uint8Array#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 @@ -2797,7 +2796,6 @@ local.get $1 i32.const 0 call $~lib/arraybuffer/ArrayBufferView#constructor - local.tee $2 local.set $0 local.get $0 ) @@ -2840,7 +2838,6 @@ local.get $4 ) (func $~lib/typedarray/Int32Array#constructor (; 18 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) local.get $0 if (result i32) local.get $0 @@ -2853,7 +2850,6 @@ local.get $1 i32.const 2 call $~lib/arraybuffer/ArrayBufferView#constructor - local.tee $2 local.set $0 local.get $0 ) @@ -2937,6 +2933,8 @@ local.get $0 local.get $3 i32.store offset=8 + local.get $1 + call $~lib/rt/stub/__release local.get $0 ) (func $~lib/typedarray/Uint8Array#get:buffer (; 20 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) diff --git a/tests/compiler/std/dataview.untouched.wat b/tests/compiler/std/dataview.untouched.wat index 6c07b12e..698af249 100644 --- a/tests/compiler/std/dataview.untouched.wat +++ b/tests/compiler/std/dataview.untouched.wat @@ -202,7 +202,6 @@ local.get $0 ) (func $~lib/typedarray/Uint8Array#constructor (; 5 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) local.get $0 if (result i32) local.get $0 @@ -215,7 +214,6 @@ local.get $1 i32.const 0 call $~lib/arraybuffer/ArrayBufferView#constructor - local.tee $2 local.set $0 local.get $0 ) @@ -325,6 +323,8 @@ local.get $0 local.get $3 i32.store offset=8 + local.get $1 + call $~lib/rt/stub/__release local.get $0 ) (func $~lib/typedarray/Uint8Array#get:buffer (; 9 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) diff --git a/tests/compiler/std/pointer.untouched.wat b/tests/compiler/std/pointer.untouched.wat index cb1b28ed..d338ec1e 100644 --- a/tests/compiler/std/pointer.untouched.wat +++ b/tests/compiler/std/pointer.untouched.wat @@ -1787,10 +1787,7 @@ (local $4 i32) (local $5 i32) (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) - (local $10 f32) + (local $7 f32) block $std/pointer/Pointer#constructor|inlined.0 (result i32) i32.const 0 local.set $1 @@ -1799,19 +1796,15 @@ local.get $0 call $~lib/rt/stub/__retain end - local.tee $1 - call $~lib/rt/stub/__retain global.set $std/pointer/one block $std/pointer/Pointer#constructor|inlined.1 (result i32) i32.const 0 - local.set $2 + local.set $1 i32.const 24 local.set $0 local.get $0 call $~lib/rt/stub/__retain end - local.tee $2 - call $~lib/rt/stub/__retain global.set $std/pointer/two block $std/pointer/Pointer#get:offset|inlined.0 (result i32) global.get $std/pointer/one @@ -1831,8 +1824,8 @@ end block $std/pointer/Pointer#get:offset|inlined.1 (result i32) global.get $std/pointer/two - local.set $0 - local.get $0 + local.set $1 + local.get $1 end i32.const 24 i32.eq @@ -1855,8 +1848,8 @@ i32.store block $std/pointer/Pointer#get:value|inlined.1 (result i32) global.get $std/pointer/one - local.set $0 - local.get $0 + local.set $1 + local.get $1 br $std/pointer/Pointer#get:value|inlined.1 end i32.const 2 @@ -1881,8 +1874,8 @@ end block $std/pointer/Pointer#get:value|inlined.3 (result i32) global.get $std/pointer/one - local.set $0 - local.get $0 + local.set $1 + local.get $1 br $std/pointer/Pointer#get:value|inlined.3 end i32.load offset=4 @@ -1900,13 +1893,13 @@ global.get $std/pointer/one global.get $std/pointer/two call $std/pointer/Pointer#add - local.tee $0 + local.tee $1 call $~lib/rt/stub/__retain global.set $std/pointer/add block $std/pointer/Pointer#get:offset|inlined.2 (result i32) global.get $std/pointer/add - local.set $3 - local.get $3 + local.set $0 + local.get $0 end i32.const 32 i32.eq @@ -1922,13 +1915,13 @@ global.get $std/pointer/two global.get $std/pointer/one call $std/pointer/Pointer#sub - local.tee $3 + local.tee $0 call $~lib/rt/stub/__retain global.set $std/pointer/sub block $std/pointer/Pointer#get:offset|inlined.3 (result i32) global.get $std/pointer/sub - local.set $4 - local.get $4 + local.set $2 + local.get $2 end i32.const 16 i32.eq @@ -1943,8 +1936,8 @@ end block $std/pointer/Pointer#get:offset|inlined.4 (result i32) global.get $std/pointer/one - local.set $4 - local.get $4 + local.set $2 + local.get $2 end i32.const 8 i32.eq @@ -1961,19 +1954,19 @@ block (result i32) global.get $std/pointer/one call $std/pointer/Pointer#inc - local.tee $4 - local.tee $5 + local.tee $2 + local.tee $3 global.get $std/pointer/one - local.tee $6 + local.tee $4 i32.ne if - local.get $5 + local.get $3 call $~lib/rt/stub/__retain drop - local.get $6 + local.get $4 call $~lib/rt/stub/__release end - local.get $5 + local.get $3 end global.set $std/pointer/one global.get $std/pointer/one @@ -1994,8 +1987,8 @@ end block $std/pointer/Pointer#get:offset|inlined.5 (result i32) global.get $std/pointer/one - local.set $6 - local.get $6 + local.set $4 + local.get $4 end i32.const 16 i32.eq @@ -2010,8 +2003,8 @@ end block $std/pointer/Pointer#get:offset|inlined.6 (result i32) global.get $std/pointer/two - local.set $5 - local.get $5 + local.set $3 + local.get $3 end i32.const 24 i32.eq @@ -2027,43 +2020,43 @@ block (result i32) global.get $std/pointer/two call $std/pointer/Pointer#dec - local.tee $5 - local.tee $6 + local.tee $3 + local.tee $4 global.get $std/pointer/two - local.tee $7 + local.tee $5 i32.ne if - local.get $6 + local.get $4 call $~lib/rt/stub/__retain drop - local.get $7 + local.get $5 call $~lib/rt/stub/__release end - local.get $6 + local.get $4 end global.set $std/pointer/two block (result i32) global.get $std/pointer/two call $std/pointer/Pointer#dec - local.tee $6 - local.tee $7 + local.tee $4 + local.tee $5 global.get $std/pointer/two - local.tee $8 + local.tee $6 i32.ne if - local.get $7 + local.get $5 call $~lib/rt/stub/__retain drop - local.get $8 + local.get $6 call $~lib/rt/stub/__release end - local.get $7 + local.get $5 end global.set $std/pointer/two block $std/pointer/Pointer#get:offset|inlined.7 (result i32) global.get $std/pointer/two - local.set $8 - local.get $8 + local.set $6 + local.get $6 end i32.const 8 i32.eq @@ -2078,8 +2071,8 @@ end block $std/pointer/Pointer#get:value|inlined.4 (result i32) global.get $std/pointer/two - local.set $7 - local.get $7 + local.set $5 + local.get $5 br $std/pointer/Pointer#get:value|inlined.4 end i32.load @@ -2096,8 +2089,8 @@ end block $std/pointer/Pointer#get:value|inlined.5 (result i32) global.get $std/pointer/two - local.set $8 - local.get $8 + local.set $6 + local.get $6 br $std/pointer/Pointer#get:value|inlined.5 end i32.load offset=4 @@ -2115,20 +2108,20 @@ global.get $std/pointer/one block $std/pointer/Pointer#get:value|inlined.6 (result i32) global.get $std/pointer/two - local.set $7 - local.get $7 + local.set $5 + local.get $5 br $std/pointer/Pointer#get:value|inlined.6 end call $std/pointer/Pointer#set:value block $std/pointer/Pointer#get:offset|inlined.8 (result i32) global.get $std/pointer/one - local.set $8 - local.get $8 + local.set $6 + local.get $6 end block $std/pointer/Pointer#get:offset|inlined.9 (result i32) global.get $std/pointer/two - local.set $7 - local.get $7 + local.set $5 + local.get $5 end i32.ne i32.eqz @@ -2142,8 +2135,8 @@ end block $std/pointer/Pointer#get:value|inlined.7 (result i32) global.get $std/pointer/one - local.set $8 - local.get $8 + local.set $6 + local.get $6 br $std/pointer/Pointer#get:value|inlined.7 end i32.load @@ -2160,8 +2153,8 @@ end block $std/pointer/Pointer#get:value|inlined.8 (result i32) global.get $std/pointer/one - local.set $7 - local.get $7 + local.set $5 + local.get $5 br $std/pointer/Pointer#get:value|inlined.8 end i32.load offset=4 @@ -2178,14 +2171,12 @@ end block $std/pointer/Pointer#constructor|inlined.0 (result i32) i32.const 0 - local.set $7 + local.set $5 i32.const 0 - local.set $8 - local.get $8 + local.set $6 + local.get $6 call $~lib/rt/stub/__retain end - local.tee $7 - call $~lib/rt/stub/__retain global.set $std/pointer/buf global.get $std/pointer/buf i32.const 0 @@ -2197,11 +2188,11 @@ call $std/pointer/Pointer#set block $std/pointer/Pointer#get|inlined.0 (result f32) global.get $std/pointer/buf - local.set $9 + local.set $5 i32.const 0 - local.set $8 - local.get $9 - local.get $8 + local.set $6 + local.get $5 + local.get $6 i32.const 4 i32.mul i32.add @@ -2220,11 +2211,11 @@ end block $std/pointer/Pointer#get|inlined.1 (result f32) global.get $std/pointer/buf - local.set $9 + local.set $5 i32.const 1 - local.set $8 - local.get $9 - local.get $8 + local.set $6 + local.get $5 + local.get $6 i32.const 4 i32.mul i32.add @@ -2243,11 +2234,11 @@ end block $std/pointer/Pointer#get|inlined.2 (result f32) global.get $std/pointer/buf - local.set $9 + local.set $5 i32.const 0 - local.set $8 - local.get $9 - local.get $8 + local.set $6 + local.get $5 + local.get $6 i32.const 4 i32.mul i32.add @@ -2266,11 +2257,11 @@ end block $std/pointer/Pointer#get|inlined.3 (result f32) global.get $std/pointer/buf - local.set $9 + local.set $5 i32.const 1 - local.set $8 - local.get $9 - local.get $8 + local.set $6 + local.get $5 + local.get $6 i32.const 4 i32.mul i32.add @@ -2315,26 +2306,26 @@ end block $std/pointer/Pointer#set|inlined.0 global.get $std/pointer/buf - local.set $9 + local.set $5 i32.const 2 - local.set $8 + local.set $6 f32.const 1.2999999523162842 - local.set $10 - local.get $9 - local.get $8 + local.set $7 + local.get $5 + local.get $6 i32.const 4 i32.mul i32.add - local.get $10 + local.get $7 f32.store end block $std/pointer/Pointer#get|inlined.4 (result f32) global.get $std/pointer/buf - local.set $9 + local.set $5 i32.const 2 - local.set $8 - local.get $9 - local.get $8 + local.set $6 + local.get $5 + local.get $6 i32.const 4 i32.mul i32.add @@ -2353,11 +2344,11 @@ end block $std/pointer/Pointer#get|inlined.5 (result f32) global.get $std/pointer/buf - local.set $9 + local.set $5 i32.const 2 - local.set $8 - local.get $9 - local.get $8 + local.set $6 + local.get $5 + local.get $6 i32.const 4 i32.mul i32.add @@ -2392,8 +2383,8 @@ call $std/pointer/Pointer#set:value block $std/pointer/Pointer#get:value|inlined.0 (result f32) global.get $std/pointer/buf - local.set $8 - local.get $8 + local.set $6 + local.get $6 f32.load br $std/pointer/Pointer#get:value|inlined.0 end @@ -2431,12 +2422,6 @@ call $~lib/rt/stub/__release local.get $4 call $~lib/rt/stub/__release - local.get $5 - call $~lib/rt/stub/__release - local.get $6 - call $~lib/rt/stub/__release - local.get $7 - call $~lib/rt/stub/__release ) (func $start (; 14 ;) (type $FUNCSIG$v) call $start:std/pointer diff --git a/tests/compiler/std/typedarray.optimized.wat b/tests/compiler/std/typedarray.optimized.wat index 89ef8adb..12954972 100644 --- a/tests/compiler/std/typedarray.optimized.wat +++ b/tests/compiler/std/typedarray.optimized.wat @@ -2339,11 +2339,6 @@ local.get $4 call $~lib/rt/pure/__release local.get $1 - call $~lib/rt/pure/__retain - local.set $0 - local.get $1 - call $~lib/rt/pure/__release - local.get $0 ) (func $~lib/typedarray/Float64Array#__set (; 45 ;) (type $FUNCSIG$viid) (param $0 i32) (param $1 i32) (param $2 f64) local.get $1 @@ -2470,11 +2465,6 @@ local.get $4 call $~lib/rt/pure/__release local.get $1 - call $~lib/rt/pure/__retain - local.set $0 - local.get $1 - call $~lib/rt/pure/__release - local.get $0 ) (func $~lib/util/sort/insertionSort (; 47 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) @@ -3111,11 +3101,6 @@ end end local.get $0 - call $~lib/rt/pure/__retain - local.set $1 - local.get $0 - call $~lib/rt/pure/__release - local.get $1 ) (func $~lib/util/sort/COMPARATOR~anonymous|0 (; 51 ;) (type $FUNCSIG$idd) (param $0 f64) (param $1 f64) (result i32) (local $2 i64) @@ -3308,11 +3293,6 @@ call $~lib/memory/memory.fill end local.get $5 - call $~lib/rt/pure/__retain - local.set $0 - local.get $5 - call $~lib/rt/pure/__release - local.get $0 ) (func $~lib/rt/__allocArray (; 57 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) (local $4 i32) @@ -3534,11 +3514,6 @@ local.get $4 call $~lib/rt/pure/__release local.get $1 - call $~lib/rt/pure/__retain - local.set $0 - local.get $1 - call $~lib/rt/pure/__release - local.get $0 ) (func $~lib/typedarray/Int32Array#fill (; 62 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) (local $4 i32) @@ -3619,11 +3594,6 @@ end end local.get $4 - call $~lib/rt/pure/__retain - local.set $0 - local.get $4 - call $~lib/rt/pure/__release - local.get $0 ) (func $~lib/array/Array#__get (; 63 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $1 @@ -5446,12 +5416,12 @@ local.set $2 local.get $1 i32.load offset=4 - local.set $4 + local.set $3 local.get $2 call $~lib/typedarray/Int8Array#constructor - local.tee $5 + local.tee $4 call $~lib/rt/pure/__retain - local.tee $3 + local.tee $5 i32.load offset=4 local.set $6 i32.const 0 @@ -5467,7 +5437,7 @@ local.get $6 i32.add local.get $0 - local.get $4 + local.get $3 i32.add i32.load8_s local.get $0 @@ -5483,14 +5453,9 @@ end local.get $1 call $~lib/rt/pure/__release + local.get $4 + call $~lib/rt/pure/__release local.get $5 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__retain - local.set $0 - local.get $3 - call $~lib/rt/pure/__release - local.get $0 ) (func $std/typedarray/testArrayMap<~lib/typedarray/Int8Array,i8> (; 116 ;) (type $FUNCSIG$v) (local $0 i32) @@ -5574,12 +5539,12 @@ local.set $2 local.get $1 i32.load offset=4 - local.set $4 + local.set $3 local.get $2 call $~lib/typedarray/Uint8Array#constructor - local.tee $5 + local.tee $4 call $~lib/rt/pure/__retain - local.tee $3 + local.tee $5 i32.load offset=4 local.set $6 i32.const 0 @@ -5595,7 +5560,7 @@ local.get $6 i32.add local.get $0 - local.get $4 + local.get $3 i32.add i32.load8_u local.get $0 @@ -5611,14 +5576,9 @@ end local.get $1 call $~lib/rt/pure/__release + local.get $4 + call $~lib/rt/pure/__release local.get $5 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__retain - local.set $0 - local.get $3 - call $~lib/rt/pure/__release - local.get $0 ) (func $~lib/typedarray/Uint8Array#__get (; 118 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $1 @@ -5721,12 +5681,12 @@ local.set $2 local.get $1 i32.load offset=4 - local.set $4 + local.set $3 local.get $2 call $~lib/typedarray/Uint8ClampedArray#constructor - local.tee $5 + local.tee $4 call $~lib/rt/pure/__retain - local.tee $3 + local.tee $5 i32.load offset=4 local.set $6 i32.const 0 @@ -5742,7 +5702,7 @@ local.get $6 i32.add local.get $0 - local.get $4 + local.get $3 i32.add i32.load8_u local.get $0 @@ -5758,14 +5718,9 @@ end local.get $1 call $~lib/rt/pure/__release + local.get $4 + call $~lib/rt/pure/__release local.get $5 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__retain - local.set $0 - local.get $3 - call $~lib/rt/pure/__release - local.get $0 ) (func $std/typedarray/testArrayMap<~lib/typedarray/Uint8ClampedArray,u8> (; 121 ;) (type $FUNCSIG$v) (local $0 i32) @@ -5851,12 +5806,12 @@ local.set $2 local.get $1 i32.load offset=4 - local.set $4 + local.set $3 local.get $2 call $~lib/typedarray/Int16Array#constructor - local.tee $5 + local.tee $4 call $~lib/rt/pure/__retain - local.tee $3 + local.tee $5 i32.load offset=4 local.set $6 i32.const 0 @@ -5872,7 +5827,7 @@ i32.const 1 i32.shl local.tee $7 - local.get $4 + local.get $3 i32.add i32.load16_s local.get $0 @@ -5893,14 +5848,9 @@ end local.get $1 call $~lib/rt/pure/__release + local.get $4 + call $~lib/rt/pure/__release local.get $5 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__retain - local.set $0 - local.get $3 - call $~lib/rt/pure/__release - local.get $0 ) (func $~lib/typedarray/Int16Array#__get (; 123 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $1 @@ -6009,12 +5959,12 @@ local.set $2 local.get $1 i32.load offset=4 - local.set $4 + local.set $3 local.get $2 call $~lib/typedarray/Uint16Array#constructor - local.tee $5 + local.tee $4 call $~lib/rt/pure/__retain - local.tee $3 + local.tee $5 i32.load offset=4 local.set $6 i32.const 0 @@ -6030,7 +5980,7 @@ i32.const 1 i32.shl local.tee $7 - local.get $4 + local.get $3 i32.add i32.load16_u local.get $0 @@ -6051,14 +6001,9 @@ end local.get $1 call $~lib/rt/pure/__release + local.get $4 + call $~lib/rt/pure/__release local.get $5 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__retain - local.set $0 - local.get $3 - call $~lib/rt/pure/__release - local.get $0 ) (func $~lib/typedarray/Uint16Array#__get (; 126 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $1 @@ -6167,12 +6112,12 @@ local.set $2 local.get $1 i32.load offset=4 - local.set $4 + local.set $3 local.get $2 call $~lib/typedarray/Int32Array#constructor - local.tee $5 + local.tee $4 call $~lib/rt/pure/__retain - local.tee $3 + local.tee $5 i32.load offset=4 local.set $6 i32.const 0 @@ -6188,7 +6133,7 @@ i32.const 2 i32.shl local.tee $7 - local.get $4 + local.get $3 i32.add i32.load local.get $0 @@ -6209,14 +6154,9 @@ end local.get $1 call $~lib/rt/pure/__release + local.get $4 + call $~lib/rt/pure/__release local.get $5 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__retain - local.set $0 - local.get $3 - call $~lib/rt/pure/__release - local.get $0 ) (func $std/typedarray/testArrayMap<~lib/typedarray/Int32Array,i32> (; 129 ;) (type $FUNCSIG$v) (local $0 i32) @@ -6302,12 +6242,12 @@ local.set $2 local.get $1 i32.load offset=4 - local.set $4 + local.set $3 local.get $2 call $~lib/typedarray/Uint32Array#constructor - local.tee $5 + local.tee $4 call $~lib/rt/pure/__retain - local.tee $3 + local.tee $5 i32.load offset=4 local.set $6 i32.const 0 @@ -6323,7 +6263,7 @@ i32.const 2 i32.shl local.tee $7 - local.get $4 + local.get $3 i32.add i32.load local.get $0 @@ -6344,14 +6284,9 @@ end local.get $1 call $~lib/rt/pure/__release + local.get $4 + call $~lib/rt/pure/__release local.get $5 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__retain - local.set $0 - local.get $3 - call $~lib/rt/pure/__release - local.get $0 ) (func $~lib/typedarray/Uint32Array#__get (; 131 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $1 @@ -6470,12 +6405,12 @@ local.set $2 local.get $1 i32.load offset=4 - local.set $4 + local.set $3 local.get $2 call $~lib/typedarray/Int64Array#constructor - local.tee $5 + local.tee $4 call $~lib/rt/pure/__retain - local.tee $3 + local.tee $5 i32.load offset=4 local.set $6 i32.const 0 @@ -6491,7 +6426,7 @@ i32.const 3 i32.shl local.tee $7 - local.get $4 + local.get $3 i32.add i64.load local.get $0 @@ -6512,14 +6447,9 @@ end local.get $1 call $~lib/rt/pure/__release + local.get $4 + call $~lib/rt/pure/__release local.get $5 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__retain - local.set $0 - local.get $3 - call $~lib/rt/pure/__release - local.get $0 ) (func $~lib/typedarray/Int64Array#__get (; 135 ;) (type $FUNCSIG$jii) (param $0 i32) (param $1 i32) (result i64) local.get $1 @@ -6628,12 +6558,12 @@ local.set $2 local.get $1 i32.load offset=4 - local.set $4 + local.set $3 local.get $2 call $~lib/typedarray/Uint64Array#constructor - local.tee $5 + local.tee $4 call $~lib/rt/pure/__retain - local.tee $3 + local.tee $5 i32.load offset=4 local.set $6 i32.const 0 @@ -6649,7 +6579,7 @@ i32.const 3 i32.shl local.tee $7 - local.get $4 + local.get $3 i32.add i64.load local.get $0 @@ -6670,14 +6600,9 @@ end local.get $1 call $~lib/rt/pure/__release + local.get $4 + call $~lib/rt/pure/__release local.get $5 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__retain - local.set $0 - local.get $3 - call $~lib/rt/pure/__release - local.get $0 ) (func $~lib/typedarray/Uint64Array#__get (; 138 ;) (type $FUNCSIG$jii) (param $0 i32) (param $1 i32) (result i64) local.get $1 @@ -6796,12 +6721,12 @@ local.set $2 local.get $1 i32.load offset=4 - local.set $4 + local.set $3 local.get $2 call $~lib/typedarray/Float32Array#constructor - local.tee $5 + local.tee $4 call $~lib/rt/pure/__retain - local.tee $3 + local.tee $5 i32.load offset=4 local.set $6 i32.const 0 @@ -6817,7 +6742,7 @@ i32.const 2 i32.shl local.tee $7 - local.get $4 + local.get $3 i32.add f32.load local.get $0 @@ -6838,14 +6763,9 @@ end local.get $1 call $~lib/rt/pure/__release + local.get $4 + call $~lib/rt/pure/__release local.get $5 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__retain - local.set $0 - local.get $3 - call $~lib/rt/pure/__release - local.get $0 ) (func $~lib/typedarray/Float32Array#__get (; 142 ;) (type $FUNCSIG$fii) (param $0 i32) (param $1 i32) (result f32) local.get $1 @@ -6964,12 +6884,12 @@ local.set $2 local.get $1 i32.load offset=4 - local.set $4 + local.set $3 local.get $2 call $~lib/typedarray/Float64Array#constructor - local.tee $5 + local.tee $4 call $~lib/rt/pure/__retain - local.tee $3 + local.tee $5 i32.load offset=4 local.set $6 i32.const 0 @@ -6985,7 +6905,7 @@ i32.const 3 i32.shl local.tee $7 - local.get $4 + local.get $3 i32.add f64.load local.get $0 @@ -7006,14 +6926,9 @@ end local.get $1 call $~lib/rt/pure/__release + local.get $4 + call $~lib/rt/pure/__release local.get $5 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__retain - local.set $0 - local.get $3 - call $~lib/rt/pure/__release - local.get $0 ) (func $std/typedarray/testArrayMap<~lib/typedarray/Float64Array,f64> (; 146 ;) (type $FUNCSIG$v) (local $0 i32) @@ -11722,12 +11637,12 @@ (local $5 i32) local.get $0 call $~lib/rt/pure/__retain - local.tee $2 + local.tee $3 i32.load offset=4 local.set $4 i32.const 0 local.set $0 - local.get $2 + local.get $3 i32.load offset=8 i32.const 1 i32.sub @@ -11740,17 +11655,17 @@ local.get $0 local.get $4 i32.add - local.tee $3 + local.tee $2 i32.load8_s local.set $5 - local.get $3 + local.get $2 local.get $1 local.get $4 i32.add - local.tee $3 + local.tee $2 i32.load8_s i32.store8 - local.get $3 + local.get $2 local.get $5 i32.store8 local.get $0 @@ -11764,12 +11679,7 @@ br $repeat|0 end end - local.get $2 - call $~lib/rt/pure/__retain - local.set $0 - local.get $2 - call $~lib/rt/pure/__release - local.get $0 + local.get $3 ) (func $std/typedarray/testArrayReverse<~lib/typedarray/Int8Array,i8> (; 258 ;) (type $FUNCSIG$v) (local $0 i32) @@ -11947,12 +11857,12 @@ (local $5 i32) local.get $0 call $~lib/rt/pure/__retain - local.tee $2 + local.tee $3 i32.load offset=4 local.set $4 i32.const 0 local.set $0 - local.get $2 + local.get $3 i32.load offset=8 i32.const 1 i32.sub @@ -11965,17 +11875,17 @@ local.get $0 local.get $4 i32.add - local.tee $3 + local.tee $2 i32.load8_u local.set $5 - local.get $3 + local.get $2 local.get $1 local.get $4 i32.add - local.tee $3 + local.tee $2 i32.load8_u i32.store8 - local.get $3 + local.get $2 local.get $5 i32.store8 local.get $0 @@ -11989,12 +11899,7 @@ br $repeat|0 end end - local.get $2 - call $~lib/rt/pure/__retain - local.set $0 - local.get $2 - call $~lib/rt/pure/__release - local.get $0 + local.get $3 ) (func $~lib/typedarray/Uint8Array#subarray (; 260 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) @@ -12006,14 +11911,14 @@ i32.const 8 local.get $0 call $~lib/rt/pure/__retain - local.tee $1 + local.tee $2 i32.load offset=8 local.tee $0 i32.const 8 local.get $0 i32.lt_s select - local.tee $2 + local.tee $1 i32.const 4 local.get $0 i32.const 4 @@ -12021,7 +11926,7 @@ i32.lt_s select local.tee $3 - local.get $2 + local.get $1 local.get $3 i32.gt_s select @@ -12032,25 +11937,25 @@ call $~lib/rt/pure/__retain local.tee $0 local.set $5 - local.get $1 + local.get $2 i32.load - local.tee $2 + local.tee $1 local.get $0 i32.load local.tee $6 i32.ne if - local.get $2 + local.get $1 call $~lib/rt/pure/__retain drop local.get $6 call $~lib/rt/pure/__release end local.get $5 - local.get $2 + local.get $1 i32.store local.get $0 - local.get $1 + local.get $2 i32.load offset=4 local.get $3 i32.add @@ -12060,14 +11965,9 @@ local.get $3 i32.sub i32.store offset=8 - local.get $1 + local.get $2 call $~lib/rt/pure/__release local.get $0 - call $~lib/rt/pure/__retain - local.set $1 - local.get $0 - call $~lib/rt/pure/__release - local.get $1 ) (func $std/typedarray/testArrayReverse<~lib/typedarray/Uint8Array,u8> (; 261 ;) (type $FUNCSIG$v) (local $0 i32) @@ -12239,14 +12139,14 @@ i32.const 8 local.get $0 call $~lib/rt/pure/__retain - local.tee $1 + local.tee $2 i32.load offset=8 local.tee $0 i32.const 8 local.get $0 i32.lt_s select - local.tee $2 + local.tee $1 i32.const 4 local.get $0 i32.const 4 @@ -12254,7 +12154,7 @@ i32.lt_s select local.tee $3 - local.get $2 + local.get $1 local.get $3 i32.gt_s select @@ -12265,25 +12165,25 @@ call $~lib/rt/pure/__retain local.tee $0 local.set $5 - local.get $1 + local.get $2 i32.load - local.tee $2 + local.tee $1 local.get $0 i32.load local.tee $6 i32.ne if - local.get $2 + local.get $1 call $~lib/rt/pure/__retain drop local.get $6 call $~lib/rt/pure/__release end local.get $5 - local.get $2 + local.get $1 i32.store local.get $0 - local.get $1 + local.get $2 i32.load offset=4 local.get $3 i32.add @@ -12293,14 +12193,9 @@ local.get $3 i32.sub i32.store offset=8 - local.get $1 + local.get $2 call $~lib/rt/pure/__release local.get $0 - call $~lib/rt/pure/__retain - local.set $1 - local.get $0 - call $~lib/rt/pure/__release - local.get $1 ) (func $std/typedarray/testArrayReverse<~lib/typedarray/Uint8ClampedArray,u8> (; 263 ;) (type $FUNCSIG$v) (local $0 i32) @@ -12470,12 +12365,12 @@ (local $5 i32) local.get $0 call $~lib/rt/pure/__retain - local.tee $2 + local.tee $3 i32.load offset=4 local.set $4 i32.const 0 local.set $0 - local.get $2 + local.get $3 call $~lib/typedarray/Int16Array#get:length i32.const 1 i32.sub @@ -12491,19 +12386,19 @@ i32.shl local.get $4 i32.add - local.tee $3 + local.tee $2 i32.load16_s local.set $5 - local.get $3 + local.get $2 local.get $1 i32.const 1 i32.shl local.get $4 i32.add - local.tee $3 + local.tee $2 i32.load16_s i32.store16 - local.get $3 + local.get $2 local.get $5 i32.store16 local.get $0 @@ -12517,12 +12412,7 @@ br $repeat|0 end end - local.get $2 - call $~lib/rt/pure/__retain - local.set $0 - local.get $2 - call $~lib/rt/pure/__release - local.get $0 + local.get $3 ) (func $~lib/typedarray/Int16Array#subarray (; 265 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) @@ -12596,11 +12486,6 @@ local.get $2 call $~lib/rt/pure/__release local.get $1 - call $~lib/rt/pure/__retain - local.set $0 - local.get $1 - call $~lib/rt/pure/__release - local.get $0 ) (func $std/typedarray/testArrayReverse<~lib/typedarray/Int16Array,i16> (; 266 ;) (type $FUNCSIG$v) (local $0 i32) @@ -12776,12 +12661,12 @@ (local $5 i32) local.get $0 call $~lib/rt/pure/__retain - local.tee $2 + local.tee $3 i32.load offset=4 local.set $4 i32.const 0 local.set $0 - local.get $2 + local.get $3 call $~lib/typedarray/Int16Array#get:length i32.const 1 i32.sub @@ -12797,19 +12682,19 @@ i32.shl local.get $4 i32.add - local.tee $3 + local.tee $2 i32.load16_u local.set $5 - local.get $3 + local.get $2 local.get $1 i32.const 1 i32.shl local.get $4 i32.add - local.tee $3 + local.tee $2 i32.load16_u i32.store16 - local.get $3 + local.get $2 local.get $5 i32.store16 local.get $0 @@ -12823,12 +12708,7 @@ br $repeat|0 end end - local.get $2 - call $~lib/rt/pure/__retain - local.set $0 - local.get $2 - call $~lib/rt/pure/__release - local.get $0 + local.get $3 ) (func $~lib/typedarray/Uint16Array#subarray (; 268 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) @@ -12902,11 +12782,6 @@ local.get $2 call $~lib/rt/pure/__release local.get $1 - call $~lib/rt/pure/__retain - local.set $0 - local.get $1 - call $~lib/rt/pure/__release - local.get $0 ) (func $std/typedarray/testArrayReverse<~lib/typedarray/Uint16Array,u16> (; 269 ;) (type $FUNCSIG$v) (local $0 i32) @@ -13076,12 +12951,12 @@ (local $5 i32) local.get $0 call $~lib/rt/pure/__retain - local.tee $2 + local.tee $3 i32.load offset=4 local.set $4 i32.const 0 local.set $0 - local.get $2 + local.get $3 call $~lib/typedarray/Int32Array#get:length i32.const 1 i32.sub @@ -13097,19 +12972,19 @@ i32.shl local.get $4 i32.add - local.tee $3 + local.tee $2 i32.load local.set $5 - local.get $3 + local.get $2 local.get $1 i32.const 2 i32.shl local.get $4 i32.add - local.tee $3 + local.tee $2 i32.load i32.store - local.get $3 + local.get $2 local.get $5 i32.store local.get $0 @@ -13123,12 +12998,7 @@ br $repeat|0 end end - local.get $2 - call $~lib/rt/pure/__retain - local.set $0 - local.get $2 - call $~lib/rt/pure/__release - local.get $0 + local.get $3 ) (func $std/typedarray/testArrayReverse<~lib/typedarray/Int32Array,i32> (; 271 ;) (type $FUNCSIG$v) (local $0 i32) @@ -13358,11 +13228,6 @@ local.get $2 call $~lib/rt/pure/__release local.get $1 - call $~lib/rt/pure/__retain - local.set $0 - local.get $1 - call $~lib/rt/pure/__release - local.get $0 ) (func $std/typedarray/testArrayReverse<~lib/typedarray/Uint32Array,u32> (; 273 ;) (type $FUNCSIG$v) (local $0 i32) @@ -13526,12 +13391,12 @@ (local $5 i64) local.get $0 call $~lib/rt/pure/__retain - local.tee $2 + local.tee $3 i32.load offset=4 local.set $4 i32.const 0 local.set $0 - local.get $2 + local.get $3 call $~lib/typedarray/Int64Array#get:length i32.const 1 i32.sub @@ -13547,19 +13412,19 @@ i32.shl local.get $4 i32.add - local.tee $3 + local.tee $2 i64.load local.set $5 - local.get $3 + local.get $2 local.get $1 i32.const 3 i32.shl local.get $4 i32.add - local.tee $3 + local.tee $2 i64.load i64.store - local.get $3 + local.get $2 local.get $5 i64.store local.get $0 @@ -13573,12 +13438,7 @@ br $repeat|0 end end - local.get $2 - call $~lib/rt/pure/__retain - local.set $0 - local.get $2 - call $~lib/rt/pure/__release - local.get $0 + local.get $3 ) (func $~lib/typedarray/Int64Array#subarray (; 275 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) @@ -13652,11 +13512,6 @@ local.get $2 call $~lib/rt/pure/__release local.get $1 - call $~lib/rt/pure/__retain - local.set $0 - local.get $1 - call $~lib/rt/pure/__release - local.get $0 ) (func $std/typedarray/testArrayReverse<~lib/typedarray/Int64Array,i64> (; 276 ;) (type $FUNCSIG$v) (local $0 i32) @@ -13887,11 +13742,6 @@ local.get $2 call $~lib/rt/pure/__release local.get $1 - call $~lib/rt/pure/__retain - local.set $0 - local.get $1 - call $~lib/rt/pure/__release - local.get $0 ) (func $std/typedarray/testArrayReverse<~lib/typedarray/Uint64Array,u64> (; 278 ;) (type $FUNCSIG$v) (local $0 i32) @@ -14058,12 +13908,12 @@ (local $5 f32) local.get $0 call $~lib/rt/pure/__retain - local.tee $2 + local.tee $3 i32.load offset=4 local.set $4 i32.const 0 local.set $0 - local.get $2 + local.get $3 call $~lib/typedarray/Int32Array#get:length i32.const 1 i32.sub @@ -14079,19 +13929,19 @@ i32.shl local.get $4 i32.add - local.tee $3 + local.tee $2 f32.load local.set $5 - local.get $3 + local.get $2 local.get $1 i32.const 2 i32.shl local.get $4 i32.add - local.tee $3 + local.tee $2 f32.load f32.store - local.get $3 + local.get $2 local.get $5 f32.store local.get $0 @@ -14105,12 +13955,7 @@ br $repeat|0 end end - local.get $2 - call $~lib/rt/pure/__retain - local.set $0 - local.get $2 - call $~lib/rt/pure/__release - local.get $0 + local.get $3 ) (func $~lib/typedarray/Float32Array#subarray (; 280 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) @@ -14184,11 +14029,6 @@ local.get $2 call $~lib/rt/pure/__release local.get $1 - call $~lib/rt/pure/__retain - local.set $0 - local.get $1 - call $~lib/rt/pure/__release - local.get $0 ) (func $std/typedarray/testArrayReverse<~lib/typedarray/Float32Array,f32> (; 281 ;) (type $FUNCSIG$v) (local $0 i32) @@ -14355,12 +14195,12 @@ (local $5 f64) local.get $0 call $~lib/rt/pure/__retain - local.tee $2 + local.tee $3 i32.load offset=4 local.set $4 i32.const 0 local.set $0 - local.get $2 + local.get $3 call $~lib/typedarray/Int64Array#get:length i32.const 1 i32.sub @@ -14376,19 +14216,19 @@ i32.shl local.get $4 i32.add - local.tee $3 + local.tee $2 f64.load local.set $5 - local.get $3 + local.get $2 local.get $1 i32.const 3 i32.shl local.get $4 i32.add - local.tee $3 + local.tee $2 f64.load f64.store - local.get $3 + local.get $2 local.get $5 f64.store local.get $0 @@ -14402,12 +14242,7 @@ br $repeat|0 end end - local.get $2 - call $~lib/rt/pure/__retain - local.set $0 - local.get $2 - call $~lib/rt/pure/__release - local.get $0 + local.get $3 ) (func $std/typedarray/testArrayReverse<~lib/typedarray/Float64Array,f64> (; 283 ;) (type $FUNCSIG$v) (local $0 i32) diff --git a/tests/compiler/std/typedarray.untouched.wat b/tests/compiler/std/typedarray.untouched.wat index e95270a3..c3820f81 100644 --- a/tests/compiler/std/typedarray.untouched.wat +++ b/tests/compiler/std/typedarray.untouched.wat @@ -3288,7 +3288,6 @@ local.get $0 ) (func $~lib/typedarray/Int8Array#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 @@ -3301,7 +3300,6 @@ local.get $1 i32.const 0 call $~lib/arraybuffer/ArrayBufferView#constructor - local.tee $2 local.set $0 local.get $0 ) @@ -3321,7 +3319,6 @@ call $~lib/arraybuffer/ArrayBufferView#get:byteLength ) (func $~lib/typedarray/Uint8Array#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 @@ -3334,7 +3331,6 @@ local.get $1 i32.const 0 call $~lib/arraybuffer/ArrayBufferView#constructor - local.tee $2 local.set $0 local.get $0 ) @@ -3343,7 +3339,6 @@ call $~lib/arraybuffer/ArrayBufferView#get:byteLength ) (func $~lib/typedarray/Uint8ClampedArray#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 @@ -3356,7 +3351,6 @@ local.get $1 i32.const 0 call $~lib/arraybuffer/ArrayBufferView#constructor - local.tee $2 local.set $0 local.get $0 ) @@ -3365,7 +3359,6 @@ call $~lib/arraybuffer/ArrayBufferView#get:byteLength ) (func $~lib/typedarray/Int16Array#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 @@ -3378,7 +3371,6 @@ local.get $1 i32.const 1 call $~lib/arraybuffer/ArrayBufferView#constructor - local.tee $2 local.set $0 local.get $0 ) @@ -3389,7 +3381,6 @@ i32.shr_u ) (func $~lib/typedarray/Uint16Array#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 @@ -3402,7 +3393,6 @@ local.get $1 i32.const 1 call $~lib/arraybuffer/ArrayBufferView#constructor - local.tee $2 local.set $0 local.get $0 ) @@ -3413,7 +3403,6 @@ i32.shr_u ) (func $~lib/typedarray/Int32Array#constructor (; 39 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) local.get $0 if (result i32) local.get $0 @@ -3426,7 +3415,6 @@ local.get $1 i32.const 2 call $~lib/arraybuffer/ArrayBufferView#constructor - local.tee $2 local.set $0 local.get $0 ) @@ -3437,7 +3425,6 @@ i32.shr_u ) (func $~lib/typedarray/Uint32Array#constructor (; 41 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) local.get $0 if (result i32) local.get $0 @@ -3450,7 +3437,6 @@ local.get $1 i32.const 2 call $~lib/arraybuffer/ArrayBufferView#constructor - local.tee $2 local.set $0 local.get $0 ) @@ -3461,7 +3447,6 @@ i32.shr_u ) (func $~lib/typedarray/Int64Array#constructor (; 43 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) local.get $0 if (result i32) local.get $0 @@ -3474,7 +3459,6 @@ local.get $1 i32.const 3 call $~lib/arraybuffer/ArrayBufferView#constructor - local.tee $2 local.set $0 local.get $0 ) @@ -3485,7 +3469,6 @@ i32.shr_u ) (func $~lib/typedarray/Uint64Array#constructor (; 45 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) local.get $0 if (result i32) local.get $0 @@ -3498,7 +3481,6 @@ local.get $1 i32.const 3 call $~lib/arraybuffer/ArrayBufferView#constructor - local.tee $2 local.set $0 local.get $0 ) @@ -3509,7 +3491,6 @@ i32.shr_u ) (func $~lib/typedarray/Float32Array#constructor (; 47 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) local.get $0 if (result i32) local.get $0 @@ -3522,7 +3503,6 @@ local.get $1 i32.const 2 call $~lib/arraybuffer/ArrayBufferView#constructor - local.tee $2 local.set $0 local.get $0 ) @@ -3533,7 +3513,6 @@ i32.shr_u ) (func $~lib/typedarray/Float64Array#constructor (; 49 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) local.get $0 if (result i32) local.get $0 @@ -3546,7 +3525,6 @@ local.get $1 i32.const 3 call $~lib/arraybuffer/ArrayBufferView#constructor - local.tee $2 local.set $0 local.get $0 ) @@ -4141,128 +4119,120 @@ (local $7 i32) (local $8 i32) (local $9 i32) - block $~lib/typedarray/SUBARRAY<~lib/typedarray/Int32Array,i32>|inlined.0 (result i32) - local.get $0 - call $~lib/rt/pure/__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 $0 + call $~lib/rt/pure/__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.const 0 + i32.lt_s + if (result i32) + local.get $6 local.get $4 - i32.const 0 - i32.lt_s - if (result i32) - 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 - else - local.get $4 - local.tee $7 - local.get $6 - local.tee $8 - local.get $7 - local.get $8 - i32.lt_s - select - end - local.set $4 - local.get $3 - i32.const 0 - i32.lt_s - if (result i32) - local.get $6 - local.get $3 - i32.add - local.tee $7 - i32.const 0 - local.tee $8 - local.get $7 - local.get $8 - i32.gt_s - select - else - local.get $3 - local.tee $7 - local.get $6 - local.tee $8 - local.get $7 - local.get $8 - i32.lt_s - select - end - local.set $3 - local.get $3 + i32.add local.tee $7 - local.get $4 + i32.const 0 local.tee $8 local.get $7 local.get $8 i32.gt_s select - local.set $3 - i32.const 12 - i32.const 8 - call $~lib/rt/tlsf/__alloc - call $~lib/rt/pure/__retain - local.set $7 - local.get $7 + else + local.get $4 + local.tee $7 + local.get $6 local.tee $8 - block (result i32) - local.get $5 - i32.load - local.tee $9 - local.get $8 - i32.load - local.tee $8 - i32.ne - if - local.get $9 - call $~lib/rt/pure/__retain - drop - local.get $8 - call $~lib/rt/pure/__release - end - local.get $9 - end - 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 $8 + i32.lt_s + select + end + local.set $4 + local.get $3 + i32.const 0 + i32.lt_s + if (result i32) + local.get $6 local.get $3 - local.get $4 - i32.sub - i32.const 2 - i32.shl - i32.store offset=8 + i32.add + local.tee $7 + i32.const 0 + local.tee $8 local.get $7 - local.set $9 + local.get $8 + i32.gt_s + select + else + local.get $3 + local.tee $7 + local.get $6 + local.tee $8 + local.get $7 + local.get $8 + i32.lt_s + select + end + local.set $3 + local.get $3 + local.tee $7 + local.get $4 + local.tee $8 + local.get $7 + local.get $8 + i32.gt_s + select + local.set $3 + i32.const 12 + i32.const 8 + call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__retain + local.set $7 + local.get $7 + local.tee $8 + block (result i32) local.get $5 - call $~lib/rt/pure/__release + i32.load + local.tee $9 + local.get $8 + i32.load + local.tee $8 + i32.ne + if + local.get $9 + call $~lib/rt/pure/__retain + drop + local.get $8 + call $~lib/rt/pure/__release + end local.get $9 end - local.tee $7 - call $~lib/rt/pure/__retain - local.set $6 + 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 + local.set $9 + local.get $5 call $~lib/rt/pure/__release - local.get $6 + local.get $9 ) (func $~lib/typedarray/Float64Array#__set (; 55 ;) (type $FUNCSIG$viid) (param $0 i32) (param $1 i32) (param $2 f64) local.get $1 @@ -4296,128 +4266,120 @@ (local $7 i32) (local $8 i32) (local $9 i32) - block $~lib/typedarray/SUBARRAY<~lib/typedarray/Float64Array,f64>|inlined.0 (result i32) - local.get $0 - call $~lib/rt/pure/__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 $0 + call $~lib/rt/pure/__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.const 0 + i32.lt_s + if (result i32) + local.get $6 local.get $4 - i32.const 0 - i32.lt_s - if (result i32) - 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 - else - local.get $4 - local.tee $7 - local.get $6 - local.tee $8 - local.get $7 - local.get $8 - i32.lt_s - select - end - local.set $4 - local.get $3 - i32.const 0 - i32.lt_s - if (result i32) - local.get $6 - local.get $3 - i32.add - local.tee $7 - i32.const 0 - local.tee $8 - local.get $7 - local.get $8 - i32.gt_s - select - else - local.get $3 - local.tee $7 - local.get $6 - local.tee $8 - local.get $7 - local.get $8 - i32.lt_s - select - end - local.set $3 - local.get $3 + i32.add local.tee $7 - local.get $4 + i32.const 0 local.tee $8 local.get $7 local.get $8 i32.gt_s select - local.set $3 - i32.const 12 - i32.const 13 - call $~lib/rt/tlsf/__alloc - call $~lib/rt/pure/__retain - local.set $7 - local.get $7 + else + local.get $4 + local.tee $7 + local.get $6 local.tee $8 - block (result i32) - local.get $5 - i32.load - local.tee $9 - local.get $8 - i32.load - local.tee $8 - i32.ne - if - local.get $9 - call $~lib/rt/pure/__retain - drop - local.get $8 - call $~lib/rt/pure/__release - end - local.get $9 - end - 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 $8 + i32.lt_s + select + end + local.set $4 + local.get $3 + i32.const 0 + i32.lt_s + if (result i32) + local.get $6 local.get $3 - local.get $4 - i32.sub - i32.const 3 - i32.shl - i32.store offset=8 + i32.add + local.tee $7 + i32.const 0 + local.tee $8 local.get $7 - local.set $9 + local.get $8 + i32.gt_s + select + else + local.get $3 + local.tee $7 + local.get $6 + local.tee $8 + local.get $7 + local.get $8 + i32.lt_s + select + end + local.set $3 + local.get $3 + local.tee $7 + local.get $4 + local.tee $8 + local.get $7 + local.get $8 + i32.gt_s + select + local.set $3 + i32.const 12 + i32.const 13 + call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__retain + local.set $7 + local.get $7 + local.tee $8 + block (result i32) local.get $5 - call $~lib/rt/pure/__release + i32.load + local.tee $9 + local.get $8 + i32.load + local.tee $8 + i32.ne + if + local.get $9 + call $~lib/rt/pure/__retain + drop + local.get $8 + call $~lib/rt/pure/__release + end local.get $9 end - local.tee $7 - call $~lib/rt/pure/__retain - local.set $6 + 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 + local.set $9 + local.get $5 call $~lib/rt/pure/__release - local.get $6 + local.get $9 ) (func $~lib/util/sort/insertionSort (; 57 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) @@ -5161,12 +5123,6 @@ end local.get $3 end - local.tee $5 - call $~lib/rt/pure/__retain - local.set $4 - local.get $5 - call $~lib/rt/pure/__release - local.get $4 ) (func $~lib/util/sort/COMPARATOR~anonymous|0 (; 61 ;) (type $FUNCSIG$idd) (param $0 f64) (param $1 f64) (result i32) (local $2 i64) @@ -5323,93 +5279,85 @@ (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/pure/__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 + local.get $0 call $~lib/rt/pure/__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 $9 - call $~lib/rt/pure/__release - local.get $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 ) (func $~lib/rt/__allocArray (; 68 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) (local $4 i32) @@ -5581,128 +5529,120 @@ (local $7 i32) (local $8 i32) (local $9 i32) - block $~lib/typedarray/SUBARRAY<~lib/typedarray/Int8Array,i8>|inlined.0 (result i32) - local.get $0 - call $~lib/rt/pure/__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 $0 + call $~lib/rt/pure/__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 (result i32) + local.get $6 local.get $4 - i32.const 0 - i32.lt_s - if (result i32) - 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 - else - local.get $4 - local.tee $7 - local.get $6 - local.tee $8 - local.get $7 - local.get $8 - i32.lt_s - select - end - local.set $4 - local.get $3 - i32.const 0 - i32.lt_s - if (result i32) - local.get $6 - local.get $3 - i32.add - local.tee $7 - i32.const 0 - local.tee $8 - local.get $7 - local.get $8 - i32.gt_s - select - else - local.get $3 - local.tee $7 - local.get $6 - local.tee $8 - local.get $7 - local.get $8 - i32.lt_s - select - end - local.set $3 - local.get $3 + i32.add local.tee $7 - local.get $4 + i32.const 0 local.tee $8 local.get $7 local.get $8 i32.gt_s select - local.set $3 - i32.const 12 - i32.const 3 - call $~lib/rt/tlsf/__alloc - call $~lib/rt/pure/__retain - local.set $7 - local.get $7 + else + local.get $4 + local.tee $7 + local.get $6 local.tee $8 - block (result i32) - local.get $5 - i32.load - local.tee $9 - local.get $8 - i32.load - local.tee $8 - i32.ne - if - local.get $9 - call $~lib/rt/pure/__retain - drop - local.get $8 - call $~lib/rt/pure/__release - end - local.get $9 - end - 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 $8 + i32.lt_s + select + end + local.set $4 + local.get $3 + i32.const 0 + i32.lt_s + if (result i32) + local.get $6 local.get $3 - local.get $4 - i32.sub + i32.add + local.tee $7 i32.const 0 - i32.shl - i32.store offset=8 + local.tee $8 local.get $7 - local.set $9 + local.get $8 + i32.gt_s + select + else + local.get $3 + local.tee $7 + local.get $6 + local.tee $8 + local.get $7 + local.get $8 + i32.lt_s + select + end + local.set $3 + local.get $3 + local.tee $7 + local.get $4 + local.tee $8 + local.get $7 + local.get $8 + i32.gt_s + select + local.set $3 + i32.const 12 + i32.const 3 + call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__retain + local.set $7 + local.get $7 + local.tee $8 + block (result i32) local.get $5 - call $~lib/rt/pure/__release + i32.load + local.tee $9 + local.get $8 + i32.load + local.tee $8 + i32.ne + if + local.get $9 + call $~lib/rt/pure/__retain + drop + local.get $8 + call $~lib/rt/pure/__release + end local.get $9 end - local.tee $7 - call $~lib/rt/pure/__retain - local.set $6 + 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 + local.set $9 + local.get $5 call $~lib/rt/pure/__release - local.get $6 + local.get $9 ) (func $~lib/typedarray/Int32Array#fill (; 75 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) (local $4 i32) @@ -5713,103 +5653,95 @@ (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/pure/__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 $0 + call $~lib/rt/pure/__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 - 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 + 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 - if (result i32) - local.get $9 + select + end + local.set $4 + block $break|0 + loop $repeat|0 + 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 $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 + 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 - local.get $7 + unreachable end - local.tee $9 - call $~lib/rt/pure/__retain - local.set $8 - local.get $9 - call $~lib/rt/pure/__release - local.get $8 + local.get $7 ) (func $~lib/array/Array#get:length (; 76 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 @@ -8723,79 +8655,71 @@ (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/pure/__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 + local.get $0 + call $~lib/rt/pure/__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/pure/__retain + local.set $7 + local.get $7 + i32.load offset=4 + local.set $8 + block $break|0 i32.const 0 - local.get $4 - call $~lib/typedarray/Int8Array#constructor - local.tee $6 - call $~lib/rt/pure/__retain - local.set $7 - local.get $7 - i32.load offset=4 - local.set $8 - block $break|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 - local.set $9 - loop $repeat|0 - local.get $9 - local.get $4 - i32.lt_s - i32.eqz - br_if $break|0 - local.get $8 + 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 - 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 + i32.load8_s local.get $9 - i32.const 1 - i32.add - local.set $9 - br $repeat|0 - unreachable + 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 - local.get $7 - local.set $9 - local.get $3 - call $~lib/rt/pure/__release - local.get $6 - call $~lib/rt/pure/__release - local.get $9 + unreachable end - local.tee $8 - call $~lib/rt/pure/__retain - local.set $7 - local.get $8 - call $~lib/rt/pure/__release local.get $7 + local.set $9 + local.get $3 + call $~lib/rt/pure/__release + local.get $6 + call $~lib/rt/pure/__release + local.get $9 ) (func $std/typedarray/testArrayMap<~lib/typedarray/Int8Array,i8> (; 155 ;) (type $FUNCSIG$v) (local $0 i32) @@ -8894,79 +8818,71 @@ (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/pure/__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 + local.get $0 + call $~lib/rt/pure/__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/pure/__retain + local.set $7 + local.get $7 + i32.load offset=4 + local.set $8 + block $break|0 i32.const 0 - local.get $4 - call $~lib/typedarray/Uint8Array#constructor - local.tee $6 - call $~lib/rt/pure/__retain - local.set $7 - local.get $7 - i32.load offset=4 - local.set $8 - block $break|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 - local.set $9 - loop $repeat|0 - local.get $9 - local.get $4 - i32.lt_s - i32.eqz - br_if $break|0 - local.get $8 + 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 - 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 + i32.load8_u local.get $9 - i32.const 1 - i32.add - local.set $9 - br $repeat|0 - unreachable + 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 - local.get $7 - local.set $9 - local.get $3 - call $~lib/rt/pure/__release - local.get $6 - call $~lib/rt/pure/__release - local.get $9 + unreachable end - local.tee $8 - call $~lib/rt/pure/__retain - local.set $7 - local.get $8 - call $~lib/rt/pure/__release local.get $7 + local.set $9 + local.get $3 + call $~lib/rt/pure/__release + local.get $6 + call $~lib/rt/pure/__release + local.get $9 ) (func $~lib/typedarray/Uint8Array#__get (; 158 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $1 @@ -9084,79 +9000,71 @@ (local $7 i32) (local $8 i32) (local $9 i32) - block $~lib/typedarray/MAP<~lib/typedarray/Uint8ClampedArray,u8>|inlined.0 (result i32) - local.get $0 - call $~lib/rt/pure/__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 + local.get $0 + call $~lib/rt/pure/__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/pure/__retain + local.set $7 + local.get $7 + i32.load offset=4 + local.set $8 + block $break|0 i32.const 0 - local.get $4 - call $~lib/typedarray/Uint8ClampedArray#constructor - local.tee $6 - call $~lib/rt/pure/__retain - local.set $7 - local.get $7 - i32.load offset=4 - local.set $8 - block $break|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 - local.set $9 - loop $repeat|0 - local.get $9 - local.get $4 - i32.lt_s - i32.eqz - br_if $break|0 - local.get $8 + 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 - 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 + i32.load8_u local.get $9 - i32.const 1 - i32.add - local.set $9 - br $repeat|0 - unreachable + 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 - local.get $7 - local.set $9 - local.get $3 - call $~lib/rt/pure/__release - local.get $6 - call $~lib/rt/pure/__release - local.get $9 + unreachable end - local.tee $8 - call $~lib/rt/pure/__retain - local.set $7 - local.get $8 - call $~lib/rt/pure/__release local.get $7 + local.set $9 + local.get $3 + call $~lib/rt/pure/__release + local.get $6 + call $~lib/rt/pure/__release + local.get $9 ) (func $std/typedarray/testArrayMap<~lib/typedarray/Uint8ClampedArray,u8> (; 162 ;) (type $FUNCSIG$v) (local $0 i32) @@ -9255,79 +9163,71 @@ (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/pure/__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 + local.get $0 + call $~lib/rt/pure/__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/pure/__retain + local.set $7 + local.get $7 + i32.load offset=4 + local.set $8 + block $break|0 i32.const 0 - local.get $4 - call $~lib/typedarray/Int16Array#constructor - local.tee $6 - call $~lib/rt/pure/__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.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 - 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 + i32.load16_s local.get $9 - i32.const 1 - i32.add - local.set $9 - br $repeat|0 - unreachable + 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 - local.get $7 - local.set $9 - local.get $3 - call $~lib/rt/pure/__release - local.get $6 - call $~lib/rt/pure/__release - local.get $9 + unreachable end - local.tee $8 - call $~lib/rt/pure/__retain - local.set $7 - local.get $8 - call $~lib/rt/pure/__release local.get $7 + local.set $9 + local.get $3 + call $~lib/rt/pure/__release + local.get $6 + call $~lib/rt/pure/__release + local.get $9 ) (func $~lib/typedarray/Int16Array#__get (; 165 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $1 @@ -9449,79 +9349,71 @@ (local $7 i32) (local $8 i32) (local $9 i32) - block $~lib/typedarray/MAP<~lib/typedarray/Uint16Array,u16>|inlined.0 (result i32) - local.get $0 - call $~lib/rt/pure/__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 + local.get $0 + call $~lib/rt/pure/__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/pure/__retain + local.set $7 + local.get $7 + i32.load offset=4 + local.set $8 + block $break|0 i32.const 0 - local.get $4 - call $~lib/typedarray/Uint16Array#constructor - local.tee $6 - call $~lib/rt/pure/__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.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 - 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 + i32.load16_u local.get $9 - i32.const 1 - i32.add - local.set $9 - br $repeat|0 - unreachable + 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 - local.get $7 - local.set $9 - local.get $3 - call $~lib/rt/pure/__release - local.get $6 - call $~lib/rt/pure/__release - local.get $9 + unreachable end - local.tee $8 - call $~lib/rt/pure/__retain - local.set $7 - local.get $8 - call $~lib/rt/pure/__release local.get $7 + local.set $9 + local.get $3 + call $~lib/rt/pure/__release + local.get $6 + call $~lib/rt/pure/__release + local.get $9 ) (func $~lib/typedarray/Uint16Array#__get (; 169 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $1 @@ -9643,79 +9535,71 @@ (local $7 i32) (local $8 i32) (local $9 i32) - block $~lib/typedarray/MAP<~lib/typedarray/Int32Array,i32>|inlined.0 (result i32) - local.get $0 - call $~lib/rt/pure/__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 + local.get $0 + call $~lib/rt/pure/__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/pure/__retain + local.set $7 + local.get $7 + i32.load offset=4 + local.set $8 + block $break|0 i32.const 0 - local.get $4 - call $~lib/typedarray/Int32Array#constructor - local.tee $6 - call $~lib/rt/pure/__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.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 - 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 + i32.load local.get $9 - i32.const 1 - i32.add - local.set $9 - br $repeat|0 - unreachable + 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 - local.get $7 - local.set $9 - local.get $3 - call $~lib/rt/pure/__release - local.get $6 - call $~lib/rt/pure/__release - local.get $9 + unreachable end - local.tee $8 - call $~lib/rt/pure/__retain - local.set $7 - local.get $8 - call $~lib/rt/pure/__release local.get $7 + local.set $9 + local.get $3 + call $~lib/rt/pure/__release + local.get $6 + call $~lib/rt/pure/__release + local.get $9 ) (func $std/typedarray/testArrayMap<~lib/typedarray/Int32Array,i32> (; 173 ;) (type $FUNCSIG$v) (local $0 i32) @@ -9814,79 +9698,71 @@ (local $7 i32) (local $8 i32) (local $9 i32) - block $~lib/typedarray/MAP<~lib/typedarray/Uint32Array,u32>|inlined.0 (result i32) - local.get $0 - call $~lib/rt/pure/__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 + local.get $0 + call $~lib/rt/pure/__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/pure/__retain + local.set $7 + local.get $7 + i32.load offset=4 + local.set $8 + block $break|0 i32.const 0 - local.get $4 - call $~lib/typedarray/Uint32Array#constructor - local.tee $6 - call $~lib/rt/pure/__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.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 - 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 + i32.load local.get $9 - i32.const 1 - i32.add - local.set $9 - br $repeat|0 - unreachable + 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 - local.get $7 - local.set $9 - local.get $3 - call $~lib/rt/pure/__release - local.get $6 - call $~lib/rt/pure/__release - local.get $9 + unreachable end - local.tee $8 - call $~lib/rt/pure/__retain - local.set $7 - local.get $8 - call $~lib/rt/pure/__release local.get $7 + local.set $9 + local.get $3 + call $~lib/rt/pure/__release + local.get $6 + call $~lib/rt/pure/__release + local.get $9 ) (func $~lib/typedarray/Uint32Array#__get (; 176 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $1 @@ -10008,79 +9884,71 @@ (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/pure/__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 + local.get $0 + call $~lib/rt/pure/__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/pure/__retain + local.set $7 + local.get $7 + i32.load offset=4 + local.set $8 + block $break|0 i32.const 0 - local.get $4 - call $~lib/typedarray/Int64Array#constructor - local.tee $6 - call $~lib/rt/pure/__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.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 - 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 + i64.load local.get $9 - i32.const 1 - i32.add - local.set $9 - br $repeat|0 - unreachable + 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 - local.get $7 - local.set $9 - local.get $3 - call $~lib/rt/pure/__release - local.get $6 - call $~lib/rt/pure/__release - local.get $9 + unreachable end - local.tee $8 - call $~lib/rt/pure/__retain - local.set $7 - local.get $8 - call $~lib/rt/pure/__release local.get $7 + local.set $9 + local.get $3 + call $~lib/rt/pure/__release + local.get $6 + call $~lib/rt/pure/__release + local.get $9 ) (func $~lib/typedarray/Int64Array#__get (; 180 ;) (type $FUNCSIG$jii) (param $0 i32) (param $1 i32) (result i64) local.get $1 @@ -10202,79 +10070,71 @@ (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/pure/__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 + local.get $0 + call $~lib/rt/pure/__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/pure/__retain + local.set $7 + local.get $7 + i32.load offset=4 + local.set $8 + block $break|0 i32.const 0 - local.get $4 - call $~lib/typedarray/Uint64Array#constructor - local.tee $6 - call $~lib/rt/pure/__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.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 - 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 + i64.load local.get $9 - i32.const 1 - i32.add - local.set $9 - br $repeat|0 - unreachable + 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 - local.get $7 - local.set $9 - local.get $3 - call $~lib/rt/pure/__release - local.get $6 - call $~lib/rt/pure/__release - local.get $9 + unreachable end - local.tee $8 - call $~lib/rt/pure/__retain - local.set $7 - local.get $8 - call $~lib/rt/pure/__release local.get $7 + local.set $9 + local.get $3 + call $~lib/rt/pure/__release + local.get $6 + call $~lib/rt/pure/__release + local.get $9 ) (func $~lib/typedarray/Uint64Array#__get (; 184 ;) (type $FUNCSIG$jii) (param $0 i32) (param $1 i32) (result i64) local.get $1 @@ -10396,79 +10256,71 @@ (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/pure/__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 + local.get $0 + call $~lib/rt/pure/__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/pure/__retain + local.set $7 + local.get $7 + i32.load offset=4 + local.set $8 + block $break|0 i32.const 0 - local.get $4 - call $~lib/typedarray/Float32Array#constructor - local.tee $6 - call $~lib/rt/pure/__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.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 - 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 + f32.load local.get $9 - i32.const 1 - i32.add - local.set $9 - br $repeat|0 - unreachable + 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 - local.get $7 - local.set $9 - local.get $3 - call $~lib/rt/pure/__release - local.get $6 - call $~lib/rt/pure/__release - local.get $9 + unreachable end - local.tee $8 - call $~lib/rt/pure/__retain - local.set $7 - local.get $8 - call $~lib/rt/pure/__release local.get $7 + local.set $9 + local.get $3 + call $~lib/rt/pure/__release + local.get $6 + call $~lib/rt/pure/__release + local.get $9 ) (func $~lib/typedarray/Float32Array#__get (; 188 ;) (type $FUNCSIG$fii) (param $0 i32) (param $1 i32) (result f32) local.get $1 @@ -10590,79 +10442,71 @@ (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/pure/__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 + local.get $0 + call $~lib/rt/pure/__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/pure/__retain + local.set $7 + local.get $7 + i32.load offset=4 + local.set $8 + block $break|0 i32.const 0 - local.get $4 - call $~lib/typedarray/Float64Array#constructor - local.tee $6 - call $~lib/rt/pure/__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.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 - 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 + f64.load local.get $9 - i32.const 1 - i32.add - local.set $9 - br $repeat|0 - unreachable + 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 - local.get $7 - local.set $9 - local.get $3 - call $~lib/rt/pure/__release - local.get $6 - call $~lib/rt/pure/__release - local.get $9 + unreachable end - local.tee $8 - call $~lib/rt/pure/__retain - local.set $7 - local.get $8 - call $~lib/rt/pure/__release local.get $7 + local.set $9 + local.get $3 + call $~lib/rt/pure/__release + local.get $6 + call $~lib/rt/pure/__release + local.get $9 ) (func $std/typedarray/testArrayMap<~lib/typedarray/Float64Array,f64> (; 192 ;) (type $FUNCSIG$v) (local $0 i32) @@ -18285,73 +18129,65 @@ (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/pure/__retain - local.set $1 - local.get $1 - i32.load offset=4 - local.set $2 - block $break|0 + local.get $0 + call $~lib/rt/pure/__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 - i32.const 0 + local.get $3 + i32.const 1 + i32.add local.set $3 - local.get $1 - call $~lib/typedarray/Int8Array#get:length + local.get $4 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 + br $repeat|0 unreachable end - local.get $1 + unreachable end - local.tee $2 - call $~lib/rt/pure/__retain - local.set $1 - local.get $2 - call $~lib/rt/pure/__release local.get $1 ) (func $std/typedarray/testArrayReverse<~lib/typedarray/Int8Array,i8> (; 363 ;) (type $FUNCSIG$v) @@ -18547,73 +18383,65 @@ (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/pure/__retain - local.set $1 - local.get $1 - i32.load offset=4 - local.set $2 - block $break|0 + local.get $0 + call $~lib/rt/pure/__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 - i32.const 0 + local.get $3 + i32.const 1 + i32.add local.set $3 - local.get $1 - call $~lib/typedarray/Uint8Array#get:length + local.get $4 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 + br $repeat|0 unreachable end - local.get $1 + unreachable end - local.tee $2 - call $~lib/rt/pure/__retain - local.set $1 - local.get $2 - call $~lib/rt/pure/__release local.get $1 ) (func $~lib/typedarray/Uint8Array#subarray (; 365 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) @@ -18624,128 +18452,120 @@ (local $7 i32) (local $8 i32) (local $9 i32) - block $~lib/typedarray/SUBARRAY<~lib/typedarray/Uint8Array,u8>|inlined.0 (result i32) - local.get $0 - call $~lib/rt/pure/__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 $0 + call $~lib/rt/pure/__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 (result i32) + local.get $6 local.get $4 - i32.const 0 - i32.lt_s - if (result i32) - 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 - else - local.get $4 - local.tee $7 - local.get $6 - local.tee $8 - local.get $7 - local.get $8 - i32.lt_s - select - end - local.set $4 - local.get $3 - i32.const 0 - i32.lt_s - if (result i32) - local.get $6 - local.get $3 - i32.add - local.tee $7 - i32.const 0 - local.tee $8 - local.get $7 - local.get $8 - i32.gt_s - select - else - local.get $3 - local.tee $7 - local.get $6 - local.tee $8 - local.get $7 - local.get $8 - i32.lt_s - select - end - local.set $3 - local.get $3 + i32.add local.tee $7 - local.get $4 + i32.const 0 local.tee $8 local.get $7 local.get $8 i32.gt_s select - local.set $3 - i32.const 12 - i32.const 4 - call $~lib/rt/tlsf/__alloc - call $~lib/rt/pure/__retain - local.set $7 - local.get $7 + else + local.get $4 + local.tee $7 + local.get $6 local.tee $8 - block (result i32) - local.get $5 - i32.load - local.tee $9 - local.get $8 - i32.load - local.tee $8 - i32.ne - if - local.get $9 - call $~lib/rt/pure/__retain - drop - local.get $8 - call $~lib/rt/pure/__release - end - local.get $9 - end - 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 $8 + i32.lt_s + select + end + local.set $4 + local.get $3 + i32.const 0 + i32.lt_s + if (result i32) + local.get $6 local.get $3 - local.get $4 - i32.sub + i32.add + local.tee $7 i32.const 0 - i32.shl - i32.store offset=8 + local.tee $8 local.get $7 - local.set $9 + local.get $8 + i32.gt_s + select + else + local.get $3 + local.tee $7 + local.get $6 + local.tee $8 + local.get $7 + local.get $8 + i32.lt_s + select + end + local.set $3 + local.get $3 + local.tee $7 + local.get $4 + local.tee $8 + local.get $7 + local.get $8 + i32.gt_s + select + local.set $3 + i32.const 12 + i32.const 4 + call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__retain + local.set $7 + local.get $7 + local.tee $8 + block (result i32) local.get $5 - call $~lib/rt/pure/__release + i32.load + local.tee $9 + local.get $8 + i32.load + local.tee $8 + i32.ne + if + local.get $9 + call $~lib/rt/pure/__retain + drop + local.get $8 + call $~lib/rt/pure/__release + end local.get $9 end - local.tee $7 - call $~lib/rt/pure/__retain - local.set $6 + 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 + local.set $9 + local.get $5 call $~lib/rt/pure/__release - local.get $6 + local.get $9 ) (func $std/typedarray/testArrayReverse<~lib/typedarray/Uint8Array,u8> (; 366 ;) (type $FUNCSIG$v) (local $0 i32) @@ -18934,73 +18754,65 @@ (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/pure/__retain - local.set $1 - local.get $1 - i32.load offset=4 - local.set $2 - block $break|0 + local.get $0 + call $~lib/rt/pure/__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 - i32.const 0 + local.get $3 + i32.const 1 + i32.add local.set $3 - local.get $1 - call $~lib/typedarray/Uint8ClampedArray#get:length + local.get $4 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 + br $repeat|0 unreachable end - local.get $1 + unreachable end - local.tee $2 - call $~lib/rt/pure/__retain - local.set $1 - local.get $2 - call $~lib/rt/pure/__release local.get $1 ) (func $~lib/typedarray/Uint8ClampedArray#subarray (; 368 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) @@ -19011,128 +18823,120 @@ (local $7 i32) (local $8 i32) (local $9 i32) - block $~lib/typedarray/SUBARRAY<~lib/typedarray/Uint8ClampedArray,u8>|inlined.0 (result i32) - local.get $0 - call $~lib/rt/pure/__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 $0 + call $~lib/rt/pure/__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 (result i32) + local.get $6 local.get $4 - i32.const 0 - i32.lt_s - if (result i32) - 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 - else - local.get $4 - local.tee $7 - local.get $6 - local.tee $8 - local.get $7 - local.get $8 - i32.lt_s - select - end - local.set $4 - local.get $3 - i32.const 0 - i32.lt_s - if (result i32) - local.get $6 - local.get $3 - i32.add - local.tee $7 - i32.const 0 - local.tee $8 - local.get $7 - local.get $8 - i32.gt_s - select - else - local.get $3 - local.tee $7 - local.get $6 - local.tee $8 - local.get $7 - local.get $8 - i32.lt_s - select - end - local.set $3 - local.get $3 + i32.add local.tee $7 - local.get $4 + i32.const 0 local.tee $8 local.get $7 local.get $8 i32.gt_s select - local.set $3 - i32.const 12 - i32.const 5 - call $~lib/rt/tlsf/__alloc - call $~lib/rt/pure/__retain - local.set $7 - local.get $7 + else + local.get $4 + local.tee $7 + local.get $6 local.tee $8 - block (result i32) - local.get $5 - i32.load - local.tee $9 - local.get $8 - i32.load - local.tee $8 - i32.ne - if - local.get $9 - call $~lib/rt/pure/__retain - drop - local.get $8 - call $~lib/rt/pure/__release - end - local.get $9 - end - 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 $8 + i32.lt_s + select + end + local.set $4 + local.get $3 + i32.const 0 + i32.lt_s + if (result i32) + local.get $6 local.get $3 - local.get $4 - i32.sub + i32.add + local.tee $7 i32.const 0 - i32.shl - i32.store offset=8 + local.tee $8 local.get $7 - local.set $9 + local.get $8 + i32.gt_s + select + else + local.get $3 + local.tee $7 + local.get $6 + local.tee $8 + local.get $7 + local.get $8 + i32.lt_s + select + end + local.set $3 + local.get $3 + local.tee $7 + local.get $4 + local.tee $8 + local.get $7 + local.get $8 + i32.gt_s + select + local.set $3 + i32.const 12 + i32.const 5 + call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__retain + local.set $7 + local.get $7 + local.tee $8 + block (result i32) local.get $5 - call $~lib/rt/pure/__release + i32.load + local.tee $9 + local.get $8 + i32.load + local.tee $8 + i32.ne + if + local.get $9 + call $~lib/rt/pure/__retain + drop + local.get $8 + call $~lib/rt/pure/__release + end local.get $9 end - local.tee $7 - call $~lib/rt/pure/__retain - local.set $6 + 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 + local.set $9 + local.get $5 call $~lib/rt/pure/__release - local.get $6 + local.get $9 ) (func $std/typedarray/testArrayReverse<~lib/typedarray/Uint8ClampedArray,u8> (; 369 ;) (type $FUNCSIG$v) (local $0 i32) @@ -19321,73 +19125,65 @@ (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/pure/__retain - local.set $1 - local.get $1 - i32.load offset=4 - local.set $2 - block $break|0 + local.get $0 + call $~lib/rt/pure/__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 - i32.const 0 + local.get $3 + i32.const 1 + i32.add local.set $3 - local.get $1 - call $~lib/typedarray/Int16Array#get:length + local.get $4 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 + br $repeat|0 unreachable end - local.get $1 + unreachable end - local.tee $2 - call $~lib/rt/pure/__retain - local.set $1 - local.get $2 - call $~lib/rt/pure/__release local.get $1 ) (func $~lib/typedarray/Int16Array#subarray (; 371 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) @@ -19398,128 +19194,120 @@ (local $7 i32) (local $8 i32) (local $9 i32) - block $~lib/typedarray/SUBARRAY<~lib/typedarray/Int16Array,i16>|inlined.0 (result i32) - local.get $0 - call $~lib/rt/pure/__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 $0 + call $~lib/rt/pure/__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 (result i32) + local.get $6 local.get $4 - i32.const 0 - i32.lt_s - if (result i32) - 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 - else - local.get $4 - local.tee $7 - local.get $6 - local.tee $8 - local.get $7 - local.get $8 - i32.lt_s - select - end - local.set $4 - local.get $3 - i32.const 0 - i32.lt_s - if (result i32) - local.get $6 - local.get $3 - i32.add - local.tee $7 - i32.const 0 - local.tee $8 - local.get $7 - local.get $8 - i32.gt_s - select - else - local.get $3 - local.tee $7 - local.get $6 - local.tee $8 - local.get $7 - local.get $8 - i32.lt_s - select - end - local.set $3 - local.get $3 + i32.add local.tee $7 - local.get $4 + i32.const 0 local.tee $8 local.get $7 local.get $8 i32.gt_s select - local.set $3 - i32.const 12 - i32.const 6 - call $~lib/rt/tlsf/__alloc - call $~lib/rt/pure/__retain - local.set $7 - local.get $7 + else + local.get $4 + local.tee $7 + local.get $6 local.tee $8 - block (result i32) - local.get $5 - i32.load - local.tee $9 - local.get $8 - i32.load - local.tee $8 - i32.ne - if - local.get $9 - call $~lib/rt/pure/__retain - drop - local.get $8 - call $~lib/rt/pure/__release - end - local.get $9 - end - 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 $8 + i32.lt_s + select + end + local.set $4 + local.get $3 + i32.const 0 + i32.lt_s + if (result i32) + local.get $6 local.get $3 - local.get $4 - i32.sub - i32.const 1 - i32.shl - i32.store offset=8 + i32.add + local.tee $7 + i32.const 0 + local.tee $8 local.get $7 - local.set $9 + local.get $8 + i32.gt_s + select + else + local.get $3 + local.tee $7 + local.get $6 + local.tee $8 + local.get $7 + local.get $8 + i32.lt_s + select + end + local.set $3 + local.get $3 + local.tee $7 + local.get $4 + local.tee $8 + local.get $7 + local.get $8 + i32.gt_s + select + local.set $3 + i32.const 12 + i32.const 6 + call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__retain + local.set $7 + local.get $7 + local.tee $8 + block (result i32) local.get $5 - call $~lib/rt/pure/__release + i32.load + local.tee $9 + local.get $8 + i32.load + local.tee $8 + i32.ne + if + local.get $9 + call $~lib/rt/pure/__retain + drop + local.get $8 + call $~lib/rt/pure/__release + end local.get $9 end - local.tee $7 - call $~lib/rt/pure/__retain - local.set $6 + 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 + local.set $9 + local.get $5 call $~lib/rt/pure/__release - local.get $6 + local.get $9 ) (func $std/typedarray/testArrayReverse<~lib/typedarray/Int16Array,i16> (; 372 ;) (type $FUNCSIG$v) (local $0 i32) @@ -19714,73 +19502,65 @@ (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/pure/__retain - local.set $1 - local.get $1 - i32.load offset=4 - local.set $2 - block $break|0 + local.get $0 + call $~lib/rt/pure/__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 - i32.const 0 + local.get $3 + i32.const 1 + i32.add local.set $3 - local.get $1 - call $~lib/typedarray/Uint16Array#get:length + local.get $4 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 + br $repeat|0 unreachable end - local.get $1 + unreachable end - local.tee $2 - call $~lib/rt/pure/__retain - local.set $1 - local.get $2 - call $~lib/rt/pure/__release local.get $1 ) (func $~lib/typedarray/Uint16Array#subarray (; 374 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) @@ -19791,128 +19571,120 @@ (local $7 i32) (local $8 i32) (local $9 i32) - block $~lib/typedarray/SUBARRAY<~lib/typedarray/Uint16Array,u16>|inlined.0 (result i32) - local.get $0 - call $~lib/rt/pure/__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 $0 + call $~lib/rt/pure/__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 (result i32) + local.get $6 local.get $4 - i32.const 0 - i32.lt_s - if (result i32) - 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 - else - local.get $4 - local.tee $7 - local.get $6 - local.tee $8 - local.get $7 - local.get $8 - i32.lt_s - select - end - local.set $4 - local.get $3 - i32.const 0 - i32.lt_s - if (result i32) - local.get $6 - local.get $3 - i32.add - local.tee $7 - i32.const 0 - local.tee $8 - local.get $7 - local.get $8 - i32.gt_s - select - else - local.get $3 - local.tee $7 - local.get $6 - local.tee $8 - local.get $7 - local.get $8 - i32.lt_s - select - end - local.set $3 - local.get $3 + i32.add local.tee $7 - local.get $4 + i32.const 0 local.tee $8 local.get $7 local.get $8 i32.gt_s select - local.set $3 - i32.const 12 - i32.const 7 - call $~lib/rt/tlsf/__alloc - call $~lib/rt/pure/__retain - local.set $7 - local.get $7 + else + local.get $4 + local.tee $7 + local.get $6 local.tee $8 - block (result i32) - local.get $5 - i32.load - local.tee $9 - local.get $8 - i32.load - local.tee $8 - i32.ne - if - local.get $9 - call $~lib/rt/pure/__retain - drop - local.get $8 - call $~lib/rt/pure/__release - end - local.get $9 - end - 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 $8 + i32.lt_s + select + end + local.set $4 + local.get $3 + i32.const 0 + i32.lt_s + if (result i32) + local.get $6 local.get $3 - local.get $4 - i32.sub - i32.const 1 - i32.shl - i32.store offset=8 + i32.add + local.tee $7 + i32.const 0 + local.tee $8 local.get $7 - local.set $9 + local.get $8 + i32.gt_s + select + else + local.get $3 + local.tee $7 + local.get $6 + local.tee $8 + local.get $7 + local.get $8 + i32.lt_s + select + end + local.set $3 + local.get $3 + local.tee $7 + local.get $4 + local.tee $8 + local.get $7 + local.get $8 + i32.gt_s + select + local.set $3 + i32.const 12 + i32.const 7 + call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__retain + local.set $7 + local.get $7 + local.tee $8 + block (result i32) local.get $5 - call $~lib/rt/pure/__release + i32.load + local.tee $9 + local.get $8 + i32.load + local.tee $8 + i32.ne + if + local.get $9 + call $~lib/rt/pure/__retain + drop + local.get $8 + call $~lib/rt/pure/__release + end local.get $9 end - local.tee $7 - call $~lib/rt/pure/__retain - local.set $6 + 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 + local.set $9 + local.get $5 call $~lib/rt/pure/__release - local.get $6 + local.get $9 ) (func $std/typedarray/testArrayReverse<~lib/typedarray/Uint16Array,u16> (; 375 ;) (type $FUNCSIG$v) (local $0 i32) @@ -20101,73 +19873,65 @@ (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/pure/__retain - local.set $1 - local.get $1 - i32.load offset=4 - local.set $2 - block $break|0 + local.get $0 + call $~lib/rt/pure/__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 - i32.const 0 + local.get $3 + i32.const 1 + i32.add local.set $3 - local.get $1 - call $~lib/typedarray/Int32Array#get:length + local.get $4 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 + br $repeat|0 unreachable end - local.get $1 + unreachable end - local.tee $2 - call $~lib/rt/pure/__retain - local.set $1 - local.get $2 - call $~lib/rt/pure/__release local.get $1 ) (func $std/typedarray/testArrayReverse<~lib/typedarray/Int32Array,i32> (; 377 ;) (type $FUNCSIG$v) @@ -20351,73 +20115,65 @@ (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/pure/__retain - local.set $1 - local.get $1 - i32.load offset=4 - local.set $2 - block $break|0 + local.get $0 + call $~lib/rt/pure/__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 - i32.const 0 + local.get $3 + i32.const 1 + i32.add local.set $3 - local.get $1 - call $~lib/typedarray/Uint32Array#get:length + local.get $4 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 + br $repeat|0 unreachable end - local.get $1 + unreachable end - local.tee $2 - call $~lib/rt/pure/__retain - local.set $1 - local.get $2 - call $~lib/rt/pure/__release local.get $1 ) (func $~lib/typedarray/Uint32Array#subarray (; 379 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) @@ -20428,128 +20184,120 @@ (local $7 i32) (local $8 i32) (local $9 i32) - block $~lib/typedarray/SUBARRAY<~lib/typedarray/Uint32Array,u32>|inlined.0 (result i32) - local.get $0 - call $~lib/rt/pure/__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 $0 + call $~lib/rt/pure/__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 (result i32) + local.get $6 local.get $4 - i32.const 0 - i32.lt_s - if (result i32) - 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 - else - local.get $4 - local.tee $7 - local.get $6 - local.tee $8 - local.get $7 - local.get $8 - i32.lt_s - select - end - local.set $4 - local.get $3 - i32.const 0 - i32.lt_s - if (result i32) - local.get $6 - local.get $3 - i32.add - local.tee $7 - i32.const 0 - local.tee $8 - local.get $7 - local.get $8 - i32.gt_s - select - else - local.get $3 - local.tee $7 - local.get $6 - local.tee $8 - local.get $7 - local.get $8 - i32.lt_s - select - end - local.set $3 - local.get $3 + i32.add local.tee $7 - local.get $4 + i32.const 0 local.tee $8 local.get $7 local.get $8 i32.gt_s select - local.set $3 - i32.const 12 - i32.const 9 - call $~lib/rt/tlsf/__alloc - call $~lib/rt/pure/__retain - local.set $7 - local.get $7 + else + local.get $4 + local.tee $7 + local.get $6 local.tee $8 - block (result i32) - local.get $5 - i32.load - local.tee $9 - local.get $8 - i32.load - local.tee $8 - i32.ne - if - local.get $9 - call $~lib/rt/pure/__retain - drop - local.get $8 - call $~lib/rt/pure/__release - end - local.get $9 - end - 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 $8 + i32.lt_s + select + end + local.set $4 + local.get $3 + i32.const 0 + i32.lt_s + if (result i32) + local.get $6 local.get $3 - local.get $4 - i32.sub - i32.const 2 - i32.shl - i32.store offset=8 + i32.add + local.tee $7 + i32.const 0 + local.tee $8 local.get $7 - local.set $9 + local.get $8 + i32.gt_s + select + else + local.get $3 + local.tee $7 + local.get $6 + local.tee $8 + local.get $7 + local.get $8 + i32.lt_s + select + end + local.set $3 + local.get $3 + local.tee $7 + local.get $4 + local.tee $8 + local.get $7 + local.get $8 + i32.gt_s + select + local.set $3 + i32.const 12 + i32.const 9 + call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__retain + local.set $7 + local.get $7 + local.tee $8 + block (result i32) local.get $5 - call $~lib/rt/pure/__release + i32.load + local.tee $9 + local.get $8 + i32.load + local.tee $8 + i32.ne + if + local.get $9 + call $~lib/rt/pure/__retain + drop + local.get $8 + call $~lib/rt/pure/__release + end local.get $9 end - local.tee $7 - call $~lib/rt/pure/__retain - local.set $6 + 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 + local.set $9 + local.get $5 call $~lib/rt/pure/__release - local.get $6 + local.get $9 ) (func $std/typedarray/testArrayReverse<~lib/typedarray/Uint32Array,u32> (; 380 ;) (type $FUNCSIG$v) (local $0 i32) @@ -20732,73 +20480,65 @@ (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/pure/__retain - local.set $1 - local.get $1 - i32.load offset=4 - local.set $2 - block $break|0 + local.get $0 + call $~lib/rt/pure/__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 - i32.const 0 + local.get $3 + i32.const 1 + i32.add local.set $3 - local.get $1 - call $~lib/typedarray/Int64Array#get:length + local.get $4 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 + br $repeat|0 unreachable end - local.get $1 + unreachable end - local.tee $2 - call $~lib/rt/pure/__retain - local.set $1 - local.get $2 - call $~lib/rt/pure/__release local.get $1 ) (func $~lib/typedarray/Int64Array#subarray (; 382 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) @@ -20809,128 +20549,120 @@ (local $7 i32) (local $8 i32) (local $9 i32) - block $~lib/typedarray/SUBARRAY<~lib/typedarray/Int64Array,i64>|inlined.0 (result i32) - local.get $0 - call $~lib/rt/pure/__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 $0 + call $~lib/rt/pure/__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 (result i32) + local.get $6 local.get $4 - i32.const 0 - i32.lt_s - if (result i32) - 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 - else - local.get $4 - local.tee $7 - local.get $6 - local.tee $8 - local.get $7 - local.get $8 - i32.lt_s - select - end - local.set $4 - local.get $3 - i32.const 0 - i32.lt_s - if (result i32) - local.get $6 - local.get $3 - i32.add - local.tee $7 - i32.const 0 - local.tee $8 - local.get $7 - local.get $8 - i32.gt_s - select - else - local.get $3 - local.tee $7 - local.get $6 - local.tee $8 - local.get $7 - local.get $8 - i32.lt_s - select - end - local.set $3 - local.get $3 + i32.add local.tee $7 - local.get $4 + i32.const 0 local.tee $8 local.get $7 local.get $8 i32.gt_s select - local.set $3 - i32.const 12 - i32.const 10 - call $~lib/rt/tlsf/__alloc - call $~lib/rt/pure/__retain - local.set $7 - local.get $7 + else + local.get $4 + local.tee $7 + local.get $6 local.tee $8 - block (result i32) - local.get $5 - i32.load - local.tee $9 - local.get $8 - i32.load - local.tee $8 - i32.ne - if - local.get $9 - call $~lib/rt/pure/__retain - drop - local.get $8 - call $~lib/rt/pure/__release - end - local.get $9 - end - 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 $8 + i32.lt_s + select + end + local.set $4 + local.get $3 + i32.const 0 + i32.lt_s + if (result i32) + local.get $6 local.get $3 - local.get $4 - i32.sub - i32.const 3 - i32.shl - i32.store offset=8 + i32.add + local.tee $7 + i32.const 0 + local.tee $8 local.get $7 - local.set $9 + local.get $8 + i32.gt_s + select + else + local.get $3 + local.tee $7 + local.get $6 + local.tee $8 + local.get $7 + local.get $8 + i32.lt_s + select + end + local.set $3 + local.get $3 + local.tee $7 + local.get $4 + local.tee $8 + local.get $7 + local.get $8 + i32.gt_s + select + local.set $3 + i32.const 12 + i32.const 10 + call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__retain + local.set $7 + local.get $7 + local.tee $8 + block (result i32) local.get $5 - call $~lib/rt/pure/__release + i32.load + local.tee $9 + local.get $8 + i32.load + local.tee $8 + i32.ne + if + local.get $9 + call $~lib/rt/pure/__retain + drop + local.get $8 + call $~lib/rt/pure/__release + end local.get $9 end - local.tee $7 - call $~lib/rt/pure/__retain - local.set $6 + 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 + local.set $9 + local.get $5 call $~lib/rt/pure/__release - local.get $6 + local.get $9 ) (func $std/typedarray/testArrayReverse<~lib/typedarray/Int64Array,i64> (; 383 ;) (type $FUNCSIG$v) (local $0 i32) @@ -21116,73 +20848,65 @@ (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/pure/__retain - local.set $1 - local.get $1 - i32.load offset=4 - local.set $2 - block $break|0 + local.get $0 + call $~lib/rt/pure/__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 - i32.const 0 + local.get $3 + i32.const 1 + i32.add local.set $3 - local.get $1 - call $~lib/typedarray/Uint64Array#get:length + local.get $4 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 + br $repeat|0 unreachable end - local.get $1 + unreachable end - local.tee $2 - call $~lib/rt/pure/__retain - local.set $1 - local.get $2 - call $~lib/rt/pure/__release local.get $1 ) (func $~lib/typedarray/Uint64Array#subarray (; 385 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) @@ -21193,128 +20917,120 @@ (local $7 i32) (local $8 i32) (local $9 i32) - block $~lib/typedarray/SUBARRAY<~lib/typedarray/Uint64Array,u64>|inlined.0 (result i32) - local.get $0 - call $~lib/rt/pure/__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 $0 + call $~lib/rt/pure/__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 (result i32) + local.get $6 local.get $4 - i32.const 0 - i32.lt_s - if (result i32) - 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 - else - local.get $4 - local.tee $7 - local.get $6 - local.tee $8 - local.get $7 - local.get $8 - i32.lt_s - select - end - local.set $4 - local.get $3 - i32.const 0 - i32.lt_s - if (result i32) - local.get $6 - local.get $3 - i32.add - local.tee $7 - i32.const 0 - local.tee $8 - local.get $7 - local.get $8 - i32.gt_s - select - else - local.get $3 - local.tee $7 - local.get $6 - local.tee $8 - local.get $7 - local.get $8 - i32.lt_s - select - end - local.set $3 - local.get $3 + i32.add local.tee $7 - local.get $4 + i32.const 0 local.tee $8 local.get $7 local.get $8 i32.gt_s select - local.set $3 - i32.const 12 - i32.const 11 - call $~lib/rt/tlsf/__alloc - call $~lib/rt/pure/__retain - local.set $7 - local.get $7 + else + local.get $4 + local.tee $7 + local.get $6 local.tee $8 - block (result i32) - local.get $5 - i32.load - local.tee $9 - local.get $8 - i32.load - local.tee $8 - i32.ne - if - local.get $9 - call $~lib/rt/pure/__retain - drop - local.get $8 - call $~lib/rt/pure/__release - end - local.get $9 - end - 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 $8 + i32.lt_s + select + end + local.set $4 + local.get $3 + i32.const 0 + i32.lt_s + if (result i32) + local.get $6 local.get $3 - local.get $4 - i32.sub - i32.const 3 - i32.shl - i32.store offset=8 + i32.add + local.tee $7 + i32.const 0 + local.tee $8 local.get $7 - local.set $9 + local.get $8 + i32.gt_s + select + else + local.get $3 + local.tee $7 + local.get $6 + local.tee $8 + local.get $7 + local.get $8 + i32.lt_s + select + end + local.set $3 + local.get $3 + local.tee $7 + local.get $4 + local.tee $8 + local.get $7 + local.get $8 + i32.gt_s + select + local.set $3 + i32.const 12 + i32.const 11 + call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__retain + local.set $7 + local.get $7 + local.tee $8 + block (result i32) local.get $5 - call $~lib/rt/pure/__release + i32.load + local.tee $9 + local.get $8 + i32.load + local.tee $8 + i32.ne + if + local.get $9 + call $~lib/rt/pure/__retain + drop + local.get $8 + call $~lib/rt/pure/__release + end local.get $9 end - local.tee $7 - call $~lib/rt/pure/__retain - local.set $6 + 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 + local.set $9 + local.get $5 call $~lib/rt/pure/__release - local.get $6 + local.get $9 ) (func $std/typedarray/testArrayReverse<~lib/typedarray/Uint64Array,u64> (; 386 ;) (type $FUNCSIG$v) (local $0 i32) @@ -21500,73 +21216,65 @@ (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/pure/__retain - local.set $1 - local.get $1 - i32.load offset=4 - local.set $2 - block $break|0 + local.get $0 + call $~lib/rt/pure/__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 - i32.const 0 + local.get $3 + i32.const 1 + i32.add local.set $3 - local.get $1 - call $~lib/typedarray/Float32Array#get:length + local.get $4 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 + br $repeat|0 unreachable end - local.get $1 + unreachable end - local.tee $2 - call $~lib/rt/pure/__retain - local.set $1 - local.get $2 - call $~lib/rt/pure/__release local.get $1 ) (func $~lib/typedarray/Float32Array#subarray (; 388 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) @@ -21577,128 +21285,120 @@ (local $7 i32) (local $8 i32) (local $9 i32) - block $~lib/typedarray/SUBARRAY<~lib/typedarray/Float32Array,f32>|inlined.0 (result i32) - local.get $0 - call $~lib/rt/pure/__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 $0 + call $~lib/rt/pure/__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 (result i32) + local.get $6 local.get $4 - i32.const 0 - i32.lt_s - if (result i32) - 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 - else - local.get $4 - local.tee $7 - local.get $6 - local.tee $8 - local.get $7 - local.get $8 - i32.lt_s - select - end - local.set $4 - local.get $3 - i32.const 0 - i32.lt_s - if (result i32) - local.get $6 - local.get $3 - i32.add - local.tee $7 - i32.const 0 - local.tee $8 - local.get $7 - local.get $8 - i32.gt_s - select - else - local.get $3 - local.tee $7 - local.get $6 - local.tee $8 - local.get $7 - local.get $8 - i32.lt_s - select - end - local.set $3 - local.get $3 + i32.add local.tee $7 - local.get $4 + i32.const 0 local.tee $8 local.get $7 local.get $8 i32.gt_s select - local.set $3 - i32.const 12 - i32.const 12 - call $~lib/rt/tlsf/__alloc - call $~lib/rt/pure/__retain - local.set $7 - local.get $7 + else + local.get $4 + local.tee $7 + local.get $6 local.tee $8 - block (result i32) - local.get $5 - i32.load - local.tee $9 - local.get $8 - i32.load - local.tee $8 - i32.ne - if - local.get $9 - call $~lib/rt/pure/__retain - drop - local.get $8 - call $~lib/rt/pure/__release - end - local.get $9 - end - 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 $8 + i32.lt_s + select + end + local.set $4 + local.get $3 + i32.const 0 + i32.lt_s + if (result i32) + local.get $6 local.get $3 - local.get $4 - i32.sub - i32.const 2 - i32.shl - i32.store offset=8 + i32.add + local.tee $7 + i32.const 0 + local.tee $8 local.get $7 - local.set $9 + local.get $8 + i32.gt_s + select + else + local.get $3 + local.tee $7 + local.get $6 + local.tee $8 + local.get $7 + local.get $8 + i32.lt_s + select + end + local.set $3 + local.get $3 + local.tee $7 + local.get $4 + local.tee $8 + local.get $7 + local.get $8 + i32.gt_s + select + local.set $3 + i32.const 12 + i32.const 12 + call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__retain + local.set $7 + local.get $7 + local.tee $8 + block (result i32) local.get $5 - call $~lib/rt/pure/__release + i32.load + local.tee $9 + local.get $8 + i32.load + local.tee $8 + i32.ne + if + local.get $9 + call $~lib/rt/pure/__retain + drop + local.get $8 + call $~lib/rt/pure/__release + end local.get $9 end - local.tee $7 - call $~lib/rt/pure/__retain - local.set $6 + 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 + local.set $9 + local.get $5 call $~lib/rt/pure/__release - local.get $6 + local.get $9 ) (func $std/typedarray/testArrayReverse<~lib/typedarray/Float32Array,f32> (; 389 ;) (type $FUNCSIG$v) (local $0 i32) @@ -21884,73 +21584,65 @@ (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/pure/__retain - local.set $1 - local.get $1 - i32.load offset=4 - local.set $2 - block $break|0 + local.get $0 + call $~lib/rt/pure/__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 - i32.const 0 + local.get $3 + i32.const 1 + i32.add local.set $3 - local.get $1 - call $~lib/typedarray/Float64Array#get:length + local.get $4 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 + br $repeat|0 unreachable end - local.get $1 + unreachable end - local.tee $2 - call $~lib/rt/pure/__retain - local.set $1 - local.get $2 - call $~lib/rt/pure/__release local.get $1 ) (func $std/typedarray/testArrayReverse<~lib/typedarray/Float64Array,f64> (; 391 ;) (type $FUNCSIG$v)