diff --git a/assemblyscript/src/compiler.ts b/assemblyscript/src/compiler.ts index 8c09ec4b..77ce05e3 100644 --- a/assemblyscript/src/compiler.ts +++ b/assemblyscript/src/compiler.ts @@ -7650,15 +7650,25 @@ export class Compiler extends DiagnosticEmitter { } let callPrepareStmts: ExpressionRef[] = new Array(); + let stmts: ExpressionRef[] = new Array(); let functionAddrExprForEnv = module.tryCopyTrivialExpression(functionArg); + let allTrivial = functionAddrExprForEnv != 0; + if (operands && allTrivial) { + for (let i = 0; i < numOperands; ++i) { + if (!module.isTrivialExpression(operands[i])) { + allTrivial = false; + break; + } + } + } let functionAddrExprForIndex: ExpressionRef; - if (functionAddrExprForEnv) { + if (allTrivial) { functionAddrExprForIndex = functionArg; } else { const tempFunctionAddrLocal = this.currentFlow.getTempLocal(Type.i32); const setExpr = module.local_set(tempFunctionAddrLocal.index, functionArg, false); - callPrepareStmts.push(setExpr); + stmts.push(setExpr); functionAddrExprForEnv = module.local_get(tempFunctionAddrLocal.index, TypeRef.I32); functionAddrExprForIndex = module.local_get(tempFunctionAddrLocal.index, TypeRef.I32); } @@ -7690,8 +7700,8 @@ export class Compiler extends DiagnosticEmitter { signature.resultRefs ); this.currentType = returnType; - - return expr; + stmts.push(expr); + return module.flatten(stmts, returnType.toRef()); } private compileCommaExpression( diff --git a/assemblyscript/src/module.ts b/assemblyscript/src/module.ts index 1cc50565..45cf208d 100644 --- a/assemblyscript/src/module.ts +++ b/assemblyscript/src/module.ts @@ -1267,6 +1267,13 @@ export class Module { /** Makes a copy of a trivial expression (doesn't contain subexpressions). Returns `0` if non-trivial. */ tryCopyTrivialExpression(expr: ExpressionRef): ExpressionRef { + if (this.isTrivialExpression(expr)) { + return this.copyExpression(expr); + } + return 0; + } + + isTrivialExpression(expr: ExpressionRef): bool { switch (binaryen._BinaryenExpressionGetId(expr)) { case ExpressionId.LocalGet: case ExpressionId.GlobalGet: @@ -1276,9 +1283,9 @@ export class Module { case ExpressionId.Unreachable: case ExpressionId.DataDrop: case ExpressionId.RefNull: - return this.copyExpression(expr); + return true; } - return 0; + return false; } /** Makes a copy of any expression including all subexpressions. */ diff --git a/tests/frontend/compiler/assert-nonnull.wat b/tests/frontend/compiler/assert-nonnull.wat index 017837f4..a756e52b 100644 --- a/tests/frontend/compiler/assert-nonnull.wat +++ b/tests/frontend/compiler/assert-nonnull.wat @@ -460,40 +460,42 @@ (local $1 i32) (local $2 i32) (return - (call_indirect (type $1) - (block (result i32) - (local.set $2 - (if (result i32) - (local.tee $1 - (call $~lib/rt/__localtostack - (local.get $fn) - ) - ) - (then - (local.get $1) + (block (result i32) + (local.set $2 + (if (result i32) + (local.tee $1 + (call $~lib/rt/__localtostack + (local.get $fn) ) - (else - (call $~lib/builtins/abort - (i32.const 32) - (i32.const 160) - (i32.const 35) - (i32.const 10) - ) - (unreachable) + ) + (then + (local.get $1) + ) + (else + (call $~lib/builtins/abort + (i32.const 32) + (i32.const 160) + (i32.const 35) + (i32.const 10) ) + (unreachable) ) ) - (call $~lib/rt/closure/setClosureEnv - (i32.load offset=4 + ) + (call_indirect (type $1) + (block (result i32) + (call $~lib/rt/closure/setClosureEnv + (i32.load offset=4 + (local.get $2) + ) + ) + (global.set $~argumentsLength + (i32.const 0) + ) + (i32.load (local.get $2) ) ) - (global.set $~argumentsLength - (i32.const 0) - ) - (i32.load - (local.get $2) - ) ) ) ) @@ -550,40 +552,42 @@ (if (result i32) (local.tee $3 (call $~lib/rt/__localtostack - (call_indirect (type $1) - (block (result i32) - (local.set $2 - (if (result i32) - (local.tee $1 - (call $~lib/rt/__localtostack - (local.get $fn) - ) - ) - (then - (local.get $1) + (block (result i32) + (local.set $2 + (if (result i32) + (local.tee $1 + (call $~lib/rt/__localtostack + (local.get $fn) ) - (else - (call $~lib/builtins/abort - (i32.const 32) - (i32.const 160) - (i32.const 44) - (i32.const 10) - ) - (unreachable) + ) + (then + (local.get $1) + ) + (else + (call $~lib/builtins/abort + (i32.const 32) + (i32.const 160) + (i32.const 44) + (i32.const 10) ) + (unreachable) ) ) - (call $~lib/rt/closure/setClosureEnv - (i32.load offset=4 + ) + (call_indirect (type $1) + (block (result i32) + (call $~lib/rt/closure/setClosureEnv + (i32.load offset=4 + (local.get $2) + ) + ) + (global.set $~argumentsLength + (i32.const 0) + ) + (i32.load (local.get $2) ) ) - (global.set $~argumentsLength - (i32.const 0) - ) - (i32.load - (local.get $2) - ) ) ) ) @@ -612,44 +616,46 @@ (local $1 i32) (local $2 i32) (return - (call_indirect (type $1) - (block (result i32) - (local.set $2 - (if (result i32) - (local.tee $1 - (call $~lib/rt/__localtostack - (call $assert-nonnull/Foo#get:baz - (call $~lib/rt/__tmptostack - (local.get $foo) - ) + (block (result i32) + (local.set $2 + (if (result i32) + (local.tee $1 + (call $~lib/rt/__localtostack + (call $assert-nonnull/Foo#get:baz + (call $~lib/rt/__tmptostack + (local.get $foo) ) ) ) - (then - (local.get $1) - ) - (else - (call $~lib/builtins/abort - (i32.const 32) - (i32.const 160) - (i32.const 48) - (i32.const 10) - ) - (unreachable) + ) + (then + (local.get $1) + ) + (else + (call $~lib/builtins/abort + (i32.const 32) + (i32.const 160) + (i32.const 48) + (i32.const 10) ) + (unreachable) ) ) - (call $~lib/rt/closure/setClosureEnv - (i32.load offset=4 + ) + (call_indirect (type $1) + (block (result i32) + (call $~lib/rt/closure/setClosureEnv + (i32.load offset=4 + (local.get $2) + ) + ) + (global.set $~argumentsLength + (i32.const 0) + ) + (i32.load (local.get $2) ) ) - (global.set $~argumentsLength - (i32.const 0) - ) - (i32.load - (local.get $2) - ) ) ) ) @@ -662,44 +668,46 @@ (if (result i32) (local.tee $3 (call $~lib/rt/__localtostack - (call_indirect (type $1) - (block (result i32) - (local.set $2 - (if (result i32) - (local.tee $1 - (call $~lib/rt/__localtostack - (call $assert-nonnull/Foo#get:baz - (call $~lib/rt/__tmptostack - (local.get $foo) - ) + (block (result i32) + (local.set $2 + (if (result i32) + (local.tee $1 + (call $~lib/rt/__localtostack + (call $assert-nonnull/Foo#get:baz + (call $~lib/rt/__tmptostack + (local.get $foo) ) ) ) - (then - (local.get $1) - ) - (else - (call $~lib/builtins/abort - (i32.const 32) - (i32.const 160) - (i32.const 52) - (i32.const 10) - ) - (unreachable) + ) + (then + (local.get $1) + ) + (else + (call $~lib/builtins/abort + (i32.const 32) + (i32.const 160) + (i32.const 52) + (i32.const 10) ) + (unreachable) ) ) - (call $~lib/rt/closure/setClosureEnv - (i32.load offset=4 + ) + (call_indirect (type $1) + (block (result i32) + (call $~lib/rt/closure/setClosureEnv + (i32.load offset=4 + (local.get $2) + ) + ) + (global.set $~argumentsLength + (i32.const 0) + ) + (i32.load (local.get $2) ) ) - (global.set $~argumentsLength - (i32.const 0) - ) - (i32.load - (local.get $2) - ) ) ) ) diff --git a/tests/frontend/compiler/call-rest.wat b/tests/frontend/compiler/call-rest.wat index 2deb11d0..8e4be2ae 100644 --- a/tests/frontend/compiler/call-rest.wat +++ b/tests/frontend/compiler/call-rest.wat @@ -3866,6 +3866,8 @@ (local $6 i32) (local $7 i32) (local $8 i32) + (local $9 i32) + (local $10 i32) (global.set $~lib/rt/itcms/threshold (i32.shr_u (i32.sub @@ -4072,28 +4074,33 @@ (if (i32.eqz (i32.eq - (call_indirect (type $2) - (i32.const 1) - (i32.const 2) - (call $~lib/rt/__tmptostack - (call $~lib/rt/__newArray - (i32.const 1) - (i32.const 2) - (i32.const 4) - (i32.const 656) - ) + (block (result i32) + (local.set $3 + (global.get $call-rest/indirect) ) - (block (result i32) - (call $~lib/rt/closure/setClosureEnv - (i32.load offset=4 - (global.get $call-rest/indirect) + (call_indirect (type $2) + (i32.const 1) + (i32.const 2) + (call $~lib/rt/__tmptostack + (call $~lib/rt/__newArray + (i32.const 1) + (i32.const 2) + (i32.const 4) + (i32.const 656) ) ) - (global.set $~argumentsLength - (i32.const 3) - ) - (i32.load - (global.get $call-rest/indirect) + (block (result i32) + (call $~lib/rt/closure/setClosureEnv + (i32.load offset=4 + (local.get $3) + ) + ) + (global.set $~argumentsLength + (i32.const 3) + ) + (i32.load + (local.get $3) + ) ) ) ) @@ -4113,28 +4120,33 @@ (if (i32.eqz (i32.eq - (call_indirect (type $2) - (i32.const 1) - (i32.const 2) - (call $~lib/rt/__tmptostack - (call $~lib/rt/__newArray - (i32.const 3) - (i32.const 2) - (i32.const 4) - (i32.const 688) - ) + (block (result i32) + (local.set $5 + (global.get $call-rest/indirect) ) - (block (result i32) - (call $~lib/rt/closure/setClosureEnv - (i32.load offset=4 - (global.get $call-rest/indirect) + (call_indirect (type $2) + (i32.const 1) + (i32.const 2) + (call $~lib/rt/__tmptostack + (call $~lib/rt/__newArray + (i32.const 3) + (i32.const 2) + (i32.const 4) + (i32.const 688) ) ) - (global.set $~argumentsLength - (i32.const 3) - ) - (i32.load - (global.get $call-rest/indirect) + (block (result i32) + (call $~lib/rt/closure/setClosureEnv + (i32.load offset=4 + (local.get $5) + ) + ) + (global.set $~argumentsLength + (i32.const 3) + ) + (i32.load + (local.get $5) + ) ) ) ) diff --git a/tests/frontend/compiler/closure-class-arrow-this-capture-fn.opt.wat b/tests/frontend/compiler/closure-class-arrow-this-capture-fn.opt.wat index 16a33acd..5f1ea099 100644 --- a/tests/frontend/compiler/closure-class-arrow-this-capture-fn.opt.wat +++ b/tests/frontend/compiler/closure-class-arrow-this-capture-fn.opt.wat @@ -1596,6 +1596,7 @@ ) (func $closure-class-arrow-this-capture-fn/CaptureFunc#run~anonymous|1 (result i32) (local $0 i32) + (local $1 i32) i32.const 12 i32.const 5 call $~lib/rt/itcms/__new @@ -1610,16 +1611,17 @@ call $~lib/tuple/SmallTuple#__set<~lib/tuple/SmallTuple> local.get $0 i32.load - local.tee $0 + local.tee $1 + i32.const 12 + i32.add + i32.load + local.set $0 + local.get $1 i32.const 4 i32.add i32.load i32.load local.get $0 - i32.const 12 - i32.add - i32.load - local.tee $0 i32.load offset=4 global.set $~lib/rt/closure/env local.get $0 diff --git a/tests/frontend/compiler/closure-class-arrow-this-capture-fn.wat b/tests/frontend/compiler/closure-class-arrow-this-capture-fn.wat index c6136d5c..8a3149c6 100644 --- a/tests/frontend/compiler/closure-class-arrow-this-capture-fn.wat +++ b/tests/frontend/compiler/closure-class-arrow-this-capture-fn.wat @@ -3247,41 +3247,43 @@ ) ) (return - (call_indirect (type $0) - (call $closure-class-arrow-this-capture-fn/CaptureFunc#get:value - (call $~lib/rt/__tmptostack - (call $~lib/tuple/SmallTuple#__get - (call $~lib/rt/__tmptostack - (call $~lib/rt/closure/getClosureEnvByLevel - (i32.const 1) - ) + (block (result i32) + (local.set $1 + (call $~lib/tuple/SmallTuple#__get<%28i32%29=>i32> + (call $~lib/rt/__tmptostack + (call $~lib/rt/closure/getClosureEnvByLevel + (i32.const 1) ) - (i32.const 4) ) + (i32.const 12) ) ) - (block (result i32) - (local.set $1 - (call $~lib/tuple/SmallTuple#__get<%28i32%29=>i32> - (call $~lib/rt/__tmptostack - (call $~lib/rt/closure/getClosureEnvByLevel - (i32.const 1) + (call_indirect (type $0) + (call $closure-class-arrow-this-capture-fn/CaptureFunc#get:value + (call $~lib/rt/__tmptostack + (call $~lib/tuple/SmallTuple#__get + (call $~lib/rt/__tmptostack + (call $~lib/rt/closure/getClosureEnvByLevel + (i32.const 1) + ) ) + (i32.const 4) ) - (i32.const 12) ) ) - (call $~lib/rt/closure/setClosureEnv - (i32.load offset=4 + (block (result i32) + (call $~lib/rt/closure/setClosureEnv + (i32.load offset=4 + (local.get $1) + ) + ) + (global.set $~argumentsLength + (i32.const 1) + ) + (i32.load (local.get $1) ) ) - (global.set $~argumentsLength - (i32.const 1) - ) - (i32.load - (local.get $1) - ) ) ) ) diff --git a/tests/frontend/compiler/closure-class-arrow-this-constructor.wat b/tests/frontend/compiler/closure-class-arrow-this-constructor.wat index edd4a006..627a535a 100644 --- a/tests/frontend/compiler/closure-class-arrow-this-constructor.wat +++ b/tests/frontend/compiler/closure-class-arrow-this-constructor.wat @@ -3281,26 +3281,28 @@ (if (i32.eqz (i32.eq - (call_indirect (type $6) - (block (result i32) - (local.set $0 - (call $closure-class-arrow-this-constructor/FromConstructor#get:fn - (call $~lib/rt/__tmptostack - (global.get $closure-class-arrow-this-constructor/c) - ) + (block (result i32) + (local.set $0 + (call $closure-class-arrow-this-constructor/FromConstructor#get:fn + (call $~lib/rt/__tmptostack + (global.get $closure-class-arrow-this-constructor/c) ) ) - (call $~lib/rt/closure/setClosureEnv - (i32.load offset=4 + ) + (call_indirect (type $6) + (block (result i32) + (call $~lib/rt/closure/setClosureEnv + (i32.load offset=4 + (local.get $0) + ) + ) + (global.set $~argumentsLength + (i32.const 0) + ) + (i32.load (local.get $0) ) ) - (global.set $~argumentsLength - (i32.const 0) - ) - (i32.load - (local.get $0) - ) ) ) (i32.const 20) diff --git a/tests/frontend/compiler/closure-ffi.wat b/tests/frontend/compiler/closure-ffi.wat index b828f9d8..b289b460 100644 --- a/tests/frontend/compiler/closure-ffi.wat +++ b/tests/frontend/compiler/closure-ffi.wat @@ -3266,29 +3266,31 @@ (local.get $userData) ) (return - (call_indirect (type $5) - (block (result i32) - (local.set $2 - (call $~lib/tuple/SmallTuple#__get<%28%29=>i32> - (call $~lib/rt/__tmptostack - (call $~lib/rt/closure/getClosureEnvByLevel - (i32.const 1) - ) + (block (result i32) + (local.set $2 + (call $~lib/tuple/SmallTuple#__get<%28%29=>i32> + (call $~lib/rt/__tmptostack + (call $~lib/rt/closure/getClosureEnvByLevel + (i32.const 1) ) - (i32.const 4) ) + (i32.const 4) ) - (call $~lib/rt/closure/setClosureEnv - (i32.load offset=4 + ) + (call_indirect (type $5) + (block (result i32) + (call $~lib/rt/closure/setClosureEnv + (i32.load offset=4 + (local.get $2) + ) + ) + (global.set $~argumentsLength + (i32.const 0) + ) + (i32.load (local.get $2) ) ) - (global.set $~argumentsLength - (i32.const 0) - ) - (i32.load - (local.get $2) - ) ) ) ) diff --git a/tests/frontend/compiler/function-expression.wat b/tests/frontend/compiler/function-expression.wat index 1666fdd7..f9b8e751 100644 --- a/tests/frontend/compiler/function-expression.wat +++ b/tests/frontend/compiler/function-expression.wat @@ -189,37 +189,39 @@ (if (i32.eqz (i32.eq - (call_indirect (type $0) - (i32.const 1) - (block (result i32) - (local.set $0 - (call_indirect (type $3) - (block (result i32) - (call $~lib/rt/closure/setClosureEnv - (i32.load offset=4 - (global.get $function-expression/globalFunc) - ) - ) - (global.set $~argumentsLength - (i32.const 0) - ) - (i32.load + (block (result i32) + (local.set $0 + (call_indirect (type $3) + (block (result i32) + (call $~lib/rt/closure/setClosureEnv + (i32.load offset=4 (global.get $function-expression/globalFunc) ) ) + (global.set $~argumentsLength + (i32.const 0) + ) + (i32.load + (global.get $function-expression/globalFunc) + ) ) ) - (call $~lib/rt/closure/setClosureEnv - (i32.load offset=4 + ) + (call_indirect (type $0) + (i32.const 1) + (block (result i32) + (call $~lib/rt/closure/setClosureEnv + (i32.load offset=4 + (local.get $0) + ) + ) + (global.set $~argumentsLength + (i32.const 1) + ) + (i32.load (local.get $0) ) ) - (global.set $~argumentsLength - (i32.const 1) - ) - (i32.load - (local.get $0) - ) ) ) (i32.const 25) @@ -266,37 +268,39 @@ (if (i32.eqz (i32.eq - (call_indirect (type $0) - (i32.const 1) - (block (result i32) - (local.set $1 - (call_indirect (type $3) - (block (result i32) - (call $~lib/rt/closure/setClosureEnv - (i32.load offset=4 - (local.get $localFunc) - ) - ) - (global.set $~argumentsLength - (i32.const 0) - ) - (i32.load + (block (result i32) + (local.set $1 + (call_indirect (type $3) + (block (result i32) + (call $~lib/rt/closure/setClosureEnv + (i32.load offset=4 (local.get $localFunc) ) ) + (global.set $~argumentsLength + (i32.const 0) + ) + (i32.load + (local.get $localFunc) + ) ) ) - (call $~lib/rt/closure/setClosureEnv - (i32.load offset=4 + ) + (call_indirect (type $0) + (i32.const 1) + (block (result i32) + (call $~lib/rt/closure/setClosureEnv + (i32.load offset=4 + (local.get $1) + ) + ) + (global.set $~argumentsLength + (i32.const 1) + ) + (i32.load (local.get $1) ) ) - (global.set $~argumentsLength - (i32.const 1) - ) - (i32.load - (local.get $1) - ) ) ) (i32.const 25) @@ -3349,19 +3353,18 @@ (if (i32.eqz (i32.eq - (call_indirect (type $0) - (i32.const 1) - (block (result i32) - (local.set $2 + (block (result i32) + (local.set $2 + (block (result i32) + (local.set $1 + (call $function-expression/FieldClass#get:fieldFunc + (call $~lib/rt/__tmptostack + (local.get $fieldInst) + ) + ) + ) (call_indirect (type $3) (block (result i32) - (local.set $1 - (call $function-expression/FieldClass#get:fieldFunc - (call $~lib/rt/__tmptostack - (local.get $fieldInst) - ) - ) - ) (call $~lib/rt/closure/setClosureEnv (i32.load offset=4 (local.get $1) @@ -3376,17 +3379,22 @@ ) ) ) - (call $~lib/rt/closure/setClosureEnv - (i32.load offset=4 + ) + (call_indirect (type $0) + (i32.const 1) + (block (result i32) + (call $~lib/rt/closure/setClosureEnv + (i32.load offset=4 + (local.get $2) + ) + ) + (global.set $~argumentsLength + (i32.const 1) + ) + (i32.load (local.get $2) ) ) - (global.set $~argumentsLength - (i32.const 1) - ) - (i32.load - (local.get $2) - ) ) ) (i32.const 25) @@ -3620,24 +3628,26 @@ (if (i32.eqz (i32.eq - (call_indirect (type $2) - (i32.const 1) - (i32.const 2) - (block (result i32) - (local.set $0 - (call $function-expression/testOmittedReturn1) - ) - (call $~lib/rt/closure/setClosureEnv - (i32.load offset=4 + (block (result i32) + (local.set $0 + (call $function-expression/testOmittedReturn1) + ) + (call_indirect (type $2) + (i32.const 1) + (i32.const 2) + (block (result i32) + (call $~lib/rt/closure/setClosureEnv + (i32.load offset=4 + (local.get $0) + ) + ) + (global.set $~argumentsLength + (i32.const 2) + ) + (i32.load (local.get $0) ) ) - (global.set $~argumentsLength - (i32.const 2) - ) - (i32.load - (local.get $0) - ) ) ) (i32.const 3) @@ -3656,24 +3666,26 @@ (if (i32.eqz (i32.eq - (call_indirect (type $2) - (i32.const 1) - (i32.const 2) - (block (result i32) - (local.set $1 - (call $function-expression/testOmittedReturn2) - ) - (call $~lib/rt/closure/setClosureEnv - (i32.load offset=4 + (block (result i32) + (local.set $1 + (call $function-expression/testOmittedReturn2) + ) + (call_indirect (type $2) + (i32.const 1) + (i32.const 2) + (block (result i32) + (call $~lib/rt/closure/setClosureEnv + (i32.load offset=4 + (local.get $1) + ) + ) + (global.set $~argumentsLength + (i32.const 2) + ) + (i32.load (local.get $1) ) ) - (global.set $~argumentsLength - (i32.const 2) - ) - (i32.load - (local.get $1) - ) ) ) (i32.const 1) @@ -3692,24 +3704,26 @@ (if (i32.eqz (i32.eq - (call_indirect (type $2) - (i32.const 1) - (i32.const 2) - (block (result i32) - (local.set $2 - (call $function-expression/testOmittedReturn3) - ) - (call $~lib/rt/closure/setClosureEnv - (i32.load offset=4 + (block (result i32) + (local.set $2 + (call $function-expression/testOmittedReturn3) + ) + (call_indirect (type $2) + (i32.const 1) + (i32.const 2) + (block (result i32) + (call $~lib/rt/closure/setClosureEnv + (i32.load offset=4 + (local.get $2) + ) + ) + (global.set $~argumentsLength + (i32.const 2) + ) + (i32.load (local.get $2) ) ) - (global.set $~argumentsLength - (i32.const 2) - ) - (i32.load - (local.get $2) - ) ) ) (i32.const 42) diff --git a/tests/frontend/compiler/function-types.wat b/tests/frontend/compiler/function-types.wat index 4e3ac235..0de8a399 100644 --- a/tests/frontend/compiler/function-types.wat +++ b/tests/frontend/compiler/function-types.wat @@ -91,24 +91,26 @@ (func $function-types/doAdd (param $a i32) (param $b i32) (result i32) (local $2 i32) (return - (call_indirect (type $0) - (local.get $a) - (local.get $b) - (block (result i32) - (local.set $2 - (call $function-types/makeAdder) - ) - (call $~lib/rt/closure/setClosureEnv - (i32.load offset=4 + (block (result i32) + (local.set $2 + (call $function-types/makeAdder) + ) + (call_indirect (type $0) + (local.get $a) + (local.get $b) + (block (result i32) + (call $~lib/rt/closure/setClosureEnv + (i32.load offset=4 + (local.get $2) + ) + ) + (global.set $~argumentsLength + (i32.const 2) + ) + (i32.load (local.get $2) ) ) - (global.set $~argumentsLength - (i32.const 2) - ) - (i32.load - (local.get $2) - ) ) ) ) @@ -246,24 +248,26 @@ (if (i32.eqz (f64.eq - (call_indirect (type $4) - (f64.const 1.5) - (f64.const 2.5) - (block (result i32) - (local.set $0 - (call $function-types/makeAdder) - ) - (call $~lib/rt/closure/setClosureEnv - (i32.load offset=4 + (block (result f64) + (local.set $0 + (call $function-types/makeAdder) + ) + (call_indirect (type $4) + (f64.const 1.5) + (f64.const 2.5) + (block (result i32) + (call $~lib/rt/closure/setClosureEnv + (i32.load offset=4 + (local.get $0) + ) + ) + (global.set $~argumentsLength + (i32.const 2) + ) + (i32.load (local.get $0) ) ) - (global.set $~argumentsLength - (i32.const 2) - ) - (i32.load - (local.get $0) - ) ) ) (f64.const 4) diff --git a/tests/frontend/compiler/getter-call.wat b/tests/frontend/compiler/getter-call.wat index 059f9aaa..7cc305c9 100644 --- a/tests/frontend/compiler/getter-call.wat +++ b/tests/frontend/compiler/getter-call.wat @@ -2950,26 +2950,28 @@ ) ) (return - (call_indirect (type $4) - (block (result i32) - (local.set $1 - (call $getter-call/C#get:x - (call $~lib/rt/__tmptostack - (local.get $c) - ) + (block (result i32) + (local.set $1 + (call $getter-call/C#get:x + (call $~lib/rt/__tmptostack + (local.get $c) ) ) - (call $~lib/rt/closure/setClosureEnv - (i32.load offset=4 + ) + (call_indirect (type $4) + (block (result i32) + (call $~lib/rt/closure/setClosureEnv + (i32.load offset=4 + (local.get $1) + ) + ) + (global.set $~argumentsLength + (i32.const 0) + ) + (i32.load (local.get $1) ) ) - (global.set $~argumentsLength - (i32.const 0) - ) - (i32.load - (local.get $1) - ) ) ) ) diff --git a/tests/frontend/compiler/inlining.wat b/tests/frontend/compiler/inlining.wat index cea4b0f3..a3a8542f 100644 --- a/tests/frontend/compiler/inlining.wat +++ b/tests/frontend/compiler/inlining.wat @@ -317,23 +317,25 @@ (if (i32.eqz (i32.eq - (call_indirect (type $0) - (i32.const 2) - (block (result i32) - (local.set $2 - (call $inlining/func_fe) - ) - (call $~lib/rt/closure/setClosureEnv - (i32.load offset=4 + (block (result i32) + (local.set $2 + (call $inlining/func_fe) + ) + (call_indirect (type $0) + (i32.const 2) + (block (result i32) + (call $~lib/rt/closure/setClosureEnv + (i32.load offset=4 + (local.get $2) + ) + ) + (global.set $~argumentsLength + (i32.const 1) + ) + (i32.load (local.get $2) ) ) - (global.set $~argumentsLength - (i32.const 1) - ) - (i32.load - (local.get $2) - ) ) ) (i32.const 2) diff --git a/tests/frontend/compiler/issues/2707.opt.wat b/tests/frontend/compiler/issues/2707.opt.wat index 6e9938c9..72873d40 100644 --- a/tests/frontend/compiler/issues/2707.opt.wat +++ b/tests/frontend/compiler/issues/2707.opt.wat @@ -1527,7 +1527,9 @@ local.get $0 i32.store align=1 local.get $0 - call $start:issues/2707~anonymous|0 + i32.const 32 + i32.load + call_indirect (type $0) drop global.get $~lib/memory/__stack_pointer i32.const 4 diff --git a/tests/frontend/compiler/issues/2707.wat b/tests/frontend/compiler/issues/2707.wat index ab8f1edb..f8b834c3 100644 --- a/tests/frontend/compiler/issues/2707.wat +++ b/tests/frontend/compiler/issues/2707.wat @@ -3096,6 +3096,7 @@ ) (func $start:issues/2707 (local $0 i32) + (local $1 i32) (global.set $~lib/rt/itcms/threshold (i32.shr_u (i32.sub @@ -3124,26 +3125,31 @@ ) ) (drop - (call_indirect (type $0) - (call $~lib/rt/__tmptostack - (call $~lib/rt/__newArray - (i32.const 4) - (i32.const 2) - (i32.const 4) - (i32.const 64) - ) + (block (result i32) + (local.set $1 + (global.get $issues/2707/func) ) - (block (result i32) - (call $~lib/rt/closure/setClosureEnv - (i32.load offset=4 - (global.get $issues/2707/func) + (call_indirect (type $0) + (call $~lib/rt/__tmptostack + (call $~lib/rt/__newArray + (i32.const 4) + (i32.const 2) + (i32.const 4) + (i32.const 64) ) ) - (global.set $~argumentsLength - (i32.const 1) - ) - (i32.load - (global.get $issues/2707/func) + (block (result i32) + (call $~lib/rt/closure/setClosureEnv + (i32.load offset=4 + (local.get $1) + ) + ) + (global.set $~argumentsLength + (i32.const 1) + ) + (i32.load + (local.get $1) + ) ) ) ) diff --git a/tests/frontend/compiler/issues/2989.opt.wat b/tests/frontend/compiler/issues/2989.opt.wat new file mode 100644 index 00000000..fd8eead2 --- /dev/null +++ b/tests/frontend/compiler/issues/2989.opt.wat @@ -0,0 +1,49 @@ +(module + (type $0 (func (param i32))) + (type $1 (func (param i32 i32 i32 i32))) + (type $2 (func)) + (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (global $issues/2989/value (mut i32) (i32.const 0)) + (global $issues/2989/fn (mut i32) (i32.const 32)) + (memory $0 1) + (data $0 (i32.const 12) "\1c") + (data $0.1 (i32.const 24) "\04\00\00\00\08\00\00\00\01") + (data $1 (i32.const 44) "\1c") + (data $1.1 (i32.const 56) "\04\00\00\00\08\00\00\00\02") + (data $2 (i32.const 76) ",") + (data $2.1 (i32.const 88) "\02\00\00\00\1c\00\00\00i\00s\00s\00u\00e\00s\00/\002\009\008\009\00.\00t\00s") + (table $0 3 3 funcref) + (elem $0 (i32.const 1) $issues/2989/logA $issues/2989/logB) + (export "memory" (memory $0)) + (start $~start) + (func $issues/2989/logA (param $0 i32) + i32.const 100 + global.set $issues/2989/value + ) + (func $issues/2989/logB (param $0 i32) + i32.const 200 + global.set $issues/2989/value + ) + (func $~start + (local $0 i32) + global.get $issues/2989/fn + local.set $0 + i32.const 64 + global.set $issues/2989/fn + i32.const 42 + local.get $0 + i32.load + call_indirect (type $0) + global.get $issues/2989/value + i32.const 100 + i32.ne + if + i32.const 0 + i32.const 96 + i32.const 19 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + ) +) diff --git a/tests/frontend/compiler/issues/2989.ts b/tests/frontend/compiler/issues/2989.ts new file mode 100644 index 00000000..94dbaba3 --- /dev/null +++ b/tests/frontend/compiler/issues/2989.ts @@ -0,0 +1,19 @@ +let value: i32 = 0; + +function logA(x: i32): void { + value = 100; +} + +function logB(x: i32): void { + value = 200; +} + +let fn = logA; + +function foo(x: i32): i32 { + fn = logB; + return x; +} + +fn(foo(42)); +assert(value == 100); diff --git a/tests/frontend/compiler/issues/2989.wat b/tests/frontend/compiler/issues/2989.wat new file mode 100644 index 00000000..f61556e3 --- /dev/null +++ b/tests/frontend/compiler/issues/2989.wat @@ -0,0 +1,88 @@ +(module + (type $0 (func (param i32))) + (type $1 (func (param i32) (result i32))) + (type $2 (func)) + (type $3 (func (param i32 i32 i32 i32))) + (import "as-builtin-fn" "~lib/rt/closure/setClosureEnv" (func $~lib/rt/closure/setClosureEnv (param i32))) + (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (import "as-builtin-fn" "~lib/rt/__localtostack" (func $~lib/rt/__localtostack (param i32) (result i32))) + (import "as-builtin-fn" "~lib/rt/__tmptostack" (func $~lib/rt/__tmptostack (param i32) (result i32))) + (global $issues/2989/value (mut i32) (i32.const 0)) + (global $issues/2989/fn (mut i32) (i32.const 32)) + (global $~argumentsLength (mut i32) (i32.const 0)) + (global $~lib/memory/__data_end i32 (i32.const 124)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 32892)) + (global $~lib/memory/__heap_base i32 (i32.const 32892)) + (memory $0 1) + (data $0 (i32.const 12) "\1c\00\00\00\00\00\00\00\00\00\00\00\04\00\00\00\08\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00") + (data $1 (i32.const 44) "\1c\00\00\00\00\00\00\00\00\00\00\00\04\00\00\00\08\00\00\00\02\00\00\00\00\00\00\00\00\00\00\00") + (data $2 (i32.const 76) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1c\00\00\00i\00s\00s\00u\00e\00s\00/\002\009\008\009\00.\00t\00s\00") + (table $0 3 3 funcref) + (elem $0 (i32.const 1) $issues/2989/logA $issues/2989/logB) + (export "memory" (memory $0)) + (start $~start) + (func $issues/2989/logA (param $x i32) + (global.set $issues/2989/value + (i32.const 100) + ) + ) + (func $issues/2989/logB (param $x i32) + (global.set $issues/2989/value + (i32.const 200) + ) + ) + (func $issues/2989/foo (param $x i32) (result i32) + (global.set $issues/2989/fn + (i32.const 64) + ) + (return + (local.get $x) + ) + ) + (func $start:issues/2989 + (local $0 i32) + (block + (local.set $0 + (global.get $issues/2989/fn) + ) + (call_indirect (type $0) + (call $issues/2989/foo + (i32.const 42) + ) + (block (result i32) + (call $~lib/rt/closure/setClosureEnv + (i32.load offset=4 + (local.get $0) + ) + ) + (global.set $~argumentsLength + (i32.const 1) + ) + (i32.load + (local.get $0) + ) + ) + ) + ) + (if + (i32.eqz + (i32.eq + (global.get $issues/2989/value) + (i32.const 100) + ) + ) + (then + (call $~lib/builtins/abort + (i32.const 0) + (i32.const 96) + (i32.const 19) + (i32.const 1) + ) + (unreachable) + ) + ) + ) + (func $~start + (call $start:issues/2989) + ) +) diff --git a/tests/frontend/compiler/resolve-ternary.wat b/tests/frontend/compiler/resolve-ternary.wat index 6a9fb9b0..b5b7f0d0 100644 --- a/tests/frontend/compiler/resolve-ternary.wat +++ b/tests/frontend/compiler/resolve-ternary.wat @@ -5820,31 +5820,33 @@ (if (i32.eqz (i32.eq - (call_indirect (type $0) - (i32.const 1) - (block (result i32) - (local.set $0 - (if (result i32) - (global.get $resolve-ternary/b) - (then - (global.get $resolve-ternary/f1) - ) - (else - (global.get $resolve-ternary/f2) - ) + (block (result i32) + (local.set $0 + (if (result i32) + (global.get $resolve-ternary/b) + (then + (global.get $resolve-ternary/f1) + ) + (else + (global.get $resolve-ternary/f2) ) ) - (call $~lib/rt/closure/setClosureEnv - (i32.load offset=4 + ) + (call_indirect (type $0) + (i32.const 1) + (block (result i32) + (call $~lib/rt/closure/setClosureEnv + (i32.load offset=4 + (local.get $0) + ) + ) + (global.set $~argumentsLength + (i32.const 1) + ) + (i32.load (local.get $0) ) ) - (global.set $~argumentsLength - (i32.const 1) - ) - (i32.load - (local.get $0) - ) ) ) (i32.const 2) @@ -5863,31 +5865,33 @@ (if (i32.eqz (i32.eq - (call_indirect (type $0) - (i32.const 1) - (block (result i32) - (local.set $1 - (if (result i32) - (global.get $resolve-ternary/b) - (then - (i32.const 3536) - ) - (else - (i32.const 3568) - ) + (block (result i32) + (local.set $1 + (if (result i32) + (global.get $resolve-ternary/b) + (then + (i32.const 3536) + ) + (else + (i32.const 3568) ) ) - (call $~lib/rt/closure/setClosureEnv - (i32.load offset=4 + ) + (call_indirect (type $0) + (i32.const 1) + (block (result i32) + (call $~lib/rt/closure/setClosureEnv + (i32.load offset=4 + (local.get $1) + ) + ) + (global.set $~argumentsLength + (i32.const 1) + ) + (i32.load (local.get $1) ) ) - (global.set $~argumentsLength - (i32.const 1) - ) - (i32.load - (local.get $1) - ) ) ) (i32.const 4) @@ -5906,31 +5910,33 @@ (if (i32.eqz (i32.eq - (call_indirect (type $0) - (i32.const 1) - (block (result i32) - (local.set $2 - (if (result i32) - (global.get $resolve-ternary/b) - (then - (global.get $resolve-ternary/f2) - ) - (else - (i32.const 3568) - ) + (block (result i32) + (local.set $2 + (if (result i32) + (global.get $resolve-ternary/b) + (then + (global.get $resolve-ternary/f2) + ) + (else + (i32.const 3568) ) ) - (call $~lib/rt/closure/setClosureEnv - (i32.load offset=4 + ) + (call_indirect (type $0) + (i32.const 1) + (block (result i32) + (call $~lib/rt/closure/setClosureEnv + (i32.load offset=4 + (local.get $2) + ) + ) + (global.set $~argumentsLength + (i32.const 1) + ) + (i32.load (local.get $2) ) ) - (global.set $~argumentsLength - (i32.const 1) - ) - (i32.load - (local.get $2) - ) ) ) (i32.const 3) diff --git a/tests/frontend/compiler/std/array-access.wat b/tests/frontend/compiler/std/array-access.wat index 037bc02d..95f82572 100644 --- a/tests/frontend/compiler/std/array-access.wat +++ b/tests/frontend/compiler/std/array-access.wat @@ -728,28 +728,30 @@ (func $std/array-access/functionArrayElementCall (param $a i32) (result i32) (local $1 i32) (return - (call_indirect (type $0) - (i32.const 123) - (block (result i32) - (local.set $1 - (call $~lib/array/Array<%28i32%29=>i32>#__get - (call $~lib/rt/__tmptostack - (local.get $a) - ) - (i32.const 0) + (block (result i32) + (local.set $1 + (call $~lib/array/Array<%28i32%29=>i32>#__get + (call $~lib/rt/__tmptostack + (local.get $a) ) + (i32.const 0) ) - (call $~lib/rt/closure/setClosureEnv - (i32.load offset=4 + ) + (call_indirect (type $0) + (i32.const 123) + (block (result i32) + (call $~lib/rt/closure/setClosureEnv + (i32.load offset=4 + (local.get $1) + ) + ) + (global.set $~argumentsLength + (i32.const 1) + ) + (i32.load (local.get $1) ) ) - (global.set $~argumentsLength - (i32.const 1) - ) - (i32.load - (local.get $1) - ) ) ) ) diff --git a/tests/frontend/compiler/std/array.wat b/tests/frontend/compiler/std/array.wat index ef15680e..89de0521 100644 --- a/tests/frontend/compiler/std/array.wat +++ b/tests/frontend/compiler/std/array.wat @@ -8497,6 +8497,7 @@ (local $len i32) (local $4 i32) (local $5 i32) + (local $6 i32) (block (local.set $i (i32.const 0) @@ -8532,35 +8533,40 @@ ) (then (if - (call_indirect (type $3) - (i32.load - (i32.add - (call $~lib/array/Array#get:dataStart - (call $~lib/rt/__tmptostack - (local.get $this) - ) - ) - (i32.shl - (local.get $i) - (i32.const 2) - ) - ) - ) - (local.get $i) - (call $~lib/rt/__tmptostack - (local.get $this) + (block (result i32) + (local.set $6 + (local.get $fn) ) - (block (result i32) - (call $~lib/rt/closure/setClosureEnv - (i32.load offset=4 - (local.get $fn) + (call_indirect (type $3) + (i32.load + (i32.add + (call $~lib/array/Array#get:dataStart + (call $~lib/rt/__tmptostack + (local.get $this) + ) + ) + (i32.shl + (local.get $i) + (i32.const 2) + ) ) ) - (global.set $~argumentsLength - (i32.const 3) + (local.get $i) + (call $~lib/rt/__tmptostack + (local.get $this) ) - (i32.load - (local.get $fn) + (block (result i32) + (call $~lib/rt/closure/setClosureEnv + (i32.load offset=4 + (local.get $6) + ) + ) + (global.set $~argumentsLength + (i32.const 3) + ) + (i32.load + (local.get $6) + ) ) ) ) @@ -8641,6 +8647,7 @@ ) (func $~lib/array/Array#findLastIndex (param $this i32) (param $fn i32) (result i32) (local $i i32) + (local $3 i32) (local.set $i (i32.sub (call $~lib/array/Array#get:length_ @@ -8659,35 +8666,40 @@ ) (then (if - (call_indirect (type $3) - (i32.load - (i32.add - (call $~lib/array/Array#get:dataStart - (call $~lib/rt/__tmptostack - (local.get $this) - ) - ) - (i32.shl - (local.get $i) - (i32.const 2) - ) - ) - ) - (local.get $i) - (call $~lib/rt/__tmptostack - (local.get $this) + (block (result i32) + (local.set $3 + (local.get $fn) ) - (block (result i32) - (call $~lib/rt/closure/setClosureEnv - (i32.load offset=4 - (local.get $fn) + (call_indirect (type $3) + (i32.load + (i32.add + (call $~lib/array/Array#get:dataStart + (call $~lib/rt/__tmptostack + (local.get $this) + ) + ) + (i32.shl + (local.get $i) + (i32.const 2) + ) ) ) - (global.set $~argumentsLength - (i32.const 3) + (local.get $i) + (call $~lib/rt/__tmptostack + (local.get $this) ) - (i32.load - (local.get $fn) + (block (result i32) + (call $~lib/rt/closure/setClosureEnv + (i32.load offset=4 + (local.get $3) + ) + ) + (global.set $~argumentsLength + (i32.const 3) + ) + (i32.load + (local.get $3) + ) ) ) ) @@ -8749,6 +8761,7 @@ (local $len i32) (local $4 i32) (local $5 i32) + (local $6 i32) (block (local.set $i (i32.const 0) @@ -8785,35 +8798,40 @@ (then (if (i32.eqz - (call_indirect (type $3) - (i32.load - (i32.add - (call $~lib/array/Array#get:dataStart - (call $~lib/rt/__tmptostack - (local.get $this) - ) - ) - (i32.shl - (local.get $i) - (i32.const 2) - ) - ) - ) - (local.get $i) - (call $~lib/rt/__tmptostack - (local.get $this) + (block (result i32) + (local.set $6 + (local.get $fn) ) - (block (result i32) - (call $~lib/rt/closure/setClosureEnv - (i32.load offset=4 - (local.get $fn) + (call_indirect (type $3) + (i32.load + (i32.add + (call $~lib/array/Array#get:dataStart + (call $~lib/rt/__tmptostack + (local.get $this) + ) + ) + (i32.shl + (local.get $i) + (i32.const 2) + ) ) ) - (global.set $~argumentsLength - (i32.const 3) + (local.get $i) + (call $~lib/rt/__tmptostack + (local.get $this) ) - (i32.load - (local.get $fn) + (block (result i32) + (call $~lib/rt/closure/setClosureEnv + (i32.load offset=4 + (local.get $6) + ) + ) + (global.set $~argumentsLength + (i32.const 3) + ) + (i32.load + (local.get $6) + ) ) ) ) @@ -8892,6 +8910,7 @@ (local $len i32) (local $4 i32) (local $5 i32) + (local $6 i32) (block (local.set $i (i32.const 0) @@ -8927,35 +8946,40 @@ ) (then (if - (call_indirect (type $3) - (i32.load - (i32.add - (call $~lib/array/Array#get:dataStart - (call $~lib/rt/__tmptostack - (local.get $this) - ) - ) - (i32.shl - (local.get $i) - (i32.const 2) - ) - ) - ) - (local.get $i) - (call $~lib/rt/__tmptostack - (local.get $this) + (block (result i32) + (local.set $6 + (local.get $fn) ) - (block (result i32) - (call $~lib/rt/closure/setClosureEnv - (i32.load offset=4 - (local.get $fn) + (call_indirect (type $3) + (i32.load + (i32.add + (call $~lib/array/Array#get:dataStart + (call $~lib/rt/__tmptostack + (local.get $this) + ) + ) + (i32.shl + (local.get $i) + (i32.const 2) + ) ) ) - (global.set $~argumentsLength - (i32.const 3) + (local.get $i) + (call $~lib/rt/__tmptostack + (local.get $this) ) - (i32.load - (local.get $fn) + (block (result i32) + (call $~lib/rt/closure/setClosureEnv + (i32.load offset=4 + (local.get $6) + ) + ) + (global.set $~argumentsLength + (i32.const 3) + ) + (i32.load + (local.get $6) + ) ) ) ) @@ -9035,6 +9059,7 @@ (local $len i32) (local $4 i32) (local $5 i32) + (local $6 i32) (block (local.set $i (i32.const 0) @@ -9069,6 +9094,9 @@ ) ) (then + (local.set $6 + (local.get $fn) + ) (call_indirect (type $5) (i32.load (i32.add @@ -9090,14 +9118,14 @@ (block (result i32) (call $~lib/rt/closure/setClosureEnv (i32.load offset=4 - (local.get $fn) + (local.get $6) ) ) (global.set $~argumentsLength (i32.const 3) ) (i32.load - (local.get $fn) + (local.get $6) ) ) ) @@ -11919,8 +11947,11 @@ ) (func $~lib/util/sort/extendRunRight (param $ptr i32) (param $i i32) (param $right i32) (param $comparator i32) (result i32) (local $j i32) + (local $5 i32) + (local $6 i32) (local $k i32) (local $tmp f32) + (local $9 i32) (if (i32.eq (local.get $i) @@ -11937,43 +11968,48 @@ ) (if (i32.gt_s - (call_indirect (type $7) - (f32.load - (i32.add - (local.get $ptr) - (i32.shl - (local.get $j) - (i32.const 2) + (block (result i32) + (local.set $5 + (local.get $comparator) + ) + (call_indirect (type $7) + (f32.load + (i32.add + (local.get $ptr) + (i32.shl + (local.get $j) + (i32.const 2) + ) ) ) - ) - (f32.load - (i32.add - (local.get $ptr) - (i32.shl - (local.tee $j - (i32.add - (local.get $j) - (i32.const 1) + (f32.load + (i32.add + (local.get $ptr) + (i32.shl + (local.tee $j + (i32.add + (local.get $j) + (i32.const 1) + ) ) + (i32.const 2) + ) + ) + ) + (block (result i32) + (call $~lib/rt/closure/setClosureEnv + (i32.load offset=4 + (local.get $5) ) + ) + (global.set $~argumentsLength (i32.const 2) ) + (i32.load + (local.get $5) + ) ) ) - (block (result i32) - (call $~lib/rt/closure/setClosureEnv - (i32.load offset=4 - (local.get $comparator) - ) - ) - (global.set $~argumentsLength - (i32.const 2) - ) - (i32.load - (local.get $comparator) - ) - ) ) (i32.const 0) ) @@ -11988,36 +12024,41 @@ ) (then (i32.shr_u - (call_indirect (type $7) - (f32.load offset=4 - (i32.add - (local.get $ptr) - (i32.shl - (local.get $j) - (i32.const 2) - ) - ) + (block (result i32) + (local.set $6 + (local.get $comparator) ) - (f32.load - (i32.add - (local.get $ptr) - (i32.shl - (local.get $j) - (i32.const 2) + (call_indirect (type $7) + (f32.load offset=4 + (i32.add + (local.get $ptr) + (i32.shl + (local.get $j) + (i32.const 2) + ) ) ) - ) - (block (result i32) - (call $~lib/rt/closure/setClosureEnv - (i32.load offset=4 - (local.get $comparator) + (f32.load + (i32.add + (local.get $ptr) + (i32.shl + (local.get $j) + (i32.const 2) + ) ) ) - (global.set $~argumentsLength - (i32.const 2) - ) - (i32.load - (local.get $comparator) + (block (result i32) + (call $~lib/rt/closure/setClosureEnv + (i32.load offset=4 + (local.get $6) + ) + ) + (global.set $~argumentsLength + (i32.const 2) + ) + (i32.load + (local.get $6) + ) ) ) ) @@ -12119,36 +12160,41 @@ ) (then (i32.ge_s - (call_indirect (type $7) - (f32.load offset=4 - (i32.add - (local.get $ptr) - (i32.shl - (local.get $j) - (i32.const 2) - ) - ) + (block (result i32) + (local.set $9 + (local.get $comparator) ) - (f32.load - (i32.add - (local.get $ptr) - (i32.shl - (local.get $j) - (i32.const 2) + (call_indirect (type $7) + (f32.load offset=4 + (i32.add + (local.get $ptr) + (i32.shl + (local.get $j) + (i32.const 2) + ) ) ) - ) - (block (result i32) - (call $~lib/rt/closure/setClosureEnv - (i32.load offset=4 - (local.get $comparator) + (f32.load + (i32.add + (local.get $ptr) + (i32.shl + (local.get $j) + (i32.const 2) + ) ) ) - (global.set $~argumentsLength - (i32.const 2) - ) - (i32.load - (local.get $comparator) + (block (result i32) + (call $~lib/rt/closure/setClosureEnv + (i32.load offset=4 + (local.get $9) + ) + ) + (global.set $~argumentsLength + (i32.const 2) + ) + (i32.load + (local.get $9) + ) ) ) ) @@ -13479,8 +13525,11 @@ ) (func $~lib/util/sort/extendRunRight (param $ptr i32) (param $i i32) (param $right i32) (param $comparator i32) (result i32) (local $j i32) + (local $5 i32) + (local $6 i32) (local $k i32) (local $tmp f64) + (local $9 i32) (if (i32.eq (local.get $i) @@ -13497,41 +13546,46 @@ ) (if (i32.gt_s - (call_indirect (type $8) - (f64.load - (i32.add - (local.get $ptr) - (i32.shl - (local.get $j) - (i32.const 3) + (block (result i32) + (local.set $5 + (local.get $comparator) + ) + (call_indirect (type $8) + (f64.load + (i32.add + (local.get $ptr) + (i32.shl + (local.get $j) + (i32.const 3) + ) ) ) - ) - (f64.load - (i32.add - (local.get $ptr) - (i32.shl - (local.tee $j - (i32.add - (local.get $j) - (i32.const 1) + (f64.load + (i32.add + (local.get $ptr) + (i32.shl + (local.tee $j + (i32.add + (local.get $j) + (i32.const 1) + ) ) + (i32.const 3) ) - (i32.const 3) ) ) - ) - (block (result i32) - (call $~lib/rt/closure/setClosureEnv - (i32.load offset=4 - (local.get $comparator) + (block (result i32) + (call $~lib/rt/closure/setClosureEnv + (i32.load offset=4 + (local.get $5) + ) + ) + (global.set $~argumentsLength + (i32.const 2) + ) + (i32.load + (local.get $5) ) - ) - (global.set $~argumentsLength - (i32.const 2) - ) - (i32.load - (local.get $comparator) ) ) ) @@ -13548,36 +13602,41 @@ ) (then (i32.shr_u - (call_indirect (type $8) - (f64.load offset=8 - (i32.add - (local.get $ptr) - (i32.shl - (local.get $j) - (i32.const 3) - ) - ) + (block (result i32) + (local.set $6 + (local.get $comparator) ) - (f64.load - (i32.add - (local.get $ptr) - (i32.shl - (local.get $j) - (i32.const 3) + (call_indirect (type $8) + (f64.load offset=8 + (i32.add + (local.get $ptr) + (i32.shl + (local.get $j) + (i32.const 3) + ) ) ) - ) - (block (result i32) - (call $~lib/rt/closure/setClosureEnv - (i32.load offset=4 - (local.get $comparator) + (f64.load + (i32.add + (local.get $ptr) + (i32.shl + (local.get $j) + (i32.const 3) + ) ) ) - (global.set $~argumentsLength - (i32.const 2) - ) - (i32.load - (local.get $comparator) + (block (result i32) + (call $~lib/rt/closure/setClosureEnv + (i32.load offset=4 + (local.get $6) + ) + ) + (global.set $~argumentsLength + (i32.const 2) + ) + (i32.load + (local.get $6) + ) ) ) ) @@ -13679,36 +13738,41 @@ ) (then (i32.ge_s - (call_indirect (type $8) - (f64.load offset=8 - (i32.add - (local.get $ptr) - (i32.shl - (local.get $j) - (i32.const 3) - ) - ) + (block (result i32) + (local.set $9 + (local.get $comparator) ) - (f64.load - (i32.add - (local.get $ptr) - (i32.shl - (local.get $j) - (i32.const 3) + (call_indirect (type $8) + (f64.load offset=8 + (i32.add + (local.get $ptr) + (i32.shl + (local.get $j) + (i32.const 3) + ) ) ) - ) - (block (result i32) - (call $~lib/rt/closure/setClosureEnv - (i32.load offset=4 - (local.get $comparator) + (f64.load + (i32.add + (local.get $ptr) + (i32.shl + (local.get $j) + (i32.const 3) + ) ) ) - (global.set $~argumentsLength - (i32.const 2) - ) - (i32.load - (local.get $comparator) + (block (result i32) + (call $~lib/rt/closure/setClosureEnv + (i32.load offset=4 + (local.get $9) + ) + ) + (global.set $~argumentsLength + (i32.const 2) + ) + (i32.load + (local.get $9) + ) ) ) ) @@ -15171,8 +15235,11 @@ ) (func $~lib/util/sort/extendRunRight (param $ptr i32) (param $i i32) (param $right i32) (param $comparator i32) (result i32) (local $j i32) + (local $5 i32) + (local $6 i32) (local $k i32) (local $tmp i32) + (local $9 i32) (if (i32.eq (local.get $i) @@ -15189,41 +15256,46 @@ ) (if (i32.gt_s - (call_indirect (type $0) - (i32.load - (i32.add - (local.get $ptr) - (i32.shl - (local.get $j) - (i32.const 2) + (block (result i32) + (local.set $5 + (local.get $comparator) + ) + (call_indirect (type $0) + (i32.load + (i32.add + (local.get $ptr) + (i32.shl + (local.get $j) + (i32.const 2) + ) ) ) - ) - (i32.load - (i32.add - (local.get $ptr) - (i32.shl - (local.tee $j - (i32.add - (local.get $j) - (i32.const 1) + (i32.load + (i32.add + (local.get $ptr) + (i32.shl + (local.tee $j + (i32.add + (local.get $j) + (i32.const 1) + ) ) + (i32.const 2) ) - (i32.const 2) ) ) - ) - (block (result i32) - (call $~lib/rt/closure/setClosureEnv - (i32.load offset=4 - (local.get $comparator) + (block (result i32) + (call $~lib/rt/closure/setClosureEnv + (i32.load offset=4 + (local.get $5) + ) + ) + (global.set $~argumentsLength + (i32.const 2) + ) + (i32.load + (local.get $5) ) - ) - (global.set $~argumentsLength - (i32.const 2) - ) - (i32.load - (local.get $comparator) ) ) ) @@ -15240,36 +15312,41 @@ ) (then (i32.shr_u - (call_indirect (type $0) - (i32.load offset=4 - (i32.add - (local.get $ptr) - (i32.shl - (local.get $j) - (i32.const 2) - ) - ) + (block (result i32) + (local.set $6 + (local.get $comparator) ) - (i32.load - (i32.add - (local.get $ptr) - (i32.shl - (local.get $j) - (i32.const 2) + (call_indirect (type $0) + (i32.load offset=4 + (i32.add + (local.get $ptr) + (i32.shl + (local.get $j) + (i32.const 2) + ) ) ) - ) - (block (result i32) - (call $~lib/rt/closure/setClosureEnv - (i32.load offset=4 - (local.get $comparator) + (i32.load + (i32.add + (local.get $ptr) + (i32.shl + (local.get $j) + (i32.const 2) + ) ) ) - (global.set $~argumentsLength - (i32.const 2) - ) - (i32.load - (local.get $comparator) + (block (result i32) + (call $~lib/rt/closure/setClosureEnv + (i32.load offset=4 + (local.get $6) + ) + ) + (global.set $~argumentsLength + (i32.const 2) + ) + (i32.load + (local.get $6) + ) ) ) ) @@ -15371,36 +15448,41 @@ ) (then (i32.ge_s - (call_indirect (type $0) - (i32.load offset=4 - (i32.add - (local.get $ptr) - (i32.shl - (local.get $j) - (i32.const 2) - ) - ) + (block (result i32) + (local.set $9 + (local.get $comparator) ) - (i32.load - (i32.add - (local.get $ptr) - (i32.shl - (local.get $j) - (i32.const 2) + (call_indirect (type $0) + (i32.load offset=4 + (i32.add + (local.get $ptr) + (i32.shl + (local.get $j) + (i32.const 2) + ) ) ) - ) - (block (result i32) - (call $~lib/rt/closure/setClosureEnv - (i32.load offset=4 - (local.get $comparator) + (i32.load + (i32.add + (local.get $ptr) + (i32.shl + (local.get $j) + (i32.const 2) + ) ) ) - (global.set $~argumentsLength - (i32.const 2) - ) - (i32.load - (local.get $comparator) + (block (result i32) + (call $~lib/rt/closure/setClosureEnv + (i32.load offset=4 + (local.get $9) + ) + ) + (global.set $~argumentsLength + (i32.const 2) + ) + (i32.load + (local.get $9) + ) ) ) ) @@ -16607,8 +16689,11 @@ ) (func $~lib/util/sort/extendRunRight (param $ptr i32) (param $i i32) (param $right i32) (param $comparator i32) (result i32) (local $j i32) + (local $5 i32) + (local $6 i32) (local $k i32) (local $tmp i32) + (local $9 i32) (if (i32.eq (local.get $i) @@ -16625,41 +16710,46 @@ ) (if (i32.gt_s - (call_indirect (type $0) - (i32.load - (i32.add - (local.get $ptr) - (i32.shl - (local.get $j) - (i32.const 2) + (block (result i32) + (local.set $5 + (local.get $comparator) + ) + (call_indirect (type $0) + (i32.load + (i32.add + (local.get $ptr) + (i32.shl + (local.get $j) + (i32.const 2) + ) ) ) - ) - (i32.load - (i32.add - (local.get $ptr) - (i32.shl - (local.tee $j - (i32.add - (local.get $j) - (i32.const 1) + (i32.load + (i32.add + (local.get $ptr) + (i32.shl + (local.tee $j + (i32.add + (local.get $j) + (i32.const 1) + ) ) + (i32.const 2) ) - (i32.const 2) ) ) - ) - (block (result i32) - (call $~lib/rt/closure/setClosureEnv - (i32.load offset=4 - (local.get $comparator) + (block (result i32) + (call $~lib/rt/closure/setClosureEnv + (i32.load offset=4 + (local.get $5) + ) + ) + (global.set $~argumentsLength + (i32.const 2) + ) + (i32.load + (local.get $5) ) - ) - (global.set $~argumentsLength - (i32.const 2) - ) - (i32.load - (local.get $comparator) ) ) ) @@ -16676,36 +16766,41 @@ ) (then (i32.shr_u - (call_indirect (type $0) - (i32.load offset=4 - (i32.add - (local.get $ptr) - (i32.shl - (local.get $j) - (i32.const 2) - ) - ) + (block (result i32) + (local.set $6 + (local.get $comparator) ) - (i32.load - (i32.add - (local.get $ptr) - (i32.shl - (local.get $j) - (i32.const 2) + (call_indirect (type $0) + (i32.load offset=4 + (i32.add + (local.get $ptr) + (i32.shl + (local.get $j) + (i32.const 2) + ) ) ) - ) - (block (result i32) - (call $~lib/rt/closure/setClosureEnv - (i32.load offset=4 - (local.get $comparator) + (i32.load + (i32.add + (local.get $ptr) + (i32.shl + (local.get $j) + (i32.const 2) + ) ) ) - (global.set $~argumentsLength - (i32.const 2) - ) - (i32.load - (local.get $comparator) + (block (result i32) + (call $~lib/rt/closure/setClosureEnv + (i32.load offset=4 + (local.get $6) + ) + ) + (global.set $~argumentsLength + (i32.const 2) + ) + (i32.load + (local.get $6) + ) ) ) ) @@ -16807,36 +16902,41 @@ ) (then (i32.ge_s - (call_indirect (type $0) - (i32.load offset=4 - (i32.add - (local.get $ptr) - (i32.shl - (local.get $j) - (i32.const 2) - ) - ) + (block (result i32) + (local.set $9 + (local.get $comparator) ) - (i32.load - (i32.add - (local.get $ptr) - (i32.shl - (local.get $j) - (i32.const 2) + (call_indirect (type $0) + (i32.load offset=4 + (i32.add + (local.get $ptr) + (i32.shl + (local.get $j) + (i32.const 2) + ) ) ) - ) - (block (result i32) - (call $~lib/rt/closure/setClosureEnv - (i32.load offset=4 - (local.get $comparator) + (i32.load + (i32.add + (local.get $ptr) + (i32.shl + (local.get $j) + (i32.const 2) + ) ) ) - (global.set $~argumentsLength - (i32.const 2) - ) - (i32.load - (local.get $comparator) + (block (result i32) + (call $~lib/rt/closure/setClosureEnv + (i32.load offset=4 + (local.get $9) + ) + ) + (global.set $~argumentsLength + (i32.const 2) + ) + (i32.load + (local.get $9) + ) ) ) ) @@ -17866,6 +17966,7 @@ (func $std/array/isSorted (param $data i32) (param $comparator i32) (result i32) (local $i i32) (local $len i32) + (local $4 i32) (block (local.set $i (i32.const 1) @@ -17887,33 +17988,38 @@ (then (if (i32.gt_s - (call_indirect (type $0) - (call $~lib/array/Array#__get - (call $~lib/rt/__tmptostack - (local.get $data) + (block (result i32) + (local.set $4 + (local.get $comparator) + ) + (call_indirect (type $0) + (call $~lib/array/Array#__get + (call $~lib/rt/__tmptostack + (local.get $data) + ) + (i32.sub + (local.get $i) + (i32.const 1) + ) ) - (i32.sub + (call $~lib/array/Array#__get + (call $~lib/rt/__tmptostack + (local.get $data) + ) (local.get $i) - (i32.const 1) ) - ) - (call $~lib/array/Array#__get - (call $~lib/rt/__tmptostack - (local.get $data) - ) - (local.get $i) - ) - (block (result i32) - (call $~lib/rt/closure/setClosureEnv - (i32.load offset=4 - (local.get $comparator) + (block (result i32) + (call $~lib/rt/closure/setClosureEnv + (i32.load offset=4 + (local.get $4) + ) + ) + (global.set $~argumentsLength + (i32.const 2) + ) + (i32.load + (local.get $4) ) - ) - (global.set $~argumentsLength - (i32.const 2) - ) - (i32.load - (local.get $comparator) ) ) ) @@ -18550,8 +18656,11 @@ ) (func $~lib/util/sort/extendRunRight (param $ptr i32) (param $i i32) (param $right i32) (param $comparator i32) (result i32) (local $j i32) + (local $5 i32) + (local $6 i32) (local $k i32) (local $tmp i32) + (local $9 i32) (if (i32.eq (local.get $i) @@ -18568,45 +18677,50 @@ ) (if (i32.gt_s - (call_indirect (type $0) - (call $~lib/rt/__tmptostack - (i32.load - (i32.add - (local.get $ptr) - (i32.shl - (local.get $j) - (i32.const 2) + (block (result i32) + (local.set $5 + (local.get $comparator) + ) + (call_indirect (type $0) + (call $~lib/rt/__tmptostack + (i32.load + (i32.add + (local.get $ptr) + (i32.shl + (local.get $j) + (i32.const 2) + ) ) ) ) - ) - (call $~lib/rt/__tmptostack - (i32.load - (i32.add - (local.get $ptr) - (i32.shl - (local.tee $j - (i32.add - (local.get $j) - (i32.const 1) + (call $~lib/rt/__tmptostack + (i32.load + (i32.add + (local.get $ptr) + (i32.shl + (local.tee $j + (i32.add + (local.get $j) + (i32.const 1) + ) ) + (i32.const 2) ) - (i32.const 2) ) ) ) - ) - (block (result i32) - (call $~lib/rt/closure/setClosureEnv - (i32.load offset=4 - (local.get $comparator) + (block (result i32) + (call $~lib/rt/closure/setClosureEnv + (i32.load offset=4 + (local.get $5) + ) + ) + (global.set $~argumentsLength + (i32.const 2) + ) + (i32.load + (local.get $5) ) - ) - (global.set $~argumentsLength - (i32.const 2) - ) - (i32.load - (local.get $comparator) ) ) ) @@ -18623,40 +18737,45 @@ ) (then (i32.shr_u - (call_indirect (type $0) - (call $~lib/rt/__tmptostack - (i32.load offset=4 - (i32.add - (local.get $ptr) - (i32.shl - (local.get $j) - (i32.const 2) + (block (result i32) + (local.set $6 + (local.get $comparator) + ) + (call_indirect (type $0) + (call $~lib/rt/__tmptostack + (i32.load offset=4 + (i32.add + (local.get $ptr) + (i32.shl + (local.get $j) + (i32.const 2) + ) ) ) ) - ) - (call $~lib/rt/__tmptostack - (i32.load - (i32.add - (local.get $ptr) - (i32.shl - (local.get $j) - (i32.const 2) + (call $~lib/rt/__tmptostack + (i32.load + (i32.add + (local.get $ptr) + (i32.shl + (local.get $j) + (i32.const 2) + ) ) ) ) - ) - (block (result i32) - (call $~lib/rt/closure/setClosureEnv - (i32.load offset=4 - (local.get $comparator) + (block (result i32) + (call $~lib/rt/closure/setClosureEnv + (i32.load offset=4 + (local.get $6) + ) + ) + (global.set $~argumentsLength + (i32.const 2) + ) + (i32.load + (local.get $6) ) - ) - (global.set $~argumentsLength - (i32.const 2) - ) - (i32.load - (local.get $comparator) ) ) ) @@ -18760,40 +18879,45 @@ ) (then (i32.ge_s - (call_indirect (type $0) - (call $~lib/rt/__tmptostack - (i32.load offset=4 - (i32.add - (local.get $ptr) - (i32.shl - (local.get $j) - (i32.const 2) + (block (result i32) + (local.set $9 + (local.get $comparator) + ) + (call_indirect (type $0) + (call $~lib/rt/__tmptostack + (i32.load offset=4 + (i32.add + (local.get $ptr) + (i32.shl + (local.get $j) + (i32.const 2) + ) ) ) ) - ) - (call $~lib/rt/__tmptostack - (i32.load - (i32.add - (local.get $ptr) - (i32.shl - (local.get $j) - (i32.const 2) + (call $~lib/rt/__tmptostack + (i32.load + (i32.add + (local.get $ptr) + (i32.shl + (local.get $j) + (i32.const 2) + ) ) ) ) - ) - (block (result i32) - (call $~lib/rt/closure/setClosureEnv - (i32.load offset=4 - (local.get $comparator) + (block (result i32) + (call $~lib/rt/closure/setClosureEnv + (i32.load offset=4 + (local.get $9) + ) + ) + (global.set $~argumentsLength + (i32.const 2) + ) + (i32.load + (local.get $9) ) - ) - (global.set $~argumentsLength - (i32.const 2) - ) - (i32.load - (local.get $comparator) ) ) ) @@ -20532,8 +20656,11 @@ ) (func $~lib/util/sort/extendRunRight<~lib/array/Array> (param $ptr i32) (param $i i32) (param $right i32) (param $comparator i32) (result i32) (local $j i32) + (local $5 i32) + (local $6 i32) (local $k i32) (local $tmp i32) + (local $9 i32) (if (i32.eq (local.get $i) @@ -20550,45 +20677,50 @@ ) (if (i32.gt_s - (call_indirect (type $0) - (call $~lib/rt/__tmptostack - (i32.load - (i32.add - (local.get $ptr) - (i32.shl - (local.get $j) - (i32.const 2) + (block (result i32) + (local.set $5 + (local.get $comparator) + ) + (call_indirect (type $0) + (call $~lib/rt/__tmptostack + (i32.load + (i32.add + (local.get $ptr) + (i32.shl + (local.get $j) + (i32.const 2) + ) ) ) ) - ) - (call $~lib/rt/__tmptostack - (i32.load - (i32.add - (local.get $ptr) - (i32.shl - (local.tee $j - (i32.add - (local.get $j) - (i32.const 1) + (call $~lib/rt/__tmptostack + (i32.load + (i32.add + (local.get $ptr) + (i32.shl + (local.tee $j + (i32.add + (local.get $j) + (i32.const 1) + ) ) + (i32.const 2) ) - (i32.const 2) ) ) ) - ) - (block (result i32) - (call $~lib/rt/closure/setClosureEnv - (i32.load offset=4 - (local.get $comparator) + (block (result i32) + (call $~lib/rt/closure/setClosureEnv + (i32.load offset=4 + (local.get $5) + ) + ) + (global.set $~argumentsLength + (i32.const 2) + ) + (i32.load + (local.get $5) ) - ) - (global.set $~argumentsLength - (i32.const 2) - ) - (i32.load - (local.get $comparator) ) ) ) @@ -20605,40 +20737,45 @@ ) (then (i32.shr_u - (call_indirect (type $0) - (call $~lib/rt/__tmptostack - (i32.load offset=4 - (i32.add - (local.get $ptr) - (i32.shl - (local.get $j) - (i32.const 2) + (block (result i32) + (local.set $6 + (local.get $comparator) + ) + (call_indirect (type $0) + (call $~lib/rt/__tmptostack + (i32.load offset=4 + (i32.add + (local.get $ptr) + (i32.shl + (local.get $j) + (i32.const 2) + ) ) ) ) - ) - (call $~lib/rt/__tmptostack - (i32.load - (i32.add - (local.get $ptr) - (i32.shl - (local.get $j) - (i32.const 2) + (call $~lib/rt/__tmptostack + (i32.load + (i32.add + (local.get $ptr) + (i32.shl + (local.get $j) + (i32.const 2) + ) ) ) ) - ) - (block (result i32) - (call $~lib/rt/closure/setClosureEnv - (i32.load offset=4 - (local.get $comparator) + (block (result i32) + (call $~lib/rt/closure/setClosureEnv + (i32.load offset=4 + (local.get $6) + ) + ) + (global.set $~argumentsLength + (i32.const 2) + ) + (i32.load + (local.get $6) ) - ) - (global.set $~argumentsLength - (i32.const 2) - ) - (i32.load - (local.get $comparator) ) ) ) @@ -20742,40 +20879,45 @@ ) (then (i32.ge_s - (call_indirect (type $0) - (call $~lib/rt/__tmptostack - (i32.load offset=4 - (i32.add - (local.get $ptr) - (i32.shl - (local.get $j) - (i32.const 2) + (block (result i32) + (local.set $9 + (local.get $comparator) + ) + (call_indirect (type $0) + (call $~lib/rt/__tmptostack + (i32.load offset=4 + (i32.add + (local.get $ptr) + (i32.shl + (local.get $j) + (i32.const 2) + ) ) ) ) - ) - (call $~lib/rt/__tmptostack - (i32.load - (i32.add - (local.get $ptr) - (i32.shl - (local.get $j) - (i32.const 2) + (call $~lib/rt/__tmptostack + (i32.load + (i32.add + (local.get $ptr) + (i32.shl + (local.get $j) + (i32.const 2) + ) ) ) ) - ) - (block (result i32) - (call $~lib/rt/closure/setClosureEnv - (i32.load offset=4 - (local.get $comparator) + (block (result i32) + (call $~lib/rt/closure/setClosureEnv + (i32.load offset=4 + (local.get $9) + ) + ) + (global.set $~argumentsLength + (i32.const 2) + ) + (i32.load + (local.get $9) ) - ) - (global.set $~argumentsLength - (i32.const 2) - ) - (i32.load - (local.get $comparator) ) ) ) @@ -21755,6 +21897,7 @@ (func $std/array/isSorted<~lib/array/Array> (param $data i32) (param $comparator i32) (result i32) (local $i i32) (local $len i32) + (local $4 i32) (block (local.set $i (i32.const 1) @@ -21776,37 +21919,42 @@ (then (if (i32.gt_s - (call_indirect (type $0) - (call $~lib/rt/__tmptostack - (call $~lib/array/Array<~lib/array/Array>#__get - (call $~lib/rt/__tmptostack - (local.get $data) + (block (result i32) + (local.set $4 + (local.get $comparator) + ) + (call_indirect (type $0) + (call $~lib/rt/__tmptostack + (call $~lib/array/Array<~lib/array/Array>#__get + (call $~lib/rt/__tmptostack + (local.get $data) + ) + (i32.sub + (local.get $i) + (i32.const 1) + ) ) - (i32.sub + ) + (call $~lib/rt/__tmptostack + (call $~lib/array/Array<~lib/array/Array>#__get + (call $~lib/rt/__tmptostack + (local.get $data) + ) (local.get $i) - (i32.const 1) ) ) - ) - (call $~lib/rt/__tmptostack - (call $~lib/array/Array<~lib/array/Array>#__get - (call $~lib/rt/__tmptostack - (local.get $data) + (block (result i32) + (call $~lib/rt/closure/setClosureEnv + (i32.load offset=4 + (local.get $4) + ) ) - (local.get $i) - ) - ) - (block (result i32) - (call $~lib/rt/closure/setClosureEnv - (i32.load offset=4 - (local.get $comparator) + (global.set $~argumentsLength + (i32.const 2) + ) + (i32.load + (local.get $4) ) - ) - (global.set $~argumentsLength - (i32.const 2) - ) - (i32.load - (local.get $comparator) ) ) ) @@ -22462,8 +22610,11 @@ ) (func $~lib/util/sort/extendRunRight> (param $ptr i32) (param $i i32) (param $right i32) (param $comparator i32) (result i32) (local $j i32) + (local $5 i32) + (local $6 i32) (local $k i32) (local $tmp i32) + (local $9 i32) (if (i32.eq (local.get $i) @@ -22480,45 +22631,50 @@ ) (if (i32.gt_s - (call_indirect (type $0) - (call $~lib/rt/__tmptostack - (i32.load - (i32.add - (local.get $ptr) - (i32.shl - (local.get $j) - (i32.const 2) + (block (result i32) + (local.set $5 + (local.get $comparator) + ) + (call_indirect (type $0) + (call $~lib/rt/__tmptostack + (i32.load + (i32.add + (local.get $ptr) + (i32.shl + (local.get $j) + (i32.const 2) + ) ) ) ) - ) - (call $~lib/rt/__tmptostack - (i32.load - (i32.add - (local.get $ptr) - (i32.shl - (local.tee $j - (i32.add - (local.get $j) - (i32.const 1) + (call $~lib/rt/__tmptostack + (i32.load + (i32.add + (local.get $ptr) + (i32.shl + (local.tee $j + (i32.add + (local.get $j) + (i32.const 1) + ) ) + (i32.const 2) ) - (i32.const 2) ) ) ) - ) - (block (result i32) - (call $~lib/rt/closure/setClosureEnv - (i32.load offset=4 - (local.get $comparator) + (block (result i32) + (call $~lib/rt/closure/setClosureEnv + (i32.load offset=4 + (local.get $5) + ) + ) + (global.set $~argumentsLength + (i32.const 2) + ) + (i32.load + (local.get $5) ) - ) - (global.set $~argumentsLength - (i32.const 2) - ) - (i32.load - (local.get $comparator) ) ) ) @@ -22535,40 +22691,45 @@ ) (then (i32.shr_u - (call_indirect (type $0) - (call $~lib/rt/__tmptostack - (i32.load offset=4 - (i32.add - (local.get $ptr) - (i32.shl - (local.get $j) - (i32.const 2) + (block (result i32) + (local.set $6 + (local.get $comparator) + ) + (call_indirect (type $0) + (call $~lib/rt/__tmptostack + (i32.load offset=4 + (i32.add + (local.get $ptr) + (i32.shl + (local.get $j) + (i32.const 2) + ) ) ) ) - ) - (call $~lib/rt/__tmptostack - (i32.load - (i32.add - (local.get $ptr) - (i32.shl - (local.get $j) - (i32.const 2) + (call $~lib/rt/__tmptostack + (i32.load + (i32.add + (local.get $ptr) + (i32.shl + (local.get $j) + (i32.const 2) + ) ) ) ) - ) - (block (result i32) - (call $~lib/rt/closure/setClosureEnv - (i32.load offset=4 - (local.get $comparator) + (block (result i32) + (call $~lib/rt/closure/setClosureEnv + (i32.load offset=4 + (local.get $6) + ) + ) + (global.set $~argumentsLength + (i32.const 2) + ) + (i32.load + (local.get $6) ) - ) - (global.set $~argumentsLength - (i32.const 2) - ) - (i32.load - (local.get $comparator) ) ) ) @@ -22672,40 +22833,45 @@ ) (then (i32.ge_s - (call_indirect (type $0) - (call $~lib/rt/__tmptostack - (i32.load offset=4 - (i32.add - (local.get $ptr) - (i32.shl - (local.get $j) - (i32.const 2) + (block (result i32) + (local.set $9 + (local.get $comparator) + ) + (call_indirect (type $0) + (call $~lib/rt/__tmptostack + (i32.load offset=4 + (i32.add + (local.get $ptr) + (i32.shl + (local.get $j) + (i32.const 2) + ) ) ) ) - ) - (call $~lib/rt/__tmptostack - (i32.load - (i32.add - (local.get $ptr) - (i32.shl - (local.get $j) - (i32.const 2) + (call $~lib/rt/__tmptostack + (i32.load + (i32.add + (local.get $ptr) + (i32.shl + (local.get $j) + (i32.const 2) + ) ) ) ) - ) - (block (result i32) - (call $~lib/rt/closure/setClosureEnv - (i32.load offset=4 - (local.get $comparator) + (block (result i32) + (call $~lib/rt/closure/setClosureEnv + (i32.load offset=4 + (local.get $9) + ) + ) + (global.set $~argumentsLength + (i32.const 2) + ) + (i32.load + (local.get $9) ) - ) - (global.set $~argumentsLength - (i32.const 2) - ) - (i32.load - (local.get $comparator) ) ) ) @@ -23685,6 +23851,7 @@ (func $std/array/isSorted> (param $data i32) (param $comparator i32) (result i32) (local $i i32) (local $len i32) + (local $4 i32) (block (local.set $i (i32.const 1) @@ -23706,37 +23873,42 @@ (then (if (i32.gt_s - (call_indirect (type $0) - (call $~lib/rt/__tmptostack - (call $~lib/array/Array>#__get - (call $~lib/rt/__tmptostack - (local.get $data) + (block (result i32) + (local.set $4 + (local.get $comparator) + ) + (call_indirect (type $0) + (call $~lib/rt/__tmptostack + (call $~lib/array/Array>#__get + (call $~lib/rt/__tmptostack + (local.get $data) + ) + (i32.sub + (local.get $i) + (i32.const 1) + ) ) - (i32.sub + ) + (call $~lib/rt/__tmptostack + (call $~lib/array/Array>#__get + (call $~lib/rt/__tmptostack + (local.get $data) + ) (local.get $i) - (i32.const 1) ) ) - ) - (call $~lib/rt/__tmptostack - (call $~lib/array/Array>#__get - (call $~lib/rt/__tmptostack - (local.get $data) + (block (result i32) + (call $~lib/rt/closure/setClosureEnv + (i32.load offset=4 + (local.get $4) + ) ) - (local.get $i) - ) - ) - (block (result i32) - (call $~lib/rt/closure/setClosureEnv - (i32.load offset=4 - (local.get $comparator) + (global.set $~argumentsLength + (i32.const 2) + ) + (i32.load + (local.get $4) ) - ) - (global.set $~argumentsLength - (i32.const 2) - ) - (i32.load - (local.get $comparator) ) ) ) @@ -24120,8 +24292,11 @@ ) (func $~lib/util/sort/extendRunRight<~lib/string/String|null> (param $ptr i32) (param $i i32) (param $right i32) (param $comparator i32) (result i32) (local $j i32) + (local $5 i32) + (local $6 i32) (local $k i32) (local $tmp i32) + (local $9 i32) (if (i32.eq (local.get $i) @@ -24138,45 +24313,50 @@ ) (if (i32.gt_s - (call_indirect (type $0) - (call $~lib/rt/__tmptostack - (i32.load - (i32.add - (local.get $ptr) - (i32.shl - (local.get $j) - (i32.const 2) + (block (result i32) + (local.set $5 + (local.get $comparator) + ) + (call_indirect (type $0) + (call $~lib/rt/__tmptostack + (i32.load + (i32.add + (local.get $ptr) + (i32.shl + (local.get $j) + (i32.const 2) + ) ) ) ) - ) - (call $~lib/rt/__tmptostack - (i32.load - (i32.add - (local.get $ptr) - (i32.shl - (local.tee $j - (i32.add - (local.get $j) - (i32.const 1) + (call $~lib/rt/__tmptostack + (i32.load + (i32.add + (local.get $ptr) + (i32.shl + (local.tee $j + (i32.add + (local.get $j) + (i32.const 1) + ) ) + (i32.const 2) ) - (i32.const 2) ) ) ) - ) - (block (result i32) - (call $~lib/rt/closure/setClosureEnv - (i32.load offset=4 - (local.get $comparator) + (block (result i32) + (call $~lib/rt/closure/setClosureEnv + (i32.load offset=4 + (local.get $5) + ) + ) + (global.set $~argumentsLength + (i32.const 2) + ) + (i32.load + (local.get $5) ) - ) - (global.set $~argumentsLength - (i32.const 2) - ) - (i32.load - (local.get $comparator) ) ) ) @@ -24193,40 +24373,45 @@ ) (then (i32.shr_u - (call_indirect (type $0) - (call $~lib/rt/__tmptostack - (i32.load offset=4 - (i32.add - (local.get $ptr) - (i32.shl - (local.get $j) - (i32.const 2) + (block (result i32) + (local.set $6 + (local.get $comparator) + ) + (call_indirect (type $0) + (call $~lib/rt/__tmptostack + (i32.load offset=4 + (i32.add + (local.get $ptr) + (i32.shl + (local.get $j) + (i32.const 2) + ) ) ) ) - ) - (call $~lib/rt/__tmptostack - (i32.load - (i32.add - (local.get $ptr) - (i32.shl - (local.get $j) - (i32.const 2) + (call $~lib/rt/__tmptostack + (i32.load + (i32.add + (local.get $ptr) + (i32.shl + (local.get $j) + (i32.const 2) + ) ) ) ) - ) - (block (result i32) - (call $~lib/rt/closure/setClosureEnv - (i32.load offset=4 - (local.get $comparator) + (block (result i32) + (call $~lib/rt/closure/setClosureEnv + (i32.load offset=4 + (local.get $6) + ) + ) + (global.set $~argumentsLength + (i32.const 2) + ) + (i32.load + (local.get $6) ) - ) - (global.set $~argumentsLength - (i32.const 2) - ) - (i32.load - (local.get $comparator) ) ) ) @@ -24330,41 +24515,46 @@ ) (then (i32.ge_s - (call_indirect (type $0) - (call $~lib/rt/__tmptostack - (i32.load offset=4 - (i32.add - (local.get $ptr) - (i32.shl - (local.get $j) - (i32.const 2) + (block (result i32) + (local.set $9 + (local.get $comparator) + ) + (call_indirect (type $0) + (call $~lib/rt/__tmptostack + (i32.load offset=4 + (i32.add + (local.get $ptr) + (i32.shl + (local.get $j) + (i32.const 2) + ) ) ) ) - ) - (call $~lib/rt/__tmptostack - (i32.load - (i32.add - (local.get $ptr) - (i32.shl - (local.get $j) - (i32.const 2) + (call $~lib/rt/__tmptostack + (i32.load + (i32.add + (local.get $ptr) + (i32.shl + (local.get $j) + (i32.const 2) + ) ) ) ) - ) - (block (result i32) - (call $~lib/rt/closure/setClosureEnv - (i32.load offset=4 - (local.get $comparator) + (block (result i32) + (call $~lib/rt/closure/setClosureEnv + (i32.load offset=4 + (local.get $9) + ) + ) + (global.set $~argumentsLength + (i32.const 2) + ) + (i32.load + (local.get $9) ) ) - (global.set $~argumentsLength - (i32.const 2) - ) - (i32.load - (local.get $comparator) - ) ) ) (i32.const 0) @@ -25327,6 +25517,7 @@ (func $std/array/isSorted<~lib/string/String|null> (param $data i32) (param $comparator i32) (result i32) (local $i i32) (local $len i32) + (local $4 i32) (block (local.set $i (i32.const 1) @@ -25348,37 +25539,42 @@ (then (if (i32.gt_s - (call_indirect (type $0) - (call $~lib/rt/__tmptostack - (call $~lib/array/Array<~lib/string/String|null>#__get - (call $~lib/rt/__tmptostack - (local.get $data) + (block (result i32) + (local.set $4 + (local.get $comparator) + ) + (call_indirect (type $0) + (call $~lib/rt/__tmptostack + (call $~lib/array/Array<~lib/string/String|null>#__get + (call $~lib/rt/__tmptostack + (local.get $data) + ) + (i32.sub + (local.get $i) + (i32.const 1) + ) ) - (i32.sub + ) + (call $~lib/rt/__tmptostack + (call $~lib/array/Array<~lib/string/String|null>#__get + (call $~lib/rt/__tmptostack + (local.get $data) + ) (local.get $i) - (i32.const 1) ) ) - ) - (call $~lib/rt/__tmptostack - (call $~lib/array/Array<~lib/string/String|null>#__get - (call $~lib/rt/__tmptostack - (local.get $data) + (block (result i32) + (call $~lib/rt/closure/setClosureEnv + (i32.load offset=4 + (local.get $4) + ) ) - (local.get $i) - ) - ) - (block (result i32) - (call $~lib/rt/closure/setClosureEnv - (i32.load offset=4 - (local.get $comparator) + (global.set $~argumentsLength + (i32.const 2) + ) + (i32.load + (local.get $4) ) - ) - (global.set $~argumentsLength - (i32.const 2) - ) - (i32.load - (local.get $comparator) ) ) ) @@ -26696,8 +26892,11 @@ ) (func $~lib/util/sort/extendRunRight<~lib/string/String> (param $ptr i32) (param $i i32) (param $right i32) (param $comparator i32) (result i32) (local $j i32) + (local $5 i32) + (local $6 i32) (local $k i32) (local $tmp i32) + (local $9 i32) (if (i32.eq (local.get $i) @@ -26714,45 +26913,50 @@ ) (if (i32.gt_s - (call_indirect (type $0) - (call $~lib/rt/__tmptostack - (i32.load - (i32.add - (local.get $ptr) - (i32.shl - (local.get $j) - (i32.const 2) + (block (result i32) + (local.set $5 + (local.get $comparator) + ) + (call_indirect (type $0) + (call $~lib/rt/__tmptostack + (i32.load + (i32.add + (local.get $ptr) + (i32.shl + (local.get $j) + (i32.const 2) + ) ) ) ) - ) - (call $~lib/rt/__tmptostack - (i32.load - (i32.add - (local.get $ptr) - (i32.shl - (local.tee $j - (i32.add - (local.get $j) - (i32.const 1) + (call $~lib/rt/__tmptostack + (i32.load + (i32.add + (local.get $ptr) + (i32.shl + (local.tee $j + (i32.add + (local.get $j) + (i32.const 1) + ) ) + (i32.const 2) ) - (i32.const 2) ) ) ) - ) - (block (result i32) - (call $~lib/rt/closure/setClosureEnv - (i32.load offset=4 - (local.get $comparator) + (block (result i32) + (call $~lib/rt/closure/setClosureEnv + (i32.load offset=4 + (local.get $5) + ) + ) + (global.set $~argumentsLength + (i32.const 2) + ) + (i32.load + (local.get $5) ) - ) - (global.set $~argumentsLength - (i32.const 2) - ) - (i32.load - (local.get $comparator) ) ) ) @@ -26769,40 +26973,45 @@ ) (then (i32.shr_u - (call_indirect (type $0) - (call $~lib/rt/__tmptostack - (i32.load offset=4 - (i32.add - (local.get $ptr) - (i32.shl - (local.get $j) - (i32.const 2) + (block (result i32) + (local.set $6 + (local.get $comparator) + ) + (call_indirect (type $0) + (call $~lib/rt/__tmptostack + (i32.load offset=4 + (i32.add + (local.get $ptr) + (i32.shl + (local.get $j) + (i32.const 2) + ) ) ) ) - ) - (call $~lib/rt/__tmptostack - (i32.load - (i32.add - (local.get $ptr) - (i32.shl - (local.get $j) - (i32.const 2) + (call $~lib/rt/__tmptostack + (i32.load + (i32.add + (local.get $ptr) + (i32.shl + (local.get $j) + (i32.const 2) + ) ) ) ) - ) - (block (result i32) - (call $~lib/rt/closure/setClosureEnv - (i32.load offset=4 - (local.get $comparator) + (block (result i32) + (call $~lib/rt/closure/setClosureEnv + (i32.load offset=4 + (local.get $6) + ) + ) + (global.set $~argumentsLength + (i32.const 2) + ) + (i32.load + (local.get $6) ) - ) - (global.set $~argumentsLength - (i32.const 2) - ) - (i32.load - (local.get $comparator) ) ) ) @@ -26906,40 +27115,45 @@ ) (then (i32.ge_s - (call_indirect (type $0) - (call $~lib/rt/__tmptostack - (i32.load offset=4 - (i32.add - (local.get $ptr) - (i32.shl - (local.get $j) - (i32.const 2) + (block (result i32) + (local.set $9 + (local.get $comparator) + ) + (call_indirect (type $0) + (call $~lib/rt/__tmptostack + (i32.load offset=4 + (i32.add + (local.get $ptr) + (i32.shl + (local.get $j) + (i32.const 2) + ) ) ) ) - ) - (call $~lib/rt/__tmptostack - (i32.load - (i32.add - (local.get $ptr) - (i32.shl - (local.get $j) - (i32.const 2) + (call $~lib/rt/__tmptostack + (i32.load + (i32.add + (local.get $ptr) + (i32.shl + (local.get $j) + (i32.const 2) + ) ) ) ) - ) - (block (result i32) - (call $~lib/rt/closure/setClosureEnv - (i32.load offset=4 - (local.get $comparator) + (block (result i32) + (call $~lib/rt/closure/setClosureEnv + (i32.load offset=4 + (local.get $9) + ) + ) + (global.set $~argumentsLength + (i32.const 2) + ) + (i32.load + (local.get $9) ) - ) - (global.set $~argumentsLength - (i32.const 2) - ) - (i32.load - (local.get $comparator) ) ) ) @@ -27919,6 +28133,7 @@ (func $std/array/isSorted<~lib/string/String> (param $data i32) (param $comparator i32) (result i32) (local $i i32) (local $len i32) + (local $4 i32) (block (local.set $i (i32.const 1) @@ -27940,37 +28155,42 @@ (then (if (i32.gt_s - (call_indirect (type $0) - (call $~lib/rt/__tmptostack - (call $~lib/array/Array<~lib/string/String>#__get - (call $~lib/rt/__tmptostack - (local.get $data) + (block (result i32) + (local.set $4 + (local.get $comparator) + ) + (call_indirect (type $0) + (call $~lib/rt/__tmptostack + (call $~lib/array/Array<~lib/string/String>#__get + (call $~lib/rt/__tmptostack + (local.get $data) + ) + (i32.sub + (local.get $i) + (i32.const 1) + ) ) - (i32.sub + ) + (call $~lib/rt/__tmptostack + (call $~lib/array/Array<~lib/string/String>#__get + (call $~lib/rt/__tmptostack + (local.get $data) + ) (local.get $i) - (i32.const 1) ) ) - ) - (call $~lib/rt/__tmptostack - (call $~lib/array/Array<~lib/string/String>#__get - (call $~lib/rt/__tmptostack - (local.get $data) + (block (result i32) + (call $~lib/rt/closure/setClosureEnv + (i32.load offset=4 + (local.get $4) + ) ) - (local.get $i) - ) - ) - (block (result i32) - (call $~lib/rt/closure/setClosureEnv - (i32.load offset=4 - (local.get $comparator) + (global.set $~argumentsLength + (i32.const 2) + ) + (i32.load + (local.get $4) ) - ) - (global.set $~argumentsLength - (i32.const 2) - ) - (i32.load - (local.get $comparator) ) ) ) diff --git a/tests/frontend/compiler/std/staticarray.wat b/tests/frontend/compiler/std/staticarray.wat index b6fa28af..413d373d 100644 --- a/tests/frontend/compiler/std/staticarray.wat +++ b/tests/frontend/compiler/std/staticarray.wat @@ -6181,6 +6181,7 @@ (func $~lib/staticarray/StaticArray#forEach (param $this i32) (param $fn i32) (local $i i32) (local $len i32) + (local $4 i32) (block (local.set $i (i32.const 0) @@ -6200,6 +6201,9 @@ (local.get $len) ) (then + (local.set $4 + (local.get $fn) + ) (call_indirect (type $4) (i32.load (i32.add @@ -6217,14 +6221,14 @@ (block (result i32) (call $~lib/rt/closure/setClosureEnv (i32.load offset=4 - (local.get $fn) + (local.get $4) ) ) (global.set $~argumentsLength (i32.const 3) ) (i32.load - (local.get $fn) + (local.get $4) ) ) ) @@ -7047,6 +7051,7 @@ ) (func $~lib/staticarray/StaticArray#findLastIndex (param $this i32) (param $fn i32) (result i32) (local $i i32) + (local $3 i32) (local.set $i (i32.sub (call $~lib/staticarray/StaticArray#get:length @@ -7065,31 +7070,36 @@ ) (then (if - (call_indirect (type $3) - (i32.load - (i32.add - (local.get $this) - (i32.shl - (local.get $i) - (i32.const 2) - ) - ) - ) - (local.get $i) - (call $~lib/rt/__tmptostack - (local.get $this) + (block (result i32) + (local.set $3 + (local.get $fn) ) - (block (result i32) - (call $~lib/rt/closure/setClosureEnv - (i32.load offset=4 - (local.get $fn) + (call_indirect (type $3) + (i32.load + (i32.add + (local.get $this) + (i32.shl + (local.get $i) + (i32.const 2) + ) ) ) - (global.set $~argumentsLength - (i32.const 3) + (local.get $i) + (call $~lib/rt/__tmptostack + (local.get $this) ) - (i32.load - (local.get $fn) + (block (result i32) + (call $~lib/rt/closure/setClosureEnv + (i32.load offset=4 + (local.get $3) + ) + ) + (global.set $~argumentsLength + (i32.const 3) + ) + (i32.load + (local.get $3) + ) ) ) ) @@ -7419,8 +7429,11 @@ ) (func $~lib/util/sort/extendRunRight (param $ptr i32) (param $i i32) (param $right i32) (param $comparator i32) (result i32) (local $j i32) + (local $5 i32) + (local $6 i32) (local $k i32) (local $tmp i32) + (local $9 i32) (if (i32.eq (local.get $i) @@ -7437,41 +7450,46 @@ ) (if (i32.gt_s - (call_indirect (type $2) - (i32.load - (i32.add - (local.get $ptr) - (i32.shl - (local.get $j) - (i32.const 2) + (block (result i32) + (local.set $5 + (local.get $comparator) + ) + (call_indirect (type $2) + (i32.load + (i32.add + (local.get $ptr) + (i32.shl + (local.get $j) + (i32.const 2) + ) ) ) - ) - (i32.load - (i32.add - (local.get $ptr) - (i32.shl - (local.tee $j - (i32.add - (local.get $j) - (i32.const 1) + (i32.load + (i32.add + (local.get $ptr) + (i32.shl + (local.tee $j + (i32.add + (local.get $j) + (i32.const 1) + ) ) + (i32.const 2) ) - (i32.const 2) ) ) - ) - (block (result i32) - (call $~lib/rt/closure/setClosureEnv - (i32.load offset=4 - (local.get $comparator) + (block (result i32) + (call $~lib/rt/closure/setClosureEnv + (i32.load offset=4 + (local.get $5) + ) + ) + (global.set $~argumentsLength + (i32.const 2) + ) + (i32.load + (local.get $5) ) - ) - (global.set $~argumentsLength - (i32.const 2) - ) - (i32.load - (local.get $comparator) ) ) ) @@ -7488,36 +7506,41 @@ ) (then (i32.shr_u - (call_indirect (type $2) - (i32.load offset=4 - (i32.add - (local.get $ptr) - (i32.shl - (local.get $j) - (i32.const 2) - ) - ) + (block (result i32) + (local.set $6 + (local.get $comparator) ) - (i32.load - (i32.add - (local.get $ptr) - (i32.shl - (local.get $j) - (i32.const 2) + (call_indirect (type $2) + (i32.load offset=4 + (i32.add + (local.get $ptr) + (i32.shl + (local.get $j) + (i32.const 2) + ) ) ) - ) - (block (result i32) - (call $~lib/rt/closure/setClosureEnv - (i32.load offset=4 - (local.get $comparator) + (i32.load + (i32.add + (local.get $ptr) + (i32.shl + (local.get $j) + (i32.const 2) + ) ) ) - (global.set $~argumentsLength - (i32.const 2) - ) - (i32.load - (local.get $comparator) + (block (result i32) + (call $~lib/rt/closure/setClosureEnv + (i32.load offset=4 + (local.get $6) + ) + ) + (global.set $~argumentsLength + (i32.const 2) + ) + (i32.load + (local.get $6) + ) ) ) ) @@ -7619,36 +7642,41 @@ ) (then (i32.ge_s - (call_indirect (type $2) - (i32.load offset=4 - (i32.add - (local.get $ptr) - (i32.shl - (local.get $j) - (i32.const 2) - ) - ) + (block (result i32) + (local.set $9 + (local.get $comparator) ) - (i32.load - (i32.add - (local.get $ptr) - (i32.shl - (local.get $j) - (i32.const 2) + (call_indirect (type $2) + (i32.load offset=4 + (i32.add + (local.get $ptr) + (i32.shl + (local.get $j) + (i32.const 2) + ) ) ) - ) - (block (result i32) - (call $~lib/rt/closure/setClosureEnv - (i32.load offset=4 - (local.get $comparator) + (i32.load + (i32.add + (local.get $ptr) + (i32.shl + (local.get $j) + (i32.const 2) + ) ) ) - (global.set $~argumentsLength - (i32.const 2) - ) - (i32.load - (local.get $comparator) + (block (result i32) + (call $~lib/rt/closure/setClosureEnv + (i32.load offset=4 + (local.get $9) + ) + ) + (global.set $~argumentsLength + (i32.const 2) + ) + (i32.load + (local.get $9) + ) ) ) ) diff --git a/tests/frontend/compiler/std/typedarray.wat b/tests/frontend/compiler/std/typedarray.wat index 1968dfe8..300c86ee 100644 --- a/tests/frontend/compiler/std/typedarray.wat +++ b/tests/frontend/compiler/std/typedarray.wat @@ -5435,8 +5435,11 @@ ) (func $~lib/util/sort/extendRunRight (param $ptr i32) (param $i i32) (param $right i32) (param $comparator i32) (result i32) (local $j i32) + (local $5 i32) + (local $6 i32) (local $k i32) (local $tmp f64) + (local $9 i32) (if (i32.eq (local.get $i) @@ -5453,41 +5456,46 @@ ) (if (i32.gt_s - (call_indirect (type $13) - (f64.load - (i32.add - (local.get $ptr) - (i32.shl - (local.get $j) - (i32.const 3) + (block (result i32) + (local.set $5 + (local.get $comparator) + ) + (call_indirect (type $13) + (f64.load + (i32.add + (local.get $ptr) + (i32.shl + (local.get $j) + (i32.const 3) + ) ) ) - ) - (f64.load - (i32.add - (local.get $ptr) - (i32.shl - (local.tee $j - (i32.add - (local.get $j) - (i32.const 1) + (f64.load + (i32.add + (local.get $ptr) + (i32.shl + (local.tee $j + (i32.add + (local.get $j) + (i32.const 1) + ) ) + (i32.const 3) ) - (i32.const 3) ) ) - ) - (block (result i32) - (call $~lib/rt/closure/setClosureEnv - (i32.load offset=4 - (local.get $comparator) + (block (result i32) + (call $~lib/rt/closure/setClosureEnv + (i32.load offset=4 + (local.get $5) + ) + ) + (global.set $~argumentsLength + (i32.const 2) + ) + (i32.load + (local.get $5) ) - ) - (global.set $~argumentsLength - (i32.const 2) - ) - (i32.load - (local.get $comparator) ) ) ) @@ -5504,36 +5512,41 @@ ) (then (i32.shr_u - (call_indirect (type $13) - (f64.load offset=8 - (i32.add - (local.get $ptr) - (i32.shl - (local.get $j) - (i32.const 3) - ) - ) + (block (result i32) + (local.set $6 + (local.get $comparator) ) - (f64.load - (i32.add - (local.get $ptr) - (i32.shl - (local.get $j) - (i32.const 3) + (call_indirect (type $13) + (f64.load offset=8 + (i32.add + (local.get $ptr) + (i32.shl + (local.get $j) + (i32.const 3) + ) ) ) - ) - (block (result i32) - (call $~lib/rt/closure/setClosureEnv - (i32.load offset=4 - (local.get $comparator) + (f64.load + (i32.add + (local.get $ptr) + (i32.shl + (local.get $j) + (i32.const 3) + ) ) ) - (global.set $~argumentsLength - (i32.const 2) - ) - (i32.load - (local.get $comparator) + (block (result i32) + (call $~lib/rt/closure/setClosureEnv + (i32.load offset=4 + (local.get $6) + ) + ) + (global.set $~argumentsLength + (i32.const 2) + ) + (i32.load + (local.get $6) + ) ) ) ) @@ -5635,36 +5648,41 @@ ) (then (i32.ge_s - (call_indirect (type $13) - (f64.load offset=8 - (i32.add - (local.get $ptr) - (i32.shl - (local.get $j) - (i32.const 3) - ) - ) + (block (result i32) + (local.set $9 + (local.get $comparator) ) - (f64.load - (i32.add - (local.get $ptr) - (i32.shl - (local.get $j) - (i32.const 3) + (call_indirect (type $13) + (f64.load offset=8 + (i32.add + (local.get $ptr) + (i32.shl + (local.get $j) + (i32.const 3) + ) ) ) - ) - (block (result i32) - (call $~lib/rt/closure/setClosureEnv - (i32.load offset=4 - (local.get $comparator) + (f64.load + (i32.add + (local.get $ptr) + (i32.shl + (local.get $j) + (i32.const 3) + ) ) ) - (global.set $~argumentsLength - (i32.const 2) - ) - (i32.load - (local.get $comparator) + (block (result i32) + (call $~lib/rt/closure/setClosureEnv + (i32.load offset=4 + (local.get $9) + ) + ) + (global.set $~argumentsLength + (i32.const 2) + ) + (i32.load + (local.get $9) + ) ) ) ) @@ -8257,6 +8275,7 @@ (local $ptr i32) (local $i i32) (local $k i32) + (local $6 i32) (local.set $ptr (call $~lib/arraybuffer/ArrayBufferView#get:dataStart (call $~lib/rt/__tmptostack @@ -8284,32 +8303,37 @@ ) (then (local.set $initialValue - (call_indirect (type $6) - (local.get $initialValue) - (i32.load8_s - (i32.add - (local.get $ptr) - (i32.shl - (local.get $i) - (i32.const 0) - ) - ) - ) - (local.get $i) - (call $~lib/rt/__tmptostack - (local.get $array) + (block (result i32) + (local.set $6 + (local.get $fn) ) - (block (result i32) - (call $~lib/rt/closure/setClosureEnv - (i32.load offset=4 - (local.get $fn) + (call_indirect (type $6) + (local.get $initialValue) + (i32.load8_s + (i32.add + (local.get $ptr) + (i32.shl + (local.get $i) + (i32.const 0) + ) ) ) - (global.set $~argumentsLength - (i32.const 4) + (local.get $i) + (call $~lib/rt/__tmptostack + (local.get $array) ) - (i32.load - (local.get $fn) + (block (result i32) + (call $~lib/rt/closure/setClosureEnv + (i32.load offset=4 + (local.get $6) + ) + ) + (global.set $~argumentsLength + (i32.const 4) + ) + (i32.load + (local.get $6) + ) ) ) ) @@ -8451,6 +8475,7 @@ (local $ptr i32) (local $i i32) (local $k i32) + (local $6 i32) (local.set $ptr (call $~lib/arraybuffer/ArrayBufferView#get:dataStart (call $~lib/rt/__tmptostack @@ -8478,32 +8503,37 @@ ) (then (local.set $initialValue - (call_indirect (type $6) - (local.get $initialValue) - (i32.load8_u - (i32.add - (local.get $ptr) - (i32.shl - (local.get $i) - (i32.const 0) - ) - ) - ) - (local.get $i) - (call $~lib/rt/__tmptostack - (local.get $array) + (block (result i32) + (local.set $6 + (local.get $fn) ) - (block (result i32) - (call $~lib/rt/closure/setClosureEnv - (i32.load offset=4 - (local.get $fn) + (call_indirect (type $6) + (local.get $initialValue) + (i32.load8_u + (i32.add + (local.get $ptr) + (i32.shl + (local.get $i) + (i32.const 0) + ) ) ) - (global.set $~argumentsLength - (i32.const 4) + (local.get $i) + (call $~lib/rt/__tmptostack + (local.get $array) ) - (i32.load - (local.get $fn) + (block (result i32) + (call $~lib/rt/closure/setClosureEnv + (i32.load offset=4 + (local.get $6) + ) + ) + (global.set $~argumentsLength + (i32.const 4) + ) + (i32.load + (local.get $6) + ) ) ) ) @@ -8614,6 +8644,7 @@ (local $ptr i32) (local $i i32) (local $k i32) + (local $6 i32) (local.set $ptr (call $~lib/arraybuffer/ArrayBufferView#get:dataStart (call $~lib/rt/__tmptostack @@ -8641,32 +8672,37 @@ ) (then (local.set $initialValue - (call_indirect (type $6) - (local.get $initialValue) - (i32.load8_u - (i32.add - (local.get $ptr) - (i32.shl - (local.get $i) - (i32.const 0) - ) - ) - ) - (local.get $i) - (call $~lib/rt/__tmptostack - (local.get $array) + (block (result i32) + (local.set $6 + (local.get $fn) ) - (block (result i32) - (call $~lib/rt/closure/setClosureEnv - (i32.load offset=4 - (local.get $fn) + (call_indirect (type $6) + (local.get $initialValue) + (i32.load8_u + (i32.add + (local.get $ptr) + (i32.shl + (local.get $i) + (i32.const 0) + ) ) ) - (global.set $~argumentsLength - (i32.const 4) + (local.get $i) + (call $~lib/rt/__tmptostack + (local.get $array) ) - (i32.load - (local.get $fn) + (block (result i32) + (call $~lib/rt/closure/setClosureEnv + (i32.load offset=4 + (local.get $6) + ) + ) + (global.set $~argumentsLength + (i32.const 4) + ) + (i32.load + (local.get $6) + ) ) ) ) @@ -8815,6 +8851,7 @@ (local $ptr i32) (local $i i32) (local $k i32) + (local $6 i32) (local.set $ptr (call $~lib/arraybuffer/ArrayBufferView#get:dataStart (call $~lib/rt/__tmptostack @@ -8842,32 +8879,37 @@ ) (then (local.set $initialValue - (call_indirect (type $6) - (local.get $initialValue) - (i32.load16_s - (i32.add - (local.get $ptr) - (i32.shl - (local.get $i) - (i32.const 1) - ) - ) - ) - (local.get $i) - (call $~lib/rt/__tmptostack - (local.get $array) + (block (result i32) + (local.set $6 + (local.get $fn) ) - (block (result i32) - (call $~lib/rt/closure/setClosureEnv - (i32.load offset=4 - (local.get $fn) + (call_indirect (type $6) + (local.get $initialValue) + (i32.load16_s + (i32.add + (local.get $ptr) + (i32.shl + (local.get $i) + (i32.const 1) + ) ) ) - (global.set $~argumentsLength - (i32.const 4) + (local.get $i) + (call $~lib/rt/__tmptostack + (local.get $array) ) - (i32.load - (local.get $fn) + (block (result i32) + (call $~lib/rt/closure/setClosureEnv + (i32.load offset=4 + (local.get $6) + ) + ) + (global.set $~argumentsLength + (i32.const 4) + ) + (i32.load + (local.get $6) + ) ) ) ) @@ -9015,6 +9057,7 @@ (local $ptr i32) (local $i i32) (local $k i32) + (local $6 i32) (local.set $ptr (call $~lib/arraybuffer/ArrayBufferView#get:dataStart (call $~lib/rt/__tmptostack @@ -9042,32 +9085,37 @@ ) (then (local.set $initialValue - (call_indirect (type $6) - (local.get $initialValue) - (i32.load16_u - (i32.add - (local.get $ptr) - (i32.shl - (local.get $i) - (i32.const 1) - ) - ) - ) - (local.get $i) - (call $~lib/rt/__tmptostack - (local.get $array) + (block (result i32) + (local.set $6 + (local.get $fn) ) - (block (result i32) - (call $~lib/rt/closure/setClosureEnv - (i32.load offset=4 - (local.get $fn) + (call_indirect (type $6) + (local.get $initialValue) + (i32.load16_u + (i32.add + (local.get $ptr) + (i32.shl + (local.get $i) + (i32.const 1) + ) ) ) - (global.set $~argumentsLength - (i32.const 4) + (local.get $i) + (call $~lib/rt/__tmptostack + (local.get $array) ) - (i32.load - (local.get $fn) + (block (result i32) + (call $~lib/rt/closure/setClosureEnv + (i32.load offset=4 + (local.get $6) + ) + ) + (global.set $~argumentsLength + (i32.const 4) + ) + (i32.load + (local.get $6) + ) ) ) ) @@ -9178,6 +9226,7 @@ (local $ptr i32) (local $i i32) (local $k i32) + (local $6 i32) (local.set $ptr (call $~lib/arraybuffer/ArrayBufferView#get:dataStart (call $~lib/rt/__tmptostack @@ -9205,32 +9254,37 @@ ) (then (local.set $initialValue - (call_indirect (type $6) - (local.get $initialValue) - (i32.load - (i32.add - (local.get $ptr) - (i32.shl - (local.get $i) - (i32.const 2) - ) - ) - ) - (local.get $i) - (call $~lib/rt/__tmptostack - (local.get $array) + (block (result i32) + (local.set $6 + (local.get $fn) ) - (block (result i32) - (call $~lib/rt/closure/setClosureEnv - (i32.load offset=4 - (local.get $fn) + (call_indirect (type $6) + (local.get $initialValue) + (i32.load + (i32.add + (local.get $ptr) + (i32.shl + (local.get $i) + (i32.const 2) + ) ) ) - (global.set $~argumentsLength - (i32.const 4) + (local.get $i) + (call $~lib/rt/__tmptostack + (local.get $array) ) - (i32.load - (local.get $fn) + (block (result i32) + (call $~lib/rt/closure/setClosureEnv + (i32.load offset=4 + (local.get $6) + ) + ) + (global.set $~argumentsLength + (i32.const 4) + ) + (i32.load + (local.get $6) + ) ) ) ) @@ -9376,6 +9430,7 @@ (local $ptr i32) (local $i i32) (local $k i32) + (local $6 i32) (local.set $ptr (call $~lib/arraybuffer/ArrayBufferView#get:dataStart (call $~lib/rt/__tmptostack @@ -9403,32 +9458,37 @@ ) (then (local.set $initialValue - (call_indirect (type $6) - (local.get $initialValue) - (i32.load - (i32.add - (local.get $ptr) - (i32.shl - (local.get $i) - (i32.const 2) - ) - ) - ) - (local.get $i) - (call $~lib/rt/__tmptostack - (local.get $array) + (block (result i32) + (local.set $6 + (local.get $fn) ) - (block (result i32) - (call $~lib/rt/closure/setClosureEnv - (i32.load offset=4 - (local.get $fn) + (call_indirect (type $6) + (local.get $initialValue) + (i32.load + (i32.add + (local.get $ptr) + (i32.shl + (local.get $i) + (i32.const 2) + ) ) ) - (global.set $~argumentsLength - (i32.const 4) + (local.get $i) + (call $~lib/rt/__tmptostack + (local.get $array) ) - (i32.load - (local.get $fn) + (block (result i32) + (call $~lib/rt/closure/setClosureEnv + (i32.load offset=4 + (local.get $6) + ) + ) + (global.set $~argumentsLength + (i32.const 4) + ) + (i32.load + (local.get $6) + ) ) ) ) @@ -9574,6 +9634,7 @@ (local $ptr i32) (local $i i32) (local $k i32) + (local $6 i32) (local.set $ptr (call $~lib/arraybuffer/ArrayBufferView#get:dataStart (call $~lib/rt/__tmptostack @@ -9601,32 +9662,37 @@ ) (then (local.set $initialValue - (call_indirect (type $19) - (local.get $initialValue) - (i64.load - (i32.add - (local.get $ptr) - (i32.shl - (local.get $i) - (i32.const 3) - ) - ) - ) - (local.get $i) - (call $~lib/rt/__tmptostack - (local.get $array) + (block (result i64) + (local.set $6 + (local.get $fn) ) - (block (result i32) - (call $~lib/rt/closure/setClosureEnv - (i32.load offset=4 - (local.get $fn) + (call_indirect (type $19) + (local.get $initialValue) + (i64.load + (i32.add + (local.get $ptr) + (i32.shl + (local.get $i) + (i32.const 3) + ) ) ) - (global.set $~argumentsLength - (i32.const 4) + (local.get $i) + (call $~lib/rt/__tmptostack + (local.get $array) ) - (i32.load - (local.get $fn) + (block (result i32) + (call $~lib/rt/closure/setClosureEnv + (i32.load offset=4 + (local.get $6) + ) + ) + (global.set $~argumentsLength + (i32.const 4) + ) + (i32.load + (local.get $6) + ) ) ) ) @@ -9772,6 +9838,7 @@ (local $ptr i32) (local $i i32) (local $k i32) + (local $6 i32) (local.set $ptr (call $~lib/arraybuffer/ArrayBufferView#get:dataStart (call $~lib/rt/__tmptostack @@ -9799,32 +9866,37 @@ ) (then (local.set $initialValue - (call_indirect (type $19) - (local.get $initialValue) - (i64.load - (i32.add - (local.get $ptr) - (i32.shl - (local.get $i) - (i32.const 3) - ) - ) - ) - (local.get $i) - (call $~lib/rt/__tmptostack - (local.get $array) + (block (result i64) + (local.set $6 + (local.get $fn) ) - (block (result i32) - (call $~lib/rt/closure/setClosureEnv - (i32.load offset=4 - (local.get $fn) + (call_indirect (type $19) + (local.get $initialValue) + (i64.load + (i32.add + (local.get $ptr) + (i32.shl + (local.get $i) + (i32.const 3) + ) ) ) - (global.set $~argumentsLength - (i32.const 4) + (local.get $i) + (call $~lib/rt/__tmptostack + (local.get $array) ) - (i32.load - (local.get $fn) + (block (result i32) + (call $~lib/rt/closure/setClosureEnv + (i32.load offset=4 + (local.get $6) + ) + ) + (global.set $~argumentsLength + (i32.const 4) + ) + (i32.load + (local.get $6) + ) ) ) ) @@ -9970,6 +10042,7 @@ (local $ptr i32) (local $i i32) (local $k i32) + (local $6 i32) (local.set $ptr (call $~lib/arraybuffer/ArrayBufferView#get:dataStart (call $~lib/rt/__tmptostack @@ -9997,32 +10070,37 @@ ) (then (local.set $initialValue - (call_indirect (type $25) - (local.get $initialValue) - (f32.load - (i32.add - (local.get $ptr) - (i32.shl - (local.get $i) - (i32.const 2) - ) - ) - ) - (local.get $i) - (call $~lib/rt/__tmptostack - (local.get $array) + (block (result f32) + (local.set $6 + (local.get $fn) ) - (block (result i32) - (call $~lib/rt/closure/setClosureEnv - (i32.load offset=4 - (local.get $fn) + (call_indirect (type $25) + (local.get $initialValue) + (f32.load + (i32.add + (local.get $ptr) + (i32.shl + (local.get $i) + (i32.const 2) + ) ) ) - (global.set $~argumentsLength - (i32.const 4) + (local.get $i) + (call $~lib/rt/__tmptostack + (local.get $array) ) - (i32.load - (local.get $fn) + (block (result i32) + (call $~lib/rt/closure/setClosureEnv + (i32.load offset=4 + (local.get $6) + ) + ) + (global.set $~argumentsLength + (i32.const 4) + ) + (i32.load + (local.get $6) + ) ) ) ) @@ -10130,6 +10208,7 @@ (local $ptr i32) (local $i i32) (local $k i32) + (local $6 i32) (local.set $ptr (call $~lib/arraybuffer/ArrayBufferView#get:dataStart (call $~lib/rt/__tmptostack @@ -10157,32 +10236,37 @@ ) (then (local.set $initialValue - (call_indirect (type $27) - (local.get $initialValue) - (f64.load - (i32.add - (local.get $ptr) - (i32.shl - (local.get $i) - (i32.const 3) - ) - ) - ) - (local.get $i) - (call $~lib/rt/__tmptostack - (local.get $array) + (block (result f64) + (local.set $6 + (local.get $fn) ) - (block (result i32) - (call $~lib/rt/closure/setClosureEnv - (i32.load offset=4 - (local.get $fn) + (call_indirect (type $27) + (local.get $initialValue) + (f64.load + (i32.add + (local.get $ptr) + (i32.shl + (local.get $i) + (i32.const 3) + ) ) ) - (global.set $~argumentsLength - (i32.const 4) + (local.get $i) + (call $~lib/rt/__tmptostack + (local.get $array) ) - (i32.load - (local.get $fn) + (block (result i32) + (call $~lib/rt/closure/setClosureEnv + (i32.load offset=4 + (local.get $6) + ) + ) + (global.set $~argumentsLength + (i32.const 4) + ) + (i32.load + (local.get $6) + ) ) ) ) @@ -12020,6 +12104,7 @@ (func $"~lib/typedarray/REDUCE_RIGHT<~lib/typedarray/Int8Array,i8,i8>" (param $array i32) (param $fn i32) (param $initialValue i32) (result i32) (local $ptr i32) (local $i i32) + (local $5 i32) (local.set $ptr (call $~lib/arraybuffer/ArrayBufferView#get:dataStart (call $~lib/rt/__tmptostack @@ -12045,32 +12130,37 @@ ) (then (local.set $initialValue - (call_indirect (type $6) - (local.get $initialValue) - (i32.load8_s - (i32.add - (local.get $ptr) - (i32.shl - (local.get $i) - (i32.const 0) - ) - ) - ) - (local.get $i) - (call $~lib/rt/__tmptostack - (local.get $array) + (block (result i32) + (local.set $5 + (local.get $fn) ) - (block (result i32) - (call $~lib/rt/closure/setClosureEnv - (i32.load offset=4 - (local.get $fn) + (call_indirect (type $6) + (local.get $initialValue) + (i32.load8_s + (i32.add + (local.get $ptr) + (i32.shl + (local.get $i) + (i32.const 0) + ) ) ) - (global.set $~argumentsLength - (i32.const 4) + (local.get $i) + (call $~lib/rt/__tmptostack + (local.get $array) ) - (i32.load - (local.get $fn) + (block (result i32) + (call $~lib/rt/closure/setClosureEnv + (i32.load offset=4 + (local.get $5) + ) + ) + (global.set $~argumentsLength + (i32.const 4) + ) + (i32.load + (local.get $5) + ) ) ) ) @@ -12179,6 +12269,7 @@ (func $"~lib/typedarray/REDUCE_RIGHT<~lib/typedarray/Uint8Array,u8,u8>" (param $array i32) (param $fn i32) (param $initialValue i32) (result i32) (local $ptr i32) (local $i i32) + (local $5 i32) (local.set $ptr (call $~lib/arraybuffer/ArrayBufferView#get:dataStart (call $~lib/rt/__tmptostack @@ -12204,32 +12295,37 @@ ) (then (local.set $initialValue - (call_indirect (type $6) - (local.get $initialValue) - (i32.load8_u - (i32.add - (local.get $ptr) - (i32.shl - (local.get $i) - (i32.const 0) - ) - ) - ) - (local.get $i) - (call $~lib/rt/__tmptostack - (local.get $array) + (block (result i32) + (local.set $5 + (local.get $fn) ) - (block (result i32) - (call $~lib/rt/closure/setClosureEnv - (i32.load offset=4 - (local.get $fn) + (call_indirect (type $6) + (local.get $initialValue) + (i32.load8_u + (i32.add + (local.get $ptr) + (i32.shl + (local.get $i) + (i32.const 0) + ) ) ) - (global.set $~argumentsLength - (i32.const 4) + (local.get $i) + (call $~lib/rt/__tmptostack + (local.get $array) ) - (i32.load - (local.get $fn) + (block (result i32) + (call $~lib/rt/closure/setClosureEnv + (i32.load offset=4 + (local.get $5) + ) + ) + (global.set $~argumentsLength + (i32.const 4) + ) + (i32.load + (local.get $5) + ) ) ) ) @@ -12339,6 +12435,7 @@ (func $"~lib/typedarray/REDUCE_RIGHT<~lib/typedarray/Uint8ClampedArray,u8,u8>" (param $array i32) (param $fn i32) (param $initialValue i32) (result i32) (local $ptr i32) (local $i i32) + (local $5 i32) (local.set $ptr (call $~lib/arraybuffer/ArrayBufferView#get:dataStart (call $~lib/rt/__tmptostack @@ -12364,32 +12461,37 @@ ) (then (local.set $initialValue - (call_indirect (type $6) - (local.get $initialValue) - (i32.load8_u - (i32.add - (local.get $ptr) - (i32.shl - (local.get $i) - (i32.const 0) - ) - ) - ) - (local.get $i) - (call $~lib/rt/__tmptostack - (local.get $array) + (block (result i32) + (local.set $5 + (local.get $fn) ) - (block (result i32) - (call $~lib/rt/closure/setClosureEnv - (i32.load offset=4 - (local.get $fn) + (call_indirect (type $6) + (local.get $initialValue) + (i32.load8_u + (i32.add + (local.get $ptr) + (i32.shl + (local.get $i) + (i32.const 0) + ) ) ) - (global.set $~argumentsLength - (i32.const 4) + (local.get $i) + (call $~lib/rt/__tmptostack + (local.get $array) ) - (i32.load - (local.get $fn) + (block (result i32) + (call $~lib/rt/closure/setClosureEnv + (i32.load offset=4 + (local.get $5) + ) + ) + (global.set $~argumentsLength + (i32.const 4) + ) + (i32.load + (local.get $5) + ) ) ) ) @@ -12499,6 +12601,7 @@ (func $"~lib/typedarray/REDUCE_RIGHT<~lib/typedarray/Int16Array,i16,i16>" (param $array i32) (param $fn i32) (param $initialValue i32) (result i32) (local $ptr i32) (local $i i32) + (local $5 i32) (local.set $ptr (call $~lib/arraybuffer/ArrayBufferView#get:dataStart (call $~lib/rt/__tmptostack @@ -12524,32 +12627,37 @@ ) (then (local.set $initialValue - (call_indirect (type $6) - (local.get $initialValue) - (i32.load16_s - (i32.add - (local.get $ptr) - (i32.shl - (local.get $i) - (i32.const 1) - ) - ) - ) - (local.get $i) - (call $~lib/rt/__tmptostack - (local.get $array) + (block (result i32) + (local.set $5 + (local.get $fn) ) - (block (result i32) - (call $~lib/rt/closure/setClosureEnv - (i32.load offset=4 - (local.get $fn) + (call_indirect (type $6) + (local.get $initialValue) + (i32.load16_s + (i32.add + (local.get $ptr) + (i32.shl + (local.get $i) + (i32.const 1) + ) ) ) - (global.set $~argumentsLength - (i32.const 4) + (local.get $i) + (call $~lib/rt/__tmptostack + (local.get $array) ) - (i32.load - (local.get $fn) + (block (result i32) + (call $~lib/rt/closure/setClosureEnv + (i32.load offset=4 + (local.get $5) + ) + ) + (global.set $~argumentsLength + (i32.const 4) + ) + (i32.load + (local.get $5) + ) ) ) ) @@ -12658,6 +12766,7 @@ (func $"~lib/typedarray/REDUCE_RIGHT<~lib/typedarray/Uint16Array,u16,u16>" (param $array i32) (param $fn i32) (param $initialValue i32) (result i32) (local $ptr i32) (local $i i32) + (local $5 i32) (local.set $ptr (call $~lib/arraybuffer/ArrayBufferView#get:dataStart (call $~lib/rt/__tmptostack @@ -12683,32 +12792,37 @@ ) (then (local.set $initialValue - (call_indirect (type $6) - (local.get $initialValue) - (i32.load16_u - (i32.add - (local.get $ptr) - (i32.shl - (local.get $i) - (i32.const 1) - ) - ) - ) - (local.get $i) - (call $~lib/rt/__tmptostack - (local.get $array) + (block (result i32) + (local.set $5 + (local.get $fn) ) - (block (result i32) - (call $~lib/rt/closure/setClosureEnv - (i32.load offset=4 - (local.get $fn) + (call_indirect (type $6) + (local.get $initialValue) + (i32.load16_u + (i32.add + (local.get $ptr) + (i32.shl + (local.get $i) + (i32.const 1) + ) ) ) - (global.set $~argumentsLength - (i32.const 4) + (local.get $i) + (call $~lib/rt/__tmptostack + (local.get $array) ) - (i32.load - (local.get $fn) + (block (result i32) + (call $~lib/rt/closure/setClosureEnv + (i32.load offset=4 + (local.get $5) + ) + ) + (global.set $~argumentsLength + (i32.const 4) + ) + (i32.load + (local.get $5) + ) ) ) ) @@ -12818,6 +12932,7 @@ (func $"~lib/typedarray/REDUCE_RIGHT<~lib/typedarray/Int32Array,i32,i32>" (param $array i32) (param $fn i32) (param $initialValue i32) (result i32) (local $ptr i32) (local $i i32) + (local $5 i32) (local.set $ptr (call $~lib/arraybuffer/ArrayBufferView#get:dataStart (call $~lib/rt/__tmptostack @@ -12843,32 +12958,37 @@ ) (then (local.set $initialValue - (call_indirect (type $6) - (local.get $initialValue) - (i32.load - (i32.add - (local.get $ptr) - (i32.shl - (local.get $i) - (i32.const 2) - ) - ) - ) - (local.get $i) - (call $~lib/rt/__tmptostack - (local.get $array) + (block (result i32) + (local.set $5 + (local.get $fn) ) - (block (result i32) - (call $~lib/rt/closure/setClosureEnv - (i32.load offset=4 - (local.get $fn) + (call_indirect (type $6) + (local.get $initialValue) + (i32.load + (i32.add + (local.get $ptr) + (i32.shl + (local.get $i) + (i32.const 2) + ) ) ) - (global.set $~argumentsLength - (i32.const 4) + (local.get $i) + (call $~lib/rt/__tmptostack + (local.get $array) ) - (i32.load - (local.get $fn) + (block (result i32) + (call $~lib/rt/closure/setClosureEnv + (i32.load offset=4 + (local.get $5) + ) + ) + (global.set $~argumentsLength + (i32.const 4) + ) + (i32.load + (local.get $5) + ) ) ) ) @@ -12975,6 +13095,7 @@ (func $"~lib/typedarray/REDUCE_RIGHT<~lib/typedarray/Uint32Array,u32,u32>" (param $array i32) (param $fn i32) (param $initialValue i32) (result i32) (local $ptr i32) (local $i i32) + (local $5 i32) (local.set $ptr (call $~lib/arraybuffer/ArrayBufferView#get:dataStart (call $~lib/rt/__tmptostack @@ -13000,32 +13121,37 @@ ) (then (local.set $initialValue - (call_indirect (type $6) - (local.get $initialValue) - (i32.load - (i32.add - (local.get $ptr) - (i32.shl - (local.get $i) - (i32.const 2) - ) - ) - ) - (local.get $i) - (call $~lib/rt/__tmptostack - (local.get $array) + (block (result i32) + (local.set $5 + (local.get $fn) ) - (block (result i32) - (call $~lib/rt/closure/setClosureEnv - (i32.load offset=4 - (local.get $fn) + (call_indirect (type $6) + (local.get $initialValue) + (i32.load + (i32.add + (local.get $ptr) + (i32.shl + (local.get $i) + (i32.const 2) + ) ) ) - (global.set $~argumentsLength - (i32.const 4) + (local.get $i) + (call $~lib/rt/__tmptostack + (local.get $array) ) - (i32.load - (local.get $fn) + (block (result i32) + (call $~lib/rt/closure/setClosureEnv + (i32.load offset=4 + (local.get $5) + ) + ) + (global.set $~argumentsLength + (i32.const 4) + ) + (i32.load + (local.get $5) + ) ) ) ) @@ -13132,6 +13258,7 @@ (func $"~lib/typedarray/REDUCE_RIGHT<~lib/typedarray/Int64Array,i64,i64>" (param $array i32) (param $fn i32) (param $initialValue i64) (result i64) (local $ptr i32) (local $i i32) + (local $5 i32) (local.set $ptr (call $~lib/arraybuffer/ArrayBufferView#get:dataStart (call $~lib/rt/__tmptostack @@ -13157,32 +13284,37 @@ ) (then (local.set $initialValue - (call_indirect (type $19) - (local.get $initialValue) - (i64.load - (i32.add - (local.get $ptr) - (i32.shl - (local.get $i) - (i32.const 3) - ) - ) - ) - (local.get $i) - (call $~lib/rt/__tmptostack - (local.get $array) + (block (result i64) + (local.set $5 + (local.get $fn) ) - (block (result i32) - (call $~lib/rt/closure/setClosureEnv - (i32.load offset=4 - (local.get $fn) + (call_indirect (type $19) + (local.get $initialValue) + (i64.load + (i32.add + (local.get $ptr) + (i32.shl + (local.get $i) + (i32.const 3) + ) ) ) - (global.set $~argumentsLength - (i32.const 4) + (local.get $i) + (call $~lib/rt/__tmptostack + (local.get $array) ) - (i32.load - (local.get $fn) + (block (result i32) + (call $~lib/rt/closure/setClosureEnv + (i32.load offset=4 + (local.get $5) + ) + ) + (global.set $~argumentsLength + (i32.const 4) + ) + (i32.load + (local.get $5) + ) ) ) ) @@ -13289,6 +13421,7 @@ (func $"~lib/typedarray/REDUCE_RIGHT<~lib/typedarray/Uint64Array,u64,u64>" (param $array i32) (param $fn i32) (param $initialValue i64) (result i64) (local $ptr i32) (local $i i32) + (local $5 i32) (local.set $ptr (call $~lib/arraybuffer/ArrayBufferView#get:dataStart (call $~lib/rt/__tmptostack @@ -13314,32 +13447,37 @@ ) (then (local.set $initialValue - (call_indirect (type $19) - (local.get $initialValue) - (i64.load - (i32.add - (local.get $ptr) - (i32.shl - (local.get $i) - (i32.const 3) - ) - ) - ) - (local.get $i) - (call $~lib/rt/__tmptostack - (local.get $array) + (block (result i64) + (local.set $5 + (local.get $fn) ) - (block (result i32) - (call $~lib/rt/closure/setClosureEnv - (i32.load offset=4 - (local.get $fn) + (call_indirect (type $19) + (local.get $initialValue) + (i64.load + (i32.add + (local.get $ptr) + (i32.shl + (local.get $i) + (i32.const 3) + ) ) ) - (global.set $~argumentsLength - (i32.const 4) + (local.get $i) + (call $~lib/rt/__tmptostack + (local.get $array) ) - (i32.load - (local.get $fn) + (block (result i32) + (call $~lib/rt/closure/setClosureEnv + (i32.load offset=4 + (local.get $5) + ) + ) + (global.set $~argumentsLength + (i32.const 4) + ) + (i32.load + (local.get $5) + ) ) ) ) @@ -13446,6 +13584,7 @@ (func $"~lib/typedarray/REDUCE_RIGHT<~lib/typedarray/Float32Array,f32,f32>" (param $array i32) (param $fn i32) (param $initialValue f32) (result f32) (local $ptr i32) (local $i i32) + (local $5 i32) (local.set $ptr (call $~lib/arraybuffer/ArrayBufferView#get:dataStart (call $~lib/rt/__tmptostack @@ -13471,32 +13610,37 @@ ) (then (local.set $initialValue - (call_indirect (type $25) - (local.get $initialValue) - (f32.load - (i32.add - (local.get $ptr) - (i32.shl - (local.get $i) - (i32.const 2) - ) - ) - ) - (local.get $i) - (call $~lib/rt/__tmptostack - (local.get $array) + (block (result f32) + (local.set $5 + (local.get $fn) ) - (block (result i32) - (call $~lib/rt/closure/setClosureEnv - (i32.load offset=4 - (local.get $fn) + (call_indirect (type $25) + (local.get $initialValue) + (f32.load + (i32.add + (local.get $ptr) + (i32.shl + (local.get $i) + (i32.const 2) + ) ) ) - (global.set $~argumentsLength - (i32.const 4) + (local.get $i) + (call $~lib/rt/__tmptostack + (local.get $array) ) - (i32.load - (local.get $fn) + (block (result i32) + (call $~lib/rt/closure/setClosureEnv + (i32.load offset=4 + (local.get $5) + ) + ) + (global.set $~argumentsLength + (i32.const 4) + ) + (i32.load + (local.get $5) + ) ) ) ) @@ -13603,6 +13747,7 @@ (func $"~lib/typedarray/REDUCE_RIGHT<~lib/typedarray/Float64Array,f64,f64>" (param $array i32) (param $fn i32) (param $initialValue f64) (result f64) (local $ptr i32) (local $i i32) + (local $5 i32) (local.set $ptr (call $~lib/arraybuffer/ArrayBufferView#get:dataStart (call $~lib/rt/__tmptostack @@ -13628,32 +13773,37 @@ ) (then (local.set $initialValue - (call_indirect (type $27) - (local.get $initialValue) - (f64.load - (i32.add - (local.get $ptr) - (i32.shl - (local.get $i) - (i32.const 3) - ) - ) - ) - (local.get $i) - (call $~lib/rt/__tmptostack - (local.get $array) + (block (result f64) + (local.set $5 + (local.get $fn) ) - (block (result i32) - (call $~lib/rt/closure/setClosureEnv - (i32.load offset=4 - (local.get $fn) + (call_indirect (type $27) + (local.get $initialValue) + (f64.load + (i32.add + (local.get $ptr) + (i32.shl + (local.get $i) + (i32.const 3) + ) ) ) - (global.set $~argumentsLength - (i32.const 4) + (local.get $i) + (call $~lib/rt/__tmptostack + (local.get $array) ) - (i32.load - (local.get $fn) + (block (result i32) + (call $~lib/rt/closure/setClosureEnv + (i32.load offset=4 + (local.get $5) + ) + ) + (global.set $~argumentsLength + (i32.const 4) + ) + (i32.load + (local.get $5) + ) ) ) ) @@ -13764,6 +13914,7 @@ (local $out i32) (local $buf i32) (local $i i32) + (local $8 i32) (local.set $len (call $~lib/typedarray/Int8Array#get:length (call $~lib/rt/__tmptostack @@ -13818,31 +13969,36 @@ (i32.const 0) ) ) - (call_indirect (type $1) - (i32.load8_s - (i32.add - (local.get $ptr) - (i32.shl - (local.get $i) - (i32.const 0) - ) - ) - ) - (local.get $i) - (call $~lib/rt/__tmptostack - (local.get $array) + (block (result i32) + (local.set $8 + (local.get $fn) ) - (block (result i32) - (call $~lib/rt/closure/setClosureEnv - (i32.load offset=4 - (local.get $fn) + (call_indirect (type $1) + (i32.load8_s + (i32.add + (local.get $ptr) + (i32.shl + (local.get $i) + (i32.const 0) + ) ) ) - (global.set $~argumentsLength - (i32.const 3) + (local.get $i) + (call $~lib/rt/__tmptostack + (local.get $array) ) - (i32.load - (local.get $fn) + (block (result i32) + (call $~lib/rt/closure/setClosureEnv + (i32.load offset=4 + (local.get $8) + ) + ) + (global.set $~argumentsLength + (i32.const 3) + ) + (i32.load + (local.get $8) + ) ) ) ) @@ -14019,6 +14175,7 @@ (local $out i32) (local $buf i32) (local $i i32) + (local $8 i32) (local.set $len (call $~lib/typedarray/Uint8Array#get:length (call $~lib/rt/__tmptostack @@ -14073,31 +14230,36 @@ (i32.const 0) ) ) - (call_indirect (type $1) - (i32.load8_u - (i32.add - (local.get $ptr) - (i32.shl - (local.get $i) - (i32.const 0) - ) - ) - ) - (local.get $i) - (call $~lib/rt/__tmptostack - (local.get $array) + (block (result i32) + (local.set $8 + (local.get $fn) ) - (block (result i32) - (call $~lib/rt/closure/setClosureEnv - (i32.load offset=4 - (local.get $fn) + (call_indirect (type $1) + (i32.load8_u + (i32.add + (local.get $ptr) + (i32.shl + (local.get $i) + (i32.const 0) + ) ) ) - (global.set $~argumentsLength - (i32.const 3) + (local.get $i) + (call $~lib/rt/__tmptostack + (local.get $array) ) - (i32.load - (local.get $fn) + (block (result i32) + (call $~lib/rt/closure/setClosureEnv + (i32.load offset=4 + (local.get $8) + ) + ) + (global.set $~argumentsLength + (i32.const 3) + ) + (i32.load + (local.get $8) + ) ) ) ) @@ -14307,6 +14469,7 @@ (local $out i32) (local $buf i32) (local $i i32) + (local $8 i32) (local.set $len (call $~lib/typedarray/Uint8ClampedArray#get:length (call $~lib/rt/__tmptostack @@ -14361,31 +14524,36 @@ (i32.const 0) ) ) - (call_indirect (type $1) - (i32.load8_u - (i32.add - (local.get $ptr) - (i32.shl - (local.get $i) - (i32.const 0) - ) - ) - ) - (local.get $i) - (call $~lib/rt/__tmptostack - (local.get $array) + (block (result i32) + (local.set $8 + (local.get $fn) ) - (block (result i32) - (call $~lib/rt/closure/setClosureEnv - (i32.load offset=4 - (local.get $fn) + (call_indirect (type $1) + (i32.load8_u + (i32.add + (local.get $ptr) + (i32.shl + (local.get $i) + (i32.const 0) + ) ) ) - (global.set $~argumentsLength - (i32.const 3) + (local.get $i) + (call $~lib/rt/__tmptostack + (local.get $array) ) - (i32.load - (local.get $fn) + (block (result i32) + (call $~lib/rt/closure/setClosureEnv + (i32.load offset=4 + (local.get $8) + ) + ) + (global.set $~argumentsLength + (i32.const 3) + ) + (i32.load + (local.get $8) + ) ) ) ) @@ -14562,6 +14730,7 @@ (local $out i32) (local $buf i32) (local $i i32) + (local $8 i32) (local.set $len (call $~lib/typedarray/Int16Array#get:length (call $~lib/rt/__tmptostack @@ -14616,31 +14785,36 @@ (i32.const 1) ) ) - (call_indirect (type $1) - (i32.load16_s - (i32.add - (local.get $ptr) - (i32.shl - (local.get $i) - (i32.const 1) - ) - ) - ) - (local.get $i) - (call $~lib/rt/__tmptostack - (local.get $array) + (block (result i32) + (local.set $8 + (local.get $fn) ) - (block (result i32) - (call $~lib/rt/closure/setClosureEnv - (i32.load offset=4 - (local.get $fn) + (call_indirect (type $1) + (i32.load16_s + (i32.add + (local.get $ptr) + (i32.shl + (local.get $i) + (i32.const 1) + ) ) ) - (global.set $~argumentsLength - (i32.const 3) + (local.get $i) + (call $~lib/rt/__tmptostack + (local.get $array) ) - (i32.load - (local.get $fn) + (block (result i32) + (call $~lib/rt/closure/setClosureEnv + (i32.load offset=4 + (local.get $8) + ) + ) + (global.set $~argumentsLength + (i32.const 3) + ) + (i32.load + (local.get $8) + ) ) ) ) @@ -14856,6 +15030,7 @@ (local $out i32) (local $buf i32) (local $i i32) + (local $8 i32) (local.set $len (call $~lib/typedarray/Uint16Array#get:length (call $~lib/rt/__tmptostack @@ -14910,31 +15085,36 @@ (i32.const 1) ) ) - (call_indirect (type $1) - (i32.load16_u - (i32.add - (local.get $ptr) - (i32.shl - (local.get $i) - (i32.const 1) - ) - ) - ) - (local.get $i) - (call $~lib/rt/__tmptostack - (local.get $array) + (block (result i32) + (local.set $8 + (local.get $fn) ) - (block (result i32) - (call $~lib/rt/closure/setClosureEnv - (i32.load offset=4 - (local.get $fn) + (call_indirect (type $1) + (i32.load16_u + (i32.add + (local.get $ptr) + (i32.shl + (local.get $i) + (i32.const 1) + ) ) ) - (global.set $~argumentsLength - (i32.const 3) + (local.get $i) + (call $~lib/rt/__tmptostack + (local.get $array) ) - (i32.load - (local.get $fn) + (block (result i32) + (call $~lib/rt/closure/setClosureEnv + (i32.load offset=4 + (local.get $8) + ) + ) + (global.set $~argumentsLength + (i32.const 3) + ) + (i32.load + (local.get $8) + ) ) ) ) @@ -15150,6 +15330,7 @@ (local $out i32) (local $buf i32) (local $i i32) + (local $8 i32) (local.set $len (call $~lib/typedarray/Int32Array#get:length (call $~lib/rt/__tmptostack @@ -15204,31 +15385,36 @@ (i32.const 2) ) ) - (call_indirect (type $1) - (i32.load - (i32.add - (local.get $ptr) - (i32.shl - (local.get $i) - (i32.const 2) - ) - ) - ) - (local.get $i) - (call $~lib/rt/__tmptostack - (local.get $array) + (block (result i32) + (local.set $8 + (local.get $fn) ) - (block (result i32) - (call $~lib/rt/closure/setClosureEnv - (i32.load offset=4 - (local.get $fn) + (call_indirect (type $1) + (i32.load + (i32.add + (local.get $ptr) + (i32.shl + (local.get $i) + (i32.const 2) + ) ) ) - (global.set $~argumentsLength - (i32.const 3) + (local.get $i) + (call $~lib/rt/__tmptostack + (local.get $array) ) - (i32.load - (local.get $fn) + (block (result i32) + (call $~lib/rt/closure/setClosureEnv + (i32.load offset=4 + (local.get $8) + ) + ) + (global.set $~argumentsLength + (i32.const 3) + ) + (i32.load + (local.get $8) + ) ) ) ) @@ -15405,6 +15591,7 @@ (local $out i32) (local $buf i32) (local $i i32) + (local $8 i32) (local.set $len (call $~lib/typedarray/Uint32Array#get:length (call $~lib/rt/__tmptostack @@ -15459,31 +15646,36 @@ (i32.const 2) ) ) - (call_indirect (type $1) - (i32.load - (i32.add - (local.get $ptr) - (i32.shl - (local.get $i) - (i32.const 2) - ) - ) - ) - (local.get $i) - (call $~lib/rt/__tmptostack - (local.get $array) + (block (result i32) + (local.set $8 + (local.get $fn) ) - (block (result i32) - (call $~lib/rt/closure/setClosureEnv - (i32.load offset=4 - (local.get $fn) + (call_indirect (type $1) + (i32.load + (i32.add + (local.get $ptr) + (i32.shl + (local.get $i) + (i32.const 2) + ) ) ) - (global.set $~argumentsLength - (i32.const 3) + (local.get $i) + (call $~lib/rt/__tmptostack + (local.get $array) ) - (i32.load - (local.get $fn) + (block (result i32) + (call $~lib/rt/closure/setClosureEnv + (i32.load offset=4 + (local.get $8) + ) + ) + (global.set $~argumentsLength + (i32.const 3) + ) + (i32.load + (local.get $8) + ) ) ) ) @@ -15699,6 +15891,7 @@ (local $out i32) (local $buf i32) (local $i i32) + (local $8 i32) (local.set $len (call $~lib/typedarray/Int64Array#get:length (call $~lib/rt/__tmptostack @@ -15753,31 +15946,36 @@ (i32.const 3) ) ) - (call_indirect (type $30) - (i64.load - (i32.add - (local.get $ptr) - (i32.shl - (local.get $i) - (i32.const 3) - ) - ) - ) - (local.get $i) - (call $~lib/rt/__tmptostack - (local.get $array) + (block (result i64) + (local.set $8 + (local.get $fn) ) - (block (result i32) - (call $~lib/rt/closure/setClosureEnv - (i32.load offset=4 - (local.get $fn) + (call_indirect (type $30) + (i64.load + (i32.add + (local.get $ptr) + (i32.shl + (local.get $i) + (i32.const 3) + ) ) ) - (global.set $~argumentsLength - (i32.const 3) + (local.get $i) + (call $~lib/rt/__tmptostack + (local.get $array) ) - (i32.load - (local.get $fn) + (block (result i32) + (call $~lib/rt/closure/setClosureEnv + (i32.load offset=4 + (local.get $8) + ) + ) + (global.set $~argumentsLength + (i32.const 3) + ) + (i32.load + (local.get $8) + ) ) ) ) @@ -15993,6 +16191,7 @@ (local $out i32) (local $buf i32) (local $i i32) + (local $8 i32) (local.set $len (call $~lib/typedarray/Uint64Array#get:length (call $~lib/rt/__tmptostack @@ -16047,31 +16246,36 @@ (i32.const 3) ) ) - (call_indirect (type $30) - (i64.load - (i32.add - (local.get $ptr) - (i32.shl - (local.get $i) - (i32.const 3) - ) - ) - ) - (local.get $i) - (call $~lib/rt/__tmptostack - (local.get $array) + (block (result i64) + (local.set $8 + (local.get $fn) ) - (block (result i32) - (call $~lib/rt/closure/setClosureEnv - (i32.load offset=4 - (local.get $fn) + (call_indirect (type $30) + (i64.load + (i32.add + (local.get $ptr) + (i32.shl + (local.get $i) + (i32.const 3) + ) ) ) - (global.set $~argumentsLength - (i32.const 3) + (local.get $i) + (call $~lib/rt/__tmptostack + (local.get $array) ) - (i32.load - (local.get $fn) + (block (result i32) + (call $~lib/rt/closure/setClosureEnv + (i32.load offset=4 + (local.get $8) + ) + ) + (global.set $~argumentsLength + (i32.const 3) + ) + (i32.load + (local.get $8) + ) ) ) ) @@ -16287,6 +16491,7 @@ (local $out i32) (local $buf i32) (local $i i32) + (local $8 i32) (local.set $len (call $~lib/typedarray/Float32Array#get:length (call $~lib/rt/__tmptostack @@ -16341,31 +16546,36 @@ (i32.const 2) ) ) - (call_indirect (type $36) - (f32.load - (i32.add - (local.get $ptr) - (i32.shl - (local.get $i) - (i32.const 2) - ) - ) - ) - (local.get $i) - (call $~lib/rt/__tmptostack - (local.get $array) + (block (result f32) + (local.set $8 + (local.get $fn) ) - (block (result i32) - (call $~lib/rt/closure/setClosureEnv - (i32.load offset=4 - (local.get $fn) + (call_indirect (type $36) + (f32.load + (i32.add + (local.get $ptr) + (i32.shl + (local.get $i) + (i32.const 2) + ) ) ) - (global.set $~argumentsLength - (i32.const 3) + (local.get $i) + (call $~lib/rt/__tmptostack + (local.get $array) ) - (i32.load - (local.get $fn) + (block (result i32) + (call $~lib/rt/closure/setClosureEnv + (i32.load offset=4 + (local.get $8) + ) + ) + (global.set $~argumentsLength + (i32.const 3) + ) + (i32.load + (local.get $8) + ) ) ) ) @@ -16581,6 +16791,7 @@ (local $out i32) (local $buf i32) (local $i i32) + (local $8 i32) (local.set $len (call $~lib/typedarray/Float64Array#get:length (call $~lib/rt/__tmptostack @@ -16635,31 +16846,36 @@ (i32.const 3) ) ) - (call_indirect (type $37) - (f64.load - (i32.add - (local.get $ptr) - (i32.shl - (local.get $i) - (i32.const 3) - ) - ) - ) - (local.get $i) - (call $~lib/rt/__tmptostack - (local.get $array) + (block (result f64) + (local.set $8 + (local.get $fn) ) - (block (result i32) - (call $~lib/rt/closure/setClosureEnv - (i32.load offset=4 - (local.get $fn) + (call_indirect (type $37) + (f64.load + (i32.add + (local.get $ptr) + (i32.shl + (local.get $i) + (i32.const 3) + ) ) ) - (global.set $~argumentsLength - (i32.const 3) + (local.get $i) + (call $~lib/rt/__tmptostack + (local.get $array) ) - (i32.load - (local.get $fn) + (block (result i32) + (call $~lib/rt/closure/setClosureEnv + (i32.load offset=4 + (local.get $8) + ) + ) + (global.set $~argumentsLength + (i32.const 3) + ) + (i32.load + (local.get $8) + ) ) ) ) @@ -20715,6 +20931,7 @@ (local $ptr i32) (local $i i32) (local $k i32) + (local $5 i32) (local.set $ptr (call $~lib/arraybuffer/ArrayBufferView#get:dataStart (call $~lib/rt/__tmptostack @@ -20742,31 +20959,36 @@ ) (then (if - (call_indirect (type $1) - (i32.load8_s - (i32.add - (local.get $ptr) - (i32.shl - (local.get $i) - (i32.const 0) - ) - ) - ) - (local.get $i) - (call $~lib/rt/__tmptostack - (local.get $array) + (block (result i32) + (local.set $5 + (local.get $fn) ) - (block (result i32) - (call $~lib/rt/closure/setClosureEnv - (i32.load offset=4 - (local.get $fn) + (call_indirect (type $1) + (i32.load8_s + (i32.add + (local.get $ptr) + (i32.shl + (local.get $i) + (i32.const 0) + ) ) ) - (global.set $~argumentsLength - (i32.const 3) + (local.get $i) + (call $~lib/rt/__tmptostack + (local.get $array) ) - (i32.load - (local.get $fn) + (block (result i32) + (call $~lib/rt/closure/setClosureEnv + (i32.load offset=4 + (local.get $5) + ) + ) + (global.set $~argumentsLength + (i32.const 3) + ) + (i32.load + (local.get $5) + ) ) ) ) @@ -20912,6 +21134,7 @@ (local $ptr i32) (local $i i32) (local $k i32) + (local $5 i32) (local.set $ptr (call $~lib/arraybuffer/ArrayBufferView#get:dataStart (call $~lib/rt/__tmptostack @@ -20939,31 +21162,36 @@ ) (then (if - (call_indirect (type $1) - (i32.load8_u - (i32.add - (local.get $ptr) - (i32.shl - (local.get $i) - (i32.const 0) - ) - ) - ) - (local.get $i) - (call $~lib/rt/__tmptostack - (local.get $array) + (block (result i32) + (local.set $5 + (local.get $fn) ) - (block (result i32) - (call $~lib/rt/closure/setClosureEnv - (i32.load offset=4 - (local.get $fn) + (call_indirect (type $1) + (i32.load8_u + (i32.add + (local.get $ptr) + (i32.shl + (local.get $i) + (i32.const 0) + ) ) ) - (global.set $~argumentsLength - (i32.const 3) + (local.get $i) + (call $~lib/rt/__tmptostack + (local.get $array) ) - (i32.load - (local.get $fn) + (block (result i32) + (call $~lib/rt/closure/setClosureEnv + (i32.load offset=4 + (local.get $5) + ) + ) + (global.set $~argumentsLength + (i32.const 3) + ) + (i32.load + (local.get $5) + ) ) ) ) @@ -21110,6 +21338,7 @@ (local $ptr i32) (local $i i32) (local $k i32) + (local $5 i32) (local.set $ptr (call $~lib/arraybuffer/ArrayBufferView#get:dataStart (call $~lib/rt/__tmptostack @@ -21137,31 +21366,36 @@ ) (then (if - (call_indirect (type $1) - (i32.load8_u - (i32.add - (local.get $ptr) - (i32.shl - (local.get $i) - (i32.const 0) - ) - ) - ) - (local.get $i) - (call $~lib/rt/__tmptostack - (local.get $array) + (block (result i32) + (local.set $5 + (local.get $fn) ) - (block (result i32) - (call $~lib/rt/closure/setClosureEnv - (i32.load offset=4 - (local.get $fn) + (call_indirect (type $1) + (i32.load8_u + (i32.add + (local.get $ptr) + (i32.shl + (local.get $i) + (i32.const 0) + ) ) ) - (global.set $~argumentsLength - (i32.const 3) + (local.get $i) + (call $~lib/rt/__tmptostack + (local.get $array) ) - (i32.load - (local.get $fn) + (block (result i32) + (call $~lib/rt/closure/setClosureEnv + (i32.load offset=4 + (local.get $5) + ) + ) + (global.set $~argumentsLength + (i32.const 3) + ) + (i32.load + (local.get $5) + ) ) ) ) @@ -21307,6 +21541,7 @@ (local $ptr i32) (local $i i32) (local $k i32) + (local $5 i32) (local.set $ptr (call $~lib/arraybuffer/ArrayBufferView#get:dataStart (call $~lib/rt/__tmptostack @@ -21334,31 +21569,36 @@ ) (then (if - (call_indirect (type $1) - (i32.load16_s - (i32.add - (local.get $ptr) - (i32.shl - (local.get $i) - (i32.const 1) - ) - ) - ) - (local.get $i) - (call $~lib/rt/__tmptostack - (local.get $array) + (block (result i32) + (local.set $5 + (local.get $fn) ) - (block (result i32) - (call $~lib/rt/closure/setClosureEnv - (i32.load offset=4 - (local.get $fn) + (call_indirect (type $1) + (i32.load16_s + (i32.add + (local.get $ptr) + (i32.shl + (local.get $i) + (i32.const 1) + ) ) ) - (global.set $~argumentsLength - (i32.const 3) + (local.get $i) + (call $~lib/rt/__tmptostack + (local.get $array) ) - (i32.load - (local.get $fn) + (block (result i32) + (call $~lib/rt/closure/setClosureEnv + (i32.load offset=4 + (local.get $5) + ) + ) + (global.set $~argumentsLength + (i32.const 3) + ) + (i32.load + (local.get $5) + ) ) ) ) @@ -21504,6 +21744,7 @@ (local $ptr i32) (local $i i32) (local $k i32) + (local $5 i32) (local.set $ptr (call $~lib/arraybuffer/ArrayBufferView#get:dataStart (call $~lib/rt/__tmptostack @@ -21531,31 +21772,36 @@ ) (then (if - (call_indirect (type $1) - (i32.load16_u - (i32.add - (local.get $ptr) - (i32.shl - (local.get $i) - (i32.const 1) - ) - ) - ) - (local.get $i) - (call $~lib/rt/__tmptostack - (local.get $array) + (block (result i32) + (local.set $5 + (local.get $fn) ) - (block (result i32) - (call $~lib/rt/closure/setClosureEnv - (i32.load offset=4 - (local.get $fn) + (call_indirect (type $1) + (i32.load16_u + (i32.add + (local.get $ptr) + (i32.shl + (local.get $i) + (i32.const 1) + ) ) ) - (global.set $~argumentsLength - (i32.const 3) + (local.get $i) + (call $~lib/rt/__tmptostack + (local.get $array) ) - (i32.load - (local.get $fn) + (block (result i32) + (call $~lib/rt/closure/setClosureEnv + (i32.load offset=4 + (local.get $5) + ) + ) + (global.set $~argumentsLength + (i32.const 3) + ) + (i32.load + (local.get $5) + ) ) ) ) @@ -21699,6 +21945,7 @@ (local $ptr i32) (local $i i32) (local $k i32) + (local $5 i32) (local.set $ptr (call $~lib/arraybuffer/ArrayBufferView#get:dataStart (call $~lib/rt/__tmptostack @@ -21726,31 +21973,36 @@ ) (then (if - (call_indirect (type $1) - (i32.load - (i32.add - (local.get $ptr) - (i32.shl - (local.get $i) - (i32.const 2) - ) - ) - ) - (local.get $i) - (call $~lib/rt/__tmptostack - (local.get $array) + (block (result i32) + (local.set $5 + (local.get $fn) ) - (block (result i32) - (call $~lib/rt/closure/setClosureEnv - (i32.load offset=4 - (local.get $fn) + (call_indirect (type $1) + (i32.load + (i32.add + (local.get $ptr) + (i32.shl + (local.get $i) + (i32.const 2) + ) ) ) - (global.set $~argumentsLength - (i32.const 3) + (local.get $i) + (call $~lib/rt/__tmptostack + (local.get $array) ) - (i32.load - (local.get $fn) + (block (result i32) + (call $~lib/rt/closure/setClosureEnv + (i32.load offset=4 + (local.get $5) + ) + ) + (global.set $~argumentsLength + (i32.const 3) + ) + (i32.load + (local.get $5) + ) ) ) ) @@ -21891,6 +22143,7 @@ (local $ptr i32) (local $i i32) (local $k i32) + (local $5 i32) (local.set $ptr (call $~lib/arraybuffer/ArrayBufferView#get:dataStart (call $~lib/rt/__tmptostack @@ -21918,31 +22171,36 @@ ) (then (if - (call_indirect (type $1) - (i32.load - (i32.add - (local.get $ptr) - (i32.shl - (local.get $i) - (i32.const 2) - ) - ) - ) - (local.get $i) - (call $~lib/rt/__tmptostack - (local.get $array) + (block (result i32) + (local.set $5 + (local.get $fn) ) - (block (result i32) - (call $~lib/rt/closure/setClosureEnv - (i32.load offset=4 - (local.get $fn) + (call_indirect (type $1) + (i32.load + (i32.add + (local.get $ptr) + (i32.shl + (local.get $i) + (i32.const 2) + ) ) ) - (global.set $~argumentsLength - (i32.const 3) + (local.get $i) + (call $~lib/rt/__tmptostack + (local.get $array) ) - (i32.load - (local.get $fn) + (block (result i32) + (call $~lib/rt/closure/setClosureEnv + (i32.load offset=4 + (local.get $5) + ) + ) + (global.set $~argumentsLength + (i32.const 3) + ) + (i32.load + (local.get $5) + ) ) ) ) @@ -22083,6 +22341,7 @@ (local $ptr i32) (local $i i32) (local $k i32) + (local $5 i32) (local.set $ptr (call $~lib/arraybuffer/ArrayBufferView#get:dataStart (call $~lib/rt/__tmptostack @@ -22110,31 +22369,36 @@ ) (then (if - (call_indirect (type $7) - (i64.load - (i32.add - (local.get $ptr) - (i32.shl - (local.get $i) - (i32.const 3) - ) - ) - ) - (local.get $i) - (call $~lib/rt/__tmptostack - (local.get $array) + (block (result i32) + (local.set $5 + (local.get $fn) ) - (block (result i32) - (call $~lib/rt/closure/setClosureEnv - (i32.load offset=4 - (local.get $fn) + (call_indirect (type $7) + (i64.load + (i32.add + (local.get $ptr) + (i32.shl + (local.get $i) + (i32.const 3) + ) ) ) - (global.set $~argumentsLength - (i32.const 3) + (local.get $i) + (call $~lib/rt/__tmptostack + (local.get $array) ) - (i32.load - (local.get $fn) + (block (result i32) + (call $~lib/rt/closure/setClosureEnv + (i32.load offset=4 + (local.get $5) + ) + ) + (global.set $~argumentsLength + (i32.const 3) + ) + (i32.load + (local.get $5) + ) ) ) ) @@ -22275,6 +22539,7 @@ (local $ptr i32) (local $i i32) (local $k i32) + (local $5 i32) (local.set $ptr (call $~lib/arraybuffer/ArrayBufferView#get:dataStart (call $~lib/rt/__tmptostack @@ -22302,31 +22567,36 @@ ) (then (if - (call_indirect (type $7) - (i64.load - (i32.add - (local.get $ptr) - (i32.shl - (local.get $i) - (i32.const 3) - ) - ) - ) - (local.get $i) - (call $~lib/rt/__tmptostack - (local.get $array) + (block (result i32) + (local.set $5 + (local.get $fn) ) - (block (result i32) - (call $~lib/rt/closure/setClosureEnv - (i32.load offset=4 - (local.get $fn) + (call_indirect (type $7) + (i64.load + (i32.add + (local.get $ptr) + (i32.shl + (local.get $i) + (i32.const 3) + ) ) ) - (global.set $~argumentsLength - (i32.const 3) + (local.get $i) + (call $~lib/rt/__tmptostack + (local.get $array) ) - (i32.load - (local.get $fn) + (block (result i32) + (call $~lib/rt/closure/setClosureEnv + (i32.load offset=4 + (local.get $5) + ) + ) + (global.set $~argumentsLength + (i32.const 3) + ) + (i32.load + (local.get $5) + ) ) ) ) @@ -22467,6 +22737,7 @@ (local $ptr i32) (local $i i32) (local $k i32) + (local $5 i32) (local.set $ptr (call $~lib/arraybuffer/ArrayBufferView#get:dataStart (call $~lib/rt/__tmptostack @@ -22494,31 +22765,36 @@ ) (then (if - (call_indirect (type $9) - (f32.load - (i32.add - (local.get $ptr) - (i32.shl - (local.get $i) - (i32.const 2) - ) - ) - ) - (local.get $i) - (call $~lib/rt/__tmptostack - (local.get $array) + (block (result i32) + (local.set $5 + (local.get $fn) ) - (block (result i32) - (call $~lib/rt/closure/setClosureEnv - (i32.load offset=4 - (local.get $fn) + (call_indirect (type $9) + (f32.load + (i32.add + (local.get $ptr) + (i32.shl + (local.get $i) + (i32.const 2) + ) ) ) - (global.set $~argumentsLength - (i32.const 3) + (local.get $i) + (call $~lib/rt/__tmptostack + (local.get $array) ) - (i32.load - (local.get $fn) + (block (result i32) + (call $~lib/rt/closure/setClosureEnv + (i32.load offset=4 + (local.get $5) + ) + ) + (global.set $~argumentsLength + (i32.const 3) + ) + (i32.load + (local.get $5) + ) ) ) ) @@ -22659,6 +22935,7 @@ (local $ptr i32) (local $i i32) (local $k i32) + (local $5 i32) (local.set $ptr (call $~lib/arraybuffer/ArrayBufferView#get:dataStart (call $~lib/rt/__tmptostack @@ -22686,31 +22963,36 @@ ) (then (if - (call_indirect (type $10) - (f64.load - (i32.add - (local.get $ptr) - (i32.shl - (local.get $i) - (i32.const 3) - ) - ) - ) - (local.get $i) - (call $~lib/rt/__tmptostack - (local.get $array) + (block (result i32) + (local.set $5 + (local.get $fn) ) - (block (result i32) - (call $~lib/rt/closure/setClosureEnv - (i32.load offset=4 - (local.get $fn) + (call_indirect (type $10) + (f64.load + (i32.add + (local.get $ptr) + (i32.shl + (local.get $i) + (i32.const 3) + ) ) ) - (global.set $~argumentsLength - (i32.const 3) + (local.get $i) + (call $~lib/rt/__tmptostack + (local.get $array) ) - (i32.load - (local.get $fn) + (block (result i32) + (call $~lib/rt/closure/setClosureEnv + (i32.load offset=4 + (local.get $5) + ) + ) + (global.set $~argumentsLength + (i32.const 3) + ) + (i32.load + (local.get $5) + ) ) ) ) @@ -22853,6 +23135,7 @@ (local $ptr i32) (local $i i32) (local $k i32) + (local $5 i32) (local.set $ptr (call $~lib/arraybuffer/ArrayBufferView#get:dataStart (call $~lib/rt/__tmptostack @@ -22880,31 +23163,36 @@ ) (then (if - (call_indirect (type $1) - (i32.load8_s - (i32.add - (local.get $ptr) - (i32.shl - (local.get $i) - (i32.const 0) - ) - ) - ) - (local.get $i) - (call $~lib/rt/__tmptostack - (local.get $array) + (block (result i32) + (local.set $5 + (local.get $fn) ) - (block (result i32) - (call $~lib/rt/closure/setClosureEnv - (i32.load offset=4 - (local.get $fn) + (call_indirect (type $1) + (i32.load8_s + (i32.add + (local.get $ptr) + (i32.shl + (local.get $i) + (i32.const 0) + ) ) ) - (global.set $~argumentsLength - (i32.const 3) + (local.get $i) + (call $~lib/rt/__tmptostack + (local.get $array) ) - (i32.load - (local.get $fn) + (block (result i32) + (call $~lib/rt/closure/setClosureEnv + (i32.load offset=4 + (local.get $5) + ) + ) + (global.set $~argumentsLength + (i32.const 3) + ) + (i32.load + (local.get $5) + ) ) ) ) @@ -23054,6 +23342,7 @@ (local $ptr i32) (local $i i32) (local $k i32) + (local $5 i32) (local.set $ptr (call $~lib/arraybuffer/ArrayBufferView#get:dataStart (call $~lib/rt/__tmptostack @@ -23081,31 +23370,36 @@ ) (then (if - (call_indirect (type $1) - (i32.load8_u - (i32.add - (local.get $ptr) - (i32.shl - (local.get $i) - (i32.const 0) - ) - ) - ) - (local.get $i) - (call $~lib/rt/__tmptostack - (local.get $array) + (block (result i32) + (local.set $5 + (local.get $fn) ) - (block (result i32) - (call $~lib/rt/closure/setClosureEnv - (i32.load offset=4 - (local.get $fn) + (call_indirect (type $1) + (i32.load8_u + (i32.add + (local.get $ptr) + (i32.shl + (local.get $i) + (i32.const 0) + ) ) ) - (global.set $~argumentsLength - (i32.const 3) + (local.get $i) + (call $~lib/rt/__tmptostack + (local.get $array) ) - (i32.load - (local.get $fn) + (block (result i32) + (call $~lib/rt/closure/setClosureEnv + (i32.load offset=4 + (local.get $5) + ) + ) + (global.set $~argumentsLength + (i32.const 3) + ) + (i32.load + (local.get $5) + ) ) ) ) @@ -23256,6 +23550,7 @@ (local $ptr i32) (local $i i32) (local $k i32) + (local $5 i32) (local.set $ptr (call $~lib/arraybuffer/ArrayBufferView#get:dataStart (call $~lib/rt/__tmptostack @@ -23283,31 +23578,36 @@ ) (then (if - (call_indirect (type $1) - (i32.load8_u - (i32.add - (local.get $ptr) - (i32.shl - (local.get $i) - (i32.const 0) - ) - ) - ) - (local.get $i) - (call $~lib/rt/__tmptostack - (local.get $array) + (block (result i32) + (local.set $5 + (local.get $fn) ) - (block (result i32) - (call $~lib/rt/closure/setClosureEnv - (i32.load offset=4 - (local.get $fn) + (call_indirect (type $1) + (i32.load8_u + (i32.add + (local.get $ptr) + (i32.shl + (local.get $i) + (i32.const 0) + ) ) ) - (global.set $~argumentsLength - (i32.const 3) + (local.get $i) + (call $~lib/rt/__tmptostack + (local.get $array) ) - (i32.load - (local.get $fn) + (block (result i32) + (call $~lib/rt/closure/setClosureEnv + (i32.load offset=4 + (local.get $5) + ) + ) + (global.set $~argumentsLength + (i32.const 3) + ) + (i32.load + (local.get $5) + ) ) ) ) @@ -23457,6 +23757,7 @@ (local $ptr i32) (local $i i32) (local $k i32) + (local $5 i32) (local.set $ptr (call $~lib/arraybuffer/ArrayBufferView#get:dataStart (call $~lib/rt/__tmptostack @@ -23484,31 +23785,36 @@ ) (then (if - (call_indirect (type $1) - (i32.load16_s - (i32.add - (local.get $ptr) - (i32.shl - (local.get $i) - (i32.const 1) - ) - ) - ) - (local.get $i) - (call $~lib/rt/__tmptostack - (local.get $array) + (block (result i32) + (local.set $5 + (local.get $fn) ) - (block (result i32) - (call $~lib/rt/closure/setClosureEnv - (i32.load offset=4 - (local.get $fn) + (call_indirect (type $1) + (i32.load16_s + (i32.add + (local.get $ptr) + (i32.shl + (local.get $i) + (i32.const 1) + ) ) ) - (global.set $~argumentsLength - (i32.const 3) + (local.get $i) + (call $~lib/rt/__tmptostack + (local.get $array) ) - (i32.load - (local.get $fn) + (block (result i32) + (call $~lib/rt/closure/setClosureEnv + (i32.load offset=4 + (local.get $5) + ) + ) + (global.set $~argumentsLength + (i32.const 3) + ) + (i32.load + (local.get $5) + ) ) ) ) @@ -23658,6 +23964,7 @@ (local $ptr i32) (local $i i32) (local $k i32) + (local $5 i32) (local.set $ptr (call $~lib/arraybuffer/ArrayBufferView#get:dataStart (call $~lib/rt/__tmptostack @@ -23685,31 +23992,36 @@ ) (then (if - (call_indirect (type $1) - (i32.load16_u - (i32.add - (local.get $ptr) - (i32.shl - (local.get $i) - (i32.const 1) - ) - ) - ) - (local.get $i) - (call $~lib/rt/__tmptostack - (local.get $array) + (block (result i32) + (local.set $5 + (local.get $fn) ) - (block (result i32) - (call $~lib/rt/closure/setClosureEnv - (i32.load offset=4 - (local.get $fn) + (call_indirect (type $1) + (i32.load16_u + (i32.add + (local.get $ptr) + (i32.shl + (local.get $i) + (i32.const 1) + ) ) ) - (global.set $~argumentsLength - (i32.const 3) + (local.get $i) + (call $~lib/rt/__tmptostack + (local.get $array) ) - (i32.load - (local.get $fn) + (block (result i32) + (call $~lib/rt/closure/setClosureEnv + (i32.load offset=4 + (local.get $5) + ) + ) + (global.set $~argumentsLength + (i32.const 3) + ) + (i32.load + (local.get $5) + ) ) ) ) @@ -23857,6 +24169,7 @@ (local $ptr i32) (local $i i32) (local $k i32) + (local $5 i32) (local.set $ptr (call $~lib/arraybuffer/ArrayBufferView#get:dataStart (call $~lib/rt/__tmptostack @@ -23884,31 +24197,36 @@ ) (then (if - (call_indirect (type $1) - (i32.load - (i32.add - (local.get $ptr) - (i32.shl - (local.get $i) - (i32.const 2) - ) - ) - ) - (local.get $i) - (call $~lib/rt/__tmptostack - (local.get $array) + (block (result i32) + (local.set $5 + (local.get $fn) ) - (block (result i32) - (call $~lib/rt/closure/setClosureEnv - (i32.load offset=4 - (local.get $fn) + (call_indirect (type $1) + (i32.load + (i32.add + (local.get $ptr) + (i32.shl + (local.get $i) + (i32.const 2) + ) ) ) - (global.set $~argumentsLength - (i32.const 3) + (local.get $i) + (call $~lib/rt/__tmptostack + (local.get $array) ) - (i32.load - (local.get $fn) + (block (result i32) + (call $~lib/rt/closure/setClosureEnv + (i32.load offset=4 + (local.get $5) + ) + ) + (global.set $~argumentsLength + (i32.const 3) + ) + (i32.load + (local.get $5) + ) ) ) ) @@ -24053,6 +24371,7 @@ (local $ptr i32) (local $i i32) (local $k i32) + (local $5 i32) (local.set $ptr (call $~lib/arraybuffer/ArrayBufferView#get:dataStart (call $~lib/rt/__tmptostack @@ -24080,31 +24399,36 @@ ) (then (if - (call_indirect (type $1) - (i32.load - (i32.add - (local.get $ptr) - (i32.shl - (local.get $i) - (i32.const 2) - ) - ) - ) - (local.get $i) - (call $~lib/rt/__tmptostack - (local.get $array) + (block (result i32) + (local.set $5 + (local.get $fn) ) - (block (result i32) - (call $~lib/rt/closure/setClosureEnv - (i32.load offset=4 - (local.get $fn) + (call_indirect (type $1) + (i32.load + (i32.add + (local.get $ptr) + (i32.shl + (local.get $i) + (i32.const 2) + ) ) ) - (global.set $~argumentsLength - (i32.const 3) + (local.get $i) + (call $~lib/rt/__tmptostack + (local.get $array) ) - (i32.load - (local.get $fn) + (block (result i32) + (call $~lib/rt/closure/setClosureEnv + (i32.load offset=4 + (local.get $5) + ) + ) + (global.set $~argumentsLength + (i32.const 3) + ) + (i32.load + (local.get $5) + ) ) ) ) @@ -24249,6 +24573,7 @@ (local $ptr i32) (local $i i32) (local $k i32) + (local $5 i32) (local.set $ptr (call $~lib/arraybuffer/ArrayBufferView#get:dataStart (call $~lib/rt/__tmptostack @@ -24276,31 +24601,36 @@ ) (then (if - (call_indirect (type $7) - (i64.load - (i32.add - (local.get $ptr) - (i32.shl - (local.get $i) - (i32.const 3) - ) - ) - ) - (local.get $i) - (call $~lib/rt/__tmptostack - (local.get $array) + (block (result i32) + (local.set $5 + (local.get $fn) ) - (block (result i32) - (call $~lib/rt/closure/setClosureEnv - (i32.load offset=4 - (local.get $fn) + (call_indirect (type $7) + (i64.load + (i32.add + (local.get $ptr) + (i32.shl + (local.get $i) + (i32.const 3) + ) ) ) - (global.set $~argumentsLength - (i32.const 3) + (local.get $i) + (call $~lib/rt/__tmptostack + (local.get $array) ) - (i32.load - (local.get $fn) + (block (result i32) + (call $~lib/rt/closure/setClosureEnv + (i32.load offset=4 + (local.get $5) + ) + ) + (global.set $~argumentsLength + (i32.const 3) + ) + (i32.load + (local.get $5) + ) ) ) ) @@ -24445,6 +24775,7 @@ (local $ptr i32) (local $i i32) (local $k i32) + (local $5 i32) (local.set $ptr (call $~lib/arraybuffer/ArrayBufferView#get:dataStart (call $~lib/rt/__tmptostack @@ -24472,31 +24803,36 @@ ) (then (if - (call_indirect (type $7) - (i64.load - (i32.add - (local.get $ptr) - (i32.shl - (local.get $i) - (i32.const 3) - ) - ) - ) - (local.get $i) - (call $~lib/rt/__tmptostack - (local.get $array) + (block (result i32) + (local.set $5 + (local.get $fn) ) - (block (result i32) - (call $~lib/rt/closure/setClosureEnv - (i32.load offset=4 - (local.get $fn) + (call_indirect (type $7) + (i64.load + (i32.add + (local.get $ptr) + (i32.shl + (local.get $i) + (i32.const 3) + ) ) ) - (global.set $~argumentsLength - (i32.const 3) + (local.get $i) + (call $~lib/rt/__tmptostack + (local.get $array) ) - (i32.load - (local.get $fn) + (block (result i32) + (call $~lib/rt/closure/setClosureEnv + (i32.load offset=4 + (local.get $5) + ) + ) + (global.set $~argumentsLength + (i32.const 3) + ) + (i32.load + (local.get $5) + ) ) ) ) @@ -24641,6 +24977,7 @@ (local $ptr i32) (local $i i32) (local $k i32) + (local $5 i32) (local.set $ptr (call $~lib/arraybuffer/ArrayBufferView#get:dataStart (call $~lib/rt/__tmptostack @@ -24668,31 +25005,36 @@ ) (then (if - (call_indirect (type $9) - (f32.load - (i32.add - (local.get $ptr) - (i32.shl - (local.get $i) - (i32.const 2) - ) - ) - ) - (local.get $i) - (call $~lib/rt/__tmptostack - (local.get $array) + (block (result i32) + (local.set $5 + (local.get $fn) ) - (block (result i32) - (call $~lib/rt/closure/setClosureEnv - (i32.load offset=4 - (local.get $fn) + (call_indirect (type $9) + (f32.load + (i32.add + (local.get $ptr) + (i32.shl + (local.get $i) + (i32.const 2) + ) ) ) - (global.set $~argumentsLength - (i32.const 3) + (local.get $i) + (call $~lib/rt/__tmptostack + (local.get $array) ) - (i32.load - (local.get $fn) + (block (result i32) + (call $~lib/rt/closure/setClosureEnv + (i32.load offset=4 + (local.get $5) + ) + ) + (global.set $~argumentsLength + (i32.const 3) + ) + (i32.load + (local.get $5) + ) ) ) ) @@ -24837,6 +25179,7 @@ (local $ptr i32) (local $i i32) (local $k i32) + (local $5 i32) (local.set $ptr (call $~lib/arraybuffer/ArrayBufferView#get:dataStart (call $~lib/rt/__tmptostack @@ -24864,31 +25207,36 @@ ) (then (if - (call_indirect (type $10) - (f64.load - (i32.add - (local.get $ptr) - (i32.shl - (local.get $i) - (i32.const 3) - ) - ) - ) - (local.get $i) - (call $~lib/rt/__tmptostack - (local.get $array) + (block (result i32) + (local.set $5 + (local.get $fn) ) - (block (result i32) - (call $~lib/rt/closure/setClosureEnv - (i32.load offset=4 - (local.get $fn) + (call_indirect (type $10) + (f64.load + (i32.add + (local.get $ptr) + (i32.shl + (local.get $i) + (i32.const 3) + ) ) ) - (global.set $~argumentsLength - (i32.const 3) + (local.get $i) + (call $~lib/rt/__tmptostack + (local.get $array) ) - (i32.load - (local.get $fn) + (block (result i32) + (call $~lib/rt/closure/setClosureEnv + (i32.load offset=4 + (local.get $5) + ) + ) + (global.set $~argumentsLength + (i32.const 3) + ) + (i32.load + (local.get $5) + ) ) ) ) @@ -25034,6 +25382,7 @@ (func $"~lib/typedarray/FIND_LAST_INDEX<~lib/typedarray/Int8Array,i8>" (param $array i32) (param $fn i32) (result i32) (local $ptr i32) (local $i i32) + (local $4 i32) (local.set $ptr (call $~lib/arraybuffer/ArrayBufferView#get:dataStart (call $~lib/rt/__tmptostack @@ -25059,31 +25408,36 @@ ) (then (if - (call_indirect (type $1) - (i32.load8_s - (i32.add - (local.get $ptr) - (i32.shl - (local.get $i) - (i32.const 0) - ) - ) - ) - (local.get $i) - (call $~lib/rt/__tmptostack - (local.get $array) + (block (result i32) + (local.set $4 + (local.get $fn) ) - (block (result i32) - (call $~lib/rt/closure/setClosureEnv - (i32.load offset=4 - (local.get $fn) + (call_indirect (type $1) + (i32.load8_s + (i32.add + (local.get $ptr) + (i32.shl + (local.get $i) + (i32.const 0) + ) ) ) - (global.set $~argumentsLength - (i32.const 3) + (local.get $i) + (call $~lib/rt/__tmptostack + (local.get $array) ) - (i32.load - (local.get $fn) + (block (result i32) + (call $~lib/rt/closure/setClosureEnv + (i32.load offset=4 + (local.get $4) + ) + ) + (global.set $~argumentsLength + (i32.const 3) + ) + (i32.load + (local.get $4) + ) ) ) ) @@ -25232,6 +25586,7 @@ (func $"~lib/typedarray/FIND_LAST_INDEX<~lib/typedarray/Uint8Array,u8>" (param $array i32) (param $fn i32) (result i32) (local $ptr i32) (local $i i32) + (local $4 i32) (local.set $ptr (call $~lib/arraybuffer/ArrayBufferView#get:dataStart (call $~lib/rt/__tmptostack @@ -25257,31 +25612,36 @@ ) (then (if - (call_indirect (type $1) - (i32.load8_u - (i32.add - (local.get $ptr) - (i32.shl - (local.get $i) - (i32.const 0) - ) - ) - ) - (local.get $i) - (call $~lib/rt/__tmptostack - (local.get $array) + (block (result i32) + (local.set $4 + (local.get $fn) ) - (block (result i32) - (call $~lib/rt/closure/setClosureEnv - (i32.load offset=4 - (local.get $fn) + (call_indirect (type $1) + (i32.load8_u + (i32.add + (local.get $ptr) + (i32.shl + (local.get $i) + (i32.const 0) + ) ) ) - (global.set $~argumentsLength - (i32.const 3) + (local.get $i) + (call $~lib/rt/__tmptostack + (local.get $array) ) - (i32.load - (local.get $fn) + (block (result i32) + (call $~lib/rt/closure/setClosureEnv + (i32.load offset=4 + (local.get $4) + ) + ) + (global.set $~argumentsLength + (i32.const 3) + ) + (i32.load + (local.get $4) + ) ) ) ) @@ -25431,6 +25791,7 @@ (func $"~lib/typedarray/FIND_LAST_INDEX<~lib/typedarray/Uint8ClampedArray,u8>" (param $array i32) (param $fn i32) (result i32) (local $ptr i32) (local $i i32) + (local $4 i32) (local.set $ptr (call $~lib/arraybuffer/ArrayBufferView#get:dataStart (call $~lib/rt/__tmptostack @@ -25456,31 +25817,36 @@ ) (then (if - (call_indirect (type $1) - (i32.load8_u - (i32.add - (local.get $ptr) - (i32.shl - (local.get $i) - (i32.const 0) - ) - ) - ) - (local.get $i) - (call $~lib/rt/__tmptostack - (local.get $array) + (block (result i32) + (local.set $4 + (local.get $fn) ) - (block (result i32) - (call $~lib/rt/closure/setClosureEnv - (i32.load offset=4 - (local.get $fn) + (call_indirect (type $1) + (i32.load8_u + (i32.add + (local.get $ptr) + (i32.shl + (local.get $i) + (i32.const 0) + ) ) ) - (global.set $~argumentsLength - (i32.const 3) + (local.get $i) + (call $~lib/rt/__tmptostack + (local.get $array) ) - (i32.load - (local.get $fn) + (block (result i32) + (call $~lib/rt/closure/setClosureEnv + (i32.load offset=4 + (local.get $4) + ) + ) + (global.set $~argumentsLength + (i32.const 3) + ) + (i32.load + (local.get $4) + ) ) ) ) @@ -25629,6 +25995,7 @@ (func $"~lib/typedarray/FIND_LAST_INDEX<~lib/typedarray/Int16Array,i16>" (param $array i32) (param $fn i32) (result i32) (local $ptr i32) (local $i i32) + (local $4 i32) (local.set $ptr (call $~lib/arraybuffer/ArrayBufferView#get:dataStart (call $~lib/rt/__tmptostack @@ -25654,31 +26021,36 @@ ) (then (if - (call_indirect (type $1) - (i32.load16_s - (i32.add - (local.get $ptr) - (i32.shl - (local.get $i) - (i32.const 1) - ) - ) - ) - (local.get $i) - (call $~lib/rt/__tmptostack - (local.get $array) + (block (result i32) + (local.set $4 + (local.get $fn) ) - (block (result i32) - (call $~lib/rt/closure/setClosureEnv - (i32.load offset=4 - (local.get $fn) + (call_indirect (type $1) + (i32.load16_s + (i32.add + (local.get $ptr) + (i32.shl + (local.get $i) + (i32.const 1) + ) ) ) - (global.set $~argumentsLength - (i32.const 3) + (local.get $i) + (call $~lib/rt/__tmptostack + (local.get $array) ) - (i32.load - (local.get $fn) + (block (result i32) + (call $~lib/rt/closure/setClosureEnv + (i32.load offset=4 + (local.get $4) + ) + ) + (global.set $~argumentsLength + (i32.const 3) + ) + (i32.load + (local.get $4) + ) ) ) ) @@ -25827,6 +26199,7 @@ (func $"~lib/typedarray/FIND_LAST_INDEX<~lib/typedarray/Uint16Array,u16>" (param $array i32) (param $fn i32) (result i32) (local $ptr i32) (local $i i32) + (local $4 i32) (local.set $ptr (call $~lib/arraybuffer/ArrayBufferView#get:dataStart (call $~lib/rt/__tmptostack @@ -25852,31 +26225,36 @@ ) (then (if - (call_indirect (type $1) - (i32.load16_u - (i32.add - (local.get $ptr) - (i32.shl - (local.get $i) - (i32.const 1) - ) - ) - ) - (local.get $i) - (call $~lib/rt/__tmptostack - (local.get $array) + (block (result i32) + (local.set $4 + (local.get $fn) ) - (block (result i32) - (call $~lib/rt/closure/setClosureEnv - (i32.load offset=4 - (local.get $fn) + (call_indirect (type $1) + (i32.load16_u + (i32.add + (local.get $ptr) + (i32.shl + (local.get $i) + (i32.const 1) + ) ) ) - (global.set $~argumentsLength - (i32.const 3) + (local.get $i) + (call $~lib/rt/__tmptostack + (local.get $array) ) - (i32.load - (local.get $fn) + (block (result i32) + (call $~lib/rt/closure/setClosureEnv + (i32.load offset=4 + (local.get $4) + ) + ) + (global.set $~argumentsLength + (i32.const 3) + ) + (i32.load + (local.get $4) + ) ) ) ) @@ -26023,6 +26401,7 @@ (func $"~lib/typedarray/FIND_LAST_INDEX<~lib/typedarray/Int32Array,i32>" (param $array i32) (param $fn i32) (result i32) (local $ptr i32) (local $i i32) + (local $4 i32) (local.set $ptr (call $~lib/arraybuffer/ArrayBufferView#get:dataStart (call $~lib/rt/__tmptostack @@ -26048,31 +26427,36 @@ ) (then (if - (call_indirect (type $1) - (i32.load - (i32.add - (local.get $ptr) - (i32.shl - (local.get $i) - (i32.const 2) - ) - ) - ) - (local.get $i) - (call $~lib/rt/__tmptostack - (local.get $array) + (block (result i32) + (local.set $4 + (local.get $fn) ) - (block (result i32) - (call $~lib/rt/closure/setClosureEnv - (i32.load offset=4 - (local.get $fn) + (call_indirect (type $1) + (i32.load + (i32.add + (local.get $ptr) + (i32.shl + (local.get $i) + (i32.const 2) + ) ) ) - (global.set $~argumentsLength - (i32.const 3) + (local.get $i) + (call $~lib/rt/__tmptostack + (local.get $array) ) - (i32.load - (local.get $fn) + (block (result i32) + (call $~lib/rt/closure/setClosureEnv + (i32.load offset=4 + (local.get $4) + ) + ) + (global.set $~argumentsLength + (i32.const 3) + ) + (i32.load + (local.get $4) + ) ) ) ) @@ -26216,6 +26600,7 @@ (func $"~lib/typedarray/FIND_LAST_INDEX<~lib/typedarray/Uint32Array,u32>" (param $array i32) (param $fn i32) (result i32) (local $ptr i32) (local $i i32) + (local $4 i32) (local.set $ptr (call $~lib/arraybuffer/ArrayBufferView#get:dataStart (call $~lib/rt/__tmptostack @@ -26241,31 +26626,36 @@ ) (then (if - (call_indirect (type $1) - (i32.load - (i32.add - (local.get $ptr) - (i32.shl - (local.get $i) - (i32.const 2) - ) - ) - ) - (local.get $i) - (call $~lib/rt/__tmptostack - (local.get $array) + (block (result i32) + (local.set $4 + (local.get $fn) ) - (block (result i32) - (call $~lib/rt/closure/setClosureEnv - (i32.load offset=4 - (local.get $fn) + (call_indirect (type $1) + (i32.load + (i32.add + (local.get $ptr) + (i32.shl + (local.get $i) + (i32.const 2) + ) ) ) - (global.set $~argumentsLength - (i32.const 3) + (local.get $i) + (call $~lib/rt/__tmptostack + (local.get $array) ) - (i32.load - (local.get $fn) + (block (result i32) + (call $~lib/rt/closure/setClosureEnv + (i32.load offset=4 + (local.get $4) + ) + ) + (global.set $~argumentsLength + (i32.const 3) + ) + (i32.load + (local.get $4) + ) ) ) ) @@ -26409,6 +26799,7 @@ (func $"~lib/typedarray/FIND_LAST_INDEX<~lib/typedarray/Int64Array,i64>" (param $array i32) (param $fn i32) (result i32) (local $ptr i32) (local $i i32) + (local $4 i32) (local.set $ptr (call $~lib/arraybuffer/ArrayBufferView#get:dataStart (call $~lib/rt/__tmptostack @@ -26434,31 +26825,36 @@ ) (then (if - (call_indirect (type $7) - (i64.load - (i32.add - (local.get $ptr) - (i32.shl - (local.get $i) - (i32.const 3) - ) - ) - ) - (local.get $i) - (call $~lib/rt/__tmptostack - (local.get $array) + (block (result i32) + (local.set $4 + (local.get $fn) ) - (block (result i32) - (call $~lib/rt/closure/setClosureEnv - (i32.load offset=4 - (local.get $fn) + (call_indirect (type $7) + (i64.load + (i32.add + (local.get $ptr) + (i32.shl + (local.get $i) + (i32.const 3) + ) ) ) - (global.set $~argumentsLength - (i32.const 3) + (local.get $i) + (call $~lib/rt/__tmptostack + (local.get $array) ) - (i32.load - (local.get $fn) + (block (result i32) + (call $~lib/rt/closure/setClosureEnv + (i32.load offset=4 + (local.get $4) + ) + ) + (global.set $~argumentsLength + (i32.const 3) + ) + (i32.load + (local.get $4) + ) ) ) ) @@ -26602,6 +26998,7 @@ (func $"~lib/typedarray/FIND_LAST_INDEX<~lib/typedarray/Uint64Array,u64>" (param $array i32) (param $fn i32) (result i32) (local $ptr i32) (local $i i32) + (local $4 i32) (local.set $ptr (call $~lib/arraybuffer/ArrayBufferView#get:dataStart (call $~lib/rt/__tmptostack @@ -26627,31 +27024,36 @@ ) (then (if - (call_indirect (type $7) - (i64.load - (i32.add - (local.get $ptr) - (i32.shl - (local.get $i) - (i32.const 3) - ) - ) - ) - (local.get $i) - (call $~lib/rt/__tmptostack - (local.get $array) + (block (result i32) + (local.set $4 + (local.get $fn) ) - (block (result i32) - (call $~lib/rt/closure/setClosureEnv - (i32.load offset=4 - (local.get $fn) + (call_indirect (type $7) + (i64.load + (i32.add + (local.get $ptr) + (i32.shl + (local.get $i) + (i32.const 3) + ) ) ) - (global.set $~argumentsLength - (i32.const 3) + (local.get $i) + (call $~lib/rt/__tmptostack + (local.get $array) ) - (i32.load - (local.get $fn) + (block (result i32) + (call $~lib/rt/closure/setClosureEnv + (i32.load offset=4 + (local.get $4) + ) + ) + (global.set $~argumentsLength + (i32.const 3) + ) + (i32.load + (local.get $4) + ) ) ) ) @@ -26795,6 +27197,7 @@ (func $"~lib/typedarray/FIND_LAST_INDEX<~lib/typedarray/Float32Array,f32>" (param $array i32) (param $fn i32) (result i32) (local $ptr i32) (local $i i32) + (local $4 i32) (local.set $ptr (call $~lib/arraybuffer/ArrayBufferView#get:dataStart (call $~lib/rt/__tmptostack @@ -26820,31 +27223,36 @@ ) (then (if - (call_indirect (type $9) - (f32.load - (i32.add - (local.get $ptr) - (i32.shl - (local.get $i) - (i32.const 2) - ) - ) - ) - (local.get $i) - (call $~lib/rt/__tmptostack - (local.get $array) + (block (result i32) + (local.set $4 + (local.get $fn) ) - (block (result i32) - (call $~lib/rt/closure/setClosureEnv - (i32.load offset=4 - (local.get $fn) + (call_indirect (type $9) + (f32.load + (i32.add + (local.get $ptr) + (i32.shl + (local.get $i) + (i32.const 2) + ) ) ) - (global.set $~argumentsLength - (i32.const 3) + (local.get $i) + (call $~lib/rt/__tmptostack + (local.get $array) ) - (i32.load - (local.get $fn) + (block (result i32) + (call $~lib/rt/closure/setClosureEnv + (i32.load offset=4 + (local.get $4) + ) + ) + (global.set $~argumentsLength + (i32.const 3) + ) + (i32.load + (local.get $4) + ) ) ) ) @@ -26988,6 +27396,7 @@ (func $"~lib/typedarray/FIND_LAST_INDEX<~lib/typedarray/Float64Array,f64>" (param $array i32) (param $fn i32) (result i32) (local $ptr i32) (local $i i32) + (local $4 i32) (local.set $ptr (call $~lib/arraybuffer/ArrayBufferView#get:dataStart (call $~lib/rt/__tmptostack @@ -27013,31 +27422,36 @@ ) (then (if - (call_indirect (type $10) - (f64.load - (i32.add - (local.get $ptr) - (i32.shl - (local.get $i) - (i32.const 3) - ) - ) - ) - (local.get $i) - (call $~lib/rt/__tmptostack - (local.get $array) + (block (result i32) + (local.set $4 + (local.get $fn) ) - (block (result i32) - (call $~lib/rt/closure/setClosureEnv - (i32.load offset=4 - (local.get $fn) + (call_indirect (type $10) + (f64.load + (i32.add + (local.get $ptr) + (i32.shl + (local.get $i) + (i32.const 3) + ) ) ) - (global.set $~argumentsLength - (i32.const 3) + (local.get $i) + (call $~lib/rt/__tmptostack + (local.get $array) ) - (i32.load - (local.get $fn) + (block (result i32) + (call $~lib/rt/closure/setClosureEnv + (i32.load offset=4 + (local.get $4) + ) + ) + (global.set $~argumentsLength + (i32.const 3) + ) + (i32.load + (local.get $4) + ) ) ) ) @@ -27187,6 +27601,7 @@ (local $ptr i32) (local $i i32) (local $k i32) + (local $5 i32) (local.set $ptr (call $~lib/arraybuffer/ArrayBufferView#get:dataStart (call $~lib/rt/__tmptostack @@ -27215,31 +27630,36 @@ (then (block $for-continue|0 (if - (call_indirect (type $1) - (i32.load8_s - (i32.add - (local.get $ptr) - (i32.shl - (local.get $i) - (i32.const 0) - ) - ) - ) - (local.get $i) - (call $~lib/rt/__tmptostack - (local.get $array) + (block (result i32) + (local.set $5 + (local.get $fn) ) - (block (result i32) - (call $~lib/rt/closure/setClosureEnv - (i32.load offset=4 - (local.get $fn) + (call_indirect (type $1) + (i32.load8_s + (i32.add + (local.get $ptr) + (i32.shl + (local.get $i) + (i32.const 0) + ) ) ) - (global.set $~argumentsLength - (i32.const 3) + (local.get $i) + (call $~lib/rt/__tmptostack + (local.get $array) ) - (i32.load - (local.get $fn) + (block (result i32) + (call $~lib/rt/closure/setClosureEnv + (i32.load offset=4 + (local.get $5) + ) + ) + (global.set $~argumentsLength + (i32.const 3) + ) + (i32.load + (local.get $5) + ) ) ) ) @@ -27390,6 +27810,7 @@ (local $ptr i32) (local $i i32) (local $k i32) + (local $5 i32) (local.set $ptr (call $~lib/arraybuffer/ArrayBufferView#get:dataStart (call $~lib/rt/__tmptostack @@ -27418,31 +27839,36 @@ (then (block $for-continue|0 (if - (call_indirect (type $1) - (i32.load8_u - (i32.add - (local.get $ptr) - (i32.shl - (local.get $i) - (i32.const 0) - ) - ) - ) - (local.get $i) - (call $~lib/rt/__tmptostack - (local.get $array) + (block (result i32) + (local.set $5 + (local.get $fn) ) - (block (result i32) - (call $~lib/rt/closure/setClosureEnv - (i32.load offset=4 - (local.get $fn) + (call_indirect (type $1) + (i32.load8_u + (i32.add + (local.get $ptr) + (i32.shl + (local.get $i) + (i32.const 0) + ) ) ) - (global.set $~argumentsLength - (i32.const 3) + (local.get $i) + (call $~lib/rt/__tmptostack + (local.get $array) ) - (i32.load - (local.get $fn) + (block (result i32) + (call $~lib/rt/closure/setClosureEnv + (i32.load offset=4 + (local.get $5) + ) + ) + (global.set $~argumentsLength + (i32.const 3) + ) + (i32.load + (local.get $5) + ) ) ) ) @@ -27594,6 +28020,7 @@ (local $ptr i32) (local $i i32) (local $k i32) + (local $5 i32) (local.set $ptr (call $~lib/arraybuffer/ArrayBufferView#get:dataStart (call $~lib/rt/__tmptostack @@ -27622,31 +28049,36 @@ (then (block $for-continue|0 (if - (call_indirect (type $1) - (i32.load8_u - (i32.add - (local.get $ptr) - (i32.shl - (local.get $i) - (i32.const 0) - ) - ) - ) - (local.get $i) - (call $~lib/rt/__tmptostack - (local.get $array) + (block (result i32) + (local.set $5 + (local.get $fn) ) - (block (result i32) - (call $~lib/rt/closure/setClosureEnv - (i32.load offset=4 - (local.get $fn) + (call_indirect (type $1) + (i32.load8_u + (i32.add + (local.get $ptr) + (i32.shl + (local.get $i) + (i32.const 0) + ) ) ) - (global.set $~argumentsLength - (i32.const 3) + (local.get $i) + (call $~lib/rt/__tmptostack + (local.get $array) ) - (i32.load - (local.get $fn) + (block (result i32) + (call $~lib/rt/closure/setClosureEnv + (i32.load offset=4 + (local.get $5) + ) + ) + (global.set $~argumentsLength + (i32.const 3) + ) + (i32.load + (local.get $5) + ) ) ) ) @@ -27797,6 +28229,7 @@ (local $ptr i32) (local $i i32) (local $k i32) + (local $5 i32) (local.set $ptr (call $~lib/arraybuffer/ArrayBufferView#get:dataStart (call $~lib/rt/__tmptostack @@ -27825,31 +28258,36 @@ (then (block $for-continue|0 (if - (call_indirect (type $1) - (i32.load16_s - (i32.add - (local.get $ptr) - (i32.shl - (local.get $i) - (i32.const 1) - ) - ) - ) - (local.get $i) - (call $~lib/rt/__tmptostack - (local.get $array) + (block (result i32) + (local.set $5 + (local.get $fn) ) - (block (result i32) - (call $~lib/rt/closure/setClosureEnv - (i32.load offset=4 - (local.get $fn) + (call_indirect (type $1) + (i32.load16_s + (i32.add + (local.get $ptr) + (i32.shl + (local.get $i) + (i32.const 1) + ) ) ) - (global.set $~argumentsLength - (i32.const 3) + (local.get $i) + (call $~lib/rt/__tmptostack + (local.get $array) ) - (i32.load - (local.get $fn) + (block (result i32) + (call $~lib/rt/closure/setClosureEnv + (i32.load offset=4 + (local.get $5) + ) + ) + (global.set $~argumentsLength + (i32.const 3) + ) + (i32.load + (local.get $5) + ) ) ) ) @@ -28000,6 +28438,7 @@ (local $ptr i32) (local $i i32) (local $k i32) + (local $5 i32) (local.set $ptr (call $~lib/arraybuffer/ArrayBufferView#get:dataStart (call $~lib/rt/__tmptostack @@ -28028,31 +28467,36 @@ (then (block $for-continue|0 (if - (call_indirect (type $1) - (i32.load16_u - (i32.add - (local.get $ptr) - (i32.shl - (local.get $i) - (i32.const 1) - ) - ) - ) - (local.get $i) - (call $~lib/rt/__tmptostack - (local.get $array) + (block (result i32) + (local.set $5 + (local.get $fn) ) - (block (result i32) - (call $~lib/rt/closure/setClosureEnv - (i32.load offset=4 - (local.get $fn) + (call_indirect (type $1) + (i32.load16_u + (i32.add + (local.get $ptr) + (i32.shl + (local.get $i) + (i32.const 1) + ) ) ) - (global.set $~argumentsLength - (i32.const 3) + (local.get $i) + (call $~lib/rt/__tmptostack + (local.get $array) ) - (i32.load - (local.get $fn) + (block (result i32) + (call $~lib/rt/closure/setClosureEnv + (i32.load offset=4 + (local.get $5) + ) + ) + (global.set $~argumentsLength + (i32.const 3) + ) + (i32.load + (local.get $5) + ) ) ) ) @@ -28201,6 +28645,7 @@ (local $ptr i32) (local $i i32) (local $k i32) + (local $5 i32) (local.set $ptr (call $~lib/arraybuffer/ArrayBufferView#get:dataStart (call $~lib/rt/__tmptostack @@ -28229,31 +28674,36 @@ (then (block $for-continue|0 (if - (call_indirect (type $1) - (i32.load - (i32.add - (local.get $ptr) - (i32.shl - (local.get $i) - (i32.const 2) - ) - ) - ) - (local.get $i) - (call $~lib/rt/__tmptostack - (local.get $array) + (block (result i32) + (local.set $5 + (local.get $fn) ) - (block (result i32) - (call $~lib/rt/closure/setClosureEnv - (i32.load offset=4 - (local.get $fn) + (call_indirect (type $1) + (i32.load + (i32.add + (local.get $ptr) + (i32.shl + (local.get $i) + (i32.const 2) + ) ) ) - (global.set $~argumentsLength - (i32.const 3) + (local.get $i) + (call $~lib/rt/__tmptostack + (local.get $array) ) - (i32.load - (local.get $fn) + (block (result i32) + (call $~lib/rt/closure/setClosureEnv + (i32.load offset=4 + (local.get $5) + ) + ) + (global.set $~argumentsLength + (i32.const 3) + ) + (i32.load + (local.get $5) + ) ) ) ) @@ -28399,6 +28849,7 @@ (local $ptr i32) (local $i i32) (local $k i32) + (local $5 i32) (local.set $ptr (call $~lib/arraybuffer/ArrayBufferView#get:dataStart (call $~lib/rt/__tmptostack @@ -28427,31 +28878,36 @@ (then (block $for-continue|0 (if - (call_indirect (type $1) - (i32.load - (i32.add - (local.get $ptr) - (i32.shl - (local.get $i) - (i32.const 2) - ) - ) - ) - (local.get $i) - (call $~lib/rt/__tmptostack - (local.get $array) + (block (result i32) + (local.set $5 + (local.get $fn) ) - (block (result i32) - (call $~lib/rt/closure/setClosureEnv - (i32.load offset=4 - (local.get $fn) + (call_indirect (type $1) + (i32.load + (i32.add + (local.get $ptr) + (i32.shl + (local.get $i) + (i32.const 2) + ) ) ) - (global.set $~argumentsLength - (i32.const 3) + (local.get $i) + (call $~lib/rt/__tmptostack + (local.get $array) ) - (i32.load - (local.get $fn) + (block (result i32) + (call $~lib/rt/closure/setClosureEnv + (i32.load offset=4 + (local.get $5) + ) + ) + (global.set $~argumentsLength + (i32.const 3) + ) + (i32.load + (local.get $5) + ) ) ) ) @@ -28597,6 +29053,7 @@ (local $ptr i32) (local $i i32) (local $k i32) + (local $5 i32) (local.set $ptr (call $~lib/arraybuffer/ArrayBufferView#get:dataStart (call $~lib/rt/__tmptostack @@ -28625,31 +29082,36 @@ (then (block $for-continue|0 (if - (call_indirect (type $7) - (i64.load - (i32.add - (local.get $ptr) - (i32.shl - (local.get $i) - (i32.const 3) - ) - ) - ) - (local.get $i) - (call $~lib/rt/__tmptostack - (local.get $array) + (block (result i32) + (local.set $5 + (local.get $fn) ) - (block (result i32) - (call $~lib/rt/closure/setClosureEnv - (i32.load offset=4 - (local.get $fn) + (call_indirect (type $7) + (i64.load + (i32.add + (local.get $ptr) + (i32.shl + (local.get $i) + (i32.const 3) + ) ) ) - (global.set $~argumentsLength - (i32.const 3) + (local.get $i) + (call $~lib/rt/__tmptostack + (local.get $array) ) - (i32.load - (local.get $fn) + (block (result i32) + (call $~lib/rt/closure/setClosureEnv + (i32.load offset=4 + (local.get $5) + ) + ) + (global.set $~argumentsLength + (i32.const 3) + ) + (i32.load + (local.get $5) + ) ) ) ) @@ -28795,6 +29257,7 @@ (local $ptr i32) (local $i i32) (local $k i32) + (local $5 i32) (local.set $ptr (call $~lib/arraybuffer/ArrayBufferView#get:dataStart (call $~lib/rt/__tmptostack @@ -28823,31 +29286,36 @@ (then (block $for-continue|0 (if - (call_indirect (type $7) - (i64.load - (i32.add - (local.get $ptr) - (i32.shl - (local.get $i) - (i32.const 3) - ) - ) - ) - (local.get $i) - (call $~lib/rt/__tmptostack - (local.get $array) + (block (result i32) + (local.set $5 + (local.get $fn) ) - (block (result i32) - (call $~lib/rt/closure/setClosureEnv - (i32.load offset=4 - (local.get $fn) + (call_indirect (type $7) + (i64.load + (i32.add + (local.get $ptr) + (i32.shl + (local.get $i) + (i32.const 3) + ) ) ) - (global.set $~argumentsLength - (i32.const 3) + (local.get $i) + (call $~lib/rt/__tmptostack + (local.get $array) ) - (i32.load - (local.get $fn) + (block (result i32) + (call $~lib/rt/closure/setClosureEnv + (i32.load offset=4 + (local.get $5) + ) + ) + (global.set $~argumentsLength + (i32.const 3) + ) + (i32.load + (local.get $5) + ) ) ) ) @@ -29375,6 +29843,7 @@ (local $ptr i32) (local $i i32) (local $k i32) + (local $5 i32) (local.set $ptr (call $~lib/arraybuffer/ArrayBufferView#get:dataStart (call $~lib/rt/__tmptostack @@ -29403,31 +29872,36 @@ (then (block $for-continue|0 (if - (call_indirect (type $9) - (f32.load - (i32.add - (local.get $ptr) - (i32.shl - (local.get $i) - (i32.const 2) - ) - ) - ) - (local.get $i) - (call $~lib/rt/__tmptostack - (local.get $array) + (block (result i32) + (local.set $5 + (local.get $fn) ) - (block (result i32) - (call $~lib/rt/closure/setClosureEnv - (i32.load offset=4 - (local.get $fn) + (call_indirect (type $9) + (f32.load + (i32.add + (local.get $ptr) + (i32.shl + (local.get $i) + (i32.const 2) + ) ) ) - (global.set $~argumentsLength - (i32.const 3) + (local.get $i) + (call $~lib/rt/__tmptostack + (local.get $array) ) - (i32.load - (local.get $fn) + (block (result i32) + (call $~lib/rt/closure/setClosureEnv + (i32.load offset=4 + (local.get $5) + ) + ) + (global.set $~argumentsLength + (i32.const 3) + ) + (i32.load + (local.get $5) + ) ) ) ) @@ -29964,6 +30438,7 @@ (local $ptr i32) (local $i i32) (local $k i32) + (local $5 i32) (local.set $ptr (call $~lib/arraybuffer/ArrayBufferView#get:dataStart (call $~lib/rt/__tmptostack @@ -29992,31 +30467,36 @@ (then (block $for-continue|0 (if - (call_indirect (type $10) - (f64.load - (i32.add - (local.get $ptr) - (i32.shl - (local.get $i) - (i32.const 3) - ) - ) - ) - (local.get $i) - (call $~lib/rt/__tmptostack - (local.get $array) + (block (result i32) + (local.set $5 + (local.get $fn) ) - (block (result i32) - (call $~lib/rt/closure/setClosureEnv - (i32.load offset=4 - (local.get $fn) + (call_indirect (type $10) + (f64.load + (i32.add + (local.get $ptr) + (i32.shl + (local.get $i) + (i32.const 3) + ) ) ) - (global.set $~argumentsLength - (i32.const 3) + (local.get $i) + (call $~lib/rt/__tmptostack + (local.get $array) ) - (i32.load - (local.get $fn) + (block (result i32) + (call $~lib/rt/closure/setClosureEnv + (i32.load offset=4 + (local.get $5) + ) + ) + (global.set $~argumentsLength + (i32.const 3) + ) + (i32.load + (local.get $5) + ) ) ) ) @@ -30225,6 +30705,7 @@ (local $ptr i32) (local $i i32) (local $k i32) + (local $5 i32) (local.set $ptr (call $~lib/arraybuffer/ArrayBufferView#get:dataStart (call $~lib/rt/__tmptostack @@ -30251,6 +30732,9 @@ (local.get $k) ) (then + (local.set $5 + (local.get $fn) + ) (call_indirect (type $3) (i32.load8_s (i32.add @@ -30268,14 +30752,14 @@ (block (result i32) (call $~lib/rt/closure/setClosureEnv (i32.load offset=4 - (local.get $fn) + (local.get $5) ) ) (global.set $~argumentsLength (i32.const 3) ) (i32.load - (local.get $fn) + (local.get $5) ) ) ) @@ -30467,6 +30951,7 @@ (local $ptr i32) (local $i i32) (local $k i32) + (local $5 i32) (local.set $ptr (call $~lib/arraybuffer/ArrayBufferView#get:dataStart (call $~lib/rt/__tmptostack @@ -30493,6 +30978,9 @@ (local.get $k) ) (then + (local.set $5 + (local.get $fn) + ) (call_indirect (type $3) (i32.load8_u (i32.add @@ -30510,14 +30998,14 @@ (block (result i32) (call $~lib/rt/closure/setClosureEnv (i32.load offset=4 - (local.get $fn) + (local.get $5) ) ) (global.set $~argumentsLength (i32.const 3) ) (i32.load - (local.get $fn) + (local.get $5) ) ) ) @@ -30712,6 +31200,7 @@ (local $ptr i32) (local $i i32) (local $k i32) + (local $5 i32) (local.set $ptr (call $~lib/arraybuffer/ArrayBufferView#get:dataStart (call $~lib/rt/__tmptostack @@ -30738,6 +31227,9 @@ (local.get $k) ) (then + (local.set $5 + (local.get $fn) + ) (call_indirect (type $3) (i32.load8_u (i32.add @@ -30755,14 +31247,14 @@ (block (result i32) (call $~lib/rt/closure/setClosureEnv (i32.load offset=4 - (local.get $fn) + (local.get $5) ) ) (global.set $~argumentsLength (i32.const 3) ) (i32.load - (local.get $fn) + (local.get $5) ) ) ) @@ -30955,6 +31447,7 @@ (local $ptr i32) (local $i i32) (local $k i32) + (local $5 i32) (local.set $ptr (call $~lib/arraybuffer/ArrayBufferView#get:dataStart (call $~lib/rt/__tmptostack @@ -30981,6 +31474,9 @@ (local.get $k) ) (then + (local.set $5 + (local.get $fn) + ) (call_indirect (type $3) (i32.load16_s (i32.add @@ -30998,14 +31494,14 @@ (block (result i32) (call $~lib/rt/closure/setClosureEnv (i32.load offset=4 - (local.get $fn) + (local.get $5) ) ) (global.set $~argumentsLength (i32.const 3) ) (i32.load - (local.get $fn) + (local.get $5) ) ) ) @@ -31197,6 +31693,7 @@ (local $ptr i32) (local $i i32) (local $k i32) + (local $5 i32) (local.set $ptr (call $~lib/arraybuffer/ArrayBufferView#get:dataStart (call $~lib/rt/__tmptostack @@ -31223,6 +31720,9 @@ (local.get $k) ) (then + (local.set $5 + (local.get $fn) + ) (call_indirect (type $3) (i32.load16_u (i32.add @@ -31240,14 +31740,14 @@ (block (result i32) (call $~lib/rt/closure/setClosureEnv (i32.load offset=4 - (local.get $fn) + (local.get $5) ) ) (global.set $~argumentsLength (i32.const 3) ) (i32.load - (local.get $fn) + (local.get $5) ) ) ) @@ -31436,6 +31936,7 @@ (local $ptr i32) (local $i i32) (local $k i32) + (local $5 i32) (local.set $ptr (call $~lib/arraybuffer/ArrayBufferView#get:dataStart (call $~lib/rt/__tmptostack @@ -31462,6 +31963,9 @@ (local.get $k) ) (then + (local.set $5 + (local.get $fn) + ) (call_indirect (type $3) (i32.load (i32.add @@ -31479,14 +31983,14 @@ (block (result i32) (call $~lib/rt/closure/setClosureEnv (i32.load offset=4 - (local.get $fn) + (local.get $5) ) ) (global.set $~argumentsLength (i32.const 3) ) (i32.load - (local.get $fn) + (local.get $5) ) ) ) @@ -31666,6 +32170,7 @@ (local $ptr i32) (local $i i32) (local $k i32) + (local $5 i32) (local.set $ptr (call $~lib/arraybuffer/ArrayBufferView#get:dataStart (call $~lib/rt/__tmptostack @@ -31692,6 +32197,9 @@ (local.get $k) ) (then + (local.set $5 + (local.get $fn) + ) (call_indirect (type $3) (i32.load (i32.add @@ -31709,14 +32217,14 @@ (block (result i32) (call $~lib/rt/closure/setClosureEnv (i32.load offset=4 - (local.get $fn) + (local.get $5) ) ) (global.set $~argumentsLength (i32.const 3) ) (i32.load - (local.get $fn) + (local.get $5) ) ) ) @@ -31898,6 +32406,7 @@ (local $ptr i32) (local $i i32) (local $k i32) + (local $5 i32) (local.set $ptr (call $~lib/arraybuffer/ArrayBufferView#get:dataStart (call $~lib/rt/__tmptostack @@ -31924,6 +32433,9 @@ (local.get $k) ) (then + (local.set $5 + (local.get $fn) + ) (call_indirect (type $23) (i64.load (i32.add @@ -31941,14 +32453,14 @@ (block (result i32) (call $~lib/rt/closure/setClosureEnv (i32.load offset=4 - (local.get $fn) + (local.get $5) ) ) (global.set $~argumentsLength (i32.const 3) ) (i32.load - (local.get $fn) + (local.get $5) ) ) ) @@ -32136,6 +32648,7 @@ (local $ptr i32) (local $i i32) (local $k i32) + (local $5 i32) (local.set $ptr (call $~lib/arraybuffer/ArrayBufferView#get:dataStart (call $~lib/rt/__tmptostack @@ -32162,6 +32675,9 @@ (local.get $k) ) (then + (local.set $5 + (local.get $fn) + ) (call_indirect (type $23) (i64.load (i32.add @@ -32179,14 +32695,14 @@ (block (result i32) (call $~lib/rt/closure/setClosureEnv (i32.load offset=4 - (local.get $fn) + (local.get $5) ) ) (global.set $~argumentsLength (i32.const 3) ) (i32.load - (local.get $fn) + (local.get $5) ) ) ) @@ -32374,6 +32890,7 @@ (local $ptr i32) (local $i i32) (local $k i32) + (local $5 i32) (local.set $ptr (call $~lib/arraybuffer/ArrayBufferView#get:dataStart (call $~lib/rt/__tmptostack @@ -32400,6 +32917,9 @@ (local.get $k) ) (then + (local.set $5 + (local.get $fn) + ) (call_indirect (type $38) (f32.load (i32.add @@ -32417,14 +32937,14 @@ (block (result i32) (call $~lib/rt/closure/setClosureEnv (i32.load offset=4 - (local.get $fn) + (local.get $5) ) ) (global.set $~argumentsLength (i32.const 3) ) (i32.load - (local.get $fn) + (local.get $5) ) ) ) @@ -32612,6 +33132,7 @@ (local $ptr i32) (local $i i32) (local $k i32) + (local $5 i32) (local.set $ptr (call $~lib/arraybuffer/ArrayBufferView#get:dataStart (call $~lib/rt/__tmptostack @@ -32638,6 +33159,9 @@ (local.get $k) ) (then + (local.set $5 + (local.get $fn) + ) (call_indirect (type $39) (f64.load (i32.add @@ -32655,14 +33179,14 @@ (block (result i32) (call $~lib/rt/closure/setClosureEnv (i32.load offset=4 - (local.get $fn) + (local.get $5) ) ) (global.set $~argumentsLength (i32.const 3) ) (i32.load - (local.get $fn) + (local.get $5) ) ) ) @@ -77913,8 +78437,11 @@ ) (func $~lib/util/sort/extendRunRight (param $ptr i32) (param $i i32) (param $right i32) (param $comparator i32) (result i32) (local $j i32) + (local $5 i32) + (local $6 i32) (local $k i32) (local $tmp i32) + (local $9 i32) (if (i32.eq (local.get $i) @@ -77931,41 +78458,46 @@ ) (if (i32.gt_s - (call_indirect (type $0) - (i32.load8_s - (i32.add - (local.get $ptr) - (i32.shl - (local.get $j) - (i32.const 0) + (block (result i32) + (local.set $5 + (local.get $comparator) + ) + (call_indirect (type $0) + (i32.load8_s + (i32.add + (local.get $ptr) + (i32.shl + (local.get $j) + (i32.const 0) + ) ) ) - ) - (i32.load8_s - (i32.add - (local.get $ptr) - (i32.shl - (local.tee $j - (i32.add - (local.get $j) - (i32.const 1) + (i32.load8_s + (i32.add + (local.get $ptr) + (i32.shl + (local.tee $j + (i32.add + (local.get $j) + (i32.const 1) + ) ) + (i32.const 0) ) - (i32.const 0) ) ) - ) - (block (result i32) - (call $~lib/rt/closure/setClosureEnv - (i32.load offset=4 - (local.get $comparator) + (block (result i32) + (call $~lib/rt/closure/setClosureEnv + (i32.load offset=4 + (local.get $5) + ) + ) + (global.set $~argumentsLength + (i32.const 2) + ) + (i32.load + (local.get $5) ) - ) - (global.set $~argumentsLength - (i32.const 2) - ) - (i32.load - (local.get $comparator) ) ) ) @@ -77982,36 +78514,41 @@ ) (then (i32.shr_u - (call_indirect (type $0) - (i32.load8_s offset=1 - (i32.add - (local.get $ptr) - (i32.shl - (local.get $j) - (i32.const 0) - ) - ) + (block (result i32) + (local.set $6 + (local.get $comparator) ) - (i32.load8_s - (i32.add - (local.get $ptr) - (i32.shl - (local.get $j) - (i32.const 0) + (call_indirect (type $0) + (i32.load8_s offset=1 + (i32.add + (local.get $ptr) + (i32.shl + (local.get $j) + (i32.const 0) + ) ) ) - ) - (block (result i32) - (call $~lib/rt/closure/setClosureEnv - (i32.load offset=4 - (local.get $comparator) + (i32.load8_s + (i32.add + (local.get $ptr) + (i32.shl + (local.get $j) + (i32.const 0) + ) ) ) - (global.set $~argumentsLength - (i32.const 2) - ) - (i32.load - (local.get $comparator) + (block (result i32) + (call $~lib/rt/closure/setClosureEnv + (i32.load offset=4 + (local.get $6) + ) + ) + (global.set $~argumentsLength + (i32.const 2) + ) + (i32.load + (local.get $6) + ) ) ) ) @@ -78113,36 +78650,41 @@ ) (then (i32.ge_s - (call_indirect (type $0) - (i32.load8_s offset=1 - (i32.add - (local.get $ptr) - (i32.shl - (local.get $j) - (i32.const 0) - ) - ) + (block (result i32) + (local.set $9 + (local.get $comparator) ) - (i32.load8_s - (i32.add - (local.get $ptr) - (i32.shl - (local.get $j) - (i32.const 0) + (call_indirect (type $0) + (i32.load8_s offset=1 + (i32.add + (local.get $ptr) + (i32.shl + (local.get $j) + (i32.const 0) + ) ) ) - ) - (block (result i32) - (call $~lib/rt/closure/setClosureEnv - (i32.load offset=4 - (local.get $comparator) + (i32.load8_s + (i32.add + (local.get $ptr) + (i32.shl + (local.get $j) + (i32.const 0) + ) ) ) - (global.set $~argumentsLength - (i32.const 2) - ) - (i32.load - (local.get $comparator) + (block (result i32) + (call $~lib/rt/closure/setClosureEnv + (i32.load offset=4 + (local.get $9) + ) + ) + (global.set $~argumentsLength + (i32.const 2) + ) + (i32.load + (local.get $9) + ) ) ) ) @@ -79568,8 +80110,11 @@ ) (func $~lib/util/sort/extendRunRight (param $ptr i32) (param $i i32) (param $right i32) (param $comparator i32) (result i32) (local $j i32) + (local $5 i32) + (local $6 i32) (local $k i32) (local $tmp i32) + (local $9 i32) (if (i32.eq (local.get $i) @@ -79586,41 +80131,46 @@ ) (if (i32.gt_s - (call_indirect (type $0) - (i32.load8_u - (i32.add - (local.get $ptr) - (i32.shl - (local.get $j) - (i32.const 0) + (block (result i32) + (local.set $5 + (local.get $comparator) + ) + (call_indirect (type $0) + (i32.load8_u + (i32.add + (local.get $ptr) + (i32.shl + (local.get $j) + (i32.const 0) + ) ) ) - ) - (i32.load8_u - (i32.add - (local.get $ptr) - (i32.shl - (local.tee $j - (i32.add - (local.get $j) - (i32.const 1) + (i32.load8_u + (i32.add + (local.get $ptr) + (i32.shl + (local.tee $j + (i32.add + (local.get $j) + (i32.const 1) + ) ) + (i32.const 0) ) - (i32.const 0) ) ) - ) - (block (result i32) - (call $~lib/rt/closure/setClosureEnv - (i32.load offset=4 - (local.get $comparator) + (block (result i32) + (call $~lib/rt/closure/setClosureEnv + (i32.load offset=4 + (local.get $5) + ) + ) + (global.set $~argumentsLength + (i32.const 2) + ) + (i32.load + (local.get $5) ) - ) - (global.set $~argumentsLength - (i32.const 2) - ) - (i32.load - (local.get $comparator) ) ) ) @@ -79637,36 +80187,41 @@ ) (then (i32.shr_u - (call_indirect (type $0) - (i32.load8_u offset=1 - (i32.add - (local.get $ptr) - (i32.shl - (local.get $j) - (i32.const 0) - ) - ) + (block (result i32) + (local.set $6 + (local.get $comparator) ) - (i32.load8_u - (i32.add - (local.get $ptr) - (i32.shl - (local.get $j) - (i32.const 0) + (call_indirect (type $0) + (i32.load8_u offset=1 + (i32.add + (local.get $ptr) + (i32.shl + (local.get $j) + (i32.const 0) + ) ) ) - ) - (block (result i32) - (call $~lib/rt/closure/setClosureEnv - (i32.load offset=4 - (local.get $comparator) + (i32.load8_u + (i32.add + (local.get $ptr) + (i32.shl + (local.get $j) + (i32.const 0) + ) ) ) - (global.set $~argumentsLength - (i32.const 2) - ) - (i32.load - (local.get $comparator) + (block (result i32) + (call $~lib/rt/closure/setClosureEnv + (i32.load offset=4 + (local.get $6) + ) + ) + (global.set $~argumentsLength + (i32.const 2) + ) + (i32.load + (local.get $6) + ) ) ) ) @@ -79768,36 +80323,41 @@ ) (then (i32.ge_s - (call_indirect (type $0) - (i32.load8_u offset=1 - (i32.add - (local.get $ptr) - (i32.shl - (local.get $j) - (i32.const 0) - ) - ) + (block (result i32) + (local.set $9 + (local.get $comparator) ) - (i32.load8_u - (i32.add - (local.get $ptr) - (i32.shl - (local.get $j) - (i32.const 0) + (call_indirect (type $0) + (i32.load8_u offset=1 + (i32.add + (local.get $ptr) + (i32.shl + (local.get $j) + (i32.const 0) + ) ) ) - ) - (block (result i32) - (call $~lib/rt/closure/setClosureEnv - (i32.load offset=4 - (local.get $comparator) + (i32.load8_u + (i32.add + (local.get $ptr) + (i32.shl + (local.get $j) + (i32.const 0) + ) ) ) - (global.set $~argumentsLength - (i32.const 2) - ) - (i32.load - (local.get $comparator) + (block (result i32) + (call $~lib/rt/closure/setClosureEnv + (i32.load offset=4 + (local.get $9) + ) + ) + (global.set $~argumentsLength + (i32.const 2) + ) + (i32.load + (local.get $9) + ) ) ) ) @@ -81502,8 +82062,11 @@ ) (func $~lib/util/sort/extendRunRight (param $ptr i32) (param $i i32) (param $right i32) (param $comparator i32) (result i32) (local $j i32) + (local $5 i32) + (local $6 i32) (local $k i32) (local $tmp i32) + (local $9 i32) (if (i32.eq (local.get $i) @@ -81520,41 +82083,46 @@ ) (if (i32.gt_s - (call_indirect (type $0) - (i32.load16_s - (i32.add - (local.get $ptr) - (i32.shl - (local.get $j) - (i32.const 1) + (block (result i32) + (local.set $5 + (local.get $comparator) + ) + (call_indirect (type $0) + (i32.load16_s + (i32.add + (local.get $ptr) + (i32.shl + (local.get $j) + (i32.const 1) + ) ) ) - ) - (i32.load16_s - (i32.add - (local.get $ptr) - (i32.shl - (local.tee $j - (i32.add - (local.get $j) - (i32.const 1) + (i32.load16_s + (i32.add + (local.get $ptr) + (i32.shl + (local.tee $j + (i32.add + (local.get $j) + (i32.const 1) + ) ) + (i32.const 1) ) - (i32.const 1) ) ) - ) - (block (result i32) - (call $~lib/rt/closure/setClosureEnv - (i32.load offset=4 - (local.get $comparator) + (block (result i32) + (call $~lib/rt/closure/setClosureEnv + (i32.load offset=4 + (local.get $5) + ) + ) + (global.set $~argumentsLength + (i32.const 2) + ) + (i32.load + (local.get $5) ) - ) - (global.set $~argumentsLength - (i32.const 2) - ) - (i32.load - (local.get $comparator) ) ) ) @@ -81571,36 +82139,41 @@ ) (then (i32.shr_u - (call_indirect (type $0) - (i32.load16_s offset=2 - (i32.add - (local.get $ptr) - (i32.shl - (local.get $j) - (i32.const 1) - ) - ) + (block (result i32) + (local.set $6 + (local.get $comparator) ) - (i32.load16_s - (i32.add - (local.get $ptr) - (i32.shl - (local.get $j) - (i32.const 1) + (call_indirect (type $0) + (i32.load16_s offset=2 + (i32.add + (local.get $ptr) + (i32.shl + (local.get $j) + (i32.const 1) + ) ) ) - ) - (block (result i32) - (call $~lib/rt/closure/setClosureEnv - (i32.load offset=4 - (local.get $comparator) + (i32.load16_s + (i32.add + (local.get $ptr) + (i32.shl + (local.get $j) + (i32.const 1) + ) ) ) - (global.set $~argumentsLength - (i32.const 2) - ) - (i32.load - (local.get $comparator) + (block (result i32) + (call $~lib/rt/closure/setClosureEnv + (i32.load offset=4 + (local.get $6) + ) + ) + (global.set $~argumentsLength + (i32.const 2) + ) + (i32.load + (local.get $6) + ) ) ) ) @@ -81702,36 +82275,41 @@ ) (then (i32.ge_s - (call_indirect (type $0) - (i32.load16_s offset=2 - (i32.add - (local.get $ptr) - (i32.shl - (local.get $j) - (i32.const 1) - ) - ) + (block (result i32) + (local.set $9 + (local.get $comparator) ) - (i32.load16_s - (i32.add - (local.get $ptr) - (i32.shl - (local.get $j) - (i32.const 1) + (call_indirect (type $0) + (i32.load16_s offset=2 + (i32.add + (local.get $ptr) + (i32.shl + (local.get $j) + (i32.const 1) + ) ) ) - ) - (block (result i32) - (call $~lib/rt/closure/setClosureEnv - (i32.load offset=4 - (local.get $comparator) + (i32.load16_s + (i32.add + (local.get $ptr) + (i32.shl + (local.get $j) + (i32.const 1) + ) ) ) - (global.set $~argumentsLength - (i32.const 2) - ) - (i32.load - (local.get $comparator) + (block (result i32) + (call $~lib/rt/closure/setClosureEnv + (i32.load offset=4 + (local.get $9) + ) + ) + (global.set $~argumentsLength + (i32.const 2) + ) + (i32.load + (local.get $9) + ) ) ) ) @@ -83157,8 +83735,11 @@ ) (func $~lib/util/sort/extendRunRight (param $ptr i32) (param $i i32) (param $right i32) (param $comparator i32) (result i32) (local $j i32) + (local $5 i32) + (local $6 i32) (local $k i32) (local $tmp i32) + (local $9 i32) (if (i32.eq (local.get $i) @@ -83175,41 +83756,46 @@ ) (if (i32.gt_s - (call_indirect (type $0) - (i32.load16_u - (i32.add - (local.get $ptr) - (i32.shl - (local.get $j) - (i32.const 1) + (block (result i32) + (local.set $5 + (local.get $comparator) + ) + (call_indirect (type $0) + (i32.load16_u + (i32.add + (local.get $ptr) + (i32.shl + (local.get $j) + (i32.const 1) + ) ) ) - ) - (i32.load16_u - (i32.add - (local.get $ptr) - (i32.shl - (local.tee $j - (i32.add - (local.get $j) - (i32.const 1) + (i32.load16_u + (i32.add + (local.get $ptr) + (i32.shl + (local.tee $j + (i32.add + (local.get $j) + (i32.const 1) + ) ) + (i32.const 1) ) - (i32.const 1) ) ) - ) - (block (result i32) - (call $~lib/rt/closure/setClosureEnv - (i32.load offset=4 - (local.get $comparator) + (block (result i32) + (call $~lib/rt/closure/setClosureEnv + (i32.load offset=4 + (local.get $5) + ) + ) + (global.set $~argumentsLength + (i32.const 2) + ) + (i32.load + (local.get $5) ) - ) - (global.set $~argumentsLength - (i32.const 2) - ) - (i32.load - (local.get $comparator) ) ) ) @@ -83226,36 +83812,41 @@ ) (then (i32.shr_u - (call_indirect (type $0) - (i32.load16_u offset=2 - (i32.add - (local.get $ptr) - (i32.shl - (local.get $j) - (i32.const 1) - ) - ) + (block (result i32) + (local.set $6 + (local.get $comparator) ) - (i32.load16_u - (i32.add - (local.get $ptr) - (i32.shl - (local.get $j) - (i32.const 1) + (call_indirect (type $0) + (i32.load16_u offset=2 + (i32.add + (local.get $ptr) + (i32.shl + (local.get $j) + (i32.const 1) + ) ) ) - ) - (block (result i32) - (call $~lib/rt/closure/setClosureEnv - (i32.load offset=4 - (local.get $comparator) + (i32.load16_u + (i32.add + (local.get $ptr) + (i32.shl + (local.get $j) + (i32.const 1) + ) ) ) - (global.set $~argumentsLength - (i32.const 2) - ) - (i32.load - (local.get $comparator) + (block (result i32) + (call $~lib/rt/closure/setClosureEnv + (i32.load offset=4 + (local.get $6) + ) + ) + (global.set $~argumentsLength + (i32.const 2) + ) + (i32.load + (local.get $6) + ) ) ) ) @@ -83357,36 +83948,41 @@ ) (then (i32.ge_s - (call_indirect (type $0) - (i32.load16_u offset=2 - (i32.add - (local.get $ptr) - (i32.shl - (local.get $j) - (i32.const 1) - ) - ) + (block (result i32) + (local.set $9 + (local.get $comparator) ) - (i32.load16_u - (i32.add - (local.get $ptr) - (i32.shl - (local.get $j) - (i32.const 1) + (call_indirect (type $0) + (i32.load16_u offset=2 + (i32.add + (local.get $ptr) + (i32.shl + (local.get $j) + (i32.const 1) + ) ) ) - ) - (block (result i32) - (call $~lib/rt/closure/setClosureEnv - (i32.load offset=4 - (local.get $comparator) + (i32.load16_u + (i32.add + (local.get $ptr) + (i32.shl + (local.get $j) + (i32.const 1) + ) ) ) - (global.set $~argumentsLength - (i32.const 2) - ) - (i32.load - (local.get $comparator) + (block (result i32) + (call $~lib/rt/closure/setClosureEnv + (i32.load offset=4 + (local.get $9) + ) + ) + (global.set $~argumentsLength + (i32.const 2) + ) + (i32.load + (local.get $9) + ) ) ) ) @@ -84827,8 +85423,11 @@ ) (func $~lib/util/sort/extendRunRight (param $ptr i32) (param $i i32) (param $right i32) (param $comparator i32) (result i32) (local $j i32) + (local $5 i32) + (local $6 i32) (local $k i32) (local $tmp i32) + (local $9 i32) (if (i32.eq (local.get $i) @@ -84845,41 +85444,46 @@ ) (if (i32.gt_s - (call_indirect (type $0) - (i32.load - (i32.add - (local.get $ptr) - (i32.shl - (local.get $j) - (i32.const 2) + (block (result i32) + (local.set $5 + (local.get $comparator) + ) + (call_indirect (type $0) + (i32.load + (i32.add + (local.get $ptr) + (i32.shl + (local.get $j) + (i32.const 2) + ) ) ) - ) - (i32.load - (i32.add - (local.get $ptr) - (i32.shl - (local.tee $j - (i32.add - (local.get $j) - (i32.const 1) + (i32.load + (i32.add + (local.get $ptr) + (i32.shl + (local.tee $j + (i32.add + (local.get $j) + (i32.const 1) + ) ) + (i32.const 2) ) - (i32.const 2) ) ) - ) - (block (result i32) - (call $~lib/rt/closure/setClosureEnv - (i32.load offset=4 - (local.get $comparator) + (block (result i32) + (call $~lib/rt/closure/setClosureEnv + (i32.load offset=4 + (local.get $5) + ) + ) + (global.set $~argumentsLength + (i32.const 2) + ) + (i32.load + (local.get $5) ) - ) - (global.set $~argumentsLength - (i32.const 2) - ) - (i32.load - (local.get $comparator) ) ) ) @@ -84896,36 +85500,41 @@ ) (then (i32.shr_u - (call_indirect (type $0) - (i32.load offset=4 - (i32.add - (local.get $ptr) - (i32.shl - (local.get $j) - (i32.const 2) - ) - ) + (block (result i32) + (local.set $6 + (local.get $comparator) ) - (i32.load - (i32.add - (local.get $ptr) - (i32.shl - (local.get $j) - (i32.const 2) + (call_indirect (type $0) + (i32.load offset=4 + (i32.add + (local.get $ptr) + (i32.shl + (local.get $j) + (i32.const 2) + ) ) ) - ) - (block (result i32) - (call $~lib/rt/closure/setClosureEnv - (i32.load offset=4 - (local.get $comparator) + (i32.load + (i32.add + (local.get $ptr) + (i32.shl + (local.get $j) + (i32.const 2) + ) ) ) - (global.set $~argumentsLength - (i32.const 2) - ) - (i32.load - (local.get $comparator) + (block (result i32) + (call $~lib/rt/closure/setClosureEnv + (i32.load offset=4 + (local.get $6) + ) + ) + (global.set $~argumentsLength + (i32.const 2) + ) + (i32.load + (local.get $6) + ) ) ) ) @@ -85027,36 +85636,41 @@ ) (then (i32.ge_s - (call_indirect (type $0) - (i32.load offset=4 - (i32.add - (local.get $ptr) - (i32.shl - (local.get $j) - (i32.const 2) - ) - ) + (block (result i32) + (local.set $9 + (local.get $comparator) ) - (i32.load - (i32.add - (local.get $ptr) - (i32.shl - (local.get $j) - (i32.const 2) + (call_indirect (type $0) + (i32.load offset=4 + (i32.add + (local.get $ptr) + (i32.shl + (local.get $j) + (i32.const 2) + ) ) ) - ) - (block (result i32) - (call $~lib/rt/closure/setClosureEnv - (i32.load offset=4 - (local.get $comparator) + (i32.load + (i32.add + (local.get $ptr) + (i32.shl + (local.get $j) + (i32.const 2) + ) ) ) - (global.set $~argumentsLength - (i32.const 2) - ) - (i32.load - (local.get $comparator) + (block (result i32) + (call $~lib/rt/closure/setClosureEnv + (i32.load offset=4 + (local.get $9) + ) + ) + (global.set $~argumentsLength + (i32.const 2) + ) + (i32.load + (local.get $9) + ) ) ) ) @@ -86470,8 +87084,11 @@ ) (func $~lib/util/sort/extendRunRight (param $ptr i32) (param $i i32) (param $right i32) (param $comparator i32) (result i32) (local $j i32) + (local $5 i32) + (local $6 i32) (local $k i32) (local $tmp i32) + (local $9 i32) (if (i32.eq (local.get $i) @@ -86488,41 +87105,46 @@ ) (if (i32.gt_s - (call_indirect (type $0) - (i32.load - (i32.add - (local.get $ptr) - (i32.shl - (local.get $j) - (i32.const 2) + (block (result i32) + (local.set $5 + (local.get $comparator) + ) + (call_indirect (type $0) + (i32.load + (i32.add + (local.get $ptr) + (i32.shl + (local.get $j) + (i32.const 2) + ) ) ) - ) - (i32.load - (i32.add - (local.get $ptr) - (i32.shl - (local.tee $j - (i32.add - (local.get $j) - (i32.const 1) + (i32.load + (i32.add + (local.get $ptr) + (i32.shl + (local.tee $j + (i32.add + (local.get $j) + (i32.const 1) + ) ) + (i32.const 2) ) - (i32.const 2) ) ) - ) - (block (result i32) - (call $~lib/rt/closure/setClosureEnv - (i32.load offset=4 - (local.get $comparator) + (block (result i32) + (call $~lib/rt/closure/setClosureEnv + (i32.load offset=4 + (local.get $5) + ) + ) + (global.set $~argumentsLength + (i32.const 2) + ) + (i32.load + (local.get $5) ) - ) - (global.set $~argumentsLength - (i32.const 2) - ) - (i32.load - (local.get $comparator) ) ) ) @@ -86539,36 +87161,41 @@ ) (then (i32.shr_u - (call_indirect (type $0) - (i32.load offset=4 - (i32.add - (local.get $ptr) - (i32.shl - (local.get $j) - (i32.const 2) - ) - ) + (block (result i32) + (local.set $6 + (local.get $comparator) ) - (i32.load - (i32.add - (local.get $ptr) - (i32.shl - (local.get $j) - (i32.const 2) + (call_indirect (type $0) + (i32.load offset=4 + (i32.add + (local.get $ptr) + (i32.shl + (local.get $j) + (i32.const 2) + ) ) ) - ) - (block (result i32) - (call $~lib/rt/closure/setClosureEnv - (i32.load offset=4 - (local.get $comparator) + (i32.load + (i32.add + (local.get $ptr) + (i32.shl + (local.get $j) + (i32.const 2) + ) ) ) - (global.set $~argumentsLength - (i32.const 2) - ) - (i32.load - (local.get $comparator) + (block (result i32) + (call $~lib/rt/closure/setClosureEnv + (i32.load offset=4 + (local.get $6) + ) + ) + (global.set $~argumentsLength + (i32.const 2) + ) + (i32.load + (local.get $6) + ) ) ) ) @@ -86670,36 +87297,41 @@ ) (then (i32.ge_s - (call_indirect (type $0) - (i32.load offset=4 - (i32.add - (local.get $ptr) - (i32.shl - (local.get $j) - (i32.const 2) - ) - ) + (block (result i32) + (local.set $9 + (local.get $comparator) ) - (i32.load - (i32.add - (local.get $ptr) - (i32.shl - (local.get $j) - (i32.const 2) + (call_indirect (type $0) + (i32.load offset=4 + (i32.add + (local.get $ptr) + (i32.shl + (local.get $j) + (i32.const 2) + ) ) ) - ) - (block (result i32) - (call $~lib/rt/closure/setClosureEnv - (i32.load offset=4 - (local.get $comparator) + (i32.load + (i32.add + (local.get $ptr) + (i32.shl + (local.get $j) + (i32.const 2) + ) ) ) - (global.set $~argumentsLength - (i32.const 2) - ) - (i32.load - (local.get $comparator) + (block (result i32) + (call $~lib/rt/closure/setClosureEnv + (i32.load offset=4 + (local.get $9) + ) + ) + (global.set $~argumentsLength + (i32.const 2) + ) + (i32.load + (local.get $9) + ) ) ) ) @@ -88116,8 +88748,11 @@ ) (func $~lib/util/sort/extendRunRight (param $ptr i32) (param $i i32) (param $right i32) (param $comparator i32) (result i32) (local $j i32) + (local $5 i32) + (local $6 i32) (local $k i32) (local $tmp i64) + (local $9 i32) (if (i32.eq (local.get $i) @@ -88134,41 +88769,46 @@ ) (if (i32.gt_s - (call_indirect (type $8) - (i64.load - (i32.add - (local.get $ptr) - (i32.shl - (local.get $j) - (i32.const 3) + (block (result i32) + (local.set $5 + (local.get $comparator) + ) + (call_indirect (type $8) + (i64.load + (i32.add + (local.get $ptr) + (i32.shl + (local.get $j) + (i32.const 3) + ) ) ) - ) - (i64.load - (i32.add - (local.get $ptr) - (i32.shl - (local.tee $j - (i32.add - (local.get $j) - (i32.const 1) + (i64.load + (i32.add + (local.get $ptr) + (i32.shl + (local.tee $j + (i32.add + (local.get $j) + (i32.const 1) + ) ) + (i32.const 3) ) - (i32.const 3) ) ) - ) - (block (result i32) - (call $~lib/rt/closure/setClosureEnv - (i32.load offset=4 - (local.get $comparator) + (block (result i32) + (call $~lib/rt/closure/setClosureEnv + (i32.load offset=4 + (local.get $5) + ) + ) + (global.set $~argumentsLength + (i32.const 2) + ) + (i32.load + (local.get $5) ) - ) - (global.set $~argumentsLength - (i32.const 2) - ) - (i32.load - (local.get $comparator) ) ) ) @@ -88185,36 +88825,41 @@ ) (then (i32.shr_u - (call_indirect (type $8) - (i64.load offset=8 - (i32.add - (local.get $ptr) - (i32.shl - (local.get $j) - (i32.const 3) - ) - ) + (block (result i32) + (local.set $6 + (local.get $comparator) ) - (i64.load - (i32.add - (local.get $ptr) - (i32.shl - (local.get $j) - (i32.const 3) + (call_indirect (type $8) + (i64.load offset=8 + (i32.add + (local.get $ptr) + (i32.shl + (local.get $j) + (i32.const 3) + ) ) ) - ) - (block (result i32) - (call $~lib/rt/closure/setClosureEnv - (i32.load offset=4 - (local.get $comparator) + (i64.load + (i32.add + (local.get $ptr) + (i32.shl + (local.get $j) + (i32.const 3) + ) ) ) - (global.set $~argumentsLength - (i32.const 2) - ) - (i32.load - (local.get $comparator) + (block (result i32) + (call $~lib/rt/closure/setClosureEnv + (i32.load offset=4 + (local.get $6) + ) + ) + (global.set $~argumentsLength + (i32.const 2) + ) + (i32.load + (local.get $6) + ) ) ) ) @@ -88316,36 +88961,41 @@ ) (then (i32.ge_s - (call_indirect (type $8) - (i64.load offset=8 - (i32.add - (local.get $ptr) - (i32.shl - (local.get $j) - (i32.const 3) - ) - ) + (block (result i32) + (local.set $9 + (local.get $comparator) ) - (i64.load - (i32.add - (local.get $ptr) - (i32.shl - (local.get $j) - (i32.const 3) + (call_indirect (type $8) + (i64.load offset=8 + (i32.add + (local.get $ptr) + (i32.shl + (local.get $j) + (i32.const 3) + ) ) ) - ) - (block (result i32) - (call $~lib/rt/closure/setClosureEnv - (i32.load offset=4 - (local.get $comparator) + (i64.load + (i32.add + (local.get $ptr) + (i32.shl + (local.get $j) + (i32.const 3) + ) ) ) - (global.set $~argumentsLength - (i32.const 2) - ) - (i32.load - (local.get $comparator) + (block (result i32) + (call $~lib/rt/closure/setClosureEnv + (i32.load offset=4 + (local.get $9) + ) + ) + (global.set $~argumentsLength + (i32.const 2) + ) + (i32.load + (local.get $9) + ) ) ) ) @@ -89765,8 +90415,11 @@ ) (func $~lib/util/sort/extendRunRight (param $ptr i32) (param $i i32) (param $right i32) (param $comparator i32) (result i32) (local $j i32) + (local $5 i32) + (local $6 i32) (local $k i32) (local $tmp i64) + (local $9 i32) (if (i32.eq (local.get $i) @@ -89783,41 +90436,46 @@ ) (if (i32.gt_s - (call_indirect (type $8) - (i64.load - (i32.add - (local.get $ptr) - (i32.shl - (local.get $j) - (i32.const 3) + (block (result i32) + (local.set $5 + (local.get $comparator) + ) + (call_indirect (type $8) + (i64.load + (i32.add + (local.get $ptr) + (i32.shl + (local.get $j) + (i32.const 3) + ) ) ) - ) - (i64.load - (i32.add - (local.get $ptr) - (i32.shl - (local.tee $j - (i32.add - (local.get $j) - (i32.const 1) + (i64.load + (i32.add + (local.get $ptr) + (i32.shl + (local.tee $j + (i32.add + (local.get $j) + (i32.const 1) + ) ) + (i32.const 3) ) - (i32.const 3) ) ) - ) - (block (result i32) - (call $~lib/rt/closure/setClosureEnv - (i32.load offset=4 - (local.get $comparator) + (block (result i32) + (call $~lib/rt/closure/setClosureEnv + (i32.load offset=4 + (local.get $5) + ) + ) + (global.set $~argumentsLength + (i32.const 2) + ) + (i32.load + (local.get $5) ) - ) - (global.set $~argumentsLength - (i32.const 2) - ) - (i32.load - (local.get $comparator) ) ) ) @@ -89834,36 +90492,41 @@ ) (then (i32.shr_u - (call_indirect (type $8) - (i64.load offset=8 - (i32.add - (local.get $ptr) - (i32.shl - (local.get $j) - (i32.const 3) - ) - ) + (block (result i32) + (local.set $6 + (local.get $comparator) ) - (i64.load - (i32.add - (local.get $ptr) - (i32.shl - (local.get $j) - (i32.const 3) + (call_indirect (type $8) + (i64.load offset=8 + (i32.add + (local.get $ptr) + (i32.shl + (local.get $j) + (i32.const 3) + ) ) ) - ) - (block (result i32) - (call $~lib/rt/closure/setClosureEnv - (i32.load offset=4 - (local.get $comparator) + (i64.load + (i32.add + (local.get $ptr) + (i32.shl + (local.get $j) + (i32.const 3) + ) ) ) - (global.set $~argumentsLength - (i32.const 2) - ) - (i32.load - (local.get $comparator) + (block (result i32) + (call $~lib/rt/closure/setClosureEnv + (i32.load offset=4 + (local.get $6) + ) + ) + (global.set $~argumentsLength + (i32.const 2) + ) + (i32.load + (local.get $6) + ) ) ) ) @@ -89965,36 +90628,41 @@ ) (then (i32.ge_s - (call_indirect (type $8) - (i64.load offset=8 - (i32.add - (local.get $ptr) - (i32.shl - (local.get $j) - (i32.const 3) - ) - ) + (block (result i32) + (local.set $9 + (local.get $comparator) ) - (i64.load - (i32.add - (local.get $ptr) - (i32.shl - (local.get $j) - (i32.const 3) + (call_indirect (type $8) + (i64.load offset=8 + (i32.add + (local.get $ptr) + (i32.shl + (local.get $j) + (i32.const 3) + ) ) ) - ) - (block (result i32) - (call $~lib/rt/closure/setClosureEnv - (i32.load offset=4 - (local.get $comparator) + (i64.load + (i32.add + (local.get $ptr) + (i32.shl + (local.get $j) + (i32.const 3) + ) ) ) - (global.set $~argumentsLength - (i32.const 2) - ) - (i32.load - (local.get $comparator) + (block (result i32) + (call $~lib/rt/closure/setClosureEnv + (i32.load offset=4 + (local.get $9) + ) + ) + (global.set $~argumentsLength + (i32.const 2) + ) + (i32.load + (local.get $9) + ) ) ) ) @@ -91411,8 +92079,11 @@ ) (func $~lib/util/sort/extendRunRight (param $ptr i32) (param $i i32) (param $right i32) (param $comparator i32) (result i32) (local $j i32) + (local $5 i32) + (local $6 i32) (local $k i32) (local $tmp f32) + (local $9 i32) (if (i32.eq (local.get $i) @@ -91429,41 +92100,46 @@ ) (if (i32.gt_s - (call_indirect (type $14) - (f32.load - (i32.add - (local.get $ptr) - (i32.shl - (local.get $j) - (i32.const 2) + (block (result i32) + (local.set $5 + (local.get $comparator) + ) + (call_indirect (type $14) + (f32.load + (i32.add + (local.get $ptr) + (i32.shl + (local.get $j) + (i32.const 2) + ) ) ) - ) - (f32.load - (i32.add - (local.get $ptr) - (i32.shl - (local.tee $j - (i32.add - (local.get $j) - (i32.const 1) + (f32.load + (i32.add + (local.get $ptr) + (i32.shl + (local.tee $j + (i32.add + (local.get $j) + (i32.const 1) + ) ) + (i32.const 2) ) - (i32.const 2) ) ) - ) - (block (result i32) - (call $~lib/rt/closure/setClosureEnv - (i32.load offset=4 - (local.get $comparator) + (block (result i32) + (call $~lib/rt/closure/setClosureEnv + (i32.load offset=4 + (local.get $5) + ) + ) + (global.set $~argumentsLength + (i32.const 2) + ) + (i32.load + (local.get $5) ) - ) - (global.set $~argumentsLength - (i32.const 2) - ) - (i32.load - (local.get $comparator) ) ) ) @@ -91480,36 +92156,41 @@ ) (then (i32.shr_u - (call_indirect (type $14) - (f32.load offset=4 - (i32.add - (local.get $ptr) - (i32.shl - (local.get $j) - (i32.const 2) - ) - ) + (block (result i32) + (local.set $6 + (local.get $comparator) ) - (f32.load - (i32.add - (local.get $ptr) - (i32.shl - (local.get $j) - (i32.const 2) + (call_indirect (type $14) + (f32.load offset=4 + (i32.add + (local.get $ptr) + (i32.shl + (local.get $j) + (i32.const 2) + ) ) ) - ) - (block (result i32) - (call $~lib/rt/closure/setClosureEnv - (i32.load offset=4 - (local.get $comparator) + (f32.load + (i32.add + (local.get $ptr) + (i32.shl + (local.get $j) + (i32.const 2) + ) ) ) - (global.set $~argumentsLength - (i32.const 2) - ) - (i32.load - (local.get $comparator) + (block (result i32) + (call $~lib/rt/closure/setClosureEnv + (i32.load offset=4 + (local.get $6) + ) + ) + (global.set $~argumentsLength + (i32.const 2) + ) + (i32.load + (local.get $6) + ) ) ) ) @@ -91611,36 +92292,41 @@ ) (then (i32.ge_s - (call_indirect (type $14) - (f32.load offset=4 - (i32.add - (local.get $ptr) - (i32.shl - (local.get $j) - (i32.const 2) - ) - ) + (block (result i32) + (local.set $9 + (local.get $comparator) ) - (f32.load - (i32.add - (local.get $ptr) - (i32.shl - (local.get $j) - (i32.const 2) + (call_indirect (type $14) + (f32.load offset=4 + (i32.add + (local.get $ptr) + (i32.shl + (local.get $j) + (i32.const 2) + ) ) ) - ) - (block (result i32) - (call $~lib/rt/closure/setClosureEnv - (i32.load offset=4 - (local.get $comparator) + (f32.load + (i32.add + (local.get $ptr) + (i32.shl + (local.get $j) + (i32.const 2) + ) ) ) - (global.set $~argumentsLength - (i32.const 2) - ) - (i32.load - (local.get $comparator) + (block (result i32) + (call $~lib/rt/closure/setClosureEnv + (i32.load offset=4 + (local.get $9) + ) + ) + (global.set $~argumentsLength + (i32.const 2) + ) + (i32.load + (local.get $9) + ) ) ) )