From 192e6c8aeced30c0d821e0e06f4552b20bee5c1d Mon Sep 17 00:00:00 2001 From: MaxGraey Date: Thu, 24 Jun 2021 23:26:27 +0300 Subject: [PATCH] reduce One Caller Inline Max Size to 160 --- src/module.ts | 2 +- tests/compiler/NonNullable.optimized.wat | 43 +- tests/compiler/binary.optimized.wat | 5 +- tests/compiler/builtins.optimized.wat | 43 +- tests/compiler/call-super.optimized.wat | 427 +- tests/compiler/class-implements.optimized.wat | 22 +- .../compiler/class-overloading.optimized.wat | 65 +- tests/compiler/class.optimized.wat | 456 +- tests/compiler/constructor.optimized.wat | 427 +- tests/compiler/do.optimized.wat | 22 +- .../empty-exportruntime.optimized.wat | 425 +- tests/compiler/empty-new.optimized.wat | 22 +- tests/compiler/exports.optimized.wat | 22 +- .../exportstar-rereexport.optimized.wat | 258 +- .../extends-baseaggregate.optimized.wat | 1090 +- .../compiler/extends-recursive.optimized.wat | 22 +- tests/compiler/features/simd.optimized.wat | 7 +- .../field-initialization.optimized.wat | 501 +- tests/compiler/for.optimized.wat | 22 +- tests/compiler/function-call.optimized.wat | 22 +- .../function-expression.optimized.wat | 34 +- tests/compiler/function-types.optimized.wat | 5 +- tests/compiler/getter-call.optimized.wat | 22 +- tests/compiler/heap.optimized.wat | 215 +- .../implicit-getter-setter.optimized.wat | 22 +- tests/compiler/infer-array.optimized.wat | 844 +- tests/compiler/infer-generic.optimized.wat | 22 +- tests/compiler/inlining.optimized.wat | 802 +- tests/compiler/instanceof-class.optimized.wat | 22 +- tests/compiler/issues/1095.optimized.wat | 22 +- tests/compiler/issues/1225.optimized.wat | 22 +- tests/compiler/issues/1699.optimized.wat | 935 +- tests/compiler/logical.optimized.wat | 22 +- tests/compiler/managed-cast.optimized.wat | 63 +- tests/compiler/memcpy.optimized.wat | 7 +- tests/compiler/memmove.optimized.wat | 7 +- tests/compiler/new.optimized.wat | 22 +- tests/compiler/number.optimized.wat | 512 +- tests/compiler/object-literal.optimized.wat | 1431 +- .../optional-typeparameters.optimized.wat | 22 +- tests/compiler/reexport.optimized.wat | 22 +- tests/compiler/rereexport.optimized.wat | 22 +- tests/compiler/resolve-access.optimized.wat | 1143 +- tests/compiler/resolve-binary.optimized.wat | 514 +- .../resolve-elementaccess.optimized.wat | 501 +- .../resolve-function-expression.optimized.wat | 527 +- tests/compiler/resolve-nested.optimized.wat | 22 +- tests/compiler/resolve-new.optimized.wat | 22 +- .../resolve-propertyaccess.optimized.wat | 470 +- tests/compiler/resolve-ternary.optimized.wat | 534 +- tests/compiler/resolve-unary.optimized.wat | 470 +- tests/compiler/rt/finalize.optimized.wat | 22 +- tests/compiler/rt/instanceof.optimized.wat | 22 +- .../runtime-incremental-export.optimized.wat | 425 +- .../rt/runtime-minimal-export.optimized.wat | 173 +- tests/compiler/std-wasi/console.optimized.wat | 182 +- tests/compiler/std-wasi/crypto.optimized.wat | 138 +- tests/compiler/std-wasi/process.optimized.wat | 189 +- tests/compiler/std/array-access.optimized.wat | 8 +- .../compiler/std/array-literal.optimized.wat | 427 +- tests/compiler/std/array.optimized.wat | 2958 +- tests/compiler/std/arraybuffer.optimized.wat | 458 +- tests/compiler/std/dataview.optimized.wat | 458 +- tests/compiler/std/date.optimized.wat | 664 +- tests/compiler/std/map.optimized.wat | 3400 +- tests/compiler/std/math.optimized.wat | 2414 +- tests/compiler/std/mod.optimized.wat | 758 +- tests/compiler/std/new.optimized.wat | 22 +- tests/compiler/std/object.optimized.wat | 43 +- .../std/operator-overloading.optimized.wat | 22 +- tests/compiler/std/pointer.optimized.wat | 403 +- tests/compiler/std/set.optimized.wat | 889 +- tests/compiler/std/static-array.optimized.wat | 1147 +- tests/compiler/std/staticarray.optimized.wat | 1063 +- .../std/string-casemapping.optimized.wat | 470 +- .../std/string-encoding.optimized.wat | 2884 +- tests/compiler/std/string.optimized.wat | 467 +- tests/compiler/std/symbol.optimized.wat | 499 +- tests/compiler/std/typedarray.optimized.wat | 38367 ++++++++-------- tests/compiler/std/uri.optimized.wat | 472 +- tests/compiler/super-inline.optimized.wat | 22 +- tests/compiler/templateliteral.optimized.wat | 2532 +- tests/compiler/throw.optimized.wat | 22 +- tests/compiler/typeof.optimized.wat | 65 +- tests/compiler/wasi/abort.optimized.wat | 99 +- tests/compiler/wasi/seed.optimized.wat | 474 +- tests/compiler/wasi/trace.optimized.wat | 867 +- tests/compiler/while.optimized.wat | 22 +- 88 files changed, 38955 insertions(+), 37795 deletions(-) diff --git a/src/module.ts b/src/module.ts index 34faaadd78..3e0520fa2e 100644 --- a/src/module.ts +++ b/src/module.ts @@ -2233,7 +2233,7 @@ export class Module { if (optimizeLevel >= 2 && shrinkLevel == 0) { this.setAlwaysInlineMaxSize(12); this.setFlexibleInlineMaxSize(70); - this.setOneCallerInlineMaxSize(200); + this.setOneCallerInlineMaxSize(160); this.setAllowInliningFunctionsWithLoops(optimizeLevel >= 3); } else { this.setAlwaysInlineMaxSize( diff --git a/tests/compiler/NonNullable.optimized.wat b/tests/compiler/NonNullable.optimized.wat index ddbf4dbb62..1d95881da0 100644 --- a/tests/compiler/NonNullable.optimized.wat +++ b/tests/compiler/NonNullable.optimized.wat @@ -45,7 +45,7 @@ i32.load offset=16 i32.const 1 i32.shr_u - local.tee $4 + local.tee $2 local.get $1 i32.const 20 i32.sub @@ -59,18 +59,15 @@ end block $__inlined_func$~lib/util/string/compareImpl (result i32) local.get $0 - local.set $2 - local.get $1 - local.set $3 - local.get $2 + local.tee $3 i32.const 7 i32.and - local.get $3 + local.get $1 i32.const 7 i32.and i32.or i32.const 1 - local.get $4 + local.get $2 local.tee $0 i32.const 4 i32.ge_u @@ -78,20 +75,20 @@ i32.eqz if loop $do-continue|0 - local.get $2 - i64.load local.get $3 i64.load + local.get $1 + i64.load i64.eq if - local.get $2 - i32.const 8 - i32.add - local.set $2 local.get $3 i32.const 8 i32.add local.set $3 + local.get $1 + i32.const 8 + i32.add + local.set $1 local.get $0 i32.const 4 i32.sub @@ -104,33 +101,33 @@ end loop $while-continue|1 local.get $0 - local.tee $1 + local.tee $2 i32.const 1 i32.sub local.set $0 - local.get $1 + local.get $2 if - local.get $2 - i32.load16_u - local.tee $1 local.get $3 i32.load16_u + local.tee $2 + local.get $1 + i32.load16_u local.tee $4 i32.ne if - local.get $1 + local.get $2 local.get $4 i32.sub br $__inlined_func$~lib/util/string/compareImpl end - local.get $2 - i32.const 2 - i32.add - local.set $2 local.get $3 i32.const 2 i32.add local.set $3 + local.get $1 + i32.const 2 + i32.add + local.set $1 br $while-continue|1 end end diff --git a/tests/compiler/binary.optimized.wat b/tests/compiler/binary.optimized.wat index 3bd23ba54c..125d2a0dca 100644 --- a/tests/compiler/binary.optimized.wat +++ b/tests/compiler/binary.optimized.wat @@ -139,7 +139,7 @@ (data (i32.const 7430) "\f0?t\85\15\d3\b0\d9\ef?\0f\89\f9lX\b5\ef?Q[\12\d0\01\93\ef?{Q}<\b8r\ef?\aa\b9h1\87T\ef?8bunz8\ef?\e1\de\1f\f5\9d\1e\ef?\15\b71\n\fe\06\ef?\cb\a9:7\a7\f1\ee?\"4\12L\a6\de\ee?-\89a`\08\ce\ee?\'*6\d5\da\bf\ee?\82O\9dV+\b4\ee?)TH\dd\07\ab\ee?\85U:\b0~\a4\ee?\cd;\7ff\9e\a0\ee?t_\ec\e8u\9f\ee?\87\01\ebs\14\a1\ee?\13\ceL\99\89\a5\ee?\db\a0*B\e5\ac\ee?\e5\c5\cd\b07\b7\ee?\90\f0\a3\82\91\c4\ee?]%>\b2\03\d5\ee?\ad\d3Z\99\9f\e8\ee?G^\fb\f2v\ff\ee?\9cR\85\dd\9b\19\ef?i\90\ef\dc 7\ef?\87\a4\fb\dc\18X\ef?_\9b{3\97|\ef?\da\90\a4\a2\af\a4\ef?@En[v\d0\ef?") (export "memory" (memory $0)) (start $~start) - (func $~start + (func $start:binary (local $0 f32) (local $1 f64) block $__inlined_func$~lib/math/ipow32 @@ -317,4 +317,7 @@ f64.copysign global.set $binary/F ) + (func $~start + call $start:binary + ) ) diff --git a/tests/compiler/builtins.optimized.wat b/tests/compiler/builtins.optimized.wat index dfee42b84d..9fb655e61a 100644 --- a/tests/compiler/builtins.optimized.wat +++ b/tests/compiler/builtins.optimized.wat @@ -101,7 +101,7 @@ i32.load offset=16 i32.const 1 i32.shr_u - local.tee $4 + local.tee $2 local.get $1 i32.const 20 i32.sub @@ -115,18 +115,15 @@ end block $__inlined_func$~lib/util/string/compareImpl (result i32) local.get $0 - local.set $2 - local.get $1 - local.set $3 - local.get $2 + local.tee $3 i32.const 7 i32.and - local.get $3 + local.get $1 i32.const 7 i32.and i32.or i32.const 1 - local.get $4 + local.get $2 local.tee $0 i32.const 4 i32.ge_u @@ -134,20 +131,20 @@ i32.eqz if loop $do-continue|0 - local.get $2 - i64.load local.get $3 i64.load + local.get $1 + i64.load i64.eq if - local.get $2 - i32.const 8 - i32.add - local.set $2 local.get $3 i32.const 8 i32.add local.set $3 + local.get $1 + i32.const 8 + i32.add + local.set $1 local.get $0 i32.const 4 i32.sub @@ -160,33 +157,33 @@ end loop $while-continue|1 local.get $0 - local.tee $1 + local.tee $2 i32.const 1 i32.sub local.set $0 - local.get $1 + local.get $2 if - local.get $2 - i32.load16_u - local.tee $1 local.get $3 i32.load16_u + local.tee $2 + local.get $1 + i32.load16_u local.tee $4 i32.ne if - local.get $1 + local.get $2 local.get $4 i32.sub br $__inlined_func$~lib/util/string/compareImpl end - local.get $2 - i32.const 2 - i32.add - local.set $2 local.get $3 i32.const 2 i32.add local.set $3 + local.get $1 + i32.const 2 + i32.add + local.set $1 br $while-continue|1 end end diff --git a/tests/compiler/call-super.optimized.wat b/tests/compiler/call-super.optimized.wat index 2b5b8c0141..f8d417efa8 100644 --- a/tests/compiler/call-super.optimized.wat +++ b/tests/compiler/call-super.optimized.wat @@ -1,8 +1,8 @@ (module (type $none_=>_none (func)) - (type $i32_=>_none (func (param i32))) (type $i32_i32_=>_none (func (param i32 i32))) (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) + (type $i32_=>_none (func (param i32))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) (type $none_=>_i32 (func (result i32))) @@ -1027,7 +1027,7 @@ local.get $0 i32.const 4 i32.add - local.tee $0 + local.tee $1 i32.const 17980 i32.ge_u if @@ -1037,20 +1037,20 @@ call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT - local.get $0 + local.get $1 i32.const 4 i32.sub - local.set $1 - local.get $0 + local.set $0 + local.get $1 i32.const 15 i32.and i32.const 1 - local.get $0 + local.get $1 select if (result i32) i32.const 1 else - local.get $1 + local.get $0 i32.load i32.const 1 i32.and @@ -1063,14 +1063,11 @@ call $~lib/builtins/abort unreachable end - local.get $1 - local.tee $0 + local.get $0 + local.get $0 i32.load i32.const 1 i32.or - local.set $1 - local.get $0 - local.get $1 i32.store local.get $0 call $~lib/rt/tlsf/insertBlock @@ -1083,8 +1080,7 @@ local.tee $0 local.get $0 i32.store offset=4 - global.get $~lib/rt/itcms/toSpace - local.tee $0 + local.get $0 local.get $0 i32.store offset=8 i32.const 0 @@ -1224,80 +1220,11 @@ end end ) - (func $~lib/rt/itcms/__new (param $0 i32) (param $1 i32) (result i32) + (func $~lib/rt/tlsf/allocateBlock (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) - (local $5 i32) - (local $6 i32) - local.get $0 - i32.const 1073741804 - i32.ge_u - if - i32.const 1104 - i32.const 1168 - i32.const 260 - i32.const 31 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/rt/itcms/total - global.get $~lib/rt/itcms/threshold - i32.ge_u - if - block $__inlined_func$~lib/rt/itcms/interrupt - i32.const 2048 - local.set $2 - loop $do-continue|0 - local.get $2 - call $~lib/rt/itcms/step - i32.sub - local.set $2 - global.get $~lib/rt/itcms/state - i32.eqz - if - global.get $~lib/rt/itcms/total - i64.extend_i32_u - i64.const 200 - i64.mul - i64.const 100 - i64.div_u - i32.wrap_i64 - i32.const 1024 - i32.add - global.set $~lib/rt/itcms/threshold - br $__inlined_func$~lib/rt/itcms/interrupt - end - local.get $2 - i32.const 0 - i32.gt_s - br_if $do-continue|0 - end - global.get $~lib/rt/itcms/total - local.tee $2 - local.get $2 - global.get $~lib/rt/itcms/threshold - i32.sub - i32.const 1024 - i32.lt_u - i32.const 10 - i32.shl - i32.add - global.set $~lib/rt/itcms/threshold - end - end - local.get $0 - i32.const 16 - i32.add - local.set $2 - global.get $~lib/rt/tlsf/ROOT - i32.eqz - if - call $~lib/rt/tlsf/initialize - end - global.get $~lib/rt/tlsf/ROOT - local.set $3 - local.get $2 + local.get $1 i32.const 1073741820 i32.gt_u if @@ -1308,14 +1235,15 @@ call $~lib/builtins/abort unreachable end - local.get $3 - local.get $2 + local.get $0 + local.tee $2 + local.get $1 i32.const 12 i32.le_u if (result i32) i32.const 12 else - local.get $2 + local.get $1 i32.const 19 i32.add i32.const -16 @@ -1323,19 +1251,19 @@ i32.const 4 i32.sub end - local.tee $2 + local.tee $0 call $~lib/rt/tlsf/searchBlock - local.tee $4 + local.tee $1 i32.eqz if - local.get $2 + local.get $0 i32.const 536870910 i32.lt_u if (result i32) - local.get $2 + local.get $0 i32.const 1 i32.const 27 - local.get $2 + local.get $0 i32.clz i32.sub i32.shl @@ -1343,16 +1271,16 @@ i32.sub i32.add else - local.get $2 + local.get $0 end i32.const 4 memory.size - local.tee $6 + local.tee $1 i32.const 16 i32.shl i32.const 4 i32.sub - local.get $3 + local.get $2 i32.load offset=1568 i32.ne i32.shl @@ -1363,18 +1291,18 @@ i32.and i32.const 16 i32.shr_u - local.set $5 - local.get $6 - local.get $5 - local.get $5 - local.get $6 - i32.lt_s + local.set $3 + local.get $1 + local.get $3 + local.get $1 + local.get $3 + i32.gt_s select memory.grow i32.const 0 i32.lt_s if - local.get $5 + local.get $3 memory.grow i32.const 0 i32.lt_s @@ -1382,18 +1310,18 @@ unreachable end end - local.get $3 - local.get $6 + local.get $2 + local.get $1 i32.const 16 i32.shl memory.size i32.const 16 i32.shl call $~lib/rt/tlsf/addMemory - local.get $3 local.get $2 + local.get $0 call $~lib/rt/tlsf/searchBlock - local.tee $4 + local.tee $1 i32.eqz if i32.const 0 @@ -1404,8 +1332,8 @@ unreachable end end - local.get $2 - local.get $4 + local.get $0 + local.get $1 i32.load i32.const -4 i32.and @@ -1418,13 +1346,13 @@ call $~lib/builtins/abort unreachable end - local.get $3 - local.get $4 + local.get $2 + local.get $1 call $~lib/rt/tlsf/removeBlock - local.get $4 + local.get $1 i32.load - local.set $6 - local.get $2 + local.set $3 + local.get $0 i32.const 4 i32.add i32.const 15 @@ -1437,54 +1365,54 @@ call $~lib/builtins/abort unreachable end - local.get $6 + local.get $3 i32.const -4 i32.and - local.get $2 + local.get $0 i32.sub - local.tee $5 + local.tee $4 i32.const 16 i32.ge_u if - local.get $4 - local.get $2 - local.get $6 + local.get $1 + local.get $0 + local.get $3 i32.const 2 i32.and i32.or i32.store - local.get $2 - local.get $4 + local.get $0 + local.get $1 i32.const 4 i32.add i32.add - local.tee $2 - local.get $5 + local.tee $0 + local.get $4 i32.const 4 i32.sub i32.const 1 i32.or i32.store - local.get $3 local.get $2 + local.get $0 call $~lib/rt/tlsf/insertBlock else - local.get $4 - local.get $6 + local.get $1 + local.get $3 i32.const -2 i32.and i32.store - local.get $4 + local.get $1 i32.const 4 i32.add - local.tee $2 - local.get $4 + local.tee $0 + local.get $1 i32.load i32.const -4 i32.and i32.add - local.get $2 - local.get $4 + local.get $0 + local.get $1 i32.load i32.const -4 i32.and @@ -1494,182 +1422,143 @@ i32.and i32.store end - local.get $4 local.get $1 - i32.store offset=12 - local.get $4 - local.get $0 - i32.store offset=16 - global.get $~lib/rt/itcms/fromSpace - local.tee $1 - i32.load offset=8 - local.set $2 - local.get $4 - local.get $1 - global.get $~lib/rt/itcms/white - i32.or - i32.store offset=4 - local.get $4 - local.get $2 - i32.store offset=8 - local.get $2 - local.get $4 - local.get $2 - i32.load offset=4 - i32.const 3 - i32.and - i32.or - i32.store offset=4 - local.get $1 - local.get $4 - i32.store offset=8 - global.get $~lib/rt/itcms/total - local.get $4 - i32.load - i32.const -4 - i32.and - i32.const 4 - i32.add - i32.add - global.set $~lib/rt/itcms/total - local.get $4 - i32.const 20 - i32.add - local.tee $2 - local.set $3 + ) + (func $~lib/memory/memory.fill (param $0 i32) (param $1 i32) + (local $2 i32) block $~lib/util/memory/memset|inlined.0 - local.get $0 + local.get $1 i32.eqz br_if $~lib/util/memory/memset|inlined.0 - local.get $3 + local.get $0 i32.const 0 i32.store8 local.get $0 - local.get $3 + local.get $1 i32.add - local.tee $1 + local.tee $2 i32.const 1 i32.sub i32.const 0 i32.store8 - local.get $0 + local.get $1 i32.const 2 i32.le_u br_if $~lib/util/memory/memset|inlined.0 - local.get $3 + local.get $0 i32.const 0 i32.store8 offset=1 - local.get $3 + local.get $0 i32.const 0 i32.store8 offset=2 - local.get $1 + local.get $2 i32.const 2 i32.sub i32.const 0 i32.store8 - local.get $1 + local.get $2 i32.const 3 i32.sub i32.const 0 i32.store8 - local.get $0 + local.get $1 i32.const 6 i32.le_u br_if $~lib/util/memory/memset|inlined.0 - local.get $3 + local.get $0 i32.const 0 i32.store8 offset=3 - local.get $1 + local.get $2 i32.const 4 i32.sub i32.const 0 i32.store8 - local.get $0 + local.get $1 i32.const 8 i32.le_u br_if $~lib/util/memory/memset|inlined.0 - local.get $3 + local.get $0 i32.const 0 - local.get $3 + local.get $0 i32.sub i32.const 3 i32.and - local.tee $1 + local.tee $2 i32.add - local.tee $5 + local.tee $0 i32.const 0 i32.store - local.get $5 local.get $0 local.get $1 + local.get $2 i32.sub i32.const -4 i32.and - local.tee $3 + local.tee $2 i32.add - local.tee $0 + local.tee $1 i32.const 4 i32.sub i32.const 0 i32.store - local.get $3 + local.get $2 i32.const 8 i32.le_u br_if $~lib/util/memory/memset|inlined.0 - local.get $5 + local.get $0 i32.const 0 i32.store offset=4 - local.get $5 + local.get $0 i32.const 0 i32.store offset=8 - local.get $0 + local.get $1 i32.const 12 i32.sub i32.const 0 i32.store - local.get $0 + local.get $1 i32.const 8 i32.sub i32.const 0 i32.store - local.get $3 + local.get $2 i32.const 24 i32.le_u br_if $~lib/util/memory/memset|inlined.0 - local.get $5 + local.get $0 i32.const 0 i32.store offset=12 - local.get $5 + local.get $0 i32.const 0 i32.store offset=16 - local.get $5 + local.get $0 i32.const 0 i32.store offset=20 - local.get $5 + local.get $0 i32.const 0 i32.store offset=24 - local.get $0 + local.get $1 i32.const 28 i32.sub i32.const 0 i32.store - local.get $0 + local.get $1 i32.const 24 i32.sub i32.const 0 i32.store - local.get $0 + local.get $1 i32.const 20 i32.sub i32.const 0 i32.store - local.get $0 + local.get $1 i32.const 16 i32.sub i32.const 0 i32.store - local.get $5 - local.get $5 + local.get $0 + local.get $0 i32.const 4 i32.and i32.const 24 @@ -1677,7 +1566,7 @@ local.tee $1 i32.add local.set $0 - local.get $3 + local.get $2 local.get $1 i32.sub local.set $1 @@ -1710,7 +1599,123 @@ end end end + ) + (func $~lib/rt/itcms/__new (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + local.get $0 + i32.const 1073741804 + i32.ge_u + if + i32.const 1104 + i32.const 1168 + i32.const 260 + i32.const 31 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.ge_u + if + block $__inlined_func$~lib/rt/itcms/interrupt + i32.const 2048 + local.set $2 + loop $do-continue|0 + local.get $2 + call $~lib/rt/itcms/step + i32.sub + local.set $2 + global.get $~lib/rt/itcms/state + i32.eqz + if + global.get $~lib/rt/itcms/total + i64.extend_i32_u + i64.const 200 + i64.mul + i64.const 100 + i64.div_u + i32.wrap_i64 + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold + br $__inlined_func$~lib/rt/itcms/interrupt + end + local.get $2 + i32.const 0 + i32.gt_s + br_if $do-continue|0 + end + global.get $~lib/rt/itcms/total + local.tee $2 + local.get $2 + global.get $~lib/rt/itcms/threshold + i32.sub + i32.const 1024 + i32.lt_u + i32.const 10 + i32.shl + i32.add + global.set $~lib/rt/itcms/threshold + end + end + local.get $0 + i32.const 16 + i32.add + local.set $2 + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $2 + call $~lib/rt/tlsf/allocateBlock + local.tee $2 + local.get $1 + i32.store offset=12 + local.get $2 + local.get $0 + i32.store offset=16 + global.get $~lib/rt/itcms/fromSpace + local.tee $3 + i32.load offset=8 + local.set $1 local.get $2 + local.get $3 + global.get $~lib/rt/itcms/white + i32.or + i32.store offset=4 + local.get $2 + local.get $1 + i32.store offset=8 + local.get $1 + local.get $2 + local.get $1 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + local.get $3 + local.get $2 + i32.store offset=8 + global.get $~lib/rt/itcms/total + local.get $2 + i32.load + i32.const -4 + i32.and + i32.const 4 + i32.add + i32.add + global.set $~lib/rt/itcms/total + local.get $2 + i32.const 20 + i32.add + local.tee $1 + local.get $0 + call $~lib/memory/memory.fill + local.get $1 ) (func $~lib/rt/__visit_members (param $0 i32) block $invalid diff --git a/tests/compiler/class-implements.optimized.wat b/tests/compiler/class-implements.optimized.wat index c985274597..0b12accdc0 100644 --- a/tests/compiler/class-implements.optimized.wat +++ b/tests/compiler/class-implements.optimized.wat @@ -1049,7 +1049,7 @@ local.get $0 i32.const 4 i32.add - local.tee $0 + local.tee $1 i32.const 17948 i32.ge_u if @@ -1059,20 +1059,20 @@ call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT - local.get $0 + local.get $1 i32.const 4 i32.sub - local.set $1 - local.get $0 + local.set $0 + local.get $1 i32.const 15 i32.and i32.const 1 - local.get $0 + local.get $1 select if (result i32) i32.const 1 else - local.get $1 + local.get $0 i32.load i32.const 1 i32.and @@ -1085,14 +1085,11 @@ call $~lib/builtins/abort unreachable end - local.get $1 - local.tee $0 + local.get $0 + local.get $0 i32.load i32.const 1 i32.or - local.set $1 - local.get $0 - local.get $1 i32.store local.get $0 call $~lib/rt/tlsf/insertBlock @@ -1105,8 +1102,7 @@ local.tee $0 local.get $0 i32.store offset=4 - global.get $~lib/rt/itcms/toSpace - local.tee $0 + local.get $0 local.get $0 i32.store offset=8 i32.const 0 diff --git a/tests/compiler/class-overloading.optimized.wat b/tests/compiler/class-overloading.optimized.wat index cebc44fb43..5d929a09a2 100644 --- a/tests/compiler/class-overloading.optimized.wat +++ b/tests/compiler/class-overloading.optimized.wat @@ -1087,7 +1087,7 @@ local.get $0 i32.const 4 i32.add - local.tee $0 + local.tee $1 i32.const 18316 i32.ge_u if @@ -1097,20 +1097,20 @@ call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT - local.get $0 + local.get $1 i32.const 4 i32.sub - local.set $1 - local.get $0 + local.set $0 + local.get $1 i32.const 15 i32.and i32.const 1 - local.get $0 + local.get $1 select if (result i32) i32.const 1 else - local.get $1 + local.get $0 i32.load i32.const 1 i32.and @@ -1123,14 +1123,11 @@ call $~lib/builtins/abort unreachable end - local.get $1 - local.tee $0 + local.get $0 + local.get $0 i32.load i32.const 1 i32.or - local.set $1 - local.get $0 - local.get $1 i32.store local.get $0 call $~lib/rt/tlsf/insertBlock @@ -1143,8 +1140,7 @@ local.tee $0 local.get $0 i32.store offset=4 - global.get $~lib/rt/itcms/toSpace - local.tee $0 + local.get $0 local.get $0 i32.store offset=8 i32.const 0 @@ -1472,7 +1468,7 @@ i32.load offset=16 i32.const 1 i32.shr_u - local.tee $4 + local.tee $2 local.get $1 i32.const 20 i32.sub @@ -1486,18 +1482,15 @@ end block $__inlined_func$~lib/util/string/compareImpl (result i32) local.get $0 - local.set $2 - local.get $1 - local.set $3 - local.get $2 + local.tee $3 i32.const 7 i32.and - local.get $3 + local.get $1 i32.const 7 i32.and i32.or i32.const 1 - local.get $4 + local.get $2 local.tee $0 i32.const 4 i32.ge_u @@ -1505,20 +1498,20 @@ i32.eqz if loop $do-continue|0 - local.get $2 - i64.load local.get $3 i64.load + local.get $1 + i64.load i64.eq if - local.get $2 - i32.const 8 - i32.add - local.set $2 local.get $3 i32.const 8 i32.add local.set $3 + local.get $1 + i32.const 8 + i32.add + local.set $1 local.get $0 i32.const 4 i32.sub @@ -1531,33 +1524,33 @@ end loop $while-continue|1 local.get $0 - local.tee $1 + local.tee $2 i32.const 1 i32.sub local.set $0 - local.get $1 + local.get $2 if - local.get $2 - i32.load16_u - local.tee $1 local.get $3 i32.load16_u + local.tee $2 + local.get $1 + i32.load16_u local.tee $4 i32.ne if - local.get $1 + local.get $2 local.get $4 i32.sub br $__inlined_func$~lib/util/string/compareImpl end - local.get $2 - i32.const 2 - i32.add - local.set $2 local.get $3 i32.const 2 i32.add local.set $3 + local.get $1 + i32.const 2 + i32.add + local.set $1 br $while-continue|1 end end diff --git a/tests/compiler/class.optimized.wat b/tests/compiler/class.optimized.wat index bc0b236d29..c7d698317e 100644 --- a/tests/compiler/class.optimized.wat +++ b/tests/compiler/class.optimized.wat @@ -1039,7 +1039,7 @@ local.get $0 i32.const 4 i32.add - local.tee $0 + local.tee $1 i32.const 17972 i32.ge_u if @@ -1049,20 +1049,20 @@ call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT - local.get $0 + local.get $1 i32.const 4 i32.sub - local.set $1 - local.get $0 + local.set $0 + local.get $1 i32.const 15 i32.and i32.const 1 - local.get $0 + local.get $1 select if (result i32) i32.const 1 else - local.get $1 + local.get $0 i32.load i32.const 1 i32.and @@ -1075,14 +1075,11 @@ call $~lib/builtins/abort unreachable end - local.get $1 - local.tee $0 + local.get $0 + local.get $0 i32.load i32.const 1 i32.or - local.set $1 - local.get $0 - local.get $1 i32.store local.get $0 call $~lib/rt/tlsf/insertBlock @@ -1095,8 +1092,7 @@ local.tee $0 local.get $0 i32.store offset=4 - global.get $~lib/rt/itcms/toSpace - local.tee $0 + local.get $0 local.get $0 i32.store offset=8 i32.const 0 @@ -1236,6 +1232,210 @@ end end ) + (func $~lib/rt/tlsf/allocateBlock (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + local.get $1 + i32.const 1073741820 + i32.gt_u + if + i32.const 1056 + i32.const 1392 + i32.const 458 + i32.const 29 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.tee $2 + local.get $1 + i32.const 12 + i32.le_u + if (result i32) + i32.const 12 + else + local.get $1 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + end + local.tee $0 + call $~lib/rt/tlsf/searchBlock + local.tee $1 + i32.eqz + if + local.get $0 + i32.const 536870910 + i32.lt_u + if (result i32) + local.get $0 + i32.const 1 + i32.const 27 + local.get $0 + i32.clz + i32.sub + i32.shl + i32.const 1 + i32.sub + i32.add + else + local.get $0 + end + i32.const 4 + memory.size + local.tee $1 + i32.const 16 + i32.shl + i32.const 4 + i32.sub + local.get $2 + i32.load offset=1568 + i32.ne + i32.shl + i32.add + i32.const 65535 + i32.add + i32.const -65536 + i32.and + i32.const 16 + i32.shr_u + local.set $3 + local.get $1 + local.get $3 + local.get $1 + local.get $3 + i32.gt_s + select + memory.grow + i32.const 0 + i32.lt_s + if + local.get $3 + memory.grow + i32.const 0 + i32.lt_s + if + unreachable + end + end + local.get $2 + local.get $1 + i32.const 16 + i32.shl + memory.size + i32.const 16 + i32.shl + call $~lib/rt/tlsf/addMemory + local.get $2 + local.get $0 + call $~lib/rt/tlsf/searchBlock + local.tee $1 + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 496 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + end + local.get $0 + local.get $1 + i32.load + i32.const -4 + i32.and + i32.gt_u + if + i32.const 0 + i32.const 1392 + i32.const 498 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.get $1 + call $~lib/rt/tlsf/removeBlock + local.get $1 + i32.load + local.set $3 + local.get $0 + i32.const 4 + i32.add + i32.const 15 + i32.and + if + i32.const 0 + i32.const 1392 + i32.const 357 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const -4 + i32.and + local.get $0 + i32.sub + local.tee $4 + i32.const 16 + i32.ge_u + if + local.get $1 + local.get $0 + local.get $3 + i32.const 2 + i32.and + i32.or + i32.store + local.get $0 + local.get $1 + i32.const 4 + i32.add + i32.add + local.tee $0 + local.get $4 + i32.const 4 + i32.sub + i32.const 1 + i32.or + i32.store + local.get $2 + local.get $0 + call $~lib/rt/tlsf/insertBlock + else + local.get $1 + local.get $3 + i32.const -2 + i32.and + i32.store + local.get $1 + i32.const 4 + i32.add + local.tee $0 + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.get $0 + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + i32.load + i32.const -3 + i32.and + i32.store + end + local.get $1 + ) (func $~lib/memory/memory.fill (param $0 i32) (param $1 i32) (local $2 i32) block $~lib/util/memory/memset|inlined.0 @@ -1415,9 +1615,6 @@ (func $~lib/rt/itcms/__new (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) local.get $0 i32.const 1073741804 i32.ge_u @@ -1435,12 +1632,12 @@ if block $__inlined_func$~lib/rt/itcms/interrupt i32.const 2048 - local.set $3 + local.set $2 loop $do-continue|0 - local.get $3 + local.get $2 call $~lib/rt/itcms/step i32.sub - local.set $3 + local.set $2 global.get $~lib/rt/itcms/state i32.eqz if @@ -1456,14 +1653,14 @@ global.set $~lib/rt/itcms/threshold br $__inlined_func$~lib/rt/itcms/interrupt end - local.get $3 + local.get $2 i32.const 0 i32.gt_s br_if $do-continue|0 end global.get $~lib/rt/itcms/total - local.tee $3 - local.get $3 + local.tee $2 + local.get $2 global.get $~lib/rt/itcms/threshold i32.sub i32.const 1024 @@ -1477,230 +1674,35 @@ local.get $0 i32.const 16 i32.add - local.set $6 + local.set $2 global.get $~lib/rt/tlsf/ROOT i32.eqz if call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT - local.get $6 - i32.const 1073741820 - i32.gt_u - if - i32.const 1056 - i32.const 1392 - i32.const 458 - i32.const 29 - call $~lib/builtins/abort - unreachable - end - local.tee $2 - local.get $6 - i32.const 12 - i32.le_u - if (result i32) - i32.const 12 - else - local.get $6 - i32.const 19 - i32.add - i32.const -16 - i32.and - i32.const 4 - i32.sub - end - local.tee $3 - call $~lib/rt/tlsf/searchBlock - local.tee $6 - i32.eqz - if - local.get $3 - i32.const 536870910 - i32.lt_u - if (result i32) - local.get $3 - i32.const 1 - i32.const 27 - local.get $3 - i32.clz - i32.sub - i32.shl - i32.const 1 - i32.sub - i32.add - else - local.get $3 - end - i32.const 4 - memory.size - local.tee $6 - i32.const 16 - i32.shl - i32.const 4 - i32.sub - local.get $2 - i32.load offset=1568 - i32.ne - i32.shl - i32.add - i32.const 65535 - i32.add - i32.const -65536 - i32.and - i32.const 16 - i32.shr_u - local.set $5 - local.get $6 - local.get $5 - local.get $5 - local.get $6 - i32.lt_s - select - memory.grow - i32.const 0 - i32.lt_s - if - local.get $5 - memory.grow - i32.const 0 - i32.lt_s - if - unreachable - end - end - local.get $2 - local.get $6 - i32.const 16 - i32.shl - memory.size - i32.const 16 - i32.shl - call $~lib/rt/tlsf/addMemory - local.get $2 - local.get $3 - call $~lib/rt/tlsf/searchBlock - local.tee $6 - i32.eqz - if - i32.const 0 - i32.const 1392 - i32.const 496 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - end - local.get $3 - local.get $6 - i32.load - i32.const -4 - i32.and - i32.gt_u - if - i32.const 0 - i32.const 1392 - i32.const 498 - i32.const 14 - call $~lib/builtins/abort - unreachable - end local.get $2 - local.get $6 - call $~lib/rt/tlsf/removeBlock - local.get $6 - i32.load - local.set $5 - local.get $3 - i32.const 4 - i32.add - i32.const 15 - i32.and - if - i32.const 0 - i32.const 1392 - i32.const 357 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $5 - i32.const -4 - i32.and - local.get $3 - i32.sub - local.tee $4 - i32.const 16 - i32.ge_u - if - local.get $6 - local.get $3 - local.get $5 - i32.const 2 - i32.and - i32.or - i32.store - local.get $3 - local.get $6 - i32.const 4 - i32.add - i32.add - local.tee $3 - local.get $4 - i32.const 4 - i32.sub - i32.const 1 - i32.or - i32.store - local.get $2 - local.get $3 - call $~lib/rt/tlsf/insertBlock - else - local.get $6 - local.get $5 - i32.const -2 - i32.and - i32.store - local.get $6 - i32.const 4 - i32.add - local.tee $3 - local.get $6 - i32.load - i32.const -4 - i32.and - i32.add - local.get $3 - local.get $6 - i32.load - i32.const -4 - i32.and - i32.add - i32.load - i32.const -3 - i32.and - i32.store - end - local.get $6 + call $~lib/rt/tlsf/allocateBlock + local.tee $2 local.get $1 i32.store offset=12 - local.get $6 + local.get $2 local.get $0 i32.store offset=16 global.get $~lib/rt/itcms/fromSpace local.tee $3 i32.load offset=8 local.set $1 - local.get $6 + local.get $2 local.get $3 global.get $~lib/rt/itcms/white i32.or i32.store offset=4 - local.get $6 + local.get $2 local.get $1 i32.store offset=8 local.get $1 - local.get $6 + local.get $2 local.get $1 i32.load offset=4 i32.const 3 @@ -1708,10 +1710,10 @@ i32.or i32.store offset=4 local.get $3 - local.get $6 + local.get $2 i32.store offset=8 global.get $~lib/rt/itcms/total - local.get $6 + local.get $2 i32.load i32.const -4 i32.and @@ -1719,7 +1721,7 @@ i32.add i32.add global.set $~lib/rt/itcms/total - local.get $6 + local.get $2 i32.const 20 i32.add local.tee $1 diff --git a/tests/compiler/constructor.optimized.wat b/tests/compiler/constructor.optimized.wat index 8aa24f1c6f..f75630d7da 100644 --- a/tests/compiler/constructor.optimized.wat +++ b/tests/compiler/constructor.optimized.wat @@ -1,8 +1,8 @@ (module (type $none_=>_none (func)) - (type $i32_=>_none (func (param i32))) (type $i32_i32_=>_none (func (param i32 i32))) (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) + (type $i32_=>_none (func (param i32))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) (type $none_=>_i32 (func (result i32))) @@ -1095,7 +1095,7 @@ local.get $0 i32.const 4 i32.add - local.tee $0 + local.tee $1 i32.const 17932 i32.ge_u if @@ -1105,20 +1105,20 @@ call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT - local.get $0 + local.get $1 i32.const 4 i32.sub - local.set $1 - local.get $0 + local.set $0 + local.get $1 i32.const 15 i32.and i32.const 1 - local.get $0 + local.get $1 select if (result i32) i32.const 1 else - local.get $1 + local.get $0 i32.load i32.const 1 i32.and @@ -1131,14 +1131,11 @@ call $~lib/builtins/abort unreachable end - local.get $1 - local.tee $0 + local.get $0 + local.get $0 i32.load i32.const 1 i32.or - local.set $1 - local.get $0 - local.get $1 i32.store local.get $0 call $~lib/rt/tlsf/insertBlock @@ -1151,8 +1148,7 @@ local.tee $0 local.get $0 i32.store offset=4 - global.get $~lib/rt/itcms/toSpace - local.tee $0 + local.get $0 local.get $0 i32.store offset=8 i32.const 0 @@ -1292,80 +1288,11 @@ end end ) - (func $~lib/rt/itcms/__new (param $0 i32) (param $1 i32) (result i32) + (func $~lib/rt/tlsf/allocateBlock (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) - (local $5 i32) - (local $6 i32) - local.get $0 - i32.const 1073741804 - i32.ge_u - if - i32.const 1056 - i32.const 1120 - i32.const 260 - i32.const 31 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/rt/itcms/total - global.get $~lib/rt/itcms/threshold - i32.ge_u - if - block $__inlined_func$~lib/rt/itcms/interrupt - i32.const 2048 - local.set $2 - loop $do-continue|0 - local.get $2 - call $~lib/rt/itcms/step - i32.sub - local.set $2 - global.get $~lib/rt/itcms/state - i32.eqz - if - global.get $~lib/rt/itcms/total - i64.extend_i32_u - i64.const 200 - i64.mul - i64.const 100 - i64.div_u - i32.wrap_i64 - i32.const 1024 - i32.add - global.set $~lib/rt/itcms/threshold - br $__inlined_func$~lib/rt/itcms/interrupt - end - local.get $2 - i32.const 0 - i32.gt_s - br_if $do-continue|0 - end - global.get $~lib/rt/itcms/total - local.tee $2 - local.get $2 - global.get $~lib/rt/itcms/threshold - i32.sub - i32.const 1024 - i32.lt_u - i32.const 10 - i32.shl - i32.add - global.set $~lib/rt/itcms/threshold - end - end - local.get $0 - i32.const 16 - i32.add - local.set $2 - global.get $~lib/rt/tlsf/ROOT - i32.eqz - if - call $~lib/rt/tlsf/initialize - end - global.get $~lib/rt/tlsf/ROOT - local.set $3 - local.get $2 + local.get $1 i32.const 1073741820 i32.gt_u if @@ -1376,14 +1303,15 @@ call $~lib/builtins/abort unreachable end - local.get $3 - local.get $2 + local.get $0 + local.tee $2 + local.get $1 i32.const 12 i32.le_u if (result i32) i32.const 12 else - local.get $2 + local.get $1 i32.const 19 i32.add i32.const -16 @@ -1391,19 +1319,19 @@ i32.const 4 i32.sub end - local.tee $2 + local.tee $0 call $~lib/rt/tlsf/searchBlock - local.tee $4 + local.tee $1 i32.eqz if - local.get $2 + local.get $0 i32.const 536870910 i32.lt_u if (result i32) - local.get $2 + local.get $0 i32.const 1 i32.const 27 - local.get $2 + local.get $0 i32.clz i32.sub i32.shl @@ -1411,16 +1339,16 @@ i32.sub i32.add else - local.get $2 + local.get $0 end i32.const 4 memory.size - local.tee $6 + local.tee $1 i32.const 16 i32.shl i32.const 4 i32.sub - local.get $3 + local.get $2 i32.load offset=1568 i32.ne i32.shl @@ -1431,18 +1359,18 @@ i32.and i32.const 16 i32.shr_u - local.set $5 - local.get $6 - local.get $5 - local.get $5 - local.get $6 - i32.lt_s + local.set $3 + local.get $1 + local.get $3 + local.get $1 + local.get $3 + i32.gt_s select memory.grow i32.const 0 i32.lt_s if - local.get $5 + local.get $3 memory.grow i32.const 0 i32.lt_s @@ -1450,18 +1378,18 @@ unreachable end end - local.get $3 - local.get $6 + local.get $2 + local.get $1 i32.const 16 i32.shl memory.size i32.const 16 i32.shl call $~lib/rt/tlsf/addMemory - local.get $3 local.get $2 + local.get $0 call $~lib/rt/tlsf/searchBlock - local.tee $4 + local.tee $1 i32.eqz if i32.const 0 @@ -1472,8 +1400,8 @@ unreachable end end - local.get $2 - local.get $4 + local.get $0 + local.get $1 i32.load i32.const -4 i32.and @@ -1486,13 +1414,13 @@ call $~lib/builtins/abort unreachable end - local.get $3 - local.get $4 + local.get $2 + local.get $1 call $~lib/rt/tlsf/removeBlock - local.get $4 + local.get $1 i32.load - local.set $6 - local.get $2 + local.set $3 + local.get $0 i32.const 4 i32.add i32.const 15 @@ -1505,54 +1433,54 @@ call $~lib/builtins/abort unreachable end - local.get $6 + local.get $3 i32.const -4 i32.and - local.get $2 + local.get $0 i32.sub - local.tee $5 + local.tee $4 i32.const 16 i32.ge_u if - local.get $4 - local.get $2 - local.get $6 + local.get $1 + local.get $0 + local.get $3 i32.const 2 i32.and i32.or i32.store - local.get $2 - local.get $4 + local.get $0 + local.get $1 i32.const 4 i32.add i32.add - local.tee $2 - local.get $5 + local.tee $0 + local.get $4 i32.const 4 i32.sub i32.const 1 i32.or i32.store - local.get $3 local.get $2 + local.get $0 call $~lib/rt/tlsf/insertBlock else - local.get $4 - local.get $6 + local.get $1 + local.get $3 i32.const -2 i32.and i32.store - local.get $4 + local.get $1 i32.const 4 i32.add - local.tee $2 - local.get $4 + local.tee $0 + local.get $1 i32.load i32.const -4 i32.and i32.add - local.get $2 - local.get $4 + local.get $0 + local.get $1 i32.load i32.const -4 i32.and @@ -1562,182 +1490,143 @@ i32.and i32.store end - local.get $4 local.get $1 - i32.store offset=12 - local.get $4 - local.get $0 - i32.store offset=16 - global.get $~lib/rt/itcms/fromSpace - local.tee $1 - i32.load offset=8 - local.set $2 - local.get $4 - local.get $1 - global.get $~lib/rt/itcms/white - i32.or - i32.store offset=4 - local.get $4 - local.get $2 - i32.store offset=8 - local.get $2 - local.get $4 - local.get $2 - i32.load offset=4 - i32.const 3 - i32.and - i32.or - i32.store offset=4 - local.get $1 - local.get $4 - i32.store offset=8 - global.get $~lib/rt/itcms/total - local.get $4 - i32.load - i32.const -4 - i32.and - i32.const 4 - i32.add - i32.add - global.set $~lib/rt/itcms/total - local.get $4 - i32.const 20 - i32.add - local.tee $2 - local.set $3 + ) + (func $~lib/memory/memory.fill (param $0 i32) (param $1 i32) + (local $2 i32) block $~lib/util/memory/memset|inlined.0 - local.get $0 + local.get $1 i32.eqz br_if $~lib/util/memory/memset|inlined.0 - local.get $3 + local.get $0 i32.const 0 i32.store8 local.get $0 - local.get $3 + local.get $1 i32.add - local.tee $1 + local.tee $2 i32.const 1 i32.sub i32.const 0 i32.store8 - local.get $0 + local.get $1 i32.const 2 i32.le_u br_if $~lib/util/memory/memset|inlined.0 - local.get $3 + local.get $0 i32.const 0 i32.store8 offset=1 - local.get $3 + local.get $0 i32.const 0 i32.store8 offset=2 - local.get $1 + local.get $2 i32.const 2 i32.sub i32.const 0 i32.store8 - local.get $1 + local.get $2 i32.const 3 i32.sub i32.const 0 i32.store8 - local.get $0 + local.get $1 i32.const 6 i32.le_u br_if $~lib/util/memory/memset|inlined.0 - local.get $3 + local.get $0 i32.const 0 i32.store8 offset=3 - local.get $1 + local.get $2 i32.const 4 i32.sub i32.const 0 i32.store8 - local.get $0 + local.get $1 i32.const 8 i32.le_u br_if $~lib/util/memory/memset|inlined.0 - local.get $3 + local.get $0 i32.const 0 - local.get $3 + local.get $0 i32.sub i32.const 3 i32.and - local.tee $1 + local.tee $2 i32.add - local.tee $5 + local.tee $0 i32.const 0 i32.store - local.get $5 local.get $0 local.get $1 + local.get $2 i32.sub i32.const -4 i32.and - local.tee $3 + local.tee $2 i32.add - local.tee $0 + local.tee $1 i32.const 4 i32.sub i32.const 0 i32.store - local.get $3 + local.get $2 i32.const 8 i32.le_u br_if $~lib/util/memory/memset|inlined.0 - local.get $5 + local.get $0 i32.const 0 i32.store offset=4 - local.get $5 + local.get $0 i32.const 0 i32.store offset=8 - local.get $0 + local.get $1 i32.const 12 i32.sub i32.const 0 i32.store - local.get $0 + local.get $1 i32.const 8 i32.sub i32.const 0 i32.store - local.get $3 + local.get $2 i32.const 24 i32.le_u br_if $~lib/util/memory/memset|inlined.0 - local.get $5 + local.get $0 i32.const 0 i32.store offset=12 - local.get $5 + local.get $0 i32.const 0 i32.store offset=16 - local.get $5 + local.get $0 i32.const 0 i32.store offset=20 - local.get $5 + local.get $0 i32.const 0 i32.store offset=24 - local.get $0 + local.get $1 i32.const 28 i32.sub i32.const 0 i32.store - local.get $0 + local.get $1 i32.const 24 i32.sub i32.const 0 i32.store - local.get $0 + local.get $1 i32.const 20 i32.sub i32.const 0 i32.store - local.get $0 + local.get $1 i32.const 16 i32.sub i32.const 0 i32.store - local.get $5 - local.get $5 + local.get $0 + local.get $0 i32.const 4 i32.and i32.const 24 @@ -1745,7 +1634,7 @@ local.tee $1 i32.add local.set $0 - local.get $3 + local.get $2 local.get $1 i32.sub local.set $1 @@ -1778,7 +1667,123 @@ end end end + ) + (func $~lib/rt/itcms/__new (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + local.get $0 + i32.const 1073741804 + i32.ge_u + if + i32.const 1056 + i32.const 1120 + i32.const 260 + i32.const 31 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.ge_u + if + block $__inlined_func$~lib/rt/itcms/interrupt + i32.const 2048 + local.set $2 + loop $do-continue|0 + local.get $2 + call $~lib/rt/itcms/step + i32.sub + local.set $2 + global.get $~lib/rt/itcms/state + i32.eqz + if + global.get $~lib/rt/itcms/total + i64.extend_i32_u + i64.const 200 + i64.mul + i64.const 100 + i64.div_u + i32.wrap_i64 + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold + br $__inlined_func$~lib/rt/itcms/interrupt + end + local.get $2 + i32.const 0 + i32.gt_s + br_if $do-continue|0 + end + global.get $~lib/rt/itcms/total + local.tee $2 + local.get $2 + global.get $~lib/rt/itcms/threshold + i32.sub + i32.const 1024 + i32.lt_u + i32.const 10 + i32.shl + i32.add + global.set $~lib/rt/itcms/threshold + end + end + local.get $0 + i32.const 16 + i32.add + local.set $2 + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $2 + call $~lib/rt/tlsf/allocateBlock + local.tee $2 + local.get $1 + i32.store offset=12 + local.get $2 + local.get $0 + i32.store offset=16 + global.get $~lib/rt/itcms/fromSpace + local.tee $3 + i32.load offset=8 + local.set $1 local.get $2 + local.get $3 + global.get $~lib/rt/itcms/white + i32.or + i32.store offset=4 + local.get $2 + local.get $1 + i32.store offset=8 + local.get $1 + local.get $2 + local.get $1 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + local.get $3 + local.get $2 + i32.store offset=8 + global.get $~lib/rt/itcms/total + local.get $2 + i32.load + i32.const -4 + i32.and + i32.const 4 + i32.add + i32.add + global.set $~lib/rt/itcms/total + local.get $2 + i32.const 20 + i32.add + local.tee $1 + local.get $0 + call $~lib/memory/memory.fill + local.get $1 ) (func $start:constructor (local $0 i32) diff --git a/tests/compiler/do.optimized.wat b/tests/compiler/do.optimized.wat index 80996cf5c6..2f35eb5db6 100644 --- a/tests/compiler/do.optimized.wat +++ b/tests/compiler/do.optimized.wat @@ -1027,7 +1027,7 @@ local.get $0 i32.const 4 i32.add - local.tee $0 + local.tee $1 i32.const 17892 i32.ge_u if @@ -1037,20 +1037,20 @@ call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT - local.get $0 + local.get $1 i32.const 4 i32.sub - local.set $1 - local.get $0 + local.set $0 + local.get $1 i32.const 15 i32.and i32.const 1 - local.get $0 + local.get $1 select if (result i32) i32.const 1 else - local.get $1 + local.get $0 i32.load i32.const 1 i32.and @@ -1063,14 +1063,11 @@ call $~lib/builtins/abort unreachable end - local.get $1 - local.tee $0 + local.get $0 + local.get $0 i32.load i32.const 1 i32.or - local.set $1 - local.get $0 - local.get $1 i32.store local.get $0 call $~lib/rt/tlsf/insertBlock @@ -1083,8 +1080,7 @@ local.tee $0 local.get $0 i32.store offset=4 - global.get $~lib/rt/itcms/toSpace - local.tee $0 + local.get $0 local.get $0 i32.store offset=8 i32.const 0 diff --git a/tests/compiler/empty-exportruntime.optimized.wat b/tests/compiler/empty-exportruntime.optimized.wat index f6d53b32c4..7ffaa7847e 100644 --- a/tests/compiler/empty-exportruntime.optimized.wat +++ b/tests/compiler/empty-exportruntime.optimized.wat @@ -1045,7 +1045,7 @@ local.get $0 i32.const 4 i32.add - local.tee $0 + local.tee $1 i32.const 17980 i32.ge_u if @@ -1055,20 +1055,20 @@ call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT - local.get $0 + local.get $1 i32.const 4 i32.sub - local.set $1 - local.get $0 + local.set $0 + local.get $1 i32.const 15 i32.and i32.const 1 - local.get $0 + local.get $1 select if (result i32) i32.const 1 else - local.get $1 + local.get $0 i32.load i32.const 1 i32.and @@ -1081,14 +1081,11 @@ call $~lib/builtins/abort unreachable end - local.get $1 - local.tee $0 + local.get $0 + local.get $0 i32.load i32.const 1 i32.or - local.set $1 - local.get $0 - local.get $1 i32.store local.get $0 call $~lib/rt/tlsf/insertBlock @@ -1101,8 +1098,7 @@ local.tee $0 local.get $0 i32.store offset=4 - global.get $~lib/rt/itcms/toSpace - local.tee $0 + local.get $0 local.get $0 i32.store offset=8 i32.const 0 @@ -1242,80 +1238,11 @@ end end ) - (func $~lib/rt/itcms/__new (param $0 i32) (param $1 i32) (result i32) + (func $~lib/rt/tlsf/allocateBlock (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) - (local $5 i32) - (local $6 i32) - local.get $0 - i32.const 1073741804 - i32.ge_u - if - i32.const 1056 - i32.const 1120 - i32.const 260 - i32.const 31 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/rt/itcms/total - global.get $~lib/rt/itcms/threshold - i32.ge_u - if - block $__inlined_func$~lib/rt/itcms/interrupt - i32.const 2048 - local.set $2 - loop $do-continue|0 - local.get $2 - call $~lib/rt/itcms/step - i32.sub - local.set $2 - global.get $~lib/rt/itcms/state - i32.eqz - if - global.get $~lib/rt/itcms/total - i64.extend_i32_u - i64.const 200 - i64.mul - i64.const 100 - i64.div_u - i32.wrap_i64 - i32.const 1024 - i32.add - global.set $~lib/rt/itcms/threshold - br $__inlined_func$~lib/rt/itcms/interrupt - end - local.get $2 - i32.const 0 - i32.gt_s - br_if $do-continue|0 - end - global.get $~lib/rt/itcms/total - local.tee $2 - local.get $2 - global.get $~lib/rt/itcms/threshold - i32.sub - i32.const 1024 - i32.lt_u - i32.const 10 - i32.shl - i32.add - global.set $~lib/rt/itcms/threshold - end - end - local.get $0 - i32.const 16 - i32.add - local.set $2 - global.get $~lib/rt/tlsf/ROOT - i32.eqz - if - call $~lib/rt/tlsf/initialize - end - global.get $~lib/rt/tlsf/ROOT - local.set $3 - local.get $2 + local.get $1 i32.const 1073741820 i32.gt_u if @@ -1326,14 +1253,15 @@ call $~lib/builtins/abort unreachable end - local.get $3 - local.get $2 + local.get $0 + local.tee $2 + local.get $1 i32.const 12 i32.le_u if (result i32) i32.const 12 else - local.get $2 + local.get $1 i32.const 19 i32.add i32.const -16 @@ -1341,19 +1269,19 @@ i32.const 4 i32.sub end - local.tee $2 + local.tee $0 call $~lib/rt/tlsf/searchBlock - local.tee $4 + local.tee $1 i32.eqz if - local.get $2 + local.get $0 i32.const 536870910 i32.lt_u if (result i32) - local.get $2 + local.get $0 i32.const 1 i32.const 27 - local.get $2 + local.get $0 i32.clz i32.sub i32.shl @@ -1361,16 +1289,16 @@ i32.sub i32.add else - local.get $2 + local.get $0 end i32.const 4 memory.size - local.tee $6 + local.tee $1 i32.const 16 i32.shl i32.const 4 i32.sub - local.get $3 + local.get $2 i32.load offset=1568 i32.ne i32.shl @@ -1381,18 +1309,18 @@ i32.and i32.const 16 i32.shr_u - local.set $5 - local.get $6 - local.get $5 - local.get $5 - local.get $6 - i32.lt_s + local.set $3 + local.get $1 + local.get $3 + local.get $1 + local.get $3 + i32.gt_s select memory.grow i32.const 0 i32.lt_s if - local.get $5 + local.get $3 memory.grow i32.const 0 i32.lt_s @@ -1400,18 +1328,18 @@ unreachable end end - local.get $3 - local.get $6 + local.get $2 + local.get $1 i32.const 16 i32.shl memory.size i32.const 16 i32.shl call $~lib/rt/tlsf/addMemory - local.get $3 local.get $2 + local.get $0 call $~lib/rt/tlsf/searchBlock - local.tee $4 + local.tee $1 i32.eqz if i32.const 0 @@ -1422,8 +1350,8 @@ unreachable end end - local.get $2 - local.get $4 + local.get $0 + local.get $1 i32.load i32.const -4 i32.and @@ -1436,13 +1364,13 @@ call $~lib/builtins/abort unreachable end - local.get $3 - local.get $4 + local.get $2 + local.get $1 call $~lib/rt/tlsf/removeBlock - local.get $4 + local.get $1 i32.load - local.set $6 - local.get $2 + local.set $3 + local.get $0 i32.const 4 i32.add i32.const 15 @@ -1455,54 +1383,54 @@ call $~lib/builtins/abort unreachable end - local.get $6 + local.get $3 i32.const -4 i32.and - local.get $2 + local.get $0 i32.sub - local.tee $5 + local.tee $4 i32.const 16 i32.ge_u if - local.get $4 - local.get $2 - local.get $6 + local.get $1 + local.get $0 + local.get $3 i32.const 2 i32.and i32.or i32.store - local.get $2 - local.get $4 + local.get $0 + local.get $1 i32.const 4 i32.add i32.add - local.tee $2 - local.get $5 + local.tee $0 + local.get $4 i32.const 4 i32.sub i32.const 1 i32.or i32.store - local.get $3 local.get $2 + local.get $0 call $~lib/rt/tlsf/insertBlock else - local.get $4 - local.get $6 + local.get $1 + local.get $3 i32.const -2 i32.and i32.store - local.get $4 + local.get $1 i32.const 4 i32.add - local.tee $2 - local.get $4 + local.tee $0 + local.get $1 i32.load i32.const -4 i32.and i32.add - local.get $2 - local.get $4 + local.get $0 + local.get $1 i32.load i32.const -4 i32.and @@ -1512,182 +1440,143 @@ i32.and i32.store end - local.get $4 - local.get $1 - i32.store offset=12 - local.get $4 - local.get $0 - i32.store offset=16 - global.get $~lib/rt/itcms/fromSpace - local.tee $1 - i32.load offset=8 - local.set $2 - local.get $4 - local.get $1 - global.get $~lib/rt/itcms/white - i32.or - i32.store offset=4 - local.get $4 - local.get $2 - i32.store offset=8 - local.get $2 - local.get $4 - local.get $2 - i32.load offset=4 - i32.const 3 - i32.and - i32.or - i32.store offset=4 local.get $1 - local.get $4 - i32.store offset=8 - global.get $~lib/rt/itcms/total - local.get $4 - i32.load - i32.const -4 - i32.and - i32.const 4 - i32.add - i32.add - global.set $~lib/rt/itcms/total - local.get $4 - i32.const 20 - i32.add - local.tee $2 - local.set $3 + ) + (func $~lib/memory/memory.fill (param $0 i32) (param $1 i32) + (local $2 i32) block $~lib/util/memory/memset|inlined.0 - local.get $0 + local.get $1 i32.eqz br_if $~lib/util/memory/memset|inlined.0 - local.get $3 + local.get $0 i32.const 0 i32.store8 local.get $0 - local.get $3 + local.get $1 i32.add - local.tee $1 + local.tee $2 i32.const 1 i32.sub i32.const 0 i32.store8 - local.get $0 + local.get $1 i32.const 2 i32.le_u br_if $~lib/util/memory/memset|inlined.0 - local.get $3 + local.get $0 i32.const 0 i32.store8 offset=1 - local.get $3 + local.get $0 i32.const 0 i32.store8 offset=2 - local.get $1 + local.get $2 i32.const 2 i32.sub i32.const 0 i32.store8 - local.get $1 + local.get $2 i32.const 3 i32.sub i32.const 0 i32.store8 - local.get $0 + local.get $1 i32.const 6 i32.le_u br_if $~lib/util/memory/memset|inlined.0 - local.get $3 + local.get $0 i32.const 0 i32.store8 offset=3 - local.get $1 + local.get $2 i32.const 4 i32.sub i32.const 0 i32.store8 - local.get $0 + local.get $1 i32.const 8 i32.le_u br_if $~lib/util/memory/memset|inlined.0 - local.get $3 + local.get $0 i32.const 0 - local.get $3 + local.get $0 i32.sub i32.const 3 i32.and - local.tee $1 + local.tee $2 i32.add - local.tee $5 + local.tee $0 i32.const 0 i32.store - local.get $5 local.get $0 local.get $1 + local.get $2 i32.sub i32.const -4 i32.and - local.tee $3 + local.tee $2 i32.add - local.tee $0 + local.tee $1 i32.const 4 i32.sub i32.const 0 i32.store - local.get $3 + local.get $2 i32.const 8 i32.le_u br_if $~lib/util/memory/memset|inlined.0 - local.get $5 + local.get $0 i32.const 0 i32.store offset=4 - local.get $5 + local.get $0 i32.const 0 i32.store offset=8 - local.get $0 + local.get $1 i32.const 12 i32.sub i32.const 0 i32.store - local.get $0 + local.get $1 i32.const 8 i32.sub i32.const 0 i32.store - local.get $3 + local.get $2 i32.const 24 i32.le_u br_if $~lib/util/memory/memset|inlined.0 - local.get $5 + local.get $0 i32.const 0 i32.store offset=12 - local.get $5 + local.get $0 i32.const 0 i32.store offset=16 - local.get $5 + local.get $0 i32.const 0 i32.store offset=20 - local.get $5 + local.get $0 i32.const 0 i32.store offset=24 - local.get $0 + local.get $1 i32.const 28 i32.sub i32.const 0 i32.store - local.get $0 + local.get $1 i32.const 24 i32.sub i32.const 0 i32.store - local.get $0 + local.get $1 i32.const 20 i32.sub i32.const 0 i32.store - local.get $0 + local.get $1 i32.const 16 i32.sub i32.const 0 i32.store - local.get $5 - local.get $5 + local.get $0 + local.get $0 i32.const 4 i32.and i32.const 24 @@ -1695,7 +1584,7 @@ local.tee $1 i32.add local.set $0 - local.get $3 + local.get $2 local.get $1 i32.sub local.set $1 @@ -1728,7 +1617,123 @@ end end end + ) + (func $~lib/rt/itcms/__new (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + local.get $0 + i32.const 1073741804 + i32.ge_u + if + i32.const 1056 + i32.const 1120 + i32.const 260 + i32.const 31 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.ge_u + if + block $__inlined_func$~lib/rt/itcms/interrupt + i32.const 2048 + local.set $2 + loop $do-continue|0 + local.get $2 + call $~lib/rt/itcms/step + i32.sub + local.set $2 + global.get $~lib/rt/itcms/state + i32.eqz + if + global.get $~lib/rt/itcms/total + i64.extend_i32_u + i64.const 200 + i64.mul + i64.const 100 + i64.div_u + i32.wrap_i64 + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold + br $__inlined_func$~lib/rt/itcms/interrupt + end + local.get $2 + i32.const 0 + i32.gt_s + br_if $do-continue|0 + end + global.get $~lib/rt/itcms/total + local.tee $2 + local.get $2 + global.get $~lib/rt/itcms/threshold + i32.sub + i32.const 1024 + i32.lt_u + i32.const 10 + i32.shl + i32.add + global.set $~lib/rt/itcms/threshold + end + end + local.get $0 + i32.const 16 + i32.add + local.set $2 + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $2 + call $~lib/rt/tlsf/allocateBlock + local.tee $2 + local.get $1 + i32.store offset=12 + local.get $2 + local.get $0 + i32.store offset=16 + global.get $~lib/rt/itcms/fromSpace + local.tee $3 + i32.load offset=8 + local.set $1 local.get $2 + local.get $3 + global.get $~lib/rt/itcms/white + i32.or + i32.store offset=4 + local.get $2 + local.get $1 + i32.store offset=8 + local.get $1 + local.get $2 + local.get $1 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + local.get $3 + local.get $2 + i32.store offset=8 + global.get $~lib/rt/itcms/total + local.get $2 + i32.load + i32.const -4 + i32.and + i32.const 4 + i32.add + i32.add + global.set $~lib/rt/itcms/total + local.get $2 + i32.const 20 + i32.add + local.tee $1 + local.get $0 + call $~lib/memory/memory.fill + local.get $1 ) (func $~lib/rt/itcms/__pin (param $0 i32) (result i32) (local $1 i32) diff --git a/tests/compiler/empty-new.optimized.wat b/tests/compiler/empty-new.optimized.wat index f26e0b4178..89ebf591e0 100644 --- a/tests/compiler/empty-new.optimized.wat +++ b/tests/compiler/empty-new.optimized.wat @@ -1023,7 +1023,7 @@ local.get $0 i32.const 4 i32.add - local.tee $0 + local.tee $1 i32.const 17852 i32.ge_u if @@ -1033,20 +1033,20 @@ call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT - local.get $0 + local.get $1 i32.const 4 i32.sub - local.set $1 - local.get $0 + local.set $0 + local.get $1 i32.const 15 i32.and i32.const 1 - local.get $0 + local.get $1 select if (result i32) i32.const 1 else - local.get $1 + local.get $0 i32.load i32.const 1 i32.and @@ -1059,14 +1059,11 @@ call $~lib/builtins/abort unreachable end - local.get $1 - local.tee $0 + local.get $0 + local.get $0 i32.load i32.const 1 i32.or - local.set $1 - local.get $0 - local.get $1 i32.store local.get $0 call $~lib/rt/tlsf/insertBlock @@ -1079,8 +1076,7 @@ local.tee $0 local.get $0 i32.store offset=4 - global.get $~lib/rt/itcms/toSpace - local.tee $0 + local.get $0 local.get $0 i32.store offset=8 i32.const 0 diff --git a/tests/compiler/exports.optimized.wat b/tests/compiler/exports.optimized.wat index 6be1e46aed..05a571fe68 100644 --- a/tests/compiler/exports.optimized.wat +++ b/tests/compiler/exports.optimized.wat @@ -1077,7 +1077,7 @@ local.get $0 i32.const 4 i32.add - local.tee $0 + local.tee $1 i32.const 17868 i32.ge_u if @@ -1087,20 +1087,20 @@ call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT - local.get $0 + local.get $1 i32.const 4 i32.sub - local.set $1 - local.get $0 + local.set $0 + local.get $1 i32.const 15 i32.and i32.const 1 - local.get $0 + local.get $1 select if (result i32) i32.const 1 else - local.get $1 + local.get $0 i32.load i32.const 1 i32.and @@ -1113,14 +1113,11 @@ call $~lib/builtins/abort unreachable end - local.get $1 - local.tee $0 + local.get $0 + local.get $0 i32.load i32.const 1 i32.or - local.set $1 - local.get $0 - local.get $1 i32.store local.get $0 call $~lib/rt/tlsf/insertBlock @@ -1133,8 +1130,7 @@ local.tee $0 local.get $0 i32.store offset=4 - global.get $~lib/rt/itcms/toSpace - local.tee $0 + local.get $0 local.get $0 i32.store offset=8 i32.const 0 diff --git a/tests/compiler/exportstar-rereexport.optimized.wat b/tests/compiler/exportstar-rereexport.optimized.wat index d9c0ebacf3..6d998c8a4b 100644 --- a/tests/compiler/exportstar-rereexport.optimized.wat +++ b/tests/compiler/exportstar-rereexport.optimized.wat @@ -1078,7 +1078,7 @@ local.get $0 i32.const 4 i32.add - local.tee $0 + local.tee $1 i32.const 17956 i32.ge_u if @@ -1088,20 +1088,20 @@ call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT - local.get $0 + local.get $1 i32.const 4 i32.sub - local.set $1 - local.get $0 + local.set $0 + local.get $1 i32.const 15 i32.and i32.const 1 - local.get $0 + local.get $1 select if (result i32) i32.const 1 else - local.get $1 + local.get $0 i32.load i32.const 1 i32.and @@ -1114,14 +1114,11 @@ call $~lib/builtins/abort unreachable end - local.get $1 - local.tee $0 + local.get $0 + local.get $0 i32.load i32.const 1 i32.or - local.set $1 - local.get $0 - local.get $1 i32.store local.get $0 call $~lib/rt/tlsf/insertBlock @@ -1134,8 +1131,7 @@ local.tee $0 local.get $0 i32.store offset=4 - global.get $~lib/rt/itcms/toSpace - local.tee $0 + local.get $0 local.get $0 i32.store offset=8 i32.const 0 @@ -1504,134 +1500,132 @@ ) (func $~start (local $0 i32) - block $__inlined_func$start:exportstar-rereexport + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner0 global.get $~lib/memory/__stack_pointer + i32.const 1572 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.tee $0 + i32.const 0 + i32.store + local.get $0 i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer - block $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 1572 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - local.tee $0 + global.get $~lib/memory/__stack_pointer + i32.const 1572 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + memory.size + i32.const 16 + i32.shl + i32.const 17956 + i32.sub + i32.const 1 + i32.shr_u + global.set $~lib/rt/itcms/threshold + i32.const 1220 + i32.const 1216 + i32.store + i32.const 1224 + i32.const 1216 + i32.store + i32.const 1216 + global.set $~lib/rt/itcms/pinSpace + i32.const 1252 + i32.const 1248 + i32.store + i32.const 1256 + i32.const 1248 + i32.store + i32.const 1248 + global.set $~lib/rt/itcms/toSpace + i32.const 1396 + i32.const 1392 + i32.store + i32.const 1400 + i32.const 1392 + i32.store + i32.const 1392 + global.set $~lib/rt/itcms/fromSpace + call $exports/Car#constructor + global.set $reexport/car + global.get $~lib/memory/__stack_pointer + global.get $reexport/car + local.tee $0 + i32.store + local.get $0 + i32.load + i32.const 2 + i32.ne + if i32.const 0 - i32.store - local.get $0 - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1572 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer + i32.const 1056 + i32.const 40 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + call $exports/Car#constructor + global.set $rereexport/car + global.get $~lib/memory/__stack_pointer + global.get $rereexport/car + local.tee $0 + i32.store + local.get $0 + i32.load + i32.const 2 + i32.ne + if i32.const 0 - i32.store - memory.size - i32.const 16 - i32.shl - i32.const 17956 - i32.sub + i32.const 1504 + i32.const 18 i32.const 1 - i32.shr_u - global.set $~lib/rt/itcms/threshold - i32.const 1220 - i32.const 1216 - i32.store - i32.const 1224 - i32.const 1216 - i32.store - i32.const 1216 - global.set $~lib/rt/itcms/pinSpace - i32.const 1252 - i32.const 1248 - i32.store - i32.const 1256 - i32.const 1248 - i32.store - i32.const 1248 - global.set $~lib/rt/itcms/toSpace - i32.const 1396 - i32.const 1392 - i32.store - i32.const 1400 - i32.const 1392 - i32.store - i32.const 1392 - global.set $~lib/rt/itcms/fromSpace - call $exports/Car#constructor - global.set $reexport/car - global.get $~lib/memory/__stack_pointer - global.get $reexport/car - local.tee $0 - i32.store - local.get $0 - i32.load - i32.const 2 - i32.ne - if - i32.const 0 - i32.const 1056 - i32.const 40 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - call $exports/Car#constructor - global.set $rereexport/car - global.get $~lib/memory/__stack_pointer - global.get $rereexport/car - local.tee $0 - i32.store - local.get $0 - i32.load - i32.const 2 - i32.ne - if - i32.const 0 - i32.const 1504 - i32.const 18 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - call $exports/Car#constructor - global.set $rereexport/exportsNamespaceCar - global.get $~lib/memory/__stack_pointer - global.get $rereexport/exportsNamespaceCar - local.tee $0 - i32.store - local.get $0 - i32.load - i32.const 2 - i32.ne - if - i32.const 0 - i32.const 1504 - i32.const 24 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - br $__inlined_func$start:exportstar-rereexport + call $~lib/builtins/abort + unreachable end - i32.const 17984 - i32.const 18032 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable + call $exports/Car#constructor + global.set $rereexport/exportsNamespaceCar + global.get $~lib/memory/__stack_pointer + global.get $rereexport/exportsNamespaceCar + local.tee $0 + i32.store + local.get $0 + i32.load + i32.const 2 + i32.ne + if + i32.const 0 + i32.const 1504 + i32.const 24 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + return end + i32.const 17984 + i32.const 18032 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable ) (func $exports/Car#constructor (result i32) (local $0 i32) diff --git a/tests/compiler/extends-baseaggregate.optimized.wat b/tests/compiler/extends-baseaggregate.optimized.wat index 7e02830631..ae23b03b25 100644 --- a/tests/compiler/extends-baseaggregate.optimized.wat +++ b/tests/compiler/extends-baseaggregate.optimized.wat @@ -1,8 +1,8 @@ (module - (type $i32_=>_none (func (param i32))) + (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) (type $none_=>_none (func)) + (type $i32_=>_none (func (param i32))) (type $i32_i32_=>_none (func (param i32 i32))) - (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) (type $none_=>_i32 (func (result i32))) @@ -1045,7 +1045,7 @@ local.get $0 i32.const 4 i32.add - local.tee $0 + local.tee $1 i32.const 18156 i32.ge_u if @@ -1055,20 +1055,20 @@ call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT - local.get $0 + local.get $1 i32.const 4 i32.sub - local.set $1 - local.get $0 + local.set $0 + local.get $1 i32.const 15 i32.and i32.const 1 - local.get $0 + local.get $1 select if (result i32) i32.const 1 else - local.get $1 + local.get $0 i32.load i32.const 1 i32.and @@ -1081,14 +1081,11 @@ call $~lib/builtins/abort unreachable end - local.get $1 - local.tee $0 + local.get $0 + local.get $0 i32.load i32.const 1 i32.or - local.set $1 - local.get $0 - local.get $1 i32.store local.get $0 call $~lib/rt/tlsf/insertBlock @@ -1101,8 +1098,7 @@ local.tee $0 local.get $0 i32.store offset=4 - global.get $~lib/rt/itcms/toSpace - local.tee $0 + local.get $0 local.get $0 i32.store offset=8 i32.const 0 @@ -1242,6 +1238,210 @@ end end ) + (func $~lib/rt/tlsf/allocateBlock (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + local.get $1 + i32.const 1073741820 + i32.gt_u + if + i32.const 1216 + i32.const 1552 + i32.const 458 + i32.const 29 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.tee $2 + local.get $1 + i32.const 12 + i32.le_u + if (result i32) + i32.const 12 + else + local.get $1 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + end + local.tee $0 + call $~lib/rt/tlsf/searchBlock + local.tee $1 + i32.eqz + if + local.get $0 + i32.const 536870910 + i32.lt_u + if (result i32) + local.get $0 + i32.const 1 + i32.const 27 + local.get $0 + i32.clz + i32.sub + i32.shl + i32.const 1 + i32.sub + i32.add + else + local.get $0 + end + i32.const 4 + memory.size + local.tee $1 + i32.const 16 + i32.shl + i32.const 4 + i32.sub + local.get $2 + i32.load offset=1568 + i32.ne + i32.shl + i32.add + i32.const 65535 + i32.add + i32.const -65536 + i32.and + i32.const 16 + i32.shr_u + local.set $3 + local.get $1 + local.get $3 + local.get $1 + local.get $3 + i32.gt_s + select + memory.grow + i32.const 0 + i32.lt_s + if + local.get $3 + memory.grow + i32.const 0 + i32.lt_s + if + unreachable + end + end + local.get $2 + local.get $1 + i32.const 16 + i32.shl + memory.size + i32.const 16 + i32.shl + call $~lib/rt/tlsf/addMemory + local.get $2 + local.get $0 + call $~lib/rt/tlsf/searchBlock + local.tee $1 + i32.eqz + if + i32.const 0 + i32.const 1552 + i32.const 496 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + end + local.get $0 + local.get $1 + i32.load + i32.const -4 + i32.and + i32.gt_u + if + i32.const 0 + i32.const 1552 + i32.const 498 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.get $1 + call $~lib/rt/tlsf/removeBlock + local.get $1 + i32.load + local.set $3 + local.get $0 + i32.const 4 + i32.add + i32.const 15 + i32.and + if + i32.const 0 + i32.const 1552 + i32.const 357 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const -4 + i32.and + local.get $0 + i32.sub + local.tee $4 + i32.const 16 + i32.ge_u + if + local.get $1 + local.get $0 + local.get $3 + i32.const 2 + i32.and + i32.or + i32.store + local.get $0 + local.get $1 + i32.const 4 + i32.add + i32.add + local.tee $0 + local.get $4 + i32.const 4 + i32.sub + i32.const 1 + i32.or + i32.store + local.get $2 + local.get $0 + call $~lib/rt/tlsf/insertBlock + else + local.get $1 + local.get $3 + i32.const -2 + i32.and + i32.store + local.get $1 + i32.const 4 + i32.add + local.tee $0 + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.get $0 + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + i32.load + i32.const -3 + i32.and + i32.store + end + local.get $1 + ) (func $~lib/memory/memory.fill (param $0 i32) (param $1 i32) (local $2 i32) block $~lib/util/memory/memset|inlined.0 @@ -1421,9 +1621,6 @@ (func $~lib/rt/itcms/__new (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) local.get $0 i32.const 1073741804 i32.ge_u @@ -1441,12 +1638,12 @@ if block $__inlined_func$~lib/rt/itcms/interrupt i32.const 2048 - local.set $3 + local.set $2 loop $do-continue|0 - local.get $3 + local.get $2 call $~lib/rt/itcms/step i32.sub - local.set $3 + local.set $2 global.get $~lib/rt/itcms/state i32.eqz if @@ -1462,14 +1659,14 @@ global.set $~lib/rt/itcms/threshold br $__inlined_func$~lib/rt/itcms/interrupt end - local.get $3 + local.get $2 i32.const 0 i32.gt_s br_if $do-continue|0 end global.get $~lib/rt/itcms/total - local.tee $3 - local.get $3 + local.tee $2 + local.get $2 global.get $~lib/rt/itcms/threshold i32.sub i32.const 1024 @@ -1483,230 +1680,35 @@ local.get $0 i32.const 16 i32.add - local.set $6 + local.set $2 global.get $~lib/rt/tlsf/ROOT i32.eqz if call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT - local.get $6 - i32.const 1073741820 - i32.gt_u - if - i32.const 1216 - i32.const 1552 - i32.const 458 - i32.const 29 - call $~lib/builtins/abort - unreachable - end + local.get $2 + call $~lib/rt/tlsf/allocateBlock local.tee $2 - local.get $6 - i32.const 12 - i32.le_u - if (result i32) - i32.const 12 - else - local.get $6 - i32.const 19 - i32.add - i32.const -16 - i32.and - i32.const 4 - i32.sub - end - local.tee $3 - call $~lib/rt/tlsf/searchBlock - local.tee $6 - i32.eqz - if - local.get $3 - i32.const 536870910 - i32.lt_u - if (result i32) - local.get $3 - i32.const 1 - i32.const 27 - local.get $3 - i32.clz - i32.sub - i32.shl - i32.const 1 - i32.sub - i32.add - else - local.get $3 - end - i32.const 4 - memory.size - local.tee $6 - i32.const 16 - i32.shl - i32.const 4 - i32.sub - local.get $2 - i32.load offset=1568 - i32.ne - i32.shl - i32.add - i32.const 65535 - i32.add - i32.const -65536 - i32.and - i32.const 16 - i32.shr_u - local.set $5 - local.get $6 - local.get $5 - local.get $5 - local.get $6 - i32.lt_s - select - memory.grow - i32.const 0 - i32.lt_s - if - local.get $5 - memory.grow - i32.const 0 - i32.lt_s - if - unreachable - end - end - local.get $2 - local.get $6 - i32.const 16 - i32.shl - memory.size - i32.const 16 - i32.shl - call $~lib/rt/tlsf/addMemory - local.get $2 - local.get $3 - call $~lib/rt/tlsf/searchBlock - local.tee $6 - i32.eqz - if - i32.const 0 - i32.const 1552 - i32.const 496 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - end - local.get $3 - local.get $6 - i32.load - i32.const -4 - i32.and - i32.gt_u - if - i32.const 0 - i32.const 1552 - i32.const 498 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $2 - local.get $6 - call $~lib/rt/tlsf/removeBlock - local.get $6 - i32.load - local.set $5 - local.get $3 - i32.const 4 - i32.add - i32.const 15 - i32.and - if - i32.const 0 - i32.const 1552 - i32.const 357 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $5 - i32.const -4 - i32.and - local.get $3 - i32.sub - local.tee $4 - i32.const 16 - i32.ge_u - if - local.get $6 - local.get $3 - local.get $5 - i32.const 2 - i32.and - i32.or - i32.store - local.get $3 - local.get $6 - i32.const 4 - i32.add - i32.add - local.tee $3 - local.get $4 - i32.const 4 - i32.sub - i32.const 1 - i32.or - i32.store - local.get $2 - local.get $3 - call $~lib/rt/tlsf/insertBlock - else - local.get $6 - local.get $5 - i32.const -2 - i32.and - i32.store - local.get $6 - i32.const 4 - i32.add - local.tee $3 - local.get $6 - i32.load - i32.const -4 - i32.and - i32.add - local.get $3 - local.get $6 - i32.load - i32.const -4 - i32.and - i32.add - i32.load - i32.const -3 - i32.and - i32.store - end - local.get $6 local.get $1 i32.store offset=12 - local.get $6 + local.get $2 local.get $0 i32.store offset=16 global.get $~lib/rt/itcms/fromSpace local.tee $3 i32.load offset=8 local.set $1 - local.get $6 + local.get $2 local.get $3 global.get $~lib/rt/itcms/white i32.or i32.store offset=4 - local.get $6 + local.get $2 local.get $1 i32.store offset=8 local.get $1 - local.get $6 + local.get $2 local.get $1 i32.load offset=4 i32.const 3 @@ -1714,10 +1716,10 @@ i32.or i32.store offset=4 local.get $3 - local.get $6 + local.get $2 i32.store offset=8 global.get $~lib/rt/itcms/total - local.get $6 + local.get $2 i32.load i32.const -4 i32.and @@ -1725,7 +1727,7 @@ i32.add i32.add global.set $~lib/rt/itcms/total - local.get $6 + local.get $2 i32.const 20 i32.add local.tee $1 @@ -2549,333 +2551,196 @@ i32.store8 end ) - (func $~lib/array/Array#push (param $0 i32) - (local $1 i32) - (local $2 i32) + (func $~lib/memory/memory.copy (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) - (local $10 i32) - (local $11 i32) - i32.const 1180 - i32.load - local.tee $7 - i32.const 1 - i32.add - local.tee $6 - local.tee $3 - i32.const 1176 - i32.load - local.tee $10 - i32.const 2 - i32.shr_u - i32.gt_u - if - local.get $3 - i32.const 268435455 - i32.gt_u + block $~lib/util/memory/memmove|inlined.0 + local.get $2 + local.set $4 + local.get $0 + local.get $1 + i32.eq + br_if $~lib/util/memory/memmove|inlined.0 + local.get $1 + local.get $0 + i32.sub + local.get $4 + i32.sub + i32.const 0 + local.get $4 + i32.const 1 + i32.shl + i32.sub + i32.le_u if - i32.const 1616 - i32.const 1664 - i32.const 17 - i32.const 48 - call $~lib/builtins/abort - unreachable - end - i32.const 1168 - i32.load - local.tee $9 - local.set $1 - block $__inlined_func$~lib/rt/itcms/__renew - local.get $10 - i32.const 1 - i32.shl - local.tee $4 - i32.const 1073741820 - local.get $4 - i32.const 1073741820 - i32.lt_u - select - local.tee $2 - local.get $3 - i32.const 8 - local.get $3 - i32.const 8 - i32.gt_u - select - i32.const 2 - i32.shl - local.tee $4 - local.get $2 + local.get $0 + local.get $1 local.get $4 - i32.gt_u - select - local.tee $8 - local.tee $3 - local.get $9 - i32.const 20 - i32.sub - local.tee $2 - i32.load - i32.const -4 + call $~lib/util/memory/memcpy + br $~lib/util/memory/memmove|inlined.0 + end + local.get $0 + local.get $1 + i32.lt_u + if + local.get $1 + i32.const 7 i32.and - i32.const 16 - i32.sub - i32.le_u - if - local.get $2 - local.get $3 - i32.store offset=16 - local.get $1 - local.set $5 - br $__inlined_func$~lib/rt/itcms/__renew - end - local.get $3 - local.get $2 - i32.load offset=12 - call $~lib/rt/itcms/__new - local.tee $5 - local.set $4 - local.get $3 - local.get $2 - i32.load offset=16 - local.tee $2 - local.get $2 - local.get $3 - i32.gt_u - select - local.set $11 - block $~lib/util/memory/memmove|inlined.0 - local.get $1 - local.get $4 - i32.eq - br_if $~lib/util/memory/memmove|inlined.0 - local.get $1 - local.get $4 - i32.sub - local.get $11 - i32.sub - i32.const 0 - local.get $11 - i32.const 1 - i32.shl - i32.sub - i32.le_u - if + local.get $0 + i32.const 7 + i32.and + i32.eq + if + loop $while-continue|0 + local.get $0 + i32.const 7 + i32.and + if + local.get $4 + i32.eqz + br_if $~lib/util/memory/memmove|inlined.0 + local.get $4 + i32.const 1 + i32.sub + local.set $4 + local.get $0 + local.tee $2 + i32.const 1 + i32.add + local.set $0 + local.get $1 + local.tee $3 + i32.const 1 + i32.add + local.set $1 + local.get $2 + local.get $3 + i32.load8_u + i32.store8 + br $while-continue|0 + end + end + loop $while-continue|1 local.get $4 - local.get $1 - local.get $11 - call $~lib/util/memory/memcpy - br $~lib/util/memory/memmove|inlined.0 + i32.const 8 + i32.ge_u + if + local.get $0 + local.get $1 + i64.load + i64.store + local.get $4 + i32.const 8 + i32.sub + local.set $4 + local.get $0 + i32.const 8 + i32.add + local.set $0 + local.get $1 + i32.const 8 + i32.add + local.set $1 + br $while-continue|1 + end end - local.get $1 + end + loop $while-continue|2 local.get $4 - i32.gt_u if + local.get $0 + local.tee $2 + i32.const 1 + i32.add + local.set $0 local.get $1 - i32.const 7 - i32.and + local.tee $3 + i32.const 1 + i32.add + local.set $1 + local.get $2 + local.get $3 + i32.load8_u + i32.store8 local.get $4 + i32.const 1 + i32.sub + local.set $4 + br $while-continue|2 + end + end + else + local.get $1 + i32.const 7 + i32.and + local.get $0 + i32.const 7 + i32.and + i32.eq + if + loop $while-continue|3 + local.get $0 + local.get $4 + i32.add i32.const 7 i32.and - i32.eq if - loop $while-continue|0 - local.get $4 - i32.const 7 - i32.and - if - local.get $11 - i32.eqz - br_if $~lib/util/memory/memmove|inlined.0 - local.get $11 - i32.const 1 - i32.sub - local.set $11 - local.get $4 - local.tee $3 - i32.const 1 - i32.add - local.set $4 - local.get $1 - local.tee $2 - i32.const 1 - i32.add - local.set $1 - local.get $3 - local.get $2 - i32.load8_u - i32.store8 - br $while-continue|0 - end - end - loop $while-continue|1 - local.get $11 - i32.const 8 - i32.ge_u - if - local.get $4 - local.get $1 - i64.load - i64.store - local.get $11 - i32.const 8 - i32.sub - local.set $11 - local.get $4 - i32.const 8 - i32.add - local.set $4 - local.get $1 - i32.const 8 - i32.add - local.set $1 - br $while-continue|1 - end - end - end - loop $while-continue|2 - local.get $11 - if - local.get $4 - local.tee $3 - i32.const 1 - i32.add - local.set $4 - local.get $1 - local.tee $2 - i32.const 1 - i32.add - local.set $1 - local.get $3 - local.get $2 - i32.load8_u - i32.store8 - local.get $11 - i32.const 1 - i32.sub - local.set $11 - br $while-continue|2 - end + local.get $4 + i32.eqz + br_if $~lib/util/memory/memmove|inlined.0 + local.get $4 + i32.const 1 + i32.sub + local.tee $4 + local.get $0 + i32.add + local.get $1 + local.get $4 + i32.add + i32.load8_u + i32.store8 + br $while-continue|3 end - else - local.get $1 - i32.const 7 - i32.and + end + loop $while-continue|4 local.get $4 - i32.const 7 - i32.and - i32.eq + i32.const 8 + i32.ge_u if - loop $while-continue|3 - local.get $4 - local.get $11 - i32.add - i32.const 7 - i32.and - if - local.get $11 - i32.eqz - br_if $~lib/util/memory/memmove|inlined.0 - local.get $4 - local.get $11 - i32.const 1 - i32.sub - local.tee $11 - i32.add - local.get $1 - local.get $11 - i32.add - i32.load8_u - i32.store8 - br $while-continue|3 - end - end - loop $while-continue|4 - local.get $11 - i32.const 8 - i32.ge_u - if - local.get $4 - local.get $11 - i32.const 8 - i32.sub - local.tee $11 - i32.add - local.get $1 - local.get $11 - i32.add - i64.load - i64.store - br $while-continue|4 - end - end - end - loop $while-continue|5 - local.get $11 - if - local.get $4 - local.get $11 - i32.const 1 - i32.sub - local.tee $11 - i32.add - local.get $1 - local.get $11 - i32.add - i32.load8_u - i32.store8 - br $while-continue|5 - end + local.get $4 + i32.const 8 + i32.sub + local.tee $4 + local.get $0 + i32.add + local.get $1 + local.get $4 + i32.add + i64.load + i64.store + br $while-continue|4 end end end + loop $while-continue|5 + local.get $4 + if + local.get $4 + i32.const 1 + i32.sub + local.tee $4 + local.get $0 + i32.add + local.get $1 + local.get $4 + i32.add + i32.load8_u + i32.store8 + br $while-continue|5 + end + end end - local.get $5 - local.get $10 - i32.add - local.get $8 - local.get $10 - i32.sub - call $~lib/memory/memory.fill - local.get $5 - local.get $9 - i32.ne - if - i32.const 1168 - local.get $5 - i32.store - i32.const 1172 - local.get $5 - i32.store - i32.const 1168 - local.get $5 - i32.const 0 - call $~lib/rt/itcms/__link - end - i32.const 1176 - local.get $8 - i32.store end - i32.const 1172 - i32.load - local.get $7 - i32.const 2 - i32.shl - i32.add - local.get $0 - i32.store - i32.const 1168 - local.get $0 - i32.const 1 - call $~lib/rt/itcms/__link - i32.const 1180 - local.get $6 - i32.store ) (func $~lib/rt/__visit_members (param $0 i32) (local $1 i32) @@ -2952,6 +2817,13 @@ (func $~start (local $0 i32) (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) global.get $~lib/memory/__stack_pointer i32.const 8 i32.sub @@ -3016,10 +2888,10 @@ i32.const 20 i32.const 6 call $~lib/rt/itcms/__new - local.tee $0 + local.tee $2 i32.store global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $0 i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer @@ -3030,26 +2902,26 @@ global.get $~lib/memory/__stack_pointer i32.const 0 i32.store - local.get $0 + local.get $2 i32.eqz if global.get $~lib/memory/__stack_pointer i32.const 20 i32.const 4 call $~lib/rt/itcms/__new - local.tee $0 + local.tee $2 i32.store end - local.get $0 + local.get $2 f64.const 0 f64.store - local.get $0 + local.get $2 f64.const 0 f64.store offset=8 - local.get $0 + local.get $2 i32.const 0 i32.store offset=16 - local.get $0 + local.get $2 i32.const 0 i32.const 0 call $~lib/rt/itcms/__link @@ -3057,18 +2929,144 @@ i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $1 local.get $0 + local.get $2 i32.store global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $2 i32.store offset=4 - local.get $0 - call $~lib/array/Array#push + i32.const 1180 + i32.load + local.tee $7 + i32.const 1 + i32.add + local.tee $8 + local.tee $4 + i32.const 1176 + i32.load + local.tee $5 + i32.const 2 + i32.shr_u + i32.gt_u + if + local.get $4 + i32.const 268435455 + i32.gt_u + if + i32.const 1616 + i32.const 1664 + i32.const 17 + i32.const 48 + call $~lib/builtins/abort + unreachable + end + block $__inlined_func$~lib/rt/itcms/__renew + local.get $5 + i32.const 1 + i32.shl + local.tee $0 + i32.const 1073741820 + local.get $0 + i32.const 1073741820 + i32.lt_u + select + local.tee $1 + local.get $4 + i32.const 8 + local.get $4 + i32.const 8 + i32.gt_u + select + i32.const 2 + i32.shl + local.tee $0 + local.get $0 + local.get $1 + i32.lt_u + select + local.tee $3 + i32.const 1168 + i32.load + local.tee $4 + local.tee $1 + i32.const 20 + i32.sub + local.tee $6 + i32.load + i32.const -4 + i32.and + i32.const 16 + i32.sub + i32.le_u + if + local.get $6 + local.get $3 + i32.store offset=16 + br $__inlined_func$~lib/rt/itcms/__renew + end + local.get $3 + local.get $6 + i32.load offset=12 + call $~lib/rt/itcms/__new + local.tee $0 + local.get $1 + local.get $3 + local.get $6 + i32.load offset=16 + local.tee $1 + local.get $1 + local.get $3 + i32.gt_u + select + call $~lib/memory/memory.copy + local.get $0 + local.set $1 + end + local.get $1 + local.get $5 + i32.add + local.get $3 + local.get $5 + i32.sub + call $~lib/memory/memory.fill + local.get $1 + local.get $4 + i32.ne + if + i32.const 1168 + local.get $1 + i32.store + i32.const 1172 + local.get $1 + i32.store + i32.const 1168 + local.get $1 + i32.const 0 + call $~lib/rt/itcms/__link + end + i32.const 1176 + local.get $3 + i32.store + end + i32.const 1172 + i32.load + local.get $7 + i32.const 2 + i32.shl + i32.add + local.get $2 + i32.store + i32.const 1168 + local.get $2 + i32.const 1 + call $~lib/rt/itcms/__link + i32.const 1180 + local.get $8 + i32.store global.get $~lib/memory/__stack_pointer i32.const 8 i32.add diff --git a/tests/compiler/extends-recursive.optimized.wat b/tests/compiler/extends-recursive.optimized.wat index b502ff0347..fb30eb5847 100644 --- a/tests/compiler/extends-recursive.optimized.wat +++ b/tests/compiler/extends-recursive.optimized.wat @@ -1034,7 +1034,7 @@ local.get $0 i32.const 4 i32.add - local.tee $0 + local.tee $1 i32.const 17868 i32.ge_u if @@ -1044,20 +1044,20 @@ call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT - local.get $0 + local.get $1 i32.const 4 i32.sub - local.set $1 - local.get $0 + local.set $0 + local.get $1 i32.const 15 i32.and i32.const 1 - local.get $0 + local.get $1 select if (result i32) i32.const 1 else - local.get $1 + local.get $0 i32.load i32.const 1 i32.and @@ -1070,14 +1070,11 @@ call $~lib/builtins/abort unreachable end - local.get $1 - local.tee $0 + local.get $0 + local.get $0 i32.load i32.const 1 i32.or - local.set $1 - local.get $0 - local.get $1 i32.store local.get $0 call $~lib/rt/tlsf/insertBlock @@ -1090,8 +1087,7 @@ local.tee $0 local.get $0 i32.store offset=4 - global.get $~lib/rt/itcms/toSpace - local.tee $0 + local.get $0 local.get $0 i32.store offset=8 i32.const 0 diff --git a/tests/compiler/features/simd.optimized.wat b/tests/compiler/features/simd.optimized.wat index 157f04d2a6..bbf5d0d928 100644 --- a/tests/compiler/features/simd.optimized.wat +++ b/tests/compiler/features/simd.optimized.wat @@ -1,6 +1,6 @@ (module - (type $i32_i32_=>_none (func (param i32 i32))) (type $none_=>_none (func)) + (type $i32_i32_=>_none (func (param i32 i32))) (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) @@ -997,7 +997,7 @@ local.get $0 call $~lib/rt/tlsf/insertBlock ) - (func $~start + (func $features/simd/test_v128 (local $0 i32) global.get $~lib/rt/tlsf/ROOT i32.eqz @@ -1189,6 +1189,9 @@ end local.get $0 call $~lib/rt/tlsf/__free + ) + (func $~start + call $features/simd/test_v128 i32.const 0 i32.const 1184 i32.const 255 diff --git a/tests/compiler/field-initialization.optimized.wat b/tests/compiler/field-initialization.optimized.wat index 38af4021b4..3ab98f96eb 100644 --- a/tests/compiler/field-initialization.optimized.wat +++ b/tests/compiler/field-initialization.optimized.wat @@ -1,9 +1,9 @@ (module (type $none_=>_none (func)) (type $i32_i32_=>_none (func (param i32 i32))) + (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) (type $i32_=>_none (func (param i32))) (type $none_=>_i32 (func (result i32))) - (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) (type $i32_=>_i32 (func (param i32) (result i32))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) @@ -1052,7 +1052,7 @@ local.get $0 i32.const 4 i32.add - local.tee $0 + local.tee $1 i32.const 18380 i32.ge_u if @@ -1062,20 +1062,20 @@ call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT - local.get $0 + local.get $1 i32.const 4 i32.sub - local.set $1 - local.get $0 + local.set $0 + local.get $1 i32.const 15 i32.and i32.const 1 - local.get $0 + local.get $1 select if (result i32) i32.const 1 else - local.get $1 + local.get $0 i32.load i32.const 1 i32.and @@ -1088,14 +1088,11 @@ call $~lib/builtins/abort unreachable end - local.get $1 - local.tee $0 + local.get $0 + local.get $0 i32.load i32.const 1 i32.or - local.set $1 - local.get $0 - local.get $1 i32.store local.get $0 call $~lib/rt/tlsf/insertBlock @@ -1108,8 +1105,7 @@ local.tee $0 local.get $0 i32.store offset=4 - global.get $~lib/rt/itcms/toSpace - local.tee $0 + local.get $0 local.get $0 i32.store offset=8 i32.const 0 @@ -1249,6 +1245,210 @@ end end ) + (func $~lib/rt/tlsf/allocateBlock (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + local.get $1 + i32.const 1073741820 + i32.gt_u + if + i32.const 1056 + i32.const 1392 + i32.const 458 + i32.const 29 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.tee $2 + local.get $1 + i32.const 12 + i32.le_u + if (result i32) + i32.const 12 + else + local.get $1 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + end + local.tee $0 + call $~lib/rt/tlsf/searchBlock + local.tee $1 + i32.eqz + if + local.get $0 + i32.const 536870910 + i32.lt_u + if (result i32) + local.get $0 + i32.const 1 + i32.const 27 + local.get $0 + i32.clz + i32.sub + i32.shl + i32.const 1 + i32.sub + i32.add + else + local.get $0 + end + i32.const 4 + memory.size + local.tee $1 + i32.const 16 + i32.shl + i32.const 4 + i32.sub + local.get $2 + i32.load offset=1568 + i32.ne + i32.shl + i32.add + i32.const 65535 + i32.add + i32.const -65536 + i32.and + i32.const 16 + i32.shr_u + local.set $3 + local.get $1 + local.get $3 + local.get $1 + local.get $3 + i32.gt_s + select + memory.grow + i32.const 0 + i32.lt_s + if + local.get $3 + memory.grow + i32.const 0 + i32.lt_s + if + unreachable + end + end + local.get $2 + local.get $1 + i32.const 16 + i32.shl + memory.size + i32.const 16 + i32.shl + call $~lib/rt/tlsf/addMemory + local.get $2 + local.get $0 + call $~lib/rt/tlsf/searchBlock + local.tee $1 + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 496 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + end + local.get $0 + local.get $1 + i32.load + i32.const -4 + i32.and + i32.gt_u + if + i32.const 0 + i32.const 1392 + i32.const 498 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.get $1 + call $~lib/rt/tlsf/removeBlock + local.get $1 + i32.load + local.set $3 + local.get $0 + i32.const 4 + i32.add + i32.const 15 + i32.and + if + i32.const 0 + i32.const 1392 + i32.const 357 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const -4 + i32.and + local.get $0 + i32.sub + local.tee $4 + i32.const 16 + i32.ge_u + if + local.get $1 + local.get $0 + local.get $3 + i32.const 2 + i32.and + i32.or + i32.store + local.get $0 + local.get $1 + i32.const 4 + i32.add + i32.add + local.tee $0 + local.get $4 + i32.const 4 + i32.sub + i32.const 1 + i32.or + i32.store + local.get $2 + local.get $0 + call $~lib/rt/tlsf/insertBlock + else + local.get $1 + local.get $3 + i32.const -2 + i32.and + i32.store + local.get $1 + i32.const 4 + i32.add + local.tee $0 + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.get $0 + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + i32.load + i32.const -3 + i32.and + i32.store + end + local.get $1 + ) (func $~lib/memory/memory.fill (param $0 i32) (param $1 i32) (local $2 i32) block $~lib/util/memory/memset|inlined.0 @@ -1428,9 +1628,6 @@ (func $~lib/rt/itcms/__new (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) local.get $0 i32.const 1073741804 i32.ge_u @@ -1448,12 +1645,12 @@ if block $__inlined_func$~lib/rt/itcms/interrupt i32.const 2048 - local.set $3 + local.set $2 loop $do-continue|0 - local.get $3 + local.get $2 call $~lib/rt/itcms/step i32.sub - local.set $3 + local.set $2 global.get $~lib/rt/itcms/state i32.eqz if @@ -1469,14 +1666,14 @@ global.set $~lib/rt/itcms/threshold br $__inlined_func$~lib/rt/itcms/interrupt end - local.get $3 + local.get $2 i32.const 0 i32.gt_s br_if $do-continue|0 end global.get $~lib/rt/itcms/total - local.tee $3 - local.get $3 + local.tee $2 + local.get $2 global.get $~lib/rt/itcms/threshold i32.sub i32.const 1024 @@ -1490,230 +1687,35 @@ local.get $0 i32.const 16 i32.add - local.set $6 + local.set $2 global.get $~lib/rt/tlsf/ROOT i32.eqz if call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT - local.get $6 - i32.const 1073741820 - i32.gt_u - if - i32.const 1056 - i32.const 1392 - i32.const 458 - i32.const 29 - call $~lib/builtins/abort - unreachable - end - local.tee $2 - local.get $6 - i32.const 12 - i32.le_u - if (result i32) - i32.const 12 - else - local.get $6 - i32.const 19 - i32.add - i32.const -16 - i32.and - i32.const 4 - i32.sub - end - local.tee $3 - call $~lib/rt/tlsf/searchBlock - local.tee $6 - i32.eqz - if - local.get $3 - i32.const 536870910 - i32.lt_u - if (result i32) - local.get $3 - i32.const 1 - i32.const 27 - local.get $3 - i32.clz - i32.sub - i32.shl - i32.const 1 - i32.sub - i32.add - else - local.get $3 - end - i32.const 4 - memory.size - local.tee $6 - i32.const 16 - i32.shl - i32.const 4 - i32.sub - local.get $2 - i32.load offset=1568 - i32.ne - i32.shl - i32.add - i32.const 65535 - i32.add - i32.const -65536 - i32.and - i32.const 16 - i32.shr_u - local.set $5 - local.get $6 - local.get $5 - local.get $5 - local.get $6 - i32.lt_s - select - memory.grow - i32.const 0 - i32.lt_s - if - local.get $5 - memory.grow - i32.const 0 - i32.lt_s - if - unreachable - end - end - local.get $2 - local.get $6 - i32.const 16 - i32.shl - memory.size - i32.const 16 - i32.shl - call $~lib/rt/tlsf/addMemory - local.get $2 - local.get $3 - call $~lib/rt/tlsf/searchBlock - local.tee $6 - i32.eqz - if - i32.const 0 - i32.const 1392 - i32.const 496 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - end - local.get $3 - local.get $6 - i32.load - i32.const -4 - i32.and - i32.gt_u - if - i32.const 0 - i32.const 1392 - i32.const 498 - i32.const 14 - call $~lib/builtins/abort - unreachable - end local.get $2 - local.get $6 - call $~lib/rt/tlsf/removeBlock - local.get $6 - i32.load - local.set $5 - local.get $3 - i32.const 4 - i32.add - i32.const 15 - i32.and - if - i32.const 0 - i32.const 1392 - i32.const 357 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $5 - i32.const -4 - i32.and - local.get $3 - i32.sub - local.tee $4 - i32.const 16 - i32.ge_u - if - local.get $6 - local.get $3 - local.get $5 - i32.const 2 - i32.and - i32.or - i32.store - local.get $3 - local.get $6 - i32.const 4 - i32.add - i32.add - local.tee $3 - local.get $4 - i32.const 4 - i32.sub - i32.const 1 - i32.or - i32.store - local.get $2 - local.get $3 - call $~lib/rt/tlsf/insertBlock - else - local.get $6 - local.get $5 - i32.const -2 - i32.and - i32.store - local.get $6 - i32.const 4 - i32.add - local.tee $3 - local.get $6 - i32.load - i32.const -4 - i32.and - i32.add - local.get $3 - local.get $6 - i32.load - i32.const -4 - i32.and - i32.add - i32.load - i32.const -3 - i32.and - i32.store - end - local.get $6 + call $~lib/rt/tlsf/allocateBlock + local.tee $2 local.get $1 i32.store offset=12 - local.get $6 + local.get $2 local.get $0 i32.store offset=16 global.get $~lib/rt/itcms/fromSpace local.tee $3 i32.load offset=8 local.set $1 - local.get $6 + local.get $2 local.get $3 global.get $~lib/rt/itcms/white i32.or i32.store offset=4 - local.get $6 + local.get $2 local.get $1 i32.store offset=8 local.get $1 - local.get $6 + local.get $2 local.get $1 i32.load offset=4 i32.const 3 @@ -1721,10 +1723,10 @@ i32.or i32.store offset=4 local.get $3 - local.get $6 + local.get $2 i32.store offset=8 global.get $~lib/rt/itcms/total - local.get $6 + local.get $2 i32.load i32.const -4 i32.and @@ -1732,7 +1734,7 @@ i32.add i32.add global.set $~lib/rt/itcms/total - local.get $6 + local.get $2 i32.const 20 i32.add local.tee $1 @@ -1821,7 +1823,7 @@ i32.load offset=16 i32.const 1 i32.shr_u - local.tee $4 + local.tee $2 local.get $1 i32.const 20 i32.sub @@ -1835,18 +1837,15 @@ end block $__inlined_func$~lib/util/string/compareImpl (result i32) local.get $0 - local.set $2 - local.get $1 - local.set $3 - local.get $2 + local.tee $3 i32.const 7 i32.and - local.get $3 + local.get $1 i32.const 7 i32.and i32.or i32.const 1 - local.get $4 + local.get $2 local.tee $0 i32.const 4 i32.ge_u @@ -1854,20 +1853,20 @@ i32.eqz if loop $do-continue|0 - local.get $2 - i64.load local.get $3 i64.load + local.get $1 + i64.load i64.eq if - local.get $2 - i32.const 8 - i32.add - local.set $2 local.get $3 i32.const 8 i32.add local.set $3 + local.get $1 + i32.const 8 + i32.add + local.set $1 local.get $0 i32.const 4 i32.sub @@ -1880,33 +1879,33 @@ end loop $while-continue|1 local.get $0 - local.tee $1 + local.tee $2 i32.const 1 i32.sub local.set $0 - local.get $1 + local.get $2 if - local.get $2 - i32.load16_u - local.tee $1 local.get $3 i32.load16_u + local.tee $2 + local.get $1 + i32.load16_u local.tee $4 i32.ne if - local.get $1 + local.get $2 local.get $4 i32.sub br $__inlined_func$~lib/util/string/compareImpl end - local.get $2 - i32.const 2 - i32.add - local.set $2 local.get $3 i32.const 2 i32.add local.set $3 + local.get $1 + i32.const 2 + i32.add + local.set $1 br $while-continue|1 end end diff --git a/tests/compiler/for.optimized.wat b/tests/compiler/for.optimized.wat index d34636526e..67e0e0bfaf 100644 --- a/tests/compiler/for.optimized.wat +++ b/tests/compiler/for.optimized.wat @@ -1027,7 +1027,7 @@ local.get $0 i32.const 4 i32.add - local.tee $0 + local.tee $1 i32.const 17892 i32.ge_u if @@ -1037,20 +1037,20 @@ call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT - local.get $0 + local.get $1 i32.const 4 i32.sub - local.set $1 - local.get $0 + local.set $0 + local.get $1 i32.const 15 i32.and i32.const 1 - local.get $0 + local.get $1 select if (result i32) i32.const 1 else - local.get $1 + local.get $0 i32.load i32.const 1 i32.and @@ -1063,14 +1063,11 @@ call $~lib/builtins/abort unreachable end - local.get $1 - local.tee $0 + local.get $0 + local.get $0 i32.load i32.const 1 i32.or - local.set $1 - local.get $0 - local.get $1 i32.store local.get $0 call $~lib/rt/tlsf/insertBlock @@ -1083,8 +1080,7 @@ local.tee $0 local.get $0 i32.store offset=4 - global.get $~lib/rt/itcms/toSpace - local.tee $0 + local.get $0 local.get $0 i32.store offset=8 i32.const 0 diff --git a/tests/compiler/function-call.optimized.wat b/tests/compiler/function-call.optimized.wat index f1593b31c0..f1402c485d 100644 --- a/tests/compiler/function-call.optimized.wat +++ b/tests/compiler/function-call.optimized.wat @@ -1065,7 +1065,7 @@ local.get $0 i32.const 4 i32.add - local.tee $0 + local.tee $1 i32.const 18220 i32.ge_u if @@ -1075,20 +1075,20 @@ call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT - local.get $0 + local.get $1 i32.const 4 i32.sub - local.set $1 - local.get $0 + local.set $0 + local.get $1 i32.const 15 i32.and i32.const 1 - local.get $0 + local.get $1 select if (result i32) i32.const 1 else - local.get $1 + local.get $0 i32.load i32.const 1 i32.and @@ -1101,14 +1101,11 @@ call $~lib/builtins/abort unreachable end - local.get $1 - local.tee $0 + local.get $0 + local.get $0 i32.load i32.const 1 i32.or - local.set $1 - local.get $0 - local.get $1 i32.store local.get $0 call $~lib/rt/tlsf/insertBlock @@ -1121,8 +1118,7 @@ local.tee $0 local.get $0 i32.store offset=4 - global.get $~lib/rt/itcms/toSpace - local.tee $0 + local.get $0 local.get $0 i32.store offset=8 i32.const 0 diff --git a/tests/compiler/function-expression.optimized.wat b/tests/compiler/function-expression.optimized.wat index 54263d7a37..566bb6a038 100644 --- a/tests/compiler/function-expression.optimized.wat +++ b/tests/compiler/function-expression.optimized.wat @@ -1098,7 +1098,7 @@ local.get $0 i32.const 4 i32.add - local.tee $0 + local.tee $1 i32.const 18580 i32.ge_u if @@ -1108,20 +1108,20 @@ call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT - local.get $0 + local.get $1 i32.const 4 i32.sub - local.set $1 - local.get $0 + local.set $0 + local.get $1 i32.const 15 i32.and i32.const 1 - local.get $0 + local.get $1 select if (result i32) i32.const 1 else - local.get $1 + local.get $0 i32.load i32.const 1 i32.and @@ -1134,14 +1134,11 @@ call $~lib/builtins/abort unreachable end - local.get $1 - local.tee $0 + local.get $0 + local.get $0 i32.load i32.const 1 i32.or - local.set $1 - local.get $0 - local.get $1 i32.store local.get $0 call $~lib/rt/tlsf/insertBlock @@ -1154,8 +1151,7 @@ local.tee $0 local.get $0 i32.store offset=4 - global.get $~lib/rt/itcms/toSpace - local.tee $0 + local.get $0 local.get $0 i32.store offset=8 i32.const 0 @@ -1559,11 +1555,11 @@ i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer - block $folding-inner0 + block $folding-inner1 global.get $~lib/memory/__stack_pointer i32.const 2196 i32.lt_s - br_if $folding-inner0 + br_if $folding-inner1 global.get $~lib/memory/__stack_pointer i32.const 0 i32.store @@ -1717,7 +1713,7 @@ global.get $~lib/memory/__stack_pointer i32.const 2196 i32.lt_s - br_if $folding-inner0 + br_if $folding-inner1 global.get $~lib/memory/__stack_pointer local.tee $0 i32.const 0 @@ -1753,7 +1749,7 @@ global.get $~lib/memory/__stack_pointer i32.const 2196 i32.lt_s - br_if $folding-inner0 + br_if $folding-inner1 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -1824,7 +1820,7 @@ global.get $~lib/memory/__stack_pointer i32.const 2196 i32.lt_s - br_if $folding-inner0 + br_if $folding-inner1 global.get $~lib/memory/__stack_pointer local.tee $1 i64.const 0 @@ -1842,7 +1838,7 @@ global.get $~lib/memory/__stack_pointer i32.const 2196 i32.lt_s - br_if $folding-inner0 + br_if $folding-inner1 global.get $~lib/memory/__stack_pointer local.tee $0 i32.const 0 diff --git a/tests/compiler/function-types.optimized.wat b/tests/compiler/function-types.optimized.wat index 691bd94c4a..b635a2cb55 100644 --- a/tests/compiler/function-types.optimized.wat +++ b/tests/compiler/function-types.optimized.wat @@ -2,8 +2,8 @@ (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) (type $i64_i64_=>_i64 (func (param i64 i64) (result i64))) (type $f64_f64_=>_f64 (func (param f64 f64) (result f64))) - (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) (type $none_=>_none (func)) + (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (global $function-types/i32Adder (mut i32) (i32.const 0)) (global $~argumentsLength (mut i32) (i32.const 0)) @@ -39,6 +39,9 @@ f64.add ) (func $~start + call $start:function-types + ) + (func $start:function-types (local $0 i32) global.get $~lib/memory/__stack_pointer i32.const 4 diff --git a/tests/compiler/getter-call.optimized.wat b/tests/compiler/getter-call.optimized.wat index f00688e1bd..56b9004bb9 100644 --- a/tests/compiler/getter-call.optimized.wat +++ b/tests/compiler/getter-call.optimized.wat @@ -1030,7 +1030,7 @@ local.get $0 i32.const 4 i32.add - local.tee $0 + local.tee $1 i32.const 17900 i32.ge_u if @@ -1040,20 +1040,20 @@ call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT - local.get $0 + local.get $1 i32.const 4 i32.sub - local.set $1 - local.get $0 + local.set $0 + local.get $1 i32.const 15 i32.and i32.const 1 - local.get $0 + local.get $1 select if (result i32) i32.const 1 else - local.get $1 + local.get $0 i32.load i32.const 1 i32.and @@ -1066,14 +1066,11 @@ call $~lib/builtins/abort unreachable end - local.get $1 - local.tee $0 + local.get $0 + local.get $0 i32.load i32.const 1 i32.or - local.set $1 - local.get $0 - local.get $1 i32.store local.get $0 call $~lib/rt/tlsf/insertBlock @@ -1086,8 +1083,7 @@ local.tee $0 local.get $0 i32.store offset=4 - global.get $~lib/rt/itcms/toSpace - local.tee $0 + local.get $0 local.get $0 i32.store offset=8 i32.const 0 diff --git a/tests/compiler/heap.optimized.wat b/tests/compiler/heap.optimized.wat index 0c41748546..d638a3c813 100644 --- a/tests/compiler/heap.optimized.wat +++ b/tests/compiler/heap.optimized.wat @@ -1761,85 +1761,69 @@ i32.store8 end ) - (func $~lib/rt/tlsf/moveBlock (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/memory/memory.copy (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - local.get $0 - local.get $2 - call $~lib/rt/tlsf/allocateBlock - local.set $6 - local.get $1 - i32.load - i32.const -4 - i32.and - local.set $7 block $~lib/util/memory/memmove|inlined.0 - local.get $6 - i32.const 4 - i32.add - local.tee $2 + local.get $2 + local.set $4 + local.get $0 local.get $1 - i32.const 4 - i32.add - local.tee $5 i32.eq br_if $~lib/util/memory/memmove|inlined.0 - local.get $5 - local.get $2 + local.get $1 + local.get $0 i32.sub - local.get $7 + local.get $4 i32.sub i32.const 0 - local.get $7 + local.get $4 i32.const 1 i32.shl i32.sub i32.le_u if - local.get $2 - local.get $5 - local.get $7 + local.get $0 + local.get $1 + local.get $4 call $~lib/util/memory/memcpy br $~lib/util/memory/memmove|inlined.0 end - local.get $2 - local.get $5 + local.get $0 + local.get $1 i32.lt_u if - local.get $5 + local.get $1 i32.const 7 i32.and - local.get $2 + local.get $0 i32.const 7 i32.and i32.eq if loop $while-continue|0 - local.get $2 + local.get $0 i32.const 7 i32.and if - local.get $7 + local.get $4 i32.eqz br_if $~lib/util/memory/memmove|inlined.0 - local.get $7 + local.get $4 i32.const 1 i32.sub - local.set $7 - local.get $2 - local.tee $4 + local.set $4 + local.get $0 + local.tee $2 i32.const 1 i32.add - local.set $2 - local.get $5 + local.set $0 + local.get $1 local.tee $3 i32.const 1 i32.add - local.set $5 - local.get $4 + local.set $1 + local.get $2 local.get $3 i32.load8_u i32.store8 @@ -1847,81 +1831,81 @@ end end loop $while-continue|1 - local.get $7 + local.get $4 i32.const 8 i32.ge_u if - local.get $2 - local.get $5 + local.get $0 + local.get $1 i64.load i64.store - local.get $7 + local.get $4 i32.const 8 i32.sub - local.set $7 - local.get $2 + local.set $4 + local.get $0 i32.const 8 i32.add - local.set $2 - local.get $5 + local.set $0 + local.get $1 i32.const 8 i32.add - local.set $5 + local.set $1 br $while-continue|1 end end end loop $while-continue|2 - local.get $7 + local.get $4 if - local.get $2 - local.tee $4 + local.get $0 + local.tee $2 i32.const 1 i32.add - local.set $2 - local.get $5 + local.set $0 + local.get $1 local.tee $3 i32.const 1 i32.add - local.set $5 - local.get $4 + local.set $1 + local.get $2 local.get $3 i32.load8_u i32.store8 - local.get $7 + local.get $4 i32.const 1 i32.sub - local.set $7 + local.set $4 br $while-continue|2 end end else - local.get $5 + local.get $1 i32.const 7 i32.and - local.get $2 + local.get $0 i32.const 7 i32.and i32.eq if loop $while-continue|3 - local.get $2 - local.get $7 + local.get $0 + local.get $4 i32.add i32.const 7 i32.and if - local.get $7 + local.get $4 i32.eqz br_if $~lib/util/memory/memmove|inlined.0 - local.get $2 - local.get $7 + local.get $4 i32.const 1 i32.sub - local.tee $7 + local.tee $4 + local.get $0 i32.add - local.get $5 - local.get $7 + local.get $1 + local.get $4 i32.add i32.load8_u i32.store8 @@ -1929,18 +1913,18 @@ end end loop $while-continue|4 - local.get $7 + local.get $4 i32.const 8 i32.ge_u if - local.get $2 - local.get $7 + local.get $4 i32.const 8 i32.sub - local.tee $7 + local.tee $4 + local.get $0 i32.add - local.get $5 - local.get $7 + local.get $1 + local.get $4 i32.add i64.load i64.store @@ -1949,16 +1933,16 @@ end end loop $while-continue|5 - local.get $7 + local.get $4 if - local.get $2 - local.get $7 + local.get $4 i32.const 1 i32.sub - local.tee $7 + local.tee $4 + local.get $0 i32.add - local.get $5 - local.get $7 + local.get $1 + local.get $4 i32.add i32.load8_u i32.store8 @@ -1967,6 +1951,22 @@ end end end + ) + (func $~lib/rt/tlsf/moveBlock (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + local.get $0 + local.get $2 + call $~lib/rt/tlsf/allocateBlock + local.tee $2 + i32.const 4 + i32.add + local.get $1 + i32.const 4 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + call $~lib/memory/memory.copy local.get $1 i32.const 17660 i32.ge_u @@ -1981,7 +1981,7 @@ local.get $1 call $~lib/rt/tlsf/insertBlock end - local.get $6 + local.get $2 ) (func $~lib/memory/heap.realloc (param $0 i32) (param $1 i32) (result i32) (local $2 i32) @@ -1998,63 +1998,63 @@ local.get $0 i32.const 17660 i32.lt_u - if (result i32) + if global.get $~lib/rt/tlsf/ROOT local.get $0 call $~lib/rt/tlsf/checkUsedBlock local.get $1 call $~lib/rt/tlsf/moveBlock + local.set $0 else - block $__inlined_func$~lib/rt/tlsf/reallocateBlock (result i32) + block $__inlined_func$~lib/rt/tlsf/reallocateBlock global.get $~lib/rt/tlsf/ROOT - local.set $3 + local.set $2 local.get $0 call $~lib/rt/tlsf/checkUsedBlock - local.set $2 + local.set $0 block $folding-inner0 local.get $1 - local.tee $0 call $~lib/rt/tlsf/prepareSize - local.tee $5 - local.get $2 + local.tee $4 + local.get $0 i32.load - local.tee $6 + local.tee $5 i32.const -4 i32.and - local.tee $7 + local.tee $3 i32.le_u br_if $folding-inner0 - local.get $2 + local.get $0 i32.const 4 i32.add - local.get $2 + local.get $0 i32.load i32.const -4 i32.and i32.add - local.tee $1 + local.tee $6 i32.load - local.tee $4 + local.tee $7 i32.const 1 i32.and if - local.get $5 - local.get $7 + local.get $4 + local.get $3 i32.const 4 i32.add - local.get $4 + local.get $7 i32.const -4 i32.and i32.add - local.tee $4 + local.tee $3 i32.le_u if - local.get $3 - local.get $1 - call $~lib/rt/tlsf/removeBlock local.get $2 - local.get $4 local.get $6 + call $~lib/rt/tlsf/removeBlock + local.get $0 + local.get $3 + local.get $5 i32.const 3 i32.and i32.or @@ -2062,19 +2062,20 @@ br $folding-inner0 end end - local.get $3 local.get $2 local.get $0 + local.get $1 call $~lib/rt/tlsf/moveBlock + local.set $0 br $__inlined_func$~lib/rt/tlsf/reallocateBlock end - local.get $3 local.get $2 - local.get $5 + local.get $0 + local.get $4 call $~lib/rt/tlsf/prepareBlock - local.get $2 end end + local.get $0 i32.const 4 i32.add ) diff --git a/tests/compiler/implicit-getter-setter.optimized.wat b/tests/compiler/implicit-getter-setter.optimized.wat index 2ff6ade2b5..9831625fd8 100644 --- a/tests/compiler/implicit-getter-setter.optimized.wat +++ b/tests/compiler/implicit-getter-setter.optimized.wat @@ -1040,7 +1040,7 @@ local.get $0 i32.const 4 i32.add - local.tee $0 + local.tee $1 i32.const 17868 i32.ge_u if @@ -1050,20 +1050,20 @@ call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT - local.get $0 + local.get $1 i32.const 4 i32.sub - local.set $1 - local.get $0 + local.set $0 + local.get $1 i32.const 15 i32.and i32.const 1 - local.get $0 + local.get $1 select if (result i32) i32.const 1 else - local.get $1 + local.get $0 i32.load i32.const 1 i32.and @@ -1076,14 +1076,11 @@ call $~lib/builtins/abort unreachable end - local.get $1 - local.tee $0 + local.get $0 + local.get $0 i32.load i32.const 1 i32.or - local.set $1 - local.get $0 - local.get $1 i32.store local.get $0 call $~lib/rt/tlsf/insertBlock @@ -1096,8 +1093,7 @@ local.tee $0 local.get $0 i32.store offset=4 - global.get $~lib/rt/itcms/toSpace - local.tee $0 + local.get $0 local.get $0 i32.store offset=8 i32.const 0 diff --git a/tests/compiler/infer-array.optimized.wat b/tests/compiler/infer-array.optimized.wat index 64f3ef092d..5eb42c1c3c 100644 --- a/tests/compiler/infer-array.optimized.wat +++ b/tests/compiler/infer-array.optimized.wat @@ -1,10 +1,10 @@ (module - (type $none_=>_none (func)) (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) + (type $none_=>_none (func)) (type $i32_=>_none (func (param i32))) (type $i32_i32_=>_none (func (param i32 i32))) - (type $none_=>_i32 (func (result i32))) (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) + (type $none_=>_i32 (func (result i32))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) (type $i32_i32_i32_i32_=>_i32 (func (param i32 i32 i32 i32) (result i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) @@ -1066,7 +1066,7 @@ local.get $0 i32.const 4 i32.add - local.tee $0 + local.tee $1 i32.const 18596 i32.ge_u if @@ -1076,20 +1076,20 @@ call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT - local.get $0 + local.get $1 i32.const 4 i32.sub - local.set $1 - local.get $0 + local.set $0 + local.get $1 i32.const 15 i32.and i32.const 1 - local.get $0 + local.get $1 select if (result i32) i32.const 1 else - local.get $1 + local.get $0 i32.load i32.const 1 i32.and @@ -1102,14 +1102,11 @@ call $~lib/builtins/abort unreachable end - local.get $1 - local.tee $0 + local.get $0 + local.get $0 i32.load i32.const 1 i32.or - local.set $1 - local.get $0 - local.get $1 i32.store local.get $0 call $~lib/rt/tlsf/insertBlock @@ -1122,8 +1119,7 @@ local.tee $0 local.get $0 i32.store offset=4 - global.get $~lib/rt/itcms/toSpace - local.tee $0 + local.get $0 local.get $0 i32.store offset=8 i32.const 0 @@ -1263,80 +1259,11 @@ end end ) - (func $~lib/rt/itcms/__new (param $0 i32) (param $1 i32) (result i32) + (func $~lib/rt/tlsf/allocateBlock (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) - (local $5 i32) - (local $6 i32) - local.get $0 - i32.const 1073741804 - i32.ge_u - if - i32.const 1088 - i32.const 1152 - i32.const 260 - i32.const 31 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/rt/itcms/total - global.get $~lib/rt/itcms/threshold - i32.ge_u - if - block $__inlined_func$~lib/rt/itcms/interrupt - i32.const 2048 - local.set $2 - loop $do-continue|0 - local.get $2 - call $~lib/rt/itcms/step - i32.sub - local.set $2 - global.get $~lib/rt/itcms/state - i32.eqz - if - global.get $~lib/rt/itcms/total - i64.extend_i32_u - i64.const 200 - i64.mul - i64.const 100 - i64.div_u - i32.wrap_i64 - i32.const 1024 - i32.add - global.set $~lib/rt/itcms/threshold - br $__inlined_func$~lib/rt/itcms/interrupt - end - local.get $2 - i32.const 0 - i32.gt_s - br_if $do-continue|0 - end - global.get $~lib/rt/itcms/total - local.tee $2 - local.get $2 - global.get $~lib/rt/itcms/threshold - i32.sub - i32.const 1024 - i32.lt_u - i32.const 10 - i32.shl - i32.add - global.set $~lib/rt/itcms/threshold - end - end - local.get $0 - i32.const 16 - i32.add - local.set $2 - global.get $~lib/rt/tlsf/ROOT - i32.eqz - if - call $~lib/rt/tlsf/initialize - end - global.get $~lib/rt/tlsf/ROOT - local.set $3 - local.get $2 + local.get $1 i32.const 1073741820 i32.gt_u if @@ -1347,14 +1274,15 @@ call $~lib/builtins/abort unreachable end - local.get $3 - local.get $2 + local.get $0 + local.tee $2 + local.get $1 i32.const 12 i32.le_u if (result i32) i32.const 12 else - local.get $2 + local.get $1 i32.const 19 i32.add i32.const -16 @@ -1362,19 +1290,19 @@ i32.const 4 i32.sub end - local.tee $2 + local.tee $0 call $~lib/rt/tlsf/searchBlock - local.tee $4 + local.tee $1 i32.eqz if - local.get $2 + local.get $0 i32.const 536870910 i32.lt_u if (result i32) - local.get $2 + local.get $0 i32.const 1 i32.const 27 - local.get $2 + local.get $0 i32.clz i32.sub i32.shl @@ -1382,16 +1310,16 @@ i32.sub i32.add else - local.get $2 + local.get $0 end i32.const 4 memory.size - local.tee $6 + local.tee $1 i32.const 16 i32.shl i32.const 4 i32.sub - local.get $3 + local.get $2 i32.load offset=1568 i32.ne i32.shl @@ -1402,18 +1330,18 @@ i32.and i32.const 16 i32.shr_u - local.set $5 - local.get $6 - local.get $5 - local.get $5 - local.get $6 - i32.lt_s + local.set $3 + local.get $1 + local.get $3 + local.get $1 + local.get $3 + i32.gt_s select memory.grow i32.const 0 i32.lt_s if - local.get $5 + local.get $3 memory.grow i32.const 0 i32.lt_s @@ -1421,18 +1349,18 @@ unreachable end end - local.get $3 - local.get $6 + local.get $2 + local.get $1 i32.const 16 i32.shl memory.size i32.const 16 i32.shl call $~lib/rt/tlsf/addMemory - local.get $3 local.get $2 + local.get $0 call $~lib/rt/tlsf/searchBlock - local.tee $4 + local.tee $1 i32.eqz if i32.const 0 @@ -1443,8 +1371,8 @@ unreachable end end - local.get $2 - local.get $4 + local.get $0 + local.get $1 i32.load i32.const -4 i32.and @@ -1457,13 +1385,13 @@ call $~lib/builtins/abort unreachable end - local.get $3 - local.get $4 + local.get $2 + local.get $1 call $~lib/rt/tlsf/removeBlock - local.get $4 + local.get $1 i32.load - local.set $6 - local.get $2 + local.set $3 + local.get $0 i32.const 4 i32.add i32.const 15 @@ -1476,54 +1404,54 @@ call $~lib/builtins/abort unreachable end - local.get $6 + local.get $3 i32.const -4 i32.and - local.get $2 + local.get $0 i32.sub - local.tee $5 + local.tee $4 i32.const 16 i32.ge_u if - local.get $4 - local.get $2 - local.get $6 + local.get $1 + local.get $0 + local.get $3 i32.const 2 i32.and i32.or i32.store - local.get $2 - local.get $4 + local.get $0 + local.get $1 i32.const 4 i32.add i32.add - local.tee $2 - local.get $5 + local.tee $0 + local.get $4 i32.const 4 i32.sub i32.const 1 i32.or i32.store - local.get $3 local.get $2 + local.get $0 call $~lib/rt/tlsf/insertBlock else - local.get $4 - local.get $6 + local.get $1 + local.get $3 i32.const -2 i32.and i32.store - local.get $4 + local.get $1 i32.const 4 i32.add - local.tee $2 - local.get $4 + local.tee $0 + local.get $1 i32.load i32.const -4 i32.and i32.add - local.get $2 - local.get $4 + local.get $0 + local.get $1 i32.load i32.const -4 i32.and @@ -1533,182 +1461,143 @@ i32.and i32.store end - local.get $4 - local.get $1 - i32.store offset=12 - local.get $4 - local.get $0 - i32.store offset=16 - global.get $~lib/rt/itcms/fromSpace - local.tee $1 - i32.load offset=8 - local.set $2 - local.get $4 - local.get $1 - global.get $~lib/rt/itcms/white - i32.or - i32.store offset=4 - local.get $4 - local.get $2 - i32.store offset=8 - local.get $2 - local.get $4 - local.get $2 - i32.load offset=4 - i32.const 3 - i32.and - i32.or - i32.store offset=4 local.get $1 - local.get $4 - i32.store offset=8 - global.get $~lib/rt/itcms/total - local.get $4 - i32.load - i32.const -4 - i32.and - i32.const 4 - i32.add - i32.add - global.set $~lib/rt/itcms/total - local.get $4 - i32.const 20 - i32.add - local.tee $2 - local.set $3 + ) + (func $~lib/memory/memory.fill (param $0 i32) (param $1 i32) + (local $2 i32) block $~lib/util/memory/memset|inlined.0 - local.get $0 + local.get $1 i32.eqz br_if $~lib/util/memory/memset|inlined.0 - local.get $3 + local.get $0 i32.const 0 i32.store8 local.get $0 - local.get $3 + local.get $1 i32.add - local.tee $1 + local.tee $2 i32.const 1 i32.sub i32.const 0 i32.store8 - local.get $0 + local.get $1 i32.const 2 i32.le_u br_if $~lib/util/memory/memset|inlined.0 - local.get $3 + local.get $0 i32.const 0 i32.store8 offset=1 - local.get $3 + local.get $0 i32.const 0 i32.store8 offset=2 - local.get $1 + local.get $2 i32.const 2 i32.sub i32.const 0 i32.store8 - local.get $1 + local.get $2 i32.const 3 i32.sub i32.const 0 i32.store8 - local.get $0 + local.get $1 i32.const 6 i32.le_u br_if $~lib/util/memory/memset|inlined.0 - local.get $3 + local.get $0 i32.const 0 i32.store8 offset=3 - local.get $1 + local.get $2 i32.const 4 i32.sub i32.const 0 i32.store8 - local.get $0 + local.get $1 i32.const 8 i32.le_u br_if $~lib/util/memory/memset|inlined.0 - local.get $3 + local.get $0 i32.const 0 - local.get $3 + local.get $0 i32.sub i32.const 3 i32.and - local.tee $1 + local.tee $2 i32.add - local.tee $5 + local.tee $0 i32.const 0 i32.store - local.get $5 local.get $0 local.get $1 + local.get $2 i32.sub i32.const -4 i32.and - local.tee $3 + local.tee $2 i32.add - local.tee $0 + local.tee $1 i32.const 4 i32.sub i32.const 0 i32.store - local.get $3 + local.get $2 i32.const 8 i32.le_u br_if $~lib/util/memory/memset|inlined.0 - local.get $5 + local.get $0 i32.const 0 i32.store offset=4 - local.get $5 + local.get $0 i32.const 0 i32.store offset=8 - local.get $0 + local.get $1 i32.const 12 i32.sub i32.const 0 i32.store - local.get $0 + local.get $1 i32.const 8 i32.sub i32.const 0 i32.store - local.get $3 + local.get $2 i32.const 24 i32.le_u br_if $~lib/util/memory/memset|inlined.0 - local.get $5 + local.get $0 i32.const 0 i32.store offset=12 - local.get $5 + local.get $0 i32.const 0 i32.store offset=16 - local.get $5 + local.get $0 i32.const 0 i32.store offset=20 - local.get $5 + local.get $0 i32.const 0 i32.store offset=24 - local.get $0 + local.get $1 i32.const 28 i32.sub i32.const 0 i32.store - local.get $0 + local.get $1 i32.const 24 i32.sub i32.const 0 i32.store - local.get $0 + local.get $1 i32.const 20 i32.sub i32.const 0 i32.store - local.get $0 + local.get $1 i32.const 16 i32.sub i32.const 0 i32.store - local.get $5 - local.get $5 + local.get $0 + local.get $0 i32.const 4 i32.and i32.const 24 @@ -1716,7 +1605,7 @@ local.tee $1 i32.add local.set $0 - local.get $3 + local.get $2 local.get $1 i32.sub local.set $1 @@ -1749,7 +1638,123 @@ end end end + ) + (func $~lib/rt/itcms/__new (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + local.get $0 + i32.const 1073741804 + i32.ge_u + if + i32.const 1088 + i32.const 1152 + i32.const 260 + i32.const 31 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.ge_u + if + block $__inlined_func$~lib/rt/itcms/interrupt + i32.const 2048 + local.set $2 + loop $do-continue|0 + local.get $2 + call $~lib/rt/itcms/step + i32.sub + local.set $2 + global.get $~lib/rt/itcms/state + i32.eqz + if + global.get $~lib/rt/itcms/total + i64.extend_i32_u + i64.const 200 + i64.mul + i64.const 100 + i64.div_u + i32.wrap_i64 + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold + br $__inlined_func$~lib/rt/itcms/interrupt + end + local.get $2 + i32.const 0 + i32.gt_s + br_if $do-continue|0 + end + global.get $~lib/rt/itcms/total + local.tee $2 + local.get $2 + global.get $~lib/rt/itcms/threshold + i32.sub + i32.const 1024 + i32.lt_u + i32.const 10 + i32.shl + i32.add + global.set $~lib/rt/itcms/threshold + end + end + local.get $0 + i32.const 16 + i32.add + local.set $2 + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $2 + call $~lib/rt/tlsf/allocateBlock + local.tee $2 + local.get $1 + i32.store offset=12 + local.get $2 + local.get $0 + i32.store offset=16 + global.get $~lib/rt/itcms/fromSpace + local.tee $3 + i32.load offset=8 + local.set $1 + local.get $2 + local.get $3 + global.get $~lib/rt/itcms/white + i32.or + i32.store offset=4 + local.get $2 + local.get $1 + i32.store offset=8 + local.get $1 local.get $2 + local.get $1 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + local.get $3 + local.get $2 + i32.store offset=8 + global.get $~lib/rt/itcms/total + local.get $2 + i32.load + i32.const -4 + i32.and + i32.const 4 + i32.add + i32.add + global.set $~lib/rt/itcms/total + local.get $2 + i32.const 20 + i32.add + local.tee $1 + local.get $0 + call $~lib/memory/memory.fill + local.get $1 ) (func $~lib/util/memory/memcpy (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) @@ -2507,6 +2512,197 @@ i32.store8 end ) + (func $~lib/memory/memory.copy (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + (local $4 i32) + block $~lib/util/memory/memmove|inlined.0 + local.get $2 + local.set $4 + local.get $0 + local.get $1 + i32.eq + br_if $~lib/util/memory/memmove|inlined.0 + local.get $1 + local.get $0 + i32.sub + local.get $4 + i32.sub + i32.const 0 + local.get $4 + i32.const 1 + i32.shl + i32.sub + i32.le_u + if + local.get $0 + local.get $1 + local.get $4 + call $~lib/util/memory/memcpy + br $~lib/util/memory/memmove|inlined.0 + end + local.get $0 + local.get $1 + i32.lt_u + if + local.get $1 + i32.const 7 + i32.and + local.get $0 + i32.const 7 + i32.and + i32.eq + if + loop $while-continue|0 + local.get $0 + i32.const 7 + i32.and + if + local.get $4 + i32.eqz + br_if $~lib/util/memory/memmove|inlined.0 + local.get $4 + i32.const 1 + i32.sub + local.set $4 + local.get $0 + local.tee $2 + i32.const 1 + i32.add + local.set $0 + local.get $1 + local.tee $3 + i32.const 1 + i32.add + local.set $1 + local.get $2 + local.get $3 + i32.load8_u + i32.store8 + br $while-continue|0 + end + end + loop $while-continue|1 + local.get $4 + i32.const 8 + i32.ge_u + if + local.get $0 + local.get $1 + i64.load + i64.store + local.get $4 + i32.const 8 + i32.sub + local.set $4 + local.get $0 + i32.const 8 + i32.add + local.set $0 + local.get $1 + i32.const 8 + i32.add + local.set $1 + br $while-continue|1 + end + end + end + loop $while-continue|2 + local.get $4 + if + local.get $0 + local.tee $2 + i32.const 1 + i32.add + local.set $0 + local.get $1 + local.tee $3 + i32.const 1 + i32.add + local.set $1 + local.get $2 + local.get $3 + i32.load8_u + i32.store8 + local.get $4 + i32.const 1 + i32.sub + local.set $4 + br $while-continue|2 + end + end + else + local.get $1 + i32.const 7 + i32.and + local.get $0 + i32.const 7 + i32.and + i32.eq + if + loop $while-continue|3 + local.get $0 + local.get $4 + i32.add + i32.const 7 + i32.and + if + local.get $4 + i32.eqz + br_if $~lib/util/memory/memmove|inlined.0 + local.get $4 + i32.const 1 + i32.sub + local.tee $4 + local.get $0 + i32.add + local.get $1 + local.get $4 + i32.add + i32.load8_u + i32.store8 + br $while-continue|3 + end + end + loop $while-continue|4 + local.get $4 + i32.const 8 + i32.ge_u + if + local.get $4 + i32.const 8 + i32.sub + local.tee $4 + local.get $0 + i32.add + local.get $1 + local.get $4 + i32.add + i64.load + i64.store + br $while-continue|4 + end + end + end + loop $while-continue|5 + local.get $4 + if + local.get $4 + i32.const 1 + i32.sub + local.tee $4 + local.get $0 + i32.add + local.get $1 + local.get $4 + i32.add + i32.load8_u + i32.store8 + br $while-continue|5 + end + end + end + end + ) (func $~lib/rt/itcms/__link (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) local.get $1 @@ -2955,9 +3151,6 @@ (local $4 i32) (local $5 i32) (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub @@ -2974,235 +3167,52 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.tee $8 + local.tee $5 i32.const 0 i32.store local.get $0 local.get $1 i32.shl - local.tee $9 - local.tee $1 + local.tee $4 + local.set $6 + local.get $4 i32.const 0 call $~lib/rt/itcms/__new - local.set $7 + local.set $1 local.get $3 if - block $~lib/util/memory/memmove|inlined.0 - local.get $1 - local.set $6 - local.get $3 - local.get $7 - local.tee $1 - i32.eq - br_if $~lib/util/memory/memmove|inlined.0 - local.get $3 - local.get $1 - i32.sub - local.get $6 - i32.sub - i32.const 0 - local.get $6 - i32.const 1 - i32.shl - i32.sub - i32.le_u - if - local.get $1 - local.get $3 - local.get $6 - call $~lib/util/memory/memcpy - br $~lib/util/memory/memmove|inlined.0 - end - local.get $1 - local.get $3 - i32.lt_u - if - local.get $3 - i32.const 7 - i32.and - local.get $1 - i32.const 7 - i32.and - i32.eq - if - loop $while-continue|0 - local.get $1 - i32.const 7 - i32.and - if - local.get $6 - i32.eqz - br_if $~lib/util/memory/memmove|inlined.0 - local.get $6 - i32.const 1 - i32.sub - local.set $6 - local.get $1 - local.tee $4 - i32.const 1 - i32.add - local.set $1 - local.get $3 - local.tee $5 - i32.const 1 - i32.add - local.set $3 - local.get $4 - local.get $5 - i32.load8_u - i32.store8 - br $while-continue|0 - end - end - loop $while-continue|1 - local.get $6 - i32.const 8 - i32.ge_u - if - local.get $1 - local.get $3 - i64.load - i64.store - local.get $6 - i32.const 8 - i32.sub - local.set $6 - local.get $1 - i32.const 8 - i32.add - local.set $1 - local.get $3 - i32.const 8 - i32.add - local.set $3 - br $while-continue|1 - end - end - end - loop $while-continue|2 - local.get $6 - if - local.get $1 - local.tee $4 - i32.const 1 - i32.add - local.set $1 - local.get $3 - local.tee $5 - i32.const 1 - i32.add - local.set $3 - local.get $4 - local.get $5 - i32.load8_u - i32.store8 - local.get $6 - i32.const 1 - i32.sub - local.set $6 - br $while-continue|2 - end - end - else - local.get $3 - i32.const 7 - i32.and - local.get $1 - i32.const 7 - i32.and - i32.eq - if - loop $while-continue|3 - local.get $1 - local.get $6 - i32.add - i32.const 7 - i32.and - if - local.get $6 - i32.eqz - br_if $~lib/util/memory/memmove|inlined.0 - local.get $1 - local.get $6 - i32.const 1 - i32.sub - local.tee $6 - i32.add - local.get $3 - local.get $6 - i32.add - i32.load8_u - i32.store8 - br $while-continue|3 - end - end - loop $while-continue|4 - local.get $6 - i32.const 8 - i32.ge_u - if - local.get $1 - local.get $6 - i32.const 8 - i32.sub - local.tee $6 - i32.add - local.get $3 - local.get $6 - i32.add - i64.load - i64.store - br $while-continue|4 - end - end - end - loop $while-continue|5 - local.get $6 - if - local.get $1 - local.get $6 - i32.const 1 - i32.sub - local.tee $6 - i32.add - local.get $3 - local.get $6 - i32.add - i32.load8_u - i32.store8 - br $while-continue|5 - end - end - end - end + local.get $1 + local.get $3 + local.get $6 + call $~lib/memory/memory.copy end - local.get $8 - local.get $7 + local.get $5 + local.get $1 i32.store i32.const 16 local.get $2 call $~lib/rt/itcms/__new - local.tee $1 - local.get $7 + local.tee $2 + local.get $1 i32.store + local.get $2 local.get $1 - local.get $7 i32.const 0 call $~lib/rt/itcms/__link + local.get $2 local.get $1 - local.get $7 i32.store offset=4 - local.get $1 - local.get $9 + local.get $2 + local.get $4 i32.store offset=8 - local.get $1 + local.get $2 local.get $0 i32.store offset=12 global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $1 + local.get $2 ) (func $infer-array/Ref#constructor (result i32) (local $0 i32) diff --git a/tests/compiler/infer-generic.optimized.wat b/tests/compiler/infer-generic.optimized.wat index 0aa5029c5b..f0769ef819 100644 --- a/tests/compiler/infer-generic.optimized.wat +++ b/tests/compiler/infer-generic.optimized.wat @@ -1052,7 +1052,7 @@ local.get $0 i32.const 4 i32.add - local.tee $0 + local.tee $1 i32.const 18068 i32.ge_u if @@ -1062,20 +1062,20 @@ call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT - local.get $0 + local.get $1 i32.const 4 i32.sub - local.set $1 - local.get $0 + local.set $0 + local.get $1 i32.const 15 i32.and i32.const 1 - local.get $0 + local.get $1 select if (result i32) i32.const 1 else - local.get $1 + local.get $0 i32.load i32.const 1 i32.and @@ -1088,14 +1088,11 @@ call $~lib/builtins/abort unreachable end - local.get $1 - local.tee $0 + local.get $0 + local.get $0 i32.load i32.const 1 i32.or - local.set $1 - local.get $0 - local.get $1 i32.store local.get $0 call $~lib/rt/tlsf/insertBlock @@ -1108,8 +1105,7 @@ local.tee $0 local.get $0 i32.store offset=4 - global.get $~lib/rt/itcms/toSpace - local.tee $0 + local.get $0 local.get $0 i32.store offset=8 i32.const 0 diff --git a/tests/compiler/inlining.optimized.wat b/tests/compiler/inlining.optimized.wat index 3efc001b52..d001990432 100644 --- a/tests/compiler/inlining.optimized.wat +++ b/tests/compiler/inlining.optimized.wat @@ -1,10 +1,10 @@ (module (type $none_=>_none (func)) + (type $i32_i32_=>_none (func (param i32 i32))) + (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) (type $none_=>_i32 (func (result i32))) (type $i32_=>_i32 (func (param i32) (result i32))) (type $i32_=>_none (func (param i32))) - (type $i32_i32_=>_none (func (param i32 i32))) - (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) @@ -1039,7 +1039,7 @@ local.get $0 i32.const 4 i32.add - local.tee $0 + local.tee $1 i32.const 17964 i32.ge_u if @@ -1049,20 +1049,20 @@ call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT - local.get $0 + local.get $1 i32.const 4 i32.sub - local.set $1 - local.get $0 + local.set $0 + local.get $1 i32.const 15 i32.and i32.const 1 - local.get $0 + local.get $1 select if (result i32) i32.const 1 else - local.get $1 + local.get $0 i32.load i32.const 1 i32.and @@ -1075,14 +1075,11 @@ call $~lib/builtins/abort unreachable end - local.get $1 - local.tee $0 + local.get $0 + local.get $0 i32.load i32.const 1 i32.or - local.set $1 - local.get $0 - local.get $1 i32.store local.get $0 call $~lib/rt/tlsf/insertBlock @@ -1095,8 +1092,7 @@ local.tee $0 local.get $0 i32.store offset=4 - global.get $~lib/rt/itcms/toSpace - local.tee $0 + local.get $0 local.get $0 i32.store offset=8 i32.const 0 @@ -1236,80 +1232,11 @@ end end ) - (func $~lib/rt/itcms/__new (param $0 i32) (param $1 i32) (result i32) + (func $~lib/rt/tlsf/allocateBlock (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) - (local $5 i32) - (local $6 i32) - local.get $0 - i32.const 1073741804 - i32.ge_u - if - i32.const 1136 - i32.const 1200 - i32.const 260 - i32.const 31 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/rt/itcms/total - global.get $~lib/rt/itcms/threshold - i32.ge_u - if - block $__inlined_func$~lib/rt/itcms/interrupt - i32.const 2048 - local.set $2 - loop $do-continue|0 - local.get $2 - call $~lib/rt/itcms/step - i32.sub - local.set $2 - global.get $~lib/rt/itcms/state - i32.eqz - if - global.get $~lib/rt/itcms/total - i64.extend_i32_u - i64.const 200 - i64.mul - i64.const 100 - i64.div_u - i32.wrap_i64 - i32.const 1024 - i32.add - global.set $~lib/rt/itcms/threshold - br $__inlined_func$~lib/rt/itcms/interrupt - end - local.get $2 - i32.const 0 - i32.gt_s - br_if $do-continue|0 - end - global.get $~lib/rt/itcms/total - local.tee $2 - local.get $2 - global.get $~lib/rt/itcms/threshold - i32.sub - i32.const 1024 - i32.lt_u - i32.const 10 - i32.shl - i32.add - global.set $~lib/rt/itcms/threshold - end - end - local.get $0 - i32.const 16 - i32.add - local.set $2 - global.get $~lib/rt/tlsf/ROOT - i32.eqz - if - call $~lib/rt/tlsf/initialize - end - global.get $~lib/rt/tlsf/ROOT - local.set $3 - local.get $2 + local.get $1 i32.const 1073741820 i32.gt_u if @@ -1320,14 +1247,15 @@ call $~lib/builtins/abort unreachable end - local.get $3 - local.get $2 + local.get $0 + local.tee $2 + local.get $1 i32.const 12 i32.le_u if (result i32) i32.const 12 else - local.get $2 + local.get $1 i32.const 19 i32.add i32.const -16 @@ -1335,19 +1263,19 @@ i32.const 4 i32.sub end - local.tee $2 + local.tee $0 call $~lib/rt/tlsf/searchBlock - local.tee $4 + local.tee $1 i32.eqz if - local.get $2 + local.get $0 i32.const 536870910 i32.lt_u if (result i32) - local.get $2 + local.get $0 i32.const 1 i32.const 27 - local.get $2 + local.get $0 i32.clz i32.sub i32.shl @@ -1355,16 +1283,16 @@ i32.sub i32.add else - local.get $2 + local.get $0 end i32.const 4 memory.size - local.tee $6 + local.tee $1 i32.const 16 i32.shl i32.const 4 i32.sub - local.get $3 + local.get $2 i32.load offset=1568 i32.ne i32.shl @@ -1375,18 +1303,18 @@ i32.and i32.const 16 i32.shr_u - local.set $5 - local.get $6 - local.get $5 - local.get $5 - local.get $6 - i32.lt_s + local.set $3 + local.get $1 + local.get $3 + local.get $1 + local.get $3 + i32.gt_s select memory.grow i32.const 0 i32.lt_s if - local.get $5 + local.get $3 memory.grow i32.const 0 i32.lt_s @@ -1394,18 +1322,18 @@ unreachable end end - local.get $3 - local.get $6 + local.get $2 + local.get $1 i32.const 16 i32.shl memory.size i32.const 16 i32.shl call $~lib/rt/tlsf/addMemory - local.get $3 local.get $2 + local.get $0 call $~lib/rt/tlsf/searchBlock - local.tee $4 + local.tee $1 i32.eqz if i32.const 0 @@ -1416,8 +1344,8 @@ unreachable end end - local.get $2 - local.get $4 + local.get $0 + local.get $1 i32.load i32.const -4 i32.and @@ -1430,13 +1358,13 @@ call $~lib/builtins/abort unreachable end - local.get $3 - local.get $4 + local.get $2 + local.get $1 call $~lib/rt/tlsf/removeBlock - local.get $4 + local.get $1 i32.load - local.set $6 - local.get $2 + local.set $3 + local.get $0 i32.const 4 i32.add i32.const 15 @@ -1449,54 +1377,54 @@ call $~lib/builtins/abort unreachable end - local.get $6 + local.get $3 i32.const -4 i32.and - local.get $2 + local.get $0 i32.sub - local.tee $5 + local.tee $4 i32.const 16 i32.ge_u if - local.get $4 - local.get $2 - local.get $6 + local.get $1 + local.get $0 + local.get $3 i32.const 2 i32.and i32.or i32.store - local.get $2 - local.get $4 + local.get $0 + local.get $1 i32.const 4 i32.add i32.add - local.tee $2 - local.get $5 + local.tee $0 + local.get $4 i32.const 4 i32.sub i32.const 1 i32.or i32.store - local.get $3 local.get $2 + local.get $0 call $~lib/rt/tlsf/insertBlock else - local.get $4 - local.get $6 + local.get $1 + local.get $3 i32.const -2 i32.and i32.store - local.get $4 + local.get $1 i32.const 4 i32.add - local.tee $2 - local.get $4 + local.tee $0 + local.get $1 i32.load i32.const -4 i32.and i32.add - local.get $2 - local.get $4 + local.get $0 + local.get $1 i32.load i32.const -4 i32.and @@ -1506,182 +1434,143 @@ i32.and i32.store end - local.get $4 - local.get $1 - i32.store offset=12 - local.get $4 - local.get $0 - i32.store offset=16 - global.get $~lib/rt/itcms/fromSpace - local.tee $1 - i32.load offset=8 - local.set $2 - local.get $4 - local.get $1 - global.get $~lib/rt/itcms/white - i32.or - i32.store offset=4 - local.get $4 - local.get $2 - i32.store offset=8 - local.get $2 - local.get $4 - local.get $2 - i32.load offset=4 - i32.const 3 - i32.and - i32.or - i32.store offset=4 local.get $1 - local.get $4 - i32.store offset=8 - global.get $~lib/rt/itcms/total - local.get $4 - i32.load - i32.const -4 - i32.and - i32.const 4 - i32.add - i32.add - global.set $~lib/rt/itcms/total - local.get $4 - i32.const 20 - i32.add - local.tee $2 - local.set $3 + ) + (func $~lib/memory/memory.fill (param $0 i32) (param $1 i32) + (local $2 i32) block $~lib/util/memory/memset|inlined.0 - local.get $0 + local.get $1 i32.eqz br_if $~lib/util/memory/memset|inlined.0 - local.get $3 + local.get $0 i32.const 0 i32.store8 local.get $0 - local.get $3 + local.get $1 i32.add - local.tee $1 + local.tee $2 i32.const 1 i32.sub i32.const 0 i32.store8 - local.get $0 + local.get $1 i32.const 2 i32.le_u br_if $~lib/util/memory/memset|inlined.0 - local.get $3 + local.get $0 i32.const 0 i32.store8 offset=1 - local.get $3 + local.get $0 i32.const 0 i32.store8 offset=2 - local.get $1 + local.get $2 i32.const 2 i32.sub i32.const 0 i32.store8 - local.get $1 + local.get $2 i32.const 3 i32.sub i32.const 0 i32.store8 - local.get $0 + local.get $1 i32.const 6 i32.le_u br_if $~lib/util/memory/memset|inlined.0 - local.get $3 + local.get $0 i32.const 0 i32.store8 offset=3 - local.get $1 + local.get $2 i32.const 4 i32.sub i32.const 0 i32.store8 - local.get $0 + local.get $1 i32.const 8 i32.le_u br_if $~lib/util/memory/memset|inlined.0 - local.get $3 + local.get $0 i32.const 0 - local.get $3 + local.get $0 i32.sub i32.const 3 i32.and - local.tee $1 + local.tee $2 i32.add - local.tee $5 + local.tee $0 i32.const 0 i32.store - local.get $5 local.get $0 local.get $1 + local.get $2 i32.sub i32.const -4 i32.and - local.tee $3 + local.tee $2 i32.add - local.tee $0 + local.tee $1 i32.const 4 i32.sub i32.const 0 i32.store - local.get $3 + local.get $2 i32.const 8 i32.le_u br_if $~lib/util/memory/memset|inlined.0 - local.get $5 + local.get $0 i32.const 0 i32.store offset=4 - local.get $5 + local.get $0 i32.const 0 i32.store offset=8 - local.get $0 + local.get $1 i32.const 12 i32.sub i32.const 0 i32.store - local.get $0 + local.get $1 i32.const 8 i32.sub i32.const 0 i32.store - local.get $3 + local.get $2 i32.const 24 i32.le_u br_if $~lib/util/memory/memset|inlined.0 - local.get $5 + local.get $0 i32.const 0 i32.store offset=12 - local.get $5 + local.get $0 i32.const 0 i32.store offset=16 - local.get $5 + local.get $0 i32.const 0 i32.store offset=20 - local.get $5 + local.get $0 i32.const 0 i32.store offset=24 - local.get $0 + local.get $1 i32.const 28 i32.sub i32.const 0 i32.store - local.get $0 + local.get $1 i32.const 24 i32.sub i32.const 0 i32.store - local.get $0 + local.get $1 i32.const 20 i32.sub i32.const 0 i32.store - local.get $0 + local.get $1 i32.const 16 i32.sub i32.const 0 i32.store - local.get $5 - local.get $5 + local.get $0 + local.get $0 i32.const 4 i32.and i32.const 24 @@ -1689,7 +1578,7 @@ local.tee $1 i32.add local.set $0 - local.get $3 + local.get $2 local.get $1 i32.sub local.set $1 @@ -1722,7 +1611,309 @@ end end end + ) + (func $~lib/rt/itcms/__new (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + local.get $0 + i32.const 1073741804 + i32.ge_u + if + i32.const 1136 + i32.const 1200 + i32.const 260 + i32.const 31 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.ge_u + if + block $__inlined_func$~lib/rt/itcms/interrupt + i32.const 2048 + local.set $2 + loop $do-continue|0 + local.get $2 + call $~lib/rt/itcms/step + i32.sub + local.set $2 + global.get $~lib/rt/itcms/state + i32.eqz + if + global.get $~lib/rt/itcms/total + i64.extend_i32_u + i64.const 200 + i64.mul + i64.const 100 + i64.div_u + i32.wrap_i64 + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold + br $__inlined_func$~lib/rt/itcms/interrupt + end + local.get $2 + i32.const 0 + i32.gt_s + br_if $do-continue|0 + end + global.get $~lib/rt/itcms/total + local.tee $2 + local.get $2 + global.get $~lib/rt/itcms/threshold + i32.sub + i32.const 1024 + i32.lt_u + i32.const 10 + i32.shl + i32.add + global.set $~lib/rt/itcms/threshold + end + end + local.get $0 + i32.const 16 + i32.add + local.set $2 + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $2 + call $~lib/rt/tlsf/allocateBlock + local.tee $2 + local.get $1 + i32.store offset=12 + local.get $2 + local.get $0 + i32.store offset=16 + global.get $~lib/rt/itcms/fromSpace + local.tee $3 + i32.load offset=8 + local.set $1 + local.get $2 + local.get $3 + global.get $~lib/rt/itcms/white + i32.or + i32.store offset=4 + local.get $2 + local.get $1 + i32.store offset=8 + local.get $1 + local.get $2 + local.get $1 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + local.get $3 + local.get $2 + i32.store offset=8 + global.get $~lib/rt/itcms/total local.get $2 + i32.load + i32.const -4 + i32.and + i32.const 4 + i32.add + i32.add + global.set $~lib/rt/itcms/total + local.get $2 + i32.const 20 + i32.add + local.tee $1 + local.get $0 + call $~lib/memory/memory.fill + local.get $1 + ) + (func $start:inlining + (local $0 i32) + (local $1 i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 1580 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + i32.const 2 + i32.const 1104 + i32.load + call_indirect $0 (type $i32_=>_i32) + i32.const 2 + i32.ne + if + i32.const 0 + i32.const 1056 + i32.const 68 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.tee $0 + i32.const 123 + i32.store + local.get $0 + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + memory.size + i32.const 16 + i32.shl + i32.const 17964 + i32.sub + i32.const 1 + i32.shr_u + global.set $~lib/rt/itcms/threshold + i32.const 1252 + i32.const 1248 + i32.store + i32.const 1256 + i32.const 1248 + i32.store + i32.const 1248 + global.set $~lib/rt/itcms/pinSpace + i32.const 1284 + i32.const 1280 + i32.store + i32.const 1288 + i32.const 1280 + i32.store + i32.const 1280 + global.set $~lib/rt/itcms/toSpace + i32.const 1428 + i32.const 1424 + i32.store + i32.const 1432 + i32.const 1424 + i32.store + i32.const 1424 + global.set $~lib/rt/itcms/fromSpace + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1580 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.tee $1 + i64.const 0 + i64.store + local.get $1 + i32.const 0 + i32.store offset=8 + local.get $1 + i32.const 16 + i32.const 5 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + local.get $0 + i32.const 3 + i32.store offset=8 + local.get $0 + i32.const 0 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.const 6 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store offset=4 + end + local.get $0 + i32.const 1 + i32.store + local.get $0 + i32.const 0 + i32.store offset=4 + local.get $0 + i32.const 2 + i32.store offset=4 + local.get $0 + i32.store + local.get $0 + i32.const 4 + i32.store offset=12 + local.get $1 + local.get $0 + i32.store offset=8 + local.get $0 + i32.load + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 1056 + i32.const 95 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load offset=4 + i32.const 2 + i32.ne + if + i32.const 0 + i32.const 1056 + i32.const 96 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load offset=8 + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1056 + i32.const 97 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load offset=12 + i32.const 4 + i32.ne + if + i32.const 0 + i32.const 1056 + i32.const 98 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + i32.const 17984 + i32.const 18032 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable ) (func $~lib/rt/__visit_members (param $0 i32) block $invalid @@ -1766,191 +1957,6 @@ unreachable ) (func $~start - (local $0 i32) - (local $1 i32) - (local $2 i32) - block $__inlined_func$start:inlining - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - block $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 1580 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - i32.const 2 - i32.const 1104 - i32.load - call_indirect $0 (type $i32_=>_i32) - i32.const 2 - i32.ne - if - i32.const 0 - i32.const 1056 - i32.const 68 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.tee $0 - i32.const 123 - i32.store - local.get $0 - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - memory.size - i32.const 16 - i32.shl - i32.const 17964 - i32.sub - i32.const 1 - i32.shr_u - global.set $~lib/rt/itcms/threshold - i32.const 1252 - i32.const 1248 - i32.store - i32.const 1256 - i32.const 1248 - i32.store - i32.const 1248 - global.set $~lib/rt/itcms/pinSpace - i32.const 1284 - i32.const 1280 - i32.store - i32.const 1288 - i32.const 1280 - i32.store - i32.const 1280 - global.set $~lib/rt/itcms/toSpace - i32.const 1428 - i32.const 1424 - i32.store - i32.const 1432 - i32.const 1424 - i32.store - i32.const 1424 - global.set $~lib/rt/itcms/fromSpace - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1580 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - local.tee $1 - i64.const 0 - i64.store - local.get $1 - i32.const 0 - i32.store offset=8 - local.get $1 - i32.const 16 - i32.const 5 - call $~lib/rt/itcms/__new - local.tee $0 - i32.store - local.get $0 - i32.const 3 - i32.store offset=8 - local.get $0 - i32.const 0 - i32.store offset=12 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.eqz - if - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.const 6 - call $~lib/rt/itcms/__new - local.tee $0 - i32.store offset=4 - end - local.get $0 - i32.const 1 - i32.store - local.get $0 - i32.const 0 - i32.store offset=4 - local.get $0 - i32.const 2 - i32.store offset=4 - local.get $0 - i32.store - local.get $0 - i32.const 4 - i32.store offset=12 - local.get $1 - local.get $0 - i32.store offset=8 - local.get $0 - i32.load - i32.const 1 - i32.ne - if - i32.const 0 - i32.const 1056 - i32.const 95 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load offset=4 - i32.const 2 - i32.ne - if - i32.const 0 - i32.const 1056 - i32.const 96 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load offset=8 - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1056 - i32.const 97 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load offset=12 - i32.const 4 - i32.ne - if - i32.const 0 - i32.const 1056 - i32.const 98 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.add - global.set $~lib/memory/__stack_pointer - br $__inlined_func$start:inlining - end - i32.const 17984 - i32.const 18032 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end + call $start:inlining ) ) diff --git a/tests/compiler/instanceof-class.optimized.wat b/tests/compiler/instanceof-class.optimized.wat index 0c7aae8a8e..136645c6a2 100644 --- a/tests/compiler/instanceof-class.optimized.wat +++ b/tests/compiler/instanceof-class.optimized.wat @@ -1041,7 +1041,7 @@ local.get $0 i32.const 4 i32.add - local.tee $0 + local.tee $1 i32.const 17948 i32.ge_u if @@ -1051,20 +1051,20 @@ call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT - local.get $0 + local.get $1 i32.const 4 i32.sub - local.set $1 - local.get $0 + local.set $0 + local.get $1 i32.const 15 i32.and i32.const 1 - local.get $0 + local.get $1 select if (result i32) i32.const 1 else - local.get $1 + local.get $0 i32.load i32.const 1 i32.and @@ -1077,14 +1077,11 @@ call $~lib/builtins/abort unreachable end - local.get $1 - local.tee $0 + local.get $0 + local.get $0 i32.load i32.const 1 i32.or - local.set $1 - local.get $0 - local.get $1 i32.store local.get $0 call $~lib/rt/tlsf/insertBlock @@ -1097,8 +1094,7 @@ local.tee $0 local.get $0 i32.store offset=4 - global.get $~lib/rt/itcms/toSpace - local.tee $0 + local.get $0 local.get $0 i32.store offset=8 i32.const 0 diff --git a/tests/compiler/issues/1095.optimized.wat b/tests/compiler/issues/1095.optimized.wat index d234e0a29b..f0c872c69c 100644 --- a/tests/compiler/issues/1095.optimized.wat +++ b/tests/compiler/issues/1095.optimized.wat @@ -1034,7 +1034,7 @@ local.get $0 i32.const 4 i32.add - local.tee $0 + local.tee $1 i32.const 18004 i32.ge_u if @@ -1044,20 +1044,20 @@ call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT - local.get $0 + local.get $1 i32.const 4 i32.sub - local.set $1 - local.get $0 + local.set $0 + local.get $1 i32.const 15 i32.and i32.const 1 - local.get $0 + local.get $1 select if (result i32) i32.const 1 else - local.get $1 + local.get $0 i32.load i32.const 1 i32.and @@ -1070,14 +1070,11 @@ call $~lib/builtins/abort unreachable end - local.get $1 - local.tee $0 + local.get $0 + local.get $0 i32.load i32.const 1 i32.or - local.set $1 - local.get $0 - local.get $1 i32.store local.get $0 call $~lib/rt/tlsf/insertBlock @@ -1090,8 +1087,7 @@ local.tee $0 local.get $0 i32.store offset=4 - global.get $~lib/rt/itcms/toSpace - local.tee $0 + local.get $0 local.get $0 i32.store offset=8 i32.const 0 diff --git a/tests/compiler/issues/1225.optimized.wat b/tests/compiler/issues/1225.optimized.wat index b20c57acb5..e259e449b3 100644 --- a/tests/compiler/issues/1225.optimized.wat +++ b/tests/compiler/issues/1225.optimized.wat @@ -1036,7 +1036,7 @@ local.get $0 i32.const 4 i32.add - local.tee $0 + local.tee $1 i32.const 17908 i32.ge_u if @@ -1046,20 +1046,20 @@ call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT - local.get $0 + local.get $1 i32.const 4 i32.sub - local.set $1 - local.get $0 + local.set $0 + local.get $1 i32.const 15 i32.and i32.const 1 - local.get $0 + local.get $1 select if (result i32) i32.const 1 else - local.get $1 + local.get $0 i32.load i32.const 1 i32.and @@ -1072,14 +1072,11 @@ call $~lib/builtins/abort unreachable end - local.get $1 - local.tee $0 + local.get $0 + local.get $0 i32.load i32.const 1 i32.or - local.set $1 - local.get $0 - local.get $1 i32.store local.get $0 call $~lib/rt/tlsf/insertBlock @@ -1092,8 +1089,7 @@ local.tee $0 local.get $0 i32.store offset=4 - global.get $~lib/rt/itcms/toSpace - local.tee $0 + local.get $0 local.get $0 i32.store offset=8 i32.const 0 diff --git a/tests/compiler/issues/1699.optimized.wat b/tests/compiler/issues/1699.optimized.wat index 503f16a35c..0d6dc127d5 100644 --- a/tests/compiler/issues/1699.optimized.wat +++ b/tests/compiler/issues/1699.optimized.wat @@ -1,9 +1,9 @@ (module (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) + (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) (type $none_=>_none (func)) (type $i32_=>_none (func (param i32))) (type $i32_i32_=>_none (func (param i32 i32))) - (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) (type $none_=>_i32 (func (result i32))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) @@ -1041,7 +1041,7 @@ local.get $0 i32.const 4 i32.add - local.tee $0 + local.tee $1 i32.const 18140 i32.ge_u if @@ -1051,20 +1051,20 @@ call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT - local.get $0 + local.get $1 i32.const 4 i32.sub - local.set $1 - local.get $0 + local.set $0 + local.get $1 i32.const 15 i32.and i32.const 1 - local.get $0 + local.get $1 select if (result i32) i32.const 1 else - local.get $1 + local.get $0 i32.load i32.const 1 i32.and @@ -1077,14 +1077,11 @@ call $~lib/builtins/abort unreachable end - local.get $1 - local.tee $0 + local.get $0 + local.get $0 i32.load i32.const 1 i32.or - local.set $1 - local.get $0 - local.get $1 i32.store local.get $0 call $~lib/rt/tlsf/insertBlock @@ -1097,8 +1094,7 @@ local.tee $0 local.get $0 i32.store offset=4 - global.get $~lib/rt/itcms/toSpace - local.tee $0 + local.get $0 local.get $0 i32.store offset=8 i32.const 0 @@ -1238,6 +1234,210 @@ end end ) + (func $~lib/rt/tlsf/allocateBlock (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + local.get $1 + i32.const 1073741820 + i32.gt_u + if + i32.const 1152 + i32.const 1488 + i32.const 458 + i32.const 29 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.tee $2 + local.get $1 + i32.const 12 + i32.le_u + if (result i32) + i32.const 12 + else + local.get $1 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + end + local.tee $0 + call $~lib/rt/tlsf/searchBlock + local.tee $1 + i32.eqz + if + local.get $0 + i32.const 536870910 + i32.lt_u + if (result i32) + local.get $0 + i32.const 1 + i32.const 27 + local.get $0 + i32.clz + i32.sub + i32.shl + i32.const 1 + i32.sub + i32.add + else + local.get $0 + end + i32.const 4 + memory.size + local.tee $1 + i32.const 16 + i32.shl + i32.const 4 + i32.sub + local.get $2 + i32.load offset=1568 + i32.ne + i32.shl + i32.add + i32.const 65535 + i32.add + i32.const -65536 + i32.and + i32.const 16 + i32.shr_u + local.set $3 + local.get $1 + local.get $3 + local.get $1 + local.get $3 + i32.gt_s + select + memory.grow + i32.const 0 + i32.lt_s + if + local.get $3 + memory.grow + i32.const 0 + i32.lt_s + if + unreachable + end + end + local.get $2 + local.get $1 + i32.const 16 + i32.shl + memory.size + i32.const 16 + i32.shl + call $~lib/rt/tlsf/addMemory + local.get $2 + local.get $0 + call $~lib/rt/tlsf/searchBlock + local.tee $1 + i32.eqz + if + i32.const 0 + i32.const 1488 + i32.const 496 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + end + local.get $0 + local.get $1 + i32.load + i32.const -4 + i32.and + i32.gt_u + if + i32.const 0 + i32.const 1488 + i32.const 498 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.get $1 + call $~lib/rt/tlsf/removeBlock + local.get $1 + i32.load + local.set $3 + local.get $0 + i32.const 4 + i32.add + i32.const 15 + i32.and + if + i32.const 0 + i32.const 1488 + i32.const 357 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const -4 + i32.and + local.get $0 + i32.sub + local.tee $4 + i32.const 16 + i32.ge_u + if + local.get $1 + local.get $0 + local.get $3 + i32.const 2 + i32.and + i32.or + i32.store + local.get $0 + local.get $1 + i32.const 4 + i32.add + i32.add + local.tee $0 + local.get $4 + i32.const 4 + i32.sub + i32.const 1 + i32.or + i32.store + local.get $2 + local.get $0 + call $~lib/rt/tlsf/insertBlock + else + local.get $1 + local.get $3 + i32.const -2 + i32.and + i32.store + local.get $1 + i32.const 4 + i32.add + local.tee $0 + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.get $0 + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + i32.load + i32.const -3 + i32.and + i32.store + end + local.get $1 + ) (func $~lib/memory/memory.fill (param $0 i32) (param $1 i32) (local $2 i32) block $~lib/util/memory/memset|inlined.0 @@ -1417,9 +1617,6 @@ (func $~lib/rt/itcms/__new (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) local.get $0 i32.const 1073741804 i32.ge_u @@ -1437,12 +1634,12 @@ if block $__inlined_func$~lib/rt/itcms/interrupt i32.const 2048 - local.set $3 + local.set $2 loop $do-continue|0 - local.get $3 + local.get $2 call $~lib/rt/itcms/step i32.sub - local.set $3 + local.set $2 global.get $~lib/rt/itcms/state i32.eqz if @@ -1458,14 +1655,14 @@ global.set $~lib/rt/itcms/threshold br $__inlined_func$~lib/rt/itcms/interrupt end - local.get $3 + local.get $2 i32.const 0 i32.gt_s br_if $do-continue|0 end global.get $~lib/rt/itcms/total - local.tee $3 - local.get $3 + local.tee $2 + local.get $2 global.get $~lib/rt/itcms/threshold i32.sub i32.const 1024 @@ -1479,230 +1676,35 @@ local.get $0 i32.const 16 i32.add - local.set $6 + local.set $2 global.get $~lib/rt/tlsf/ROOT i32.eqz if call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT - local.get $6 - i32.const 1073741820 - i32.gt_u - if - i32.const 1152 - i32.const 1488 - i32.const 458 - i32.const 29 - call $~lib/builtins/abort - unreachable - end + local.get $2 + call $~lib/rt/tlsf/allocateBlock local.tee $2 - local.get $6 - i32.const 12 - i32.le_u - if (result i32) - i32.const 12 - else - local.get $6 - i32.const 19 - i32.add - i32.const -16 - i32.and - i32.const 4 - i32.sub - end - local.tee $3 - call $~lib/rt/tlsf/searchBlock - local.tee $6 - i32.eqz - if - local.get $3 - i32.const 536870910 - i32.lt_u - if (result i32) - local.get $3 - i32.const 1 - i32.const 27 - local.get $3 - i32.clz - i32.sub - i32.shl - i32.const 1 - i32.sub - i32.add - else - local.get $3 - end - i32.const 4 - memory.size - local.tee $6 - i32.const 16 - i32.shl - i32.const 4 - i32.sub - local.get $2 - i32.load offset=1568 - i32.ne - i32.shl - i32.add - i32.const 65535 - i32.add - i32.const -65536 - i32.and - i32.const 16 - i32.shr_u - local.set $5 - local.get $6 - local.get $5 - local.get $5 - local.get $6 - i32.lt_s - select - memory.grow - i32.const 0 - i32.lt_s - if - local.get $5 - memory.grow - i32.const 0 - i32.lt_s - if - unreachable - end - end - local.get $2 - local.get $6 - i32.const 16 - i32.shl - memory.size - i32.const 16 - i32.shl - call $~lib/rt/tlsf/addMemory - local.get $2 - local.get $3 - call $~lib/rt/tlsf/searchBlock - local.tee $6 - i32.eqz - if - i32.const 0 - i32.const 1488 - i32.const 496 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - end - local.get $3 - local.get $6 - i32.load - i32.const -4 - i32.and - i32.gt_u - if - i32.const 0 - i32.const 1488 - i32.const 498 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $2 - local.get $6 - call $~lib/rt/tlsf/removeBlock - local.get $6 - i32.load - local.set $5 - local.get $3 - i32.const 4 - i32.add - i32.const 15 - i32.and - if - i32.const 0 - i32.const 1488 - i32.const 357 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $5 - i32.const -4 - i32.and - local.get $3 - i32.sub - local.tee $4 - i32.const 16 - i32.ge_u - if - local.get $6 - local.get $3 - local.get $5 - i32.const 2 - i32.and - i32.or - i32.store - local.get $3 - local.get $6 - i32.const 4 - i32.add - i32.add - local.tee $3 - local.get $4 - i32.const 4 - i32.sub - i32.const 1 - i32.or - i32.store - local.get $2 - local.get $3 - call $~lib/rt/tlsf/insertBlock - else - local.get $6 - local.get $5 - i32.const -2 - i32.and - i32.store - local.get $6 - i32.const 4 - i32.add - local.tee $3 - local.get $6 - i32.load - i32.const -4 - i32.and - i32.add - local.get $3 - local.get $6 - i32.load - i32.const -4 - i32.and - i32.add - i32.load - i32.const -3 - i32.and - i32.store - end - local.get $6 local.get $1 i32.store offset=12 - local.get $6 + local.get $2 local.get $0 i32.store offset=16 global.get $~lib/rt/itcms/fromSpace local.tee $3 i32.load offset=8 local.set $1 - local.get $6 + local.get $2 local.get $3 global.get $~lib/rt/itcms/white i32.or i32.store offset=4 - local.get $6 + local.get $2 local.get $1 i32.store offset=8 local.get $1 - local.get $6 + local.get $2 local.get $1 i32.load offset=4 i32.const 3 @@ -1710,10 +1712,10 @@ i32.or i32.store offset=4 local.get $3 - local.get $6 + local.get $2 i32.store offset=8 global.get $~lib/rt/itcms/total - local.get $6 + local.get $2 i32.load i32.const -4 i32.and @@ -1721,7 +1723,7 @@ i32.add i32.add global.set $~lib/rt/itcms/total - local.get $6 + local.get $2 i32.const 20 i32.add local.tee $1 @@ -2545,6 +2547,197 @@ i32.store8 end ) + (func $~lib/memory/memory.copy (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + (local $4 i32) + block $~lib/util/memory/memmove|inlined.0 + local.get $2 + local.set $4 + local.get $0 + local.get $1 + i32.eq + br_if $~lib/util/memory/memmove|inlined.0 + local.get $1 + local.get $0 + i32.sub + local.get $4 + i32.sub + i32.const 0 + local.get $4 + i32.const 1 + i32.shl + i32.sub + i32.le_u + if + local.get $0 + local.get $1 + local.get $4 + call $~lib/util/memory/memcpy + br $~lib/util/memory/memmove|inlined.0 + end + local.get $0 + local.get $1 + i32.lt_u + if + local.get $1 + i32.const 7 + i32.and + local.get $0 + i32.const 7 + i32.and + i32.eq + if + loop $while-continue|0 + local.get $0 + i32.const 7 + i32.and + if + local.get $4 + i32.eqz + br_if $~lib/util/memory/memmove|inlined.0 + local.get $4 + i32.const 1 + i32.sub + local.set $4 + local.get $0 + local.tee $2 + i32.const 1 + i32.add + local.set $0 + local.get $1 + local.tee $3 + i32.const 1 + i32.add + local.set $1 + local.get $2 + local.get $3 + i32.load8_u + i32.store8 + br $while-continue|0 + end + end + loop $while-continue|1 + local.get $4 + i32.const 8 + i32.ge_u + if + local.get $0 + local.get $1 + i64.load + i64.store + local.get $4 + i32.const 8 + i32.sub + local.set $4 + local.get $0 + i32.const 8 + i32.add + local.set $0 + local.get $1 + i32.const 8 + i32.add + local.set $1 + br $while-continue|1 + end + end + end + loop $while-continue|2 + local.get $4 + if + local.get $0 + local.tee $2 + i32.const 1 + i32.add + local.set $0 + local.get $1 + local.tee $3 + i32.const 1 + i32.add + local.set $1 + local.get $2 + local.get $3 + i32.load8_u + i32.store8 + local.get $4 + i32.const 1 + i32.sub + local.set $4 + br $while-continue|2 + end + end + else + local.get $1 + i32.const 7 + i32.and + local.get $0 + i32.const 7 + i32.and + i32.eq + if + loop $while-continue|3 + local.get $0 + local.get $4 + i32.add + i32.const 7 + i32.and + if + local.get $4 + i32.eqz + br_if $~lib/util/memory/memmove|inlined.0 + local.get $4 + i32.const 1 + i32.sub + local.tee $4 + local.get $0 + i32.add + local.get $1 + local.get $4 + i32.add + i32.load8_u + i32.store8 + br $while-continue|3 + end + end + loop $while-continue|4 + local.get $4 + i32.const 8 + i32.ge_u + if + local.get $4 + i32.const 8 + i32.sub + local.tee $4 + local.get $0 + i32.add + local.get $1 + local.get $4 + i32.add + i64.load + i64.store + br $while-continue|4 + end + end + end + loop $while-continue|5 + local.get $4 + if + local.get $4 + i32.const 1 + i32.sub + local.tee $4 + local.get $0 + i32.add + local.get $1 + local.get $4 + i32.add + i32.load8_u + i32.store8 + br $while-continue|5 + end + end + end + end + ) (func $~lib/array/Array#__set (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) @@ -2553,9 +2746,6 @@ (local $7 i32) (local $8 i32) (local $9 i32) - (local $10 i32) - (local $11 i32) - (local $12 i32) local.get $1 local.get $0 i32.load offset=12 @@ -2575,16 +2765,16 @@ local.get $1 i32.const 1 i32.add - local.tee $8 - local.tee $5 + local.tee $9 + local.tee $6 local.get $0 i32.load offset=8 - local.tee $11 + local.tee $7 i32.const 2 i32.shr_u i32.gt_u if - local.get $5 + local.get $6 i32.const 268435455 i32.gt_u if @@ -2595,40 +2785,38 @@ call $~lib/builtins/abort unreachable end - local.get $0 - i32.load - local.tee $10 - local.set $3 block $__inlined_func$~lib/rt/itcms/__renew - local.get $11 + local.get $7 i32.const 1 i32.shl - local.tee $6 + local.tee $4 i32.const 1073741820 - local.get $6 + local.get $4 i32.const 1073741820 i32.lt_u select - local.tee $4 - local.get $5 + local.tee $3 + local.get $6 i32.const 8 - local.get $5 + local.get $6 i32.const 8 i32.gt_u select i32.const 2 i32.shl - local.tee $6 + local.tee $4 + local.get $3 local.get $4 - local.get $6 i32.gt_u select - local.tee $9 local.tee $5 - local.get $10 + local.get $0 + i32.load + local.tee $6 + local.tee $3 i32.const 20 i32.sub - local.tee $4 + local.tee $8 i32.load i32.const -4 i32.and @@ -2636,223 +2824,38 @@ i32.sub i32.le_u if - local.get $4 + local.get $8 local.get $5 i32.store offset=16 br $__inlined_func$~lib/rt/itcms/__renew end local.get $5 - local.get $4 + local.get $8 i32.load offset=12 call $~lib/rt/itcms/__new - local.tee $7 - local.set $6 + local.tee $4 + local.get $3 local.get $5 - local.get $4 + local.get $8 i32.load offset=16 - local.tee $4 - local.get $4 + local.tee $3 + local.get $3 local.get $5 i32.gt_u select - local.set $12 - block $~lib/util/memory/memmove|inlined.0 - local.get $3 - local.get $6 - i32.eq - br_if $~lib/util/memory/memmove|inlined.0 - local.get $3 - local.get $6 - i32.sub - local.get $12 - i32.sub - i32.const 0 - local.get $12 - i32.const 1 - i32.shl - i32.sub - i32.le_u - if - local.get $6 - local.get $3 - local.get $12 - call $~lib/util/memory/memcpy - br $~lib/util/memory/memmove|inlined.0 - end - local.get $3 - local.get $6 - i32.gt_u - if - local.get $3 - i32.const 7 - i32.and - local.get $6 - i32.const 7 - i32.and - i32.eq - if - loop $while-continue|0 - local.get $6 - i32.const 7 - i32.and - if - local.get $12 - i32.eqz - br_if $~lib/util/memory/memmove|inlined.0 - local.get $12 - i32.const 1 - i32.sub - local.set $12 - local.get $6 - local.tee $5 - i32.const 1 - i32.add - local.set $6 - local.get $3 - local.tee $4 - i32.const 1 - i32.add - local.set $3 - local.get $5 - local.get $4 - i32.load8_u - i32.store8 - br $while-continue|0 - end - end - loop $while-continue|1 - local.get $12 - i32.const 8 - i32.ge_u - if - local.get $6 - local.get $3 - i64.load - i64.store - local.get $12 - i32.const 8 - i32.sub - local.set $12 - local.get $6 - i32.const 8 - i32.add - local.set $6 - local.get $3 - i32.const 8 - i32.add - local.set $3 - br $while-continue|1 - end - end - end - loop $while-continue|2 - local.get $12 - if - local.get $6 - local.tee $5 - i32.const 1 - i32.add - local.set $6 - local.get $3 - local.tee $4 - i32.const 1 - i32.add - local.set $3 - local.get $5 - local.get $4 - i32.load8_u - i32.store8 - local.get $12 - i32.const 1 - i32.sub - local.set $12 - br $while-continue|2 - end - end - else - local.get $3 - i32.const 7 - i32.and - local.get $6 - i32.const 7 - i32.and - i32.eq - if - loop $while-continue|3 - local.get $6 - local.get $12 - i32.add - i32.const 7 - i32.and - if - local.get $12 - i32.eqz - br_if $~lib/util/memory/memmove|inlined.0 - local.get $6 - local.get $12 - i32.const 1 - i32.sub - local.tee $12 - i32.add - local.get $3 - local.get $12 - i32.add - i32.load8_u - i32.store8 - br $while-continue|3 - end - end - loop $while-continue|4 - local.get $12 - i32.const 8 - i32.ge_u - if - local.get $6 - local.get $12 - i32.const 8 - i32.sub - local.tee $12 - i32.add - local.get $3 - local.get $12 - i32.add - i64.load - i64.store - br $while-continue|4 - end - end - end - loop $while-continue|5 - local.get $12 - if - local.get $6 - local.get $12 - i32.const 1 - i32.sub - local.tee $12 - i32.add - local.get $3 - local.get $12 - i32.add - i32.load8_u - i32.store8 - br $while-continue|5 - end - end - end - end - local.get $7 + call $~lib/memory/memory.copy + local.get $4 local.set $3 end local.get $3 - local.get $11 + local.get $7 i32.add - local.get $9 - local.get $11 + local.get $5 + local.get $7 i32.sub call $~lib/memory/memory.fill local.get $3 - local.get $10 + local.get $6 i32.ne if local.get $0 @@ -2867,11 +2870,11 @@ call $~lib/rt/itcms/__link end local.get $0 - local.get $9 + local.get $5 i32.store offset=8 end local.get $0 - local.get $8 + local.get $9 i32.store offset=12 end local.get $0 @@ -2999,13 +3002,13 @@ i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.tee $2 + local.tee $1 i64.const 0 i64.store - local.get $2 + local.get $1 i64.const 0 i64.store offset=8 - local.get $2 + local.get $1 i32.const 8 i32.sub global.set $~lib/memory/__stack_pointer @@ -3043,20 +3046,20 @@ i32.const 32 i32.const 0 call $~lib/rt/itcms/__new - local.tee $1 + local.tee $2 i32.store offset=4 - local.get $1 + local.get $2 i32.const 32 call $~lib/memory/memory.fill local.get $0 - local.get $1 + local.get $2 i32.store local.get $0 - local.get $1 + local.get $2 i32.const 0 call $~lib/rt/itcms/__link local.get $0 - local.get $1 + local.get $2 i32.store offset=4 local.get $0 i32.const 32 @@ -3068,7 +3071,7 @@ i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - local.get $2 + local.get $1 local.get $0 i32.store call $issues/1699/MultiAssignmentTest#constructor @@ -3092,30 +3095,30 @@ local.get $1 call $~lib/array/Array#__set i32.const 0 - local.set $1 + local.set $2 loop $for-loop|0 - local.get $1 + local.get $2 local.get $0 i32.load offset=12 i32.lt_s if global.get $~lib/memory/__stack_pointer call $issues/1699/MultiAssignmentTest#constructor - local.tee $2 + local.tee $1 i32.store offset=12 - local.get $1 + local.get $2 i32.const 1 i32.gt_s if local.get $0 - local.get $1 local.get $2 + local.get $1 call $~lib/array/Array#__set end - local.get $1 + local.get $2 i32.const 1 i32.add - local.set $1 + local.set $2 br $for-loop|0 end end diff --git a/tests/compiler/logical.optimized.wat b/tests/compiler/logical.optimized.wat index 281aaf02b4..1d186e44c7 100644 --- a/tests/compiler/logical.optimized.wat +++ b/tests/compiler/logical.optimized.wat @@ -1027,7 +1027,7 @@ local.get $0 i32.const 4 i32.add - local.tee $0 + local.tee $1 i32.const 17908 i32.ge_u if @@ -1037,20 +1037,20 @@ call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT - local.get $0 + local.get $1 i32.const 4 i32.sub - local.set $1 - local.get $0 + local.set $0 + local.get $1 i32.const 15 i32.and i32.const 1 - local.get $0 + local.get $1 select if (result i32) i32.const 1 else - local.get $1 + local.get $0 i32.load i32.const 1 i32.and @@ -1063,14 +1063,11 @@ call $~lib/builtins/abort unreachable end - local.get $1 - local.tee $0 + local.get $0 + local.get $0 i32.load i32.const 1 i32.or - local.set $1 - local.get $0 - local.get $1 i32.store local.get $0 call $~lib/rt/tlsf/insertBlock @@ -1083,8 +1080,7 @@ local.tee $0 local.get $0 i32.store offset=4 - global.get $~lib/rt/itcms/toSpace - local.tee $0 + local.get $0 local.get $0 i32.store offset=8 i32.const 0 diff --git a/tests/compiler/managed-cast.optimized.wat b/tests/compiler/managed-cast.optimized.wat index 4aa2a78181..49b512febc 100644 --- a/tests/compiler/managed-cast.optimized.wat +++ b/tests/compiler/managed-cast.optimized.wat @@ -1031,7 +1031,7 @@ local.get $0 i32.const 4 i32.add - local.tee $0 + local.tee $1 i32.const 18060 i32.ge_u if @@ -1041,20 +1041,20 @@ call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT - local.get $0 + local.get $1 i32.const 4 i32.sub - local.set $1 - local.get $0 + local.set $0 + local.get $1 i32.const 15 i32.and i32.const 1 - local.get $0 + local.get $1 select if (result i32) i32.const 1 else - local.get $1 + local.get $0 i32.load i32.const 1 i32.and @@ -1067,14 +1067,11 @@ call $~lib/builtins/abort unreachable end - local.get $1 - local.tee $0 + local.get $0 + local.get $0 i32.load i32.const 1 i32.or - local.set $1 - local.get $0 - local.get $1 i32.store local.get $0 call $~lib/rt/tlsf/insertBlock @@ -1087,8 +1084,7 @@ local.tee $0 local.get $0 i32.store offset=4 - global.get $~lib/rt/itcms/toSpace - local.tee $0 + local.get $0 local.get $0 i32.store offset=8 i32.const 0 @@ -1423,6 +1419,9 @@ unreachable ) (func $~start + call $start:managed-cast + ) + (func $start:managed-cast (local $0 i32) (local $1 i32) (local $2 i32) @@ -1430,11 +1429,11 @@ i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer - block $folding-inner0 + block $folding-inner1 global.get $~lib/memory/__stack_pointer i32.const 1676 i32.lt_s - br_if $folding-inner0 + br_if $folding-inner1 global.get $~lib/memory/__stack_pointer i32.const 0 i32.store @@ -1488,7 +1487,7 @@ global.get $~lib/memory/__stack_pointer i32.const 1676 i32.lt_s - br_if $folding-inner0 + br_if $folding-inner1 global.get $~lib/memory/__stack_pointer i32.const 0 i32.store @@ -1533,7 +1532,7 @@ global.get $~lib/memory/__stack_pointer i32.const 1676 i32.lt_s - br_if $folding-inner0 + br_if $folding-inner1 global.get $~lib/memory/__stack_pointer i32.const 0 i32.store @@ -1596,7 +1595,7 @@ global.get $~lib/memory/__stack_pointer i32.const 1676 i32.lt_s - br_if $folding-inner0 + br_if $folding-inner1 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -1614,7 +1613,7 @@ local.get $0 local.get $1 i32.store offset=4 - block $__inlined_func$~lib/rt/__instanceof11 (result i32) + block $__inlined_func$~lib/rt/__instanceof0 (result i32) local.get $1 i32.const 20 i32.sub @@ -1624,12 +1623,12 @@ i32.load i32.le_u if - loop $do-continue|012 + loop $do-continue|01 i32.const 1 local.get $0 i32.const 3 i32.eq - br_if $__inlined_func$~lib/rt/__instanceof11 + br_if $__inlined_func$~lib/rt/__instanceof0 drop local.get $0 i32.const 3 @@ -1638,7 +1637,7 @@ i32.add i32.load offset=4 local.tee $0 - br_if $do-continue|012 + br_if $do-continue|01 end end i32.const 0 @@ -1673,12 +1672,12 @@ global.get $~lib/memory/__stack_pointer i32.const 1676 i32.lt_s - br_if $folding-inner0 + br_if $folding-inner1 global.get $~lib/memory/__stack_pointer local.tee $2 i32.const 0 i32.store - block $__inlined_func$~lib/rt/__instanceof14 (result i32) + block $__inlined_func$~lib/rt/__instanceof2 (result i32) local.get $1 i32.const 20 i32.sub @@ -1688,12 +1687,12 @@ i32.load i32.le_u if - loop $do-continue|015 + loop $do-continue|03 i32.const 1 local.get $0 i32.const 3 i32.eq - br_if $__inlined_func$~lib/rt/__instanceof14 + br_if $__inlined_func$~lib/rt/__instanceof2 drop local.get $0 i32.const 3 @@ -1702,7 +1701,7 @@ i32.add i32.load offset=4 local.tee $0 - br_if $do-continue|015 + br_if $do-continue|03 end end i32.const 0 @@ -1736,12 +1735,12 @@ global.get $~lib/memory/__stack_pointer i32.const 1676 i32.lt_s - br_if $folding-inner0 + br_if $folding-inner1 global.get $~lib/memory/__stack_pointer local.tee $2 i32.const 0 i32.store - block $__inlined_func$~lib/rt/__instanceof17 (result i32) + block $__inlined_func$~lib/rt/__instanceof4 (result i32) local.get $1 i32.const 20 i32.sub @@ -1751,12 +1750,12 @@ i32.load i32.le_u if - loop $do-continue|018 + loop $do-continue|05 i32.const 1 local.get $0 i32.const 3 i32.eq - br_if $__inlined_func$~lib/rt/__instanceof17 + br_if $__inlined_func$~lib/rt/__instanceof4 drop local.get $0 i32.const 3 @@ -1765,7 +1764,7 @@ i32.add i32.load offset=4 local.tee $0 - br_if $do-continue|018 + br_if $do-continue|05 end end i32.const 0 diff --git a/tests/compiler/memcpy.optimized.wat b/tests/compiler/memcpy.optimized.wat index 36b4eb652f..72f852bc10 100644 --- a/tests/compiler/memcpy.optimized.wat +++ b/tests/compiler/memcpy.optimized.wat @@ -1,7 +1,7 @@ (module + (type $none_=>_none (func)) (type $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) - (type $none_=>_none (func)) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (global $memcpy/dest (mut i32) (i32.const 0)) (memory $0 1) @@ -771,7 +771,7 @@ end local.get $5 ) - (func $~start + (func $start:memcpy i32.const 8 i64.const 1229782938247303441 i64.store @@ -947,4 +947,7 @@ unreachable end ) + (func $~start + call $start:memcpy + ) ) diff --git a/tests/compiler/memmove.optimized.wat b/tests/compiler/memmove.optimized.wat index 21ae653cfb..09ffb42d76 100644 --- a/tests/compiler/memmove.optimized.wat +++ b/tests/compiler/memmove.optimized.wat @@ -1,7 +1,7 @@ (module + (type $none_=>_none (func)) (type $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) - (type $none_=>_none (func)) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (global $memmove/dest (mut i32) (i32.const 0)) (memory $0 1) @@ -182,7 +182,7 @@ end end ) - (func $~start + (func $start:memmove i32.const 8 i64.const 1229782938247303441 i64.store @@ -358,4 +358,7 @@ unreachable end ) + (func $~start + call $start:memmove + ) ) diff --git a/tests/compiler/new.optimized.wat b/tests/compiler/new.optimized.wat index ec7fb0c94a..fde04a83b7 100644 --- a/tests/compiler/new.optimized.wat +++ b/tests/compiler/new.optimized.wat @@ -1067,7 +1067,7 @@ local.get $0 i32.const 4 i32.add - local.tee $0 + local.tee $1 i32.const 17884 i32.ge_u if @@ -1077,20 +1077,20 @@ call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT - local.get $0 + local.get $1 i32.const 4 i32.sub - local.set $1 - local.get $0 + local.set $0 + local.get $1 i32.const 15 i32.and i32.const 1 - local.get $0 + local.get $1 select if (result i32) i32.const 1 else - local.get $1 + local.get $0 i32.load i32.const 1 i32.and @@ -1103,14 +1103,11 @@ call $~lib/builtins/abort unreachable end - local.get $1 - local.tee $0 + local.get $0 + local.get $0 i32.load i32.const 1 i32.or - local.set $1 - local.get $0 - local.get $1 i32.store local.get $0 call $~lib/rt/tlsf/insertBlock @@ -1123,8 +1120,7 @@ local.tee $0 local.get $0 i32.store offset=4 - global.get $~lib/rt/itcms/toSpace - local.tee $0 + local.get $0 local.get $0 i32.store offset=8 i32.const 0 diff --git a/tests/compiler/number.optimized.wat b/tests/compiler/number.optimized.wat index 7689283fff..ce91b77eed 100644 --- a/tests/compiler/number.optimized.wat +++ b/tests/compiler/number.optimized.wat @@ -2,8 +2,8 @@ (type $none_=>_none (func)) (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) - (type $i32_=>_none (func (param i32))) (type $i32_i32_=>_none (func (param i32 i32))) + (type $i32_=>_none (func (param i32))) (type $i32_=>_i32 (func (param i32) (result i32))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) (type $none_=>_i32 (func (result i32))) @@ -1074,7 +1074,7 @@ local.get $0 i32.const 4 i32.add - local.tee $0 + local.tee $1 i32.const 21068 i32.ge_u if @@ -1084,20 +1084,20 @@ call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT - local.get $0 + local.get $1 i32.const 4 i32.sub - local.set $1 - local.get $0 + local.set $0 + local.get $1 i32.const 15 i32.and i32.const 1 - local.get $0 + local.get $1 select if (result i32) i32.const 1 else - local.get $1 + local.get $0 i32.load i32.const 1 i32.and @@ -1110,14 +1110,11 @@ call $~lib/builtins/abort unreachable end - local.get $1 - local.tee $0 + local.get $0 + local.get $0 i32.load i32.const 1 i32.or - local.set $1 - local.get $0 - local.get $1 i32.store local.get $0 call $~lib/rt/tlsf/insertBlock @@ -1130,8 +1127,7 @@ local.tee $0 local.get $0 i32.store offset=4 - global.get $~lib/rt/itcms/toSpace - local.tee $0 + local.get $0 local.get $0 i32.store offset=8 i32.const 0 @@ -1271,79 +1267,10 @@ end end ) - (func $~lib/rt/itcms/__new (param $0 i32) (result i32) - (local $1 i32) + (func $~lib/rt/tlsf/allocateBlock (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) - (local $5 i32) - local.get $0 - i32.const 1073741804 - i32.ge_u - if - i32.const 1280 - i32.const 1344 - i32.const 260 - i32.const 31 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/rt/itcms/total - global.get $~lib/rt/itcms/threshold - i32.ge_u - if - block $__inlined_func$~lib/rt/itcms/interrupt - i32.const 2048 - local.set $1 - loop $do-continue|0 - local.get $1 - call $~lib/rt/itcms/step - i32.sub - local.set $1 - global.get $~lib/rt/itcms/state - i32.eqz - if - global.get $~lib/rt/itcms/total - i64.extend_i32_u - i64.const 200 - i64.mul - i64.const 100 - i64.div_u - i32.wrap_i64 - i32.const 1024 - i32.add - global.set $~lib/rt/itcms/threshold - br $__inlined_func$~lib/rt/itcms/interrupt - end - local.get $1 - i32.const 0 - i32.gt_s - br_if $do-continue|0 - end - global.get $~lib/rt/itcms/total - local.tee $1 - local.get $1 - global.get $~lib/rt/itcms/threshold - i32.sub - i32.const 1024 - i32.lt_u - i32.const 10 - i32.shl - i32.add - global.set $~lib/rt/itcms/threshold - end - end - local.get $0 - i32.const 16 - i32.add - local.set $1 - global.get $~lib/rt/tlsf/ROOT - i32.eqz - if - call $~lib/rt/tlsf/initialize - end - global.get $~lib/rt/tlsf/ROOT - local.set $5 local.get $1 i32.const 1073741820 i32.gt_u @@ -1355,7 +1282,8 @@ call $~lib/builtins/abort unreachable end - local.get $5 + local.get $0 + local.tee $2 local.get $1 i32.const 12 i32.le_u @@ -1370,19 +1298,19 @@ i32.const 4 i32.sub end - local.tee $1 + local.tee $0 call $~lib/rt/tlsf/searchBlock - local.tee $2 + local.tee $1 i32.eqz if - local.get $1 + local.get $0 i32.const 536870910 i32.lt_u if (result i32) - local.get $1 + local.get $0 i32.const 1 i32.const 27 - local.get $1 + local.get $0 i32.clz i32.sub i32.shl @@ -1390,16 +1318,16 @@ i32.sub i32.add else - local.get $1 + local.get $0 end i32.const 4 memory.size - local.tee $3 + local.tee $1 i32.const 16 i32.shl i32.const 4 i32.sub - local.get $5 + local.get $2 i32.load offset=1568 i32.ne i32.shl @@ -1410,18 +1338,18 @@ i32.and i32.const 16 i32.shr_u - local.set $4 + local.set $3 + local.get $1 local.get $3 - local.get $4 + local.get $1 local.get $3 - local.get $4 i32.gt_s select memory.grow i32.const 0 i32.lt_s if - local.get $4 + local.get $3 memory.grow i32.const 0 i32.lt_s @@ -1429,18 +1357,18 @@ unreachable end end - local.get $5 - local.get $3 + local.get $2 + local.get $1 i32.const 16 i32.shl memory.size i32.const 16 i32.shl call $~lib/rt/tlsf/addMemory - local.get $5 - local.get $1 + local.get $2 + local.get $0 call $~lib/rt/tlsf/searchBlock - local.tee $2 + local.tee $1 i32.eqz if i32.const 0 @@ -1451,8 +1379,8 @@ unreachable end end + local.get $0 local.get $1 - local.get $2 i32.load i32.const -4 i32.and @@ -1465,13 +1393,13 @@ call $~lib/builtins/abort unreachable end - local.get $5 local.get $2 + local.get $1 call $~lib/rt/tlsf/removeBlock - local.get $2 + local.get $1 i32.load local.set $3 - local.get $1 + local.get $0 i32.const 4 i32.add i32.const 15 @@ -1487,51 +1415,51 @@ local.get $3 i32.const -4 i32.and - local.get $1 + local.get $0 i32.sub local.tee $4 i32.const 16 i32.ge_u if - local.get $2 local.get $1 + local.get $0 local.get $3 i32.const 2 i32.and i32.or i32.store + local.get $0 local.get $1 - local.get $2 i32.const 4 i32.add i32.add - local.tee $1 + local.tee $0 local.get $4 i32.const 4 i32.sub i32.const 1 i32.or i32.store - local.get $5 - local.get $1 + local.get $2 + local.get $0 call $~lib/rt/tlsf/insertBlock else - local.get $2 + local.get $1 local.get $3 i32.const -2 i32.and i32.store - local.get $2 + local.get $1 i32.const 4 i32.add - local.tee $1 - local.get $2 + local.tee $0 + local.get $1 i32.load i32.const -4 i32.and i32.add + local.get $0 local.get $1 - local.get $2 i32.load i32.const -4 i32.and @@ -1541,182 +1469,143 @@ i32.and i32.store end - local.get $2 - i32.const 1 - i32.store offset=12 - local.get $2 - local.get $0 - i32.store offset=16 - global.get $~lib/rt/itcms/fromSpace - local.tee $1 - i32.load offset=8 - local.set $5 - local.get $2 local.get $1 - global.get $~lib/rt/itcms/white - i32.or - i32.store offset=4 - local.get $2 - local.get $5 - i32.store offset=8 - local.get $5 - local.get $2 - local.get $5 - i32.load offset=4 - i32.const 3 - i32.and - i32.or - i32.store offset=4 - local.get $1 - local.get $2 - i32.store offset=8 - global.get $~lib/rt/itcms/total - local.get $2 - i32.load - i32.const -4 - i32.and - i32.const 4 - i32.add - i32.add - global.set $~lib/rt/itcms/total - local.get $2 - i32.const 20 - i32.add - local.tee $5 - local.set $4 + ) + (func $~lib/memory/memory.fill (param $0 i32) (param $1 i32) + (local $2 i32) block $~lib/util/memory/memset|inlined.0 - local.get $0 + local.get $1 i32.eqz br_if $~lib/util/memory/memset|inlined.0 - local.get $4 + local.get $0 i32.const 0 i32.store8 local.get $0 - local.get $4 + local.get $1 i32.add - local.tee $1 + local.tee $2 i32.const 1 i32.sub i32.const 0 i32.store8 - local.get $0 + local.get $1 i32.const 2 i32.le_u br_if $~lib/util/memory/memset|inlined.0 - local.get $4 + local.get $0 i32.const 0 i32.store8 offset=1 - local.get $4 + local.get $0 i32.const 0 i32.store8 offset=2 - local.get $1 + local.get $2 i32.const 2 i32.sub i32.const 0 i32.store8 - local.get $1 + local.get $2 i32.const 3 i32.sub i32.const 0 i32.store8 - local.get $0 + local.get $1 i32.const 6 i32.le_u br_if $~lib/util/memory/memset|inlined.0 - local.get $4 + local.get $0 i32.const 0 i32.store8 offset=3 - local.get $1 + local.get $2 i32.const 4 i32.sub i32.const 0 i32.store8 - local.get $0 + local.get $1 i32.const 8 i32.le_u br_if $~lib/util/memory/memset|inlined.0 - local.get $4 + local.get $0 i32.const 0 - local.get $4 + local.get $0 i32.sub i32.const 3 i32.and - local.tee $1 + local.tee $2 i32.add - local.tee $3 + local.tee $0 i32.const 0 i32.store - local.get $3 local.get $0 local.get $1 + local.get $2 i32.sub i32.const -4 i32.and - local.tee $4 + local.tee $2 i32.add - local.tee $0 + local.tee $1 i32.const 4 i32.sub i32.const 0 i32.store - local.get $4 + local.get $2 i32.const 8 i32.le_u br_if $~lib/util/memory/memset|inlined.0 - local.get $3 + local.get $0 i32.const 0 i32.store offset=4 - local.get $3 + local.get $0 i32.const 0 i32.store offset=8 - local.get $0 + local.get $1 i32.const 12 i32.sub i32.const 0 i32.store - local.get $0 + local.get $1 i32.const 8 i32.sub i32.const 0 i32.store - local.get $4 + local.get $2 i32.const 24 i32.le_u br_if $~lib/util/memory/memset|inlined.0 - local.get $3 + local.get $0 i32.const 0 i32.store offset=12 - local.get $3 + local.get $0 i32.const 0 i32.store offset=16 - local.get $3 + local.get $0 i32.const 0 i32.store offset=20 - local.get $3 + local.get $0 i32.const 0 i32.store offset=24 - local.get $0 + local.get $1 i32.const 28 i32.sub i32.const 0 i32.store - local.get $0 + local.get $1 i32.const 24 i32.sub i32.const 0 i32.store - local.get $0 + local.get $1 i32.const 20 i32.sub i32.const 0 i32.store - local.get $0 + local.get $1 i32.const 16 i32.sub i32.const 0 i32.store - local.get $3 - local.get $3 + local.get $0 + local.get $0 i32.const 4 i32.and i32.const 24 @@ -1724,7 +1613,7 @@ local.tee $1 i32.add local.set $0 - local.get $4 + local.get $2 local.get $1 i32.sub local.set $1 @@ -1757,7 +1646,124 @@ end end end - local.get $5 + ) + (func $~lib/rt/itcms/__new (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + local.get $0 + i32.const 1073741804 + i32.ge_u + if + i32.const 1280 + i32.const 1344 + i32.const 260 + i32.const 31 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.ge_u + if + block $__inlined_func$~lib/rt/itcms/interrupt + i32.const 2048 + local.set $1 + loop $do-continue|0 + local.get $1 + call $~lib/rt/itcms/step + i32.sub + local.set $1 + global.get $~lib/rt/itcms/state + i32.eqz + if + global.get $~lib/rt/itcms/total + i64.extend_i32_u + i64.const 200 + i64.mul + i64.const 100 + i64.div_u + i32.wrap_i64 + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold + br $__inlined_func$~lib/rt/itcms/interrupt + end + local.get $1 + i32.const 0 + i32.gt_s + br_if $do-continue|0 + end + global.get $~lib/rt/itcms/total + local.tee $1 + local.get $1 + global.get $~lib/rt/itcms/threshold + i32.sub + i32.const 1024 + i32.lt_u + i32.const 10 + i32.shl + i32.add + global.set $~lib/rt/itcms/threshold + end + end + local.get $0 + i32.const 16 + i32.add + local.set $1 + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $1 + call $~lib/rt/tlsf/allocateBlock + local.tee $1 + i32.const 1 + i32.store offset=12 + local.get $1 + local.get $0 + i32.store offset=16 + global.get $~lib/rt/itcms/fromSpace + local.tee $3 + i32.load offset=8 + local.set $2 + local.get $1 + local.get $3 + global.get $~lib/rt/itcms/white + i32.or + i32.store offset=4 + local.get $1 + local.get $2 + i32.store offset=8 + local.get $2 + local.get $1 + local.get $2 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + local.get $3 + local.get $1 + i32.store offset=8 + global.get $~lib/rt/itcms/total + local.get $1 + i32.load + i32.const -4 + i32.and + i32.const 4 + i32.add + i32.add + global.set $~lib/rt/itcms/total + local.get $1 + i32.const 20 + i32.add + local.tee $1 + local.get $0 + call $~lib/memory/memory.fill + local.get $1 ) (func $~lib/util/number/utoa32_dec_lut (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) @@ -1889,7 +1895,7 @@ i32.load offset=16 i32.const 1 i32.shr_u - local.tee $4 + local.tee $2 local.get $1 i32.const 20 i32.sub @@ -1903,18 +1909,15 @@ end block $__inlined_func$~lib/util/string/compareImpl (result i32) local.get $0 - local.set $2 - local.get $1 - local.set $3 - local.get $2 + local.tee $3 i32.const 7 i32.and - local.get $3 + local.get $1 i32.const 7 i32.and i32.or i32.const 1 - local.get $4 + local.get $2 local.tee $0 i32.const 4 i32.ge_u @@ -1922,20 +1925,20 @@ i32.eqz if loop $do-continue|0 - local.get $2 - i64.load local.get $3 i64.load + local.get $1 + i64.load i64.eq if - local.get $2 - i32.const 8 - i32.add - local.set $2 local.get $3 i32.const 8 i32.add local.set $3 + local.get $1 + i32.const 8 + i32.add + local.set $1 local.get $0 i32.const 4 i32.sub @@ -1948,33 +1951,33 @@ end loop $while-continue|1 local.get $0 - local.tee $1 + local.tee $2 i32.const 1 i32.sub local.set $0 - local.get $1 + local.get $2 if - local.get $2 - i32.load16_u - local.tee $1 local.get $3 i32.load16_u + local.tee $2 + local.get $1 + i32.load16_u local.tee $4 i32.ne if - local.get $1 + local.get $2 local.get $4 i32.sub br $__inlined_func$~lib/util/string/compareImpl end - local.get $2 - i32.const 2 - i32.add - local.set $2 local.get $3 i32.const 2 i32.add local.set $3 + local.get $1 + i32.const 2 + i32.add + local.set $1 br $while-continue|1 end end @@ -3729,7 +3732,6 @@ (local $3 i64) (local $4 i64) (local $5 i64) - (local $6 f64) global.get $~lib/memory/__stack_pointer i32.const 8 i32.sub @@ -3816,78 +3818,78 @@ i32.load16_s global.set $~lib/util/number/_exp_pow global.get $~lib/util/number/_frc_pow - local.tee $5 - i64.const 4294967295 - i64.and - local.set $3 - local.get $5 + local.tee $2 i64.const 32 i64.shr_u - local.tee $5 - i64.const 31 - i64.shl - local.get $3 + local.set $3 + local.get $2 + i64.const 4294967295 + i64.and + local.tee $2 i64.const 31 i64.shl - local.get $3 + local.get $2 i64.const 10 i64.shl i64.const 32 i64.shr_u i64.add - local.tee $4 + local.set $4 + local.get $3 + i64.const 31 + i64.shl + local.get $2 + i64.const 31 + i64.shl + local.tee $5 i64.const 32 i64.shr_u i64.add - local.get $4 + local.get $5 i64.const 4294967295 i64.and - local.get $5 - i64.const 10 - i64.shl - i64.add i64.const 2147483647 i64.add i64.const 32 i64.shr_u i64.add - i64.const 1 - i64.sub - local.set $2 - local.get $5 - i64.const 31 - i64.shl + global.get $~lib/util/number/_exp_pow + local.tee $0 + i32.const 2 + i32.add local.get $3 i64.const 31 i64.shl - local.tee $4 + local.get $4 i64.const 32 i64.shr_u i64.add local.get $4 i64.const 4294967295 i64.and + local.get $3 + i64.const 10 + i64.shl + i64.add i64.const 2147483647 i64.add i64.const 32 i64.shr_u i64.add - global.get $~lib/util/number/_exp_pow - local.tee $1 - i32.const 2 - i32.add - local.get $2 - local.get $1 + i64.const 1 + i64.sub + local.tee $4 + local.get $0 i32.const 2 i32.add - local.get $2 - local.get $5 + local.get $4 + local.get $3 i64.const 2147483647 i64.mul - local.get $3 + local.get $2 i64.const 2147483647 i64.mul - local.get $3 + local.get $2 i64.const 4294966784 i64.mul i64.const 32 @@ -3897,7 +3899,7 @@ i64.const 32 i64.shr_u i64.add - local.get $5 + local.get $3 i64.const 4294966784 i64.mul local.get $2 diff --git a/tests/compiler/object-literal.optimized.wat b/tests/compiler/object-literal.optimized.wat index 48e60473ad..8f9a64d35c 100644 --- a/tests/compiler/object-literal.optimized.wat +++ b/tests/compiler/object-literal.optimized.wat @@ -1,8 +1,8 @@ (module (type $i32_=>_none (func (param i32))) + (type $i32_i32_=>_none (func (param i32 i32))) (type $none_=>_none (func)) (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) - (type $i32_i32_=>_none (func (param i32 i32))) (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) (type $none_=>_i32 (func (result i32))) @@ -1504,125 +1504,13 @@ end local.get $1 ) - (func $~lib/rt/itcms/__new (param $0 i32) (param $1 i32) (result i32) + (func $~lib/memory/memory.fill (param $0 i32) (param $1 i32) (local $2 i32) - (local $3 i32) - local.get $0 - i32.const 1073741804 - i32.ge_u - if - i32.const 1312 - i32.const 1104 - i32.const 260 - i32.const 31 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/rt/itcms/total - global.get $~lib/rt/itcms/threshold - i32.ge_u - if - block $__inlined_func$~lib/rt/itcms/interrupt - i32.const 2048 - local.set $2 - loop $do-continue|0 - local.get $2 - call $~lib/rt/itcms/step - i32.sub - local.set $2 - global.get $~lib/rt/itcms/state - i32.eqz - if - global.get $~lib/rt/itcms/total - i64.extend_i32_u - i64.const 200 - i64.mul - i64.const 100 - i64.div_u - i32.wrap_i64 - i32.const 1024 - i32.add - global.set $~lib/rt/itcms/threshold - br $__inlined_func$~lib/rt/itcms/interrupt - end - local.get $2 - i32.const 0 - i32.gt_s - br_if $do-continue|0 - end - global.get $~lib/rt/itcms/total - local.tee $2 - local.get $2 - global.get $~lib/rt/itcms/threshold - i32.sub - i32.const 1024 - i32.lt_u - i32.const 10 - i32.shl - i32.add - global.set $~lib/rt/itcms/threshold - end - end - local.get $0 - i32.const 16 - i32.add - local.set $2 - global.get $~lib/rt/tlsf/ROOT - i32.eqz - if - call $~lib/rt/tlsf/initialize - end - global.get $~lib/rt/tlsf/ROOT - local.get $2 - call $~lib/rt/tlsf/allocateBlock - local.tee $2 - local.get $1 - i32.store offset=12 - local.get $2 - local.get $0 - i32.store offset=16 - global.get $~lib/rt/itcms/fromSpace - local.tee $3 - i32.load offset=8 - local.set $1 - local.get $2 - local.get $3 - global.get $~lib/rt/itcms/white - i32.or - i32.store offset=4 - local.get $2 - local.get $1 - i32.store offset=8 - local.get $1 - local.get $2 - local.get $1 - i32.load offset=4 - i32.const 3 - i32.and - i32.or - i32.store offset=4 - local.get $3 - local.get $2 - i32.store offset=8 - global.get $~lib/rt/itcms/total - local.get $2 - i32.load - i32.const -4 - i32.and - i32.const 4 - i32.add - i32.add - global.set $~lib/rt/itcms/total - local.get $2 - i32.const 20 - i32.add - local.tee $3 - local.set $1 block $~lib/util/memory/memset|inlined.0 - local.get $0 + local.get $1 i32.eqz br_if $~lib/util/memory/memset|inlined.0 - local.get $1 + local.get $0 i32.const 0 i32.store8 local.get $0 @@ -1633,14 +1521,14 @@ i32.sub i32.const 0 i32.store8 - local.get $0 + local.get $1 i32.const 2 i32.le_u br_if $~lib/util/memory/memset|inlined.0 - local.get $1 + local.get $0 i32.const 0 i32.store8 offset=1 - local.get $1 + local.get $0 i32.const 0 i32.store8 offset=2 local.get $2 @@ -1653,11 +1541,11 @@ i32.sub i32.const 0 i32.store8 - local.get $0 + local.get $1 i32.const 6 i32.le_u br_if $~lib/util/memory/memset|inlined.0 - local.get $1 + local.get $0 i32.const 0 i32.store8 offset=3 local.get $2 @@ -1665,30 +1553,30 @@ i32.sub i32.const 0 i32.store8 - local.get $0 + local.get $1 i32.const 8 i32.le_u br_if $~lib/util/memory/memset|inlined.0 - local.get $1 + local.get $0 i32.const 0 - local.get $1 + local.get $0 i32.sub i32.const 3 i32.and local.tee $2 i32.add - local.tee $1 + local.tee $0 i32.const 0 i32.store - local.get $1 local.get $0 + local.get $1 local.get $2 i32.sub i32.const -4 i32.and local.tee $2 i32.add - local.tee $0 + local.tee $1 i32.const 4 i32.sub i32.const 0 @@ -1697,18 +1585,18 @@ i32.const 8 i32.le_u br_if $~lib/util/memory/memset|inlined.0 - local.get $1 + local.get $0 i32.const 0 i32.store offset=4 - local.get $1 + local.get $0 i32.const 0 i32.store offset=8 - local.get $0 + local.get $1 i32.const 12 i32.sub i32.const 0 i32.store - local.get $0 + local.get $1 i32.const 8 i32.sub i32.const 0 @@ -1717,40 +1605,40 @@ i32.const 24 i32.le_u br_if $~lib/util/memory/memset|inlined.0 - local.get $1 + local.get $0 i32.const 0 i32.store offset=12 - local.get $1 + local.get $0 i32.const 0 i32.store offset=16 - local.get $1 + local.get $0 i32.const 0 i32.store offset=20 - local.get $1 + local.get $0 i32.const 0 i32.store offset=24 - local.get $0 + local.get $1 i32.const 28 i32.sub i32.const 0 i32.store - local.get $0 + local.get $1 i32.const 24 i32.sub i32.const 0 i32.store - local.get $0 + local.get $1 i32.const 20 i32.sub i32.const 0 i32.store - local.get $0 + local.get $1 i32.const 16 i32.sub i32.const 0 i32.store - local.get $1 - local.get $1 + local.get $0 + local.get $0 i32.const 4 i32.and i32.const 24 @@ -1791,81 +1679,194 @@ end end end - local.get $3 ) - (func $~lib/string/String.__eq (param $0 i32) (param $1 i32) (result i32) + (func $~lib/rt/itcms/__new (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) - (local $4 i32) - local.get $0 - local.get $1 - i32.eq - if - i32.const 1 - return - end - local.get $1 - i32.const 0 local.get $0 - select - i32.eqz + i32.const 1073741804 + i32.ge_u if - i32.const 0 - return + i32.const 1312 + i32.const 1104 + i32.const 260 + i32.const 31 + call $~lib/builtins/abort + unreachable end - local.get $0 - i32.const 20 - i32.sub - i32.load offset=16 - i32.const 1 - i32.shr_u - local.tee $4 - local.get $1 - i32.const 20 - i32.sub - i32.load offset=16 - i32.const 1 - i32.shr_u - i32.ne + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.ge_u if - i32.const 0 - return - end - block $__inlined_func$~lib/util/string/compareImpl (result i32) - local.get $0 - local.set $2 - local.get $1 - local.set $3 - local.get $2 - i32.const 7 - i32.and - local.get $3 - i32.const 7 - i32.and - i32.or - i32.const 1 - local.get $4 - local.tee $0 - i32.const 4 - i32.ge_u - select - i32.eqz - if + block $__inlined_func$~lib/rt/itcms/interrupt + i32.const 2048 + local.set $2 loop $do-continue|0 local.get $2 - i64.load - local.get $3 - i64.load - i64.eq + call $~lib/rt/itcms/step + i32.sub + local.set $2 + global.get $~lib/rt/itcms/state + i32.eqz if - local.get $2 - i32.const 8 + global.get $~lib/rt/itcms/total + i64.extend_i32_u + i64.const 200 + i64.mul + i64.const 100 + i64.div_u + i32.wrap_i64 + i32.const 1024 i32.add - local.set $2 + global.set $~lib/rt/itcms/threshold + br $__inlined_func$~lib/rt/itcms/interrupt + end + local.get $2 + i32.const 0 + i32.gt_s + br_if $do-continue|0 + end + global.get $~lib/rt/itcms/total + local.tee $2 + local.get $2 + global.get $~lib/rt/itcms/threshold + i32.sub + i32.const 1024 + i32.lt_u + i32.const 10 + i32.shl + i32.add + global.set $~lib/rt/itcms/threshold + end + end + local.get $0 + i32.const 16 + i32.add + local.set $2 + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $2 + call $~lib/rt/tlsf/allocateBlock + local.tee $2 + local.get $1 + i32.store offset=12 + local.get $2 + local.get $0 + i32.store offset=16 + global.get $~lib/rt/itcms/fromSpace + local.tee $3 + i32.load offset=8 + local.set $1 + local.get $2 + local.get $3 + global.get $~lib/rt/itcms/white + i32.or + i32.store offset=4 + local.get $2 + local.get $1 + i32.store offset=8 + local.get $1 + local.get $2 + local.get $1 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + local.get $3 + local.get $2 + i32.store offset=8 + global.get $~lib/rt/itcms/total + local.get $2 + i32.load + i32.const -4 + i32.and + i32.const 4 + i32.add + i32.add + global.set $~lib/rt/itcms/total + local.get $2 + i32.const 20 + i32.add + local.tee $1 + local.get $0 + call $~lib/memory/memory.fill + local.get $1 + ) + (func $~lib/string/String.__eq (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + local.get $0 + local.get $1 + i32.eq + if + i32.const 1 + return + end + local.get $1 + i32.const 0 + local.get $0 + select + i32.eqz + if + i32.const 0 + return + end + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 1 + i32.shr_u + local.tee $2 + local.get $1 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 1 + i32.shr_u + i32.ne + if + i32.const 0 + return + end + block $__inlined_func$~lib/util/string/compareImpl (result i32) + local.get $0 + local.tee $3 + i32.const 7 + i32.and + local.get $1 + i32.const 7 + i32.and + i32.or + i32.const 1 + local.get $2 + local.tee $0 + i32.const 4 + i32.ge_u + select + i32.eqz + if + loop $do-continue|0 + local.get $3 + i64.load + local.get $1 + i64.load + i64.eq + if local.get $3 i32.const 8 i32.add local.set $3 + local.get $1 + i32.const 8 + i32.add + local.set $1 local.get $0 i32.const 4 i32.sub @@ -1878,33 +1879,33 @@ end loop $while-continue|1 local.get $0 - local.tee $1 + local.tee $2 i32.const 1 i32.sub local.set $0 - local.get $1 + local.get $2 if - local.get $2 - i32.load16_u - local.tee $1 local.get $3 i32.load16_u + local.tee $2 + local.get $1 + i32.load16_u local.tee $4 i32.ne if - local.get $1 + local.get $2 local.get $4 i32.sub br $__inlined_func$~lib/util/string/compareImpl end - local.get $2 - i32.const 2 - i32.add - local.set $2 local.get $3 i32.const 2 i32.add local.set $3 + local.get $1 + i32.const 2 + i32.add + local.set $1 br $while-continue|1 end end @@ -2668,39 +2669,230 @@ i32.store8 end ) - (func $~lib/rt/__visit_members (param $0 i32) - (local $1 i32) - block $folding-inner0 - block $invalid - block $object-literal/OmittedFoo - block $object-literal/OmittedTypes - block $~lib/arraybuffer/ArrayBufferView - block $~lib/string/String - block $~lib/arraybuffer/ArrayBuffer - local.get $0 - i32.const 8 - i32.sub - i32.load - br_table $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $folding-inner0 $object-literal/OmittedTypes $folding-inner0 $object-literal/OmittedFoo $invalid - end - return - end - return - end + (func $~lib/memory/memory.copy (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + (local $4 i32) + block $~lib/util/memory/memmove|inlined.0 + local.get $2 + local.set $4 + local.get $0 + local.get $1 + i32.eq + br_if $~lib/util/memory/memmove|inlined.0 + local.get $1 + local.get $0 + i32.sub + local.get $4 + i32.sub + i32.const 0 + local.get $4 + i32.const 1 + i32.shl + i32.sub + i32.le_u + if + local.get $0 + local.get $1 + local.get $4 + call $~lib/util/memory/memcpy + br $~lib/util/memory/memmove|inlined.0 + end + local.get $0 + local.get $1 + i32.lt_u + if + local.get $1 + i32.const 7 + i32.and + local.get $0 + i32.const 7 + i32.and + i32.eq + if + loop $while-continue|0 local.get $0 - i32.load - local.tee $0 + i32.const 7 + i32.and if + local.get $4 + i32.eqz + br_if $~lib/util/memory/memmove|inlined.0 + local.get $4 + i32.const 1 + i32.sub + local.set $4 local.get $0 - call $~lib/rt/itcms/__visit + local.tee $2 + i32.const 1 + i32.add + local.set $0 + local.get $1 + local.tee $3 + i32.const 1 + i32.add + local.set $1 + local.get $2 + local.get $3 + i32.load8_u + i32.store8 + br $while-continue|0 + end + end + loop $while-continue|1 + local.get $4 + i32.const 8 + i32.ge_u + if + local.get $0 + local.get $1 + i64.load + i64.store + local.get $4 + i32.const 8 + i32.sub + local.set $4 + local.get $0 + i32.const 8 + i32.add + local.set $0 + local.get $1 + i32.const 8 + i32.add + local.set $1 + br $while-continue|1 end - return end - return end - local.get $0 - i32.load - local.tee $1 + loop $while-continue|2 + local.get $4 + if + local.get $0 + local.tee $2 + i32.const 1 + i32.add + local.set $0 + local.get $1 + local.tee $3 + i32.const 1 + i32.add + local.set $1 + local.get $2 + local.get $3 + i32.load8_u + i32.store8 + local.get $4 + i32.const 1 + i32.sub + local.set $4 + br $while-continue|2 + end + end + else + local.get $1 + i32.const 7 + i32.and + local.get $0 + i32.const 7 + i32.and + i32.eq + if + loop $while-continue|3 + local.get $0 + local.get $4 + i32.add + i32.const 7 + i32.and + if + local.get $4 + i32.eqz + br_if $~lib/util/memory/memmove|inlined.0 + local.get $4 + i32.const 1 + i32.sub + local.tee $4 + local.get $0 + i32.add + local.get $1 + local.get $4 + i32.add + i32.load8_u + i32.store8 + br $while-continue|3 + end + end + loop $while-continue|4 + local.get $4 + i32.const 8 + i32.ge_u + if + local.get $4 + i32.const 8 + i32.sub + local.tee $4 + local.get $0 + i32.add + local.get $1 + local.get $4 + i32.add + i64.load + i64.store + br $while-continue|4 + end + end + end + loop $while-continue|5 + local.get $4 + if + local.get $4 + i32.const 1 + i32.sub + local.tee $4 + local.get $0 + i32.add + local.get $1 + local.get $4 + i32.add + i32.load8_u + i32.store8 + br $while-continue|5 + end + end + end + end + ) + (func $~lib/rt/__visit_members (param $0 i32) + (local $1 i32) + block $folding-inner0 + block $invalid + block $object-literal/OmittedFoo + block $object-literal/OmittedTypes + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $folding-inner0 $object-literal/OmittedTypes $folding-inner0 $object-literal/OmittedFoo $invalid + end + return + end + return + end + local.get $0 + i32.load + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + return + end + return + end + local.get $0 + i32.load + local.tee $1 if local.get $1 call $~lib/rt/itcms/__visit @@ -2769,14 +2961,204 @@ (func $~start call $start:object-literal ) + (func $object-literal/testOmittedFoo (param $0 i32) + (local $1 i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1772 + i32.lt_s + if + i32.const 18176 + i32.const 18224 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.tee $1 + i64.const 0 + i64.store + local.get $1 + local.get $0 + i32.load + local.tee $2 + i32.store + local.get $1 + i32.const 1664 + i32.store offset=4 + local.get $2 + i32.const 1664 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1504 + i32.const 107 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.tee $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.store + local.get $1 + i32.const 1696 + i32.store offset=4 + local.get $2 + i32.const 1696 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1504 + i32.const 108 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.load offset=8 + local.tee $1 + i32.store + local.get $1 + i32.const 0 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1504 + i32.const 109 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.load offset=12 + local.tee $1 + i32.store + local.get $1 + i32.const 0 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1504 + i32.const 110 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.load offset=16 + local.tee $1 + i32.store + local.get $1 + i32.const 0 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1504 + i32.const 111 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.load offset=20 + local.tee $1 + i32.store + local.get $1 + i32.const 0 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1504 + i32.const 112 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.load offset=24 + local.tee $1 + i32.store + local.get $1 + i32.const 0 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1504 + i32.const 113 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.load offset=28 + local.tee $1 + i32.store + local.get $1 + i32.const 0 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1504 + i32.const 114 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load offset=32 + if + i32.const 0 + i32.const 1504 + i32.const 115 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load offset=36 + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1504 + i32.const 116 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + ) (func $start:object-literal (local $0 i32) (local $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) - (local $5 i32) - (local $6 i32) global.get $~lib/memory/__stack_pointer i32.const 20 i32.sub @@ -2844,15 +3226,15 @@ i32.const 8 i32.const 3 call $~lib/rt/itcms/__new - local.tee $2 + local.tee $1 i32.store - local.get $2 + local.get $1 i32.const 0 i32.store - local.get $2 + local.get $1 i32.const 0 i32.store offset=4 - local.get $2 + local.get $1 i32.const 0 call $~lib/rt/itcms/__link global.get $~lib/memory/__stack_pointer @@ -2860,20 +3242,20 @@ i32.add global.set $~lib/memory/__stack_pointer local.get $0 - local.get $2 + local.get $1 i32.store offset=4 - local.get $2 + local.get $1 i32.const 123 i32.store - local.get $2 + local.get $1 i32.const 1056 i32.store offset=4 - local.get $2 + local.get $1 i32.const 1056 call $~lib/rt/itcms/__link global.get $~lib/memory/__stack_pointer local.tee $0 - local.get $2 + local.get $1 i32.store local.get $0 i32.const 8 @@ -2886,7 +3268,7 @@ global.get $~lib/memory/__stack_pointer i64.const 0 i64.store - local.get $2 + local.get $1 i32.load i32.const 123 i32.ne @@ -2899,15 +3281,15 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.tee $1 - local.get $2 - i32.load offset=4 local.tee $0 - i32.store local.get $1 + i32.load offset=4 + local.tee $1 + i32.store + local.get $0 i32.const 1056 i32.store offset=4 - local.get $0 + local.get $1 i32.const 1056 call $~lib/string/String.__eq i32.eqz @@ -2933,20 +3315,20 @@ call $~lib/rt/tlsf/allocateBlock i32.const 4 i32.add - local.tee $6 + local.tee $0 i32.const 0 i32.store - local.get $6 + local.get $0 i32.const 0 i32.store offset=4 - local.get $6 + local.get $0 i32.const 123 i32.store global.get $~lib/memory/__stack_pointer - local.tee $0 + local.tee $1 i32.const 1056 i32.store - local.get $0 + local.get $1 i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer @@ -2963,268 +3345,83 @@ i32.load i32.const 1 i32.shr_u - local.tee $3 - local.get $3 + local.tee $1 + local.get $1 i32.const 0 i32.gt_s select local.tee $2 i32.const 5 - local.get $3 - local.get $3 + local.get $1 + local.get $1 i32.const 5 i32.gt_s select - local.tee $0 - local.get $0 - local.get $2 - i32.lt_s - select - i32.const 1 - i32.shl - local.tee $1 - local.get $2 - local.get $0 - local.get $0 + local.tee $3 local.get $2 + local.get $3 i32.gt_s select i32.const 1 i32.shl - local.tee $2 - i32.sub - local.tee $0 - i32.eqz - if - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - i32.const 1568 - local.set $5 - br $__inlined_func$~lib/string/String#substring - end - i32.const 0 - local.get $1 + local.tee $4 + local.get $2 local.get $3 - i32.const 1 - i32.shl - i32.eq local.get $2 + local.get $3 + i32.lt_s select - if - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - i32.const 1056 - local.set $5 - br $__inlined_func$~lib/string/String#substring - end - global.get $~lib/memory/__stack_pointer - local.get $0 i32.const 1 - call $~lib/rt/itcms/__new - local.tee $5 - i32.store - local.get $0 - local.set $4 - block $~lib/util/memory/memmove|inlined.0 - local.get $5 - local.tee $0 - local.get $2 - i32.const 1056 - i32.add - local.tee $1 - i32.eq - br_if $~lib/util/memory/memmove|inlined.0 - local.get $1 - local.get $0 - i32.sub - local.get $4 - i32.sub - i32.const 0 - local.get $4 - i32.const 1 - i32.shl - i32.sub - i32.le_u - if - local.get $0 - local.get $1 - local.get $4 - call $~lib/util/memory/memcpy - br $~lib/util/memory/memmove|inlined.0 - end - local.get $0 - local.get $1 - i32.lt_u - if - local.get $1 - i32.const 7 - i32.and - local.get $0 - i32.const 7 - i32.and - i32.eq - if - loop $while-continue|0 - local.get $0 - i32.const 7 - i32.and - if - local.get $4 - i32.eqz - br_if $~lib/util/memory/memmove|inlined.0 - local.get $4 - i32.const 1 - i32.sub - local.set $4 - local.get $0 - local.tee $3 - i32.const 1 - i32.add - local.set $0 - local.get $1 - local.tee $2 - i32.const 1 - i32.add - local.set $1 - local.get $3 - local.get $2 - i32.load8_u - i32.store8 - br $while-continue|0 - end - end - loop $while-continue|1 - local.get $4 - i32.const 8 - i32.ge_u - if - local.get $0 - local.get $1 - i64.load - i64.store - local.get $4 - i32.const 8 - i32.sub - local.set $4 - local.get $0 - i32.const 8 - i32.add - local.set $0 - local.get $1 - i32.const 8 - i32.add - local.set $1 - br $while-continue|1 - end - end - end - loop $while-continue|2 - local.get $4 - if - local.get $0 - local.tee $3 - i32.const 1 - i32.add - local.set $0 - local.get $1 - local.tee $2 - i32.const 1 - i32.add - local.set $1 - local.get $3 - local.get $2 - i32.load8_u - i32.store8 - local.get $4 - i32.const 1 - i32.sub - local.set $4 - br $while-continue|2 - end - end - else - local.get $1 - i32.const 7 - i32.and - local.get $0 - i32.const 7 - i32.and - i32.eq - if - loop $while-continue|3 - local.get $0 - local.get $4 - i32.add - i32.const 7 - i32.and - if - local.get $4 - i32.eqz - br_if $~lib/util/memory/memmove|inlined.0 - local.get $0 - local.get $4 - i32.const 1 - i32.sub - local.tee $4 - i32.add - local.get $1 - local.get $4 - i32.add - i32.load8_u - i32.store8 - br $while-continue|3 - end - end - loop $while-continue|4 - local.get $4 - i32.const 8 - i32.ge_u - if - local.get $0 - local.get $4 - i32.const 8 - i32.sub - local.tee $4 - i32.add - local.get $1 - local.get $4 - i32.add - i64.load - i64.store - br $while-continue|4 - end - end - end - loop $while-continue|5 - local.get $4 - if - local.get $0 - local.get $4 - i32.const 1 - i32.sub - local.tee $4 - i32.add - local.get $1 - local.get $4 - i32.add - i32.load8_u - i32.store8 - br $while-continue|5 - end - end - end + i32.shl + local.tee $2 + i32.sub + local.tee $3 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 1568 + local.set $1 + br $__inlined_func$~lib/string/String#substring + end + i32.const 0 + local.get $4 + local.get $1 + i32.const 1 + i32.shl + i32.eq + local.get $2 + select + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 1056 + local.set $1 + br $__inlined_func$~lib/string/String#substring end global.get $~lib/memory/__stack_pointer + local.get $3 + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $1 + i32.store + local.get $1 + local.get $2 + i32.const 1056 + i32.add + local.get $3 + call $~lib/memory/memory.copy + global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer end - local.get $6 - local.get $5 + local.get $0 + local.get $1 i32.store offset=4 global.get $~lib/memory/__stack_pointer i32.const 8 @@ -3237,7 +3434,7 @@ global.get $~lib/memory/__stack_pointer i64.const 0 i64.store - local.get $6 + local.get $0 i32.load i32.const 123 i32.ne @@ -3251,14 +3448,14 @@ end global.get $~lib/memory/__stack_pointer local.tee $1 - local.get $6 + local.get $0 i32.load offset=4 - local.tee $0 + local.tee $2 i32.store local.get $1 i32.const 1600 i32.store offset=4 - local.get $0 + local.get $2 i32.const 1600 call $~lib/string/String.__eq i32.eqz @@ -3270,7 +3467,7 @@ call $~lib/builtins/abort unreachable end - local.get $6 + local.get $0 call $~lib/rt/tlsf/__free global.get $~lib/memory/__stack_pointer i32.const 8 @@ -3556,18 +3753,18 @@ i32.const 16 i32.const 5 call $~lib/rt/itcms/__new - local.tee $2 + local.tee $0 i32.store - local.get $2 + local.get $0 i32.const 0 i32.store - local.get $2 + local.get $0 i32.const 0 i32.store offset=4 - local.get $2 + local.get $0 i32.const 0 call $~lib/rt/itcms/__link - local.get $2 + local.get $0 f64.const 0 f64.store offset=8 global.get $~lib/memory/__stack_pointer @@ -3575,25 +3772,25 @@ i32.add global.set $~lib/memory/__stack_pointer local.get $1 - local.get $2 + local.get $0 i32.store offset=12 - local.get $2 + local.get $0 i32.const 0 i32.store - local.get $2 + local.get $0 i32.const 1632 i32.store offset=4 - local.get $2 + local.get $0 i32.const 1632 call $~lib/rt/itcms/__link - local.get $2 + local.get $0 f64.const 0 f64.store offset=8 global.get $~lib/memory/__stack_pointer - local.tee $0 - local.get $2 - i32.store + local.tee $1 local.get $0 + i32.store + local.get $1 i32.const 8 i32.sub global.set $~lib/memory/__stack_pointer @@ -3604,7 +3801,7 @@ global.get $~lib/memory/__stack_pointer i64.const 0 i64.store - local.get $2 + local.get $0 i32.load if i32.const 0 @@ -3616,14 +3813,14 @@ end global.get $~lib/memory/__stack_pointer local.tee $1 - local.get $2 + local.get $0 i32.load offset=4 - local.tee $0 + local.tee $2 i32.store local.get $1 i32.const 1632 i32.store offset=4 - local.get $0 + local.get $2 i32.const 1632 call $~lib/string/String.__eq i32.eqz @@ -3635,7 +3832,7 @@ call $~lib/builtins/abort unreachable end - local.get $2 + local.get $0 f64.load offset=8 f64.const 0 f64.ne @@ -3771,213 +3968,33 @@ i32.const 0 i32.store offset=32 global.get $~lib/memory/__stack_pointer - local.tee $1 - local.get $0 - i32.store - local.get $1 - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1772 - i32.lt_s - br_if $folding-inner1 - global.get $~lib/memory/__stack_pointer - local.tee $2 - i64.const 0 - i64.store - local.get $2 - local.get $0 - i32.load - local.tee $1 - i32.store - local.get $2 - i32.const 1664 - i32.store offset=4 - local.get $1 - i32.const 1664 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1504 - i32.const 107 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.tee $2 - local.get $0 - i32.load offset=4 - local.tee $1 - i32.store - local.get $2 - i32.const 1696 - i32.store offset=4 - local.get $1 - i32.const 1696 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1504 - i32.const 108 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.load offset=8 - local.tee $1 - i32.store - local.get $1 - i32.const 0 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1504 - i32.const 109 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.load offset=12 - local.tee $1 - i32.store - local.get $1 - i32.const 0 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1504 - i32.const 110 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.load offset=16 - local.tee $1 - i32.store - local.get $1 - i32.const 0 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1504 - i32.const 111 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.load offset=20 - local.tee $1 - i32.store - local.get $1 - i32.const 0 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1504 - i32.const 112 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.load offset=24 - local.tee $1 - i32.store - local.get $1 - i32.const 0 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1504 - i32.const 113 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer local.get $0 - i32.load offset=28 - local.tee $1 i32.store - local.get $1 - i32.const 0 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1504 - i32.const 114 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load offset=32 - if - i32.const 0 - i32.const 1504 - i32.const 115 - i32.const 3 - call $~lib/builtins/abort - unreachable - end local.get $0 - i32.load offset=36 - i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1504 - i32.const 116 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer + call $object-literal/testOmittedFoo i32.const 18156 global.set $~lib/memory/__stack_pointer global.get $~lib/rt/itcms/state i32.const 0 i32.gt_s if - loop $while-continue|00 + loop $while-continue|0 global.get $~lib/rt/itcms/state if call $~lib/rt/itcms/step drop - br $while-continue|00 + br $while-continue|0 end end end call $~lib/rt/itcms/step drop - loop $while-continue|11 + loop $while-continue|1 global.get $~lib/rt/itcms/state if call $~lib/rt/itcms/step drop - br $while-continue|11 + br $while-continue|1 end end global.get $~lib/rt/itcms/total diff --git a/tests/compiler/optional-typeparameters.optimized.wat b/tests/compiler/optional-typeparameters.optimized.wat index 215d715993..ae79c4847c 100644 --- a/tests/compiler/optional-typeparameters.optimized.wat +++ b/tests/compiler/optional-typeparameters.optimized.wat @@ -1039,7 +1039,7 @@ local.get $0 i32.const 4 i32.add - local.tee $0 + local.tee $1 i32.const 17868 i32.ge_u if @@ -1049,20 +1049,20 @@ call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT - local.get $0 + local.get $1 i32.const 4 i32.sub - local.set $1 - local.get $0 + local.set $0 + local.get $1 i32.const 15 i32.and i32.const 1 - local.get $0 + local.get $1 select if (result i32) i32.const 1 else - local.get $1 + local.get $0 i32.load i32.const 1 i32.and @@ -1075,14 +1075,11 @@ call $~lib/builtins/abort unreachable end - local.get $1 - local.tee $0 + local.get $0 + local.get $0 i32.load i32.const 1 i32.or - local.set $1 - local.get $0 - local.get $1 i32.store local.get $0 call $~lib/rt/tlsf/insertBlock @@ -1095,8 +1092,7 @@ local.tee $0 local.get $0 i32.store offset=4 - global.get $~lib/rt/itcms/toSpace - local.tee $0 + local.get $0 local.get $0 i32.store offset=8 i32.const 0 diff --git a/tests/compiler/reexport.optimized.wat b/tests/compiler/reexport.optimized.wat index d6cf608c9e..8b558154be 100644 --- a/tests/compiler/reexport.optimized.wat +++ b/tests/compiler/reexport.optimized.wat @@ -1116,7 +1116,7 @@ local.get $0 i32.const 4 i32.add - local.tee $0 + local.tee $1 i32.const 17916 i32.ge_u if @@ -1126,20 +1126,20 @@ call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT - local.get $0 + local.get $1 i32.const 4 i32.sub - local.set $1 - local.get $0 + local.set $0 + local.get $1 i32.const 15 i32.and i32.const 1 - local.get $0 + local.get $1 select if (result i32) i32.const 1 else - local.get $1 + local.get $0 i32.load i32.const 1 i32.and @@ -1152,14 +1152,11 @@ call $~lib/builtins/abort unreachable end - local.get $1 - local.tee $0 + local.get $0 + local.get $0 i32.load i32.const 1 i32.or - local.set $1 - local.get $0 - local.get $1 i32.store local.get $0 call $~lib/rt/tlsf/insertBlock @@ -1172,8 +1169,7 @@ local.tee $0 local.get $0 i32.store offset=4 - global.get $~lib/rt/itcms/toSpace - local.tee $0 + local.get $0 local.get $0 i32.store offset=8 i32.const 0 diff --git a/tests/compiler/rereexport.optimized.wat b/tests/compiler/rereexport.optimized.wat index 211ab5d6e7..ead47ecd90 100644 --- a/tests/compiler/rereexport.optimized.wat +++ b/tests/compiler/rereexport.optimized.wat @@ -1078,7 +1078,7 @@ local.get $0 i32.const 4 i32.add - local.tee $0 + local.tee $1 i32.const 17956 i32.ge_u if @@ -1088,20 +1088,20 @@ call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT - local.get $0 + local.get $1 i32.const 4 i32.sub - local.set $1 - local.get $0 + local.set $0 + local.get $1 i32.const 15 i32.and i32.const 1 - local.get $0 + local.get $1 select if (result i32) i32.const 1 else - local.get $1 + local.get $0 i32.load i32.const 1 i32.and @@ -1114,14 +1114,11 @@ call $~lib/builtins/abort unreachable end - local.get $1 - local.tee $0 + local.get $0 + local.get $0 i32.load i32.const 1 i32.or - local.set $1 - local.get $0 - local.get $1 i32.store local.get $0 call $~lib/rt/tlsf/insertBlock @@ -1134,8 +1131,7 @@ local.tee $0 local.get $0 i32.store offset=4 - global.get $~lib/rt/itcms/toSpace - local.tee $0 + local.get $0 local.get $0 i32.store offset=8 i32.const 0 diff --git a/tests/compiler/resolve-access.optimized.wat b/tests/compiler/resolve-access.optimized.wat index e4af9d5ab6..ce63b6552d 100644 --- a/tests/compiler/resolve-access.optimized.wat +++ b/tests/compiler/resolve-access.optimized.wat @@ -1,10 +1,10 @@ (module - (type $none_=>_i32 (func (result i32))) (type $i32_=>_none (func (param i32))) + (type $none_=>_i32 (func (result i32))) (type $none_=>_none (func)) (type $i32_i32_=>_none (func (param i32 i32))) - (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) + (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) (type $i64_=>_i32 (func (param i64) (result i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) @@ -1052,7 +1052,7 @@ local.get $0 i32.const 4 i32.add - local.tee $0 + local.tee $1 i32.const 19732 i32.ge_u if @@ -1062,20 +1062,20 @@ call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT - local.get $0 + local.get $1 i32.const 4 i32.sub - local.set $1 - local.get $0 + local.set $0 + local.get $1 i32.const 15 i32.and i32.const 1 - local.get $0 + local.get $1 select if (result i32) i32.const 1 else - local.get $1 + local.get $0 i32.load i32.const 1 i32.and @@ -1088,14 +1088,11 @@ call $~lib/builtins/abort unreachable end - local.get $1 - local.tee $0 + local.get $0 + local.get $0 i32.load i32.const 1 i32.or - local.set $1 - local.get $0 - local.get $1 i32.store local.get $0 call $~lib/rt/tlsf/insertBlock @@ -1108,8 +1105,7 @@ local.tee $0 local.get $0 i32.store offset=4 - global.get $~lib/rt/itcms/toSpace - local.tee $0 + local.get $0 local.get $0 i32.store offset=8 i32.const 0 @@ -1249,80 +1245,11 @@ end end ) - (func $~lib/rt/itcms/__new (param $0 i32) (param $1 i32) (result i32) + (func $~lib/rt/tlsf/allocateBlock (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) - (local $5 i32) - (local $6 i32) - local.get $0 - i32.const 1073741804 - i32.ge_u - if - i32.const 1088 - i32.const 1152 - i32.const 260 - i32.const 31 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/rt/itcms/total - global.get $~lib/rt/itcms/threshold - i32.ge_u - if - block $__inlined_func$~lib/rt/itcms/interrupt - i32.const 2048 - local.set $2 - loop $do-continue|0 - local.get $2 - call $~lib/rt/itcms/step - i32.sub - local.set $2 - global.get $~lib/rt/itcms/state - i32.eqz - if - global.get $~lib/rt/itcms/total - i64.extend_i32_u - i64.const 200 - i64.mul - i64.const 100 - i64.div_u - i32.wrap_i64 - i32.const 1024 - i32.add - global.set $~lib/rt/itcms/threshold - br $__inlined_func$~lib/rt/itcms/interrupt - end - local.get $2 - i32.const 0 - i32.gt_s - br_if $do-continue|0 - end - global.get $~lib/rt/itcms/total - local.tee $2 - local.get $2 - global.get $~lib/rt/itcms/threshold - i32.sub - i32.const 1024 - i32.lt_u - i32.const 10 - i32.shl - i32.add - global.set $~lib/rt/itcms/threshold - end - end - local.get $0 - i32.const 16 - i32.add - local.set $2 - global.get $~lib/rt/tlsf/ROOT - i32.eqz - if - call $~lib/rt/tlsf/initialize - end - global.get $~lib/rt/tlsf/ROOT - local.set $3 - local.get $2 + local.get $1 i32.const 1073741820 i32.gt_u if @@ -1333,14 +1260,15 @@ call $~lib/builtins/abort unreachable end - local.get $3 - local.get $2 + local.get $0 + local.tee $2 + local.get $1 i32.const 12 i32.le_u if (result i32) i32.const 12 else - local.get $2 + local.get $1 i32.const 19 i32.add i32.const -16 @@ -1348,19 +1276,19 @@ i32.const 4 i32.sub end - local.tee $2 + local.tee $0 call $~lib/rt/tlsf/searchBlock - local.tee $4 + local.tee $1 i32.eqz if - local.get $2 + local.get $0 i32.const 536870910 i32.lt_u if (result i32) - local.get $2 + local.get $0 i32.const 1 i32.const 27 - local.get $2 + local.get $0 i32.clz i32.sub i32.shl @@ -1368,16 +1296,16 @@ i32.sub i32.add else - local.get $2 + local.get $0 end i32.const 4 memory.size - local.tee $6 + local.tee $1 i32.const 16 i32.shl i32.const 4 i32.sub - local.get $3 + local.get $2 i32.load offset=1568 i32.ne i32.shl @@ -1388,18 +1316,18 @@ i32.and i32.const 16 i32.shr_u - local.set $5 - local.get $6 - local.get $5 - local.get $5 - local.get $6 - i32.lt_s + local.set $3 + local.get $1 + local.get $3 + local.get $1 + local.get $3 + i32.gt_s select memory.grow i32.const 0 i32.lt_s if - local.get $5 + local.get $3 memory.grow i32.const 0 i32.lt_s @@ -1407,18 +1335,18 @@ unreachable end end - local.get $3 - local.get $6 + local.get $2 + local.get $1 i32.const 16 i32.shl memory.size i32.const 16 i32.shl call $~lib/rt/tlsf/addMemory - local.get $3 local.get $2 + local.get $0 call $~lib/rt/tlsf/searchBlock - local.tee $4 + local.tee $1 i32.eqz if i32.const 0 @@ -1429,8 +1357,8 @@ unreachable end end - local.get $2 - local.get $4 + local.get $0 + local.get $1 i32.load i32.const -4 i32.and @@ -1443,13 +1371,13 @@ call $~lib/builtins/abort unreachable end - local.get $3 - local.get $4 + local.get $2 + local.get $1 call $~lib/rt/tlsf/removeBlock - local.get $4 + local.get $1 i32.load - local.set $6 - local.get $2 + local.set $3 + local.get $0 i32.const 4 i32.add i32.const 15 @@ -1462,54 +1390,54 @@ call $~lib/builtins/abort unreachable end - local.get $6 + local.get $3 i32.const -4 i32.and - local.get $2 + local.get $0 i32.sub - local.tee $5 + local.tee $4 i32.const 16 i32.ge_u if - local.get $4 - local.get $2 - local.get $6 + local.get $1 + local.get $0 + local.get $3 i32.const 2 i32.and i32.or i32.store - local.get $2 - local.get $4 + local.get $0 + local.get $1 i32.const 4 i32.add i32.add - local.tee $2 - local.get $5 + local.tee $0 + local.get $4 i32.const 4 i32.sub i32.const 1 i32.or i32.store - local.get $3 local.get $2 + local.get $0 call $~lib/rt/tlsf/insertBlock else - local.get $4 - local.get $6 + local.get $1 + local.get $3 i32.const -2 i32.and i32.store - local.get $4 + local.get $1 i32.const 4 i32.add - local.tee $2 - local.get $4 + local.tee $0 + local.get $1 i32.load i32.const -4 i32.and i32.add - local.get $2 - local.get $4 + local.get $0 + local.get $1 i32.load i32.const -4 i32.and @@ -1519,182 +1447,143 @@ i32.and i32.store end - local.get $4 - local.get $1 - i32.store offset=12 - local.get $4 - local.get $0 - i32.store offset=16 - global.get $~lib/rt/itcms/fromSpace - local.tee $1 - i32.load offset=8 - local.set $2 - local.get $4 - local.get $1 - global.get $~lib/rt/itcms/white - i32.or - i32.store offset=4 - local.get $4 - local.get $2 - i32.store offset=8 - local.get $2 - local.get $4 - local.get $2 - i32.load offset=4 - i32.const 3 - i32.and - i32.or - i32.store offset=4 local.get $1 - local.get $4 - i32.store offset=8 - global.get $~lib/rt/itcms/total - local.get $4 - i32.load - i32.const -4 - i32.and - i32.const 4 - i32.add - i32.add - global.set $~lib/rt/itcms/total - local.get $4 - i32.const 20 - i32.add - local.tee $2 - local.set $3 + ) + (func $~lib/memory/memory.fill (param $0 i32) (param $1 i32) + (local $2 i32) block $~lib/util/memory/memset|inlined.0 - local.get $0 + local.get $1 i32.eqz br_if $~lib/util/memory/memset|inlined.0 - local.get $3 + local.get $0 i32.const 0 i32.store8 local.get $0 - local.get $3 + local.get $1 i32.add - local.tee $1 + local.tee $2 i32.const 1 i32.sub i32.const 0 i32.store8 - local.get $0 + local.get $1 i32.const 2 i32.le_u br_if $~lib/util/memory/memset|inlined.0 - local.get $3 + local.get $0 i32.const 0 i32.store8 offset=1 - local.get $3 + local.get $0 i32.const 0 i32.store8 offset=2 - local.get $1 + local.get $2 i32.const 2 i32.sub i32.const 0 i32.store8 - local.get $1 + local.get $2 i32.const 3 i32.sub i32.const 0 i32.store8 - local.get $0 + local.get $1 i32.const 6 i32.le_u br_if $~lib/util/memory/memset|inlined.0 - local.get $3 + local.get $0 i32.const 0 i32.store8 offset=3 - local.get $1 + local.get $2 i32.const 4 i32.sub i32.const 0 i32.store8 - local.get $0 + local.get $1 i32.const 8 i32.le_u br_if $~lib/util/memory/memset|inlined.0 - local.get $3 + local.get $0 i32.const 0 - local.get $3 + local.get $0 i32.sub i32.const 3 i32.and - local.tee $1 + local.tee $2 i32.add - local.tee $5 + local.tee $0 i32.const 0 i32.store - local.get $5 local.get $0 local.get $1 + local.get $2 i32.sub i32.const -4 i32.and - local.tee $3 + local.tee $2 i32.add - local.tee $0 + local.tee $1 i32.const 4 i32.sub i32.const 0 i32.store - local.get $3 + local.get $2 i32.const 8 i32.le_u br_if $~lib/util/memory/memset|inlined.0 - local.get $5 + local.get $0 i32.const 0 i32.store offset=4 - local.get $5 + local.get $0 i32.const 0 i32.store offset=8 - local.get $0 + local.get $1 i32.const 12 i32.sub i32.const 0 i32.store - local.get $0 + local.get $1 i32.const 8 i32.sub i32.const 0 i32.store - local.get $3 + local.get $2 i32.const 24 i32.le_u br_if $~lib/util/memory/memset|inlined.0 - local.get $5 + local.get $0 i32.const 0 i32.store offset=12 - local.get $5 + local.get $0 i32.const 0 i32.store offset=16 - local.get $5 + local.get $0 i32.const 0 i32.store offset=20 - local.get $5 + local.get $0 i32.const 0 i32.store offset=24 - local.get $0 + local.get $1 i32.const 28 i32.sub i32.const 0 i32.store - local.get $0 + local.get $1 i32.const 24 i32.sub i32.const 0 i32.store - local.get $0 + local.get $1 i32.const 20 i32.sub i32.const 0 i32.store - local.get $0 + local.get $1 i32.const 16 i32.sub i32.const 0 i32.store - local.get $5 - local.get $5 + local.get $0 + local.get $0 i32.const 4 i32.and i32.const 24 @@ -1702,7 +1591,7 @@ local.tee $1 i32.add local.set $0 - local.get $3 + local.get $2 local.get $1 i32.sub local.set $1 @@ -1735,7 +1624,123 @@ end end end + ) + (func $~lib/rt/itcms/__new (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + local.get $0 + i32.const 1073741804 + i32.ge_u + if + i32.const 1088 + i32.const 1152 + i32.const 260 + i32.const 31 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.ge_u + if + block $__inlined_func$~lib/rt/itcms/interrupt + i32.const 2048 + local.set $2 + loop $do-continue|0 + local.get $2 + call $~lib/rt/itcms/step + i32.sub + local.set $2 + global.get $~lib/rt/itcms/state + i32.eqz + if + global.get $~lib/rt/itcms/total + i64.extend_i32_u + i64.const 200 + i64.mul + i64.const 100 + i64.div_u + i32.wrap_i64 + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold + br $__inlined_func$~lib/rt/itcms/interrupt + end + local.get $2 + i32.const 0 + i32.gt_s + br_if $do-continue|0 + end + global.get $~lib/rt/itcms/total + local.tee $2 + local.get $2 + global.get $~lib/rt/itcms/threshold + i32.sub + i32.const 1024 + i32.lt_u + i32.const 10 + i32.shl + i32.add + global.set $~lib/rt/itcms/threshold + end + end + local.get $0 + i32.const 16 + i32.add + local.set $2 + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $2 + call $~lib/rt/tlsf/allocateBlock + local.tee $2 + local.get $1 + i32.store offset=12 + local.get $2 + local.get $0 + i32.store offset=16 + global.get $~lib/rt/itcms/fromSpace + local.tee $3 + i32.load offset=8 + local.set $1 + local.get $2 + local.get $3 + global.get $~lib/rt/itcms/white + i32.or + i32.store offset=4 + local.get $2 + local.get $1 + i32.store offset=8 + local.get $1 + local.get $2 + local.get $1 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + local.get $3 + local.get $2 + i32.store offset=8 + global.get $~lib/rt/itcms/total + local.get $2 + i32.load + i32.const -4 + i32.and + i32.const 4 + i32.add + i32.add + global.set $~lib/rt/itcms/total local.get $2 + i32.const 20 + i32.add + local.tee $1 + local.get $0 + call $~lib/memory/memory.fill + local.get $1 ) (func $~lib/util/memory/memcpy (param $0 i32) (local $1 i32) @@ -2499,259 +2504,61 @@ i32.store8 end ) - (func $~lib/util/number/utoa32_dec_lut (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/memory/memory.copy (param $0 i32) + (local $1 i32) + (local $2 i32) (local $3 i32) - loop $while-continue|0 - local.get $1 - i32.const 10000 - i32.ge_u + (local $4 i32) + i32.const 1056 + local.set $3 + i32.const 8 + local.set $4 + block $~lib/util/memory/memmove|inlined.0 + local.get $0 + i32.const 1056 + i32.eq + br_if $~lib/util/memory/memmove|inlined.0 + i32.const 1048 + local.get $0 + i32.sub + i32.const -16 + i32.le_u if - local.get $1 - i32.const 10000 - i32.rem_u - local.set $3 - local.get $1 - i32.const 10000 - i32.div_u - local.set $1 local.get $0 - local.get $2 - i32.const 4 - i32.sub - local.tee $2 - i32.const 1 - i32.shl - i32.add - local.get $3 - i32.const 100 - i32.div_u - i32.const 2 - i32.shl - i32.const 1740 - i32.add - i64.load32_u - local.get $3 - i32.const 100 - i32.rem_u - i32.const 2 - i32.shl - i32.const 1740 - i32.add - i64.load32_u - i64.const 32 - i64.shl - i64.or - i64.store - br $while-continue|0 + call $~lib/util/memory/memcpy + br $~lib/util/memory/memmove|inlined.0 end - end - local.get $1 - i32.const 100 - i32.ge_u - if - local.get $0 - local.get $2 - i32.const 2 - i32.sub - local.tee $2 - i32.const 1 - i32.shl - i32.add - local.get $1 - i32.const 100 - i32.rem_u - i32.const 2 - i32.shl - i32.const 1740 - i32.add - i32.load - i32.store - local.get $1 - i32.const 100 - i32.div_u - local.set $1 - end - local.get $1 - i32.const 10 - i32.ge_u - if local.get $0 - local.get $2 - i32.const 2 - i32.sub - i32.const 1 - i32.shl - i32.add - local.get $1 - i32.const 2 - i32.shl - i32.const 1740 - i32.add - i32.load - i32.store - else - local.get $0 - local.get $2 - i32.const 1 - i32.sub - i32.const 1 - i32.shl - i32.add - local.get $1 - i32.const 48 - i32.add - i32.store16 - end - ) - (func $~lib/rt/__visit_members (param $0 i32) - block $folding-inner0 - block $invalid - block $resolve-access/Container - block $~lib/arraybuffer/ArrayBufferView - block $~lib/string/String - block $~lib/arraybuffer/ArrayBuffer - local.get $0 - i32.const 8 - i32.sub - i32.load - br_table $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $folding-inner0 $folding-inner0 $resolve-access/Container $invalid - end - return - end - return - end - local.get $0 - i32.load - local.tee $0 - if - local.get $0 - call $~lib/rt/itcms/__visit - end - return - end - return - end - unreachable - end - local.get $0 - i32.load - call $~lib/rt/itcms/__visit - ) - (func $~start - memory.size - i32.const 16 - i32.shl - i32.const 19732 - i32.sub - i32.const 1 - i32.shr_u - global.set $~lib/rt/itcms/threshold - i32.const 1204 - i32.const 1200 - i32.store - i32.const 1208 - i32.const 1200 - i32.store - i32.const 1200 - global.set $~lib/rt/itcms/pinSpace - i32.const 1236 - i32.const 1232 - i32.store - i32.const 1240 - i32.const 1232 - i32.store - i32.const 1232 - global.set $~lib/rt/itcms/toSpace - i32.const 1380 - i32.const 1376 - i32.store - i32.const 1384 - i32.const 1376 - i32.store - i32.const 1376 - global.set $~lib/rt/itcms/fromSpace - ) - (func $~lib/rt/__newArray (result i32) - (local $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 3348 - i32.lt_s - if - i32.const 19760 - i32.const 19808 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.tee $5 - i32.const 0 - i32.store - i32.const 1056 - local.set $0 - i32.const 8 - local.set $6 - block $~lib/util/memory/memmove|inlined.0 - i32.const 8 - i32.const 0 - call $~lib/rt/itcms/__new - local.tee $4 - local.tee $3 - i32.const 1056 - i32.eq - br_if $~lib/util/memory/memmove|inlined.0 - i32.const 1048 - local.get $3 - i32.sub - i32.const -16 - i32.le_u - if - local.get $3 - call $~lib/util/memory/memcpy - br $~lib/util/memory/memmove|inlined.0 - end - local.get $3 i32.const 1056 i32.lt_u if - local.get $3 + local.get $0 i32.const 7 i32.and i32.eqz if loop $while-continue|0 - local.get $3 + local.get $0 i32.const 7 i32.and if - local.get $6 + local.get $4 i32.eqz br_if $~lib/util/memory/memmove|inlined.0 - local.get $6 + local.get $4 i32.const 1 i32.sub - local.set $6 - local.get $3 + local.set $4 + local.get $0 local.tee $2 i32.const 1 i32.add - local.set $3 - local.get $0 + local.set $0 + local.get $3 local.tee $1 i32.const 1 i32.add - local.set $0 + local.set $3 local.get $2 local.get $1 i32.load8_u @@ -2760,77 +2567,77 @@ end end loop $while-continue|1 - local.get $6 + local.get $4 i32.const 8 i32.ge_u if - local.get $3 local.get $0 + local.get $3 i64.load i64.store - local.get $6 + local.get $4 i32.const 8 i32.sub - local.set $6 - local.get $3 - i32.const 8 - i32.add - local.set $3 + local.set $4 local.get $0 i32.const 8 i32.add local.set $0 + local.get $3 + i32.const 8 + i32.add + local.set $3 br $while-continue|1 end end end loop $while-continue|2 - local.get $6 + local.get $4 if - local.get $3 + local.get $0 local.tee $2 i32.const 1 i32.add - local.set $3 - local.get $0 + local.set $0 + local.get $3 local.tee $1 i32.const 1 i32.add - local.set $0 + local.set $3 local.get $2 local.get $1 i32.load8_u i32.store8 - local.get $6 + local.get $4 i32.const 1 i32.sub - local.set $6 + local.set $4 br $while-continue|2 end end else - local.get $3 + local.get $0 i32.const 7 i32.and i32.eqz if loop $while-continue|3 - local.get $3 - local.get $6 + local.get $0 + local.get $4 i32.add i32.const 7 i32.and if - local.get $6 + local.get $4 i32.eqz br_if $~lib/util/memory/memmove|inlined.0 - local.get $3 - local.get $6 + local.get $0 + local.get $4 i32.const 1 i32.sub - local.tee $6 + local.tee $4 i32.add - local.get $6 + local.get $4 i32.const 1056 i32.add i32.load8_u @@ -2839,17 +2646,17 @@ end end loop $while-continue|4 - local.get $6 + local.get $4 i32.const 8 i32.ge_u if - local.get $3 - local.get $6 + local.get $0 + local.get $4 i32.const 8 i32.sub - local.tee $6 + local.tee $4 i32.add - local.get $6 + local.get $4 i32.const 1056 i32.add i64.load @@ -2859,15 +2666,15 @@ end end loop $while-continue|5 - local.get $6 + local.get $4 if - local.get $3 - local.get $6 + local.get $0 + local.get $4 i32.const 1 i32.sub - local.tee $6 + local.tee $4 i32.add - local.get $6 + local.get $4 i32.const 1056 i32.add i32.load8_u @@ -2877,81 +2684,178 @@ end end end - local.get $5 - local.get $4 - i32.store - i32.const 16 - i32.const 3 - call $~lib/rt/itcms/__new - local.tee $2 - local.get $4 - i32.store - local.get $4 - local.tee $0 - if - local.get $2 - i32.eqz + ) + (func $~lib/util/number/utoa32_dec_lut (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + loop $while-continue|0 + local.get $1 + i32.const 10000 + i32.ge_u if - i32.const 0 - i32.const 1152 - i32.const 294 - i32.const 14 - call $~lib/builtins/abort - unreachable + local.get $1 + i32.const 10000 + i32.rem_u + local.set $3 + local.get $1 + i32.const 10000 + i32.div_u + local.set $1 + local.get $0 + local.get $2 + i32.const 4 + i32.sub + local.tee $2 + i32.const 1 + i32.shl + i32.add + local.get $3 + i32.const 100 + i32.div_u + i32.const 2 + i32.shl + i32.const 1740 + i32.add + i64.load32_u + local.get $3 + i32.const 100 + i32.rem_u + i32.const 2 + i32.shl + i32.const 1740 + i32.add + i64.load32_u + i64.const 32 + i64.shl + i64.or + i64.store + br $while-continue|0 end - global.get $~lib/rt/itcms/white + end + local.get $1 + i32.const 100 + i32.ge_u + if local.get $0 - i32.const 20 + local.get $2 + i32.const 2 + i32.sub + local.tee $2 + i32.const 1 + i32.shl + i32.add + local.get $1 + i32.const 100 + i32.rem_u + i32.const 2 + i32.shl + i32.const 1740 + i32.add + i32.load + i32.store + local.get $1 + i32.const 100 + i32.div_u + local.set $1 + end + local.get $1 + i32.const 10 + i32.ge_u + if + local.get $0 + local.get $2 + i32.const 2 + i32.sub + i32.const 1 + i32.shl + i32.add + local.get $1 + i32.const 2 + i32.shl + i32.const 1740 + i32.add + i32.load + i32.store + else + local.get $0 + local.get $2 + i32.const 1 i32.sub - local.tee $1 - i32.load offset=4 - i32.const 3 - i32.and - i32.eq - if - local.get $2 - i32.const 20 - i32.sub - i32.load offset=4 - i32.const 3 - i32.and - local.tee $3 - global.get $~lib/rt/itcms/white - i32.eqz - i32.eq - if - local.get $1 - call $~lib/rt/itcms/Object#makeGray - else - global.get $~lib/rt/itcms/state - i32.const 1 - i32.eq - i32.const 0 - local.get $3 - i32.const 3 - i32.eq - select + i32.const 1 + i32.shl + i32.add + local.get $1 + i32.const 48 + i32.add + i32.store16 + end + ) + (func $~lib/rt/__visit_members (param $0 i32) + block $folding-inner0 + block $invalid + block $resolve-access/Container + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $folding-inner0 $folding-inner0 $resolve-access/Container $invalid + end + return + end + return + end + local.get $0 + i32.load + local.tee $0 if - local.get $1 - call $~lib/rt/itcms/Object#makeGray + local.get $0 + call $~lib/rt/itcms/__visit end + return end + return end + unreachable end - local.get $2 local.get $0 - i32.store offset=4 - local.get $2 - i32.const 8 - i32.store offset=8 - local.get $2 + i32.load + call $~lib/rt/itcms/__visit + ) + (func $~start + memory.size + i32.const 16 + i32.shl + i32.const 19732 + i32.sub i32.const 1 - i32.store offset=12 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $2 + i32.shr_u + global.set $~lib/rt/itcms/threshold + i32.const 1204 + i32.const 1200 + i32.store + i32.const 1208 + i32.const 1200 + i32.store + i32.const 1200 + global.set $~lib/rt/itcms/pinSpace + i32.const 1236 + i32.const 1232 + i32.store + i32.const 1240 + i32.const 1232 + i32.store + i32.const 1232 + global.set $~lib/rt/itcms/toSpace + i32.const 1380 + i32.const 1376 + i32.store + i32.const 1384 + i32.const 1376 + i32.store + i32.const 1376 + global.set $~lib/rt/itcms/fromSpace ) (func $~lib/util/number/utoa64 (param $0 i64) (result i32) (local $1 i32) @@ -3203,48 +3107,143 @@ ) (func $resolve-access/arrayAccess (result i32) (local $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 3348 - i32.lt_s - if - i32.const 19760 - i32.const 19808 - i32.const 1 + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 3348 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.tee $2 + i32.const 0 + i32.store + local.get $2 + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 3348 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.tee $0 + i32.const 0 + i32.store + i32.const 8 + i32.const 0 + call $~lib/rt/itcms/__new + local.tee $1 + call $~lib/memory/memory.copy + local.get $0 + local.get $1 + i32.store + i32.const 16 + i32.const 3 + call $~lib/rt/itcms/__new + local.tee $0 + local.get $1 + i32.store + local.get $1 + if + local.get $0 + i32.eqz + if + i32.const 0 + i32.const 1152 + i32.const 294 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/rt/itcms/white + local.get $1 + i32.const 20 + i32.sub + local.tee $3 + i32.load offset=4 + i32.const 3 + i32.and + i32.eq + if + local.get $0 + i32.const 20 + i32.sub + i32.load offset=4 + i32.const 3 + i32.and + local.tee $4 + global.get $~lib/rt/itcms/white + i32.eqz + i32.eq + if + local.get $3 + call $~lib/rt/itcms/Object#makeGray + else + global.get $~lib/rt/itcms/state + i32.const 1 + i32.eq + i32.const 0 + local.get $4 + i32.const 3 + i32.eq + select + if + local.get $3 + call $~lib/rt/itcms/Object#makeGray + end + end + end + end + local.get $0 + local.get $1 + i32.store offset=4 + local.get $0 + i32.const 8 + i32.store offset=8 + local.get $0 i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.tee $0 - i32.const 0 - i32.store - local.get $0 - call $~lib/rt/__newArray - local.tee $0 - i32.store - local.get $0 - i32.load offset=12 - i32.eqz - if - i32.const 1280 - i32.const 1488 - i32.const 99 - i32.const 42 - call $~lib/builtins/abort - unreachable + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + local.get $0 + i32.store + local.get $0 + i32.load offset=12 + i32.eqz + if + i32.const 1280 + i32.const 1488 + i32.const 99 + i32.const 42 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load offset=4 + i64.load + call $~lib/util/number/utoa64 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + return end - local.get $0 - i32.load offset=4 - i64.load - call $~lib/util/number/utoa64 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer + i32.const 19760 + i32.const 19808 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable ) (func $resolve-access/Container#constructor (result i32) (local $0 i32) diff --git a/tests/compiler/resolve-binary.optimized.wat b/tests/compiler/resolve-binary.optimized.wat index 346530940b..189f29a131 100644 --- a/tests/compiler/resolve-binary.optimized.wat +++ b/tests/compiler/resolve-binary.optimized.wat @@ -2,9 +2,9 @@ (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) (type $none_=>_none (func)) (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) + (type $i32_i32_=>_none (func (param i32 i32))) (type $none_=>_i32 (func (result i32))) (type $i32_=>_none (func (param i32))) - (type $i32_i32_=>_none (func (param i32 i32))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) (type $i64_i32_i64_i32_i64_=>_i32 (func (param i64 i32 i64 i32 i64) (result i32))) (type $i32_=>_i32 (func (param i32) (result i32))) @@ -264,7 +264,7 @@ i32.load offset=16 i32.const 1 i32.shr_u - local.tee $4 + local.tee $2 local.get $1 i32.const 20 i32.sub @@ -278,18 +278,15 @@ end block $__inlined_func$~lib/util/string/compareImpl (result i32) local.get $0 - local.set $2 - local.get $1 - local.set $3 - local.get $2 + local.tee $3 i32.const 7 i32.and - local.get $3 + local.get $1 i32.const 7 i32.and i32.or i32.const 1 - local.get $4 + local.get $2 local.tee $0 i32.const 4 i32.ge_u @@ -297,20 +294,20 @@ i32.eqz if loop $do-continue|0 - local.get $2 - i64.load local.get $3 i64.load + local.get $1 + i64.load i64.eq if - local.get $2 - i32.const 8 - i32.add - local.set $2 local.get $3 i32.const 8 i32.add local.set $3 + local.get $1 + i32.const 8 + i32.add + local.set $1 local.get $0 i32.const 4 i32.sub @@ -323,33 +320,33 @@ end loop $while-continue|1 local.get $0 - local.tee $1 + local.tee $2 i32.const 1 i32.sub local.set $0 - local.get $1 + local.get $2 if - local.get $2 - i32.load16_u - local.tee $1 local.get $3 i32.load16_u + local.tee $2 + local.get $1 + i32.load16_u local.tee $4 i32.ne if - local.get $1 + local.get $2 local.get $4 i32.sub br $__inlined_func$~lib/util/string/compareImpl end - local.get $2 - i32.const 2 - i32.add - local.set $2 local.get $3 i32.const 2 i32.add local.set $3 + local.get $1 + i32.const 2 + i32.add + local.set $1 br $while-continue|1 end end @@ -1371,7 +1368,7 @@ local.get $0 i32.const 4 i32.add - local.tee $0 + local.tee $1 i32.const 27676 i32.ge_u if @@ -1381,20 +1378,20 @@ call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT - local.get $0 + local.get $1 i32.const 4 i32.sub - local.set $1 - local.get $0 + local.set $0 + local.get $1 i32.const 15 i32.and i32.const 1 - local.get $0 + local.get $1 select if (result i32) i32.const 1 else - local.get $1 + local.get $0 i32.load i32.const 1 i32.and @@ -1407,14 +1404,11 @@ call $~lib/builtins/abort unreachable end - local.get $1 - local.tee $0 + local.get $0 + local.get $0 i32.load i32.const 1 i32.or - local.set $1 - local.get $0 - local.get $1 i32.store local.get $0 call $~lib/rt/tlsf/insertBlock @@ -1427,8 +1421,7 @@ local.tee $0 local.get $0 i32.store offset=4 - global.get $~lib/rt/itcms/toSpace - local.tee $0 + local.get $0 local.get $0 i32.store offset=8 i32.const 0 @@ -1568,80 +1561,11 @@ end end ) - (func $~lib/rt/itcms/__new (param $0 i32) (param $1 i32) (result i32) + (func $~lib/rt/tlsf/allocateBlock (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) - (local $5 i32) - (local $6 i32) - local.get $0 - i32.const 1073741804 - i32.ge_u - if - i32.const 1440 - i32.const 1504 - i32.const 260 - i32.const 31 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/rt/itcms/total - global.get $~lib/rt/itcms/threshold - i32.ge_u - if - block $__inlined_func$~lib/rt/itcms/interrupt - i32.const 2048 - local.set $2 - loop $do-continue|0 - local.get $2 - call $~lib/rt/itcms/step - i32.sub - local.set $2 - global.get $~lib/rt/itcms/state - i32.eqz - if - global.get $~lib/rt/itcms/total - i64.extend_i32_u - i64.const 200 - i64.mul - i64.const 100 - i64.div_u - i32.wrap_i64 - i32.const 1024 - i32.add - global.set $~lib/rt/itcms/threshold - br $__inlined_func$~lib/rt/itcms/interrupt - end - local.get $2 - i32.const 0 - i32.gt_s - br_if $do-continue|0 - end - global.get $~lib/rt/itcms/total - local.tee $2 - local.get $2 - global.get $~lib/rt/itcms/threshold - i32.sub - i32.const 1024 - i32.lt_u - i32.const 10 - i32.shl - i32.add - global.set $~lib/rt/itcms/threshold - end - end - local.get $0 - i32.const 16 - i32.add - local.set $2 - global.get $~lib/rt/tlsf/ROOT - i32.eqz - if - call $~lib/rt/tlsf/initialize - end - global.get $~lib/rt/tlsf/ROOT - local.set $3 - local.get $2 + local.get $1 i32.const 1073741820 i32.gt_u if @@ -1652,14 +1576,15 @@ call $~lib/builtins/abort unreachable end - local.get $3 - local.get $2 + local.get $0 + local.tee $2 + local.get $1 i32.const 12 i32.le_u if (result i32) i32.const 12 else - local.get $2 + local.get $1 i32.const 19 i32.add i32.const -16 @@ -1667,19 +1592,19 @@ i32.const 4 i32.sub end - local.tee $2 + local.tee $0 call $~lib/rt/tlsf/searchBlock - local.tee $4 + local.tee $1 i32.eqz if - local.get $2 + local.get $0 i32.const 536870910 i32.lt_u if (result i32) - local.get $2 + local.get $0 i32.const 1 i32.const 27 - local.get $2 + local.get $0 i32.clz i32.sub i32.shl @@ -1687,16 +1612,16 @@ i32.sub i32.add else - local.get $2 + local.get $0 end i32.const 4 memory.size - local.tee $6 + local.tee $1 i32.const 16 i32.shl i32.const 4 i32.sub - local.get $3 + local.get $2 i32.load offset=1568 i32.ne i32.shl @@ -1707,18 +1632,18 @@ i32.and i32.const 16 i32.shr_u - local.set $5 - local.get $6 - local.get $5 - local.get $5 - local.get $6 - i32.lt_s + local.set $3 + local.get $1 + local.get $3 + local.get $1 + local.get $3 + i32.gt_s select memory.grow i32.const 0 i32.lt_s if - local.get $5 + local.get $3 memory.grow i32.const 0 i32.lt_s @@ -1726,18 +1651,18 @@ unreachable end end - local.get $3 - local.get $6 + local.get $2 + local.get $1 i32.const 16 i32.shl memory.size i32.const 16 i32.shl call $~lib/rt/tlsf/addMemory - local.get $3 local.get $2 + local.get $0 call $~lib/rt/tlsf/searchBlock - local.tee $4 + local.tee $1 i32.eqz if i32.const 0 @@ -1748,8 +1673,8 @@ unreachable end end - local.get $2 - local.get $4 + local.get $0 + local.get $1 i32.load i32.const -4 i32.and @@ -1762,13 +1687,13 @@ call $~lib/builtins/abort unreachable end - local.get $3 - local.get $4 + local.get $2 + local.get $1 call $~lib/rt/tlsf/removeBlock - local.get $4 + local.get $1 i32.load - local.set $6 - local.get $2 + local.set $3 + local.get $0 i32.const 4 i32.add i32.const 15 @@ -1781,54 +1706,54 @@ call $~lib/builtins/abort unreachable end - local.get $6 + local.get $3 i32.const -4 i32.and - local.get $2 + local.get $0 i32.sub - local.tee $5 + local.tee $4 i32.const 16 i32.ge_u if - local.get $4 - local.get $2 - local.get $6 + local.get $1 + local.get $0 + local.get $3 i32.const 2 i32.and i32.or i32.store - local.get $2 - local.get $4 + local.get $0 + local.get $1 i32.const 4 i32.add i32.add - local.tee $2 - local.get $5 + local.tee $0 + local.get $4 i32.const 4 i32.sub i32.const 1 i32.or i32.store - local.get $3 local.get $2 + local.get $0 call $~lib/rt/tlsf/insertBlock else - local.get $4 - local.get $6 + local.get $1 + local.get $3 i32.const -2 i32.and i32.store - local.get $4 + local.get $1 i32.const 4 i32.add - local.tee $2 - local.get $4 + local.tee $0 + local.get $1 i32.load i32.const -4 i32.and i32.add - local.get $2 - local.get $4 + local.get $0 + local.get $1 i32.load i32.const -4 i32.and @@ -1838,182 +1763,143 @@ i32.and i32.store end - local.get $4 - local.get $1 - i32.store offset=12 - local.get $4 - local.get $0 - i32.store offset=16 - global.get $~lib/rt/itcms/fromSpace - local.tee $1 - i32.load offset=8 - local.set $2 - local.get $4 - local.get $1 - global.get $~lib/rt/itcms/white - i32.or - i32.store offset=4 - local.get $4 - local.get $2 - i32.store offset=8 - local.get $2 - local.get $4 - local.get $2 - i32.load offset=4 - i32.const 3 - i32.and - i32.or - i32.store offset=4 local.get $1 - local.get $4 - i32.store offset=8 - global.get $~lib/rt/itcms/total - local.get $4 - i32.load - i32.const -4 - i32.and - i32.const 4 - i32.add - i32.add - global.set $~lib/rt/itcms/total - local.get $4 - i32.const 20 - i32.add - local.tee $2 - local.set $3 + ) + (func $~lib/memory/memory.fill (param $0 i32) (param $1 i32) + (local $2 i32) block $~lib/util/memory/memset|inlined.0 - local.get $0 + local.get $1 i32.eqz br_if $~lib/util/memory/memset|inlined.0 - local.get $3 + local.get $0 i32.const 0 i32.store8 local.get $0 - local.get $3 + local.get $1 i32.add - local.tee $1 + local.tee $2 i32.const 1 i32.sub i32.const 0 i32.store8 - local.get $0 + local.get $1 i32.const 2 i32.le_u br_if $~lib/util/memory/memset|inlined.0 - local.get $3 + local.get $0 i32.const 0 i32.store8 offset=1 - local.get $3 + local.get $0 i32.const 0 i32.store8 offset=2 - local.get $1 + local.get $2 i32.const 2 i32.sub i32.const 0 i32.store8 - local.get $1 + local.get $2 i32.const 3 i32.sub i32.const 0 i32.store8 - local.get $0 + local.get $1 i32.const 6 i32.le_u br_if $~lib/util/memory/memset|inlined.0 - local.get $3 + local.get $0 i32.const 0 i32.store8 offset=3 - local.get $1 + local.get $2 i32.const 4 i32.sub i32.const 0 i32.store8 - local.get $0 + local.get $1 i32.const 8 i32.le_u br_if $~lib/util/memory/memset|inlined.0 - local.get $3 + local.get $0 i32.const 0 - local.get $3 + local.get $0 i32.sub i32.const 3 i32.and - local.tee $1 + local.tee $2 i32.add - local.tee $5 + local.tee $0 i32.const 0 i32.store - local.get $5 local.get $0 local.get $1 + local.get $2 i32.sub i32.const -4 i32.and - local.tee $3 + local.tee $2 i32.add - local.tee $0 + local.tee $1 i32.const 4 i32.sub i32.const 0 i32.store - local.get $3 + local.get $2 i32.const 8 i32.le_u br_if $~lib/util/memory/memset|inlined.0 - local.get $5 + local.get $0 i32.const 0 i32.store offset=4 - local.get $5 + local.get $0 i32.const 0 i32.store offset=8 - local.get $0 + local.get $1 i32.const 12 i32.sub i32.const 0 i32.store - local.get $0 + local.get $1 i32.const 8 i32.sub i32.const 0 i32.store - local.get $3 + local.get $2 i32.const 24 i32.le_u br_if $~lib/util/memory/memset|inlined.0 - local.get $5 + local.get $0 i32.const 0 i32.store offset=12 - local.get $5 + local.get $0 i32.const 0 i32.store offset=16 - local.get $5 + local.get $0 i32.const 0 i32.store offset=20 - local.get $5 + local.get $0 i32.const 0 i32.store offset=24 - local.get $0 + local.get $1 i32.const 28 i32.sub i32.const 0 i32.store - local.get $0 + local.get $1 i32.const 24 i32.sub i32.const 0 i32.store - local.get $0 + local.get $1 i32.const 20 i32.sub i32.const 0 i32.store - local.get $0 + local.get $1 i32.const 16 i32.sub i32.const 0 i32.store - local.get $5 - local.get $5 + local.get $0 + local.get $0 i32.const 4 i32.and i32.const 24 @@ -2021,7 +1907,7 @@ local.tee $1 i32.add local.set $0 - local.get $3 + local.get $2 local.get $1 i32.sub local.set $1 @@ -2054,7 +1940,123 @@ end end end + ) + (func $~lib/rt/itcms/__new (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + local.get $0 + i32.const 1073741804 + i32.ge_u + if + i32.const 1440 + i32.const 1504 + i32.const 260 + i32.const 31 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.ge_u + if + block $__inlined_func$~lib/rt/itcms/interrupt + i32.const 2048 + local.set $2 + loop $do-continue|0 + local.get $2 + call $~lib/rt/itcms/step + i32.sub + local.set $2 + global.get $~lib/rt/itcms/state + i32.eqz + if + global.get $~lib/rt/itcms/total + i64.extend_i32_u + i64.const 200 + i64.mul + i64.const 100 + i64.div_u + i32.wrap_i64 + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold + br $__inlined_func$~lib/rt/itcms/interrupt + end + local.get $2 + i32.const 0 + i32.gt_s + br_if $do-continue|0 + end + global.get $~lib/rt/itcms/total + local.tee $2 + local.get $2 + global.get $~lib/rt/itcms/threshold + i32.sub + i32.const 1024 + i32.lt_u + i32.const 10 + i32.shl + i32.add + global.set $~lib/rt/itcms/threshold + end + end + local.get $0 + i32.const 16 + i32.add + local.set $2 + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $2 + call $~lib/rt/tlsf/allocateBlock + local.tee $2 + local.get $1 + i32.store offset=12 local.get $2 + local.get $0 + i32.store offset=16 + global.get $~lib/rt/itcms/fromSpace + local.tee $3 + i32.load offset=8 + local.set $1 + local.get $2 + local.get $3 + global.get $~lib/rt/itcms/white + i32.or + i32.store offset=4 + local.get $2 + local.get $1 + i32.store offset=8 + local.get $1 + local.get $2 + local.get $1 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + local.get $3 + local.get $2 + i32.store offset=8 + global.get $~lib/rt/itcms/total + local.get $2 + i32.load + i32.const -4 + i32.and + i32.const 4 + i32.add + i32.add + global.set $~lib/rt/itcms/total + local.get $2 + i32.const 20 + i32.add + local.tee $1 + local.get $0 + call $~lib/memory/memory.fill + local.get $1 ) (func $~lib/util/number/utoa32_dec_lut (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) @@ -3871,11 +3873,11 @@ ) (func $~lib/number/F64#toString (result i32) (local $0 i64) - (local $1 i64) + (local $1 i32) (local $2 i64) - (local $3 i32) - (local $4 i32) - (local $5 i64) + (local $3 i64) + (local $4 i64) + (local $5 i32) global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub @@ -3919,18 +3921,18 @@ i64.const 32 i64.shr_u i64.add - local.set $1 + local.set $3 local.get $2 i64.const 31 i64.shl local.get $0 i64.const 31 i64.shl - local.tee $5 + local.tee $4 i64.const 32 i64.shr_u i64.add - local.get $5 + local.get $4 i64.const 4294967295 i64.and i64.const 2147483647 @@ -3939,17 +3941,17 @@ i64.shr_u i64.add global.get $~lib/util/number/_exp_pow - local.tee $4 + local.tee $1 i32.const 3 i32.add local.get $2 i64.const 31 i64.shl - local.get $1 + local.get $3 i64.const 32 i64.shr_u i64.add - local.get $1 + local.get $3 i64.const 4294967295 i64.and local.get $2 @@ -3963,11 +3965,11 @@ i64.add i64.const 1 i64.sub - local.tee $1 - local.get $4 + local.tee $3 + local.get $1 i32.const 3 i32.add - local.get $1 + local.get $3 local.get $2 i64.const 2147483647 i64.mul @@ -3980,14 +3982,14 @@ i64.const 32 i64.shr_u i64.add - local.tee $1 + local.tee $0 i64.const 32 i64.shr_u i64.add local.get $2 i64.const 4294966784 i64.mul - local.get $1 + local.get $0 i64.const 4294967295 i64.and i64.add @@ -4002,25 +4004,25 @@ call $~lib/util/number/genDigits global.get $~lib/util/number/_K call $~lib/util/number/prettify - local.set $3 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $3 + local.get $1 i32.const 1 i32.shl - local.tee $4 + local.tee $5 i32.const 1 call $~lib/rt/itcms/__new - local.tee $3 + local.tee $1 i32.store - local.get $3 + local.get $1 i32.const 9760 - local.get $4 + local.get $5 call $~lib/memory/memory.copy global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $3 + local.get $1 ) (func $~lib/rt/__visit_members (param $0 i32) block $invalid diff --git a/tests/compiler/resolve-elementaccess.optimized.wat b/tests/compiler/resolve-elementaccess.optimized.wat index f028db980e..643b3da75c 100644 --- a/tests/compiler/resolve-elementaccess.optimized.wat +++ b/tests/compiler/resolve-elementaccess.optimized.wat @@ -1,6 +1,6 @@ (module - (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) + (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) (type $none_=>_none (func)) (type $i32_i32_=>_none (func (param i32 i32))) (type $i32_=>_none (func (param i32))) @@ -1104,7 +1104,7 @@ local.get $0 i32.const 4 i32.add - local.tee $0 + local.tee $1 i32.const 21236 i32.ge_u if @@ -1114,20 +1114,20 @@ call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT - local.get $0 + local.get $1 i32.const 4 i32.sub - local.set $1 - local.get $0 + local.set $0 + local.get $1 i32.const 15 i32.and i32.const 1 - local.get $0 + local.get $1 select if (result i32) i32.const 1 else - local.get $1 + local.get $0 i32.load i32.const 1 i32.and @@ -1140,14 +1140,11 @@ call $~lib/builtins/abort unreachable end - local.get $1 - local.tee $0 + local.get $0 + local.get $0 i32.load i32.const 1 i32.or - local.set $1 - local.get $0 - local.get $1 i32.store local.get $0 call $~lib/rt/tlsf/insertBlock @@ -1160,8 +1157,7 @@ local.tee $0 local.get $0 i32.store offset=4 - global.get $~lib/rt/itcms/toSpace - local.tee $0 + local.get $0 local.get $0 i32.store offset=8 i32.const 0 @@ -1301,6 +1297,210 @@ end end ) + (func $~lib/rt/tlsf/allocateBlock (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + local.get $1 + i32.const 1073741820 + i32.gt_u + if + i32.const 1168 + i32.const 1504 + i32.const 458 + i32.const 29 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.tee $2 + local.get $1 + i32.const 12 + i32.le_u + if (result i32) + i32.const 12 + else + local.get $1 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + end + local.tee $0 + call $~lib/rt/tlsf/searchBlock + local.tee $1 + i32.eqz + if + local.get $0 + i32.const 536870910 + i32.lt_u + if (result i32) + local.get $0 + i32.const 1 + i32.const 27 + local.get $0 + i32.clz + i32.sub + i32.shl + i32.const 1 + i32.sub + i32.add + else + local.get $0 + end + i32.const 4 + memory.size + local.tee $1 + i32.const 16 + i32.shl + i32.const 4 + i32.sub + local.get $2 + i32.load offset=1568 + i32.ne + i32.shl + i32.add + i32.const 65535 + i32.add + i32.const -65536 + i32.and + i32.const 16 + i32.shr_u + local.set $3 + local.get $1 + local.get $3 + local.get $1 + local.get $3 + i32.gt_s + select + memory.grow + i32.const 0 + i32.lt_s + if + local.get $3 + memory.grow + i32.const 0 + i32.lt_s + if + unreachable + end + end + local.get $2 + local.get $1 + i32.const 16 + i32.shl + memory.size + i32.const 16 + i32.shl + call $~lib/rt/tlsf/addMemory + local.get $2 + local.get $0 + call $~lib/rt/tlsf/searchBlock + local.tee $1 + i32.eqz + if + i32.const 0 + i32.const 1504 + i32.const 496 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + end + local.get $0 + local.get $1 + i32.load + i32.const -4 + i32.and + i32.gt_u + if + i32.const 0 + i32.const 1504 + i32.const 498 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.get $1 + call $~lib/rt/tlsf/removeBlock + local.get $1 + i32.load + local.set $3 + local.get $0 + i32.const 4 + i32.add + i32.const 15 + i32.and + if + i32.const 0 + i32.const 1504 + i32.const 357 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const -4 + i32.and + local.get $0 + i32.sub + local.tee $4 + i32.const 16 + i32.ge_u + if + local.get $1 + local.get $0 + local.get $3 + i32.const 2 + i32.and + i32.or + i32.store + local.get $0 + local.get $1 + i32.const 4 + i32.add + i32.add + local.tee $0 + local.get $4 + i32.const 4 + i32.sub + i32.const 1 + i32.or + i32.store + local.get $2 + local.get $0 + call $~lib/rt/tlsf/insertBlock + else + local.get $1 + local.get $3 + i32.const -2 + i32.and + i32.store + local.get $1 + i32.const 4 + i32.add + local.tee $0 + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.get $0 + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + i32.load + i32.const -3 + i32.and + i32.store + end + local.get $1 + ) (func $~lib/memory/memory.fill (param $0 i32) (param $1 i32) (local $2 i32) block $~lib/util/memory/memset|inlined.0 @@ -1480,9 +1680,6 @@ (func $~lib/rt/itcms/__new (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) local.get $0 i32.const 1073741804 i32.ge_u @@ -1500,12 +1697,12 @@ if block $__inlined_func$~lib/rt/itcms/interrupt i32.const 2048 - local.set $3 + local.set $2 loop $do-continue|0 - local.get $3 + local.get $2 call $~lib/rt/itcms/step i32.sub - local.set $3 + local.set $2 global.get $~lib/rt/itcms/state i32.eqz if @@ -1521,14 +1718,14 @@ global.set $~lib/rt/itcms/threshold br $__inlined_func$~lib/rt/itcms/interrupt end - local.get $3 + local.get $2 i32.const 0 i32.gt_s br_if $do-continue|0 end global.get $~lib/rt/itcms/total - local.tee $3 - local.get $3 + local.tee $2 + local.get $2 global.get $~lib/rt/itcms/threshold i32.sub i32.const 1024 @@ -1542,230 +1739,35 @@ local.get $0 i32.const 16 i32.add - local.set $6 + local.set $2 global.get $~lib/rt/tlsf/ROOT i32.eqz if call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT - local.get $6 - i32.const 1073741820 - i32.gt_u - if - i32.const 1168 - i32.const 1504 - i32.const 458 - i32.const 29 - call $~lib/builtins/abort - unreachable - end - local.tee $2 - local.get $6 - i32.const 12 - i32.le_u - if (result i32) - i32.const 12 - else - local.get $6 - i32.const 19 - i32.add - i32.const -16 - i32.and - i32.const 4 - i32.sub - end - local.tee $3 - call $~lib/rt/tlsf/searchBlock - local.tee $6 - i32.eqz - if - local.get $3 - i32.const 536870910 - i32.lt_u - if (result i32) - local.get $3 - i32.const 1 - i32.const 27 - local.get $3 - i32.clz - i32.sub - i32.shl - i32.const 1 - i32.sub - i32.add - else - local.get $3 - end - i32.const 4 - memory.size - local.tee $6 - i32.const 16 - i32.shl - i32.const 4 - i32.sub - local.get $2 - i32.load offset=1568 - i32.ne - i32.shl - i32.add - i32.const 65535 - i32.add - i32.const -65536 - i32.and - i32.const 16 - i32.shr_u - local.set $5 - local.get $6 - local.get $5 - local.get $5 - local.get $6 - i32.lt_s - select - memory.grow - i32.const 0 - i32.lt_s - if - local.get $5 - memory.grow - i32.const 0 - i32.lt_s - if - unreachable - end - end - local.get $2 - local.get $6 - i32.const 16 - i32.shl - memory.size - i32.const 16 - i32.shl - call $~lib/rt/tlsf/addMemory - local.get $2 - local.get $3 - call $~lib/rt/tlsf/searchBlock - local.tee $6 - i32.eqz - if - i32.const 0 - i32.const 1504 - i32.const 496 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - end - local.get $3 - local.get $6 - i32.load - i32.const -4 - i32.and - i32.gt_u - if - i32.const 0 - i32.const 1504 - i32.const 498 - i32.const 14 - call $~lib/builtins/abort - unreachable - end local.get $2 - local.get $6 - call $~lib/rt/tlsf/removeBlock - local.get $6 - i32.load - local.set $5 - local.get $3 - i32.const 4 - i32.add - i32.const 15 - i32.and - if - i32.const 0 - i32.const 1504 - i32.const 357 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $5 - i32.const -4 - i32.and - local.get $3 - i32.sub - local.tee $4 - i32.const 16 - i32.ge_u - if - local.get $6 - local.get $3 - local.get $5 - i32.const 2 - i32.and - i32.or - i32.store - local.get $3 - local.get $6 - i32.const 4 - i32.add - i32.add - local.tee $3 - local.get $4 - i32.const 4 - i32.sub - i32.const 1 - i32.or - i32.store - local.get $2 - local.get $3 - call $~lib/rt/tlsf/insertBlock - else - local.get $6 - local.get $5 - i32.const -2 - i32.and - i32.store - local.get $6 - i32.const 4 - i32.add - local.tee $3 - local.get $6 - i32.load - i32.const -4 - i32.and - i32.add - local.get $3 - local.get $6 - i32.load - i32.const -4 - i32.and - i32.add - i32.load - i32.const -3 - i32.and - i32.store - end - local.get $6 + call $~lib/rt/tlsf/allocateBlock + local.tee $2 local.get $1 i32.store offset=12 - local.get $6 + local.get $2 local.get $0 i32.store offset=16 global.get $~lib/rt/itcms/fromSpace local.tee $3 i32.load offset=8 local.set $1 - local.get $6 + local.get $2 local.get $3 global.get $~lib/rt/itcms/white i32.or i32.store offset=4 - local.get $6 + local.get $2 local.get $1 i32.store offset=8 local.get $1 - local.get $6 + local.get $2 local.get $1 i32.load offset=4 i32.const 3 @@ -1773,10 +1775,10 @@ i32.or i32.store offset=4 local.get $3 - local.get $6 + local.get $2 i32.store offset=8 global.get $~lib/rt/itcms/total - local.get $6 + local.get $2 i32.load i32.const -4 i32.and @@ -1784,7 +1786,7 @@ i32.add i32.add global.set $~lib/rt/itcms/total - local.get $6 + local.get $2 i32.const 20 i32.add local.tee $1 @@ -4116,7 +4118,7 @@ i32.load offset=16 i32.const 1 i32.shr_u - local.tee $4 + local.tee $2 local.get $1 i32.const 20 i32.sub @@ -4130,18 +4132,15 @@ end block $__inlined_func$~lib/util/string/compareImpl (result i32) local.get $0 - local.set $2 - local.get $1 - local.set $3 - local.get $2 + local.tee $3 i32.const 7 i32.and - local.get $3 + local.get $1 i32.const 7 i32.and i32.or i32.const 1 - local.get $4 + local.get $2 local.tee $0 i32.const 4 i32.ge_u @@ -4149,20 +4148,20 @@ i32.eqz if loop $do-continue|0 - local.get $2 - i64.load local.get $3 i64.load + local.get $1 + i64.load i64.eq if - local.get $2 - i32.const 8 - i32.add - local.set $2 local.get $3 i32.const 8 i32.add local.set $3 + local.get $1 + i32.const 8 + i32.add + local.set $1 local.get $0 i32.const 4 i32.sub @@ -4175,33 +4174,33 @@ end loop $while-continue|1 local.get $0 - local.tee $1 + local.tee $2 i32.const 1 i32.sub local.set $0 - local.get $1 + local.get $2 if - local.get $2 - i32.load16_u - local.tee $1 local.get $3 i32.load16_u + local.tee $2 + local.get $1 + i32.load16_u local.tee $4 i32.ne if - local.get $1 + local.get $2 local.get $4 i32.sub br $__inlined_func$~lib/util/string/compareImpl end - local.get $2 - i32.const 2 - i32.add - local.set $2 local.get $3 i32.const 2 i32.add local.set $3 + local.get $1 + i32.const 2 + i32.add + local.set $1 br $while-continue|1 end end diff --git a/tests/compiler/resolve-function-expression.optimized.wat b/tests/compiler/resolve-function-expression.optimized.wat index 6b1d64e078..ef217d5714 100644 --- a/tests/compiler/resolve-function-expression.optimized.wat +++ b/tests/compiler/resolve-function-expression.optimized.wat @@ -1,12 +1,12 @@ (module (type $i32_=>_i32 (func (param i32) (result i32))) (type $none_=>_none (func)) - (type $i32_=>_none (func (param i32))) (type $i32_i32_=>_none (func (param i32 i32))) + (type $i32_=>_none (func (param i32))) + (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) (type $none_=>_i32 (func (result i32))) - (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) (global $~lib/rt/itcms/threshold (mut i32) (i32.const 0)) @@ -1067,7 +1067,7 @@ local.get $0 i32.const 4 i32.add - local.tee $0 + local.tee $1 i32.const 19844 i32.ge_u if @@ -1077,20 +1077,20 @@ call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT - local.get $0 + local.get $1 i32.const 4 i32.sub - local.set $1 - local.get $0 + local.set $0 + local.get $1 i32.const 15 i32.and i32.const 1 - local.get $0 + local.get $1 select if (result i32) i32.const 1 else - local.get $1 + local.get $0 i32.load i32.const 1 i32.and @@ -1103,14 +1103,11 @@ call $~lib/builtins/abort unreachable end - local.get $1 - local.tee $0 + local.get $0 + local.get $0 i32.load i32.const 1 i32.or - local.set $1 - local.get $0 - local.get $1 i32.store local.get $0 call $~lib/rt/tlsf/insertBlock @@ -1123,8 +1120,7 @@ local.tee $0 local.get $0 i32.store offset=4 - global.get $~lib/rt/itcms/toSpace - local.tee $0 + local.get $0 local.get $0 i32.store offset=8 i32.const 0 @@ -1264,79 +1260,10 @@ end end ) - (func $~lib/rt/itcms/__new (param $0 i32) (result i32) - (local $1 i32) + (func $~lib/rt/tlsf/allocateBlock (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) - (local $5 i32) - local.get $0 - i32.const 1073741804 - i32.ge_u - if - i32.const 1456 - i32.const 1520 - i32.const 260 - i32.const 31 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/rt/itcms/total - global.get $~lib/rt/itcms/threshold - i32.ge_u - if - block $__inlined_func$~lib/rt/itcms/interrupt - i32.const 2048 - local.set $1 - loop $do-continue|0 - local.get $1 - call $~lib/rt/itcms/step - i32.sub - local.set $1 - global.get $~lib/rt/itcms/state - i32.eqz - if - global.get $~lib/rt/itcms/total - i64.extend_i32_u - i64.const 200 - i64.mul - i64.const 100 - i64.div_u - i32.wrap_i64 - i32.const 1024 - i32.add - global.set $~lib/rt/itcms/threshold - br $__inlined_func$~lib/rt/itcms/interrupt - end - local.get $1 - i32.const 0 - i32.gt_s - br_if $do-continue|0 - end - global.get $~lib/rt/itcms/total - local.tee $1 - local.get $1 - global.get $~lib/rt/itcms/threshold - i32.sub - i32.const 1024 - i32.lt_u - i32.const 10 - i32.shl - i32.add - global.set $~lib/rt/itcms/threshold - end - end - local.get $0 - i32.const 16 - i32.add - local.set $1 - global.get $~lib/rt/tlsf/ROOT - i32.eqz - if - call $~lib/rt/tlsf/initialize - end - global.get $~lib/rt/tlsf/ROOT - local.set $5 local.get $1 i32.const 1073741820 i32.gt_u @@ -1348,7 +1275,8 @@ call $~lib/builtins/abort unreachable end - local.get $5 + local.get $0 + local.tee $2 local.get $1 i32.const 12 i32.le_u @@ -1363,19 +1291,19 @@ i32.const 4 i32.sub end - local.tee $1 + local.tee $0 call $~lib/rt/tlsf/searchBlock - local.tee $2 + local.tee $1 i32.eqz if - local.get $1 + local.get $0 i32.const 536870910 i32.lt_u if (result i32) - local.get $1 + local.get $0 i32.const 1 i32.const 27 - local.get $1 + local.get $0 i32.clz i32.sub i32.shl @@ -1383,16 +1311,16 @@ i32.sub i32.add else - local.get $1 + local.get $0 end i32.const 4 memory.size - local.tee $3 + local.tee $1 i32.const 16 i32.shl i32.const 4 i32.sub - local.get $5 + local.get $2 i32.load offset=1568 i32.ne i32.shl @@ -1403,18 +1331,18 @@ i32.and i32.const 16 i32.shr_u - local.set $4 + local.set $3 + local.get $1 local.get $3 - local.get $4 + local.get $1 local.get $3 - local.get $4 i32.gt_s select memory.grow i32.const 0 i32.lt_s if - local.get $4 + local.get $3 memory.grow i32.const 0 i32.lt_s @@ -1422,18 +1350,18 @@ unreachable end end - local.get $5 - local.get $3 + local.get $2 + local.get $1 i32.const 16 i32.shl memory.size i32.const 16 i32.shl call $~lib/rt/tlsf/addMemory - local.get $5 - local.get $1 + local.get $2 + local.get $0 call $~lib/rt/tlsf/searchBlock - local.tee $2 + local.tee $1 i32.eqz if i32.const 0 @@ -1444,8 +1372,8 @@ unreachable end end + local.get $0 local.get $1 - local.get $2 i32.load i32.const -4 i32.and @@ -1458,13 +1386,13 @@ call $~lib/builtins/abort unreachable end - local.get $5 local.get $2 + local.get $1 call $~lib/rt/tlsf/removeBlock - local.get $2 + local.get $1 i32.load local.set $3 - local.get $1 + local.get $0 i32.const 4 i32.add i32.const 15 @@ -1480,51 +1408,51 @@ local.get $3 i32.const -4 i32.and - local.get $1 + local.get $0 i32.sub local.tee $4 i32.const 16 i32.ge_u if - local.get $2 local.get $1 + local.get $0 local.get $3 i32.const 2 i32.and i32.or i32.store + local.get $0 local.get $1 - local.get $2 i32.const 4 i32.add i32.add - local.tee $1 + local.tee $0 local.get $4 i32.const 4 i32.sub i32.const 1 i32.or i32.store - local.get $5 - local.get $1 + local.get $2 + local.get $0 call $~lib/rt/tlsf/insertBlock else - local.get $2 + local.get $1 local.get $3 i32.const -2 i32.and i32.store - local.get $2 + local.get $1 i32.const 4 i32.add - local.tee $1 - local.get $2 + local.tee $0 + local.get $1 i32.load i32.const -4 i32.and i32.add + local.get $0 local.get $1 - local.get $2 i32.load i32.const -4 i32.and @@ -1534,182 +1462,143 @@ i32.and i32.store end - local.get $2 - i32.const 1 - i32.store offset=12 - local.get $2 - local.get $0 - i32.store offset=16 - global.get $~lib/rt/itcms/fromSpace - local.tee $1 - i32.load offset=8 - local.set $5 - local.get $2 - local.get $1 - global.get $~lib/rt/itcms/white - i32.or - i32.store offset=4 - local.get $2 - local.get $5 - i32.store offset=8 - local.get $5 - local.get $2 - local.get $5 - i32.load offset=4 - i32.const 3 - i32.and - i32.or - i32.store offset=4 local.get $1 - local.get $2 - i32.store offset=8 - global.get $~lib/rt/itcms/total - local.get $2 - i32.load - i32.const -4 - i32.and - i32.const 4 - i32.add - i32.add - global.set $~lib/rt/itcms/total - local.get $2 - i32.const 20 - i32.add - local.tee $5 - local.set $4 + ) + (func $~lib/memory/memory.fill (param $0 i32) (param $1 i32) + (local $2 i32) block $~lib/util/memory/memset|inlined.0 - local.get $0 + local.get $1 i32.eqz br_if $~lib/util/memory/memset|inlined.0 - local.get $4 + local.get $0 i32.const 0 i32.store8 local.get $0 - local.get $4 + local.get $1 i32.add - local.tee $1 + local.tee $2 i32.const 1 i32.sub i32.const 0 i32.store8 - local.get $0 + local.get $1 i32.const 2 i32.le_u br_if $~lib/util/memory/memset|inlined.0 - local.get $4 + local.get $0 i32.const 0 i32.store8 offset=1 - local.get $4 + local.get $0 i32.const 0 i32.store8 offset=2 - local.get $1 + local.get $2 i32.const 2 i32.sub i32.const 0 i32.store8 - local.get $1 + local.get $2 i32.const 3 i32.sub i32.const 0 i32.store8 - local.get $0 + local.get $1 i32.const 6 i32.le_u br_if $~lib/util/memory/memset|inlined.0 - local.get $4 + local.get $0 i32.const 0 i32.store8 offset=3 - local.get $1 + local.get $2 i32.const 4 i32.sub i32.const 0 i32.store8 - local.get $0 + local.get $1 i32.const 8 i32.le_u br_if $~lib/util/memory/memset|inlined.0 - local.get $4 + local.get $0 i32.const 0 - local.get $4 + local.get $0 i32.sub i32.const 3 i32.and - local.tee $1 + local.tee $2 i32.add - local.tee $3 + local.tee $0 i32.const 0 i32.store - local.get $3 local.get $0 local.get $1 + local.get $2 i32.sub i32.const -4 i32.and - local.tee $4 + local.tee $2 i32.add - local.tee $0 + local.tee $1 i32.const 4 i32.sub i32.const 0 i32.store - local.get $4 + local.get $2 i32.const 8 i32.le_u br_if $~lib/util/memory/memset|inlined.0 - local.get $3 + local.get $0 i32.const 0 i32.store offset=4 - local.get $3 + local.get $0 i32.const 0 i32.store offset=8 - local.get $0 + local.get $1 i32.const 12 i32.sub i32.const 0 i32.store - local.get $0 + local.get $1 i32.const 8 i32.sub i32.const 0 i32.store - local.get $4 + local.get $2 i32.const 24 i32.le_u br_if $~lib/util/memory/memset|inlined.0 - local.get $3 + local.get $0 i32.const 0 i32.store offset=12 - local.get $3 + local.get $0 i32.const 0 i32.store offset=16 - local.get $3 + local.get $0 i32.const 0 i32.store offset=20 - local.get $3 + local.get $0 i32.const 0 i32.store offset=24 - local.get $0 + local.get $1 i32.const 28 i32.sub i32.const 0 i32.store - local.get $0 + local.get $1 i32.const 24 i32.sub i32.const 0 i32.store - local.get $0 + local.get $1 i32.const 20 i32.sub i32.const 0 i32.store - local.get $0 + local.get $1 i32.const 16 i32.sub i32.const 0 i32.store - local.get $3 - local.get $3 + local.get $0 + local.get $0 i32.const 4 i32.and i32.const 24 @@ -1717,7 +1606,7 @@ local.tee $1 i32.add local.set $0 - local.get $4 + local.get $2 local.get $1 i32.sub local.set $1 @@ -1750,7 +1639,6 @@ end end end - local.get $5 ) (func $~lib/rt/__visit_members (param $0 i32) block $invalid @@ -1790,6 +1678,9 @@ (local $2 i32) (local $3 i32) (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) global.get $~lib/memory/__stack_pointer i32.const 8 i32.sub @@ -1866,7 +1757,7 @@ i32.const 1200 i32.load call_indirect $0 (type $i32_=>_i32) - local.set $1 + local.set $0 global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub @@ -1879,7 +1770,7 @@ i32.const 0 i32.store block $__inlined_func$~lib/util/number/itoa32 - local.get $1 + local.get $0 i32.eqz if global.get $~lib/memory/__stack_pointer @@ -1887,60 +1778,60 @@ i32.add global.set $~lib/memory/__stack_pointer i32.const 1424 - local.set $1 + local.set $0 br $__inlined_func$~lib/util/number/itoa32 end global.get $~lib/memory/__stack_pointer i32.const 0 - local.get $1 + local.get $0 i32.sub - local.get $1 - local.get $1 + local.get $0 + local.get $0 i32.const 31 i32.shr_u local.tee $4 select - local.tee $0 + local.tee $2 i32.const 100000 i32.lt_u if (result i32) - local.get $0 + local.get $2 i32.const 100 i32.lt_u if (result i32) - local.get $0 + local.get $2 i32.const 10 i32.ge_u i32.const 1 i32.add else - local.get $0 + local.get $2 i32.const 10000 i32.ge_u i32.const 3 i32.add - local.get $0 + local.get $2 i32.const 1000 i32.ge_u i32.add end else - local.get $0 + local.get $2 i32.const 10000000 i32.lt_u if (result i32) - local.get $0 + local.get $2 i32.const 1000000 i32.ge_u i32.const 6 i32.add else - local.get $0 + local.get $2 i32.const 1000000000 i32.ge_u i32.const 8 i32.add - local.get $0 + local.get $2 i32.const 100000000 i32.ge_u i32.add @@ -1948,30 +1839,141 @@ end local.get $4 i32.add - local.tee $2 + local.tee $1 i32.const 1 i32.shl - call $~lib/rt/itcms/__new - local.tee $1 + local.tee $6 + i32.const 1073741804 + i32.ge_u + if + i32.const 1456 + i32.const 1520 + i32.const 260 + i32.const 31 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.ge_u + if + block $__inlined_func$~lib/rt/itcms/interrupt + i32.const 2048 + local.set $0 + loop $do-continue|0 + local.get $0 + call $~lib/rt/itcms/step + i32.sub + local.set $0 + global.get $~lib/rt/itcms/state + i32.eqz + if + global.get $~lib/rt/itcms/total + i64.extend_i32_u + i64.const 200 + i64.mul + i64.const 100 + i64.div_u + i32.wrap_i64 + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold + br $__inlined_func$~lib/rt/itcms/interrupt + end + local.get $0 + i32.const 0 + i32.gt_s + br_if $do-continue|0 + end + global.get $~lib/rt/itcms/total + local.tee $0 + local.get $0 + global.get $~lib/rt/itcms/threshold + i32.sub + i32.const 1024 + i32.lt_u + i32.const 10 + i32.shl + i32.add + global.set $~lib/rt/itcms/threshold + end + end + local.get $6 + i32.const 16 + i32.add + local.set $0 + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $0 + call $~lib/rt/tlsf/allocateBlock + local.tee $5 + i32.const 1 + i32.store offset=12 + local.get $5 + local.get $6 + i32.store offset=16 + global.get $~lib/rt/itcms/fromSpace + local.tee $0 + i32.load offset=8 + local.set $7 + local.get $5 + local.get $0 + global.get $~lib/rt/itcms/white + i32.or + i32.store offset=4 + local.get $5 + local.get $7 + i32.store offset=8 + local.get $7 + local.get $5 + local.get $7 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + local.get $0 + local.get $5 + i32.store offset=8 + global.get $~lib/rt/itcms/total + local.get $5 + i32.load + i32.const -4 + i32.and + i32.const 4 + i32.add + i32.add + global.set $~lib/rt/itcms/total + local.get $5 + i32.const 20 + i32.add + local.tee $0 + local.get $6 + call $~lib/memory/memory.fill + local.get $0 i32.store loop $while-continue|0 - local.get $0 + local.get $2 i32.const 10000 i32.ge_u if - local.get $0 + local.get $2 i32.const 10000 i32.rem_u local.set $3 - local.get $0 + local.get $2 i32.const 10000 i32.div_u - local.set $0 + local.set $2 + local.get $0 local.get $1 - local.get $2 i32.const 4 i32.sub - local.tee $2 + local.tee $1 i32.const 1 i32.shl i32.add @@ -1998,19 +2000,19 @@ br $while-continue|0 end end - local.get $0 + local.get $2 i32.const 100 i32.ge_u if + local.get $0 local.get $1 - local.get $2 i32.const 2 i32.sub - local.tee $2 + local.tee $1 i32.const 1 i32.shl i32.add - local.get $0 + local.get $2 i32.const 100 i32.rem_u i32.const 2 @@ -2019,23 +2021,23 @@ i32.add i32.load i32.store - local.get $0 + local.get $2 i32.const 100 i32.div_u - local.set $0 + local.set $2 end - local.get $0 + local.get $2 i32.const 10 i32.ge_u if + local.get $0 local.get $1 - local.get $2 i32.const 2 i32.sub i32.const 1 i32.shl i32.add - local.get $0 + local.get $2 i32.const 2 i32.shl i32.const 1836 @@ -2043,21 +2045,21 @@ i32.load i32.store else + local.get $0 local.get $1 - local.get $2 i32.const 1 i32.sub i32.const 1 i32.shl i32.add - local.get $0 + local.get $2 i32.const 48 i32.add i32.store16 end local.get $4 if - local.get $1 + local.get $0 i32.const 45 i32.store16 end @@ -2067,35 +2069,32 @@ global.set $~lib/memory/__stack_pointer end global.get $~lib/memory/__stack_pointer - local.tee $0 - local.get $1 - i32.store + local.tee $1 local.get $0 + i32.store + local.get $1 i32.const 3408 i32.store offset=4 block $__inlined_func$~lib/string/String.__eq (result i32) i32.const 1 - local.get $1 + local.get $0 i32.const 3408 i32.eq br_if $__inlined_func$~lib/string/String.__eq drop i32.const 0 - i32.const 3408 - i32.const 0 - local.get $1 - select + local.get $0 i32.eqz br_if $__inlined_func$~lib/string/String.__eq drop i32.const 0 - local.get $1 + local.get $0 i32.const 20 i32.sub i32.load offset=16 i32.const 1 i32.shr_u - local.tee $2 + local.tee $1 i32.const 3404 i32.load i32.const 1 @@ -2106,68 +2105,68 @@ block $__inlined_func$~lib/util/string/compareImpl (result i32) i32.const 3408 local.set $4 - local.get $1 - local.tee $0 + local.get $0 + local.tee $3 i32.const 7 i32.and i32.const 1 - local.get $2 - local.tee $1 + local.get $1 + local.tee $0 i32.const 4 i32.ge_u select i32.eqz if - loop $do-continue|0 - local.get $0 + loop $do-continue|00 + local.get $3 i64.load local.get $4 i64.load i64.eq if - local.get $0 + local.get $3 i32.const 8 i32.add - local.set $0 + local.set $3 local.get $4 i32.const 8 i32.add local.set $4 - local.get $1 + local.get $0 i32.const 4 i32.sub - local.tee $1 + local.tee $0 i32.const 4 i32.ge_u - br_if $do-continue|0 + br_if $do-continue|00 end end end loop $while-continue|1 - local.get $1 - local.tee $2 + local.get $0 + local.tee $1 i32.const 1 i32.sub - local.set $1 - local.get $2 + local.set $0 + local.get $1 if local.get $4 i32.load16_u local.tee $2 - local.get $0 + local.get $3 i32.load16_u - local.tee $3 + local.tee $1 i32.ne if - local.get $3 + local.get $1 local.get $2 i32.sub br $__inlined_func$~lib/util/string/compareImpl end - local.get $0 + local.get $3 i32.const 2 i32.add - local.set $0 + local.set $3 local.get $4 i32.const 2 i32.add diff --git a/tests/compiler/resolve-nested.optimized.wat b/tests/compiler/resolve-nested.optimized.wat index 1b85176177..6d6c2821f6 100644 --- a/tests/compiler/resolve-nested.optimized.wat +++ b/tests/compiler/resolve-nested.optimized.wat @@ -1036,7 +1036,7 @@ local.get $0 i32.const 4 i32.add - local.tee $0 + local.tee $1 i32.const 17876 i32.ge_u if @@ -1046,20 +1046,20 @@ call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT - local.get $0 + local.get $1 i32.const 4 i32.sub - local.set $1 - local.get $0 + local.set $0 + local.get $1 i32.const 15 i32.and i32.const 1 - local.get $0 + local.get $1 select if (result i32) i32.const 1 else - local.get $1 + local.get $0 i32.load i32.const 1 i32.and @@ -1072,14 +1072,11 @@ call $~lib/builtins/abort unreachable end - local.get $1 - local.tee $0 + local.get $0 + local.get $0 i32.load i32.const 1 i32.or - local.set $1 - local.get $0 - local.get $1 i32.store local.get $0 call $~lib/rt/tlsf/insertBlock @@ -1092,8 +1089,7 @@ local.tee $0 local.get $0 i32.store offset=4 - global.get $~lib/rt/itcms/toSpace - local.tee $0 + local.get $0 local.get $0 i32.store offset=8 i32.const 0 diff --git a/tests/compiler/resolve-new.optimized.wat b/tests/compiler/resolve-new.optimized.wat index d015ce8fa5..4716e9e56b 100644 --- a/tests/compiler/resolve-new.optimized.wat +++ b/tests/compiler/resolve-new.optimized.wat @@ -1032,7 +1032,7 @@ local.get $0 i32.const 4 i32.add - local.tee $0 + local.tee $1 i32.const 17860 i32.ge_u if @@ -1042,20 +1042,20 @@ call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT - local.get $0 + local.get $1 i32.const 4 i32.sub - local.set $1 - local.get $0 + local.set $0 + local.get $1 i32.const 15 i32.and i32.const 1 - local.get $0 + local.get $1 select if (result i32) i32.const 1 else - local.get $1 + local.get $0 i32.load i32.const 1 i32.and @@ -1068,14 +1068,11 @@ call $~lib/builtins/abort unreachable end - local.get $1 - local.tee $0 + local.get $0 + local.get $0 i32.load i32.const 1 i32.or - local.set $1 - local.get $0 - local.get $1 i32.store local.get $0 call $~lib/rt/tlsf/insertBlock @@ -1088,8 +1085,7 @@ local.tee $0 local.get $0 i32.store offset=4 - global.get $~lib/rt/itcms/toSpace - local.tee $0 + local.get $0 local.get $0 i32.store offset=8 i32.const 0 diff --git a/tests/compiler/resolve-propertyaccess.optimized.wat b/tests/compiler/resolve-propertyaccess.optimized.wat index 5c60253bf6..f8e956117c 100644 --- a/tests/compiler/resolve-propertyaccess.optimized.wat +++ b/tests/compiler/resolve-propertyaccess.optimized.wat @@ -1,8 +1,8 @@ (module (type $none_=>_none (func)) (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) - (type $i32_=>_none (func (param i32))) (type $i32_i32_=>_none (func (param i32 i32))) + (type $i32_=>_none (func (param i32))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) (type $none_=>_i32 (func (result i32))) @@ -1067,7 +1067,7 @@ local.get $0 i32.const 4 i32.add - local.tee $0 + local.tee $1 i32.const 20100 i32.ge_u if @@ -1077,20 +1077,20 @@ call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT - local.get $0 + local.get $1 i32.const 4 i32.sub - local.set $1 - local.get $0 + local.set $0 + local.get $1 i32.const 15 i32.and i32.const 1 - local.get $0 + local.get $1 select if (result i32) i32.const 1 else - local.get $1 + local.get $0 i32.load i32.const 1 i32.and @@ -1103,14 +1103,11 @@ call $~lib/builtins/abort unreachable end - local.get $1 - local.tee $0 + local.get $0 + local.get $0 i32.load i32.const 1 i32.or - local.set $1 - local.get $0 - local.get $1 i32.store local.get $0 call $~lib/rt/tlsf/insertBlock @@ -1123,8 +1120,7 @@ local.tee $0 local.get $0 i32.store offset=4 - global.get $~lib/rt/itcms/toSpace - local.tee $0 + local.get $0 local.get $0 i32.store offset=8 i32.const 0 @@ -1264,80 +1260,11 @@ end end ) - (func $~lib/rt/itcms/__new (param $0 i32) (param $1 i32) (result i32) + (func $~lib/rt/tlsf/allocateBlock (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) - (local $5 i32) - (local $6 i32) - local.get $0 - i32.const 1073741804 - i32.ge_u - if - i32.const 1280 - i32.const 1344 - i32.const 260 - i32.const 31 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/rt/itcms/total - global.get $~lib/rt/itcms/threshold - i32.ge_u - if - block $__inlined_func$~lib/rt/itcms/interrupt - i32.const 2048 - local.set $2 - loop $do-continue|0 - local.get $2 - call $~lib/rt/itcms/step - i32.sub - local.set $2 - global.get $~lib/rt/itcms/state - i32.eqz - if - global.get $~lib/rt/itcms/total - i64.extend_i32_u - i64.const 200 - i64.mul - i64.const 100 - i64.div_u - i32.wrap_i64 - i32.const 1024 - i32.add - global.set $~lib/rt/itcms/threshold - br $__inlined_func$~lib/rt/itcms/interrupt - end - local.get $2 - i32.const 0 - i32.gt_s - br_if $do-continue|0 - end - global.get $~lib/rt/itcms/total - local.tee $2 - local.get $2 - global.get $~lib/rt/itcms/threshold - i32.sub - i32.const 1024 - i32.lt_u - i32.const 10 - i32.shl - i32.add - global.set $~lib/rt/itcms/threshold - end - end - local.get $0 - i32.const 16 - i32.add - local.set $2 - global.get $~lib/rt/tlsf/ROOT - i32.eqz - if - call $~lib/rt/tlsf/initialize - end - global.get $~lib/rt/tlsf/ROOT - local.set $3 - local.get $2 + local.get $1 i32.const 1073741820 i32.gt_u if @@ -1348,14 +1275,15 @@ call $~lib/builtins/abort unreachable end - local.get $3 - local.get $2 + local.get $0 + local.tee $2 + local.get $1 i32.const 12 i32.le_u if (result i32) i32.const 12 else - local.get $2 + local.get $1 i32.const 19 i32.add i32.const -16 @@ -1363,19 +1291,19 @@ i32.const 4 i32.sub end - local.tee $2 + local.tee $0 call $~lib/rt/tlsf/searchBlock - local.tee $4 + local.tee $1 i32.eqz if - local.get $2 + local.get $0 i32.const 536870910 i32.lt_u if (result i32) - local.get $2 + local.get $0 i32.const 1 i32.const 27 - local.get $2 + local.get $0 i32.clz i32.sub i32.shl @@ -1383,16 +1311,16 @@ i32.sub i32.add else - local.get $2 + local.get $0 end i32.const 4 memory.size - local.tee $6 + local.tee $1 i32.const 16 i32.shl i32.const 4 i32.sub - local.get $3 + local.get $2 i32.load offset=1568 i32.ne i32.shl @@ -1403,18 +1331,18 @@ i32.and i32.const 16 i32.shr_u - local.set $5 - local.get $6 - local.get $5 - local.get $5 - local.get $6 - i32.lt_s + local.set $3 + local.get $1 + local.get $3 + local.get $1 + local.get $3 + i32.gt_s select memory.grow i32.const 0 i32.lt_s if - local.get $5 + local.get $3 memory.grow i32.const 0 i32.lt_s @@ -1422,18 +1350,18 @@ unreachable end end - local.get $3 - local.get $6 + local.get $2 + local.get $1 i32.const 16 i32.shl memory.size i32.const 16 i32.shl call $~lib/rt/tlsf/addMemory - local.get $3 local.get $2 + local.get $0 call $~lib/rt/tlsf/searchBlock - local.tee $4 + local.tee $1 i32.eqz if i32.const 0 @@ -1444,8 +1372,8 @@ unreachable end end - local.get $2 - local.get $4 + local.get $0 + local.get $1 i32.load i32.const -4 i32.and @@ -1458,13 +1386,13 @@ call $~lib/builtins/abort unreachable end - local.get $3 - local.get $4 + local.get $2 + local.get $1 call $~lib/rt/tlsf/removeBlock - local.get $4 + local.get $1 i32.load - local.set $6 - local.get $2 + local.set $3 + local.get $0 i32.const 4 i32.add i32.const 15 @@ -1477,54 +1405,54 @@ call $~lib/builtins/abort unreachable end - local.get $6 + local.get $3 i32.const -4 i32.and - local.get $2 + local.get $0 i32.sub - local.tee $5 + local.tee $4 i32.const 16 i32.ge_u if - local.get $4 - local.get $2 - local.get $6 + local.get $1 + local.get $0 + local.get $3 i32.const 2 i32.and i32.or i32.store - local.get $2 - local.get $4 + local.get $0 + local.get $1 i32.const 4 i32.add i32.add - local.tee $2 - local.get $5 + local.tee $0 + local.get $4 i32.const 4 i32.sub i32.const 1 i32.or i32.store - local.get $3 local.get $2 + local.get $0 call $~lib/rt/tlsf/insertBlock else - local.get $4 - local.get $6 + local.get $1 + local.get $3 i32.const -2 i32.and i32.store - local.get $4 + local.get $1 i32.const 4 i32.add - local.tee $2 - local.get $4 + local.tee $0 + local.get $1 i32.load i32.const -4 i32.and i32.add - local.get $2 - local.get $4 + local.get $0 + local.get $1 i32.load i32.const -4 i32.and @@ -1534,182 +1462,143 @@ i32.and i32.store end - local.get $4 - local.get $1 - i32.store offset=12 - local.get $4 - local.get $0 - i32.store offset=16 - global.get $~lib/rt/itcms/fromSpace - local.tee $1 - i32.load offset=8 - local.set $2 - local.get $4 - local.get $1 - global.get $~lib/rt/itcms/white - i32.or - i32.store offset=4 - local.get $4 - local.get $2 - i32.store offset=8 - local.get $2 - local.get $4 - local.get $2 - i32.load offset=4 - i32.const 3 - i32.and - i32.or - i32.store offset=4 local.get $1 - local.get $4 - i32.store offset=8 - global.get $~lib/rt/itcms/total - local.get $4 - i32.load - i32.const -4 - i32.and - i32.const 4 - i32.add - i32.add - global.set $~lib/rt/itcms/total - local.get $4 - i32.const 20 - i32.add - local.tee $2 - local.set $3 + ) + (func $~lib/memory/memory.fill (param $0 i32) (param $1 i32) + (local $2 i32) block $~lib/util/memory/memset|inlined.0 - local.get $0 + local.get $1 i32.eqz br_if $~lib/util/memory/memset|inlined.0 - local.get $3 + local.get $0 i32.const 0 i32.store8 local.get $0 - local.get $3 + local.get $1 i32.add - local.tee $1 + local.tee $2 i32.const 1 i32.sub i32.const 0 i32.store8 - local.get $0 + local.get $1 i32.const 2 i32.le_u br_if $~lib/util/memory/memset|inlined.0 - local.get $3 + local.get $0 i32.const 0 i32.store8 offset=1 - local.get $3 + local.get $0 i32.const 0 i32.store8 offset=2 - local.get $1 + local.get $2 i32.const 2 i32.sub i32.const 0 i32.store8 - local.get $1 + local.get $2 i32.const 3 i32.sub i32.const 0 i32.store8 - local.get $0 + local.get $1 i32.const 6 i32.le_u br_if $~lib/util/memory/memset|inlined.0 - local.get $3 + local.get $0 i32.const 0 i32.store8 offset=3 - local.get $1 + local.get $2 i32.const 4 i32.sub i32.const 0 i32.store8 - local.get $0 + local.get $1 i32.const 8 i32.le_u br_if $~lib/util/memory/memset|inlined.0 - local.get $3 + local.get $0 i32.const 0 - local.get $3 + local.get $0 i32.sub i32.const 3 i32.and - local.tee $1 + local.tee $2 i32.add - local.tee $5 + local.tee $0 i32.const 0 i32.store - local.get $5 local.get $0 local.get $1 + local.get $2 i32.sub i32.const -4 i32.and - local.tee $3 + local.tee $2 i32.add - local.tee $0 + local.tee $1 i32.const 4 i32.sub i32.const 0 i32.store - local.get $3 + local.get $2 i32.const 8 i32.le_u br_if $~lib/util/memory/memset|inlined.0 - local.get $5 + local.get $0 i32.const 0 i32.store offset=4 - local.get $5 + local.get $0 i32.const 0 i32.store offset=8 - local.get $0 + local.get $1 i32.const 12 i32.sub i32.const 0 i32.store - local.get $0 + local.get $1 i32.const 8 i32.sub i32.const 0 i32.store - local.get $3 + local.get $2 i32.const 24 i32.le_u br_if $~lib/util/memory/memset|inlined.0 - local.get $5 + local.get $0 i32.const 0 i32.store offset=12 - local.get $5 + local.get $0 i32.const 0 i32.store offset=16 - local.get $5 + local.get $0 i32.const 0 i32.store offset=20 - local.get $5 + local.get $0 i32.const 0 i32.store offset=24 - local.get $0 + local.get $1 i32.const 28 i32.sub i32.const 0 i32.store - local.get $0 + local.get $1 i32.const 24 i32.sub i32.const 0 i32.store - local.get $0 + local.get $1 i32.const 20 i32.sub i32.const 0 i32.store - local.get $0 + local.get $1 i32.const 16 i32.sub i32.const 0 i32.store - local.get $5 - local.get $5 + local.get $0 + local.get $0 i32.const 4 i32.and i32.const 24 @@ -1717,7 +1606,7 @@ local.tee $1 i32.add local.set $0 - local.get $3 + local.get $2 local.get $1 i32.sub local.set $1 @@ -1750,7 +1639,123 @@ end end end + ) + (func $~lib/rt/itcms/__new (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + local.get $0 + i32.const 1073741804 + i32.ge_u + if + i32.const 1280 + i32.const 1344 + i32.const 260 + i32.const 31 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.ge_u + if + block $__inlined_func$~lib/rt/itcms/interrupt + i32.const 2048 + local.set $2 + loop $do-continue|0 + local.get $2 + call $~lib/rt/itcms/step + i32.sub + local.set $2 + global.get $~lib/rt/itcms/state + i32.eqz + if + global.get $~lib/rt/itcms/total + i64.extend_i32_u + i64.const 200 + i64.mul + i64.const 100 + i64.div_u + i32.wrap_i64 + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold + br $__inlined_func$~lib/rt/itcms/interrupt + end + local.get $2 + i32.const 0 + i32.gt_s + br_if $do-continue|0 + end + global.get $~lib/rt/itcms/total + local.tee $2 + local.get $2 + global.get $~lib/rt/itcms/threshold + i32.sub + i32.const 1024 + i32.lt_u + i32.const 10 + i32.shl + i32.add + global.set $~lib/rt/itcms/threshold + end + end + local.get $0 + i32.const 16 + i32.add + local.set $2 + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $2 + call $~lib/rt/tlsf/allocateBlock + local.tee $2 + local.get $1 + i32.store offset=12 + local.get $2 + local.get $0 + i32.store offset=16 + global.get $~lib/rt/itcms/fromSpace + local.tee $3 + i32.load offset=8 + local.set $1 + local.get $2 + local.get $3 + global.get $~lib/rt/itcms/white + i32.or + i32.store offset=4 + local.get $2 + local.get $1 + i32.store offset=8 + local.get $1 local.get $2 + local.get $1 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + local.get $3 + local.get $2 + i32.store offset=8 + global.get $~lib/rt/itcms/total + local.get $2 + i32.load + i32.const -4 + i32.and + i32.const 4 + i32.add + i32.add + global.set $~lib/rt/itcms/total + local.get $2 + i32.const 20 + i32.add + local.tee $1 + local.get $0 + call $~lib/memory/memory.fill + local.get $1 ) (func $~lib/string/String.__eq (param $0 i32) (param $1 i32) (result i32) (local $2 i32) @@ -1778,7 +1783,7 @@ i32.load offset=16 i32.const 1 i32.shr_u - local.tee $4 + local.tee $2 local.get $1 i32.const 20 i32.sub @@ -1792,18 +1797,15 @@ end block $__inlined_func$~lib/util/string/compareImpl (result i32) local.get $0 - local.set $2 - local.get $1 - local.set $3 - local.get $2 + local.tee $3 i32.const 7 i32.and - local.get $3 + local.get $1 i32.const 7 i32.and i32.or i32.const 1 - local.get $4 + local.get $2 local.tee $0 i32.const 4 i32.ge_u @@ -1811,20 +1813,20 @@ i32.eqz if loop $do-continue|0 - local.get $2 - i64.load local.get $3 i64.load + local.get $1 + i64.load i64.eq if - local.get $2 - i32.const 8 - i32.add - local.set $2 local.get $3 i32.const 8 i32.add local.set $3 + local.get $1 + i32.const 8 + i32.add + local.set $1 local.get $0 i32.const 4 i32.sub @@ -1837,33 +1839,33 @@ end loop $while-continue|1 local.get $0 - local.tee $1 + local.tee $2 i32.const 1 i32.sub local.set $0 - local.get $1 + local.get $2 if - local.get $2 - i32.load16_u - local.tee $1 local.get $3 i32.load16_u + local.tee $2 + local.get $1 + i32.load16_u local.tee $4 i32.ne if - local.get $1 + local.get $2 local.get $4 i32.sub br $__inlined_func$~lib/util/string/compareImpl end - local.get $2 - i32.const 2 - i32.add - local.set $2 local.get $3 i32.const 2 i32.add local.set $3 + local.get $1 + i32.const 2 + i32.add + local.set $1 br $while-continue|1 end end diff --git a/tests/compiler/resolve-ternary.optimized.wat b/tests/compiler/resolve-ternary.optimized.wat index 51fd751aea..9a9ada7fbb 100644 --- a/tests/compiler/resolve-ternary.optimized.wat +++ b/tests/compiler/resolve-ternary.optimized.wat @@ -1,10 +1,10 @@ (module (type $i32_=>_i32 (func (param i32) (result i32))) (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) - (type $none_=>_none (func)) (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) - (type $i32_=>_none (func (param i32))) + (type $none_=>_none (func)) (type $i32_i32_=>_none (func (param i32 i32))) + (type $i32_=>_none (func (param i32))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) (type $none_=>_i32 (func (result i32))) (type $i64_i32_i64_i32_i64_=>_i32 (func (param i64 i32 i64 i32 i64) (result i32))) @@ -1071,7 +1071,7 @@ local.get $0 i32.const 4 i32.add - local.tee $0 + local.tee $1 i32.const 21028 i32.ge_u if @@ -1081,20 +1081,20 @@ call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT - local.get $0 + local.get $1 i32.const 4 i32.sub - local.set $1 - local.get $0 + local.set $0 + local.get $1 i32.const 15 i32.and i32.const 1 - local.get $0 + local.get $1 select if (result i32) i32.const 1 else - local.get $1 + local.get $0 i32.load i32.const 1 i32.and @@ -1107,14 +1107,11 @@ call $~lib/builtins/abort unreachable end - local.get $1 - local.tee $0 + local.get $0 + local.get $0 i32.load i32.const 1 i32.or - local.set $1 - local.get $0 - local.get $1 i32.store local.get $0 call $~lib/rt/tlsf/insertBlock @@ -1127,8 +1124,7 @@ local.tee $0 local.get $0 i32.store offset=4 - global.get $~lib/rt/itcms/toSpace - local.tee $0 + local.get $0 local.get $0 i32.store offset=8 i32.const 0 @@ -1268,79 +1264,10 @@ end end ) - (func $~lib/rt/itcms/__new (param $0 i32) (result i32) - (local $1 i32) + (func $~lib/rt/tlsf/allocateBlock (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) - (local $5 i32) - local.get $0 - i32.const 1073741804 - i32.ge_u - if - i32.const 1280 - i32.const 1344 - i32.const 260 - i32.const 31 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/rt/itcms/total - global.get $~lib/rt/itcms/threshold - i32.ge_u - if - block $__inlined_func$~lib/rt/itcms/interrupt - i32.const 2048 - local.set $1 - loop $do-continue|0 - local.get $1 - call $~lib/rt/itcms/step - i32.sub - local.set $1 - global.get $~lib/rt/itcms/state - i32.eqz - if - global.get $~lib/rt/itcms/total - i64.extend_i32_u - i64.const 200 - i64.mul - i64.const 100 - i64.div_u - i32.wrap_i64 - i32.const 1024 - i32.add - global.set $~lib/rt/itcms/threshold - br $__inlined_func$~lib/rt/itcms/interrupt - end - local.get $1 - i32.const 0 - i32.gt_s - br_if $do-continue|0 - end - global.get $~lib/rt/itcms/total - local.tee $1 - local.get $1 - global.get $~lib/rt/itcms/threshold - i32.sub - i32.const 1024 - i32.lt_u - i32.const 10 - i32.shl - i32.add - global.set $~lib/rt/itcms/threshold - end - end - local.get $0 - i32.const 16 - i32.add - local.set $1 - global.get $~lib/rt/tlsf/ROOT - i32.eqz - if - call $~lib/rt/tlsf/initialize - end - global.get $~lib/rt/tlsf/ROOT - local.set $5 local.get $1 i32.const 1073741820 i32.gt_u @@ -1352,7 +1279,8 @@ call $~lib/builtins/abort unreachable end - local.get $5 + local.get $0 + local.tee $2 local.get $1 i32.const 12 i32.le_u @@ -1367,19 +1295,19 @@ i32.const 4 i32.sub end - local.tee $1 + local.tee $0 call $~lib/rt/tlsf/searchBlock - local.tee $2 + local.tee $1 i32.eqz if - local.get $1 + local.get $0 i32.const 536870910 i32.lt_u if (result i32) - local.get $1 + local.get $0 i32.const 1 i32.const 27 - local.get $1 + local.get $0 i32.clz i32.sub i32.shl @@ -1387,16 +1315,16 @@ i32.sub i32.add else - local.get $1 + local.get $0 end i32.const 4 memory.size - local.tee $3 + local.tee $1 i32.const 16 i32.shl i32.const 4 i32.sub - local.get $5 + local.get $2 i32.load offset=1568 i32.ne i32.shl @@ -1407,18 +1335,18 @@ i32.and i32.const 16 i32.shr_u - local.set $4 + local.set $3 + local.get $1 local.get $3 - local.get $4 + local.get $1 local.get $3 - local.get $4 i32.gt_s select memory.grow i32.const 0 i32.lt_s if - local.get $4 + local.get $3 memory.grow i32.const 0 i32.lt_s @@ -1426,18 +1354,18 @@ unreachable end end - local.get $5 - local.get $3 + local.get $2 + local.get $1 i32.const 16 i32.shl memory.size i32.const 16 i32.shl call $~lib/rt/tlsf/addMemory - local.get $5 - local.get $1 + local.get $2 + local.get $0 call $~lib/rt/tlsf/searchBlock - local.tee $2 + local.tee $1 i32.eqz if i32.const 0 @@ -1448,8 +1376,8 @@ unreachable end end + local.get $0 local.get $1 - local.get $2 i32.load i32.const -4 i32.and @@ -1462,13 +1390,13 @@ call $~lib/builtins/abort unreachable end - local.get $5 local.get $2 + local.get $1 call $~lib/rt/tlsf/removeBlock - local.get $2 + local.get $1 i32.load local.set $3 - local.get $1 + local.get $0 i32.const 4 i32.add i32.const 15 @@ -1484,51 +1412,51 @@ local.get $3 i32.const -4 i32.and - local.get $1 + local.get $0 i32.sub local.tee $4 i32.const 16 i32.ge_u if - local.get $2 local.get $1 + local.get $0 local.get $3 i32.const 2 i32.and i32.or i32.store + local.get $0 local.get $1 - local.get $2 i32.const 4 i32.add i32.add - local.tee $1 + local.tee $0 local.get $4 i32.const 4 i32.sub i32.const 1 i32.or i32.store - local.get $5 - local.get $1 + local.get $2 + local.get $0 call $~lib/rt/tlsf/insertBlock else - local.get $2 + local.get $1 local.get $3 i32.const -2 i32.and i32.store - local.get $2 + local.get $1 i32.const 4 i32.add - local.tee $1 - local.get $2 + local.tee $0 + local.get $1 i32.load i32.const -4 i32.and i32.add + local.get $0 local.get $1 - local.get $2 i32.load i32.const -4 i32.and @@ -1538,182 +1466,143 @@ i32.and i32.store end - local.get $2 - i32.const 1 - i32.store offset=12 - local.get $2 - local.get $0 - i32.store offset=16 - global.get $~lib/rt/itcms/fromSpace - local.tee $1 - i32.load offset=8 - local.set $5 - local.get $2 local.get $1 - global.get $~lib/rt/itcms/white - i32.or - i32.store offset=4 - local.get $2 - local.get $5 - i32.store offset=8 - local.get $5 - local.get $2 - local.get $5 - i32.load offset=4 - i32.const 3 - i32.and - i32.or - i32.store offset=4 - local.get $1 - local.get $2 - i32.store offset=8 - global.get $~lib/rt/itcms/total - local.get $2 - i32.load - i32.const -4 - i32.and - i32.const 4 - i32.add - i32.add - global.set $~lib/rt/itcms/total - local.get $2 - i32.const 20 - i32.add - local.tee $5 - local.set $4 + ) + (func $~lib/memory/memory.fill (param $0 i32) (param $1 i32) + (local $2 i32) block $~lib/util/memory/memset|inlined.0 - local.get $0 + local.get $1 i32.eqz br_if $~lib/util/memory/memset|inlined.0 - local.get $4 + local.get $0 i32.const 0 i32.store8 local.get $0 - local.get $4 + local.get $1 i32.add - local.tee $1 + local.tee $2 i32.const 1 i32.sub i32.const 0 i32.store8 - local.get $0 + local.get $1 i32.const 2 i32.le_u br_if $~lib/util/memory/memset|inlined.0 - local.get $4 + local.get $0 i32.const 0 i32.store8 offset=1 - local.get $4 + local.get $0 i32.const 0 i32.store8 offset=2 - local.get $1 + local.get $2 i32.const 2 i32.sub i32.const 0 i32.store8 - local.get $1 + local.get $2 i32.const 3 i32.sub i32.const 0 i32.store8 - local.get $0 + local.get $1 i32.const 6 i32.le_u br_if $~lib/util/memory/memset|inlined.0 - local.get $4 + local.get $0 i32.const 0 i32.store8 offset=3 - local.get $1 + local.get $2 i32.const 4 i32.sub i32.const 0 i32.store8 - local.get $0 + local.get $1 i32.const 8 i32.le_u br_if $~lib/util/memory/memset|inlined.0 - local.get $4 + local.get $0 i32.const 0 - local.get $4 + local.get $0 i32.sub i32.const 3 i32.and - local.tee $1 + local.tee $2 i32.add - local.tee $3 + local.tee $0 i32.const 0 i32.store - local.get $3 local.get $0 local.get $1 + local.get $2 i32.sub i32.const -4 i32.and - local.tee $4 + local.tee $2 i32.add - local.tee $0 + local.tee $1 i32.const 4 i32.sub i32.const 0 i32.store - local.get $4 + local.get $2 i32.const 8 i32.le_u br_if $~lib/util/memory/memset|inlined.0 - local.get $3 + local.get $0 i32.const 0 i32.store offset=4 - local.get $3 + local.get $0 i32.const 0 i32.store offset=8 - local.get $0 + local.get $1 i32.const 12 i32.sub i32.const 0 i32.store - local.get $0 + local.get $1 i32.const 8 i32.sub i32.const 0 i32.store - local.get $4 + local.get $2 i32.const 24 i32.le_u br_if $~lib/util/memory/memset|inlined.0 - local.get $3 + local.get $0 i32.const 0 i32.store offset=12 - local.get $3 + local.get $0 i32.const 0 i32.store offset=16 - local.get $3 + local.get $0 i32.const 0 i32.store offset=20 - local.get $3 + local.get $0 i32.const 0 i32.store offset=24 - local.get $0 + local.get $1 i32.const 28 i32.sub i32.const 0 i32.store - local.get $0 + local.get $1 i32.const 24 i32.sub i32.const 0 i32.store - local.get $0 + local.get $1 i32.const 20 i32.sub i32.const 0 i32.store - local.get $0 + local.get $1 i32.const 16 i32.sub i32.const 0 i32.store - local.get $3 - local.get $3 + local.get $0 + local.get $0 i32.const 4 i32.and i32.const 24 @@ -1721,7 +1610,7 @@ local.tee $1 i32.add local.set $0 - local.get $4 + local.get $2 local.get $1 i32.sub local.set $1 @@ -1754,7 +1643,124 @@ end end end - local.get $5 + ) + (func $~lib/rt/itcms/__new (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + local.get $0 + i32.const 1073741804 + i32.ge_u + if + i32.const 1280 + i32.const 1344 + i32.const 260 + i32.const 31 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.ge_u + if + block $__inlined_func$~lib/rt/itcms/interrupt + i32.const 2048 + local.set $1 + loop $do-continue|0 + local.get $1 + call $~lib/rt/itcms/step + i32.sub + local.set $1 + global.get $~lib/rt/itcms/state + i32.eqz + if + global.get $~lib/rt/itcms/total + i64.extend_i32_u + i64.const 200 + i64.mul + i64.const 100 + i64.div_u + i32.wrap_i64 + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold + br $__inlined_func$~lib/rt/itcms/interrupt + end + local.get $1 + i32.const 0 + i32.gt_s + br_if $do-continue|0 + end + global.get $~lib/rt/itcms/total + local.tee $1 + local.get $1 + global.get $~lib/rt/itcms/threshold + i32.sub + i32.const 1024 + i32.lt_u + i32.const 10 + i32.shl + i32.add + global.set $~lib/rt/itcms/threshold + end + end + local.get $0 + i32.const 16 + i32.add + local.set $1 + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $1 + call $~lib/rt/tlsf/allocateBlock + local.tee $1 + i32.const 1 + i32.store offset=12 + local.get $1 + local.get $0 + i32.store offset=16 + global.get $~lib/rt/itcms/fromSpace + local.tee $3 + i32.load offset=8 + local.set $2 + local.get $1 + local.get $3 + global.get $~lib/rt/itcms/white + i32.or + i32.store offset=4 + local.get $1 + local.get $2 + i32.store offset=8 + local.get $2 + local.get $1 + local.get $2 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + local.get $3 + local.get $1 + i32.store offset=8 + global.get $~lib/rt/itcms/total + local.get $1 + i32.load + i32.const -4 + i32.and + i32.const 4 + i32.add + i32.add + global.set $~lib/rt/itcms/total + local.get $1 + i32.const 20 + i32.add + local.tee $1 + local.get $0 + call $~lib/memory/memory.fill + local.get $1 ) (func $~lib/util/number/utoa32_dec_lut (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) @@ -1886,7 +1892,7 @@ i32.load offset=16 i32.const 1 i32.shr_u - local.tee $4 + local.tee $2 local.get $1 i32.const 20 i32.sub @@ -1900,18 +1906,15 @@ end block $__inlined_func$~lib/util/string/compareImpl (result i32) local.get $0 - local.set $2 - local.get $1 - local.set $3 - local.get $2 + local.tee $3 i32.const 7 i32.and - local.get $3 + local.get $1 i32.const 7 i32.and i32.or i32.const 1 - local.get $4 + local.get $2 local.tee $0 i32.const 4 i32.ge_u @@ -1919,20 +1922,20 @@ i32.eqz if loop $do-continue|0 - local.get $2 - i64.load local.get $3 i64.load + local.get $1 + i64.load i64.eq if - local.get $2 - i32.const 8 - i32.add - local.set $2 local.get $3 i32.const 8 i32.add local.set $3 + local.get $1 + i32.const 8 + i32.add + local.set $1 local.get $0 i32.const 4 i32.sub @@ -1945,33 +1948,33 @@ end loop $while-continue|1 local.get $0 - local.tee $1 + local.tee $2 i32.const 1 i32.sub local.set $0 - local.get $1 + local.get $2 if - local.get $2 - i32.load16_u - local.tee $1 local.get $3 i32.load16_u + local.tee $2 + local.get $1 + i32.load16_u local.tee $4 i32.ne if - local.get $1 + local.get $2 local.get $4 i32.sub br $__inlined_func$~lib/util/string/compareImpl end - local.get $2 - i32.const 2 - i32.add - local.set $2 local.get $3 i32.const 2 i32.add local.set $3 + local.get $1 + i32.const 2 + i32.add + local.set $1 br $while-continue|1 end end @@ -3744,12 +3747,11 @@ ) (func $~start (local $0 i32) - (local $1 i32) - (local $2 i64) + (local $1 i64) + (local $2 i32) (local $3 i64) (local $4 i64) (local $5 i64) - (local $6 f64) global.get $~lib/memory/__stack_pointer i32.const 8 i32.sub @@ -3821,10 +3823,10 @@ i32.add global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $2 local.get $0 i32.store - local.get $1 + local.get $2 i32.const 3232 i32.store offset=4 local.get $0 @@ -3859,91 +3861,91 @@ i32.load16_s global.set $~lib/util/number/_exp_pow global.get $~lib/util/number/_frc_pow - local.tee $5 - i64.const 4294967295 - i64.and - local.set $3 - local.get $5 + local.tee $1 i64.const 32 i64.shr_u - local.tee $5 - i64.const 31 - i64.shl - local.get $3 + local.set $3 + local.get $1 + i64.const 4294967295 + i64.and + local.tee $1 i64.const 31 i64.shl - local.get $3 + local.get $1 i64.const 10 i64.shl i64.const 32 i64.shr_u i64.add - local.tee $4 + local.set $4 + local.get $3 + i64.const 31 + i64.shl + local.get $1 + i64.const 31 + i64.shl + local.tee $5 i64.const 32 i64.shr_u i64.add - local.get $4 + local.get $5 i64.const 4294967295 i64.and - local.get $5 - i64.const 10 - i64.shl - i64.add i64.const 2147483647 i64.add i64.const 32 i64.shr_u i64.add - i64.const 1 - i64.sub - local.set $2 - local.get $5 - i64.const 31 - i64.shl + global.get $~lib/util/number/_exp_pow + local.tee $0 + i32.const 1 + i32.add local.get $3 i64.const 31 i64.shl - local.tee $4 + local.get $4 i64.const 32 i64.shr_u i64.add local.get $4 i64.const 4294967295 i64.and + local.get $3 + i64.const 10 + i64.shl + i64.add i64.const 2147483647 i64.add i64.const 32 i64.shr_u i64.add - global.get $~lib/util/number/_exp_pow - local.tee $1 - i32.const 1 - i32.add - local.get $2 - local.get $1 + i64.const 1 + i64.sub + local.tee $4 + local.get $0 i32.const 1 i32.add - local.get $2 - local.get $5 + local.get $4 + local.get $3 i64.const 2147483647 i64.mul - local.get $3 + local.get $1 i64.const 2147483647 i64.mul - local.get $3 + local.get $1 i64.const 4294966784 i64.mul i64.const 32 i64.shr_u i64.add - local.tee $2 + local.tee $1 i64.const 32 i64.shr_u i64.add - local.get $5 + local.get $3 i64.const 4294966784 i64.mul - local.get $2 + local.get $1 i64.const 4294967295 i64.and i64.add @@ -3963,23 +3965,23 @@ local.get $0 i32.const 1 i32.shl - local.tee $1 + local.tee $2 call $~lib/rt/itcms/__new local.tee $0 i32.store local.get $0 i32.const 3472 - local.get $1 + local.get $2 call $~lib/memory/memory.copy global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $2 local.get $0 i32.store - local.get $1 + local.get $2 i32.const 4464 i32.store offset=4 local.get $0 diff --git a/tests/compiler/resolve-unary.optimized.wat b/tests/compiler/resolve-unary.optimized.wat index 3cb3074983..80ff869534 100644 --- a/tests/compiler/resolve-unary.optimized.wat +++ b/tests/compiler/resolve-unary.optimized.wat @@ -1,8 +1,8 @@ (module (type $none_=>_none (func)) (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) - (type $i32_=>_none (func (param i32))) (type $i32_i32_=>_none (func (param i32 i32))) + (type $i32_=>_none (func (param i32))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) (type $none_=>_i32 (func (result i32))) @@ -1087,7 +1087,7 @@ local.get $0 i32.const 4 i32.add - local.tee $0 + local.tee $1 i32.const 20156 i32.ge_u if @@ -1097,20 +1097,20 @@ call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT - local.get $0 + local.get $1 i32.const 4 i32.sub - local.set $1 - local.get $0 + local.set $0 + local.get $1 i32.const 15 i32.and i32.const 1 - local.get $0 + local.get $1 select if (result i32) i32.const 1 else - local.get $1 + local.get $0 i32.load i32.const 1 i32.and @@ -1123,14 +1123,11 @@ call $~lib/builtins/abort unreachable end - local.get $1 - local.tee $0 + local.get $0 + local.get $0 i32.load i32.const 1 i32.or - local.set $1 - local.get $0 - local.get $1 i32.store local.get $0 call $~lib/rt/tlsf/insertBlock @@ -1143,8 +1140,7 @@ local.tee $0 local.get $0 i32.store offset=4 - global.get $~lib/rt/itcms/toSpace - local.tee $0 + local.get $0 local.get $0 i32.store offset=8 i32.const 0 @@ -1284,80 +1280,11 @@ end end ) - (func $~lib/rt/itcms/__new (param $0 i32) (param $1 i32) (result i32) + (func $~lib/rt/tlsf/allocateBlock (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) - (local $5 i32) - (local $6 i32) - local.get $0 - i32.const 1073741804 - i32.ge_u - if - i32.const 1280 - i32.const 1344 - i32.const 260 - i32.const 31 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/rt/itcms/total - global.get $~lib/rt/itcms/threshold - i32.ge_u - if - block $__inlined_func$~lib/rt/itcms/interrupt - i32.const 2048 - local.set $2 - loop $do-continue|0 - local.get $2 - call $~lib/rt/itcms/step - i32.sub - local.set $2 - global.get $~lib/rt/itcms/state - i32.eqz - if - global.get $~lib/rt/itcms/total - i64.extend_i32_u - i64.const 200 - i64.mul - i64.const 100 - i64.div_u - i32.wrap_i64 - i32.const 1024 - i32.add - global.set $~lib/rt/itcms/threshold - br $__inlined_func$~lib/rt/itcms/interrupt - end - local.get $2 - i32.const 0 - i32.gt_s - br_if $do-continue|0 - end - global.get $~lib/rt/itcms/total - local.tee $2 - local.get $2 - global.get $~lib/rt/itcms/threshold - i32.sub - i32.const 1024 - i32.lt_u - i32.const 10 - i32.shl - i32.add - global.set $~lib/rt/itcms/threshold - end - end - local.get $0 - i32.const 16 - i32.add - local.set $2 - global.get $~lib/rt/tlsf/ROOT - i32.eqz - if - call $~lib/rt/tlsf/initialize - end - global.get $~lib/rt/tlsf/ROOT - local.set $3 - local.get $2 + local.get $1 i32.const 1073741820 i32.gt_u if @@ -1368,14 +1295,15 @@ call $~lib/builtins/abort unreachable end - local.get $3 - local.get $2 + local.get $0 + local.tee $2 + local.get $1 i32.const 12 i32.le_u if (result i32) i32.const 12 else - local.get $2 + local.get $1 i32.const 19 i32.add i32.const -16 @@ -1383,19 +1311,19 @@ i32.const 4 i32.sub end - local.tee $2 + local.tee $0 call $~lib/rt/tlsf/searchBlock - local.tee $4 + local.tee $1 i32.eqz if - local.get $2 + local.get $0 i32.const 536870910 i32.lt_u if (result i32) - local.get $2 + local.get $0 i32.const 1 i32.const 27 - local.get $2 + local.get $0 i32.clz i32.sub i32.shl @@ -1403,16 +1331,16 @@ i32.sub i32.add else - local.get $2 + local.get $0 end i32.const 4 memory.size - local.tee $6 + local.tee $1 i32.const 16 i32.shl i32.const 4 i32.sub - local.get $3 + local.get $2 i32.load offset=1568 i32.ne i32.shl @@ -1423,18 +1351,18 @@ i32.and i32.const 16 i32.shr_u - local.set $5 - local.get $6 - local.get $5 - local.get $5 - local.get $6 - i32.lt_s + local.set $3 + local.get $1 + local.get $3 + local.get $1 + local.get $3 + i32.gt_s select memory.grow i32.const 0 i32.lt_s if - local.get $5 + local.get $3 memory.grow i32.const 0 i32.lt_s @@ -1442,18 +1370,18 @@ unreachable end end - local.get $3 - local.get $6 + local.get $2 + local.get $1 i32.const 16 i32.shl memory.size i32.const 16 i32.shl call $~lib/rt/tlsf/addMemory - local.get $3 local.get $2 + local.get $0 call $~lib/rt/tlsf/searchBlock - local.tee $4 + local.tee $1 i32.eqz if i32.const 0 @@ -1464,8 +1392,8 @@ unreachable end end - local.get $2 - local.get $4 + local.get $0 + local.get $1 i32.load i32.const -4 i32.and @@ -1478,13 +1406,13 @@ call $~lib/builtins/abort unreachable end - local.get $3 - local.get $4 + local.get $2 + local.get $1 call $~lib/rt/tlsf/removeBlock - local.get $4 + local.get $1 i32.load - local.set $6 - local.get $2 + local.set $3 + local.get $0 i32.const 4 i32.add i32.const 15 @@ -1497,54 +1425,54 @@ call $~lib/builtins/abort unreachable end - local.get $6 + local.get $3 i32.const -4 i32.and - local.get $2 + local.get $0 i32.sub - local.tee $5 + local.tee $4 i32.const 16 i32.ge_u if - local.get $4 - local.get $2 - local.get $6 + local.get $1 + local.get $0 + local.get $3 i32.const 2 i32.and i32.or i32.store - local.get $2 - local.get $4 + local.get $0 + local.get $1 i32.const 4 i32.add i32.add - local.tee $2 - local.get $5 + local.tee $0 + local.get $4 i32.const 4 i32.sub i32.const 1 i32.or i32.store - local.get $3 local.get $2 + local.get $0 call $~lib/rt/tlsf/insertBlock else - local.get $4 - local.get $6 + local.get $1 + local.get $3 i32.const -2 i32.and i32.store - local.get $4 + local.get $1 i32.const 4 i32.add - local.tee $2 - local.get $4 + local.tee $0 + local.get $1 i32.load i32.const -4 i32.and i32.add - local.get $2 - local.get $4 + local.get $0 + local.get $1 i32.load i32.const -4 i32.and @@ -1554,182 +1482,143 @@ i32.and i32.store end - local.get $4 - local.get $1 - i32.store offset=12 - local.get $4 - local.get $0 - i32.store offset=16 - global.get $~lib/rt/itcms/fromSpace - local.tee $1 - i32.load offset=8 - local.set $2 - local.get $4 - local.get $1 - global.get $~lib/rt/itcms/white - i32.or - i32.store offset=4 - local.get $4 - local.get $2 - i32.store offset=8 - local.get $2 - local.get $4 - local.get $2 - i32.load offset=4 - i32.const 3 - i32.and - i32.or - i32.store offset=4 local.get $1 - local.get $4 - i32.store offset=8 - global.get $~lib/rt/itcms/total - local.get $4 - i32.load - i32.const -4 - i32.and - i32.const 4 - i32.add - i32.add - global.set $~lib/rt/itcms/total - local.get $4 - i32.const 20 - i32.add - local.tee $2 - local.set $3 + ) + (func $~lib/memory/memory.fill (param $0 i32) (param $1 i32) + (local $2 i32) block $~lib/util/memory/memset|inlined.0 - local.get $0 + local.get $1 i32.eqz br_if $~lib/util/memory/memset|inlined.0 - local.get $3 + local.get $0 i32.const 0 i32.store8 local.get $0 - local.get $3 + local.get $1 i32.add - local.tee $1 + local.tee $2 i32.const 1 i32.sub i32.const 0 i32.store8 - local.get $0 + local.get $1 i32.const 2 i32.le_u br_if $~lib/util/memory/memset|inlined.0 - local.get $3 + local.get $0 i32.const 0 i32.store8 offset=1 - local.get $3 + local.get $0 i32.const 0 i32.store8 offset=2 - local.get $1 + local.get $2 i32.const 2 i32.sub i32.const 0 i32.store8 - local.get $1 + local.get $2 i32.const 3 i32.sub i32.const 0 i32.store8 - local.get $0 + local.get $1 i32.const 6 i32.le_u br_if $~lib/util/memory/memset|inlined.0 - local.get $3 + local.get $0 i32.const 0 i32.store8 offset=3 - local.get $1 + local.get $2 i32.const 4 i32.sub i32.const 0 i32.store8 - local.get $0 + local.get $1 i32.const 8 i32.le_u br_if $~lib/util/memory/memset|inlined.0 - local.get $3 + local.get $0 i32.const 0 - local.get $3 + local.get $0 i32.sub i32.const 3 i32.and - local.tee $1 + local.tee $2 i32.add - local.tee $5 + local.tee $0 i32.const 0 i32.store - local.get $5 local.get $0 local.get $1 + local.get $2 i32.sub i32.const -4 i32.and - local.tee $3 + local.tee $2 i32.add - local.tee $0 + local.tee $1 i32.const 4 i32.sub i32.const 0 i32.store - local.get $3 + local.get $2 i32.const 8 i32.le_u br_if $~lib/util/memory/memset|inlined.0 - local.get $5 + local.get $0 i32.const 0 i32.store offset=4 - local.get $5 + local.get $0 i32.const 0 i32.store offset=8 - local.get $0 + local.get $1 i32.const 12 i32.sub i32.const 0 i32.store - local.get $0 + local.get $1 i32.const 8 i32.sub i32.const 0 i32.store - local.get $3 + local.get $2 i32.const 24 i32.le_u br_if $~lib/util/memory/memset|inlined.0 - local.get $5 + local.get $0 i32.const 0 i32.store offset=12 - local.get $5 + local.get $0 i32.const 0 i32.store offset=16 - local.get $5 + local.get $0 i32.const 0 i32.store offset=20 - local.get $5 + local.get $0 i32.const 0 i32.store offset=24 - local.get $0 + local.get $1 i32.const 28 i32.sub i32.const 0 i32.store - local.get $0 + local.get $1 i32.const 24 i32.sub i32.const 0 i32.store - local.get $0 + local.get $1 i32.const 20 i32.sub i32.const 0 i32.store - local.get $0 + local.get $1 i32.const 16 i32.sub i32.const 0 i32.store - local.get $5 - local.get $5 + local.get $0 + local.get $0 i32.const 4 i32.and i32.const 24 @@ -1737,7 +1626,7 @@ local.tee $1 i32.add local.set $0 - local.get $3 + local.get $2 local.get $1 i32.sub local.set $1 @@ -1770,7 +1659,123 @@ end end end + ) + (func $~lib/rt/itcms/__new (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + local.get $0 + i32.const 1073741804 + i32.ge_u + if + i32.const 1280 + i32.const 1344 + i32.const 260 + i32.const 31 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.ge_u + if + block $__inlined_func$~lib/rt/itcms/interrupt + i32.const 2048 + local.set $2 + loop $do-continue|0 + local.get $2 + call $~lib/rt/itcms/step + i32.sub + local.set $2 + global.get $~lib/rt/itcms/state + i32.eqz + if + global.get $~lib/rt/itcms/total + i64.extend_i32_u + i64.const 200 + i64.mul + i64.const 100 + i64.div_u + i32.wrap_i64 + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold + br $__inlined_func$~lib/rt/itcms/interrupt + end + local.get $2 + i32.const 0 + i32.gt_s + br_if $do-continue|0 + end + global.get $~lib/rt/itcms/total + local.tee $2 + local.get $2 + global.get $~lib/rt/itcms/threshold + i32.sub + i32.const 1024 + i32.lt_u + i32.const 10 + i32.shl + i32.add + global.set $~lib/rt/itcms/threshold + end + end + local.get $0 + i32.const 16 + i32.add + local.set $2 + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $2 + call $~lib/rt/tlsf/allocateBlock + local.tee $2 + local.get $1 + i32.store offset=12 + local.get $2 + local.get $0 + i32.store offset=16 + global.get $~lib/rt/itcms/fromSpace + local.tee $3 + i32.load offset=8 + local.set $1 + local.get $2 + local.get $3 + global.get $~lib/rt/itcms/white + i32.or + i32.store offset=4 + local.get $2 + local.get $1 + i32.store offset=8 + local.get $1 local.get $2 + local.get $1 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + local.get $3 + local.get $2 + i32.store offset=8 + global.get $~lib/rt/itcms/total + local.get $2 + i32.load + i32.const -4 + i32.and + i32.const 4 + i32.add + i32.add + global.set $~lib/rt/itcms/total + local.get $2 + i32.const 20 + i32.add + local.tee $1 + local.get $0 + call $~lib/memory/memory.fill + local.get $1 ) (func $~lib/string/String.__eq (param $0 i32) (param $1 i32) (result i32) (local $2 i32) @@ -1798,7 +1803,7 @@ i32.load offset=16 i32.const 1 i32.shr_u - local.tee $4 + local.tee $2 local.get $1 i32.const 20 i32.sub @@ -1812,18 +1817,15 @@ end block $__inlined_func$~lib/util/string/compareImpl (result i32) local.get $0 - local.set $2 - local.get $1 - local.set $3 - local.get $2 + local.tee $3 i32.const 7 i32.and - local.get $3 + local.get $1 i32.const 7 i32.and i32.or i32.const 1 - local.get $4 + local.get $2 local.tee $0 i32.const 4 i32.ge_u @@ -1831,20 +1833,20 @@ i32.eqz if loop $do-continue|0 - local.get $2 - i64.load local.get $3 i64.load + local.get $1 + i64.load i64.eq if - local.get $2 - i32.const 8 - i32.add - local.set $2 local.get $3 i32.const 8 i32.add local.set $3 + local.get $1 + i32.const 8 + i32.add + local.set $1 local.get $0 i32.const 4 i32.sub @@ -1857,33 +1859,33 @@ end loop $while-continue|1 local.get $0 - local.tee $1 + local.tee $2 i32.const 1 i32.sub local.set $0 - local.get $1 + local.get $2 if - local.get $2 - i32.load16_u - local.tee $1 local.get $3 i32.load16_u + local.tee $2 + local.get $1 + i32.load16_u local.tee $4 i32.ne if - local.get $1 + local.get $2 local.get $4 i32.sub br $__inlined_func$~lib/util/string/compareImpl end - local.get $2 - i32.const 2 - i32.add - local.set $2 local.get $3 i32.const 2 i32.add local.set $3 + local.get $1 + i32.const 2 + i32.add + local.set $1 br $while-continue|1 end end diff --git a/tests/compiler/rt/finalize.optimized.wat b/tests/compiler/rt/finalize.optimized.wat index 8b15381f84..520787607e 100644 --- a/tests/compiler/rt/finalize.optimized.wat +++ b/tests/compiler/rt/finalize.optimized.wat @@ -1045,7 +1045,7 @@ local.get $0 i32.const 4 i32.add - local.tee $0 + local.tee $1 i32.const 17908 i32.ge_u if @@ -1055,20 +1055,20 @@ call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT - local.get $0 + local.get $1 i32.const 4 i32.sub - local.set $1 - local.get $0 + local.set $0 + local.get $1 i32.const 15 i32.and i32.const 1 - local.get $0 + local.get $1 select if (result i32) i32.const 1 else - local.get $1 + local.get $0 i32.load i32.const 1 i32.and @@ -1081,14 +1081,11 @@ call $~lib/builtins/abort unreachable end - local.get $1 - local.tee $0 + local.get $0 + local.get $0 i32.load i32.const 1 i32.or - local.set $1 - local.get $0 - local.get $1 i32.store local.get $0 call $~lib/rt/tlsf/insertBlock @@ -1101,8 +1098,7 @@ local.tee $0 local.get $0 i32.store offset=4 - global.get $~lib/rt/itcms/toSpace - local.tee $0 + local.get $0 local.get $0 i32.store offset=8 i32.const 0 diff --git a/tests/compiler/rt/instanceof.optimized.wat b/tests/compiler/rt/instanceof.optimized.wat index 2f088c4a51..d3b1a4a4c4 100644 --- a/tests/compiler/rt/instanceof.optimized.wat +++ b/tests/compiler/rt/instanceof.optimized.wat @@ -1070,7 +1070,7 @@ local.get $0 i32.const 4 i32.add - local.tee $0 + local.tee $1 i32.const 17940 i32.ge_u if @@ -1080,20 +1080,20 @@ call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT - local.get $0 + local.get $1 i32.const 4 i32.sub - local.set $1 - local.get $0 + local.set $0 + local.get $1 i32.const 15 i32.and i32.const 1 - local.get $0 + local.get $1 select if (result i32) i32.const 1 else - local.get $1 + local.get $0 i32.load i32.const 1 i32.and @@ -1106,14 +1106,11 @@ call $~lib/builtins/abort unreachable end - local.get $1 - local.tee $0 + local.get $0 + local.get $0 i32.load i32.const 1 i32.or - local.set $1 - local.get $0 - local.get $1 i32.store local.get $0 call $~lib/rt/tlsf/insertBlock @@ -1126,8 +1123,7 @@ local.tee $0 local.get $0 i32.store offset=4 - global.get $~lib/rt/itcms/toSpace - local.tee $0 + local.get $0 local.get $0 i32.store offset=8 i32.const 0 diff --git a/tests/compiler/rt/runtime-incremental-export.optimized.wat b/tests/compiler/rt/runtime-incremental-export.optimized.wat index f6d53b32c4..7ffaa7847e 100644 --- a/tests/compiler/rt/runtime-incremental-export.optimized.wat +++ b/tests/compiler/rt/runtime-incremental-export.optimized.wat @@ -1045,7 +1045,7 @@ local.get $0 i32.const 4 i32.add - local.tee $0 + local.tee $1 i32.const 17980 i32.ge_u if @@ -1055,20 +1055,20 @@ call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT - local.get $0 + local.get $1 i32.const 4 i32.sub - local.set $1 - local.get $0 + local.set $0 + local.get $1 i32.const 15 i32.and i32.const 1 - local.get $0 + local.get $1 select if (result i32) i32.const 1 else - local.get $1 + local.get $0 i32.load i32.const 1 i32.and @@ -1081,14 +1081,11 @@ call $~lib/builtins/abort unreachable end - local.get $1 - local.tee $0 + local.get $0 + local.get $0 i32.load i32.const 1 i32.or - local.set $1 - local.get $0 - local.get $1 i32.store local.get $0 call $~lib/rt/tlsf/insertBlock @@ -1101,8 +1098,7 @@ local.tee $0 local.get $0 i32.store offset=4 - global.get $~lib/rt/itcms/toSpace - local.tee $0 + local.get $0 local.get $0 i32.store offset=8 i32.const 0 @@ -1242,80 +1238,11 @@ end end ) - (func $~lib/rt/itcms/__new (param $0 i32) (param $1 i32) (result i32) + (func $~lib/rt/tlsf/allocateBlock (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) - (local $5 i32) - (local $6 i32) - local.get $0 - i32.const 1073741804 - i32.ge_u - if - i32.const 1056 - i32.const 1120 - i32.const 260 - i32.const 31 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/rt/itcms/total - global.get $~lib/rt/itcms/threshold - i32.ge_u - if - block $__inlined_func$~lib/rt/itcms/interrupt - i32.const 2048 - local.set $2 - loop $do-continue|0 - local.get $2 - call $~lib/rt/itcms/step - i32.sub - local.set $2 - global.get $~lib/rt/itcms/state - i32.eqz - if - global.get $~lib/rt/itcms/total - i64.extend_i32_u - i64.const 200 - i64.mul - i64.const 100 - i64.div_u - i32.wrap_i64 - i32.const 1024 - i32.add - global.set $~lib/rt/itcms/threshold - br $__inlined_func$~lib/rt/itcms/interrupt - end - local.get $2 - i32.const 0 - i32.gt_s - br_if $do-continue|0 - end - global.get $~lib/rt/itcms/total - local.tee $2 - local.get $2 - global.get $~lib/rt/itcms/threshold - i32.sub - i32.const 1024 - i32.lt_u - i32.const 10 - i32.shl - i32.add - global.set $~lib/rt/itcms/threshold - end - end - local.get $0 - i32.const 16 - i32.add - local.set $2 - global.get $~lib/rt/tlsf/ROOT - i32.eqz - if - call $~lib/rt/tlsf/initialize - end - global.get $~lib/rt/tlsf/ROOT - local.set $3 - local.get $2 + local.get $1 i32.const 1073741820 i32.gt_u if @@ -1326,14 +1253,15 @@ call $~lib/builtins/abort unreachable end - local.get $3 - local.get $2 + local.get $0 + local.tee $2 + local.get $1 i32.const 12 i32.le_u if (result i32) i32.const 12 else - local.get $2 + local.get $1 i32.const 19 i32.add i32.const -16 @@ -1341,19 +1269,19 @@ i32.const 4 i32.sub end - local.tee $2 + local.tee $0 call $~lib/rt/tlsf/searchBlock - local.tee $4 + local.tee $1 i32.eqz if - local.get $2 + local.get $0 i32.const 536870910 i32.lt_u if (result i32) - local.get $2 + local.get $0 i32.const 1 i32.const 27 - local.get $2 + local.get $0 i32.clz i32.sub i32.shl @@ -1361,16 +1289,16 @@ i32.sub i32.add else - local.get $2 + local.get $0 end i32.const 4 memory.size - local.tee $6 + local.tee $1 i32.const 16 i32.shl i32.const 4 i32.sub - local.get $3 + local.get $2 i32.load offset=1568 i32.ne i32.shl @@ -1381,18 +1309,18 @@ i32.and i32.const 16 i32.shr_u - local.set $5 - local.get $6 - local.get $5 - local.get $5 - local.get $6 - i32.lt_s + local.set $3 + local.get $1 + local.get $3 + local.get $1 + local.get $3 + i32.gt_s select memory.grow i32.const 0 i32.lt_s if - local.get $5 + local.get $3 memory.grow i32.const 0 i32.lt_s @@ -1400,18 +1328,18 @@ unreachable end end - local.get $3 - local.get $6 + local.get $2 + local.get $1 i32.const 16 i32.shl memory.size i32.const 16 i32.shl call $~lib/rt/tlsf/addMemory - local.get $3 local.get $2 + local.get $0 call $~lib/rt/tlsf/searchBlock - local.tee $4 + local.tee $1 i32.eqz if i32.const 0 @@ -1422,8 +1350,8 @@ unreachable end end - local.get $2 - local.get $4 + local.get $0 + local.get $1 i32.load i32.const -4 i32.and @@ -1436,13 +1364,13 @@ call $~lib/builtins/abort unreachable end - local.get $3 - local.get $4 + local.get $2 + local.get $1 call $~lib/rt/tlsf/removeBlock - local.get $4 + local.get $1 i32.load - local.set $6 - local.get $2 + local.set $3 + local.get $0 i32.const 4 i32.add i32.const 15 @@ -1455,54 +1383,54 @@ call $~lib/builtins/abort unreachable end - local.get $6 + local.get $3 i32.const -4 i32.and - local.get $2 + local.get $0 i32.sub - local.tee $5 + local.tee $4 i32.const 16 i32.ge_u if - local.get $4 - local.get $2 - local.get $6 + local.get $1 + local.get $0 + local.get $3 i32.const 2 i32.and i32.or i32.store - local.get $2 - local.get $4 + local.get $0 + local.get $1 i32.const 4 i32.add i32.add - local.tee $2 - local.get $5 + local.tee $0 + local.get $4 i32.const 4 i32.sub i32.const 1 i32.or i32.store - local.get $3 local.get $2 + local.get $0 call $~lib/rt/tlsf/insertBlock else - local.get $4 - local.get $6 + local.get $1 + local.get $3 i32.const -2 i32.and i32.store - local.get $4 + local.get $1 i32.const 4 i32.add - local.tee $2 - local.get $4 + local.tee $0 + local.get $1 i32.load i32.const -4 i32.and i32.add - local.get $2 - local.get $4 + local.get $0 + local.get $1 i32.load i32.const -4 i32.and @@ -1512,182 +1440,143 @@ i32.and i32.store end - local.get $4 - local.get $1 - i32.store offset=12 - local.get $4 - local.get $0 - i32.store offset=16 - global.get $~lib/rt/itcms/fromSpace - local.tee $1 - i32.load offset=8 - local.set $2 - local.get $4 - local.get $1 - global.get $~lib/rt/itcms/white - i32.or - i32.store offset=4 - local.get $4 - local.get $2 - i32.store offset=8 - local.get $2 - local.get $4 - local.get $2 - i32.load offset=4 - i32.const 3 - i32.and - i32.or - i32.store offset=4 local.get $1 - local.get $4 - i32.store offset=8 - global.get $~lib/rt/itcms/total - local.get $4 - i32.load - i32.const -4 - i32.and - i32.const 4 - i32.add - i32.add - global.set $~lib/rt/itcms/total - local.get $4 - i32.const 20 - i32.add - local.tee $2 - local.set $3 + ) + (func $~lib/memory/memory.fill (param $0 i32) (param $1 i32) + (local $2 i32) block $~lib/util/memory/memset|inlined.0 - local.get $0 + local.get $1 i32.eqz br_if $~lib/util/memory/memset|inlined.0 - local.get $3 + local.get $0 i32.const 0 i32.store8 local.get $0 - local.get $3 + local.get $1 i32.add - local.tee $1 + local.tee $2 i32.const 1 i32.sub i32.const 0 i32.store8 - local.get $0 + local.get $1 i32.const 2 i32.le_u br_if $~lib/util/memory/memset|inlined.0 - local.get $3 + local.get $0 i32.const 0 i32.store8 offset=1 - local.get $3 + local.get $0 i32.const 0 i32.store8 offset=2 - local.get $1 + local.get $2 i32.const 2 i32.sub i32.const 0 i32.store8 - local.get $1 + local.get $2 i32.const 3 i32.sub i32.const 0 i32.store8 - local.get $0 + local.get $1 i32.const 6 i32.le_u br_if $~lib/util/memory/memset|inlined.0 - local.get $3 + local.get $0 i32.const 0 i32.store8 offset=3 - local.get $1 + local.get $2 i32.const 4 i32.sub i32.const 0 i32.store8 - local.get $0 + local.get $1 i32.const 8 i32.le_u br_if $~lib/util/memory/memset|inlined.0 - local.get $3 + local.get $0 i32.const 0 - local.get $3 + local.get $0 i32.sub i32.const 3 i32.and - local.tee $1 + local.tee $2 i32.add - local.tee $5 + local.tee $0 i32.const 0 i32.store - local.get $5 local.get $0 local.get $1 + local.get $2 i32.sub i32.const -4 i32.and - local.tee $3 + local.tee $2 i32.add - local.tee $0 + local.tee $1 i32.const 4 i32.sub i32.const 0 i32.store - local.get $3 + local.get $2 i32.const 8 i32.le_u br_if $~lib/util/memory/memset|inlined.0 - local.get $5 + local.get $0 i32.const 0 i32.store offset=4 - local.get $5 + local.get $0 i32.const 0 i32.store offset=8 - local.get $0 + local.get $1 i32.const 12 i32.sub i32.const 0 i32.store - local.get $0 + local.get $1 i32.const 8 i32.sub i32.const 0 i32.store - local.get $3 + local.get $2 i32.const 24 i32.le_u br_if $~lib/util/memory/memset|inlined.0 - local.get $5 + local.get $0 i32.const 0 i32.store offset=12 - local.get $5 + local.get $0 i32.const 0 i32.store offset=16 - local.get $5 + local.get $0 i32.const 0 i32.store offset=20 - local.get $5 + local.get $0 i32.const 0 i32.store offset=24 - local.get $0 + local.get $1 i32.const 28 i32.sub i32.const 0 i32.store - local.get $0 + local.get $1 i32.const 24 i32.sub i32.const 0 i32.store - local.get $0 + local.get $1 i32.const 20 i32.sub i32.const 0 i32.store - local.get $0 + local.get $1 i32.const 16 i32.sub i32.const 0 i32.store - local.get $5 - local.get $5 + local.get $0 + local.get $0 i32.const 4 i32.and i32.const 24 @@ -1695,7 +1584,7 @@ local.tee $1 i32.add local.set $0 - local.get $3 + local.get $2 local.get $1 i32.sub local.set $1 @@ -1728,7 +1617,123 @@ end end end + ) + (func $~lib/rt/itcms/__new (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + local.get $0 + i32.const 1073741804 + i32.ge_u + if + i32.const 1056 + i32.const 1120 + i32.const 260 + i32.const 31 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.ge_u + if + block $__inlined_func$~lib/rt/itcms/interrupt + i32.const 2048 + local.set $2 + loop $do-continue|0 + local.get $2 + call $~lib/rt/itcms/step + i32.sub + local.set $2 + global.get $~lib/rt/itcms/state + i32.eqz + if + global.get $~lib/rt/itcms/total + i64.extend_i32_u + i64.const 200 + i64.mul + i64.const 100 + i64.div_u + i32.wrap_i64 + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold + br $__inlined_func$~lib/rt/itcms/interrupt + end + local.get $2 + i32.const 0 + i32.gt_s + br_if $do-continue|0 + end + global.get $~lib/rt/itcms/total + local.tee $2 + local.get $2 + global.get $~lib/rt/itcms/threshold + i32.sub + i32.const 1024 + i32.lt_u + i32.const 10 + i32.shl + i32.add + global.set $~lib/rt/itcms/threshold + end + end + local.get $0 + i32.const 16 + i32.add + local.set $2 + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $2 + call $~lib/rt/tlsf/allocateBlock + local.tee $2 + local.get $1 + i32.store offset=12 + local.get $2 + local.get $0 + i32.store offset=16 + global.get $~lib/rt/itcms/fromSpace + local.tee $3 + i32.load offset=8 + local.set $1 local.get $2 + local.get $3 + global.get $~lib/rt/itcms/white + i32.or + i32.store offset=4 + local.get $2 + local.get $1 + i32.store offset=8 + local.get $1 + local.get $2 + local.get $1 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + local.get $3 + local.get $2 + i32.store offset=8 + global.get $~lib/rt/itcms/total + local.get $2 + i32.load + i32.const -4 + i32.and + i32.const 4 + i32.add + i32.add + global.set $~lib/rt/itcms/total + local.get $2 + i32.const 20 + i32.add + local.tee $1 + local.get $0 + call $~lib/memory/memory.fill + local.get $1 ) (func $~lib/rt/itcms/__pin (param $0 i32) (result i32) (local $1 i32) diff --git a/tests/compiler/rt/runtime-minimal-export.optimized.wat b/tests/compiler/rt/runtime-minimal-export.optimized.wat index 3971c2f831..e04198df8b 100644 --- a/tests/compiler/rt/runtime-minimal-export.optimized.wat +++ b/tests/compiler/rt/runtime-minimal-export.optimized.wat @@ -1,8 +1,8 @@ (module (type $i32_=>_none (func (param i32))) (type $none_=>_none (func)) - (type $i32_i32_=>_none (func (param i32 i32))) (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) + (type $i32_i32_=>_none (func (param i32 i32))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) (type $i32_=>_i32 (func (param i32) (result i32))) @@ -757,34 +757,11 @@ end end ) - (func $~lib/rt/tcms/__new (param $0 i32) (param $1 i32) (result i32) + (func $~lib/rt/tlsf/allocateBlock (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) - (local $5 i32) - (local $6 i32) - local.get $0 - i32.const 1073741804 - i32.gt_u - if - i32.const 1056 - i32.const 1120 - i32.const 125 - i32.const 30 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 16 - i32.add - local.set $6 - global.get $~lib/rt/tlsf/ROOT - i32.eqz - if - call $~lib/rt/tlsf/initialize - end - global.get $~lib/rt/tlsf/ROOT - local.get $6 + local.get $1 i32.const 1073741820 i32.gt_u if @@ -795,14 +772,15 @@ call $~lib/builtins/abort unreachable end + local.get $0 local.tee $2 - local.get $6 + local.get $1 i32.const 12 i32.le_u if (result i32) i32.const 12 else - local.get $6 + local.get $1 i32.const 19 i32.add i32.const -16 @@ -810,19 +788,19 @@ i32.const 4 i32.sub end - local.tee $3 + local.tee $0 call $~lib/rt/tlsf/searchBlock - local.tee $6 + local.tee $1 i32.eqz if - local.get $3 + local.get $0 i32.const 536870910 i32.lt_u if (result i32) - local.get $3 + local.get $0 i32.const 1 i32.const 27 - local.get $3 + local.get $0 i32.clz i32.sub i32.shl @@ -830,11 +808,11 @@ i32.sub i32.add else - local.get $3 + local.get $0 end i32.const 4 memory.size - local.tee $6 + local.tee $1 i32.const 16 i32.shl i32.const 4 @@ -850,18 +828,18 @@ i32.and i32.const 16 i32.shr_u - local.set $5 - local.get $6 - local.get $5 - local.get $5 - local.get $6 - i32.lt_s + local.set $3 + local.get $1 + local.get $3 + local.get $1 + local.get $3 + i32.gt_s select memory.grow i32.const 0 i32.lt_s if - local.get $5 + local.get $3 memory.grow i32.const 0 i32.lt_s @@ -870,7 +848,7 @@ end end local.get $2 - local.get $6 + local.get $1 i32.const 16 i32.shl memory.size @@ -878,9 +856,9 @@ i32.shl call $~lib/rt/tlsf/addMemory local.get $2 - local.get $3 + local.get $0 call $~lib/rt/tlsf/searchBlock - local.tee $6 + local.tee $1 i32.eqz if i32.const 0 @@ -891,8 +869,8 @@ unreachable end end - local.get $3 - local.get $6 + local.get $0 + local.get $1 i32.load i32.const -4 i32.and @@ -906,12 +884,12 @@ unreachable end local.get $2 - local.get $6 + local.get $1 call $~lib/rt/tlsf/removeBlock - local.get $6 + local.get $1 i32.load - local.set $5 - local.get $3 + local.set $3 + local.get $0 i32.const 4 i32.add i32.const 15 @@ -924,28 +902,28 @@ call $~lib/builtins/abort unreachable end - local.get $5 + local.get $3 i32.const -4 i32.and - local.get $3 + local.get $0 i32.sub local.tee $4 i32.const 16 i32.ge_u if - local.get $6 + local.get $1 + local.get $0 local.get $3 - local.get $5 i32.const 2 i32.and i32.or i32.store - local.get $3 - local.get $6 + local.get $0 + local.get $1 i32.const 4 i32.add i32.add - local.tee $3 + local.tee $0 local.get $4 i32.const 4 i32.sub @@ -953,25 +931,25 @@ i32.or i32.store local.get $2 - local.get $3 + local.get $0 call $~lib/rt/tlsf/insertBlock else - local.get $6 - local.get $5 + local.get $1 + local.get $3 i32.const -2 i32.and i32.store - local.get $6 + local.get $1 i32.const 4 i32.add - local.tee $3 - local.get $6 + local.tee $0 + local.get $1 i32.load i32.const -4 i32.and i32.add - local.get $3 - local.get $6 + local.get $0 + local.get $1 i32.load i32.const -4 i32.and @@ -981,26 +959,53 @@ i32.and i32.store end - local.get $6 + local.get $1 + ) + (func $~lib/rt/tcms/__new (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + local.get $0 + i32.const 1073741804 + i32.gt_u + if + i32.const 1056 + i32.const 1120 + i32.const 125 + i32.const 30 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 16 + i32.add + local.set $2 + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $2 + call $~lib/rt/tlsf/allocateBlock + local.tee $2 local.get $1 i32.store offset=12 - local.get $6 + local.get $2 local.get $0 i32.store offset=16 global.get $~lib/rt/tcms/fromSpace local.tee $1 i32.load offset=8 local.set $0 - local.get $6 + local.get $2 local.get $1 global.get $~lib/rt/tcms/white i32.or i32.store offset=4 - local.get $6 + local.get $2 local.get $0 i32.store offset=8 local.get $0 - local.get $6 + local.get $2 local.get $0 i32.load offset=4 i32.const 3 @@ -1008,10 +1013,10 @@ i32.or i32.store offset=4 local.get $1 - local.get $6 + local.get $2 i32.store offset=8 global.get $~lib/rt/tcms/total - local.get $6 + local.get $2 i32.load i32.const -4 i32.and @@ -1019,7 +1024,7 @@ i32.add i32.add global.set $~lib/rt/tcms/total - local.get $6 + local.get $2 i32.const 20 i32.add ) @@ -1229,19 +1234,19 @@ end global.get $~lib/rt/tcms/white i32.eqz - local.set $4 + local.set $5 global.get $~lib/rt/tcms/toSpace - local.tee $5 + local.tee $6 i32.load offset=4 i32.const -4 i32.and local.set $0 loop $while-continue|1 local.get $0 - local.get $5 + local.get $6 i32.ne if - local.get $4 + local.get $5 local.get $0 i32.load offset=4 i32.const 3 @@ -1319,7 +1324,7 @@ local.get $0 i32.const 4 i32.add - local.tee $0 + local.tee $4 i32.const 1484 i32.ge_u if @@ -1329,15 +1334,15 @@ call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT - local.get $0 + local.get $4 i32.const 4 i32.sub local.set $3 - local.get $0 + local.get $4 i32.const 15 i32.and i32.const 1 - local.get $0 + local.get $4 select if (result i32) i32.const 1 @@ -1375,11 +1380,11 @@ local.get $2 local.get $2 i32.store offset=8 - local.get $5 + local.get $6 global.set $~lib/rt/tcms/fromSpace local.get $2 global.set $~lib/rt/tcms/toSpace - local.get $4 + local.get $5 global.set $~lib/rt/tcms/white ) (func $~lib/rt/tcms/__visit (param $0 i32) diff --git a/tests/compiler/std-wasi/console.optimized.wat b/tests/compiler/std-wasi/console.optimized.wat index 0cb6c11f35..5170fd1a80 100644 --- a/tests/compiler/std-wasi/console.optimized.wat +++ b/tests/compiler/std-wasi/console.optimized.wat @@ -14,7 +14,6 @@ (import "wasi_snapshot_preview1" "fd_write" (func $~lib/bindings/wasi_snapshot_preview1/fd_write (param i32 i32 i32 i32) (result i32))) (import "wasi_snapshot_preview1" "proc_exit" (func $~lib/bindings/wasi_snapshot_preview1/proc_exit (param i32))) (import "wasi_snapshot_preview1" "clock_time_get" (func $~lib/bindings/wasi_snapshot_preview1/clock_time_get (param i32 i64 i32) (result i32))) - (global $~argumentsLength (mut i32) (i32.const 0)) (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) (global $~lib/rt/itcms/threshold (mut i32) (i32.const 0)) @@ -278,57 +277,47 @@ (data (i32.const 7964) "\10\02\82") (export "memory" (memory $0)) (export "_start" (func $~start)) - (func $~lib/string/String.UTF8.encodeUnsafe@varargs (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/string/String.UTF8.encodeUnsafe (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) - block $2of2 - block $outOfRange - global.get $~argumentsLength - i32.const 3 - i32.sub - br_table $2of2 $2of2 $2of2 $outOfRange - end - unreachable - end local.get $0 - local.tee $3 local.get $1 i32.const 1 i32.shl i32.add local.set $4 local.get $2 - local.set $0 + local.set $1 loop $while-continue|0 - local.get $3 + local.get $0 local.get $4 i32.lt_u if - local.get $3 + local.get $0 i32.load16_u - local.tee $1 + local.tee $3 i32.const 128 i32.lt_u if (result i32) - local.get $0 local.get $1 + local.get $3 i32.store8 - local.get $0 + local.get $1 i32.const 1 i32.add else - local.get $1 + local.get $3 i32.const 2048 i32.lt_u if (result i32) - local.get $0 local.get $1 + local.get $3 i32.const 6 i32.shr_u i32.const 192 i32.or - local.get $1 + local.get $3 i32.const 63 i32.and i32.const 128 @@ -337,28 +326,28 @@ i32.shl i32.or i32.store16 - local.get $0 + local.get $1 i32.const 2 i32.add else - local.get $1 + local.get $3 i32.const 63488 i32.and i32.const 55296 i32.eq if local.get $4 - local.get $3 + local.get $0 i32.const 2 i32.add i32.gt_u i32.const 0 - local.get $1 + local.get $3 i32.const 56320 i32.lt_u select if - local.get $3 + local.get $0 i32.load16_u offset=2 local.tee $5 i32.const 64512 @@ -366,8 +355,8 @@ i32.const 56320 i32.eq if - local.get $0 local.get $1 + local.get $3 i32.const 1023 i32.and i32.const 10 @@ -378,14 +367,14 @@ i32.const 1023 i32.and i32.or - local.tee $1 + local.tee $3 i32.const 63 i32.and i32.const 128 i32.or i32.const 24 i32.shl - local.get $1 + local.get $3 i32.const 6 i32.shr_u i32.const 63 @@ -395,7 +384,7 @@ i32.const 16 i32.shl i32.or - local.get $1 + local.get $3 i32.const 12 i32.shr_u i32.const 63 @@ -405,32 +394,32 @@ i32.const 8 i32.shl i32.or - local.get $1 + local.get $3 i32.const 18 i32.shr_u i32.const 240 i32.or i32.or i32.store - local.get $0 + local.get $1 i32.const 4 i32.add - local.set $0 - local.get $3 + local.set $1 + local.get $0 i32.const 4 i32.add - local.set $3 + local.set $0 br $while-continue|0 end end end - local.get $0 local.get $1 + local.get $3 i32.const 12 i32.shr_u i32.const 224 i32.or - local.get $1 + local.get $3 i32.const 6 i32.shr_u i32.const 63 @@ -441,27 +430,27 @@ i32.shl i32.or i32.store16 - local.get $0 local.get $1 + local.get $3 i32.const 63 i32.and i32.const 128 i32.or i32.store8 offset=2 - local.get $0 + local.get $1 i32.const 3 i32.add end end - local.set $0 - local.get $3 + local.set $1 + local.get $0 i32.const 2 i32.add - local.set $3 + local.set $0 br $while-continue|0 end end - local.get $0 + local.get $1 local.get $2 i32.sub ) @@ -475,19 +464,15 @@ i64.store local.get $0 if (result i32) + local.get $0 local.get $0 i32.const 20 i32.sub i32.load offset=16 i32.const 1 i32.shr_u - local.set $4 - i32.const 3 - global.set $~argumentsLength - local.get $0 - local.get $4 i32.const 19 - call $~lib/string/String.UTF8.encodeUnsafe@varargs + call $~lib/string/String.UTF8.encodeUnsafe i32.const 19 i32.add else @@ -502,19 +487,15 @@ local.set $4 local.get $1 if + local.get $1 local.get $1 i32.const 20 i32.sub i32.load offset=16 i32.const 1 i32.shr_u - local.set $0 - i32.const 3 - global.set $~argumentsLength - local.get $1 - local.get $0 local.get $4 - call $~lib/string/String.UTF8.encodeUnsafe@varargs + call $~lib/string/String.UTF8.encodeUnsafe local.get $4 i32.add local.set $4 @@ -1990,10 +1971,10 @@ (local $4 i32) (local $5 i32) i32.const -1 - local.set $2 - i32.const -1 local.set $3 i32.const -1 + local.set $2 + i32.const -1 local.set $4 block $break|0 block $case4|0 @@ -2018,14 +1999,14 @@ end local.get $1 i32.load16_u offset=4 - local.tee $3 + local.tee $2 i32.const 128 i32.ge_u br_if $break|0 end local.get $1 i32.load16_u offset=2 - local.tee $2 + local.tee $3 i32.const 128 i32.ge_u br_if $break|0 @@ -2040,12 +2021,12 @@ i32.const 1144 i32.store i32.const 1140 - local.get $2 + local.get $3 i32.const -1 i32.ne i32.const 1 i32.add - local.get $3 + local.get $2 i32.const -1 i32.ne i32.add @@ -2056,11 +2037,11 @@ i32.store i32.const 1144 local.get $5 - local.get $2 + local.get $3 i32.const 8 i32.shl i32.or - local.get $3 + local.get $2 i32.const 16 i32.shl i32.or @@ -2090,15 +2071,16 @@ return end local.get $1 - local.tee $2 - local.get $2 + local.set $2 + i32.const 0 + local.set $3 + local.get $1 + local.get $1 i32.const 20 i32.sub i32.load offset=16 i32.add local.set $4 - i32.const 0 - local.set $3 loop $while-continue|0 local.get $2 local.get $4 @@ -2178,21 +2160,18 @@ call $~lib/rt/tlsf/allocateBlock i32.const 4 i32.add - local.set $3 + local.set $2 + local.get $1 local.get $1 i32.const 20 i32.sub i32.load offset=16 i32.const 1 i32.shr_u - local.set $5 - i32.const 3 - global.set $~argumentsLength - local.get $1 - local.get $5 - local.get $3 - call $~lib/string/String.UTF8.encodeUnsafe@varargs local.get $2 + local.tee $1 + call $~lib/string/String.UTF8.encodeUnsafe + local.get $3 i32.ne if i32.const 0 @@ -2203,10 +2182,10 @@ unreachable end i32.const 1136 - local.get $3 + local.get $1 i32.store i32.const 1140 - local.get $2 + local.get $3 i32.store local.get $0 i32.const 1136 @@ -2214,7 +2193,7 @@ i32.const 1144 call $~lib/bindings/wasi_snapshot_preview1/fd_write local.set $0 - local.get $3 + local.get $1 call $~lib/rt/tlsf/__free local.get $0 i32.const 65535 @@ -3666,11 +3645,11 @@ i32.shl i32.add i32.load - local.set $0 + local.set $5 loop $while-continue|0 - local.get $0 + local.get $5 if - local.get $0 + local.get $5 i32.load offset=16 local.tee $6 i32.const 1 @@ -3679,27 +3658,27 @@ i32.const 0 else global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $5 i32.load - local.tee $2 + local.tee $4 i32.store block $__inlined_func$~lib/string/String.__eq (result i32) i32.const 1 local.get $1 - local.get $2 + local.get $4 i32.eq br_if $__inlined_func$~lib/string/String.__eq drop i32.const 0 local.get $1 i32.const 0 - local.get $2 + local.get $4 select i32.eqz br_if $__inlined_func$~lib/string/String.__eq drop i32.const 0 - local.get $2 + local.get $4 i32.const 20 i32.sub i32.load offset=16 @@ -3716,18 +3695,17 @@ br_if $__inlined_func$~lib/string/String.__eq drop block $__inlined_func$~lib/util/string/compareImpl (result i32) - local.get $2 - local.tee $4 + local.get $4 i32.const 7 i32.and local.get $1 - local.tee $5 + local.tee $2 i32.const 7 i32.and i32.or i32.const 1 local.get $3 - local.tee $2 + local.tee $0 i32.const 4 i32.ge_u select @@ -3736,7 +3714,7 @@ loop $do-continue|0 local.get $4 i64.load - local.get $5 + local.get $2 i64.load i64.eq if @@ -3744,14 +3722,14 @@ i32.const 8 i32.add local.set $4 - local.get $5 + local.get $2 i32.const 8 i32.add - local.set $5 - local.get $2 + local.set $2 + local.get $0 i32.const 4 i32.sub - local.tee $2 + local.tee $0 i32.const 4 i32.ge_u br_if $do-continue|0 @@ -3759,17 +3737,17 @@ end end loop $while-continue|1 - local.get $2 + local.get $0 local.tee $3 i32.const 1 i32.sub - local.set $2 + local.set $0 local.get $3 if local.get $4 i32.load16_u local.tee $3 - local.get $5 + local.get $2 i32.load16_u local.tee $7 i32.ne @@ -3783,10 +3761,10 @@ i32.const 2 i32.add local.set $4 - local.get $5 + local.get $2 i32.const 2 i32.add - local.set $5 + local.set $2 br $while-continue|1 end end @@ -3800,13 +3778,13 @@ i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $0 + local.get $5 return end local.get $6 i32.const -2 i32.and - local.set $0 + local.set $5 br $while-continue|0 end end diff --git a/tests/compiler/std-wasi/crypto.optimized.wat b/tests/compiler/std-wasi/crypto.optimized.wat index 6cdd9c5ad6..b189259abb 100644 --- a/tests/compiler/std-wasi/crypto.optimized.wat +++ b/tests/compiler/std-wasi/crypto.optimized.wat @@ -12,7 +12,6 @@ (import "wasi_snapshot_preview1" "fd_write" (func $~lib/bindings/wasi_snapshot_preview1/fd_write (param i32 i32 i32 i32) (result i32))) (import "wasi_snapshot_preview1" "proc_exit" (func $~lib/bindings/wasi_snapshot_preview1/proc_exit (param i32))) (import "wasi_snapshot_preview1" "random_get" (func $~lib/bindings/wasi_snapshot_preview1/random_get (param i32 i32) (result i32))) - (global $~argumentsLength (mut i32) (i32.const 0)) (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) (global $~lib/rt/itcms/threshold (mut i32) (i32.const 0)) (global $~lib/rt/itcms/state (mut i32) (i32.const 0)) @@ -235,57 +234,47 @@ (data (i32.const 6892) "A\00\00\00\02") (export "memory" (memory $0)) (export "_start" (func $~start)) - (func $~lib/string/String.UTF8.encodeUnsafe@varargs (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/string/String.UTF8.encodeUnsafe (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) - block $2of2 - block $outOfRange - global.get $~argumentsLength - i32.const 3 - i32.sub - br_table $2of2 $2of2 $2of2 $outOfRange - end - unreachable - end local.get $0 - local.tee $3 local.get $1 i32.const 1 i32.shl i32.add local.set $4 local.get $2 - local.set $0 + local.set $1 loop $while-continue|0 - local.get $3 + local.get $0 local.get $4 i32.lt_u if - local.get $3 + local.get $0 i32.load16_u - local.tee $1 + local.tee $3 i32.const 128 i32.lt_u if (result i32) - local.get $0 local.get $1 + local.get $3 i32.store8 - local.get $0 + local.get $1 i32.const 1 i32.add else - local.get $1 + local.get $3 i32.const 2048 i32.lt_u if (result i32) - local.get $0 local.get $1 + local.get $3 i32.const 6 i32.shr_u i32.const 192 i32.or - local.get $1 + local.get $3 i32.const 63 i32.and i32.const 128 @@ -294,28 +283,28 @@ i32.shl i32.or i32.store16 - local.get $0 + local.get $1 i32.const 2 i32.add else - local.get $1 + local.get $3 i32.const 63488 i32.and i32.const 55296 i32.eq if local.get $4 - local.get $3 + local.get $0 i32.const 2 i32.add i32.gt_u i32.const 0 - local.get $1 + local.get $3 i32.const 56320 i32.lt_u select if - local.get $3 + local.get $0 i32.load16_u offset=2 local.tee $5 i32.const 64512 @@ -323,8 +312,8 @@ i32.const 56320 i32.eq if - local.get $0 local.get $1 + local.get $3 i32.const 1023 i32.and i32.const 10 @@ -335,14 +324,14 @@ i32.const 1023 i32.and i32.or - local.tee $1 + local.tee $3 i32.const 63 i32.and i32.const 128 i32.or i32.const 24 i32.shl - local.get $1 + local.get $3 i32.const 6 i32.shr_u i32.const 63 @@ -352,7 +341,7 @@ i32.const 16 i32.shl i32.or - local.get $1 + local.get $3 i32.const 12 i32.shr_u i32.const 63 @@ -362,32 +351,32 @@ i32.const 8 i32.shl i32.or - local.get $1 + local.get $3 i32.const 18 i32.shr_u i32.const 240 i32.or i32.or i32.store - local.get $0 + local.get $1 i32.const 4 i32.add - local.set $0 - local.get $3 + local.set $1 + local.get $0 i32.const 4 i32.add - local.set $3 + local.set $0 br $while-continue|0 end end end - local.get $0 local.get $1 + local.get $3 i32.const 12 i32.shr_u i32.const 224 i32.or - local.get $1 + local.get $3 i32.const 6 i32.shr_u i32.const 63 @@ -398,27 +387,27 @@ i32.shl i32.or i32.store16 - local.get $0 local.get $1 + local.get $3 i32.const 63 i32.and i32.const 128 i32.or i32.store8 offset=2 - local.get $0 + local.get $1 i32.const 3 i32.add end end - local.set $0 - local.get $3 + local.set $1 + local.get $0 i32.const 2 i32.add - local.set $3 + local.set $0 br $while-continue|0 end end - local.get $0 + local.get $1 local.get $2 i32.sub ) @@ -432,19 +421,15 @@ i64.store local.get $0 if (result i32) + local.get $0 local.get $0 i32.const 20 i32.sub i32.load offset=16 i32.const 1 i32.shr_u - local.set $4 - i32.const 3 - global.set $~argumentsLength - local.get $0 - local.get $4 i32.const 19 - call $~lib/string/String.UTF8.encodeUnsafe@varargs + call $~lib/string/String.UTF8.encodeUnsafe i32.const 19 i32.add else @@ -459,19 +444,15 @@ local.set $4 local.get $1 if + local.get $1 local.get $1 i32.const 20 i32.sub i32.load offset=16 i32.const 1 i32.shr_u - local.set $0 - i32.const 3 - global.set $~argumentsLength - local.get $1 - local.get $0 local.get $4 - call $~lib/string/String.UTF8.encodeUnsafe@varargs + call $~lib/string/String.UTF8.encodeUnsafe local.get $4 i32.add local.set $4 @@ -3973,10 +3954,10 @@ (local $3 i32) (local $4 i32) i32.const -1 - local.set $1 - i32.const -1 local.set $2 i32.const -1 + local.set $1 + i32.const -1 local.set $3 block $break|0 block $case4|0 @@ -4001,14 +3982,14 @@ end local.get $0 i32.load16_u offset=4 - local.tee $2 + local.tee $1 i32.const 128 i32.ge_u br_if $break|0 end local.get $0 i32.load16_u offset=2 - local.tee $1 + local.tee $2 i32.const 128 i32.ge_u br_if $break|0 @@ -4023,12 +4004,12 @@ i32.const 6680 i32.store i32.const 6676 - local.get $1 + local.get $2 i32.const -1 i32.ne i32.const 1 i32.add - local.get $2 + local.get $1 i32.const -1 i32.ne i32.add @@ -4039,11 +4020,11 @@ i32.store i32.const 6680 local.get $4 - local.get $1 + local.get $2 i32.const 8 i32.shl i32.or - local.get $2 + local.get $1 i32.const 16 i32.shl i32.or @@ -4074,6 +4055,8 @@ end local.get $0 local.set $1 + i32.const 0 + local.set $2 local.get $0 local.get $0 i32.const 20 @@ -4081,8 +4064,6 @@ i32.load offset=16 i32.add local.set $3 - i32.const 0 - local.set $2 loop $while-continue|0 local.get $1 local.get $3 @@ -4162,21 +4143,18 @@ call $~lib/rt/tlsf/allocateBlock i32.const 4 i32.add - local.set $2 + local.set $1 + local.get $0 local.get $0 i32.const 20 i32.sub i32.load offset=16 i32.const 1 i32.shr_u - local.set $4 - i32.const 3 - global.set $~argumentsLength - local.get $0 - local.get $4 - local.get $2 - call $~lib/string/String.UTF8.encodeUnsafe@varargs local.get $1 + local.tee $0 + call $~lib/string/String.UTF8.encodeUnsafe + local.get $2 i32.ne if i32.const 0 @@ -4187,24 +4165,24 @@ unreachable end i32.const 6672 - local.get $2 + local.get $0 i32.store i32.const 6676 - local.get $1 + local.get $2 i32.store i32.const 1 i32.const 6672 i32.const 1 i32.const 6680 call $~lib/bindings/wasi_snapshot_preview1/fd_write - local.set $0 - local.get $2 - call $~lib/rt/tlsf/__free + local.set $2 local.get $0 + call $~lib/rt/tlsf/__free + local.get $2 i32.const 65535 i32.and if - local.get $0 + local.get $2 call $~lib/bindings/wasi_snapshot_preview1/errnoToString i32.const 6720 i32.const 189 @@ -4824,8 +4802,6 @@ global.get $std-wasi/crypto/ab local.tee $0 i32.store - i32.const 1 - global.set $~argumentsLength local.get $0 i32.const 0 i32.const -1 diff --git a/tests/compiler/std-wasi/process.optimized.wat b/tests/compiler/std-wasi/process.optimized.wat index 175c18f395..dde3872061 100644 --- a/tests/compiler/std-wasi/process.optimized.wat +++ b/tests/compiler/std-wasi/process.optimized.wat @@ -19,7 +19,6 @@ (import "wasi_snapshot_preview1" "environ_get" (func $~lib/bindings/wasi_snapshot_preview1/environ_get (param i32 i32) (result i32))) (import "wasi_snapshot_preview1" "clock_time_get" (func $~lib/bindings/wasi_snapshot_preview1/clock_time_get (param i32 i64 i32) (result i32))) (import "wasi_snapshot_preview1" "fd_read" (func $~lib/bindings/wasi_snapshot_preview1/fd_read (param i32 i32 i32 i32) (result i32))) - (global $~argumentsLength (mut i32) (i32.const 0)) (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) (global $~lib/rt/itcms/threshold (mut i32) (i32.const 0)) @@ -265,57 +264,47 @@ (data (i32.const 7388) "\02A\00\00\00\00\00\00\10A\82") (export "memory" (memory $0)) (export "_start" (func $~start)) - (func $~lib/string/String.UTF8.encodeUnsafe@varargs (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/string/String.UTF8.encodeUnsafe (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) - block $2of2 - block $outOfRange - global.get $~argumentsLength - i32.const 3 - i32.sub - br_table $2of2 $2of2 $2of2 $outOfRange - end - unreachable - end local.get $0 - local.tee $3 local.get $1 i32.const 1 i32.shl i32.add local.set $4 local.get $2 - local.set $0 + local.set $1 loop $while-continue|0 - local.get $3 + local.get $0 local.get $4 i32.lt_u if - local.get $3 + local.get $0 i32.load16_u - local.tee $1 + local.tee $3 i32.const 128 i32.lt_u if (result i32) - local.get $0 local.get $1 + local.get $3 i32.store8 - local.get $0 + local.get $1 i32.const 1 i32.add else - local.get $1 + local.get $3 i32.const 2048 i32.lt_u if (result i32) - local.get $0 local.get $1 + local.get $3 i32.const 6 i32.shr_u i32.const 192 i32.or - local.get $1 + local.get $3 i32.const 63 i32.and i32.const 128 @@ -324,28 +313,28 @@ i32.shl i32.or i32.store16 - local.get $0 + local.get $1 i32.const 2 i32.add else - local.get $1 + local.get $3 i32.const 63488 i32.and i32.const 55296 i32.eq if local.get $4 - local.get $3 + local.get $0 i32.const 2 i32.add i32.gt_u i32.const 0 - local.get $1 + local.get $3 i32.const 56320 i32.lt_u select if - local.get $3 + local.get $0 i32.load16_u offset=2 local.tee $5 i32.const 64512 @@ -353,8 +342,8 @@ i32.const 56320 i32.eq if - local.get $0 local.get $1 + local.get $3 i32.const 1023 i32.and i32.const 10 @@ -365,14 +354,14 @@ i32.const 1023 i32.and i32.or - local.tee $1 + local.tee $3 i32.const 63 i32.and i32.const 128 i32.or i32.const 24 i32.shl - local.get $1 + local.get $3 i32.const 6 i32.shr_u i32.const 63 @@ -382,7 +371,7 @@ i32.const 16 i32.shl i32.or - local.get $1 + local.get $3 i32.const 12 i32.shr_u i32.const 63 @@ -392,32 +381,32 @@ i32.const 8 i32.shl i32.or - local.get $1 + local.get $3 i32.const 18 i32.shr_u i32.const 240 i32.or i32.or i32.store - local.get $0 + local.get $1 i32.const 4 i32.add - local.set $0 - local.get $3 + local.set $1 + local.get $0 i32.const 4 i32.add - local.set $3 + local.set $0 br $while-continue|0 end end end - local.get $0 local.get $1 + local.get $3 i32.const 12 i32.shr_u i32.const 224 i32.or - local.get $1 + local.get $3 i32.const 6 i32.shr_u i32.const 63 @@ -428,27 +417,27 @@ i32.shl i32.or i32.store16 - local.get $0 local.get $1 + local.get $3 i32.const 63 i32.and i32.const 128 i32.or i32.store8 offset=2 - local.get $0 + local.get $1 i32.const 3 i32.add end end - local.set $0 - local.get $3 + local.set $1 + local.get $0 i32.const 2 i32.add - local.set $3 + local.set $0 br $while-continue|0 end end - local.get $0 + local.get $1 local.get $2 i32.sub ) @@ -462,19 +451,15 @@ i64.store local.get $0 if (result i32) + local.get $0 local.get $0 i32.const 20 i32.sub i32.load offset=16 i32.const 1 i32.shr_u - local.set $4 - i32.const 3 - global.set $~argumentsLength - local.get $0 - local.get $4 i32.const 19 - call $~lib/string/String.UTF8.encodeUnsafe@varargs + call $~lib/string/String.UTF8.encodeUnsafe i32.const 19 i32.add else @@ -489,19 +474,15 @@ local.set $4 local.get $1 if + local.get $1 local.get $1 i32.const 20 i32.sub i32.load offset=16 i32.const 1 i32.shr_u - local.set $0 - i32.const 3 - global.set $~argumentsLength - local.get $1 - local.get $0 local.get $4 - call $~lib/string/String.UTF8.encodeUnsafe@varargs + call $~lib/string/String.UTF8.encodeUnsafe local.get $4 i32.add local.set $4 @@ -1977,10 +1958,10 @@ (local $3 i32) (local $4 i32) i32.const -1 - local.set $1 - i32.const -1 local.set $2 i32.const -1 + local.set $1 + i32.const -1 local.set $3 block $break|0 block $case4|0 @@ -2005,14 +1986,14 @@ end local.get $0 i32.load16_u offset=4 - local.tee $2 + local.tee $1 i32.const 128 i32.ge_u br_if $break|0 end local.get $0 i32.load16_u offset=2 - local.tee $1 + local.tee $2 i32.const 128 i32.ge_u br_if $break|0 @@ -2027,12 +2008,12 @@ i32.const 1096 i32.store i32.const 1092 - local.get $1 + local.get $2 i32.const -1 i32.ne i32.const 1 i32.add - local.get $2 + local.get $1 i32.const -1 i32.ne i32.add @@ -2043,11 +2024,11 @@ i32.store i32.const 1096 local.get $4 - local.get $1 + local.get $2 i32.const 8 i32.shl i32.or - local.get $2 + local.get $1 i32.const 16 i32.shl i32.or @@ -2078,6 +2059,8 @@ end local.get $0 local.set $1 + i32.const 0 + local.set $2 local.get $0 local.get $0 i32.const 20 @@ -2085,8 +2068,6 @@ i32.load offset=16 i32.add local.set $3 - i32.const 0 - local.set $2 loop $while-continue|0 local.get $1 local.get $3 @@ -2166,21 +2147,18 @@ call $~lib/rt/tlsf/allocateBlock i32.const 4 i32.add - local.set $2 + local.set $1 + local.get $0 local.get $0 i32.const 20 i32.sub i32.load offset=16 i32.const 1 i32.shr_u - local.set $4 - i32.const 3 - global.set $~argumentsLength - local.get $0 - local.get $4 - local.get $2 - call $~lib/string/String.UTF8.encodeUnsafe@varargs local.get $1 + local.tee $0 + call $~lib/string/String.UTF8.encodeUnsafe + local.get $2 i32.ne if i32.const 0 @@ -2191,24 +2169,24 @@ unreachable end i32.const 1088 - local.get $2 + local.get $0 i32.store i32.const 1092 - local.get $1 + local.get $2 i32.store i32.const 1 i32.const 1088 i32.const 1 i32.const 1096 call $~lib/bindings/wasi_snapshot_preview1/fd_write - local.set $0 - local.get $2 - call $~lib/rt/tlsf/__free + local.set $2 local.get $0 + call $~lib/rt/tlsf/__free + local.get $2 i32.const 65535 i32.and if - local.get $0 + local.get $2 call $~lib/bindings/wasi_snapshot_preview1/errnoToString i32.const 4224 i32.const 189 @@ -4912,24 +4890,24 @@ local.tee $7 i32.const 2 i32.shl - local.tee $0 + local.tee $2 i32.const 1092 i32.load i32.add local.tee $8 - local.set $2 + local.set $0 global.get $~lib/rt/tlsf/ROOT i32.eqz if call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT - local.get $2 + local.get $0 call $~lib/rt/tlsf/allocateBlock i32.const 4 i32.add local.tee $4 - local.get $0 + local.get $2 local.get $4 i32.add call $~lib/bindings/wasi_snapshot_preview1/environ_get @@ -4962,36 +4940,36 @@ i32.const 24 i32.const 4 call $~lib/rt/itcms/__new - local.tee $0 + local.tee $1 i32.store - local.get $0 + local.get $1 i32.const 16 call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $1 + local.tee $0 i32.store - local.get $0 local.get $1 + local.get $0 i32.const 0 call $~lib/rt/itcms/__link - local.get $0 + local.get $1 i32.const 3 i32.store offset=4 - local.get $0 + local.get $1 i32.const 48 call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $1 + local.tee $0 i32.store offset=8 - local.get $0 local.get $1 + local.get $0 i32.const 0 call $~lib/rt/itcms/__link - local.get $0 + local.get $1 i32.const 4 i32.store offset=12 - local.get $0 + local.get $1 i32.const 0 i32.store offset=16 - local.get $0 + local.get $1 i32.const 0 i32.store offset=20 global.get $~lib/memory/__stack_pointer @@ -4999,8 +4977,7 @@ i32.add global.set $~lib/memory/__stack_pointer local.get $2 - local.get $0 - local.tee $1 + local.get $1 i32.store loop $for-loop|0 local.get $5 @@ -5026,8 +5003,6 @@ global.get $~lib/memory/__stack_pointer i32.const 5168 i32.store offset=8 - i32.const 0 - local.set $0 block $__inlined_func$~lib/string/String#indexOf i32.const 5164 i32.load @@ -5035,9 +5010,11 @@ i32.shr_u local.tee $6 i32.eqz - br_if $__inlined_func$~lib/string/String#indexOf - i32.const -1 - local.set $0 + if + i32.const 0 + local.set $0 + br $__inlined_func$~lib/string/String#indexOf + end local.get $2 i32.const 20 i32.sub @@ -5046,7 +5023,11 @@ i32.shr_u local.tee $3 i32.eqz - br_if $__inlined_func$~lib/string/String#indexOf + if + i32.const -1 + local.set $0 + br $__inlined_func$~lib/string/String#indexOf + end i32.const 0 local.get $3 local.get $3 @@ -5058,7 +5039,7 @@ local.get $6 i32.sub local.set $3 - loop $for-loop|00 + loop $for-loop|01 local.get $0 local.get $3 i32.le_s @@ -5074,7 +5055,7 @@ i32.const 1 i32.add local.set $0 - br $for-loop|00 + br $for-loop|01 end end i32.const -1 diff --git a/tests/compiler/std/array-access.optimized.wat b/tests/compiler/std/array-access.optimized.wat index ead727b809..7396514921 100644 --- a/tests/compiler/std/array-access.optimized.wat +++ b/tests/compiler/std/array-access.optimized.wat @@ -33,8 +33,6 @@ i32.shr_u local.tee $1 local.get $1 - i32.const 0 - i32.gt_s select local.set $2 local.get $1 @@ -102,16 +100,16 @@ local.set $0 local.get $1 if - local.get $2 + local.get $3 i32.load16_u local.tee $1 - local.get $3 + local.get $2 i32.load16_u local.tee $4 i32.ne if - local.get $1 local.get $4 + local.get $1 i32.sub br $__inlined_func$~lib/util/string/compareImpl end diff --git a/tests/compiler/std/array-literal.optimized.wat b/tests/compiler/std/array-literal.optimized.wat index c4d0037a4b..c54eab323a 100644 --- a/tests/compiler/std/array-literal.optimized.wat +++ b/tests/compiler/std/array-literal.optimized.wat @@ -2,9 +2,9 @@ (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) (type $none_=>_none (func)) (type $i32_=>_none (func (param i32))) + (type $i32_i32_=>_none (func (param i32 i32))) (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) (type $none_=>_i32 (func (result i32))) - (type $i32_i32_=>_none (func (param i32 i32))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) (type $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) @@ -1125,7 +1125,7 @@ local.get $0 i32.const 4 i32.add - local.tee $0 + local.tee $1 i32.const 18252 i32.ge_u if @@ -1135,20 +1135,20 @@ call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT - local.get $0 + local.get $1 i32.const 4 i32.sub - local.set $1 - local.get $0 + local.set $0 + local.get $1 i32.const 15 i32.and i32.const 1 - local.get $0 + local.get $1 select if (result i32) i32.const 1 else - local.get $1 + local.get $0 i32.load i32.const 1 i32.and @@ -1161,14 +1161,11 @@ call $~lib/builtins/abort unreachable end - local.get $1 - local.tee $0 + local.get $0 + local.get $0 i32.load i32.const 1 i32.or - local.set $1 - local.get $0 - local.get $1 i32.store local.get $0 call $~lib/rt/tlsf/insertBlock @@ -1181,8 +1178,7 @@ local.tee $0 local.get $0 i32.store offset=4 - global.get $~lib/rt/itcms/toSpace - local.tee $0 + local.get $0 local.get $0 i32.store offset=8 i32.const 0 @@ -1322,80 +1318,11 @@ end end ) - (func $~lib/rt/itcms/__new (param $0 i32) (param $1 i32) (result i32) + (func $~lib/rt/tlsf/allocateBlock (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) - (local $5 i32) - (local $6 i32) - local.get $0 - i32.const 1073741804 - i32.ge_u - if - i32.const 1472 - i32.const 1536 - i32.const 260 - i32.const 31 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/rt/itcms/total - global.get $~lib/rt/itcms/threshold - i32.ge_u - if - block $__inlined_func$~lib/rt/itcms/interrupt - i32.const 2048 - local.set $2 - loop $do-continue|0 - local.get $2 - call $~lib/rt/itcms/step - i32.sub - local.set $2 - global.get $~lib/rt/itcms/state - i32.eqz - if - global.get $~lib/rt/itcms/total - i64.extend_i32_u - i64.const 200 - i64.mul - i64.const 100 - i64.div_u - i32.wrap_i64 - i32.const 1024 - i32.add - global.set $~lib/rt/itcms/threshold - br $__inlined_func$~lib/rt/itcms/interrupt - end - local.get $2 - i32.const 0 - i32.gt_s - br_if $do-continue|0 - end - global.get $~lib/rt/itcms/total - local.tee $2 - local.get $2 - global.get $~lib/rt/itcms/threshold - i32.sub - i32.const 1024 - i32.lt_u - i32.const 10 - i32.shl - i32.add - global.set $~lib/rt/itcms/threshold - end - end - local.get $0 - i32.const 16 - i32.add - local.set $2 - global.get $~lib/rt/tlsf/ROOT - i32.eqz - if - call $~lib/rt/tlsf/initialize - end - global.get $~lib/rt/tlsf/ROOT - local.set $3 - local.get $2 + local.get $1 i32.const 1073741820 i32.gt_u if @@ -1406,14 +1333,15 @@ call $~lib/builtins/abort unreachable end - local.get $3 - local.get $2 + local.get $0 + local.tee $2 + local.get $1 i32.const 12 i32.le_u if (result i32) i32.const 12 else - local.get $2 + local.get $1 i32.const 19 i32.add i32.const -16 @@ -1421,19 +1349,19 @@ i32.const 4 i32.sub end - local.tee $2 + local.tee $0 call $~lib/rt/tlsf/searchBlock - local.tee $4 + local.tee $1 i32.eqz if - local.get $2 + local.get $0 i32.const 536870910 i32.lt_u if (result i32) - local.get $2 + local.get $0 i32.const 1 i32.const 27 - local.get $2 + local.get $0 i32.clz i32.sub i32.shl @@ -1441,16 +1369,16 @@ i32.sub i32.add else - local.get $2 + local.get $0 end i32.const 4 memory.size - local.tee $6 + local.tee $1 i32.const 16 i32.shl i32.const 4 i32.sub - local.get $3 + local.get $2 i32.load offset=1568 i32.ne i32.shl @@ -1461,18 +1389,18 @@ i32.and i32.const 16 i32.shr_u - local.set $5 - local.get $6 - local.get $5 - local.get $5 - local.get $6 - i32.lt_s + local.set $3 + local.get $1 + local.get $3 + local.get $1 + local.get $3 + i32.gt_s select memory.grow i32.const 0 i32.lt_s if - local.get $5 + local.get $3 memory.grow i32.const 0 i32.lt_s @@ -1480,18 +1408,18 @@ unreachable end end - local.get $3 - local.get $6 + local.get $2 + local.get $1 i32.const 16 i32.shl memory.size i32.const 16 i32.shl call $~lib/rt/tlsf/addMemory - local.get $3 local.get $2 + local.get $0 call $~lib/rt/tlsf/searchBlock - local.tee $4 + local.tee $1 i32.eqz if i32.const 0 @@ -1502,8 +1430,8 @@ unreachable end end - local.get $2 - local.get $4 + local.get $0 + local.get $1 i32.load i32.const -4 i32.and @@ -1516,13 +1444,13 @@ call $~lib/builtins/abort unreachable end - local.get $3 - local.get $4 + local.get $2 + local.get $1 call $~lib/rt/tlsf/removeBlock - local.get $4 + local.get $1 i32.load - local.set $6 - local.get $2 + local.set $3 + local.get $0 i32.const 4 i32.add i32.const 15 @@ -1535,54 +1463,54 @@ call $~lib/builtins/abort unreachable end - local.get $6 + local.get $3 i32.const -4 i32.and - local.get $2 + local.get $0 i32.sub - local.tee $5 + local.tee $4 i32.const 16 i32.ge_u if - local.get $4 - local.get $2 - local.get $6 + local.get $1 + local.get $0 + local.get $3 i32.const 2 i32.and i32.or i32.store - local.get $2 - local.get $4 + local.get $0 + local.get $1 i32.const 4 i32.add i32.add - local.tee $2 - local.get $5 + local.tee $0 + local.get $4 i32.const 4 i32.sub i32.const 1 i32.or i32.store - local.get $3 local.get $2 + local.get $0 call $~lib/rt/tlsf/insertBlock else - local.get $4 - local.get $6 + local.get $1 + local.get $3 i32.const -2 i32.and i32.store - local.get $4 + local.get $1 i32.const 4 i32.add - local.tee $2 - local.get $4 + local.tee $0 + local.get $1 i32.load i32.const -4 i32.and i32.add - local.get $2 - local.get $4 + local.get $0 + local.get $1 i32.load i32.const -4 i32.and @@ -1592,182 +1520,143 @@ i32.and i32.store end - local.get $4 - local.get $1 - i32.store offset=12 - local.get $4 - local.get $0 - i32.store offset=16 - global.get $~lib/rt/itcms/fromSpace - local.tee $1 - i32.load offset=8 - local.set $2 - local.get $4 - local.get $1 - global.get $~lib/rt/itcms/white - i32.or - i32.store offset=4 - local.get $4 - local.get $2 - i32.store offset=8 - local.get $2 - local.get $4 - local.get $2 - i32.load offset=4 - i32.const 3 - i32.and - i32.or - i32.store offset=4 local.get $1 - local.get $4 - i32.store offset=8 - global.get $~lib/rt/itcms/total - local.get $4 - i32.load - i32.const -4 - i32.and - i32.const 4 - i32.add - i32.add - global.set $~lib/rt/itcms/total - local.get $4 - i32.const 20 - i32.add - local.tee $2 - local.set $3 + ) + (func $~lib/memory/memory.fill (param $0 i32) (param $1 i32) + (local $2 i32) block $~lib/util/memory/memset|inlined.0 - local.get $0 + local.get $1 i32.eqz br_if $~lib/util/memory/memset|inlined.0 - local.get $3 + local.get $0 i32.const 0 i32.store8 local.get $0 - local.get $3 + local.get $1 i32.add - local.tee $1 + local.tee $2 i32.const 1 i32.sub i32.const 0 i32.store8 - local.get $0 + local.get $1 i32.const 2 i32.le_u br_if $~lib/util/memory/memset|inlined.0 - local.get $3 + local.get $0 i32.const 0 i32.store8 offset=1 - local.get $3 + local.get $0 i32.const 0 i32.store8 offset=2 - local.get $1 + local.get $2 i32.const 2 i32.sub i32.const 0 i32.store8 - local.get $1 + local.get $2 i32.const 3 i32.sub i32.const 0 i32.store8 - local.get $0 + local.get $1 i32.const 6 i32.le_u br_if $~lib/util/memory/memset|inlined.0 - local.get $3 + local.get $0 i32.const 0 i32.store8 offset=3 - local.get $1 + local.get $2 i32.const 4 i32.sub i32.const 0 i32.store8 - local.get $0 + local.get $1 i32.const 8 i32.le_u br_if $~lib/util/memory/memset|inlined.0 - local.get $3 + local.get $0 i32.const 0 - local.get $3 + local.get $0 i32.sub i32.const 3 i32.and - local.tee $1 + local.tee $2 i32.add - local.tee $5 + local.tee $0 i32.const 0 i32.store - local.get $5 local.get $0 local.get $1 + local.get $2 i32.sub i32.const -4 i32.and - local.tee $3 + local.tee $2 i32.add - local.tee $0 + local.tee $1 i32.const 4 i32.sub i32.const 0 i32.store - local.get $3 + local.get $2 i32.const 8 i32.le_u br_if $~lib/util/memory/memset|inlined.0 - local.get $5 + local.get $0 i32.const 0 i32.store offset=4 - local.get $5 + local.get $0 i32.const 0 i32.store offset=8 - local.get $0 + local.get $1 i32.const 12 i32.sub i32.const 0 i32.store - local.get $0 + local.get $1 i32.const 8 i32.sub i32.const 0 i32.store - local.get $3 + local.get $2 i32.const 24 i32.le_u br_if $~lib/util/memory/memset|inlined.0 - local.get $5 + local.get $0 i32.const 0 i32.store offset=12 - local.get $5 + local.get $0 i32.const 0 i32.store offset=16 - local.get $5 + local.get $0 i32.const 0 i32.store offset=20 - local.get $5 + local.get $0 i32.const 0 i32.store offset=24 - local.get $0 + local.get $1 i32.const 28 i32.sub i32.const 0 i32.store - local.get $0 + local.get $1 i32.const 24 i32.sub i32.const 0 i32.store - local.get $0 + local.get $1 i32.const 20 i32.sub i32.const 0 i32.store - local.get $0 + local.get $1 i32.const 16 i32.sub i32.const 0 i32.store - local.get $5 - local.get $5 + local.get $0 + local.get $0 i32.const 4 i32.and i32.const 24 @@ -1775,7 +1664,7 @@ local.tee $1 i32.add local.set $0 - local.get $3 + local.get $2 local.get $1 i32.sub local.set $1 @@ -1808,7 +1697,123 @@ end end end + ) + (func $~lib/rt/itcms/__new (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + local.get $0 + i32.const 1073741804 + i32.ge_u + if + i32.const 1472 + i32.const 1536 + i32.const 260 + i32.const 31 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.ge_u + if + block $__inlined_func$~lib/rt/itcms/interrupt + i32.const 2048 + local.set $2 + loop $do-continue|0 + local.get $2 + call $~lib/rt/itcms/step + i32.sub + local.set $2 + global.get $~lib/rt/itcms/state + i32.eqz + if + global.get $~lib/rt/itcms/total + i64.extend_i32_u + i64.const 200 + i64.mul + i64.const 100 + i64.div_u + i32.wrap_i64 + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold + br $__inlined_func$~lib/rt/itcms/interrupt + end + local.get $2 + i32.const 0 + i32.gt_s + br_if $do-continue|0 + end + global.get $~lib/rt/itcms/total + local.tee $2 + local.get $2 + global.get $~lib/rt/itcms/threshold + i32.sub + i32.const 1024 + i32.lt_u + i32.const 10 + i32.shl + i32.add + global.set $~lib/rt/itcms/threshold + end + end + local.get $0 + i32.const 16 + i32.add + local.set $2 + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $2 + call $~lib/rt/tlsf/allocateBlock + local.tee $2 + local.get $1 + i32.store offset=12 + local.get $2 + local.get $0 + i32.store offset=16 + global.get $~lib/rt/itcms/fromSpace + local.tee $3 + i32.load offset=8 + local.set $1 local.get $2 + local.get $3 + global.get $~lib/rt/itcms/white + i32.or + i32.store offset=4 + local.get $2 + local.get $1 + i32.store offset=8 + local.get $1 + local.get $2 + local.get $1 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + local.get $3 + local.get $2 + i32.store offset=8 + global.get $~lib/rt/itcms/total + local.get $2 + i32.load + i32.const -4 + i32.and + i32.const 4 + i32.add + i32.add + global.set $~lib/rt/itcms/total + local.get $2 + i32.const 20 + i32.add + local.tee $1 + local.get $0 + call $~lib/memory/memory.fill + local.get $1 ) (func $~lib/rt/itcms/__link (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) diff --git a/tests/compiler/std/array.optimized.wat b/tests/compiler/std/array.optimized.wat index e68148c362..201efb25fe 100644 --- a/tests/compiler/std/array.optimized.wat +++ b/tests/compiler/std/array.optimized.wat @@ -20,6 +20,7 @@ (type $i32_i32_=>_f64 (func (param i32 i32) (result f64))) (type $i32_i64_i32_i64_i32_i64_i32_=>_i32 (func (param i32 i64 i32 i64 i32 i64 i32) (result i32))) (type $i32_i64_i32_=>_none (func (param i32 i64 i32))) + (type $i64_=>_i32 (func (param i64) (result i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (import "Math" "random" (func $~lib/bindings/Math/random (result f64))) (import "env" "seed" (func $~lib/builtins/seed (result f64))) @@ -7966,227 +7967,6 @@ local.get $1 call $~lib/util/number/dtoa_core ) - (func $~lib/array/Array<~lib/string/String|null>#join (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - local.get $0 - i32.load offset=4 - local.set $7 - local.get $0 - i32.load offset=12 - local.set $5 - i32.const 0 - local.set $0 - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 15044 - i32.lt_s - if - i32.const 31456 - i32.const 31504 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.tee $6 - i64.const 0 - i64.store - local.get $6 - i32.const 0 - i32.store offset=8 - block $__inlined_func$~lib/util/string/joinStringArray - local.get $5 - i32.const 1 - i32.sub - local.tee $6 - i32.const 0 - i32.lt_s - if - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.add - global.set $~lib/memory/__stack_pointer - i32.const 8752 - local.set $0 - br $__inlined_func$~lib/util/string/joinStringArray - end - local.get $6 - i32.eqz - if - global.get $~lib/memory/__stack_pointer - local.tee $1 - local.get $7 - i32.load - local.tee $0 - i32.store - local.get $0 - i32.const 8752 - local.get $0 - select - local.set $0 - local.get $1 - i32.const 12 - i32.add - global.set $~lib/memory/__stack_pointer - br $__inlined_func$~lib/util/string/joinStringArray - end - loop $for-loop|0 - local.get $3 - local.get $5 - i32.lt_s - if - global.get $~lib/memory/__stack_pointer - local.get $7 - local.get $3 - i32.const 2 - i32.shl - i32.add - i32.load - local.tee $4 - i32.store offset=4 - local.get $4 - if - local.get $0 - local.get $4 - i32.const 20 - i32.sub - i32.load offset=16 - i32.const 1 - i32.shr_u - i32.add - local.set $0 - end - local.get $3 - i32.const 1 - i32.add - local.set $3 - br $for-loop|0 - end - end - global.get $~lib/memory/__stack_pointer - local.get $0 - local.get $6 - local.get $1 - i32.const 20 - i32.sub - i32.load offset=16 - i32.const 1 - i32.shr_u - local.tee $5 - i32.mul - i32.add - i32.const 1 - i32.shl - i32.const 1 - call $~lib/rt/itcms/__new - local.tee $0 - i32.store offset=8 - i32.const 0 - local.set $3 - loop $for-loop|1 - local.get $3 - local.get $6 - i32.lt_s - if - global.get $~lib/memory/__stack_pointer - local.get $7 - local.get $3 - i32.const 2 - i32.shl - i32.add - i32.load - local.tee $4 - i32.store offset=4 - local.get $4 - if - local.get $0 - local.get $2 - i32.const 1 - i32.shl - i32.add - local.get $4 - local.get $4 - i32.const 20 - i32.sub - i32.load offset=16 - i32.const 1 - i32.shr_u - local.tee $4 - i32.const 1 - i32.shl - call $~lib/memory/memory.copy - local.get $2 - local.get $4 - i32.add - local.set $2 - end - local.get $5 - if - local.get $0 - local.get $2 - i32.const 1 - i32.shl - i32.add - local.get $1 - local.get $5 - i32.const 1 - i32.shl - call $~lib/memory/memory.copy - local.get $2 - local.get $5 - i32.add - local.set $2 - end - local.get $3 - i32.const 1 - i32.add - local.set $3 - br $for-loop|1 - end - end - global.get $~lib/memory/__stack_pointer - local.get $7 - local.get $6 - i32.const 2 - i32.shl - i32.add - i32.load - local.tee $1 - i32.store offset=4 - local.get $1 - if - local.get $0 - local.get $2 - i32.const 1 - i32.shl - i32.add - local.get $1 - local.get $1 - i32.const 20 - i32.sub - i32.load offset=16 - i32.const 1 - i32.shr_u - i32.const 1 - i32.shl - call $~lib/memory/memory.copy - end - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.add - global.set $~lib/memory/__stack_pointer - end - local.get $0 - ) (func $~lib/array/Array#join (param $0 i32) (result i32) (local $1 i32) (local $2 i32) @@ -9832,8 +9612,11 @@ i32.const 9040 i32.store local.get $0 + i32.load offset=4 + local.get $0 + i32.load offset=12 i32.const 9040 - call $~lib/array/Array<~lib/string/String|null>#join + call $~lib/util/string/joinStringArray global.get $~lib/memory/__stack_pointer i32.const 4 i32.add @@ -10089,25 +9872,25 @@ (local $2 i32) (local $3 i32) (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i64) - (local $9 i32) + (local $5 f64) + (local $6 f32) + (local $7 i64) + (local $8 f64) + (local $9 f32) (local $10 i32) - (local $11 f32) - (local $12 f64) - (local $13 f32) - (local $14 f64) + (local $11 i32) + (local $12 i32) + (local $13 i32) + (local $14 i32) global.get $~lib/memory/__stack_pointer i32.const 72 i32.sub global.set $~lib/memory/__stack_pointer - block $folding-inner2 + block $folding-inner0 global.get $~lib/memory/__stack_pointer i32.const 15044 i32.lt_s - br_if $folding-inner2 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer local.tee $1 i64.const 0 @@ -10185,7 +9968,7 @@ global.get $~lib/memory/__stack_pointer i32.const 15044 i32.lt_s - br_if $folding-inner2 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer local.tee $1 i32.const 0 @@ -10204,7 +9987,7 @@ global.get $~lib/memory/__stack_pointer i32.const 15044 i32.lt_s - br_if $folding-inner2 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer i64.const 0 i64.store @@ -10439,7 +10222,7 @@ i32.store offset=12 local.get $1 i32.load offset=4 - local.set $4 + local.set $14 i32.const 1 local.get $1 i32.load offset=12 @@ -10461,7 +10244,7 @@ local.get $2 i32.lt_s if - local.get $4 + local.get $14 local.get $0 i32.const 2 i32.shl @@ -10502,15 +10285,15 @@ i32.const 0 local.get $1 i32.load offset=12 - local.tee $4 - local.get $4 + local.tee $14 + local.get $14 i32.const 0 i32.gt_s select local.set $0 loop $for-loop|02 local.get $0 - local.get $4 + local.get $14 i32.lt_s if local.get $2 @@ -10550,7 +10333,7 @@ end local.get $1 i32.load offset=4 - local.set $4 + local.set $14 i32.const 0 local.get $1 i32.load offset=12 @@ -10575,7 +10358,7 @@ local.get $2 i32.lt_s if - local.get $4 + local.get $14 local.get $0 i32.const 2 i32.shl @@ -10612,7 +10395,7 @@ end local.get $1 i32.load offset=4 - local.set $4 + local.set $14 local.get $1 i32.load offset=12 local.tee $2 @@ -10630,7 +10413,7 @@ local.get $2 i32.lt_s if - local.get $4 + local.get $14 local.get $0 i32.const 2 i32.shl @@ -10668,7 +10451,7 @@ local.get $1 local.tee $0 i32.load offset=4 - local.set $4 + local.set $14 i32.const 1 local.get $1 i32.load offset=12 @@ -10690,7 +10473,7 @@ local.get $2 i32.lt_s if - local.get $4 + local.get $14 local.get $1 i32.const 2 i32.shl @@ -12205,9 +11988,9 @@ end global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $5 + local.tee $12 i32.store - local.get $5 + local.get $12 i32.load offset=12 local.tee $1 i32.const 1 @@ -12220,12 +12003,12 @@ call $~lib/builtins/abort unreachable end - local.get $5 + local.get $12 i32.load offset=4 - local.tee $4 + local.tee $14 i32.load - local.get $4 - local.get $4 + local.get $14 + local.get $14 i32.const 4 i32.add local.get $1 @@ -12237,11 +12020,11 @@ local.tee $1 call $~lib/memory/memory.copy local.get $1 - local.get $4 + local.get $14 i32.add i32.const 0 i32.store - local.get $5 + local.get $12 local.get $0 i32.store offset=12 global.set $std/array/i @@ -12714,30 +12497,30 @@ i32.const 2 i32.shl i32.add - local.set $6 + local.set $13 loop $while-continue|0 local.get $0 - local.get $6 + local.get $13 i32.lt_u if local.get $0 i32.load local.set $1 local.get $0 - local.get $6 + local.get $13 i32.load i32.store - local.get $6 + local.get $13 local.get $1 i32.store local.get $0 i32.const 4 i32.add local.set $0 - local.get $6 + local.get $13 i32.const 4 i32.sub - local.set $6 + local.set $13 br $while-continue|0 end end @@ -13479,11 +13262,11 @@ block $__inlined_func$~lib/array/Array#indexOf local.get $2 i32.load offset=12 - local.tee $4 + local.tee $14 i32.const 0 i32.le_s i32.const 1 - local.get $4 + local.get $14 select br_if $__inlined_func$~lib/array/Array#indexOf local.get $2 @@ -13491,7 +13274,7 @@ local.set $2 loop $while-continue|024 local.get $1 - local.get $4 + local.get $14 i32.lt_s if local.get $2 @@ -13541,11 +13324,11 @@ block $__inlined_func$~lib/array/Array#indexOf local.get $2 i32.load offset=12 - local.tee $4 + local.tee $14 i32.const 0 i32.le_s i32.const 1 - local.get $4 + local.get $14 select br_if $__inlined_func$~lib/array/Array#indexOf local.get $2 @@ -13553,7 +13336,7 @@ local.set $2 loop $while-continue|02528 local.get $1 - local.get $4 + local.get $14 i32.lt_s if local.get $2 @@ -13605,18 +13388,18 @@ block $__inlined_func$~lib/array/Array#lastIndexOf local.get $1 i32.load offset=12 - local.tee $4 + local.tee $14 i32.eqz br_if $__inlined_func$~lib/array/Array#lastIndexOf local.get $2 - local.get $4 + local.get $14 i32.add - local.get $4 + local.get $14 i32.const 1 i32.sub local.get $2 local.get $2 - local.get $4 + local.get $14 i32.ge_s select local.get $2 @@ -13626,13 +13409,13 @@ local.set $2 local.get $1 i32.load offset=4 - local.set $4 + local.set $14 loop $while-continue|01 local.get $2 i32.const 0 i32.ge_s if - local.get $4 + local.get $14 local.get $2 local.tee $0 i32.const 2 @@ -13673,18 +13456,18 @@ block $__inlined_func$~lib/array/Array#lastIndexOf6 local.get $1 i32.load offset=12 - local.tee $4 + local.tee $14 i32.eqz br_if $__inlined_func$~lib/array/Array#lastIndexOf6 local.get $2 - local.get $4 + local.get $14 i32.add - local.get $4 + local.get $14 i32.const 1 i32.sub local.get $2 local.get $2 - local.get $4 + local.get $14 i32.ge_s select local.get $2 @@ -13694,13 +13477,13 @@ local.set $2 local.get $1 i32.load offset=4 - local.set $4 + local.set $14 loop $while-continue|07 local.get $2 i32.const 0 i32.ge_s if - local.get $4 + local.get $14 local.get $2 local.tee $0 i32.const 2 @@ -14180,38 +13963,38 @@ end global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $1 + local.tee $2 i32.store block $__inlined_func$~lib/array/Array#indexOf25 - local.get $1 + local.get $2 i32.load offset=12 - local.tee $2 + local.tee $14 i32.const -100 i32.le_s i32.const 1 - local.get $2 + local.get $14 select if i32.const -1 local.set $0 br $__inlined_func$~lib/array/Array#indexOf25 end - local.get $2 + local.get $14 i32.const 100 i32.sub - local.tee $0 + local.tee $1 i32.const 0 - local.get $0 + local.get $1 i32.const 0 i32.gt_s select local.set $0 - local.get $1 + local.get $2 i32.load offset=4 local.set $1 loop $while-continue|026 local.get $0 - local.get $2 + local.get $14 i32.lt_s if local.get $1 @@ -14246,38 +14029,38 @@ end global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $1 + local.tee $2 i32.store block $__inlined_func$~lib/array/Array#indexOf28 - local.get $1 + local.get $2 i32.load offset=12 - local.tee $2 + local.tee $14 i32.const -2 i32.le_s i32.const 1 - local.get $2 + local.get $14 select if i32.const -1 local.set $0 br $__inlined_func$~lib/array/Array#indexOf28 end - local.get $2 + local.get $14 i32.const 2 i32.sub - local.tee $0 + local.tee $1 i32.const 0 - local.get $0 + local.get $1 i32.const 0 i32.gt_s select local.set $0 - local.get $1 + local.get $2 i32.load offset=4 local.set $1 loop $while-continue|030 local.get $0 - local.get $2 + local.get $14 i32.lt_s if local.get $1 @@ -14312,38 +14095,38 @@ end global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $1 + local.tee $2 i32.store block $__inlined_func$~lib/array/Array#indexOf32 - local.get $1 + local.get $2 i32.load offset=12 - local.tee $2 + local.tee $14 i32.const -4 i32.le_s i32.const 1 - local.get $2 + local.get $14 select if i32.const -1 local.set $0 br $__inlined_func$~lib/array/Array#indexOf32 end - local.get $2 + local.get $14 i32.const 4 i32.sub - local.tee $0 + local.tee $1 i32.const 0 - local.get $0 + local.get $1 i32.const 0 i32.gt_s select local.set $0 - local.get $1 + local.get $2 i32.load offset=4 local.set $1 loop $while-continue|034 local.get $0 - local.get $2 + local.get $14 i32.lt_s if local.get $1 @@ -14589,10 +14372,10 @@ i32.shl i32.add f32.load - local.tee $11 - local.get $11 + local.tee $9 + local.get $9 f32.ne - local.get $11 + local.get $9 f32.const nan:0x400000 f32.eq select @@ -14655,10 +14438,10 @@ i32.shl i32.add f64.load - local.tee $12 - local.get $12 + local.tee $8 + local.get $8 f64.ne - local.get $12 + local.get $8 f64.const nan:0x8000000000000 f64.eq select @@ -15773,127 +15556,127 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.tee $0 + local.tee $1 i32.const 3 i32.const 2 i32.const 11 i32.const 0 call $~lib/rt/__newArray - local.tee $1 + local.tee $3 i32.store offset=24 global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $3 i32.load offset=4 i32.store offset=20 - local.get $1 + local.get $3 i32.const 0 i32.const 1 call $std/array/Ref#constructor call $~lib/array/Array#__uset - local.get $1 + local.get $3 i32.const 1 i32.const 0 call $~lib/array/Array#__uset - local.get $1 + local.get $3 i32.const 2 i32.const 2 call $std/array/Ref#constructor call $~lib/array/Array#__uset - local.get $0 local.get $1 + local.get $3 i32.store offset=20 global.get $~lib/memory/__stack_pointer - local.tee $4 + local.tee $2 i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer i32.const 15044 i32.lt_s - br_if $folding-inner2 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.tee $0 + local.tee $1 i32.const 0 i32.store i32.const 0 - local.get $1 + local.get $3 i32.load offset=12 - local.tee $9 - local.get $9 + local.tee $10 + local.get $10 i32.const 0 i32.gt_s select - local.set $5 - local.get $0 + local.set $14 + local.get $1 i32.const 1 - local.get $9 - local.get $5 + local.get $10 + local.get $14 i32.sub - local.tee $0 - local.get $0 + local.tee $1 + local.get $1 i32.const 1 i32.gt_s select - local.tee $0 + local.tee $1 i32.const 0 - local.get $0 + local.get $1 i32.const 0 i32.gt_s select - local.tee $3 + local.tee $12 i32.const 2 i32.const 11 i32.const 0 call $~lib/rt/__newArray - local.tee $7 + local.tee $11 i32.store - local.get $7 + local.get $11 i32.load offset=4 - local.get $1 + local.get $3 i32.load offset=4 - local.tee $2 - local.get $5 + local.tee $0 + local.get $14 i32.const 2 i32.shl i32.add - local.tee $0 - local.get $3 + local.tee $1 + local.get $12 i32.const 2 i32.shl call $~lib/memory/memory.copy - local.get $9 - local.get $3 - local.get $5 + local.get $10 + local.get $12 + local.get $14 i32.add - local.tee $5 + local.tee $14 i32.ne if + local.get $1 local.get $0 - local.get $2 - local.get $5 + local.get $14 i32.const 2 i32.shl i32.add - local.get $9 - local.get $5 + local.get $10 + local.get $14 i32.sub i32.const 2 i32.shl call $~lib/memory/memory.copy end - local.get $1 - local.get $9 local.get $3 + local.get $10 + local.get $12 i32.sub i32.store offset=12 global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $4 - local.get $7 + local.get $2 + local.get $11 i32.store offset=24 - local.get $7 + local.get $11 i32.load offset=12 i32.const 1 i32.ne @@ -15906,12 +15689,12 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $7 + local.get $11 i32.const 0 call $~lib/array/Array#__get - local.tee $0 + local.tee $1 i32.store offset=28 - local.get $0 + local.get $1 i32.eqz if i32.const 5824 @@ -15921,7 +15704,7 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 i32.load i32.const 1 i32.ne @@ -15933,7 +15716,7 @@ call $~lib/builtins/abort unreachable end - local.get $1 + local.get $3 i32.load offset=12 i32.const 2 i32.ne @@ -15945,7 +15728,7 @@ call $~lib/builtins/abort unreachable end - local.get $1 + local.get $3 i32.const 0 call $~lib/array/Array#__get if @@ -15957,7 +15740,7 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $3 i32.const 1 call $~lib/array/Array#__get local.tee $1 @@ -16019,21 +15802,21 @@ global.get $~lib/memory/__stack_pointer local.tee $1 global.get $std/array/arr - local.tee $4 + local.tee $14 i32.store local.get $1 i32.const 5888 i32.store offset=8 i32.const 0 local.set $1 - local.get $4 + local.get $14 i32.load offset=12 local.set $2 block $__inlined_func$~lib/array/Array#findIndex loop $for-loop|037 local.get $1 local.get $2 - local.get $4 + local.get $14 i32.load offset=12 local.tee $0 local.get $0 @@ -16042,7 +15825,7 @@ select i32.lt_s if - local.get $4 + local.get $14 i32.load offset=4 local.get $1 i32.const 2 @@ -16052,7 +15835,7 @@ i32.const 3 global.set $~argumentsLength local.get $1 - local.get $4 + local.get $14 i32.const 5888 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) @@ -16081,21 +15864,21 @@ global.get $~lib/memory/__stack_pointer local.tee $1 global.get $std/array/arr - local.tee $4 + local.tee $14 i32.store local.get $1 i32.const 5920 i32.store offset=8 i32.const 0 local.set $1 - local.get $4 + local.get $14 i32.load offset=12 local.set $2 block $__inlined_func$~lib/array/Array#findIndex38 loop $for-loop|039 local.get $1 local.get $2 - local.get $4 + local.get $14 i32.load offset=12 local.tee $0 local.get $0 @@ -16104,7 +15887,7 @@ select i32.lt_s if - local.get $4 + local.get $14 i32.load offset=4 local.get $1 i32.const 2 @@ -16114,7 +15897,7 @@ i32.const 3 global.set $~argumentsLength local.get $1 - local.get $4 + local.get $14 i32.const 5920 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) @@ -16145,21 +15928,21 @@ global.get $~lib/memory/__stack_pointer local.tee $1 global.get $std/array/arr - local.tee $4 + local.tee $14 i32.store local.get $1 i32.const 5952 i32.store offset=8 i32.const 0 local.set $1 - local.get $4 + local.get $14 i32.load offset=12 local.set $2 block $__inlined_func$~lib/array/Array#findIndex40 loop $for-loop|041 local.get $1 local.get $2 - local.get $4 + local.get $14 i32.load offset=12 local.tee $0 local.get $0 @@ -16168,7 +15951,7 @@ select i32.lt_s if - local.get $4 + local.get $14 i32.load offset=4 local.get $1 i32.const 2 @@ -16178,7 +15961,7 @@ i32.const 3 global.set $~argumentsLength local.get $1 - local.get $4 + local.get $14 i32.const 5952 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) @@ -16209,21 +15992,21 @@ global.get $~lib/memory/__stack_pointer local.tee $1 global.get $std/array/arr - local.tee $4 + local.tee $14 i32.store local.get $1 i32.const 5984 i32.store offset=8 i32.const 0 local.set $1 - local.get $4 + local.get $14 i32.load offset=12 local.set $2 block $__inlined_func$~lib/array/Array#findIndex42 loop $for-loop|043 local.get $1 local.get $2 - local.get $4 + local.get $14 i32.load offset=12 local.tee $0 local.get $0 @@ -16232,7 +16015,7 @@ select i32.lt_s if - local.get $4 + local.get $14 i32.load offset=4 local.get $1 i32.const 2 @@ -16242,7 +16025,7 @@ i32.const 3 global.set $~argumentsLength local.get $1 - local.get $4 + local.get $14 i32.const 5984 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) @@ -16289,21 +16072,21 @@ global.get $~lib/memory/__stack_pointer local.tee $1 global.get $std/array/arr - local.tee $4 + local.tee $14 i32.store local.get $1 i32.const 6016 i32.store offset=8 i32.const 0 local.set $1 - local.get $4 + local.get $14 i32.load offset=12 local.set $2 block $__inlined_func$~lib/array/Array#findIndex44 loop $for-loop|045 local.get $1 local.get $2 - local.get $4 + local.get $14 i32.load offset=12 local.tee $0 local.get $0 @@ -16312,7 +16095,7 @@ select i32.lt_s if - local.get $4 + local.get $14 i32.load offset=4 local.get $1 i32.const 2 @@ -16322,7 +16105,7 @@ i32.const 3 global.set $~argumentsLength local.get $1 - local.get $4 + local.get $14 i32.const 6016 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) @@ -16381,21 +16164,21 @@ global.get $~lib/memory/__stack_pointer local.tee $1 global.get $std/array/arr - local.tee $4 + local.tee $14 i32.store local.get $1 i32.const 6048 i32.store offset=8 i32.const 0 local.set $1 - local.get $4 + local.get $14 i32.load offset=12 local.set $2 block $__inlined_func$~lib/array/Array#findIndex46 loop $for-loop|047 local.get $1 local.get $2 - local.get $4 + local.get $14 i32.load offset=12 local.tee $0 local.get $0 @@ -16404,7 +16187,7 @@ select i32.lt_s if - local.get $4 + local.get $14 i32.load offset=4 local.get $1 i32.const 2 @@ -16414,7 +16197,7 @@ i32.const 3 global.set $~argumentsLength local.get $1 - local.get $4 + local.get $14 i32.const 6048 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) @@ -16477,7 +16260,7 @@ global.get $~lib/memory/__stack_pointer local.tee $1 global.get $std/array/arr - local.tee $5 + local.tee $12 i32.store local.get $1 i32.const 6080 @@ -16485,22 +16268,22 @@ block $__inlined_func$~lib/array/Array#every (result i32) i32.const 0 local.set $0 - local.get $5 + local.get $12 i32.load offset=12 - local.set $4 + local.set $14 loop $for-loop|048 local.get $0 - local.get $4 - local.get $5 + local.get $14 + local.get $12 i32.load offset=12 local.tee $1 local.get $1 - local.get $4 + local.get $14 i32.gt_s select i32.lt_s if - local.get $5 + local.get $12 i32.load offset=4 local.get $0 i32.const 2 @@ -16513,7 +16296,7 @@ i32.const 0 local.get $1 local.get $0 - local.get $5 + local.get $12 i32.const 6080 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) @@ -16541,7 +16324,7 @@ global.get $~lib/memory/__stack_pointer local.tee $1 global.get $std/array/arr - local.tee $5 + local.tee $12 i32.store local.get $1 i32.const 6112 @@ -16549,22 +16332,22 @@ block $__inlined_func$~lib/array/Array#every49 (result i32) i32.const 0 local.set $0 - local.get $5 + local.get $12 i32.load offset=12 - local.set $4 + local.set $14 loop $for-loop|050 local.get $0 - local.get $4 - local.get $5 + local.get $14 + local.get $12 i32.load offset=12 local.tee $1 local.get $1 - local.get $4 + local.get $14 i32.gt_s select i32.lt_s if - local.get $5 + local.get $12 i32.load offset=4 local.get $0 i32.const 2 @@ -16577,7 +16360,7 @@ i32.const 0 local.get $1 local.get $0 - local.get $5 + local.get $12 i32.const 6112 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) @@ -16604,7 +16387,7 @@ global.get $~lib/memory/__stack_pointer local.tee $1 global.get $std/array/arr - local.tee $5 + local.tee $12 i32.store local.get $1 i32.const 6144 @@ -16612,22 +16395,22 @@ block $__inlined_func$~lib/array/Array#every51 (result i32) i32.const 0 local.set $0 - local.get $5 + local.get $12 i32.load offset=12 - local.set $4 + local.set $14 loop $for-loop|052 local.get $0 - local.get $4 - local.get $5 + local.get $14 + local.get $12 i32.load offset=12 local.tee $1 local.get $1 - local.get $4 + local.get $14 i32.gt_s select i32.lt_s if - local.get $5 + local.get $12 i32.load offset=4 local.get $0 i32.const 2 @@ -16640,7 +16423,7 @@ i32.const 0 local.get $1 local.get $0 - local.get $5 + local.get $12 i32.const 6144 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) @@ -16684,7 +16467,7 @@ global.get $~lib/memory/__stack_pointer local.tee $1 global.get $std/array/arr - local.tee $5 + local.tee $12 i32.store local.get $1 i32.const 6176 @@ -16692,22 +16475,22 @@ block $__inlined_func$~lib/array/Array#every53 (result i32) i32.const 0 local.set $0 - local.get $5 + local.get $12 i32.load offset=12 - local.set $4 + local.set $14 loop $for-loop|054 local.get $0 - local.get $4 - local.get $5 + local.get $14 + local.get $12 i32.load offset=12 local.tee $1 local.get $1 - local.get $4 + local.get $14 i32.gt_s select i32.lt_s if - local.get $5 + local.get $12 i32.load offset=4 local.get $0 i32.const 2 @@ -16720,7 +16503,7 @@ i32.const 0 local.get $1 local.get $0 - local.get $5 + local.get $12 i32.const 6176 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) @@ -16775,7 +16558,7 @@ global.get $~lib/memory/__stack_pointer local.tee $1 global.get $std/array/arr - local.tee $5 + local.tee $12 i32.store local.get $1 i32.const 6208 @@ -16783,22 +16566,22 @@ block $__inlined_func$~lib/array/Array#every55 (result i32) i32.const 0 local.set $0 - local.get $5 + local.get $12 i32.load offset=12 - local.set $4 + local.set $14 loop $for-loop|056 local.get $0 - local.get $4 - local.get $5 + local.get $14 + local.get $12 i32.load offset=12 local.tee $1 local.get $1 - local.get $4 + local.get $14 i32.gt_s select i32.lt_s if - local.get $5 + local.get $12 i32.load offset=4 local.get $0 i32.const 2 @@ -16811,7 +16594,7 @@ i32.const 0 local.get $1 local.get $0 - local.get $5 + local.get $12 i32.const 6208 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) @@ -16871,7 +16654,7 @@ global.get $~lib/memory/__stack_pointer local.tee $1 global.get $std/array/arr - local.tee $5 + local.tee $12 i32.store local.get $1 i32.const 6240 @@ -16879,22 +16662,22 @@ block $__inlined_func$~lib/array/Array#some (result i32) i32.const 0 local.set $0 - local.get $5 + local.get $12 i32.load offset=12 - local.set $4 + local.set $14 loop $for-loop|057 local.get $0 - local.get $4 - local.get $5 + local.get $14 + local.get $12 i32.load offset=12 local.tee $1 local.get $1 - local.get $4 + local.get $14 i32.gt_s select i32.lt_s if - local.get $5 + local.get $12 i32.load offset=4 local.get $0 i32.const 2 @@ -16907,7 +16690,7 @@ i32.const 1 local.get $1 local.get $0 - local.get $5 + local.get $12 i32.const 6240 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) @@ -16934,7 +16717,7 @@ global.get $~lib/memory/__stack_pointer local.tee $1 global.get $std/array/arr - local.tee $5 + local.tee $12 i32.store local.get $1 i32.const 6272 @@ -16942,22 +16725,22 @@ block $__inlined_func$~lib/array/Array#some58 (result i32) i32.const 0 local.set $0 - local.get $5 + local.get $12 i32.load offset=12 - local.set $4 + local.set $14 loop $for-loop|059 local.get $0 - local.get $4 - local.get $5 + local.get $14 + local.get $12 i32.load offset=12 local.tee $1 local.get $1 - local.get $4 + local.get $14 i32.gt_s select i32.lt_s if - local.get $5 + local.get $12 i32.load offset=4 local.get $0 i32.const 2 @@ -16970,7 +16753,7 @@ i32.const 1 local.get $1 local.get $0 - local.get $5 + local.get $12 i32.const 6272 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) @@ -16996,7 +16779,7 @@ global.get $~lib/memory/__stack_pointer local.tee $1 global.get $std/array/arr - local.tee $5 + local.tee $12 i32.store local.get $1 i32.const 6304 @@ -17004,22 +16787,22 @@ block $__inlined_func$~lib/array/Array#some60 (result i32) i32.const 0 local.set $0 - local.get $5 + local.get $12 i32.load offset=12 - local.set $4 + local.set $14 loop $for-loop|061 local.get $0 - local.get $4 - local.get $5 + local.get $14 + local.get $12 i32.load offset=12 local.tee $1 local.get $1 - local.get $4 + local.get $14 i32.gt_s select i32.lt_s if - local.get $5 + local.get $12 i32.load offset=4 local.get $0 i32.const 2 @@ -17032,7 +16815,7 @@ i32.const 1 local.get $1 local.get $0 - local.get $5 + local.get $12 i32.const 6304 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) @@ -17074,7 +16857,7 @@ global.get $~lib/memory/__stack_pointer local.tee $1 global.get $std/array/arr - local.tee $5 + local.tee $12 i32.store local.get $1 i32.const 6336 @@ -17082,22 +16865,22 @@ block $__inlined_func$~lib/array/Array#some62 (result i32) i32.const 0 local.set $0 - local.get $5 + local.get $12 i32.load offset=12 - local.set $4 + local.set $14 loop $for-loop|063 local.get $0 - local.get $4 - local.get $5 + local.get $14 + local.get $12 i32.load offset=12 local.tee $1 local.get $1 - local.get $4 + local.get $14 i32.gt_s select i32.lt_s if - local.get $5 + local.get $12 i32.load offset=4 local.get $0 i32.const 2 @@ -17110,7 +16893,7 @@ i32.const 1 local.get $1 local.get $0 - local.get $5 + local.get $12 i32.const 6336 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) @@ -17165,7 +16948,7 @@ global.get $~lib/memory/__stack_pointer local.tee $1 global.get $std/array/arr - local.tee $5 + local.tee $12 i32.store local.get $1 i32.const 6368 @@ -17173,22 +16956,22 @@ block $__inlined_func$~lib/array/Array#some64 (result i32) i32.const 0 local.set $0 - local.get $5 + local.get $12 i32.load offset=12 - local.set $4 + local.set $14 loop $for-loop|065 local.get $0 - local.get $4 - local.get $5 + local.get $14 + local.get $12 i32.load offset=12 local.tee $1 local.get $1 - local.get $4 + local.get $14 i32.gt_s select i32.lt_s if - local.get $5 + local.get $12 i32.load offset=4 local.get $0 i32.const 2 @@ -17201,7 +16984,7 @@ i32.const 1 local.get $1 local.get $0 - local.get $5 + local.get $12 i32.const 6368 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) @@ -17261,20 +17044,20 @@ global.get $~lib/memory/__stack_pointer local.tee $1 global.get $std/array/arr - local.tee $4 + local.tee $14 i32.store local.get $1 i32.const 6400 i32.store offset=8 i32.const 0 local.set $0 - local.get $4 + local.get $14 i32.load offset=12 local.set $2 loop $for-loop|066 local.get $0 local.get $2 - local.get $4 + local.get $14 i32.load offset=12 local.tee $1 local.get $1 @@ -17283,7 +17066,7 @@ select i32.lt_s if - local.get $4 + local.get $14 i32.load offset=4 local.get $0 i32.const 2 @@ -17293,7 +17076,7 @@ i32.const 3 global.set $~argumentsLength local.get $0 - local.get $4 + local.get $14 i32.const 6400 i32.load call_indirect $0 (type $i32_i32_i32_=>_none) @@ -17320,20 +17103,20 @@ global.get $~lib/memory/__stack_pointer local.tee $1 global.get $std/array/arr - local.tee $4 + local.tee $14 i32.store local.get $1 i32.const 6432 i32.store offset=8 i32.const 0 local.set $0 - local.get $4 + local.get $14 i32.load offset=12 local.set $2 loop $for-loop|068 local.get $0 local.get $2 - local.get $4 + local.get $14 i32.load offset=12 local.tee $1 local.get $1 @@ -17342,7 +17125,7 @@ select i32.lt_s if - local.get $4 + local.get $14 i32.load offset=4 local.get $0 i32.const 2 @@ -17352,7 +17135,7 @@ i32.const 3 global.set $~argumentsLength local.get $0 - local.get $4 + local.get $14 i32.const 6432 i32.load call_indirect $0 (type $i32_i32_i32_=>_none) @@ -17395,20 +17178,20 @@ global.get $~lib/memory/__stack_pointer local.tee $1 global.get $std/array/arr - local.tee $4 + local.tee $14 i32.store local.get $1 i32.const 6464 i32.store offset=8 i32.const 0 local.set $0 - local.get $4 + local.get $14 i32.load offset=12 local.set $2 loop $for-loop|070 local.get $0 local.get $2 - local.get $4 + local.get $14 i32.load offset=12 local.tee $1 local.get $1 @@ -17417,7 +17200,7 @@ select i32.lt_s if - local.get $4 + local.get $14 i32.load offset=4 local.get $0 i32.const 2 @@ -17427,7 +17210,7 @@ i32.const 3 global.set $~argumentsLength local.get $0 - local.get $4 + local.get $14 i32.const 6464 i32.load call_indirect $0 (type $i32_i32_i32_=>_none) @@ -17482,20 +17265,20 @@ global.get $~lib/memory/__stack_pointer local.tee $1 global.get $std/array/arr - local.tee $4 + local.tee $14 i32.store local.get $1 i32.const 6496 i32.store offset=8 i32.const 0 local.set $0 - local.get $4 + local.get $14 i32.load offset=12 local.set $2 loop $for-loop|072 local.get $0 local.get $2 - local.get $4 + local.get $14 i32.load offset=12 local.tee $1 local.get $1 @@ -17504,7 +17287,7 @@ select i32.lt_s if - local.get $4 + local.get $14 i32.load offset=4 local.get $0 i32.const 2 @@ -17514,7 +17297,7 @@ i32.const 3 global.set $~argumentsLength local.get $0 - local.get $4 + local.get $14 i32.const 6496 i32.load call_indirect $0 (type $i32_i32_i32_=>_none) @@ -17571,20 +17354,20 @@ global.get $~lib/memory/__stack_pointer local.tee $1 global.get $std/array/arr - local.tee $4 + local.tee $14 i32.store local.get $1 i32.const 6528 i32.store offset=8 i32.const 0 local.set $0 - local.get $4 + local.get $14 i32.load offset=12 local.set $2 loop $for-loop|074 local.get $0 local.get $2 - local.get $4 + local.get $14 i32.load offset=12 local.tee $1 local.get $1 @@ -17593,7 +17376,7 @@ select i32.lt_s if - local.get $4 + local.get $14 i32.load offset=4 local.get $0 i32.const 2 @@ -17603,7 +17386,7 @@ i32.const 3 global.set $~argumentsLength local.get $0 - local.get $4 + local.get $14 i32.const 6528 i32.load call_indirect $0 (type $i32_i32_i32_=>_none) @@ -17684,77 +17467,77 @@ call $~lib/array/Array#push drop global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $12 global.get $std/array/arr - local.tee $7 + local.tee $10 i32.store - local.get $1 + local.get $12 i32.const 6560 i32.store offset=8 i32.const 0 - local.set $6 - local.get $1 + local.set $13 + local.get $12 i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer i32.const 15044 i32.lt_s - br_if $folding-inner2 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.tee $0 + local.tee $1 i32.const 0 i32.store - local.get $0 - local.get $7 + local.get $1 + local.get $10 i32.load offset=12 - local.tee $5 + local.tee $14 i32.const 2 i32.const 9 i32.const 0 call $~lib/rt/__newArray - local.tee $3 + local.tee $11 i32.store - local.get $3 + local.get $11 i32.load offset=4 - local.set $4 + local.set $2 loop $for-loop|044 - local.get $6 - local.get $5 - local.get $7 + local.get $13 + local.get $14 + local.get $10 i32.load offset=12 - local.tee $0 - local.get $0 - local.get $5 + local.tee $1 + local.get $1 + local.get $14 i32.gt_s select i32.lt_s if - local.get $6 + local.get $13 i32.const 2 i32.shl - local.tee $2 - local.get $7 + local.tee $0 + local.get $10 i32.load offset=4 i32.add i32.load - local.set $0 + local.set $1 i32.const 3 global.set $~argumentsLength + local.get $0 local.get $2 - local.get $4 i32.add - local.get $0 - local.get $6 - local.get $7 + local.get $1 + local.get $13 + local.get $10 i32.const 6560 i32.load call_indirect $0 (type $i32_i32_i32_=>_f32) f32.store - local.get $6 + local.get $13 i32.const 1 i32.add - local.set $6 + local.set $13 br $for-loop|044 end end @@ -17762,10 +17545,10 @@ i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $1 - local.get $3 + local.get $12 + local.get $11 i32.store offset=24 - local.get $3 + local.get $11 i32.load offset=12 i32.const 4 i32.ne @@ -17777,7 +17560,7 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $11 i32.const 0 call $~lib/array/Array#__get global.get $~lib/memory/__stack_pointer @@ -18125,22 +17908,22 @@ global.get $~lib/memory/__stack_pointer local.tee $1 global.get $std/array/arr - local.tee $4 + local.tee $14 i32.store local.get $1 i32.const 6816 i32.store offset=8 i32.const 0 - local.set $6 + local.set $13 i32.const 0 local.set $0 - local.get $4 + local.get $14 i32.load offset=12 local.set $2 loop $for-loop|077 local.get $0 local.get $2 - local.get $4 + local.get $14 i32.load offset=12 local.tee $1 local.get $1 @@ -18149,7 +17932,7 @@ select i32.lt_s if - local.get $4 + local.get $14 i32.load offset=4 local.get $0 i32.const 2 @@ -18159,14 +17942,14 @@ local.set $1 i32.const 4 global.set $~argumentsLength - local.get $6 + local.get $13 local.get $1 local.get $0 - local.get $4 + local.get $14 i32.const 6816 i32.load call_indirect $0 (type $i32_i32_i32_i32_=>_i32) - local.set $6 + local.set $13 local.get $0 i32.const 1 i32.add @@ -18174,7 +17957,7 @@ br $for-loop|077 end end - local.get $6 + local.get $13 global.set $std/array/i global.get $std/array/i i32.const 6 @@ -18190,22 +17973,22 @@ global.get $~lib/memory/__stack_pointer local.tee $1 global.get $std/array/arr - local.tee $4 + local.tee $14 i32.store local.get $1 i32.const 6848 i32.store offset=8 i32.const 4 - local.set $6 + local.set $13 i32.const 0 local.set $0 - local.get $4 + local.get $14 i32.load offset=12 local.set $2 loop $for-loop|079 local.get $0 local.get $2 - local.get $4 + local.get $14 i32.load offset=12 local.tee $1 local.get $1 @@ -18214,7 +17997,7 @@ select i32.lt_s if - local.get $4 + local.get $14 i32.load offset=4 local.get $0 i32.const 2 @@ -18224,14 +18007,14 @@ local.set $1 i32.const 4 global.set $~argumentsLength - local.get $6 + local.get $13 local.get $1 local.get $0 - local.get $4 + local.get $14 i32.const 6848 i32.load call_indirect $0 (type $i32_i32_i32_i32_=>_i32) - local.set $6 + local.set $13 local.get $0 i32.const 1 i32.add @@ -18239,7 +18022,7 @@ br $for-loop|079 end end - local.get $6 + local.get $13 global.set $std/array/i global.get $std/array/i i32.const 10 @@ -18255,22 +18038,22 @@ global.get $~lib/memory/__stack_pointer local.tee $1 global.get $std/array/arr - local.tee $4 + local.tee $14 i32.store local.get $1 i32.const 6880 i32.store offset=8 i32.const 0 - local.set $6 + local.set $13 i32.const 0 local.set $0 - local.get $4 + local.get $14 i32.load offset=12 local.set $2 loop $for-loop|081 local.get $0 local.get $2 - local.get $4 + local.get $14 i32.load offset=12 local.tee $1 local.get $1 @@ -18279,7 +18062,7 @@ select i32.lt_s if - local.get $4 + local.get $14 i32.load offset=4 local.get $0 i32.const 2 @@ -18289,14 +18072,14 @@ local.set $1 i32.const 4 global.set $~argumentsLength - local.get $6 + local.get $13 local.get $1 local.get $0 - local.get $4 + local.get $14 i32.const 6880 i32.load call_indirect $0 (type $i32_i32_i32_i32_=>_i32) - local.set $6 + local.set $13 local.get $0 i32.const 1 i32.add @@ -18304,7 +18087,7 @@ br $for-loop|081 end end - local.get $6 + local.get $13 i32.eqz if i32.const 0 @@ -18317,22 +18100,22 @@ global.get $~lib/memory/__stack_pointer local.tee $1 global.get $std/array/arr - local.tee $4 + local.tee $14 i32.store local.get $1 i32.const 6912 i32.store offset=8 i32.const 0 - local.set $6 + local.set $13 i32.const 0 local.set $0 - local.get $4 + local.get $14 i32.load offset=12 local.set $2 loop $for-loop|083 local.get $0 local.get $2 - local.get $4 + local.get $14 i32.load offset=12 local.tee $1 local.get $1 @@ -18341,7 +18124,7 @@ select i32.lt_s if - local.get $4 + local.get $14 i32.load offset=4 local.get $0 i32.const 2 @@ -18351,14 +18134,14 @@ local.set $1 i32.const 4 global.set $~argumentsLength - local.get $6 + local.get $13 local.get $1 local.get $0 - local.get $4 + local.get $14 i32.const 6912 i32.load call_indirect $0 (type $i32_i32_i32_i32_=>_i32) - local.set $6 + local.set $13 local.get $0 i32.const 1 i32.add @@ -18366,7 +18149,7 @@ br $for-loop|083 end end - local.get $6 + local.get $13 if i32.const 0 i32.const 1552 @@ -18378,22 +18161,22 @@ global.get $~lib/memory/__stack_pointer local.tee $1 global.get $std/array/arr - local.tee $4 + local.tee $14 i32.store local.get $1 i32.const 6944 i32.store offset=8 i32.const 0 - local.set $6 + local.set $13 i32.const 0 local.set $0 - local.get $4 + local.get $14 i32.load offset=12 local.set $2 loop $for-loop|085 local.get $0 local.get $2 - local.get $4 + local.get $14 i32.load offset=12 local.tee $1 local.get $1 @@ -18402,7 +18185,7 @@ select i32.lt_s if - local.get $4 + local.get $14 i32.load offset=4 local.get $0 i32.const 2 @@ -18412,14 +18195,14 @@ local.set $1 i32.const 4 global.set $~argumentsLength - local.get $6 + local.get $13 local.get $1 local.get $0 - local.get $4 + local.get $14 i32.const 6944 i32.load call_indirect $0 (type $i32_i32_i32_i32_=>_i32) - local.set $6 + local.set $13 local.get $0 i32.const 1 i32.add @@ -18427,7 +18210,7 @@ br $for-loop|085 end end - local.get $6 + local.get $13 global.set $std/array/i global.get $std/array/i i32.const 6 @@ -18459,22 +18242,22 @@ global.get $~lib/memory/__stack_pointer local.tee $1 global.get $std/array/arr - local.tee $4 + local.tee $14 i32.store local.get $1 i32.const 6976 i32.store offset=8 i32.const 0 - local.set $6 + local.set $13 i32.const 0 local.set $0 - local.get $4 + local.get $14 i32.load offset=12 local.set $2 loop $for-loop|087 local.get $0 local.get $2 - local.get $4 + local.get $14 i32.load offset=12 local.tee $1 local.get $1 @@ -18483,7 +18266,7 @@ select i32.lt_s if - local.get $4 + local.get $14 i32.load offset=4 local.get $0 i32.const 2 @@ -18493,14 +18276,14 @@ local.set $1 i32.const 4 global.set $~argumentsLength - local.get $6 + local.get $13 local.get $1 local.get $0 - local.get $4 + local.get $14 i32.const 6976 i32.load call_indirect $0 (type $i32_i32_i32_i32_=>_i32) - local.set $6 + local.set $13 local.get $0 i32.const 1 i32.add @@ -18508,7 +18291,7 @@ br $for-loop|087 end end - local.get $6 + local.get $13 global.set $std/array/i global.get $std/array/i i32.const 10 @@ -18552,22 +18335,22 @@ global.get $~lib/memory/__stack_pointer local.tee $1 global.get $std/array/arr - local.tee $4 + local.tee $14 i32.store local.get $1 i32.const 7008 i32.store offset=8 i32.const 0 - local.set $6 + local.set $13 i32.const 0 local.set $0 - local.get $4 + local.get $14 i32.load offset=12 local.set $2 loop $for-loop|089 local.get $0 local.get $2 - local.get $4 + local.get $14 i32.load offset=12 local.tee $1 local.get $1 @@ -18576,7 +18359,7 @@ select i32.lt_s if - local.get $4 + local.get $14 i32.load offset=4 local.get $0 i32.const 2 @@ -18586,14 +18369,14 @@ local.set $1 i32.const 4 global.set $~argumentsLength - local.get $6 + local.get $13 local.get $1 local.get $0 - local.get $4 + local.get $14 i32.const 7008 i32.load call_indirect $0 (type $i32_i32_i32_i32_=>_i32) - local.set $6 + local.set $13 local.get $0 i32.const 1 i32.add @@ -18601,7 +18384,7 @@ br $for-loop|089 end end - local.get $6 + local.get $13 global.set $std/array/i global.get $std/array/i i32.const 1 @@ -18655,7 +18438,7 @@ i32.const 7040 i32.store offset=8 i32.const 0 - local.set $6 + local.set $13 local.get $2 i32.load offset=12 i32.const 1 @@ -18676,14 +18459,14 @@ local.set $1 i32.const 4 global.set $~argumentsLength - local.get $6 + local.get $13 local.get $1 local.get $0 local.get $2 i32.const 7040 i32.load call_indirect $0 (type $i32_i32_i32_i32_=>_i32) - local.set $6 + local.set $13 local.get $0 i32.const 1 i32.sub @@ -18691,7 +18474,7 @@ br $for-loop|090 end end - local.get $6 + local.get $13 global.set $std/array/i global.get $std/array/i i32.const 6 @@ -18713,7 +18496,7 @@ i32.const 7072 i32.store offset=8 i32.const 4 - local.set $6 + local.set $13 local.get $2 i32.load offset=12 i32.const 1 @@ -18734,14 +18517,14 @@ local.set $1 i32.const 4 global.set $~argumentsLength - local.get $6 + local.get $13 local.get $1 local.get $0 local.get $2 i32.const 7072 i32.load call_indirect $0 (type $i32_i32_i32_i32_=>_i32) - local.set $6 + local.set $13 local.get $0 i32.const 1 i32.sub @@ -18749,7 +18532,7 @@ br $for-loop|092 end end - local.get $6 + local.get $13 global.set $std/array/i global.get $std/array/i i32.const 10 @@ -18771,7 +18554,7 @@ i32.const 7104 i32.store offset=8 i32.const 0 - local.set $6 + local.set $13 local.get $2 i32.load offset=12 i32.const 1 @@ -18792,14 +18575,14 @@ local.set $1 i32.const 4 global.set $~argumentsLength - local.get $6 + local.get $13 local.get $1 local.get $0 local.get $2 i32.const 7104 i32.load call_indirect $0 (type $i32_i32_i32_i32_=>_i32) - local.set $6 + local.set $13 local.get $0 i32.const 1 i32.sub @@ -18807,7 +18590,7 @@ br $for-loop|094 end end - local.get $6 + local.get $13 i32.eqz if i32.const 0 @@ -18826,7 +18609,7 @@ i32.const 7136 i32.store offset=8 i32.const 0 - local.set $6 + local.set $13 local.get $2 i32.load offset=12 i32.const 1 @@ -18847,14 +18630,14 @@ local.set $1 i32.const 4 global.set $~argumentsLength - local.get $6 + local.get $13 local.get $1 local.get $0 local.get $2 i32.const 7136 i32.load call_indirect $0 (type $i32_i32_i32_i32_=>_i32) - local.set $6 + local.set $13 local.get $0 i32.const 1 i32.sub @@ -18862,7 +18645,7 @@ br $for-loop|096 end end - local.get $6 + local.get $13 if i32.const 0 i32.const 1552 @@ -18880,7 +18663,7 @@ i32.const 7168 i32.store offset=8 i32.const 0 - local.set $6 + local.set $13 local.get $2 i32.load offset=12 i32.const 1 @@ -18901,14 +18684,14 @@ local.set $1 i32.const 4 global.set $~argumentsLength - local.get $6 + local.get $13 local.get $1 local.get $0 local.get $2 i32.const 7168 i32.load call_indirect $0 (type $i32_i32_i32_i32_=>_i32) - local.set $6 + local.set $13 local.get $0 i32.const 1 i32.sub @@ -18916,7 +18699,7 @@ br $for-loop|098 end end - local.get $6 + local.get $13 global.set $std/array/i global.get $std/array/i i32.const 6 @@ -18954,7 +18737,7 @@ i32.const 7200 i32.store offset=8 i32.const 0 - local.set $6 + local.set $13 local.get $2 i32.load offset=12 i32.const 1 @@ -18975,14 +18758,14 @@ local.set $1 i32.const 4 global.set $~argumentsLength - local.get $6 + local.get $13 local.get $1 local.get $0 local.get $2 i32.const 7200 i32.load call_indirect $0 (type $i32_i32_i32_i32_=>_i32) - local.set $6 + local.set $13 local.get $0 i32.const 1 i32.sub @@ -18990,7 +18773,7 @@ br $for-loop|0100 end end - local.get $6 + local.get $13 global.set $std/array/i global.get $std/array/i i32.const 10 @@ -19040,7 +18823,7 @@ i32.const 7232 i32.store offset=8 i32.const 0 - local.set $6 + local.set $13 local.get $2 i32.load offset=12 i32.const 1 @@ -19061,14 +18844,14 @@ local.set $1 i32.const 4 global.set $~argumentsLength - local.get $6 + local.get $13 local.get $1 local.get $0 local.get $2 i32.const 7232 i32.load call_indirect $0 (type $i32_i32_i32_i32_=>_i32) - local.set $6 + local.set $13 local.get $0 i32.const 1 i32.sub @@ -19076,7 +18859,7 @@ br $for-loop|0102 end end - local.get $6 + local.get $13 global.set $std/array/i global.get $std/array/i i32.const 6 @@ -19144,7 +18927,7 @@ i32.const 9 i32.const 7504 call $~lib/rt/__newArray - local.tee $0 + local.tee $12 i32.store offset=20 i32.const 0 global.set $~argumentsLength @@ -19157,7 +18940,7 @@ global.get $~lib/memory/__stack_pointer i32.const 15044 i32.lt_s - br_if $folding-inner2 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer i32.const 0 i32.store @@ -19176,66 +18959,65 @@ i32.store end i32.const 0 - local.set $7 + local.set $13 block $__inlined_func$~lib/array/Array#sort - local.get $0 - local.tee $4 + local.get $12 i32.load offset=12 - local.tee $5 + local.tee $14 i32.const 1 i32.le_s br_if $__inlined_func$~lib/array/Array#sort - local.get $4 + local.get $12 i32.load offset=4 - local.set $3 - local.get $5 + local.set $11 + local.get $14 i32.const 2 i32.eq if - local.get $3 + local.get $11 f32.load offset=4 - local.set $13 - local.get $3 + local.set $6 + local.get $11 f32.load - local.set $11 + local.set $9 i32.const 2 global.set $~argumentsLength - local.get $13 - local.get $11 + local.get $6 + local.get $9 local.get $1 i32.load call_indirect $0 (type $f32_f32_=>_i32) i32.const 0 i32.lt_s if - local.get $3 local.get $11 + local.get $9 f32.store offset=4 - local.get $3 - local.get $13 + local.get $11 + local.get $6 f32.store end br $__inlined_func$~lib/array/Array#sort end - local.get $5 + local.get $14 i32.const 256 i32.lt_s if local.get $1 local.set $2 loop $for-loop|0104 - local.get $5 - local.get $7 - i32.gt_s + local.get $13 + local.get $14 + i32.lt_s if - local.get $3 - local.get $7 + local.get $11 + local.get $13 i32.const 2 i32.shl i32.add f32.load - local.set $13 - local.get $7 + local.set $6 + local.get $13 i32.const 1 i32.sub local.set $1 @@ -19245,17 +19027,17 @@ i32.ge_s if block $while-break|1 - local.get $3 + local.get $11 local.get $1 i32.const 2 i32.shl i32.add f32.load - local.set $11 + local.set $9 i32.const 2 global.set $~argumentsLength - local.get $13 - local.get $11 + local.get $6 + local.get $9 local.get $2 i32.load call_indirect $0 (type $f32_f32_=>_i32) @@ -19267,38 +19049,38 @@ i32.const 1 i32.sub local.set $1 - local.get $3 + local.get $11 local.get $0 i32.const 1 i32.add i32.const 2 i32.shl i32.add - local.get $11 + local.get $9 f32.store br $while-continue|1 end end end - local.get $3 + local.get $11 local.get $1 i32.const 1 i32.add i32.const 2 i32.shl i32.add - local.get $13 + local.get $6 f32.store - local.get $7 + local.get $13 i32.const 1 i32.add - local.set $7 + local.set $13 br $for-loop|0104 end end else - local.get $3 - local.get $5 + local.get $11 + local.get $14 local.get $1 call $~lib/util/sort/weakHeapSort end @@ -19312,45 +19094,45 @@ i32.const 9 i32.const 7600 call $~lib/rt/__newArray - local.set $5 + local.set $2 global.get $~lib/memory/__stack_pointer - local.get $5 + local.get $2 i32.store offset=8 block $__inlined_func$std/array/isArraysEqual (result i32) i32.const 0 - local.set $1 + local.set $13 i32.const 0 - local.get $4 + local.get $12 i32.load offset=12 - local.tee $0 - local.get $5 + local.tee $1 + local.get $2 i32.load offset=12 i32.ne br_if $__inlined_func$std/array/isArraysEqual drop i32.const 1 - local.get $4 - local.get $5 + local.get $2 + local.get $12 i32.eq br_if $__inlined_func$std/array/isArraysEqual drop - loop $for-loop|025 - local.get $0 + loop $for-loop|0105 local.get $1 + local.get $13 i32.gt_s if - local.get $4 - local.get $1 + local.get $12 + local.get $13 call $~lib/array/Array#__get - local.tee $11 - local.get $11 + local.tee $9 + local.get $9 f32.ne if (result i32) - local.get $5 - local.get $1 + local.get $2 + local.get $13 call $~lib/array/Array#__get - local.tee $11 - local.get $11 + local.tee $9 + local.get $9 f32.ne else i32.const 0 @@ -19358,21 +19140,21 @@ i32.eqz if i32.const 0 - local.get $4 - local.get $1 + local.get $12 + local.get $13 call $~lib/array/Array#__get - local.get $5 - local.get $1 + local.get $2 + local.get $13 call $~lib/array/Array#__get f32.ne br_if $__inlined_func$std/array/isArraysEqual drop end - local.get $1 + local.get $13 i32.const 1 i32.add - local.set $1 - br $for-loop|025 + local.set $13 + br $for-loop|0105 end end i32.const 1 @@ -19392,7 +19174,7 @@ i32.const 10 i32.const 7664 call $~lib/rt/__newArray - local.tee $0 + local.tee $12 i32.store offset=24 i32.const 0 global.set $~argumentsLength @@ -19405,7 +19187,7 @@ global.get $~lib/memory/__stack_pointer i32.const 15044 i32.lt_s - br_if $folding-inner2 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer i32.const 0 i32.store @@ -19424,129 +19206,128 @@ i32.store end i32.const 0 - local.set $7 + local.set $13 block $__inlined_func$~lib/array/Array#sort - local.get $0 - local.tee $4 + local.get $12 i32.load offset=12 - local.tee $5 + local.tee $14 i32.const 1 i32.le_s br_if $__inlined_func$~lib/array/Array#sort - local.get $4 + local.get $12 i32.load offset=4 - local.set $3 - local.get $5 + local.set $11 + local.get $14 i32.const 2 i32.eq if - local.get $3 + local.get $11 f64.load offset=8 - local.set $14 - local.get $3 + local.set $5 + local.get $11 f64.load - local.set $12 + local.set $8 i32.const 2 global.set $~argumentsLength - local.get $14 - local.get $12 + local.get $5 + local.get $8 local.get $1 i32.load call_indirect $0 (type $f64_f64_=>_i32) i32.const 0 i32.lt_s if - local.get $3 - local.get $12 + local.get $11 + local.get $8 f64.store offset=8 - local.get $3 - local.get $14 + local.get $11 + local.get $5 f64.store end br $__inlined_func$~lib/array/Array#sort end - local.get $5 + local.get $14 i32.const 256 i32.lt_s if local.get $1 local.set $2 - loop $for-loop|0106 - local.get $5 - local.get $7 - i32.gt_s + loop $for-loop|0107 + local.get $13 + local.get $14 + i32.lt_s if - local.get $3 - local.get $7 + local.get $11 + local.get $13 i32.const 3 i32.shl i32.add f64.load - local.set $14 - local.get $7 + local.set $5 + local.get $13 i32.const 1 i32.sub local.set $1 - loop $while-continue|1107 + loop $while-continue|1108 local.get $1 i32.const 0 i32.ge_s if - block $while-break|1108 - local.get $3 + block $while-break|1109 + local.get $11 local.get $1 i32.const 3 i32.shl i32.add f64.load - local.set $12 + local.set $8 i32.const 2 global.set $~argumentsLength - local.get $14 - local.get $12 + local.get $5 + local.get $8 local.get $2 i32.load call_indirect $0 (type $f64_f64_=>_i32) i32.const 0 i32.ge_s - br_if $while-break|1108 + br_if $while-break|1109 local.get $1 local.tee $0 i32.const 1 i32.sub local.set $1 - local.get $3 + local.get $11 local.get $0 i32.const 1 i32.add i32.const 3 i32.shl i32.add - local.get $12 + local.get $8 f64.store - br $while-continue|1107 + br $while-continue|1108 end end end - local.get $3 + local.get $11 local.get $1 i32.const 1 i32.add i32.const 3 i32.shl i32.add - local.get $14 + local.get $5 f64.store - local.get $7 + local.get $13 i32.const 1 i32.add - local.set $7 - br $for-loop|0106 + local.set $13 + br $for-loop|0107 end end else - local.get $3 - local.get $5 + local.get $11 + local.get $14 local.get $1 call $~lib/util/sort/weakHeapSort end @@ -19560,45 +19341,45 @@ i32.const 10 i32.const 7792 call $~lib/rt/__newArray - local.set $5 + local.set $2 global.get $~lib/memory/__stack_pointer - local.get $5 + local.get $2 i32.store offset=8 block $__inlined_func$std/array/isArraysEqual (result i32) i32.const 0 - local.set $1 + local.set $13 i32.const 0 - local.get $4 + local.get $12 i32.load offset=12 - local.tee $0 - local.get $5 + local.tee $1 + local.get $2 i32.load offset=12 i32.ne br_if $__inlined_func$std/array/isArraysEqual drop i32.const 1 - local.get $4 - local.get $5 + local.get $2 + local.get $12 i32.eq br_if $__inlined_func$std/array/isArraysEqual drop - loop $for-loop|028 - local.get $0 + loop $for-loop|0110 local.get $1 + local.get $13 i32.gt_s if - local.get $4 - local.get $1 - call $~lib/array/Array#__get - local.tee $12 local.get $12 + local.get $13 + call $~lib/array/Array#__get + local.tee $8 + local.get $8 f64.ne if (result i32) - local.get $5 - local.get $1 + local.get $2 + local.get $13 call $~lib/array/Array#__get - local.tee $12 - local.get $12 + local.tee $8 + local.get $8 f64.ne else i32.const 0 @@ -19606,21 +19387,21 @@ i32.eqz if i32.const 0 - local.get $4 - local.get $1 + local.get $12 + local.get $13 call $~lib/array/Array#__get - local.get $5 - local.get $1 + local.get $2 + local.get $13 call $~lib/array/Array#__get f64.ne br_if $__inlined_func$std/array/isArraysEqual drop end - local.get $1 + local.get $13 i32.const 1 i32.add - local.set $1 - br $for-loop|028 + local.set $13 + br $for-loop|0110 end end i32.const 1 @@ -19653,7 +19434,7 @@ global.get $~lib/memory/__stack_pointer i32.const 15044 i32.lt_s - br_if $folding-inner2 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer i32.const 0 i32.store @@ -19750,7 +19531,7 @@ i32.const 3 i32.const 8176 call $~lib/rt/__newArray - local.tee $10 + local.tee $13 i32.store offset=32 global.get $~lib/memory/__stack_pointer i32.const 2 @@ -19758,7 +19539,7 @@ i32.const 3 i32.const 8208 call $~lib/rt/__newArray - local.tee $9 + local.tee $3 i32.store offset=36 global.get $~lib/memory/__stack_pointer i32.const 4 @@ -19766,7 +19547,7 @@ i32.const 3 i32.const 8240 call $~lib/rt/__newArray - local.tee $7 + local.tee $10 i32.store offset=40 global.get $~lib/memory/__stack_pointer i32.const 4 @@ -19774,22 +19555,22 @@ i32.const 3 i32.const 8288 call $~lib/rt/__newArray - local.tee $6 + local.tee $4 i32.store offset=44 global.get $~lib/memory/__stack_pointer i32.const 64 call $std/array/createReverseOrderedArray - local.tee $3 + local.tee $11 i32.store offset=28 global.get $~lib/memory/__stack_pointer i32.const 128 call $std/array/createReverseOrderedArray - local.tee $5 + local.tee $12 i32.store offset=48 global.get $~lib/memory/__stack_pointer i32.const 1024 call $std/array/createReverseOrderedArray - local.tee $4 + local.tee $14 i32.store offset=52 global.get $~lib/memory/__stack_pointer i32.const 10000 @@ -19803,7 +19584,7 @@ i32.store offset=60 local.get $0 call $std/array/assertSortedDefault - local.get $10 + local.get $13 call $std/array/assertSortedDefault i32.const 1 i32.const 2 @@ -19814,7 +19595,7 @@ global.get $~lib/memory/__stack_pointer local.get $0 i32.store offset=8 - local.get $10 + local.get $13 local.get $0 i32.const 0 call $std/array/isArraysEqual @@ -19827,7 +19608,7 @@ call $~lib/builtins/abort unreachable end - local.get $9 + local.get $3 call $std/array/assertSortedDefault i32.const 2 i32.const 2 @@ -19838,7 +19619,7 @@ global.get $~lib/memory/__stack_pointer local.get $0 i32.store offset=8 - local.get $9 + local.get $3 local.get $0 i32.const 0 call $std/array/isArraysEqual @@ -19851,11 +19632,11 @@ call $~lib/builtins/abort unreachable end - local.get $7 + local.get $10 call $std/array/assertSortedDefault - local.get $7 - local.get $6 - i32.const 0 + local.get $10 + local.get $4 + i32.const 0 call $std/array/isArraysEqual i32.eqz if @@ -19866,10 +19647,10 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $11 call $std/array/assertSortedDefault - local.get $3 - local.get $6 + local.get $11 + local.get $4 i32.const 4 call $std/array/isArraysEqual i32.eqz @@ -19881,10 +19662,10 @@ call $~lib/builtins/abort unreachable end - local.get $5 + local.get $12 call $std/array/assertSortedDefault - local.get $5 - local.get $6 + local.get $12 + local.get $4 i32.const 4 call $std/array/isArraysEqual i32.eqz @@ -19896,10 +19677,10 @@ call $~lib/builtins/abort unreachable end - local.get $4 + local.get $14 call $std/array/assertSortedDefault + local.get $14 local.get $4 - local.get $6 i32.const 4 call $std/array/isArraysEqual i32.eqz @@ -19914,7 +19695,7 @@ local.get $2 call $std/array/assertSortedDefault local.get $2 - local.get $6 + local.get $4 i32.const 4 call $std/array/isArraysEqual i32.eqz @@ -19972,19 +19753,19 @@ global.get $~lib/memory/__stack_pointer i32.const 15044 i32.lt_s - br_if $folding-inner2 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.tee $4 + local.tee $14 i64.const 0 i64.store - local.get $4 + local.get $14 i32.const 8 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer i32.const 15044 i32.lt_s - br_if $folding-inner2 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer local.tee $1 i64.const 0 @@ -19993,22 +19774,22 @@ i32.const 16 i32.const 22 call $~lib/rt/itcms/__new - local.tee $5 + local.tee $12 i32.store - local.get $5 + local.get $12 i32.const 0 i32.store - local.get $5 + local.get $12 i32.const 0 i32.const 0 call $~lib/rt/itcms/__link - local.get $5 + local.get $12 i32.const 0 i32.store offset=4 - local.get $5 + local.get $12 i32.const 0 i32.store offset=8 - local.get $5 + local.get $12 i32.const 0 i32.store offset=12 global.get $~lib/memory/__stack_pointer @@ -20021,30 +19802,30 @@ i32.const 0 i32.const 32 call $~lib/memory/memory.fill - local.get $5 + local.get $12 local.get $1 i32.store - local.get $5 + local.get $12 local.get $1 i32.const 0 call $~lib/rt/itcms/__link - local.get $5 + local.get $12 local.get $1 i32.store offset=4 - local.get $5 + local.get $12 i32.const 32 i32.store offset=8 - local.get $5 + local.get $12 i32.const 2 i32.store offset=12 global.get $~lib/memory/__stack_pointer i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - local.get $4 - local.get $5 + local.get $14 + local.get $12 i32.store - loop $for-loop|061111 + loop $for-loop|061113 local.get $0 i32.const 2 i32.lt_s @@ -20060,7 +19841,7 @@ local.get $0 i32.sub call $~lib/array/Array#__set - local.get $5 + local.get $12 local.get $0 local.get $1 call $~lib/array/Array<~lib/array/Array>#__set @@ -20068,7 +19849,7 @@ i32.const 1 i32.add local.set $0 - br $for-loop|061111 + br $for-loop|061113 end end global.get $~lib/memory/__stack_pointer @@ -20076,16 +19857,16 @@ i32.add global.set $~lib/memory/__stack_pointer local.get $2 - local.get $5 + local.get $12 i32.store offset=56 global.get $~lib/memory/__stack_pointer i32.const 8560 i32.store offset=8 - local.get $5 + local.get $12 i32.const 8560 call $std/array/assertSorted<~lib/array/Array> i32.const 0 - local.set $5 + local.set $12 global.get $~lib/memory/__stack_pointer local.tee $2 i32.const 8 @@ -20094,7 +19875,7 @@ global.get $~lib/memory/__stack_pointer i32.const 15044 i32.lt_s - br_if $folding-inner2 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer local.tee $0 i64.const 0 @@ -20106,7 +19887,7 @@ global.get $~lib/memory/__stack_pointer i32.const 15044 i32.lt_s - br_if $folding-inner2 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer local.tee $1 i64.const 0 @@ -20137,21 +19918,21 @@ i32.const 2048 i32.const 0 call $~lib/rt/itcms/__new - local.tee $4 + local.tee $14 i32.store offset=4 - local.get $4 + local.get $14 i32.const 0 i32.const 2048 call $~lib/memory/memory.fill local.get $1 - local.get $4 + local.get $14 i32.store local.get $1 - local.get $4 + local.get $14 i32.const 0 call $~lib/rt/itcms/__link local.get $1 - local.get $4 + local.get $14 i32.store offset=4 local.get $1 i32.const 2048 @@ -20166,8 +19947,8 @@ local.get $0 local.get $1 i32.store - loop $for-loop|053 - local.get $5 + loop $for-loop|00 + local.get $12 i32.const 512 i32.lt_s if @@ -20178,7 +19959,7 @@ global.get $~lib/memory/__stack_pointer i32.const 15044 i32.lt_s - br_if $folding-inner2 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer local.tee $0 i32.const 0 @@ -20191,7 +19972,7 @@ i32.store local.get $0 i32.const 511 - local.get $5 + local.get $12 i32.sub i32.store global.get $~lib/memory/__stack_pointer @@ -20202,14 +19983,14 @@ local.get $0 i32.store offset=4 local.get $1 - local.get $5 + local.get $12 local.get $0 call $~lib/array/Array<~lib/array/Array>#__set - local.get $5 + local.get $12 i32.const 1 i32.add - local.set $5 - br $for-loop|053 + local.set $12 + br $for-loop|00 end end global.get $~lib/memory/__stack_pointer @@ -20231,7 +20012,7 @@ i32.const 27 i32.const 8784 call $~lib/rt/__newArray - local.tee $1 + local.tee $11 i32.store offset=60 global.get $~lib/memory/__stack_pointer i32.const 7 @@ -20239,7 +20020,7 @@ i32.const 27 i32.const 8832 call $~lib/rt/__newArray - local.tee $0 + local.tee $14 i32.store offset=52 i32.const 1 global.set $~argumentsLength @@ -20252,17 +20033,17 @@ global.get $~lib/memory/__stack_pointer i32.const 15044 i32.lt_s - br_if $folding-inner2 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer i32.const 0 i32.store - block $1of156 - block $0of157 - block $outOfRange58 + block $1of152 + block $0of153 + block $outOfRange54 global.get $~argumentsLength i32.const 1 i32.sub - br_table $0of157 $1of156 $outOfRange58 + br_table $0of153 $1of152 $outOfRange54 end unreachable end @@ -20279,60 +20060,60 @@ global.get $~lib/memory/__stack_pointer i32.const 15044 i32.lt_s - br_if $folding-inner2 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer i32.const 0 i32.store - local.get $1 + local.get $11 local.get $3 call $~lib/array/Array<~lib/array/Array>#sort - local.set $7 + local.set $12 global.get $~lib/memory/__stack_pointer - local.tee $2 - local.get $7 + local.tee $1 + local.get $12 i32.store block $__inlined_func$std/array/isSorted<~lib/string/String|null> (result i32) - local.get $2 + local.get $1 i32.const 8 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer i32.const 15044 i32.lt_s - br_if $folding-inner2 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer i64.const 0 i64.store i32.const 1 - local.set $9 - local.get $7 + local.set $13 + local.get $12 i32.load offset=12 - local.set $2 - loop $for-loop|060 - local.get $2 - local.get $9 + local.set $1 + loop $for-loop|055 + local.get $1 + local.get $13 i32.gt_s if - local.get $7 - local.get $9 + local.get $12 + local.get $13 i32.const 1 i32.sub call $~lib/array/Array#__get - local.set $5 + local.set $2 global.get $~lib/memory/__stack_pointer - local.get $5 + local.get $2 i32.store - local.get $7 - local.get $9 + local.get $12 + local.get $13 call $~lib/array/Array#__get - local.set $4 + local.set $0 global.get $~lib/memory/__stack_pointer - local.get $4 + local.get $0 i32.store offset=4 i32.const 2 global.set $~argumentsLength - local.get $5 - local.get $4 + local.get $2 + local.get $0 local.get $3 i32.load call_indirect $0 (type $i32_i32_=>_i32) @@ -20346,11 +20127,11 @@ i32.const 0 br $__inlined_func$std/array/isSorted<~lib/string/String|null> end - local.get $9 + local.get $13 i32.const 1 i32.add - local.set $9 - br $for-loop|060 + local.set $13 + br $for-loop|055 end end global.get $~lib/memory/__stack_pointer @@ -20386,55 +20167,55 @@ global.get $~lib/memory/__stack_pointer i32.const 15044 i32.lt_s - br_if $folding-inner2 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer i64.const 0 i64.store - block $folding-inner161 - block $folding-inner062 - local.get $1 + block $folding-inner156 + block $folding-inner057 + local.get $11 i32.load offset=12 - local.tee $2 - local.get $0 + local.tee $1 + local.get $14 i32.load offset=12 i32.ne - br_if $folding-inner062 - local.get $0 - local.get $1 + br_if $folding-inner057 + local.get $11 + local.get $14 i32.eq - br_if $folding-inner161 - loop $for-loop|064 - local.get $2 + br_if $folding-inner156 + loop $for-loop|058 + local.get $1 local.get $3 i32.gt_s if - local.get $1 + local.get $11 local.get $3 call $~lib/array/Array#__get - local.set $5 + local.set $2 global.get $~lib/memory/__stack_pointer - local.get $5 + local.get $2 i32.store - local.get $0 + local.get $14 local.get $3 call $~lib/array/Array#__get - local.set $4 + local.set $0 global.get $~lib/memory/__stack_pointer - local.get $4 + local.get $0 i32.store offset=4 - local.get $5 - local.get $4 + local.get $2 + local.get $0 call $~lib/string/String.__eq i32.eqz - br_if $folding-inner062 + br_if $folding-inner057 local.get $3 i32.const 1 i32.add local.set $3 - br $for-loop|064 + br $for-loop|058 end end - br $folding-inner161 + br $folding-inner156 end global.get $~lib/memory/__stack_pointer i32.const 8 @@ -20461,14 +20242,14 @@ i32.const 0 local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $3 + local.tee $10 i32.const 8 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer i32.const 15044 i32.lt_s - br_if $folding-inner2 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer local.tee $1 i64.const 0 @@ -20477,7 +20258,7 @@ i32.const 0 i32.const 400 call $~lib/array/Array<~lib/string/String>#constructor - local.tee $10 + local.tee $3 i32.store loop $for-loop|062 local.get $0 @@ -20488,9 +20269,9 @@ f64.const 32 f64.mul i32.trunc_f64_s - local.set $5 + local.set $11 i32.const 0 - local.set $9 + local.set $13 global.get $~lib/memory/__stack_pointer i32.const 12 i32.sub @@ -20498,7 +20279,7 @@ global.get $~lib/memory/__stack_pointer i32.const 15044 i32.lt_s - br_if $folding-inner2 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer local.tee $2 i64.const 0 @@ -20511,13 +20292,13 @@ local.get $2 i32.const 8752 i32.store - loop $for-loop|067 - local.get $5 - local.get $9 + loop $for-loop|060 + local.get $11 + local.get $13 i32.gt_s if global.get $~lib/memory/__stack_pointer - local.tee $4 + local.tee $12 i32.const 7312 i32.store offset=4 call $~lib/math/NativeMath.random @@ -20533,7 +20314,7 @@ f64.mul f64.floor i32.trunc_f64_s - local.set $7 + local.set $14 local.get $2 i32.const 4 i32.sub @@ -20541,12 +20322,12 @@ global.get $~lib/memory/__stack_pointer i32.const 15044 i32.lt_s - br_if $folding-inner2 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer i32.const 0 i32.store block $__inlined_func$~lib/string/String#charAt - local.get $7 + local.get $14 i32.const 7308 i32.load i32.const 1 @@ -20568,7 +20349,7 @@ local.tee $2 i32.store local.get $2 - local.get $7 + local.get $14 i32.const 1 i32.shl i32.const 7312 @@ -20583,17 +20364,17 @@ global.get $~lib/memory/__stack_pointer local.get $2 i32.store offset=4 - local.get $4 + local.get $12 local.get $1 local.get $2 call $~lib/string/String.__concat local.tee $1 i32.store - local.get $9 + local.get $13 i32.const 1 i32.add - local.set $9 - br $for-loop|067 + local.set $13 + br $for-loop|060 end end global.get $~lib/memory/__stack_pointer @@ -20603,7 +20384,7 @@ global.get $~lib/memory/__stack_pointer local.get $1 i32.store offset=4 - local.get $10 + local.get $3 local.get $0 local.get $1 call $~lib/array/Array<~lib/array/Array>#__set @@ -20618,13 +20399,13 @@ i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - local.get $3 local.get $10 + local.get $3 i32.store offset=56 i32.const 1 global.set $~argumentsLength i32.const 0 - local.set $6 + local.set $13 global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub @@ -20632,7 +20413,7 @@ global.get $~lib/memory/__stack_pointer i32.const 15044 i32.lt_s - br_if $folding-inner2 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer i32.const 0 i32.store @@ -20647,13 +20428,13 @@ unreachable end i32.const 8912 - local.set $6 + local.set $13 global.get $~lib/memory/__stack_pointer i32.const 8912 i32.store end - local.get $10 - local.get $6 + local.get $3 + local.get $13 call $std/array/assertSorted<~lib/array/Array> global.get $~lib/memory/__stack_pointer i32.const 4 @@ -20674,14 +20455,14 @@ i32.store offset=68 local.get $1 i32.load offset=4 - local.set $7 + local.set $10 local.get $1 i32.load offset=12 local.set $1 i32.const 0 local.set $0 i32.const 0 - local.set $6 + local.set $13 local.get $2 i32.const 4 i32.sub @@ -20689,7 +20470,7 @@ global.get $~lib/memory/__stack_pointer i32.const 15044 i32.lt_s - br_if $folding-inner2 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer i32.const 0 i32.store @@ -20697,7 +20478,7 @@ local.get $1 i32.const 1 i32.sub - local.tee $9 + local.tee $3 i32.const 0 i32.lt_s if @@ -20709,31 +20490,31 @@ local.set $1 br $__inlined_func$~lib/util/string/joinBooleanArray end - block $folding-inner069 - local.get $9 + block $folding-inner062 + local.get $3 i32.eqz if i32.const 8976 i32.const 9008 - local.get $7 + local.get $10 i32.load8_u select local.set $1 - br $folding-inner069 + br $folding-inner062 end global.get $~lib/memory/__stack_pointer - local.get $9 + local.get $3 i32.const 9036 i32.load i32.const 1 i32.shr_u - local.tee $3 + local.tee $11 i32.const 5 i32.add i32.mul i32.const 5 i32.add - local.tee $4 + local.tee $14 i32.const 1 i32.shl i32.const 1 @@ -20741,19 +20522,19 @@ local.tee $1 i32.store loop $for-loop|1 - local.get $6 - local.get $9 - i32.lt_s + local.get $3 + local.get $13 + i32.gt_s if - local.get $6 - local.get $7 + local.get $10 + local.get $13 i32.add i32.load8_u local.tee $2 i32.eqz i32.const 4 i32.add - local.set $5 + local.set $12 local.get $1 local.get $0 i32.const 1 @@ -20763,15 +20544,15 @@ i32.const 9008 local.get $2 select - local.get $5 + local.get $12 i32.const 1 i32.shl call $~lib/memory/memory.copy local.get $0 - local.get $5 + local.get $12 i32.add local.set $0 - local.get $3 + local.get $11 if local.get $1 local.get $0 @@ -20779,31 +20560,31 @@ i32.shl i32.add i32.const 9040 - local.get $3 + local.get $11 i32.const 1 i32.shl call $~lib/memory/memory.copy local.get $0 - local.get $3 + local.get $11 i32.add local.set $0 end - local.get $6 + local.get $13 i32.const 1 i32.add - local.set $6 + local.set $13 br $for-loop|1 end end - local.get $7 - local.get $9 + local.get $3 + local.get $10 i32.add i32.load8_u local.tee $2 i32.eqz i32.const 4 i32.add - local.set $5 + local.set $12 local.get $1 local.get $0 i32.const 1 @@ -20813,13 +20594,13 @@ i32.const 9008 local.get $2 select - local.get $5 + local.get $12 i32.const 1 i32.shl call $~lib/memory/memory.copy - local.get $4 + local.get $14 local.get $0 - local.get $5 + local.get $12 i32.add local.tee $0 i32.gt_s @@ -20828,7 +20609,7 @@ local.get $0 call $~lib/string/String#substring local.set $1 - br $folding-inner069 + br $folding-inner062 end global.get $~lib/memory/__stack_pointer i32.const 4 @@ -21020,8 +20801,11 @@ i32.const 8752 i32.store offset=68 local.get $0 + i32.load offset=4 + local.get $0 + i32.load offset=12 i32.const 8752 - call $~lib/array/Array<~lib/string/String|null>#join + call $~lib/util/string/joinStringArray local.set $0 global.get $~lib/memory/__stack_pointer local.tee $1 @@ -21162,7 +20946,7 @@ i32.const 3 i32.const 12880 call $~lib/rt/__newArray - local.tee $4 + local.tee $14 i32.store offset=56 global.get $~lib/memory/__stack_pointer i32.const 2 @@ -21182,15 +20966,15 @@ i32.store offset=28 local.get $1 call $~lib/array/Array#toString - local.set $5 + local.set $12 global.get $~lib/memory/__stack_pointer local.tee $1 - local.get $5 + local.get $12 i32.store local.get $1 i32.const 8752 i32.store offset=8 - local.get $5 + local.get $12 i32.const 8752 call $~lib/string/String.__eq i32.eqz @@ -21202,17 +20986,17 @@ call $~lib/builtins/abort unreachable end - local.get $4 + local.get $14 call $~lib/array/Array#toString - local.set $4 + local.set $14 global.get $~lib/memory/__stack_pointer local.tee $1 - local.get $4 + local.get $14 i32.store local.get $1 i32.const 12528 i32.store offset=8 - local.get $4 + local.get $14 i32.const 12528 call $~lib/string/String.__eq i32.eqz @@ -21285,7 +21069,7 @@ global.get $~lib/memory/__stack_pointer i32.const 15044 i32.lt_s - br_if $folding-inner2 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer local.tee $2 i32.const 0 @@ -21295,14 +21079,14 @@ i32.store local.get $0 i32.load offset=4 - local.set $5 + local.set $12 local.get $0 i32.load offset=12 local.set $1 i32.const 0 local.set $0 i32.const 0 - local.set $6 + local.set $13 local.get $2 i32.const 4 i32.sub @@ -21310,7 +21094,7 @@ global.get $~lib/memory/__stack_pointer i32.const 15044 i32.lt_s - br_if $folding-inner2 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer i32.const 0 i32.store @@ -21318,7 +21102,7 @@ local.get $1 i32.const 1 i32.sub - local.tee $3 + local.tee $11 i32.const 0 i32.lt_s if @@ -21330,23 +21114,23 @@ local.set $1 br $__inlined_func$~lib/util/string/joinIntegerArray end - block $folding-inner0115 - local.get $3 + block $folding-inner0117 + local.get $11 i32.eqz if - local.get $5 + local.get $12 i32.load8_s call $~lib/util/number/itoa32 local.set $1 - br $folding-inner0115 + br $folding-inner0117 end global.get $~lib/memory/__stack_pointer - local.get $3 + local.get $11 i32.const 9036 i32.load i32.const 1 i32.shr_u - local.tee $4 + local.tee $14 i32.const 11 i32.add i32.mul @@ -21359,9 +21143,9 @@ call $~lib/rt/itcms/__new local.tee $1 i32.store - loop $for-loop|0116 - local.get $3 - local.get $6 + loop $for-loop|0118 + local.get $11 + local.get $13 i32.gt_s if local.get $1 @@ -21369,15 +21153,15 @@ i32.const 1 i32.shl i32.add - local.get $5 - local.get $6 + local.get $12 + local.get $13 i32.add i32.load8_s call $~lib/util/number/itoa_buffered local.get $0 i32.add local.set $0 - local.get $4 + local.get $14 if local.get $1 local.get $0 @@ -21385,20 +21169,20 @@ i32.shl i32.add i32.const 9040 - local.get $4 + local.get $14 i32.const 1 i32.shl call $~lib/memory/memory.copy local.get $0 - local.get $4 + local.get $14 i32.add local.set $0 end - local.get $6 + local.get $13 i32.const 1 i32.add - local.set $6 - br $for-loop|0116 + local.set $13 + br $for-loop|0118 end end local.get $2 @@ -21407,8 +21191,8 @@ i32.const 1 i32.shl i32.add - local.get $3 - local.get $5 + local.get $11 + local.get $12 i32.add i32.load8_s call $~lib/util/number/itoa_buffered @@ -21421,7 +21205,7 @@ local.get $0 call $~lib/string/String#substring local.set $1 - br $folding-inner0115 + br $folding-inner0117 end global.get $~lib/memory/__stack_pointer i32.const 4 @@ -21474,7 +21258,7 @@ global.get $~lib/memory/__stack_pointer i32.const 15044 i32.lt_s - br_if $folding-inner2 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer local.tee $2 i32.const 0 @@ -21484,14 +21268,14 @@ i32.store local.get $0 i32.load offset=4 - local.set $5 + local.set $12 local.get $0 i32.load offset=12 local.set $1 i32.const 0 local.set $0 i32.const 0 - local.set $6 + local.set $13 local.get $2 i32.const 4 i32.sub @@ -21499,7 +21283,7 @@ global.get $~lib/memory/__stack_pointer i32.const 15044 i32.lt_s - br_if $folding-inner2 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer i32.const 0 i32.store @@ -21507,7 +21291,7 @@ local.get $1 i32.const 1 i32.sub - local.tee $3 + local.tee $11 i32.const 0 i32.lt_s if @@ -21519,23 +21303,23 @@ local.set $1 br $__inlined_func$~lib/util/string/joinIntegerArray end - block $folding-inner0118 - local.get $3 + block $folding-inner0120 + local.get $11 i32.eqz if - local.get $5 + local.get $12 i32.load16_u call $~lib/util/number/utoa32 local.set $1 - br $folding-inner0118 + br $folding-inner0120 end global.get $~lib/memory/__stack_pointer - local.get $3 + local.get $11 i32.const 9036 i32.load i32.const 1 i32.shr_u - local.tee $4 + local.tee $14 i32.const 10 i32.add i32.mul @@ -21548,9 +21332,9 @@ call $~lib/rt/itcms/__new local.tee $1 i32.store - loop $for-loop|0119 - local.get $3 - local.get $6 + loop $for-loop|0121 + local.get $11 + local.get $13 i32.gt_s if local.get $1 @@ -21558,8 +21342,8 @@ i32.const 1 i32.shl i32.add - local.get $5 - local.get $6 + local.get $12 + local.get $13 i32.const 1 i32.shl i32.add @@ -21568,7 +21352,7 @@ local.get $0 i32.add local.set $0 - local.get $4 + local.get $14 if local.get $1 local.get $0 @@ -21576,20 +21360,20 @@ i32.shl i32.add i32.const 9040 - local.get $4 + local.get $14 i32.const 1 i32.shl call $~lib/memory/memory.copy local.get $0 - local.get $4 + local.get $14 i32.add local.set $0 end - local.get $6 + local.get $13 i32.const 1 i32.add - local.set $6 - br $for-loop|0119 + local.set $13 + br $for-loop|0121 end end local.get $2 @@ -21598,8 +21382,8 @@ i32.const 1 i32.shl i32.add - local.get $5 - local.get $3 + local.get $12 + local.get $11 i32.const 1 i32.shl i32.add @@ -21614,7 +21398,7 @@ local.get $0 call $~lib/string/String#substring local.set $1 - br $folding-inner0118 + br $folding-inner0120 end global.get $~lib/memory/__stack_pointer i32.const 4 @@ -21667,7 +21451,7 @@ global.get $~lib/memory/__stack_pointer i32.const 15044 i32.lt_s - br_if $folding-inner2 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer local.tee $2 i32.const 0 @@ -21677,14 +21461,14 @@ i32.store local.get $0 i32.load offset=4 - local.set $5 + local.set $12 local.get $0 i32.load offset=12 local.set $1 i32.const 0 local.set $0 i32.const 0 - local.set $6 + local.set $13 local.get $2 i32.const 4 i32.sub @@ -21692,7 +21476,7 @@ global.get $~lib/memory/__stack_pointer i32.const 15044 i32.lt_s - br_if $folding-inner2 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer i32.const 0 i32.store @@ -21700,7 +21484,7 @@ local.get $1 i32.const 1 i32.sub - local.tee $3 + local.tee $11 i32.const 0 i32.lt_s if @@ -21712,14 +21496,14 @@ local.set $1 br $__inlined_func$~lib/util/string/joinIntegerArray end - block $folding-inner0121 - local.get $3 + block $folding-inner0123 + local.get $11 i32.eqz if block $__inlined_func$~lib/util/number/utoa64 (result i32) - local.get $5 + local.get $12 i64.load - local.set $8 + local.set $7 global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub @@ -21727,11 +21511,11 @@ global.get $~lib/memory/__stack_pointer i32.const 15044 i32.lt_s - br_if $folding-inner2 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer i32.const 0 i32.store - local.get $8 + local.get $7 i64.eqz if global.get $~lib/memory/__stack_pointer @@ -21741,12 +21525,12 @@ i32.const 9344 br $__inlined_func$~lib/util/number/utoa64 end - local.get $8 + local.get $7 i64.const 4294967295 i64.le_u if global.get $~lib/memory/__stack_pointer - local.get $8 + local.get $7 i32.wrap_i64 local.tee $2 local.tee $1 @@ -21808,51 +21592,51 @@ call $~lib/util/number/utoa32_dec_lut else global.get $~lib/memory/__stack_pointer - local.get $8 + local.get $7 i64.const 1000000000000000 i64.lt_u if (result i32) - local.get $8 + local.get $7 i64.const 1000000000000 i64.lt_u if (result i32) - local.get $8 + local.get $7 i64.const 100000000000 i64.ge_u i32.const 10 i32.add - local.get $8 + local.get $7 i64.const 10000000000 i64.ge_u i32.add else - local.get $8 + local.get $7 i64.const 100000000000000 i64.ge_u i32.const 13 i32.add - local.get $8 + local.get $7 i64.const 10000000000000 i64.ge_u i32.add end else - local.get $8 + local.get $7 i64.const 100000000000000000 i64.lt_u if (result i32) - local.get $8 + local.get $7 i64.const 10000000000000000 i64.ge_u i32.const 16 i32.add else - local.get $8 + local.get $7 i64.const -8446744073709551616 i64.ge_u i32.const 18 i32.add - local.get $8 + local.get $7 i64.const 1000000000000000000 i64.ge_u i32.add @@ -21866,7 +21650,7 @@ local.tee $0 i32.store local.get $0 - local.get $8 + local.get $7 local.get $1 call $~lib/util/number/utoa64_dec_lut end @@ -21877,15 +21661,15 @@ local.get $0 end local.set $1 - br $folding-inner0121 + br $folding-inner0123 end global.get $~lib/memory/__stack_pointer - local.get $3 + local.get $11 i32.const 9036 i32.load i32.const 1 i32.shr_u - local.tee $4 + local.tee $14 i32.const 20 i32.add i32.mul @@ -21898,9 +21682,9 @@ call $~lib/rt/itcms/__new local.tee $1 i32.store - loop $for-loop|0122 - local.get $3 - local.get $6 + loop $for-loop|0124 + local.get $11 + local.get $13 i32.gt_s if local.get $1 @@ -21908,8 +21692,8 @@ i32.const 1 i32.shl i32.add - local.get $5 - local.get $6 + local.get $12 + local.get $13 i32.const 3 i32.shl i32.add @@ -21918,7 +21702,7 @@ local.get $0 i32.add local.set $0 - local.get $4 + local.get $14 if local.get $1 local.get $0 @@ -21926,20 +21710,20 @@ i32.shl i32.add i32.const 9040 - local.get $4 + local.get $14 i32.const 1 i32.shl call $~lib/memory/memory.copy local.get $0 - local.get $4 + local.get $14 i32.add local.set $0 end - local.get $6 + local.get $13 i32.const 1 i32.add - local.set $6 - br $for-loop|0122 + local.set $13 + br $for-loop|0124 end end local.get $2 @@ -21948,8 +21732,8 @@ i32.const 1 i32.shl i32.add - local.get $5 - local.get $3 + local.get $12 + local.get $11 i32.const 3 i32.shl i32.add @@ -21964,7 +21748,7 @@ local.get $0 call $~lib/string/String#substring local.set $1 - br $folding-inner0121 + br $folding-inner0123 end global.get $~lib/memory/__stack_pointer i32.const 4 @@ -22017,7 +21801,7 @@ global.get $~lib/memory/__stack_pointer i32.const 15044 i32.lt_s - br_if $folding-inner2 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer local.tee $2 i32.const 0 @@ -22027,14 +21811,14 @@ i32.store local.get $0 i32.load offset=4 - local.set $5 + local.set $12 local.get $0 i32.load offset=12 local.set $1 i32.const 0 local.set $0 i32.const 0 - local.set $6 + local.set $13 local.get $2 i32.const 4 i32.sub @@ -22042,7 +21826,7 @@ global.get $~lib/memory/__stack_pointer i32.const 15044 i32.lt_s - br_if $folding-inner2 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer i32.const 0 i32.store @@ -22050,7 +21834,7 @@ local.get $1 i32.const 1 i32.sub - local.tee $3 + local.tee $11 i32.const 0 i32.lt_s if @@ -22062,255 +21846,79 @@ local.set $1 br $__inlined_func$~lib/util/string/joinIntegerArray end - block $folding-inner0124 - local.get $3 + block $folding-inner0126 + local.get $11 i32.eqz if - local.get $5 + local.get $12 i64.load i32.wrap_i64 i64.extend_i32_s - local.set $8 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 15044 - i32.lt_s - br_if $folding-inner2 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - block $__inlined_func$~lib/util/number/itoa64 - local.get $8 - i64.eqz - if - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - i32.const 9344 - local.set $1 - br $__inlined_func$~lib/util/number/itoa64 - end - i64.const 0 - local.get $8 - i64.sub - local.get $8 - local.get $8 - i64.const 63 - i64.shr_u - i32.wrap_i64 - local.tee $4 - select - local.tee $8 - i64.const 4294967295 - i64.le_u + call $~lib/util/number/itoa64 + local.set $1 + br $folding-inner0126 + end + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.const 9036 + i32.load + i32.const 1 + i32.shr_u + local.tee $14 + i32.const 21 + i32.add + i32.mul + i32.const 21 + i32.add + local.tee $2 + i32.const 1 + i32.shl + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $1 + i32.store + loop $for-loop|0127 + local.get $11 + local.get $13 + i32.gt_s + if + local.get $1 + local.get $0 + i32.const 1 + i32.shl + i32.add + local.get $12 + local.get $13 + i32.const 3 + i32.shl + i32.add + i64.load + call $~lib/util/number/itoa_buffered + local.get $0 + i32.add + local.set $0 + local.get $14 if - global.get $~lib/memory/__stack_pointer - local.get $8 - i32.wrap_i64 - local.tee $2 - local.tee $1 - i32.const 100000 - i32.lt_u - if (result i32) - local.get $1 - i32.const 100 - i32.lt_u - if (result i32) - local.get $1 - i32.const 10 - i32.ge_u - i32.const 1 - i32.add - else - local.get $1 - i32.const 10000 - i32.ge_u - i32.const 3 - i32.add - local.get $1 - i32.const 1000 - i32.ge_u - i32.add - end - else - local.get $1 - i32.const 10000000 - i32.lt_u - if (result i32) - local.get $1 - i32.const 1000000 - i32.ge_u - i32.const 6 - i32.add - else - local.get $1 - i32.const 1000000000 - i32.ge_u - i32.const 8 - i32.add - local.get $1 - i32.const 100000000 - i32.ge_u - i32.add - end - end - local.get $4 - i32.add - local.tee $0 + local.get $1 + local.get $0 i32.const 1 i32.shl + i32.add + i32.const 9040 + local.get $14 i32.const 1 - call $~lib/rt/itcms/__new - local.tee $1 - i32.store - local.get $1 - local.get $2 + i32.shl + call $~lib/memory/memory.copy local.get $0 - call $~lib/util/number/utoa32_dec_lut - else - global.get $~lib/memory/__stack_pointer - local.get $8 - i64.const 1000000000000000 - i64.lt_u - if (result i32) - local.get $8 - i64.const 1000000000000 - i64.lt_u - if (result i32) - local.get $8 - i64.const 100000000000 - i64.ge_u - i32.const 10 - i32.add - local.get $8 - i64.const 10000000000 - i64.ge_u - i32.add - else - local.get $8 - i64.const 100000000000000 - i64.ge_u - i32.const 13 - i32.add - local.get $8 - i64.const 10000000000000 - i64.ge_u - i32.add - end - else - local.get $8 - i64.const 100000000000000000 - i64.lt_u - if (result i32) - local.get $8 - i64.const 10000000000000000 - i64.ge_u - i32.const 16 - i32.add - else - local.get $8 - i64.const -8446744073709551616 - i64.ge_u - i32.const 18 - i32.add - local.get $8 - i64.const 1000000000000000000 - i64.ge_u - i32.add - end - end - local.get $4 - i32.add - local.tee $0 - i32.const 1 - i32.shl - i32.const 1 - call $~lib/rt/itcms/__new - local.tee $1 - i32.store - local.get $1 - local.get $8 - local.get $0 - call $~lib/util/number/utoa64_dec_lut - end - local.get $4 - if - local.get $1 - i32.const 45 - i32.store16 - end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - end - br $folding-inner0124 - end - global.get $~lib/memory/__stack_pointer - local.get $3 - i32.const 9036 - i32.load - i32.const 1 - i32.shr_u - local.tee $4 - i32.const 21 - i32.add - i32.mul - i32.const 21 - i32.add - local.tee $2 - i32.const 1 - i32.shl - i32.const 1 - call $~lib/rt/itcms/__new - local.tee $1 - i32.store - loop $for-loop|0125 - local.get $3 - local.get $6 - i32.gt_s - if - local.get $1 - local.get $0 - i32.const 1 - i32.shl - i32.add - local.get $5 - local.get $6 - i32.const 3 - i32.shl - i32.add - i64.load - call $~lib/util/number/itoa_buffered - local.get $0 - i32.add - local.set $0 - local.get $4 - if - local.get $1 - local.get $0 - i32.const 1 - i32.shl - i32.add - i32.const 9040 - local.get $4 - i32.const 1 - i32.shl - call $~lib/memory/memory.copy - local.get $0 - local.get $4 + local.get $14 i32.add local.set $0 end - local.get $6 + local.get $13 i32.const 1 i32.add - local.set $6 - br $for-loop|0125 + local.set $13 + br $for-loop|0127 end end local.get $2 @@ -22319,8 +21927,8 @@ i32.const 1 i32.shl i32.add - local.get $5 - local.get $3 + local.get $12 + local.get $11 i32.const 3 i32.shl i32.add @@ -22335,7 +21943,7 @@ local.get $0 call $~lib/string/String#substring local.set $1 - br $folding-inner0124 + br $folding-inner0126 end global.get $~lib/memory/__stack_pointer i32.const 4 @@ -22471,7 +22079,7 @@ global.get $~lib/memory/__stack_pointer i32.const 15044 i32.lt_s - br_if $folding-inner2 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer local.tee $1 i32.const 0 @@ -22481,12 +22089,12 @@ i32.store local.get $0 i32.load offset=4 - local.set $3 + local.set $11 local.get $0 i32.load offset=12 local.set $0 i32.const 0 - local.set $7 + local.set $13 local.get $1 i32.const 12 i32.sub @@ -22494,7 +22102,7 @@ global.get $~lib/memory/__stack_pointer i32.const 15044 i32.lt_s - br_if $folding-inner2 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer local.tee $1 i64.const 0 @@ -22506,7 +22114,7 @@ local.get $0 i32.const 1 i32.sub - local.tee $5 + local.tee $12 i32.const 0 i32.lt_s if @@ -22518,11 +22126,11 @@ local.set $1 br $__inlined_func$~lib/util/string/joinReferenceArray<~lib/array/Array> end - local.get $5 + local.get $12 i32.eqz if global.get $~lib/memory/__stack_pointer - local.get $3 + local.get $11 i32.load local.tee $1 i32.store @@ -22550,31 +22158,31 @@ i32.const 1 i32.shr_u local.set $2 - loop $for-loop|076 - local.get $5 - local.get $7 + loop $for-loop|067 + local.get $12 + local.get $13 i32.gt_s if global.get $~lib/memory/__stack_pointer - local.get $3 - local.get $7 + local.get $11 + local.get $13 i32.const 2 i32.shl i32.add i32.load - local.tee $4 + local.tee $14 i32.store - local.get $4 + local.get $14 if global.get $~lib/memory/__stack_pointer - local.get $4 + local.get $14 call $~lib/array/Array#toString - local.set $4 + local.set $14 global.get $~lib/memory/__stack_pointer - local.get $4 + local.get $14 i32.store offset=8 local.get $1 - local.get $4 + local.get $14 call $~lib/string/String.__concat local.tee $1 i32.store offset=4 @@ -22588,16 +22196,16 @@ local.tee $1 i32.store offset=4 end - local.get $7 + local.get $13 i32.const 1 i32.add - local.set $7 - br $for-loop|076 + local.set $13 + br $for-loop|067 end end global.get $~lib/memory/__stack_pointer - local.get $3 - local.get $5 + local.get $11 + local.get $12 i32.const 2 i32.shl i32.add @@ -22686,7 +22294,7 @@ global.get $~lib/memory/__stack_pointer i32.const 15044 i32.lt_s - br_if $folding-inner2 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer local.tee $1 i32.const 0 @@ -22696,12 +22304,12 @@ i32.store local.get $0 i32.load offset=4 - local.set $3 + local.set $11 local.get $0 i32.load offset=12 local.set $0 i32.const 0 - local.set $7 + local.set $13 local.get $1 i32.const 12 i32.sub @@ -22709,7 +22317,7 @@ global.get $~lib/memory/__stack_pointer i32.const 15044 i32.lt_s - br_if $folding-inner2 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer local.tee $1 i64.const 0 @@ -22721,7 +22329,7 @@ local.get $0 i32.const 1 i32.sub - local.tee $5 + local.tee $12 i32.const 0 i32.lt_s if @@ -22733,11 +22341,11 @@ local.set $1 br $__inlined_func$~lib/util/string/joinReferenceArray<~lib/array/Array> end - local.get $5 + local.get $12 i32.eqz if global.get $~lib/memory/__stack_pointer - local.get $3 + local.get $11 i32.load local.tee $1 i32.store @@ -22765,31 +22373,31 @@ i32.const 1 i32.shr_u local.set $2 - loop $for-loop|078 - local.get $5 - local.get $7 + loop $for-loop|069 + local.get $12 + local.get $13 i32.gt_s if global.get $~lib/memory/__stack_pointer - local.get $3 - local.get $7 + local.get $11 + local.get $13 i32.const 2 i32.shl i32.add i32.load - local.tee $4 + local.tee $14 i32.store - local.get $4 + local.get $14 if global.get $~lib/memory/__stack_pointer - local.get $4 + local.get $14 call $~lib/array/Array#toString - local.set $4 + local.set $14 global.get $~lib/memory/__stack_pointer - local.get $4 + local.get $14 i32.store offset=8 local.get $1 - local.get $4 + local.get $14 call $~lib/string/String.__concat local.tee $1 i32.store offset=4 @@ -22803,16 +22411,16 @@ local.tee $1 i32.store offset=4 end - local.get $7 + local.get $13 i32.const 1 i32.add - local.set $7 - br $for-loop|078 + local.set $13 + br $for-loop|069 end end global.get $~lib/memory/__stack_pointer - local.get $3 - local.get $5 + local.get $11 + local.get $12 i32.const 2 i32.shl i32.add @@ -22910,7 +22518,7 @@ global.get $~lib/memory/__stack_pointer i32.const 15044 i32.lt_s - br_if $folding-inner2 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer local.tee $1 i32.const 0 @@ -22920,12 +22528,12 @@ i32.store local.get $2 i32.load offset=4 - local.set $3 + local.set $11 local.get $2 i32.load offset=12 local.set $0 i32.const 0 - local.set $7 + local.set $13 local.get $1 i32.const 12 i32.sub @@ -22933,7 +22541,7 @@ global.get $~lib/memory/__stack_pointer i32.const 15044 i32.lt_s - br_if $folding-inner2 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer local.tee $1 i64.const 0 @@ -22945,7 +22553,7 @@ local.get $0 i32.const 1 i32.sub - local.tee $5 + local.tee $12 i32.const 0 i32.lt_s if @@ -22957,11 +22565,11 @@ local.set $1 br $__inlined_func$~lib/util/string/joinReferenceArray<~lib/array/Array<~lib/array/Array>> end - local.get $5 + local.get $12 i32.eqz if global.get $~lib/memory/__stack_pointer - local.get $3 + local.get $11 i32.load local.tee $1 i32.store @@ -22989,31 +22597,31 @@ i32.const 1 i32.shr_u local.set $2 - loop $for-loop|080 - local.get $5 - local.get $7 + loop $for-loop|071 + local.get $12 + local.get $13 i32.gt_s if global.get $~lib/memory/__stack_pointer - local.get $3 - local.get $7 + local.get $11 + local.get $13 i32.const 2 i32.shl i32.add i32.load - local.tee $4 + local.tee $14 i32.store - local.get $4 + local.get $14 if global.get $~lib/memory/__stack_pointer - local.get $4 + local.get $14 call $~lib/array/Array<~lib/array/Array>#toString - local.set $4 + local.set $14 global.get $~lib/memory/__stack_pointer - local.get $4 + local.get $14 i32.store offset=8 local.get $1 - local.get $4 + local.get $14 call $~lib/string/String.__concat local.tee $1 i32.store offset=4 @@ -23027,16 +22635,16 @@ local.tee $1 i32.store offset=4 end - local.get $7 + local.get $13 i32.const 1 i32.add - local.set $7 - br $for-loop|080 + local.set $13 + br $for-loop|071 end end global.get $~lib/memory/__stack_pointer - local.get $3 - local.get $5 + local.get $11 + local.get $12 i32.const 2 i32.shl i32.add @@ -23153,7 +22761,7 @@ end i32.const 0 local.set $0 - loop $for-loop|1129 + loop $for-loop|1131 local.get $0 i32.const 10 i32.lt_s @@ -23175,7 +22783,7 @@ i32.const 1 i32.add local.set $0 - br $for-loop|1129 + br $for-loop|1131 end end global.get $~lib/memory/__stack_pointer @@ -23185,13 +22793,13 @@ i32.const 39 i32.const 0 call $~lib/rt/__newArray - local.tee $4 + local.tee $14 i32.store offset=60 global.get $~lib/memory/__stack_pointer - local.get $4 + local.get $14 i32.load offset=4 i32.store offset=44 - local.get $4 + local.get $14 i32.const 0 i32.const 1 i32.const 2 @@ -23199,7 +22807,7 @@ i32.const 14128 call $~lib/rt/__newArray call $~lib/array/Array#__uset - local.get $4 + local.get $14 i32.const 1 i32.const 3 i32.const 2 @@ -23207,7 +22815,7 @@ i32.const 14224 call $~lib/rt/__newArray call $~lib/array/Array#__uset - local.get $4 + local.get $14 i32.const 2 i32.const 3 i32.const 2 @@ -23215,7 +22823,7 @@ i32.const 14352 call $~lib/rt/__newArray call $~lib/array/Array#__uset - local.get $4 + local.get $14 i32.const 3 i32.const 1 i32.const 2 @@ -23224,12 +22832,12 @@ call $~lib/rt/__newArray call $~lib/array/Array#__uset local.get $1 - local.get $4 + local.get $14 i32.store offset=44 i32.const 0 local.set $0 i32.const 0 - local.set $7 + local.set $13 i32.const 0 local.set $3 global.get $~lib/memory/__stack_pointer @@ -23240,22 +22848,22 @@ global.get $~lib/memory/__stack_pointer i32.const 15044 i32.lt_s - br_if $folding-inner2 + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer i64.const 0 i64.store - local.get $4 + local.get $14 i32.load offset=12 - local.set $5 - local.get $4 + local.set $12 + local.get $14 i32.load offset=4 - local.set $4 - loop $for-loop|0130 + local.set $14 + loop $for-loop|0132 local.get $0 - local.get $5 + local.get $12 i32.lt_s if - local.get $4 + local.get $14 local.get $0 i32.const 2 i32.shl @@ -23268,24 +22876,24 @@ else i32.const 0 end - local.get $7 + local.get $13 i32.add - local.set $7 + local.set $13 local.get $0 i32.const 1 i32.add local.set $0 - br $for-loop|0130 + br $for-loop|0132 end end global.get $~lib/memory/__stack_pointer - local.get $7 + local.get $13 i32.const 2 i32.shl local.tee $1 i32.const 0 call $~lib/rt/itcms/__new - local.tee $9 + local.tee $11 i32.store global.get $~lib/memory/__stack_pointer i32.const 16 @@ -23294,29 +22902,29 @@ local.tee $10 i32.store offset=4 local.get $10 - local.get $7 + local.get $13 i32.store offset=12 local.get $10 local.get $1 i32.store offset=8 local.get $10 - local.get $9 + local.get $11 i32.store offset=4 local.get $10 - local.get $9 + local.get $11 i32.store local.get $10 - local.get $9 + local.get $11 i32.const 0 call $~lib/rt/itcms/__link i32.const 0 local.set $0 - loop $for-loop|1131 + loop $for-loop|1133 local.get $0 - local.get $5 + local.get $12 i32.lt_s if - local.get $4 + local.get $14 local.get $0 i32.const 2 i32.shl @@ -23325,7 +22933,7 @@ local.tee $1 if local.get $3 - local.get $9 + local.get $11 i32.add local.get $1 i32.load offset=4 @@ -23342,18 +22950,18 @@ i32.const 1 i32.add local.set $0 - br $for-loop|1131 + br $for-loop|1133 end end i32.const 0 local.set $0 loop $for-loop|2 local.get $0 - local.get $7 + local.get $13 i32.lt_s if - local.get $9 - local.get $9 + local.get $11 + local.get $11 local.get $0 i32.const 2 i32.shl @@ -23381,7 +22989,7 @@ i32.const 27 i32.const 14448 call $~lib/rt/__newArray - local.tee $4 + local.tee $14 i32.store offset=48 local.get $10 i32.load offset=12 @@ -23397,9 +23005,9 @@ end i32.const 0 local.set $0 - loop $for-loop|2132 + loop $for-loop|2134 local.get $0 - local.get $4 + local.get $14 i32.load offset=12 i32.lt_s if @@ -23410,7 +23018,7 @@ global.get $~lib/memory/__stack_pointer local.get $2 i32.store - local.get $4 + local.get $14 local.get $0 call $~lib/array/Array#__get local.set $1 @@ -23433,7 +23041,7 @@ i32.const 1 i32.add local.set $0 - br $for-loop|2132 + br $for-loop|2134 end end global.get $~lib/memory/__stack_pointer @@ -23503,12 +23111,12 @@ end call $~lib/rt/itcms/step drop - loop $while-continue|1133 + loop $while-continue|1135 global.get $~lib/rt/itcms/state if call $~lib/rt/itcms/step drop - br $while-continue|1133 + br $while-continue|1135 end end global.get $~lib/rt/itcms/total @@ -24843,48 +24451,48 @@ block $folding-inner0 local.get $0 i32.load offset=12 - local.tee $6 + local.tee $5 i32.const 1 i32.le_s br_if $folding-inner0 local.get $0 i32.load offset=4 - local.set $4 - local.get $6 + local.set $2 + local.get $5 i32.const 2 i32.eq if global.get $~lib/memory/__stack_pointer - local.tee $2 - local.get $4 + local.tee $5 + local.get $2 i32.load offset=4 local.tee $3 i32.store + local.get $5 local.get $2 - local.get $4 i32.load - local.tee $2 + local.tee $5 i32.store offset=4 i32.const 2 global.set $~argumentsLength local.get $3 - local.get $2 + local.get $5 local.get $1 i32.load call_indirect $0 (type $i32_i32_=>_i32) i32.const 0 i32.lt_s if - local.get $4 local.get $2 + local.get $5 i32.store offset=4 - local.get $4 + local.get $2 local.get $3 i32.store end br $folding-inner0 end - local.get $1 + local.get $2 local.set $3 global.get $~lib/memory/__stack_pointer i32.const 8 @@ -24894,24 +24502,26 @@ i32.const 15044 i32.lt_s br_if $folding-inner1 + local.get $1 + local.set $4 global.get $~lib/memory/__stack_pointer i64.const 0 i64.store loop $for-loop|0 local.get $5 local.get $6 - i32.lt_s + i32.gt_s if global.get $~lib/memory/__stack_pointer - local.get $4 - local.get $5 + local.get $3 + local.get $6 i32.const 2 i32.shl i32.add i32.load local.tee $7 i32.store - local.get $5 + local.get $6 i32.const 1 i32.sub local.set $1 @@ -24922,7 +24532,7 @@ if block $while-break|1 global.get $~lib/memory/__stack_pointer - local.get $4 + local.get $3 local.get $1 i32.const 2 i32.shl @@ -24934,7 +24544,7 @@ global.set $~argumentsLength local.get $7 local.get $8 - local.get $3 + local.get $4 i32.load call_indirect $0 (type $i32_i32_=>_i32) i32.const 0 @@ -24945,7 +24555,7 @@ i32.const 1 i32.sub local.set $1 - local.get $4 + local.get $3 local.get $2 i32.const 1 i32.add @@ -24958,7 +24568,7 @@ end end end - local.get $4 + local.get $3 local.get $1 i32.const 1 i32.add @@ -24967,10 +24577,10 @@ i32.add local.get $7 i32.store - local.get $5 + local.get $6 i32.const 1 i32.add - local.set $5 + local.set $6 br $for-loop|0 end end @@ -25595,48 +25205,443 @@ end local.get $7 local.get $1 - local.get $2 - i32.const 1 - i32.shl - i32.add - local.get $0 - local.get $4 - i32.const 3 - i32.shl - i32.add - f64.load - call $~lib/util/number/dtoa_buffered - local.get $2 - i32.add - local.tee $0 - i32.gt_s - if + local.get $2 + i32.const 1 + i32.shl + i32.add + local.get $0 + local.get $4 + i32.const 3 + i32.shl + i32.add + f64.load + call $~lib/util/number/dtoa_buffered + local.get $2 + i32.add + local.tee $0 + i32.gt_s + if + local.get $1 + local.get $0 + call $~lib/string/String#substring + local.set $0 + br $folding-inner0 + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + return + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + return + end + i32.const 31456 + i32.const 31504 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) + (func $~lib/util/string/joinStringArray (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 15044 + i32.lt_s + if + i32.const 31456 + i32.const 31504 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.tee $6 + i64.const 0 + i64.store + local.get $6 + i32.const 0 + i32.store offset=8 + local.get $1 + i32.const 1 + i32.sub + local.tee $6 + i32.const 0 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 8752 + return + end + local.get $6 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.load + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + i32.const 8752 + local.get $0 + select + return + end + loop $for-loop|0 + local.get $1 + local.get $5 + i32.gt_s + if + global.get $~lib/memory/__stack_pointer + local.get $0 + local.get $5 + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $7 + i32.store offset=4 + local.get $7 + if + local.get $4 + local.get $7 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 1 + i32.shr_u + i32.add + local.set $4 + end + local.get $5 + i32.const 1 + i32.add + local.set $5 + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + local.get $4 + local.get $6 + local.get $2 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 1 + i32.shr_u + local.tee $7 + i32.mul + i32.add + i32.const 1 + i32.shl + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $1 + i32.store offset=8 + i32.const 0 + local.set $5 + loop $for-loop|1 + local.get $5 + local.get $6 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + local.get $0 + local.get $5 + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $4 + i32.store offset=4 + local.get $4 + if + local.get $1 + local.get $3 + i32.const 1 + i32.shl + i32.add + local.get $4 + local.get $4 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 1 + i32.shr_u + local.tee $4 + i32.const 1 + i32.shl + call $~lib/memory/memory.copy + local.get $3 + local.get $4 + i32.add + local.set $3 + end + local.get $7 + if + local.get $1 + local.get $3 + i32.const 1 + i32.shl + i32.add + local.get $2 + local.get $7 + i32.const 1 + i32.shl + call $~lib/memory/memory.copy + local.get $3 + local.get $7 + i32.add + local.set $3 + end + local.get $5 + i32.const 1 + i32.add + local.set $5 + br $for-loop|1 + end + end + global.get $~lib/memory/__stack_pointer + local.get $0 + local.get $6 + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $0 + i32.store offset=4 + local.get $0 + if + local.get $1 + local.get $3 + i32.const 1 + i32.shl + i32.add + local.get $0 + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 1 + i32.shr_u + i32.const 1 + i32.shl + call $~lib/memory/memory.copy + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + ) + (func $~lib/util/number/itoa64 (param $0 i64) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 15044 + i32.lt_s + if + i32.const 31456 + i32.const 31504 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $0 + i64.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 9344 + return + end + i64.const 0 + local.get $0 + i64.sub + local.get $0 + local.get $0 + i64.const 63 + i64.shr_u + i32.wrap_i64 + local.tee $2 + select + local.tee $0 + i64.const 4294967295 + i64.le_u + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.wrap_i64 + local.tee $3 + local.tee $1 + i32.const 100000 + i32.lt_u + if (result i32) + local.get $1 + i32.const 100 + i32.lt_u + if (result i32) local.get $1 - local.get $0 - call $~lib/string/String#substring - local.set $0 - br $folding-inner0 + i32.const 10 + i32.ge_u + i32.const 1 + i32.add + else + local.get $1 + i32.const 10000 + i32.ge_u + i32.const 3 + i32.add + local.get $1 + i32.const 1000 + i32.ge_u + i32.add end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer + else local.get $1 - return + i32.const 10000000 + i32.lt_u + if (result i32) + local.get $1 + i32.const 1000000 + i32.ge_u + i32.const 6 + i32.add + else + local.get $1 + i32.const 1000000000 + i32.ge_u + i32.const 8 + i32.add + local.get $1 + i32.const 100000000 + i32.ge_u + i32.add + end end + local.get $2 + i32.add + local.tee $4 + i32.const 1 + i32.shl + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $1 + i32.store + local.get $1 + local.get $3 + local.get $4 + call $~lib/util/number/utoa32_dec_lut + else global.get $~lib/memory/__stack_pointer - i32.const 4 + local.get $0 + i64.const 1000000000000000 + i64.lt_u + if (result i32) + local.get $0 + i64.const 1000000000000 + i64.lt_u + if (result i32) + local.get $0 + i64.const 100000000000 + i64.ge_u + i32.const 10 + i32.add + local.get $0 + i64.const 10000000000 + i64.ge_u + i32.add + else + local.get $0 + i64.const 100000000000000 + i64.ge_u + i32.const 13 + i32.add + local.get $0 + i64.const 10000000000000 + i64.ge_u + i32.add + end + else + local.get $0 + i64.const 100000000000000000 + i64.lt_u + if (result i32) + local.get $0 + i64.const 10000000000000000 + i64.ge_u + i32.const 16 + i32.add + else + local.get $0 + i64.const -8446744073709551616 + i64.ge_u + i32.const 18 + i32.add + local.get $0 + i64.const 1000000000000000000 + i64.ge_u + i32.add + end + end + local.get $2 i32.add - global.set $~lib/memory/__stack_pointer + local.tee $3 + i32.const 1 + i32.shl + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $1 + i32.store + local.get $1 local.get $0 - return + local.get $3 + call $~lib/util/number/utoa64_dec_lut end - i32.const 31456 - i32.const 31504 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable + local.get $2 + if + local.get $1 + i32.const 45 + i32.store16 + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 ) (func $~lib/array/Array<~lib/array/Array>#flat (param $0 i32) (result i32) (local $1 i32) @@ -30022,6 +30027,7 @@ (func $export:~lib/array/Array<~lib/string/String>#fill@varargs (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) (local $4 i32) (local $5 i32) + (local $6 i32) global.get $~lib/memory/__stack_pointer i32.const 8 i32.sub @@ -30062,75 +30068,76 @@ local.set $3 end local.get $0 + local.tee $4 i32.load offset=4 - local.set $5 + local.set $6 local.get $0 i32.load offset=12 - local.set $4 + local.set $5 local.get $2 i32.const 0 i32.lt_s if (result i32) local.get $2 - local.get $4 + local.get $5 i32.add - local.tee $2 + local.tee $0 i32.const 0 - local.get $2 + local.get $0 i32.const 0 i32.gt_s select else local.get $2 - local.get $4 + local.get $5 local.get $2 - local.get $4 + local.get $5 i32.lt_s select end - local.set $2 + local.set $0 local.get $3 i32.const 0 i32.lt_s if (result i32) local.get $3 - local.get $4 + local.get $5 i32.add - local.tee $3 + local.tee $2 i32.const 0 - local.get $3 + local.get $2 i32.const 0 i32.gt_s select else local.get $3 - local.get $4 + local.get $5 local.get $3 - local.get $4 + local.get $5 i32.lt_s select end - local.set $3 + local.set $2 loop $for-loop|0 + local.get $0 local.get $2 - local.get $3 i32.lt_s if - local.get $5 - local.get $2 + local.get $6 + local.get $0 i32.const 2 i32.shl i32.add local.get $1 i32.store - local.get $0 + local.get $4 local.get $1 i32.const 1 call $~lib/rt/itcms/__link - local.get $2 + local.get $0 i32.const 1 i32.add - local.set $2 + local.set $0 br $for-loop|0 end end @@ -30138,7 +30145,7 @@ i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - local.get $0 + local.get $4 ) (func $export:~lib/array/Array<~lib/string/String>#includes@varargs (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) @@ -30266,6 +30273,8 @@ i32.load offset=12 local.set $2 end + local.get $0 + local.set $3 global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub @@ -30278,9 +30287,9 @@ i32.const 0 i32.store block $__inlined_func$~lib/array/Array<~lib/string/String>#lastIndexOf - local.get $0 + local.get $3 i32.load offset=12 - local.tee $3 + local.tee $0 i32.eqz if global.get $~lib/memory/__stack_pointer @@ -30288,36 +30297,36 @@ i32.add global.set $~lib/memory/__stack_pointer i32.const -1 - local.set $2 + local.set $0 br $__inlined_func$~lib/array/Array<~lib/string/String>#lastIndexOf end + local.get $0 local.get $2 - local.get $3 i32.add - local.get $3 + local.get $0 i32.const 1 i32.sub local.get $2 + local.get $0 local.get $2 - local.get $3 - i32.ge_s + i32.le_s select local.get $2 i32.const 0 i32.lt_s select - local.set $2 - local.get $0 - i32.load offset=4 local.set $0 + local.get $3 + i32.load offset=4 + local.set $2 loop $while-continue|0 - local.get $2 + local.get $0 i32.const 0 i32.ge_s if global.get $~lib/memory/__stack_pointer - local.get $0 local.get $2 + local.get $0 i32.const 2 i32.shl i32.add @@ -30334,10 +30343,10 @@ global.set $~lib/memory/__stack_pointer br $__inlined_func$~lib/array/Array<~lib/string/String>#lastIndexOf end - local.get $2 + local.get $0 i32.const 1 i32.sub - local.set $2 + local.set $0 br $while-continue|0 end end @@ -30346,13 +30355,13 @@ i32.add global.set $~lib/memory/__stack_pointer i32.const -1 - local.set $2 + local.set $0 end global.get $~lib/memory/__stack_pointer i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - local.get $2 + local.get $0 return end i32.const 31456 @@ -31571,8 +31580,11 @@ i32.store end local.get $0 + i32.load offset=4 + local.get $0 + i32.load offset=12 local.get $1 - call $~lib/array/Array<~lib/string/String|null>#join + call $~lib/util/string/joinStringArray global.get $~lib/memory/__stack_pointer i32.const 4 i32.add diff --git a/tests/compiler/std/arraybuffer.optimized.wat b/tests/compiler/std/arraybuffer.optimized.wat index 0826be898f..04464b1277 100644 --- a/tests/compiler/std/arraybuffer.optimized.wat +++ b/tests/compiler/std/arraybuffer.optimized.wat @@ -1,9 +1,9 @@ (module (type $none_=>_none (func)) (type $i32_i32_=>_none (func (param i32 i32))) + (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) (type $i32_=>_none (func (param i32))) (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) - (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) (type $none_=>_i32 (func (result i32))) (type $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) @@ -1042,7 +1042,7 @@ local.get $0 i32.const 4 i32.add - local.tee $0 + local.tee $1 i32.const 18228 i32.ge_u if @@ -1052,20 +1052,20 @@ call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT - local.get $0 + local.get $1 i32.const 4 i32.sub - local.set $1 - local.get $0 + local.set $0 + local.get $1 i32.const 15 i32.and i32.const 1 - local.get $0 + local.get $1 select if (result i32) i32.const 1 else - local.get $1 + local.get $0 i32.load i32.const 1 i32.and @@ -1078,14 +1078,11 @@ call $~lib/builtins/abort unreachable end - local.get $1 - local.tee $0 + local.get $0 + local.get $0 i32.load i32.const 1 i32.or - local.set $1 - local.get $0 - local.get $1 i32.store local.get $0 call $~lib/rt/tlsf/insertBlock @@ -1098,8 +1095,7 @@ local.tee $0 local.get $0 i32.store offset=4 - global.get $~lib/rt/itcms/toSpace - local.tee $0 + local.get $0 local.get $0 i32.store offset=8 i32.const 0 @@ -1239,6 +1235,210 @@ end end ) + (func $~lib/rt/tlsf/allocateBlock (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + local.get $1 + i32.const 1073741820 + i32.gt_u + if + i32.const 1168 + i32.const 1504 + i32.const 458 + i32.const 29 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.tee $2 + local.get $1 + i32.const 12 + i32.le_u + if (result i32) + i32.const 12 + else + local.get $1 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + end + local.tee $0 + call $~lib/rt/tlsf/searchBlock + local.tee $1 + i32.eqz + if + local.get $0 + i32.const 536870910 + i32.lt_u + if (result i32) + local.get $0 + i32.const 1 + i32.const 27 + local.get $0 + i32.clz + i32.sub + i32.shl + i32.const 1 + i32.sub + i32.add + else + local.get $0 + end + i32.const 4 + memory.size + local.tee $1 + i32.const 16 + i32.shl + i32.const 4 + i32.sub + local.get $2 + i32.load offset=1568 + i32.ne + i32.shl + i32.add + i32.const 65535 + i32.add + i32.const -65536 + i32.and + i32.const 16 + i32.shr_u + local.set $3 + local.get $1 + local.get $3 + local.get $1 + local.get $3 + i32.gt_s + select + memory.grow + i32.const 0 + i32.lt_s + if + local.get $3 + memory.grow + i32.const 0 + i32.lt_s + if + unreachable + end + end + local.get $2 + local.get $1 + i32.const 16 + i32.shl + memory.size + i32.const 16 + i32.shl + call $~lib/rt/tlsf/addMemory + local.get $2 + local.get $0 + call $~lib/rt/tlsf/searchBlock + local.tee $1 + i32.eqz + if + i32.const 0 + i32.const 1504 + i32.const 496 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + end + local.get $0 + local.get $1 + i32.load + i32.const -4 + i32.and + i32.gt_u + if + i32.const 0 + i32.const 1504 + i32.const 498 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.get $1 + call $~lib/rt/tlsf/removeBlock + local.get $1 + i32.load + local.set $3 + local.get $0 + i32.const 4 + i32.add + i32.const 15 + i32.and + if + i32.const 0 + i32.const 1504 + i32.const 357 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const -4 + i32.and + local.get $0 + i32.sub + local.tee $4 + i32.const 16 + i32.ge_u + if + local.get $1 + local.get $0 + local.get $3 + i32.const 2 + i32.and + i32.or + i32.store + local.get $0 + local.get $1 + i32.const 4 + i32.add + i32.add + local.tee $0 + local.get $4 + i32.const 4 + i32.sub + i32.const 1 + i32.or + i32.store + local.get $2 + local.get $0 + call $~lib/rt/tlsf/insertBlock + else + local.get $1 + local.get $3 + i32.const -2 + i32.and + i32.store + local.get $1 + i32.const 4 + i32.add + local.tee $0 + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.get $0 + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + i32.load + i32.const -3 + i32.and + i32.store + end + local.get $1 + ) (func $~lib/memory/memory.fill (param $0 i32) (param $1 i32) (local $2 i32) block $~lib/util/memory/memset|inlined.0 @@ -1418,9 +1618,6 @@ (func $~lib/rt/itcms/__new (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) local.get $0 i32.const 1073741804 i32.ge_u @@ -1438,12 +1635,12 @@ if block $__inlined_func$~lib/rt/itcms/interrupt i32.const 2048 - local.set $3 + local.set $2 loop $do-continue|0 - local.get $3 + local.get $2 call $~lib/rt/itcms/step i32.sub - local.set $3 + local.set $2 global.get $~lib/rt/itcms/state i32.eqz if @@ -1459,14 +1656,14 @@ global.set $~lib/rt/itcms/threshold br $__inlined_func$~lib/rt/itcms/interrupt end - local.get $3 + local.get $2 i32.const 0 i32.gt_s br_if $do-continue|0 end global.get $~lib/rt/itcms/total - local.tee $3 - local.get $3 + local.tee $2 + local.get $2 global.get $~lib/rt/itcms/threshold i32.sub i32.const 1024 @@ -1480,230 +1677,35 @@ local.get $0 i32.const 16 i32.add - local.set $6 + local.set $2 global.get $~lib/rt/tlsf/ROOT i32.eqz if call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT - local.get $6 - i32.const 1073741820 - i32.gt_u - if - i32.const 1168 - i32.const 1504 - i32.const 458 - i32.const 29 - call $~lib/builtins/abort - unreachable - end - local.tee $2 - local.get $6 - i32.const 12 - i32.le_u - if (result i32) - i32.const 12 - else - local.get $6 - i32.const 19 - i32.add - i32.const -16 - i32.and - i32.const 4 - i32.sub - end - local.tee $3 - call $~lib/rt/tlsf/searchBlock - local.tee $6 - i32.eqz - if - local.get $3 - i32.const 536870910 - i32.lt_u - if (result i32) - local.get $3 - i32.const 1 - i32.const 27 - local.get $3 - i32.clz - i32.sub - i32.shl - i32.const 1 - i32.sub - i32.add - else - local.get $3 - end - i32.const 4 - memory.size - local.tee $6 - i32.const 16 - i32.shl - i32.const 4 - i32.sub - local.get $2 - i32.load offset=1568 - i32.ne - i32.shl - i32.add - i32.const 65535 - i32.add - i32.const -65536 - i32.and - i32.const 16 - i32.shr_u - local.set $5 - local.get $6 - local.get $5 - local.get $5 - local.get $6 - i32.lt_s - select - memory.grow - i32.const 0 - i32.lt_s - if - local.get $5 - memory.grow - i32.const 0 - i32.lt_s - if - unreachable - end - end - local.get $2 - local.get $6 - i32.const 16 - i32.shl - memory.size - i32.const 16 - i32.shl - call $~lib/rt/tlsf/addMemory - local.get $2 - local.get $3 - call $~lib/rt/tlsf/searchBlock - local.tee $6 - i32.eqz - if - i32.const 0 - i32.const 1504 - i32.const 496 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - end - local.get $3 - local.get $6 - i32.load - i32.const -4 - i32.and - i32.gt_u - if - i32.const 0 - i32.const 1504 - i32.const 498 - i32.const 14 - call $~lib/builtins/abort - unreachable - end local.get $2 - local.get $6 - call $~lib/rt/tlsf/removeBlock - local.get $6 - i32.load - local.set $5 - local.get $3 - i32.const 4 - i32.add - i32.const 15 - i32.and - if - i32.const 0 - i32.const 1504 - i32.const 357 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $5 - i32.const -4 - i32.and - local.get $3 - i32.sub - local.tee $4 - i32.const 16 - i32.ge_u - if - local.get $6 - local.get $3 - local.get $5 - i32.const 2 - i32.and - i32.or - i32.store - local.get $3 - local.get $6 - i32.const 4 - i32.add - i32.add - local.tee $3 - local.get $4 - i32.const 4 - i32.sub - i32.const 1 - i32.or - i32.store - local.get $2 - local.get $3 - call $~lib/rt/tlsf/insertBlock - else - local.get $6 - local.get $5 - i32.const -2 - i32.and - i32.store - local.get $6 - i32.const 4 - i32.add - local.tee $3 - local.get $6 - i32.load - i32.const -4 - i32.and - i32.add - local.get $3 - local.get $6 - i32.load - i32.const -4 - i32.and - i32.add - i32.load - i32.const -3 - i32.and - i32.store - end - local.get $6 + call $~lib/rt/tlsf/allocateBlock + local.tee $2 local.get $1 i32.store offset=12 - local.get $6 + local.get $2 local.get $0 i32.store offset=16 global.get $~lib/rt/itcms/fromSpace local.tee $3 i32.load offset=8 local.set $1 - local.get $6 + local.get $2 local.get $3 global.get $~lib/rt/itcms/white i32.or i32.store offset=4 - local.get $6 + local.get $2 local.get $1 i32.store offset=8 local.get $1 - local.get $6 + local.get $2 local.get $1 i32.load offset=4 i32.const 3 @@ -1711,10 +1713,10 @@ i32.or i32.store offset=4 local.get $3 - local.get $6 + local.get $2 i32.store offset=8 global.get $~lib/rt/itcms/total - local.get $6 + local.get $2 i32.load i32.const -4 i32.and @@ -1722,7 +1724,7 @@ i32.add i32.add global.set $~lib/rt/itcms/total - local.get $6 + local.get $2 i32.const 20 i32.add local.tee $1 diff --git a/tests/compiler/std/dataview.optimized.wat b/tests/compiler/std/dataview.optimized.wat index ba303662a9..e48d3afc55 100644 --- a/tests/compiler/std/dataview.optimized.wat +++ b/tests/compiler/std/dataview.optimized.wat @@ -1,9 +1,9 @@ (module (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) + (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) (type $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) (type $none_=>_none (func)) (type $i32_i32_=>_none (func (param i32 i32))) - (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) (type $i32_=>_none (func (param i32))) (type $i32_i32_=>_i64 (func (param i32 i32) (result i64))) (type $i32_i64_i32_=>_none (func (param i32 i64 i32))) @@ -1048,7 +1048,7 @@ local.get $0 i32.const 4 i32.add - local.tee $0 + local.tee $1 i32.const 18172 i32.ge_u if @@ -1058,20 +1058,20 @@ call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT - local.get $0 + local.get $1 i32.const 4 i32.sub - local.set $1 - local.get $0 + local.set $0 + local.get $1 i32.const 15 i32.and i32.const 1 - local.get $0 + local.get $1 select if (result i32) i32.const 1 else - local.get $1 + local.get $0 i32.load i32.const 1 i32.and @@ -1084,14 +1084,11 @@ call $~lib/builtins/abort unreachable end - local.get $1 - local.tee $0 + local.get $0 + local.get $0 i32.load i32.const 1 i32.or - local.set $1 - local.get $0 - local.get $1 i32.store local.get $0 call $~lib/rt/tlsf/insertBlock @@ -1104,8 +1101,7 @@ local.tee $0 local.get $0 i32.store offset=4 - global.get $~lib/rt/itcms/toSpace - local.tee $0 + local.get $0 local.get $0 i32.store offset=8 i32.const 0 @@ -1245,6 +1241,210 @@ end end ) + (func $~lib/rt/tlsf/allocateBlock (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + local.get $1 + i32.const 1073741820 + i32.gt_u + if + i32.const 1168 + i32.const 1504 + i32.const 458 + i32.const 29 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.tee $2 + local.get $1 + i32.const 12 + i32.le_u + if (result i32) + i32.const 12 + else + local.get $1 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + end + local.tee $0 + call $~lib/rt/tlsf/searchBlock + local.tee $1 + i32.eqz + if + local.get $0 + i32.const 536870910 + i32.lt_u + if (result i32) + local.get $0 + i32.const 1 + i32.const 27 + local.get $0 + i32.clz + i32.sub + i32.shl + i32.const 1 + i32.sub + i32.add + else + local.get $0 + end + i32.const 4 + memory.size + local.tee $1 + i32.const 16 + i32.shl + i32.const 4 + i32.sub + local.get $2 + i32.load offset=1568 + i32.ne + i32.shl + i32.add + i32.const 65535 + i32.add + i32.const -65536 + i32.and + i32.const 16 + i32.shr_u + local.set $3 + local.get $1 + local.get $3 + local.get $1 + local.get $3 + i32.gt_s + select + memory.grow + i32.const 0 + i32.lt_s + if + local.get $3 + memory.grow + i32.const 0 + i32.lt_s + if + unreachable + end + end + local.get $2 + local.get $1 + i32.const 16 + i32.shl + memory.size + i32.const 16 + i32.shl + call $~lib/rt/tlsf/addMemory + local.get $2 + local.get $0 + call $~lib/rt/tlsf/searchBlock + local.tee $1 + i32.eqz + if + i32.const 0 + i32.const 1504 + i32.const 496 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + end + local.get $0 + local.get $1 + i32.load + i32.const -4 + i32.and + i32.gt_u + if + i32.const 0 + i32.const 1504 + i32.const 498 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.get $1 + call $~lib/rt/tlsf/removeBlock + local.get $1 + i32.load + local.set $3 + local.get $0 + i32.const 4 + i32.add + i32.const 15 + i32.and + if + i32.const 0 + i32.const 1504 + i32.const 357 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const -4 + i32.and + local.get $0 + i32.sub + local.tee $4 + i32.const 16 + i32.ge_u + if + local.get $1 + local.get $0 + local.get $3 + i32.const 2 + i32.and + i32.or + i32.store + local.get $0 + local.get $1 + i32.const 4 + i32.add + i32.add + local.tee $0 + local.get $4 + i32.const 4 + i32.sub + i32.const 1 + i32.or + i32.store + local.get $2 + local.get $0 + call $~lib/rt/tlsf/insertBlock + else + local.get $1 + local.get $3 + i32.const -2 + i32.and + i32.store + local.get $1 + i32.const 4 + i32.add + local.tee $0 + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.get $0 + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + i32.load + i32.const -3 + i32.and + i32.store + end + local.get $1 + ) (func $~lib/memory/memory.fill (param $0 i32) (param $1 i32) (local $2 i32) block $~lib/util/memory/memset|inlined.0 @@ -1424,9 +1624,6 @@ (func $~lib/rt/itcms/__new (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) local.get $0 i32.const 1073741804 i32.ge_u @@ -1444,12 +1641,12 @@ if block $__inlined_func$~lib/rt/itcms/interrupt i32.const 2048 - local.set $3 + local.set $2 loop $do-continue|0 - local.get $3 + local.get $2 call $~lib/rt/itcms/step i32.sub - local.set $3 + local.set $2 global.get $~lib/rt/itcms/state i32.eqz if @@ -1465,14 +1662,14 @@ global.set $~lib/rt/itcms/threshold br $__inlined_func$~lib/rt/itcms/interrupt end - local.get $3 + local.get $2 i32.const 0 i32.gt_s br_if $do-continue|0 end global.get $~lib/rt/itcms/total - local.tee $3 - local.get $3 + local.tee $2 + local.get $2 global.get $~lib/rt/itcms/threshold i32.sub i32.const 1024 @@ -1486,230 +1683,35 @@ local.get $0 i32.const 16 i32.add - local.set $6 + local.set $2 global.get $~lib/rt/tlsf/ROOT i32.eqz if call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT - local.get $6 - i32.const 1073741820 - i32.gt_u - if - i32.const 1168 - i32.const 1504 - i32.const 458 - i32.const 29 - call $~lib/builtins/abort - unreachable - end - local.tee $2 - local.get $6 - i32.const 12 - i32.le_u - if (result i32) - i32.const 12 - else - local.get $6 - i32.const 19 - i32.add - i32.const -16 - i32.and - i32.const 4 - i32.sub - end - local.tee $3 - call $~lib/rt/tlsf/searchBlock - local.tee $6 - i32.eqz - if - local.get $3 - i32.const 536870910 - i32.lt_u - if (result i32) - local.get $3 - i32.const 1 - i32.const 27 - local.get $3 - i32.clz - i32.sub - i32.shl - i32.const 1 - i32.sub - i32.add - else - local.get $3 - end - i32.const 4 - memory.size - local.tee $6 - i32.const 16 - i32.shl - i32.const 4 - i32.sub - local.get $2 - i32.load offset=1568 - i32.ne - i32.shl - i32.add - i32.const 65535 - i32.add - i32.const -65536 - i32.and - i32.const 16 - i32.shr_u - local.set $5 - local.get $6 - local.get $5 - local.get $5 - local.get $6 - i32.lt_s - select - memory.grow - i32.const 0 - i32.lt_s - if - local.get $5 - memory.grow - i32.const 0 - i32.lt_s - if - unreachable - end - end - local.get $2 - local.get $6 - i32.const 16 - i32.shl - memory.size - i32.const 16 - i32.shl - call $~lib/rt/tlsf/addMemory - local.get $2 - local.get $3 - call $~lib/rt/tlsf/searchBlock - local.tee $6 - i32.eqz - if - i32.const 0 - i32.const 1504 - i32.const 496 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - end - local.get $3 - local.get $6 - i32.load - i32.const -4 - i32.and - i32.gt_u - if - i32.const 0 - i32.const 1504 - i32.const 498 - i32.const 14 - call $~lib/builtins/abort - unreachable - end local.get $2 - local.get $6 - call $~lib/rt/tlsf/removeBlock - local.get $6 - i32.load - local.set $5 - local.get $3 - i32.const 4 - i32.add - i32.const 15 - i32.and - if - i32.const 0 - i32.const 1504 - i32.const 357 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $5 - i32.const -4 - i32.and - local.get $3 - i32.sub - local.tee $4 - i32.const 16 - i32.ge_u - if - local.get $6 - local.get $3 - local.get $5 - i32.const 2 - i32.and - i32.or - i32.store - local.get $3 - local.get $6 - i32.const 4 - i32.add - i32.add - local.tee $3 - local.get $4 - i32.const 4 - i32.sub - i32.const 1 - i32.or - i32.store - local.get $2 - local.get $3 - call $~lib/rt/tlsf/insertBlock - else - local.get $6 - local.get $5 - i32.const -2 - i32.and - i32.store - local.get $6 - i32.const 4 - i32.add - local.tee $3 - local.get $6 - i32.load - i32.const -4 - i32.and - i32.add - local.get $3 - local.get $6 - i32.load - i32.const -4 - i32.and - i32.add - i32.load - i32.const -3 - i32.and - i32.store - end - local.get $6 + call $~lib/rt/tlsf/allocateBlock + local.tee $2 local.get $1 i32.store offset=12 - local.get $6 + local.get $2 local.get $0 i32.store offset=16 global.get $~lib/rt/itcms/fromSpace local.tee $3 i32.load offset=8 local.set $1 - local.get $6 + local.get $2 local.get $3 global.get $~lib/rt/itcms/white i32.or i32.store offset=4 - local.get $6 + local.get $2 local.get $1 i32.store offset=8 local.get $1 - local.get $6 + local.get $2 local.get $1 i32.load offset=4 i32.const 3 @@ -1717,10 +1719,10 @@ i32.or i32.store offset=4 local.get $3 - local.get $6 + local.get $2 i32.store offset=8 global.get $~lib/rt/itcms/total - local.get $6 + local.get $2 i32.load i32.const -4 i32.and @@ -1728,7 +1730,7 @@ i32.add i32.add global.set $~lib/rt/itcms/total - local.get $6 + local.get $2 i32.const 20 i32.add local.tee $1 diff --git a/tests/compiler/std/date.optimized.wat b/tests/compiler/std/date.optimized.wat index c89a8613c8..3168afbd48 100644 --- a/tests/compiler/std/date.optimized.wat +++ b/tests/compiler/std/date.optimized.wat @@ -1407,7 +1407,7 @@ local.get $0 i32.const 4 i32.add - local.tee $0 + local.tee $1 i32.const 23948 i32.ge_u if @@ -1417,20 +1417,20 @@ call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT - local.get $0 + local.get $1 i32.const 4 i32.sub - local.set $1 - local.get $0 + local.set $0 + local.get $1 i32.const 15 i32.and i32.const 1 - local.get $0 + local.get $1 select if (result i32) i32.const 1 else - local.get $1 + local.get $0 i32.load i32.const 1 i32.and @@ -1443,14 +1443,11 @@ call $~lib/builtins/abort unreachable end - local.get $1 - local.tee $0 + local.get $0 + local.get $0 i32.load i32.const 1 i32.or - local.set $1 - local.get $0 - local.get $1 i32.store local.get $0 call $~lib/rt/tlsf/insertBlock @@ -1463,8 +1460,7 @@ local.tee $0 local.get $0 i32.store offset=4 - global.get $~lib/rt/itcms/toSpace - local.tee $0 + local.get $0 local.get $0 i32.store offset=8 i32.const 0 @@ -1604,6 +1600,210 @@ end end ) + (func $~lib/rt/tlsf/allocateBlock (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + local.get $1 + i32.const 1073741820 + i32.gt_u + if + i32.const 1200 + i32.const 1536 + i32.const 458 + i32.const 29 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.tee $2 + local.get $1 + i32.const 12 + i32.le_u + if (result i32) + i32.const 12 + else + local.get $1 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + end + local.tee $0 + call $~lib/rt/tlsf/searchBlock + local.tee $1 + i32.eqz + if + local.get $0 + i32.const 536870910 + i32.lt_u + if (result i32) + local.get $0 + i32.const 1 + i32.const 27 + local.get $0 + i32.clz + i32.sub + i32.shl + i32.const 1 + i32.sub + i32.add + else + local.get $0 + end + i32.const 4 + memory.size + local.tee $1 + i32.const 16 + i32.shl + i32.const 4 + i32.sub + local.get $2 + i32.load offset=1568 + i32.ne + i32.shl + i32.add + i32.const 65535 + i32.add + i32.const -65536 + i32.and + i32.const 16 + i32.shr_u + local.set $3 + local.get $1 + local.get $3 + local.get $1 + local.get $3 + i32.gt_s + select + memory.grow + i32.const 0 + i32.lt_s + if + local.get $3 + memory.grow + i32.const 0 + i32.lt_s + if + unreachable + end + end + local.get $2 + local.get $1 + i32.const 16 + i32.shl + memory.size + i32.const 16 + i32.shl + call $~lib/rt/tlsf/addMemory + local.get $2 + local.get $0 + call $~lib/rt/tlsf/searchBlock + local.tee $1 + i32.eqz + if + i32.const 0 + i32.const 1536 + i32.const 496 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + end + local.get $0 + local.get $1 + i32.load + i32.const -4 + i32.and + i32.gt_u + if + i32.const 0 + i32.const 1536 + i32.const 498 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.get $1 + call $~lib/rt/tlsf/removeBlock + local.get $1 + i32.load + local.set $3 + local.get $0 + i32.const 4 + i32.add + i32.const 15 + i32.and + if + i32.const 0 + i32.const 1536 + i32.const 357 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const -4 + i32.and + local.get $0 + i32.sub + local.tee $4 + i32.const 16 + i32.ge_u + if + local.get $1 + local.get $0 + local.get $3 + i32.const 2 + i32.and + i32.or + i32.store + local.get $0 + local.get $1 + i32.const 4 + i32.add + i32.add + local.tee $0 + local.get $4 + i32.const 4 + i32.sub + i32.const 1 + i32.or + i32.store + local.get $2 + local.get $0 + call $~lib/rt/tlsf/insertBlock + else + local.get $1 + local.get $3 + i32.const -2 + i32.and + i32.store + local.get $1 + i32.const 4 + i32.add + local.tee $0 + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.get $0 + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + i32.load + i32.const -3 + i32.and + i32.store + end + local.get $1 + ) (func $~lib/memory/memory.fill (param $0 i32) (param $1 i32) (local $2 i32) block $~lib/util/memory/memset|inlined.0 @@ -1762,313 +1962,115 @@ i64.const 0 i64.store offset=8 local.get $0 - i64.const 0 - i64.store offset=16 - local.get $0 - i64.const 0 - i64.store offset=24 - local.get $1 - i32.const 32 - i32.sub - local.set $1 - local.get $0 - i32.const 32 - i32.add - local.set $0 - br $while-continue|0 - end - end - end - ) - (func $~lib/rt/itcms/__new (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - local.get $0 - i32.const 1073741804 - i32.ge_u - if - i32.const 1200 - i32.const 1264 - i32.const 260 - i32.const 31 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/rt/itcms/total - global.get $~lib/rt/itcms/threshold - i32.ge_u - if - block $__inlined_func$~lib/rt/itcms/interrupt - i32.const 2048 - local.set $3 - loop $do-continue|0 - local.get $3 - call $~lib/rt/itcms/step - i32.sub - local.set $3 - global.get $~lib/rt/itcms/state - i32.eqz - if - global.get $~lib/rt/itcms/total - i64.extend_i32_u - i64.const 200 - i64.mul - i64.const 100 - i64.div_u - i32.wrap_i64 - i32.const 1024 - i32.add - global.set $~lib/rt/itcms/threshold - br $__inlined_func$~lib/rt/itcms/interrupt - end - local.get $3 - i32.const 0 - i32.gt_s - br_if $do-continue|0 - end - global.get $~lib/rt/itcms/total - local.tee $3 - local.get $3 - global.get $~lib/rt/itcms/threshold - i32.sub - i32.const 1024 - i32.lt_u - i32.const 10 - i32.shl - i32.add - global.set $~lib/rt/itcms/threshold - end - end - local.get $0 - i32.const 16 - i32.add - local.set $6 - global.get $~lib/rt/tlsf/ROOT - i32.eqz - if - call $~lib/rt/tlsf/initialize - end - global.get $~lib/rt/tlsf/ROOT - local.get $6 - i32.const 1073741820 - i32.gt_u - if - i32.const 1200 - i32.const 1536 - i32.const 458 - i32.const 29 - call $~lib/builtins/abort - unreachable - end - local.tee $2 - local.get $6 - i32.const 12 - i32.le_u - if (result i32) - i32.const 12 - else - local.get $6 - i32.const 19 - i32.add - i32.const -16 - i32.and - i32.const 4 - i32.sub - end - local.tee $3 - call $~lib/rt/tlsf/searchBlock - local.tee $6 - i32.eqz - if - local.get $3 - i32.const 536870910 - i32.lt_u - if (result i32) - local.get $3 - i32.const 1 - i32.const 27 - local.get $3 - i32.clz - i32.sub - i32.shl - i32.const 1 - i32.sub - i32.add - else - local.get $3 - end - i32.const 4 - memory.size - local.tee $6 - i32.const 16 - i32.shl - i32.const 4 - i32.sub - local.get $2 - i32.load offset=1568 - i32.ne - i32.shl - i32.add - i32.const 65535 - i32.add - i32.const -65536 - i32.and - i32.const 16 - i32.shr_u - local.set $5 - local.get $6 - local.get $5 - local.get $5 - local.get $6 - i32.lt_s - select - memory.grow - i32.const 0 - i32.lt_s - if - local.get $5 - memory.grow - i32.const 0 - i32.lt_s - if - unreachable + i64.const 0 + i64.store offset=16 + local.get $0 + i64.const 0 + i64.store offset=24 + local.get $1 + i32.const 32 + i32.sub + local.set $1 + local.get $0 + i32.const 32 + i32.add + local.set $0 + br $while-continue|0 end end - local.get $2 - local.get $6 - i32.const 16 - i32.shl - memory.size - i32.const 16 - i32.shl - call $~lib/rt/tlsf/addMemory - local.get $2 - local.get $3 - call $~lib/rt/tlsf/searchBlock - local.tee $6 - i32.eqz - if - i32.const 0 - i32.const 1536 - i32.const 496 - i32.const 16 - call $~lib/builtins/abort - unreachable - end end - local.get $3 - local.get $6 - i32.load - i32.const -4 - i32.and - i32.gt_u + ) + (func $~lib/rt/itcms/__new (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + local.get $0 + i32.const 1073741804 + i32.ge_u if - i32.const 0 - i32.const 1536 - i32.const 498 - i32.const 14 + i32.const 1200 + i32.const 1264 + i32.const 260 + i32.const 31 call $~lib/builtins/abort unreachable end - local.get $2 - local.get $6 - call $~lib/rt/tlsf/removeBlock - local.get $6 - i32.load - local.set $5 - local.get $3 - i32.const 4 - i32.add - i32.const 15 - i32.and + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.ge_u if - i32.const 0 - i32.const 1536 - i32.const 357 - i32.const 14 - call $~lib/builtins/abort - unreachable + block $__inlined_func$~lib/rt/itcms/interrupt + i32.const 2048 + local.set $2 + loop $do-continue|0 + local.get $2 + call $~lib/rt/itcms/step + i32.sub + local.set $2 + global.get $~lib/rt/itcms/state + i32.eqz + if + global.get $~lib/rt/itcms/total + i64.extend_i32_u + i64.const 200 + i64.mul + i64.const 100 + i64.div_u + i32.wrap_i64 + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold + br $__inlined_func$~lib/rt/itcms/interrupt + end + local.get $2 + i32.const 0 + i32.gt_s + br_if $do-continue|0 + end + global.get $~lib/rt/itcms/total + local.tee $2 + local.get $2 + global.get $~lib/rt/itcms/threshold + i32.sub + i32.const 1024 + i32.lt_u + i32.const 10 + i32.shl + i32.add + global.set $~lib/rt/itcms/threshold + end end - local.get $5 - i32.const -4 - i32.and - local.get $3 - i32.sub - local.tee $4 + local.get $0 i32.const 16 - i32.ge_u + i32.add + local.set $2 + global.get $~lib/rt/tlsf/ROOT + i32.eqz if - local.get $6 - local.get $3 - local.get $5 - i32.const 2 - i32.and - i32.or - i32.store - local.get $3 - local.get $6 - i32.const 4 - i32.add - i32.add - local.tee $3 - local.get $4 - i32.const 4 - i32.sub - i32.const 1 - i32.or - i32.store - local.get $2 - local.get $3 - call $~lib/rt/tlsf/insertBlock - else - local.get $6 - local.get $5 - i32.const -2 - i32.and - i32.store - local.get $6 - i32.const 4 - i32.add - local.tee $3 - local.get $6 - i32.load - i32.const -4 - i32.and - i32.add - local.get $3 - local.get $6 - i32.load - i32.const -4 - i32.and - i32.add - i32.load - i32.const -3 - i32.and - i32.store + call $~lib/rt/tlsf/initialize end - local.get $6 + global.get $~lib/rt/tlsf/ROOT + local.get $2 + call $~lib/rt/tlsf/allocateBlock + local.tee $2 local.get $1 i32.store offset=12 - local.get $6 + local.get $2 local.get $0 i32.store offset=16 global.get $~lib/rt/itcms/fromSpace local.tee $3 i32.load offset=8 local.set $1 - local.get $6 + local.get $2 local.get $3 global.get $~lib/rt/itcms/white i32.or i32.store offset=4 - local.get $6 + local.get $2 local.get $1 i32.store offset=8 local.get $1 - local.get $6 + local.get $2 local.get $1 i32.load offset=4 i32.const 3 @@ -2076,10 +2078,10 @@ i32.or i32.store offset=4 local.get $3 - local.get $6 + local.get $2 i32.store offset=8 global.get $~lib/rt/itcms/total - local.get $6 + local.get $2 i32.load i32.const -4 i32.and @@ -2087,7 +2089,7 @@ i32.add i32.add global.set $~lib/rt/itcms/total - local.get $6 + local.get $2 i32.const 20 i32.add local.tee $1 @@ -3789,24 +3791,22 @@ (local $7 i32) (local $8 i32) (local $9 i32) - (local $10 i32) local.get $0 + local.tee $2 i32.load offset=12 - local.tee $10 + local.tee $7 i32.const 1 i32.add local.tee $8 - local.set $4 - local.get $8 - local.get $0 - local.tee $2 + local.tee $0 + local.get $2 i32.load offset=8 - local.tee $7 + local.tee $5 i32.const 2 i32.shr_u i32.gt_u if - local.get $4 + local.get $0 i32.const 268435455 i32.gt_u if @@ -3817,24 +3817,20 @@ call $~lib/builtins/abort unreachable end - local.get $2 - i32.load - local.tee $9 - local.set $3 block $__inlined_func$~lib/rt/itcms/__renew - local.get $7 + local.get $5 i32.const 1 i32.shl - local.tee $0 + local.tee $3 i32.const 1073741820 - local.get $0 + local.get $3 i32.const 1073741820 i32.lt_u select - local.tee $5 - local.get $4 + local.tee $3 + local.get $0 i32.const 8 - local.get $4 + local.get $0 i32.const 8 i32.gt_u select @@ -3842,15 +3838,17 @@ i32.shl local.tee $0 local.get $0 - local.get $5 + local.get $3 i32.lt_u select - local.tee $5 - local.tee $6 - local.get $9 + local.tee $4 + local.get $2 + i32.load + local.tee $9 + local.tee $0 i32.const 20 i32.sub - local.tee $4 + local.tee $6 i32.load i32.const -4 i32.and @@ -3858,34 +3856,34 @@ i32.sub i32.le_u if - local.get $4 local.get $6 + local.get $4 i32.store offset=16 - local.get $3 - local.set $0 br $__inlined_func$~lib/rt/itcms/__renew end - local.get $6 local.get $4 + local.get $6 i32.load offset=12 call $~lib/rt/itcms/__new - local.tee $0 - local.get $3 - local.get $6 - local.get $4 - i32.load offset=16 local.tee $3 - local.get $3 + local.get $0 + local.get $4 local.get $6 + i32.load offset=16 + local.tee $0 + local.get $0 + local.get $4 i32.gt_u select call $~lib/memory/memory.copy + local.get $3 + local.set $0 end local.get $0 - local.get $7 + local.get $5 i32.add + local.get $4 local.get $5 - local.get $7 i32.sub call $~lib/memory/memory.fill local.get $0 @@ -3904,12 +3902,12 @@ call $~lib/rt/itcms/__link end local.get $2 - local.get $5 + local.get $4 i32.store offset=8 end local.get $2 i32.load offset=4 - local.get $10 + local.get $7 i32.const 2 i32.shl i32.add diff --git a/tests/compiler/std/map.optimized.wat b/tests/compiler/std/map.optimized.wat index dce4a4e111..4c7aec4ea5 100644 --- a/tests/compiler/std/map.optimized.wat +++ b/tests/compiler/std/map.optimized.wat @@ -1056,7 +1056,7 @@ local.get $0 i32.const 4 i32.add - local.tee $0 + local.tee $1 i32.const 18404 i32.ge_u if @@ -1066,20 +1066,20 @@ call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT - local.get $0 + local.get $1 i32.const 4 i32.sub - local.set $1 - local.get $0 + local.set $0 + local.get $1 i32.const 15 i32.and i32.const 1 - local.get $0 + local.get $1 select if (result i32) i32.const 1 else - local.get $1 + local.get $0 i32.load i32.const 1 i32.and @@ -1092,14 +1092,11 @@ call $~lib/builtins/abort unreachable end - local.get $1 - local.tee $0 + local.get $0 + local.get $0 i32.load i32.const 1 i32.or - local.set $1 - local.get $0 - local.get $1 i32.store local.get $0 call $~lib/rt/tlsf/insertBlock @@ -1112,8 +1109,7 @@ local.tee $0 local.get $0 i32.store offset=4 - global.get $~lib/rt/itcms/toSpace - local.tee $0 + local.get $0 local.get $0 i32.store offset=8 i32.const 0 @@ -1253,6 +1249,210 @@ end end ) + (func $~lib/rt/tlsf/allocateBlock (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + local.get $1 + i32.const 1073741820 + i32.gt_u + if + i32.const 1056 + i32.const 1392 + i32.const 458 + i32.const 29 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.tee $2 + local.get $1 + i32.const 12 + i32.le_u + if (result i32) + i32.const 12 + else + local.get $1 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + end + local.tee $0 + call $~lib/rt/tlsf/searchBlock + local.tee $1 + i32.eqz + if + local.get $0 + i32.const 536870910 + i32.lt_u + if (result i32) + local.get $0 + i32.const 1 + i32.const 27 + local.get $0 + i32.clz + i32.sub + i32.shl + i32.const 1 + i32.sub + i32.add + else + local.get $0 + end + i32.const 4 + memory.size + local.tee $1 + i32.const 16 + i32.shl + i32.const 4 + i32.sub + local.get $2 + i32.load offset=1568 + i32.ne + i32.shl + i32.add + i32.const 65535 + i32.add + i32.const -65536 + i32.and + i32.const 16 + i32.shr_u + local.set $3 + local.get $1 + local.get $3 + local.get $1 + local.get $3 + i32.gt_s + select + memory.grow + i32.const 0 + i32.lt_s + if + local.get $3 + memory.grow + i32.const 0 + i32.lt_s + if + unreachable + end + end + local.get $2 + local.get $1 + i32.const 16 + i32.shl + memory.size + i32.const 16 + i32.shl + call $~lib/rt/tlsf/addMemory + local.get $2 + local.get $0 + call $~lib/rt/tlsf/searchBlock + local.tee $1 + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 496 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + end + local.get $0 + local.get $1 + i32.load + i32.const -4 + i32.and + i32.gt_u + if + i32.const 0 + i32.const 1392 + i32.const 498 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.get $1 + call $~lib/rt/tlsf/removeBlock + local.get $1 + i32.load + local.set $3 + local.get $0 + i32.const 4 + i32.add + i32.const 15 + i32.and + if + i32.const 0 + i32.const 1392 + i32.const 357 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const -4 + i32.and + local.get $0 + i32.sub + local.tee $4 + i32.const 16 + i32.ge_u + if + local.get $1 + local.get $0 + local.get $3 + i32.const 2 + i32.and + i32.or + i32.store + local.get $0 + local.get $1 + i32.const 4 + i32.add + i32.add + local.tee $0 + local.get $4 + i32.const 4 + i32.sub + i32.const 1 + i32.or + i32.store + local.get $2 + local.get $0 + call $~lib/rt/tlsf/insertBlock + else + local.get $1 + local.get $3 + i32.const -2 + i32.and + i32.store + local.get $1 + i32.const 4 + i32.add + local.tee $0 + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.get $0 + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + i32.load + i32.const -3 + i32.and + i32.store + end + local.get $1 + ) (func $~lib/memory/memory.fill (param $0 i32) (param $1 i32) (local $2 i32) block $~lib/util/memory/memset|inlined.0 @@ -1432,9 +1632,6 @@ (func $~lib/rt/itcms/__new (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) local.get $0 i32.const 1073741804 i32.ge_u @@ -1452,12 +1649,12 @@ if block $__inlined_func$~lib/rt/itcms/interrupt i32.const 2048 - local.set $3 + local.set $2 loop $do-continue|0 - local.get $3 + local.get $2 call $~lib/rt/itcms/step i32.sub - local.set $3 + local.set $2 global.get $~lib/rt/itcms/state i32.eqz if @@ -1473,14 +1670,14 @@ global.set $~lib/rt/itcms/threshold br $__inlined_func$~lib/rt/itcms/interrupt end - local.get $3 + local.get $2 i32.const 0 i32.gt_s br_if $do-continue|0 end global.get $~lib/rt/itcms/total - local.tee $3 - local.get $3 + local.tee $2 + local.get $2 global.get $~lib/rt/itcms/threshold i32.sub i32.const 1024 @@ -1494,230 +1691,35 @@ local.get $0 i32.const 16 i32.add - local.set $6 + local.set $2 global.get $~lib/rt/tlsf/ROOT i32.eqz if call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT - local.get $6 - i32.const 1073741820 - i32.gt_u - if - i32.const 1056 - i32.const 1392 - i32.const 458 - i32.const 29 - call $~lib/builtins/abort - unreachable - end + local.get $2 + call $~lib/rt/tlsf/allocateBlock local.tee $2 - local.get $6 - i32.const 12 - i32.le_u - if (result i32) - i32.const 12 - else - local.get $6 - i32.const 19 - i32.add - i32.const -16 - i32.and - i32.const 4 - i32.sub - end - local.tee $3 - call $~lib/rt/tlsf/searchBlock - local.tee $6 - i32.eqz - if - local.get $3 - i32.const 536870910 - i32.lt_u - if (result i32) - local.get $3 - i32.const 1 - i32.const 27 - local.get $3 - i32.clz - i32.sub - i32.shl - i32.const 1 - i32.sub - i32.add - else - local.get $3 - end - i32.const 4 - memory.size - local.tee $6 - i32.const 16 - i32.shl - i32.const 4 - i32.sub - local.get $2 - i32.load offset=1568 - i32.ne - i32.shl - i32.add - i32.const 65535 - i32.add - i32.const -65536 - i32.and - i32.const 16 - i32.shr_u - local.set $5 - local.get $6 - local.get $5 - local.get $5 - local.get $6 - i32.lt_s - select - memory.grow - i32.const 0 - i32.lt_s - if - local.get $5 - memory.grow - i32.const 0 - i32.lt_s - if - unreachable - end - end - local.get $2 - local.get $6 - i32.const 16 - i32.shl - memory.size - i32.const 16 - i32.shl - call $~lib/rt/tlsf/addMemory - local.get $2 - local.get $3 - call $~lib/rt/tlsf/searchBlock - local.tee $6 - i32.eqz - if - i32.const 0 - i32.const 1392 - i32.const 496 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - end - local.get $3 - local.get $6 - i32.load - i32.const -4 - i32.and - i32.gt_u - if - i32.const 0 - i32.const 1392 - i32.const 498 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $2 - local.get $6 - call $~lib/rt/tlsf/removeBlock - local.get $6 - i32.load - local.set $5 - local.get $3 - i32.const 4 - i32.add - i32.const 15 - i32.and - if - i32.const 0 - i32.const 1392 - i32.const 357 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $5 - i32.const -4 - i32.and - local.get $3 - i32.sub - local.tee $4 - i32.const 16 - i32.ge_u - if - local.get $6 - local.get $3 - local.get $5 - i32.const 2 - i32.and - i32.or - i32.store - local.get $3 - local.get $6 - i32.const 4 - i32.add - i32.add - local.tee $3 - local.get $4 - i32.const 4 - i32.sub - i32.const 1 - i32.or - i32.store - local.get $2 - local.get $3 - call $~lib/rt/tlsf/insertBlock - else - local.get $6 - local.get $5 - i32.const -2 - i32.and - i32.store - local.get $6 - i32.const 4 - i32.add - local.tee $3 - local.get $6 - i32.load - i32.const -4 - i32.and - i32.add - local.get $3 - local.get $6 - i32.load - i32.const -4 - i32.and - i32.add - i32.load - i32.const -3 - i32.and - i32.store - end - local.get $6 local.get $1 i32.store offset=12 - local.get $6 + local.get $2 local.get $0 i32.store offset=16 global.get $~lib/rt/itcms/fromSpace local.tee $3 i32.load offset=8 local.set $1 - local.get $6 + local.get $2 local.get $3 global.get $~lib/rt/itcms/white i32.or i32.store offset=4 - local.get $6 + local.get $2 local.get $1 i32.store offset=8 local.get $1 - local.get $6 + local.get $2 local.get $1 i32.load offset=4 i32.const 3 @@ -1725,10 +1727,10 @@ i32.or i32.store offset=4 local.get $3 - local.get $6 + local.get $2 i32.store offset=8 global.get $~lib/rt/itcms/total - local.get $6 + local.get $2 i32.load i32.const -4 i32.and @@ -1736,7 +1738,7 @@ i32.add i32.add global.set $~lib/rt/itcms/total - local.get $6 + local.get $2 i32.const 20 i32.add local.tee $1 @@ -2800,296 +2802,299 @@ i32.store8 end ) - (func $~lib/array/ensureCapacity (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) + (func $~lib/memory/memory.copy (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) - local.get $1 - local.get $0 - i32.load offset=8 - local.tee $9 - local.get $2 - i32.shr_u - i32.gt_u - if - local.get $1 - i32.const 1073741820 + block $~lib/util/memory/memmove|inlined.0 local.get $2 - i32.shr_u - i32.gt_u - if - i32.const 1456 - i32.const 1728 - i32.const 17 - i32.const 48 - call $~lib/builtins/abort - unreachable - end + local.set $4 local.get $0 - i32.load - local.set $7 local.get $1 - i32.const 8 + i32.eq + br_if $~lib/util/memory/memmove|inlined.0 local.get $1 - i32.const 8 - i32.gt_u - select - local.get $2 + local.get $0 + i32.sub + local.get $4 + i32.sub + i32.const 0 + local.get $4 + i32.const 1 i32.shl - local.set $6 - block $__inlined_func$~lib/rt/itcms/__renew - local.get $3 - if - local.get $9 - i32.const 1 - i32.shl - local.tee $1 - i32.const 1073741820 - local.get $1 - i32.const 1073741820 - i32.lt_u - select - local.tee $1 - local.get $6 - local.get $1 - local.get $6 - i32.gt_u - select - local.set $6 - end - local.get $6 - local.get $7 - local.tee $1 - i32.const 20 - i32.sub - local.tee $2 - i32.load - i32.const -4 + i32.sub + i32.le_u + if + local.get $0 + local.get $1 + local.get $4 + call $~lib/util/memory/memcpy + br $~lib/util/memory/memmove|inlined.0 + end + local.get $0 + local.get $1 + i32.lt_u + if + local.get $1 + i32.const 7 i32.and - i32.const 16 - i32.sub - i32.le_u + local.get $0 + i32.const 7 + i32.and + i32.eq if - local.get $2 - local.get $6 - i32.store offset=16 - br $__inlined_func$~lib/rt/itcms/__renew - end - local.get $6 - local.get $2 - i32.load offset=12 - call $~lib/rt/itcms/__new - local.set $3 - local.get $6 - local.get $2 - i32.load offset=16 - local.tee $2 - local.get $2 - local.get $6 - i32.gt_u - select - local.set $8 - block $~lib/util/memory/memmove|inlined.0 - local.get $3 - local.tee $2 - local.get $1 - i32.eq - br_if $~lib/util/memory/memmove|inlined.0 - local.get $1 - local.get $2 - i32.sub - local.get $8 - i32.sub - i32.const 0 - local.get $8 - i32.const 1 - i32.shl - i32.sub - i32.le_u - if - local.get $2 - local.get $1 - local.get $8 - call $~lib/util/memory/memcpy - br $~lib/util/memory/memmove|inlined.0 - end - local.get $1 - local.get $2 - i32.gt_u - if - local.get $1 - i32.const 7 - i32.and - local.get $2 + loop $while-continue|0 + local.get $0 i32.const 7 i32.and - i32.eq if - loop $while-continue|0 - local.get $2 - i32.const 7 - i32.and - if - local.get $8 - i32.eqz - br_if $~lib/util/memory/memmove|inlined.0 - local.get $8 - i32.const 1 - i32.sub - local.set $8 - local.get $2 - local.tee $4 - i32.const 1 - i32.add - local.set $2 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $4 - local.get $5 - i32.load8_u - i32.store8 - br $while-continue|0 - end - end - loop $while-continue|1 - local.get $8 - i32.const 8 - i32.ge_u - if - local.get $2 - local.get $1 - i64.load - i64.store - local.get $8 - i32.const 8 - i32.sub - local.set $8 - local.get $2 - i32.const 8 - i32.add - local.set $2 - local.get $1 - i32.const 8 - i32.add - local.set $1 - br $while-continue|1 - end - end + local.get $4 + i32.eqz + br_if $~lib/util/memory/memmove|inlined.0 + local.get $4 + i32.const 1 + i32.sub + local.set $4 + local.get $0 + local.tee $2 + i32.const 1 + i32.add + local.set $0 + local.get $1 + local.tee $3 + i32.const 1 + i32.add + local.set $1 + local.get $2 + local.get $3 + i32.load8_u + i32.store8 + br $while-continue|0 end - loop $while-continue|2 - local.get $8 - if - local.get $2 - local.tee $4 - i32.const 1 - i32.add - local.set $2 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $4 - local.get $5 - i32.load8_u - i32.store8 - local.get $8 - i32.const 1 - i32.sub - local.set $8 - br $while-continue|2 - end + end + loop $while-continue|1 + local.get $4 + i32.const 8 + i32.ge_u + if + local.get $0 + local.get $1 + i64.load + i64.store + local.get $4 + i32.const 8 + i32.sub + local.set $4 + local.get $0 + i32.const 8 + i32.add + local.set $0 + local.get $1 + i32.const 8 + i32.add + local.set $1 + br $while-continue|1 end - else + end + end + loop $while-continue|2 + local.get $4 + if + local.get $0 + local.tee $2 + i32.const 1 + i32.add + local.set $0 local.get $1 - i32.const 7 - i32.and + local.tee $3 + i32.const 1 + i32.add + local.set $1 local.get $2 + local.get $3 + i32.load8_u + i32.store8 + local.get $4 + i32.const 1 + i32.sub + local.set $4 + br $while-continue|2 + end + end + else + local.get $1 + i32.const 7 + i32.and + local.get $0 + i32.const 7 + i32.and + i32.eq + if + loop $while-continue|3 + local.get $0 + local.get $4 + i32.add i32.const 7 i32.and - i32.eq if - loop $while-continue|3 - local.get $2 - local.get $8 - i32.add - i32.const 7 - i32.and - if - local.get $8 - i32.eqz - br_if $~lib/util/memory/memmove|inlined.0 - local.get $2 - local.get $8 - i32.const 1 - i32.sub - local.tee $8 - i32.add - local.get $1 - local.get $8 - i32.add - i32.load8_u - i32.store8 - br $while-continue|3 - end - end - loop $while-continue|4 - local.get $8 - i32.const 8 - i32.ge_u - if - local.get $2 - local.get $8 - i32.const 8 - i32.sub - local.tee $8 - i32.add - local.get $1 - local.get $8 - i32.add - i64.load - i64.store - br $while-continue|4 - end - end + local.get $4 + i32.eqz + br_if $~lib/util/memory/memmove|inlined.0 + local.get $4 + i32.const 1 + i32.sub + local.tee $4 + local.get $0 + i32.add + local.get $1 + local.get $4 + i32.add + i32.load8_u + i32.store8 + br $while-continue|3 end - loop $while-continue|5 - local.get $8 - if - local.get $2 - local.get $8 - i32.const 1 - i32.sub - local.tee $8 - i32.add - local.get $1 - local.get $8 - i32.add - i32.load8_u - i32.store8 - br $while-continue|5 - end + end + loop $while-continue|4 + local.get $4 + i32.const 8 + i32.ge_u + if + local.get $4 + i32.const 8 + i32.sub + local.tee $4 + local.get $0 + i32.add + local.get $1 + local.get $4 + i32.add + i64.load + i64.store + br $while-continue|4 end end end + loop $while-continue|5 + local.get $4 + if + local.get $4 + i32.const 1 + i32.sub + local.tee $4 + local.get $0 + i32.add + local.get $1 + local.get $4 + i32.add + i32.load8_u + i32.store8 + br $while-continue|5 + end + end + end + end + ) + (func $~lib/array/ensureCapacity (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + local.get $1 + local.get $0 + i32.load offset=8 + local.tee $5 + local.get $2 + i32.shr_u + i32.gt_u + if + local.get $1 + i32.const 1073741820 + local.get $2 + i32.shr_u + i32.gt_u + if + i32.const 1456 + i32.const 1728 + i32.const 17 + i32.const 48 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load + local.set $4 + local.get $1 + i32.const 8 + local.get $1 + i32.const 8 + i32.gt_u + select + local.get $2 + i32.shl + local.set $2 + block $__inlined_func$~lib/rt/itcms/__renew (result i32) + local.get $3 + if + local.get $5 + i32.const 1 + i32.shl + local.tee $1 + i32.const 1073741820 + local.get $1 + i32.const 1073741820 + i32.lt_u + select + local.tee $1 + local.get $2 + local.get $1 + local.get $2 + i32.gt_u + select + local.set $2 + end + local.get $2 + local.get $4 + local.tee $1 + i32.const 20 + i32.sub + local.tee $6 + i32.load + i32.const -4 + i32.and + i32.const 16 + i32.sub + i32.le_u + if + local.get $6 + local.get $2 + i32.store offset=16 + local.get $1 + br $__inlined_func$~lib/rt/itcms/__renew + end + local.get $2 + local.get $6 + i32.load offset=12 + call $~lib/rt/itcms/__new + local.tee $3 + local.get $1 + local.get $2 + local.get $6 + i32.load offset=16 + local.tee $1 + local.get $1 + local.get $2 + i32.gt_u + select + call $~lib/memory/memory.copy local.get $3 - local.set $1 end - local.get $1 - local.get $9 + local.tee $1 + local.get $5 i32.add - local.get $6 - local.get $9 + local.get $2 + local.get $5 i32.sub call $~lib/memory/memory.fill local.get $1 - local.get $7 + local.get $4 i32.ne if local.get $0 @@ -3103,7 +3108,7 @@ call $~lib/rt/itcms/__link end local.get $0 - local.get $6 + local.get $2 i32.store offset=8 end ) @@ -15701,26 +15706,199 @@ call $~lib/builtins/abort unreachable end - local.get $0 - local.get $1 - i32.const 1 - i32.add - local.tee $3 - i32.const 3 - i32.const 1 - call $~lib/array/ensureCapacity - local.get $0 - local.get $3 - i32.store offset=12 + local.get $0 + local.get $1 + i32.const 1 + i32.add + local.tee $3 + i32.const 3 + i32.const 1 + call $~lib/array/ensureCapacity + local.get $0 + local.get $3 + i32.store offset=12 + end + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 3 + i32.shl + i32.add + local.get $2 + i64.store + ) + (func $~lib/map/Map#rehash (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i64) + (local $7 i32) + (local $8 i32) + (local $9 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 2020 + i32.lt_s + if + i32.const 18432 + i32.const 18480 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.tee $2 + i64.const 0 + i64.store + local.get $2 + local.get $1 + i32.const 1 + i32.add + local.tee $2 + i32.const 2 + i32.shl + call $~lib/arraybuffer/ArrayBuffer#constructor + local.tee $7 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.const 3 + i32.shl + i32.const 3 + i32.div_s + local.tee $5 + i32.const 24 + i32.mul + call $~lib/arraybuffer/ArrayBuffer#constructor + local.tee $3 + i32.store offset=4 + local.get $0 + i32.load offset=8 + local.tee $8 + local.get $0 + i32.load offset=16 + i32.const 24 + i32.mul + i32.add + local.set $4 + local.get $3 + local.set $2 + loop $while-continue|0 + local.get $4 + local.get $8 + i32.ne + if + local.get $8 + i32.load offset=16 + i32.const 1 + i32.and + i32.eqz + if + local.get $2 + local.get $8 + i64.load + local.tee $6 + i64.store + local.get $2 + local.get $8 + i64.load offset=8 + i64.store offset=8 + local.get $2 + local.get $7 + local.get $1 + local.get $6 + i32.wrap_i64 + i32.const -1028477379 + i32.mul + i32.const 374761401 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.get $6 + i64.const 32 + i64.shr_u + i32.wrap_i64 + i32.const -1028477379 + i32.mul + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $9 + local.get $9 + i32.const 15 + i32.shr_u + i32.xor + i32.const -2048144777 + i32.mul + local.tee $9 + local.get $9 + i32.const 13 + i32.shr_u + i32.xor + i32.const -1028477379 + i32.mul + local.tee $9 + local.get $9 + i32.const 16 + i32.shr_u + i32.xor + i32.and + i32.const 2 + i32.shl + i32.add + local.tee $9 + i32.load + i32.store offset=16 + local.get $9 + local.get $2 + i32.store + local.get $2 + i32.const 24 + i32.add + local.set $2 + end + local.get $8 + i32.const 24 + i32.add + local.set $8 + br $while-continue|0 + end end local.get $0 - i32.load offset=4 + local.get $7 + i32.store + local.get $0 + local.get $7 + call $~lib/rt/itcms/__link + local.get $0 local.get $1 - i32.const 3 - i32.shl + i32.store offset=4 + local.get $0 + local.get $3 + i32.store offset=8 + local.get $0 + local.get $3 + call $~lib/rt/itcms/__link + local.get $0 + local.get $5 + i32.store offset=12 + local.get $0 + local.get $0 + i32.load offset=20 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + i32.const 8 i32.add - local.get $2 - i64.store + global.set $~lib/memory/__stack_pointer ) (func $~lib/map/Map#delete (param $0 i32) (param $1 i64) (local $2 i32) @@ -15890,9 +16068,9 @@ (local $0 i32) (local $1 i32) (local $2 i32) - (local $3 i32) + (local $3 i64) (local $4 i32) - (local $5 i64) + (local $5 i32) (local $6 i32) (local $7 i32) (local $8 i32) @@ -15900,11 +16078,6 @@ (local $10 i32) (local $11 i32) (local $12 i32) - (local $13 i32) - (local $14 i32) - (local $15 i64) - (local $16 i32) - (local $17 i32) global.get $~lib/memory/__stack_pointer i32.const 20 i32.sub @@ -15915,16 +16088,16 @@ i32.lt_s br_if $folding-inner1 global.get $~lib/memory/__stack_pointer - local.tee $2 + local.tee $5 i64.const 0 i64.store - local.get $2 + local.get $5 i64.const 0 i64.store offset=8 - local.get $2 + local.get $5 i32.const 0 i32.store offset=16 - local.get $2 + local.get $5 i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer @@ -15933,57 +16106,57 @@ i32.lt_s br_if $folding-inner1 global.get $~lib/memory/__stack_pointer - local.tee $3 + local.tee $1 i32.const 0 i32.store - local.get $3 + local.get $1 i32.const 24 i32.const 20 call $~lib/rt/itcms/__new - local.tee $6 + local.tee $4 i32.store - local.get $6 + local.get $4 i32.const 16 call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $3 + local.tee $1 i32.store - local.get $6 - local.get $3 + local.get $4 + local.get $1 call $~lib/rt/itcms/__link - local.get $6 + local.get $4 i32.const 3 i32.store offset=4 - local.get $6 + local.get $4 i32.const 64 call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $3 + local.tee $1 i32.store offset=8 - local.get $6 - local.get $3 + local.get $4 + local.get $1 call $~lib/rt/itcms/__link - local.get $6 + local.get $4 i32.const 4 i32.store offset=12 - local.get $6 + local.get $4 i32.const 0 i32.store offset=16 - local.get $6 + local.get $4 i32.const 0 i32.store offset=20 global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $2 - local.get $6 + local.get $5 + local.get $4 i32.store loop $for-loop|0 - local.get $5 + local.get $3 i64.const 100 i64.lt_s if - local.get $6 - local.get $5 + local.get $4 + local.get $3 call $~lib/map/Map#has if i32.const 0 @@ -15993,15 +16166,15 @@ call $~lib/builtins/abort unreachable end - local.get $6 - local.get $5 - local.get $5 + local.get $4 + local.get $3 + local.get $3 i32.wrap_i64 i32.const 10 i32.add call $~lib/map/Map#set - local.get $6 - local.get $5 + local.get $4 + local.get $3 call $~lib/map/Map#has i32.eqz if @@ -16012,10 +16185,10 @@ call $~lib/builtins/abort unreachable end - local.get $6 - local.get $5 + local.get $4 + local.get $3 call $~lib/map/Map#get - local.get $5 + local.get $3 i32.wrap_i64 i32.const 10 i32.add @@ -16028,14 +16201,14 @@ call $~lib/builtins/abort unreachable end - local.get $5 + local.get $3 i64.const 1 i64.add - local.set $5 + local.set $3 br $for-loop|0 end end - local.get $6 + local.get $4 i32.load offset=20 i32.const 100 i32.ne @@ -16048,14 +16221,14 @@ unreachable end i64.const 0 - local.set $5 + local.set $3 loop $for-loop|1 - local.get $5 + local.get $3 i64.const 100 i64.lt_s if - local.get $6 - local.get $5 + local.get $4 + local.get $3 call $~lib/map/Map#has i32.eqz if @@ -16066,10 +16239,10 @@ call $~lib/builtins/abort unreachable end - local.get $6 - local.get $5 + local.get $4 + local.get $3 call $~lib/map/Map#get - local.get $5 + local.get $3 i32.wrap_i64 i32.const 10 i32.add @@ -16082,15 +16255,15 @@ call $~lib/builtins/abort unreachable end - local.get $6 - local.get $5 - local.get $5 + local.get $4 + local.get $3 + local.get $3 i32.wrap_i64 i32.const 20 i32.add call $~lib/map/Map#set - local.get $6 - local.get $5 + local.get $4 + local.get $3 call $~lib/map/Map#has i32.eqz if @@ -16101,10 +16274,10 @@ call $~lib/builtins/abort unreachable end - local.get $6 - local.get $5 + local.get $4 + local.get $3 call $~lib/map/Map#get - local.get $5 + local.get $3 i32.wrap_i64 i32.const 20 i32.add @@ -16117,14 +16290,14 @@ call $~lib/builtins/abort unreachable end - local.get $5 + local.get $3 i64.const 1 i64.add - local.set $5 + local.set $3 br $for-loop|1 end end - local.get $6 + local.get $4 i32.load offset=20 i32.const 100 i32.ne @@ -16137,7 +16310,7 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.tee $0 + local.tee $6 i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer @@ -16146,16 +16319,16 @@ i32.lt_s br_if $folding-inner1 global.get $~lib/memory/__stack_pointer - local.tee $3 + local.tee $1 i32.const 0 i32.store - local.get $6 + local.get $4 i32.load offset=8 - local.set $9 - local.get $6 + local.set $2 + local.get $4 i32.load offset=16 - local.set $10 - local.get $3 + local.set $7 + local.get $1 i32.const 8 i32.sub global.set $~lib/memory/__stack_pointer @@ -16164,31 +16337,31 @@ i32.lt_s br_if $folding-inner1 global.get $~lib/memory/__stack_pointer - local.tee $2 + local.tee $5 i64.const 0 i64.store - local.get $2 + local.get $5 i32.const 16 i32.const 21 call $~lib/rt/itcms/__new - local.tee $7 + local.tee $5 i32.store - local.get $7 + local.get $5 i32.const 0 i32.store - local.get $7 + local.get $5 i32.const 0 call $~lib/rt/itcms/__link - local.get $7 + local.get $5 i32.const 0 i32.store offset=4 - local.get $7 + local.get $5 i32.const 0 i32.store offset=8 - local.get $7 + local.get $5 i32.const 0 i32.store offset=12 - local.get $10 + local.get $7 i32.const 134217727 i32.gt_u if @@ -16200,99 +16373,99 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $10 + local.get $7 i32.const 8 - local.get $10 + local.get $7 i32.const 8 i32.gt_u select i32.const 3 i32.shl - local.tee $2 + local.tee $11 i32.const 0 call $~lib/rt/itcms/__new local.tee $8 i32.store offset=4 local.get $8 - local.get $2 + local.get $11 call $~lib/memory/memory.fill - local.get $7 + local.get $5 local.get $8 i32.store - local.get $7 + local.get $5 local.get $8 call $~lib/rt/itcms/__link - local.get $7 + local.get $5 local.get $8 i32.store offset=4 - local.get $7 - local.get $2 + local.get $5 + local.get $11 i32.store offset=8 + local.get $5 local.get $7 - local.get $10 i32.store offset=12 global.get $~lib/memory/__stack_pointer i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - local.get $3 - local.get $7 + local.get $1 + local.get $5 i32.store loop $for-loop|01 - local.get $4 - local.get $10 - i32.lt_s + local.get $7 + local.get $9 + i32.gt_s if + local.get $2 local.get $9 - local.get $4 i32.const 4 i32.shl i32.add - local.tee $3 + local.tee $1 i32.load offset=12 i32.const 1 i32.and i32.eqz if - local.get $7 + local.get $5 + local.get $0 local.get $1 - local.get $3 i64.load call $~lib/array/Array#__set - local.get $1 + local.get $0 i32.const 1 i32.add - local.set $1 + local.set $0 end - local.get $4 + local.get $9 i32.const 1 i32.add - local.set $4 + local.set $9 br $for-loop|01 end end - local.get $7 - local.get $1 + local.get $5 + local.get $0 i32.const 3 i32.const 0 call $~lib/array/ensureCapacity - local.get $7 - local.get $1 + local.get $5 + local.get $0 i32.store offset=12 global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $0 - local.get $7 + local.get $6 + local.get $5 i32.store offset=4 global.get $~lib/memory/__stack_pointer - local.get $6 + local.get $4 call $~lib/map/Map#values - local.tee $16 + local.tee $8 i32.store offset=8 global.get $~lib/memory/__stack_pointer - local.tee $2 + local.tee $6 i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer @@ -16301,62 +16474,62 @@ i32.lt_s br_if $folding-inner1 global.get $~lib/memory/__stack_pointer - local.tee $3 + local.tee $1 i32.const 0 i32.store - local.get $3 + local.get $1 i32.const 24 i32.const 22 call $~lib/rt/itcms/__new - local.tee $4 + local.tee $2 i32.store - local.get $4 + local.get $2 i32.const 16 call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $3 + local.tee $1 i32.store - local.get $4 - local.get $3 + local.get $2 + local.get $1 call $~lib/rt/itcms/__link - local.get $4 + local.get $2 i32.const 3 i32.store offset=4 - local.get $4 + local.get $2 i32.const 96 call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $3 + local.tee $1 i32.store offset=8 - local.get $4 - local.get $3 + local.get $2 + local.get $1 call $~lib/rt/itcms/__link - local.get $4 + local.get $2 i32.const 4 i32.store offset=12 - local.get $4 + local.get $2 i32.const 0 i32.store offset=16 - local.get $4 + local.get $2 i32.const 0 i32.store offset=20 global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer + local.get $6 local.get $2 - local.get $4 i32.store offset=12 global.get $~lib/memory/__stack_pointer call $~lib/map/Map#constructor - local.tee $13 + local.tee $12 i32.store offset=16 loop $for-loop|2 - local.get $11 - local.get $7 + local.get $10 + local.get $5 i32.load offset=12 i32.lt_s if - local.get $11 - local.get $7 + local.get $10 + local.get $5 i32.load offset=12 i32.ge_u if @@ -16367,20 +16540,20 @@ call $~lib/builtins/abort unreachable end - local.get $7 + local.get $5 i32.load offset=4 - local.get $11 + local.get $10 i32.const 3 i32.shl i32.add i64.load - local.set $5 - local.get $16 - local.get $11 + local.set $3 + local.get $8 + local.get $10 call $~lib/array/Array#__get - local.set $14 - local.get $6 - local.get $5 + local.set $7 + local.get $4 + local.get $3 call $~lib/map/Map#has i32.eqz if @@ -16391,8 +16564,8 @@ call $~lib/builtins/abort unreachable end - local.get $6 - local.get $14 + local.get $4 + local.get $7 i32.const 20 i32.sub i64.extend_i32_s @@ -16417,7 +16590,7 @@ global.get $~lib/memory/__stack_pointer i32.const 0 i32.store - local.get $5 + local.get $3 i32.wrap_i64 i32.const -1028477379 i32.mul @@ -16427,7 +16600,7 @@ i32.rotl i32.const 668265263 i32.mul - local.get $5 + local.get $3 i64.const 32 i64.shr_u i32.wrap_i64 @@ -16438,81 +16611,82 @@ i32.rotl i32.const 668265263 i32.mul - local.tee $3 - local.get $3 + local.tee $1 + local.get $1 i32.const 15 i32.shr_u i32.xor i32.const -2048144777 i32.mul - local.tee $3 - local.get $3 + local.tee $1 + local.get $1 i32.const 13 i32.shr_u i32.xor i32.const -1028477379 i32.mul - local.tee $3 - local.get $3 + local.tee $1 + local.get $1 i32.const 16 i32.shr_u i32.xor - local.tee $2 - local.set $17 - local.get $4 + local.tee $6 + local.set $9 + local.get $2 i32.load + local.get $6 local.get $2 - local.get $4 i32.load offset=4 i32.and i32.const 2 i32.shl i32.add i32.load - local.set $1 + local.set $0 block $__inlined_func$~lib/map/Map#find loop $while-continue|0 - local.get $1 + local.get $0 if - local.get $1 + local.get $0 i32.load offset=16 - local.tee $2 + local.tee $6 i32.const 1 i32.and if (result i32) i32.const 0 else - local.get $5 - local.get $1 + local.get $3 + local.get $0 i64.load i64.eq end br_if $__inlined_func$~lib/map/Map#find - local.get $2 + local.get $6 i32.const -2 i32.and - local.set $1 + local.set $0 br $while-continue|0 end end i32.const 0 - local.set $1 + local.set $0 end - local.get $1 + local.get $0 if - local.get $1 - local.get $5 + local.get $0 + local.get $3 i64.store offset=8 else - local.get $4 + local.get $2 i32.load offset=16 - local.get $4 + local.get $2 i32.load offset=12 i32.eq if - local.get $4 + local.get $2 + local.get $2 i32.load offset=20 - local.get $4 + local.get $2 i32.load offset=12 i32.const 3 i32.mul @@ -16520,239 +16694,83 @@ i32.div_s i32.lt_s if (result i32) - local.get $4 + local.get $2 i32.load offset=4 else - local.get $4 + local.get $2 i32.load offset=4 i32.const 1 i32.shl i32.const 1 i32.or end - local.set $9 - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 2020 - i32.lt_s - br_if $folding-inner1 - global.get $~lib/memory/__stack_pointer - local.tee $2 - i64.const 0 - i64.store - local.get $2 - local.get $9 - i32.const 1 - i32.add - local.tee $2 - i32.const 2 - i32.shl - call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $12 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.const 3 - i32.shl - i32.const 3 - i32.div_s - local.tee $1 - i32.const 24 - i32.mul - call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $2 - i32.store offset=4 - local.get $4 - i32.load offset=8 - local.tee $3 - local.get $4 - i32.load offset=16 - i32.const 24 - i32.mul - i32.add - local.set $10 - local.get $2 - local.set $0 - loop $while-continue|02 - local.get $3 - local.get $10 - i32.ne - if - local.get $3 - i32.load offset=16 - i32.const 1 - i32.and - i32.eqz - if - local.get $0 - local.get $3 - i64.load - local.tee $15 - i64.store - local.get $0 - local.get $3 - i64.load offset=8 - i64.store offset=8 - local.get $0 - local.get $12 - local.get $9 - local.get $15 - i32.wrap_i64 - i32.const -1028477379 - i32.mul - i32.const 374761401 - i32.add - i32.const 17 - i32.rotl - i32.const 668265263 - i32.mul - local.get $15 - i64.const 32 - i64.shr_u - i32.wrap_i64 - i32.const -1028477379 - i32.mul - i32.add - i32.const 17 - i32.rotl - i32.const 668265263 - i32.mul - local.tee $8 - local.get $8 - i32.const 15 - i32.shr_u - i32.xor - i32.const -2048144777 - i32.mul - local.tee $8 - local.get $8 - i32.const 13 - i32.shr_u - i32.xor - i32.const -1028477379 - i32.mul - local.tee $8 - local.get $8 - i32.const 16 - i32.shr_u - i32.xor - i32.and - i32.const 2 - i32.shl - i32.add - local.tee $8 - i32.load - i32.store offset=16 - local.get $8 - local.get $0 - i32.store - local.get $0 - i32.const 24 - i32.add - local.set $0 - end - local.get $3 - i32.const 24 - i32.add - local.set $3 - br $while-continue|02 - end - end - local.get $4 - local.get $12 - i32.store - local.get $4 - local.get $12 - call $~lib/rt/itcms/__link - local.get $4 - local.get $9 - i32.store offset=4 - local.get $4 - local.get $2 - i32.store offset=8 - local.get $4 - local.get $2 - call $~lib/rt/itcms/__link - local.get $4 - local.get $1 - i32.store offset=12 - local.get $4 - local.get $4 - i32.load offset=20 - i32.store offset=16 - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer + call $~lib/map/Map#rehash end global.get $~lib/memory/__stack_pointer - local.get $4 + local.get $2 i32.load offset=8 - local.tee $9 + local.tee $11 i32.store - local.get $4 - local.get $4 + local.get $2 + local.get $2 i32.load offset=16 - local.tee $2 + local.tee $6 i32.const 1 i32.add i32.store offset=16 - local.get $9 - local.get $2 + local.get $11 + local.get $6 i32.const 24 i32.mul i32.add - local.tee $2 - local.get $5 + local.tee $6 + local.get $3 i64.store - local.get $2 - local.get $5 + local.get $6 + local.get $3 i64.store offset=8 - local.get $4 - local.get $4 + local.get $2 + local.get $2 i32.load offset=20 i32.const 1 i32.add i32.store offset=20 + local.get $6 local.get $2 - local.get $4 i32.load - local.get $17 - local.get $4 + local.get $9 + local.get $2 i32.load offset=4 i32.and i32.const 2 i32.shl i32.add - local.tee $3 + local.tee $1 i32.load i32.store offset=16 - local.get $3 - local.get $2 + local.get $1 + local.get $6 i32.store end global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $13 - local.get $14 + local.get $12 + local.get $7 i32.const 20 i32.sub - local.tee $3 - local.get $3 + local.tee $1 + local.get $1 call $~lib/map/Map#set - local.get $11 + local.get $10 i32.const 1 i32.add - local.set $11 + local.set $10 br $for-loop|2 end end - local.get $4 + local.get $2 i32.load offset=20 i32.const 100 i32.ne @@ -16764,7 +16782,7 @@ call $~lib/builtins/abort unreachable end - local.get $13 + local.get $12 i32.load offset=20 i32.const 100 i32.ne @@ -16777,14 +16795,14 @@ unreachable end i64.const 0 - local.set $5 + local.set $3 loop $for-loop|3 - local.get $5 + local.get $3 i64.const 50 i64.lt_s if - local.get $6 - local.get $5 + local.get $4 + local.get $3 call $~lib/map/Map#has i32.eqz if @@ -16795,10 +16813,10 @@ call $~lib/builtins/abort unreachable end - local.get $6 - local.get $5 + local.get $4 + local.get $3 call $~lib/map/Map#get - local.get $5 + local.get $3 i32.wrap_i64 i32.const 20 i32.add @@ -16811,11 +16829,11 @@ call $~lib/builtins/abort unreachable end - local.get $6 - local.get $5 + local.get $4 + local.get $3 call $~lib/map/Map#delete - local.get $6 - local.get $5 + local.get $4 + local.get $3 call $~lib/map/Map#has if i32.const 0 @@ -16825,14 +16843,14 @@ call $~lib/builtins/abort unreachable end - local.get $5 + local.get $3 i64.const 1 i64.add - local.set $5 + local.set $3 br $for-loop|3 end end - local.get $6 + local.get $4 i32.load offset=20 i32.const 50 i32.ne @@ -16845,14 +16863,14 @@ unreachable end i64.const 0 - local.set $5 + local.set $3 loop $for-loop|4 - local.get $5 + local.get $3 i64.const 50 i64.lt_s if - local.get $6 - local.get $5 + local.get $4 + local.get $3 call $~lib/map/Map#has if i32.const 0 @@ -16862,15 +16880,15 @@ call $~lib/builtins/abort unreachable end - local.get $6 - local.get $5 - local.get $5 + local.get $4 + local.get $3 + local.get $3 i32.wrap_i64 i32.const 10 i32.add call $~lib/map/Map#set - local.get $6 - local.get $5 + local.get $4 + local.get $3 call $~lib/map/Map#has i32.eqz if @@ -16881,11 +16899,11 @@ call $~lib/builtins/abort unreachable end - local.get $6 - local.get $5 + local.get $4 + local.get $3 call $~lib/map/Map#delete - local.get $6 - local.get $5 + local.get $4 + local.get $3 call $~lib/map/Map#has if i32.const 0 @@ -16895,14 +16913,14 @@ call $~lib/builtins/abort unreachable end - local.get $5 + local.get $3 i64.const 1 i64.add - local.set $5 + local.set $3 br $for-loop|4 end end - local.get $6 + local.get $4 i32.load offset=20 i32.const 50 i32.ne @@ -16914,9 +16932,9 @@ call $~lib/builtins/abort unreachable end - local.get $6 + local.get $4 call $~lib/map/Map#clear - local.get $6 + local.get $4 i32.load offset=20 if i32.const 0 @@ -17289,6 +17307,179 @@ local.get $0 i32.load offset=8 ) + (func $~lib/map/Map#rehash (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i64) + (local $7 i32) + (local $8 i32) + (local $9 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 2020 + i32.lt_s + if + i32.const 18432 + i32.const 18480 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.tee $2 + i64.const 0 + i64.store + local.get $2 + local.get $1 + i32.const 1 + i32.add + local.tee $2 + i32.const 2 + i32.shl + call $~lib/arraybuffer/ArrayBuffer#constructor + local.tee $7 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.const 3 + i32.shl + i32.const 3 + i32.div_s + local.tee $5 + i32.const 24 + i32.mul + call $~lib/arraybuffer/ArrayBuffer#constructor + local.tee $3 + i32.store offset=4 + local.get $0 + i32.load offset=8 + local.tee $8 + local.get $0 + i32.load offset=16 + i32.const 24 + i32.mul + i32.add + local.set $4 + local.get $3 + local.set $2 + loop $while-continue|0 + local.get $4 + local.get $8 + i32.ne + if + local.get $8 + i32.load offset=16 + i32.const 1 + i32.and + i32.eqz + if + local.get $2 + local.get $8 + i64.load + local.tee $6 + i64.store + local.get $2 + local.get $8 + i64.load offset=8 + i64.store offset=8 + local.get $2 + local.get $7 + local.get $1 + local.get $6 + i32.wrap_i64 + i32.const -1028477379 + i32.mul + i32.const 374761401 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.get $6 + i64.const 32 + i64.shr_u + i32.wrap_i64 + i32.const -1028477379 + i32.mul + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $9 + local.get $9 + i32.const 15 + i32.shr_u + i32.xor + i32.const -2048144777 + i32.mul + local.tee $9 + local.get $9 + i32.const 13 + i32.shr_u + i32.xor + i32.const -1028477379 + i32.mul + local.tee $9 + local.get $9 + i32.const 16 + i32.shr_u + i32.xor + i32.and + i32.const 2 + i32.shl + i32.add + local.tee $9 + i32.load + i32.store offset=16 + local.get $9 + local.get $2 + i32.store + local.get $2 + i32.const 24 + i32.add + local.set $2 + end + local.get $8 + i32.const 24 + i32.add + local.set $8 + br $while-continue|0 + end + end + local.get $0 + local.get $7 + i32.store + local.get $0 + local.get $7 + call $~lib/rt/itcms/__link + local.get $0 + local.get $1 + i32.store offset=4 + local.get $0 + local.get $3 + i32.store offset=8 + local.get $0 + local.get $3 + call $~lib/rt/itcms/__link + local.get $0 + local.get $5 + i32.store offset=12 + local.get $0 + local.get $0 + i32.load offset=20 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + ) (func $~lib/map/Map#delete (param $0 i32) (param $1 i64) (local $2 i32) (local $3 i32) @@ -17426,9 +17617,9 @@ (local $0 i32) (local $1 i32) (local $2 i32) - (local $3 i32) + (local $3 i64) (local $4 i32) - (local $5 i64) + (local $5 i32) (local $6 i32) (local $7 i32) (local $8 i32) @@ -17436,11 +17627,6 @@ (local $10 i32) (local $11 i32) (local $12 i32) - (local $13 i32) - (local $14 i32) - (local $15 i64) - (local $16 i32) - (local $17 i32) global.get $~lib/memory/__stack_pointer i32.const 20 i32.sub @@ -17451,16 +17637,16 @@ i32.lt_s br_if $folding-inner1 global.get $~lib/memory/__stack_pointer - local.tee $2 + local.tee $5 i64.const 0 i64.store - local.get $2 + local.get $5 i64.const 0 i64.store offset=8 - local.get $2 + local.get $5 i32.const 0 i32.store offset=16 - local.get $2 + local.get $5 i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer @@ -17469,57 +17655,57 @@ i32.lt_s br_if $folding-inner1 global.get $~lib/memory/__stack_pointer - local.tee $3 + local.tee $1 i32.const 0 i32.store - local.get $3 + local.get $1 i32.const 24 i32.const 23 call $~lib/rt/itcms/__new - local.tee $6 + local.tee $4 i32.store - local.get $6 + local.get $4 i32.const 16 call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $3 + local.tee $1 i32.store - local.get $6 - local.get $3 + local.get $4 + local.get $1 call $~lib/rt/itcms/__link - local.get $6 + local.get $4 i32.const 3 i32.store offset=4 - local.get $6 + local.get $4 i32.const 64 call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $3 + local.tee $1 i32.store offset=8 - local.get $6 - local.get $3 + local.get $4 + local.get $1 call $~lib/rt/itcms/__link - local.get $6 + local.get $4 i32.const 4 i32.store offset=12 - local.get $6 + local.get $4 i32.const 0 i32.store offset=16 - local.get $6 + local.get $4 i32.const 0 i32.store offset=20 global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $2 - local.get $6 + local.get $5 + local.get $4 i32.store loop $for-loop|0 - local.get $5 + local.get $3 i64.const 100 i64.lt_u if - local.get $6 - local.get $5 + local.get $4 + local.get $3 call $~lib/map/Map#has if i32.const 0 @@ -17529,15 +17715,15 @@ call $~lib/builtins/abort unreachable end - local.get $6 - local.get $5 - local.get $5 + local.get $4 + local.get $3 + local.get $3 i32.wrap_i64 i32.const 10 i32.add call $~lib/map/Map#set - local.get $6 - local.get $5 + local.get $4 + local.get $3 call $~lib/map/Map#has i32.eqz if @@ -17548,10 +17734,10 @@ call $~lib/builtins/abort unreachable end - local.get $6 - local.get $5 + local.get $4 + local.get $3 call $~lib/map/Map#get - local.get $5 + local.get $3 i32.wrap_i64 i32.const 10 i32.add @@ -17564,14 +17750,14 @@ call $~lib/builtins/abort unreachable end - local.get $5 + local.get $3 i64.const 1 i64.add - local.set $5 + local.set $3 br $for-loop|0 end end - local.get $6 + local.get $4 i32.load offset=20 i32.const 100 i32.ne @@ -17584,14 +17770,14 @@ unreachable end i64.const 0 - local.set $5 + local.set $3 loop $for-loop|1 - local.get $5 + local.get $3 i64.const 100 i64.lt_u if - local.get $6 - local.get $5 + local.get $4 + local.get $3 call $~lib/map/Map#has i32.eqz if @@ -17602,10 +17788,10 @@ call $~lib/builtins/abort unreachable end - local.get $6 - local.get $5 + local.get $4 + local.get $3 call $~lib/map/Map#get - local.get $5 + local.get $3 i32.wrap_i64 i32.const 10 i32.add @@ -17618,15 +17804,15 @@ call $~lib/builtins/abort unreachable end - local.get $6 - local.get $5 - local.get $5 + local.get $4 + local.get $3 + local.get $3 i32.wrap_i64 i32.const 20 i32.add call $~lib/map/Map#set - local.get $6 - local.get $5 + local.get $4 + local.get $3 call $~lib/map/Map#has i32.eqz if @@ -17637,10 +17823,10 @@ call $~lib/builtins/abort unreachable end - local.get $6 - local.get $5 + local.get $4 + local.get $3 call $~lib/map/Map#get - local.get $5 + local.get $3 i32.wrap_i64 i32.const 20 i32.add @@ -17653,14 +17839,14 @@ call $~lib/builtins/abort unreachable end - local.get $5 + local.get $3 i64.const 1 i64.add - local.set $5 + local.set $3 br $for-loop|1 end end - local.get $6 + local.get $4 i32.load offset=20 i32.const 100 i32.ne @@ -17673,7 +17859,7 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.tee $0 + local.tee $6 i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer @@ -17682,16 +17868,16 @@ i32.lt_s br_if $folding-inner1 global.get $~lib/memory/__stack_pointer - local.tee $3 + local.tee $1 i32.const 0 i32.store - local.get $6 + local.get $4 i32.load offset=8 - local.set $9 - local.get $6 + local.set $2 + local.get $4 i32.load offset=16 - local.set $10 - local.get $3 + local.set $7 + local.get $1 i32.const 8 i32.sub global.set $~lib/memory/__stack_pointer @@ -17700,31 +17886,31 @@ i32.lt_s br_if $folding-inner1 global.get $~lib/memory/__stack_pointer - local.tee $2 + local.tee $5 i64.const 0 i64.store - local.get $2 + local.get $5 i32.const 16 i32.const 24 call $~lib/rt/itcms/__new - local.tee $7 + local.tee $5 i32.store - local.get $7 + local.get $5 i32.const 0 i32.store - local.get $7 + local.get $5 i32.const 0 call $~lib/rt/itcms/__link - local.get $7 + local.get $5 i32.const 0 i32.store offset=4 - local.get $7 + local.get $5 i32.const 0 i32.store offset=8 - local.get $7 + local.get $5 i32.const 0 i32.store offset=12 - local.get $10 + local.get $7 i32.const 134217727 i32.gt_u if @@ -17736,99 +17922,99 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $10 + local.get $7 i32.const 8 - local.get $10 + local.get $7 i32.const 8 i32.gt_u select i32.const 3 i32.shl - local.tee $2 + local.tee $11 i32.const 0 call $~lib/rt/itcms/__new local.tee $8 i32.store offset=4 local.get $8 - local.get $2 + local.get $11 call $~lib/memory/memory.fill - local.get $7 + local.get $5 local.get $8 i32.store - local.get $7 + local.get $5 local.get $8 call $~lib/rt/itcms/__link - local.get $7 + local.get $5 local.get $8 i32.store offset=4 - local.get $7 - local.get $2 + local.get $5 + local.get $11 i32.store offset=8 + local.get $5 local.get $7 - local.get $10 i32.store offset=12 global.get $~lib/memory/__stack_pointer i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - local.get $3 - local.get $7 + local.get $1 + local.get $5 i32.store loop $for-loop|01 - local.get $4 - local.get $10 - i32.lt_s + local.get $7 + local.get $9 + i32.gt_s if + local.get $2 local.get $9 - local.get $4 i32.const 4 i32.shl i32.add - local.tee $3 + local.tee $1 i32.load offset=12 i32.const 1 i32.and i32.eqz if - local.get $7 + local.get $5 + local.get $0 local.get $1 - local.get $3 i64.load call $~lib/array/Array#__set - local.get $1 + local.get $0 i32.const 1 i32.add - local.set $1 + local.set $0 end - local.get $4 + local.get $9 i32.const 1 i32.add - local.set $4 + local.set $9 br $for-loop|01 end end - local.get $7 - local.get $1 + local.get $5 + local.get $0 i32.const 3 i32.const 0 call $~lib/array/ensureCapacity - local.get $7 - local.get $1 + local.get $5 + local.get $0 i32.store offset=12 global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $0 - local.get $7 + local.get $6 + local.get $5 i32.store offset=4 global.get $~lib/memory/__stack_pointer - local.get $6 + local.get $4 call $~lib/map/Map#values - local.tee $16 + local.tee $8 i32.store offset=8 global.get $~lib/memory/__stack_pointer - local.tee $2 + local.tee $6 i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer @@ -17837,62 +18023,62 @@ i32.lt_s br_if $folding-inner1 global.get $~lib/memory/__stack_pointer - local.tee $3 + local.tee $1 i32.const 0 i32.store - local.get $3 + local.get $1 i32.const 24 i32.const 25 call $~lib/rt/itcms/__new - local.tee $4 + local.tee $2 i32.store - local.get $4 + local.get $2 i32.const 16 call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $3 + local.tee $1 i32.store - local.get $4 - local.get $3 + local.get $2 + local.get $1 call $~lib/rt/itcms/__link - local.get $4 + local.get $2 i32.const 3 i32.store offset=4 - local.get $4 + local.get $2 i32.const 96 call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $3 + local.tee $1 i32.store offset=8 - local.get $4 - local.get $3 + local.get $2 + local.get $1 call $~lib/rt/itcms/__link - local.get $4 + local.get $2 i32.const 4 i32.store offset=12 - local.get $4 + local.get $2 i32.const 0 i32.store offset=16 - local.get $4 + local.get $2 i32.const 0 i32.store offset=20 global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer + local.get $6 local.get $2 - local.get $4 i32.store offset=12 global.get $~lib/memory/__stack_pointer call $~lib/map/Map#constructor - local.tee $13 + local.tee $12 i32.store offset=16 loop $for-loop|2 - local.get $11 - local.get $7 + local.get $10 + local.get $5 i32.load offset=12 i32.lt_s if - local.get $11 - local.get $7 + local.get $10 + local.get $5 i32.load offset=12 i32.ge_u if @@ -17903,20 +18089,20 @@ call $~lib/builtins/abort unreachable end - local.get $7 + local.get $5 i32.load offset=4 - local.get $11 + local.get $10 i32.const 3 i32.shl i32.add - i64.load - local.set $5 - local.get $16 - local.get $11 + i64.load + local.set $3 + local.get $8 + local.get $10 call $~lib/array/Array#__get - local.set $14 - local.get $6 - local.get $5 + local.set $7 + local.get $4 + local.get $3 call $~lib/map/Map#has i32.eqz if @@ -17927,8 +18113,8 @@ call $~lib/builtins/abort unreachable end - local.get $6 - local.get $14 + local.get $4 + local.get $7 i32.const 20 i32.sub i64.extend_i32_s @@ -17953,7 +18139,7 @@ global.get $~lib/memory/__stack_pointer i32.const 0 i32.store - local.get $5 + local.get $3 i32.wrap_i64 i32.const -1028477379 i32.mul @@ -17963,7 +18149,7 @@ i32.rotl i32.const 668265263 i32.mul - local.get $5 + local.get $3 i64.const 32 i64.shr_u i32.wrap_i64 @@ -17974,81 +18160,82 @@ i32.rotl i32.const 668265263 i32.mul - local.tee $3 - local.get $3 + local.tee $1 + local.get $1 i32.const 15 i32.shr_u i32.xor i32.const -2048144777 i32.mul - local.tee $3 - local.get $3 + local.tee $1 + local.get $1 i32.const 13 i32.shr_u i32.xor i32.const -1028477379 i32.mul - local.tee $3 - local.get $3 + local.tee $1 + local.get $1 i32.const 16 i32.shr_u i32.xor - local.tee $2 - local.set $17 - local.get $4 + local.tee $6 + local.set $9 + local.get $2 i32.load + local.get $6 local.get $2 - local.get $4 i32.load offset=4 i32.and i32.const 2 i32.shl i32.add i32.load - local.set $1 + local.set $0 block $__inlined_func$~lib/map/Map#find loop $while-continue|0 - local.get $1 + local.get $0 if - local.get $1 + local.get $0 i32.load offset=16 - local.tee $2 + local.tee $6 i32.const 1 i32.and if (result i32) i32.const 0 else - local.get $5 - local.get $1 + local.get $3 + local.get $0 i64.load i64.eq end br_if $__inlined_func$~lib/map/Map#find - local.get $2 + local.get $6 i32.const -2 i32.and - local.set $1 + local.set $0 br $while-continue|0 end end i32.const 0 - local.set $1 + local.set $0 end - local.get $1 + local.get $0 if - local.get $1 - local.get $5 + local.get $0 + local.get $3 i64.store offset=8 else - local.get $4 + local.get $2 i32.load offset=16 - local.get $4 + local.get $2 i32.load offset=12 i32.eq if - local.get $4 + local.get $2 + local.get $2 i32.load offset=20 - local.get $4 + local.get $2 i32.load offset=12 i32.const 3 i32.mul @@ -18056,239 +18243,83 @@ i32.div_s i32.lt_s if (result i32) - local.get $4 + local.get $2 i32.load offset=4 else - local.get $4 + local.get $2 i32.load offset=4 i32.const 1 i32.shl i32.const 1 i32.or end - local.set $9 - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 2020 - i32.lt_s - br_if $folding-inner1 - global.get $~lib/memory/__stack_pointer - local.tee $2 - i64.const 0 - i64.store - local.get $2 - local.get $9 - i32.const 1 - i32.add - local.tee $2 - i32.const 2 - i32.shl - call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $12 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.const 3 - i32.shl - i32.const 3 - i32.div_s - local.tee $1 - i32.const 24 - i32.mul - call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $2 - i32.store offset=4 - local.get $4 - i32.load offset=8 - local.tee $3 - local.get $4 - i32.load offset=16 - i32.const 24 - i32.mul - i32.add - local.set $10 - local.get $2 - local.set $0 - loop $while-continue|02 - local.get $3 - local.get $10 - i32.ne - if - local.get $3 - i32.load offset=16 - i32.const 1 - i32.and - i32.eqz - if - local.get $0 - local.get $3 - i64.load - local.tee $15 - i64.store - local.get $0 - local.get $3 - i64.load offset=8 - i64.store offset=8 - local.get $0 - local.get $12 - local.get $9 - local.get $15 - i32.wrap_i64 - i32.const -1028477379 - i32.mul - i32.const 374761401 - i32.add - i32.const 17 - i32.rotl - i32.const 668265263 - i32.mul - local.get $15 - i64.const 32 - i64.shr_u - i32.wrap_i64 - i32.const -1028477379 - i32.mul - i32.add - i32.const 17 - i32.rotl - i32.const 668265263 - i32.mul - local.tee $8 - local.get $8 - i32.const 15 - i32.shr_u - i32.xor - i32.const -2048144777 - i32.mul - local.tee $8 - local.get $8 - i32.const 13 - i32.shr_u - i32.xor - i32.const -1028477379 - i32.mul - local.tee $8 - local.get $8 - i32.const 16 - i32.shr_u - i32.xor - i32.and - i32.const 2 - i32.shl - i32.add - local.tee $8 - i32.load - i32.store offset=16 - local.get $8 - local.get $0 - i32.store - local.get $0 - i32.const 24 - i32.add - local.set $0 - end - local.get $3 - i32.const 24 - i32.add - local.set $3 - br $while-continue|02 - end - end - local.get $4 - local.get $12 - i32.store - local.get $4 - local.get $12 - call $~lib/rt/itcms/__link - local.get $4 - local.get $9 - i32.store offset=4 - local.get $4 - local.get $2 - i32.store offset=8 - local.get $4 - local.get $2 - call $~lib/rt/itcms/__link - local.get $4 - local.get $1 - i32.store offset=12 - local.get $4 - local.get $4 - i32.load offset=20 - i32.store offset=16 - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer + call $~lib/map/Map#rehash end global.get $~lib/memory/__stack_pointer - local.get $4 + local.get $2 i32.load offset=8 - local.tee $9 + local.tee $11 i32.store - local.get $4 - local.get $4 + local.get $2 + local.get $2 i32.load offset=16 - local.tee $2 + local.tee $6 i32.const 1 i32.add i32.store offset=16 - local.get $9 - local.get $2 + local.get $11 + local.get $6 i32.const 24 i32.mul i32.add - local.tee $2 - local.get $5 + local.tee $6 + local.get $3 i64.store - local.get $2 - local.get $5 + local.get $6 + local.get $3 i64.store offset=8 - local.get $4 - local.get $4 + local.get $2 + local.get $2 i32.load offset=20 i32.const 1 i32.add i32.store offset=20 + local.get $6 local.get $2 - local.get $4 i32.load - local.get $17 - local.get $4 + local.get $9 + local.get $2 i32.load offset=4 i32.and i32.const 2 i32.shl i32.add - local.tee $3 + local.tee $1 i32.load i32.store offset=16 - local.get $3 - local.get $2 + local.get $1 + local.get $6 i32.store end global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $13 - local.get $14 + local.get $12 + local.get $7 i32.const 20 i32.sub - local.tee $3 - local.get $3 + local.tee $1 + local.get $1 call $~lib/map/Map#set - local.get $11 + local.get $10 i32.const 1 i32.add - local.set $11 + local.set $10 br $for-loop|2 end end - local.get $4 + local.get $2 i32.load offset=20 i32.const 100 i32.ne @@ -18300,7 +18331,7 @@ call $~lib/builtins/abort unreachable end - local.get $13 + local.get $12 i32.load offset=20 i32.const 100 i32.ne @@ -18313,14 +18344,14 @@ unreachable end i64.const 0 - local.set $5 + local.set $3 loop $for-loop|3 - local.get $5 + local.get $3 i64.const 50 i64.lt_u if - local.get $6 - local.get $5 + local.get $4 + local.get $3 call $~lib/map/Map#has i32.eqz if @@ -18331,10 +18362,10 @@ call $~lib/builtins/abort unreachable end - local.get $6 - local.get $5 + local.get $4 + local.get $3 call $~lib/map/Map#get - local.get $5 + local.get $3 i32.wrap_i64 i32.const 20 i32.add @@ -18347,11 +18378,11 @@ call $~lib/builtins/abort unreachable end - local.get $6 - local.get $5 + local.get $4 + local.get $3 call $~lib/map/Map#delete - local.get $6 - local.get $5 + local.get $4 + local.get $3 call $~lib/map/Map#has if i32.const 0 @@ -18361,14 +18392,14 @@ call $~lib/builtins/abort unreachable end - local.get $5 + local.get $3 i64.const 1 i64.add - local.set $5 + local.set $3 br $for-loop|3 end end - local.get $6 + local.get $4 i32.load offset=20 i32.const 50 i32.ne @@ -18381,14 +18412,14 @@ unreachable end i64.const 0 - local.set $5 + local.set $3 loop $for-loop|4 - local.get $5 + local.get $3 i64.const 50 i64.lt_u if - local.get $6 - local.get $5 + local.get $4 + local.get $3 call $~lib/map/Map#has if i32.const 0 @@ -18398,15 +18429,15 @@ call $~lib/builtins/abort unreachable end - local.get $6 - local.get $5 - local.get $5 + local.get $4 + local.get $3 + local.get $3 i32.wrap_i64 i32.const 10 i32.add call $~lib/map/Map#set - local.get $6 - local.get $5 + local.get $4 + local.get $3 call $~lib/map/Map#has i32.eqz if @@ -18417,11 +18448,11 @@ call $~lib/builtins/abort unreachable end - local.get $6 - local.get $5 + local.get $4 + local.get $3 call $~lib/map/Map#delete - local.get $6 - local.get $5 + local.get $4 + local.get $3 call $~lib/map/Map#has if i32.const 0 @@ -18431,14 +18462,14 @@ call $~lib/builtins/abort unreachable end - local.get $5 + local.get $3 i64.const 1 i64.add - local.set $5 + local.set $3 br $for-loop|4 end end - local.get $6 + local.get $4 i32.load offset=20 i32.const 50 i32.ne @@ -18450,9 +18481,9 @@ call $~lib/builtins/abort unreachable end - local.get $6 + local.get $4 call $~lib/map/Map#clear - local.get $6 + local.get $4 i32.load offset=20 if i32.const 0 @@ -20984,6 +21015,182 @@ local.get $0 i32.load offset=8 ) + (func $~lib/map/Map#rehash (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i64) + (local $5 f64) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) + (local $10 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 2020 + i32.lt_s + if + i32.const 18432 + i32.const 18480 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.tee $2 + i64.const 0 + i64.store + local.get $2 + local.get $1 + i32.const 1 + i32.add + local.tee $2 + i32.const 2 + i32.shl + call $~lib/arraybuffer/ArrayBuffer#constructor + local.tee $8 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.const 3 + i32.shl + i32.const 3 + i32.div_s + local.tee $7 + i32.const 24 + i32.mul + call $~lib/arraybuffer/ArrayBuffer#constructor + local.tee $3 + i32.store offset=4 + local.get $0 + i32.load offset=8 + local.tee $9 + local.get $0 + i32.load offset=16 + i32.const 24 + i32.mul + i32.add + local.set $6 + local.get $3 + local.set $2 + loop $while-continue|0 + local.get $6 + local.get $9 + i32.ne + if + local.get $9 + i32.load offset=16 + i32.const 1 + i32.and + i32.eqz + if + local.get $2 + local.get $9 + f64.load + local.tee $5 + f64.store + local.get $2 + local.get $9 + f64.load offset=8 + f64.store offset=8 + local.get $2 + local.get $8 + local.get $1 + local.get $5 + i64.reinterpret_f64 + local.tee $4 + i32.wrap_i64 + i32.const -1028477379 + i32.mul + i32.const 374761401 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.get $4 + i64.const 32 + i64.shr_u + i32.wrap_i64 + i32.const -1028477379 + i32.mul + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $10 + local.get $10 + i32.const 15 + i32.shr_u + i32.xor + i32.const -2048144777 + i32.mul + local.tee $10 + local.get $10 + i32.const 13 + i32.shr_u + i32.xor + i32.const -1028477379 + i32.mul + local.tee $10 + local.get $10 + i32.const 16 + i32.shr_u + i32.xor + i32.and + i32.const 2 + i32.shl + i32.add + local.tee $10 + i32.load + i32.store offset=16 + local.get $10 + local.get $2 + i32.store + local.get $2 + i32.const 24 + i32.add + local.set $2 + end + local.get $9 + i32.const 24 + i32.add + local.set $9 + br $while-continue|0 + end + end + local.get $0 + local.get $8 + i32.store + local.get $0 + local.get $8 + call $~lib/rt/itcms/__link + local.get $0 + local.get $1 + i32.store offset=4 + local.get $0 + local.get $3 + i32.store offset=8 + local.get $0 + local.get $3 + call $~lib/rt/itcms/__link + local.get $0 + local.get $7 + i32.store offset=12 + local.get $0 + local.get $0 + i32.load offset=20 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + ) (func $~lib/map/Map#delete (param $0 i32) (param $1 f64) (local $2 i32) (local $3 i32) @@ -21124,22 +21331,17 @@ (local $0 i32) (local $1 i32) (local $2 i32) - (local $3 i32) - (local $4 f64) + (local $3 f64) + (local $4 i32) (local $5 i32) (local $6 i32) (local $7 i32) - (local $8 i64) + (local $8 i32) (local $9 i32) (local $10 i32) (local $11 i32) (local $12 i32) - (local $13 i32) - (local $14 i32) - (local $15 i32) - (local $16 i32) - (local $17 i32) - (local $18 f64) + (local $13 i64) global.get $~lib/memory/__stack_pointer i32.const 20 i32.sub @@ -21150,16 +21352,16 @@ i32.lt_s br_if $folding-inner1 global.get $~lib/memory/__stack_pointer - local.tee $15 + local.tee $2 i64.const 0 i64.store - local.get $15 + local.get $2 i64.const 0 i64.store offset=8 - local.get $15 + local.get $2 i32.const 0 i32.store offset=16 - local.get $15 + local.get $2 i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer @@ -21168,57 +21370,57 @@ i32.lt_s br_if $folding-inner1 global.get $~lib/memory/__stack_pointer - local.tee $2 + local.tee $1 i32.const 0 i32.store - local.get $2 + local.get $1 i32.const 24 i32.const 29 call $~lib/rt/itcms/__new - local.tee $17 + local.tee $4 i32.store - local.get $17 + local.get $4 i32.const 16 call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $2 + local.tee $1 i32.store - local.get $17 - local.get $2 + local.get $4 + local.get $1 call $~lib/rt/itcms/__link - local.get $17 + local.get $4 i32.const 3 i32.store offset=4 - local.get $17 + local.get $4 i32.const 64 call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $2 - i32.store offset=8 - local.get $17 - local.get $2 + local.tee $1 + i32.store offset=8 + local.get $4 + local.get $1 call $~lib/rt/itcms/__link - local.get $17 + local.get $4 i32.const 4 i32.store offset=12 - local.get $17 + local.get $4 i32.const 0 i32.store offset=16 - local.get $17 + local.get $4 i32.const 0 i32.store offset=20 global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $15 - local.get $17 + local.get $2 + local.get $4 i32.store loop $for-loop|0 - local.get $18 + local.get $3 f64.const 100 f64.lt if - local.get $17 - local.get $18 + local.get $4 + local.get $3 call $~lib/map/Map#has if i32.const 0 @@ -21228,15 +21430,15 @@ call $~lib/builtins/abort unreachable end - local.get $17 - local.get $18 - local.get $18 + local.get $4 + local.get $3 + local.get $3 i32.trunc_f64_s i32.const 10 i32.add call $~lib/map/Map#set - local.get $17 - local.get $18 + local.get $4 + local.get $3 call $~lib/map/Map#has i32.eqz if @@ -21247,10 +21449,10 @@ call $~lib/builtins/abort unreachable end - local.get $17 - local.get $18 + local.get $4 + local.get $3 call $~lib/map/Map#get - local.get $18 + local.get $3 i32.trunc_f64_s i32.const 10 i32.add @@ -21263,14 +21465,14 @@ call $~lib/builtins/abort unreachable end - local.get $18 + local.get $3 f64.const 1 f64.add - local.set $18 + local.set $3 br $for-loop|0 end end - local.get $17 + local.get $4 i32.load offset=20 i32.const 100 i32.ne @@ -21283,14 +21485,14 @@ unreachable end f64.const 0 - local.set $18 + local.set $3 loop $for-loop|1 - local.get $18 + local.get $3 f64.const 100 f64.lt if - local.get $17 - local.get $18 + local.get $4 + local.get $3 call $~lib/map/Map#has i32.eqz if @@ -21301,10 +21503,10 @@ call $~lib/builtins/abort unreachable end - local.get $17 - local.get $18 + local.get $4 + local.get $3 call $~lib/map/Map#get - local.get $18 + local.get $3 i32.trunc_f64_s i32.const 10 i32.add @@ -21317,15 +21519,15 @@ call $~lib/builtins/abort unreachable end - local.get $17 - local.get $18 - local.get $18 + local.get $4 + local.get $3 + local.get $3 i32.trunc_f64_s i32.const 20 i32.add call $~lib/map/Map#set - local.get $17 - local.get $18 + local.get $4 + local.get $3 call $~lib/map/Map#has i32.eqz if @@ -21336,10 +21538,10 @@ call $~lib/builtins/abort unreachable end - local.get $17 - local.get $18 + local.get $4 + local.get $3 call $~lib/map/Map#get - local.get $18 + local.get $3 i32.trunc_f64_s i32.const 20 i32.add @@ -21352,14 +21554,14 @@ call $~lib/builtins/abort unreachable end - local.get $18 + local.get $3 f64.const 1 f64.add - local.set $18 + local.set $3 br $for-loop|1 end end - local.get $17 + local.get $4 i32.load offset=20 i32.const 100 i32.ne @@ -21372,7 +21574,7 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.tee $14 + local.tee $10 i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer @@ -21381,17 +21583,17 @@ i32.lt_s br_if $folding-inner1 global.get $~lib/memory/__stack_pointer - local.tee $2 + local.tee $1 i32.const 0 i32.store - local.get $17 + local.get $4 i32.load offset=8 - local.set $3 - local.get $17 + local.set $11 + local.get $4 i32.load offset=16 - local.tee $0 - local.set $13 - local.get $2 + local.tee $12 + local.set $6 + local.get $1 i32.const 8 i32.sub global.set $~lib/memory/__stack_pointer @@ -21400,31 +21602,31 @@ i32.lt_s br_if $folding-inner1 global.get $~lib/memory/__stack_pointer - local.tee $15 + local.tee $2 i64.const 0 i64.store - local.get $15 + local.get $2 i32.const 16 i32.const 30 call $~lib/rt/itcms/__new - local.tee $16 + local.tee $2 i32.store - local.get $16 + local.get $2 i32.const 0 i32.store - local.get $16 + local.get $2 i32.const 0 call $~lib/rt/itcms/__link - local.get $16 + local.get $2 i32.const 0 i32.store offset=4 - local.get $16 + local.get $2 i32.const 0 i32.store offset=8 - local.get $16 + local.get $2 i32.const 0 i32.store offset=12 - local.get $13 + local.get $6 i32.const 134217727 i32.gt_u if @@ -21436,74 +21638,74 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $13 + local.get $6 i32.const 8 - local.get $13 + local.get $6 i32.const 8 i32.gt_u select i32.const 3 i32.shl - local.tee $15 + local.tee $5 i32.const 0 call $~lib/rt/itcms/__new - local.tee $12 + local.tee $7 i32.store offset=4 - local.get $12 - local.get $15 + local.get $7 + local.get $5 call $~lib/memory/memory.fill - local.get $16 - local.get $12 + local.get $2 + local.get $7 i32.store - local.get $16 - local.get $12 + local.get $2 + local.get $7 call $~lib/rt/itcms/__link - local.get $16 - local.get $12 + local.get $2 + local.get $7 i32.store offset=4 - local.get $16 - local.get $15 + local.get $2 + local.get $5 i32.store offset=8 - local.get $16 - local.get $13 + local.get $2 + local.get $6 i32.store offset=12 global.get $~lib/memory/__stack_pointer i32.const 8 i32.add global.set $~lib/memory/__stack_pointer + local.get $1 local.get $2 - local.get $16 i32.store loop $for-loop|01 - local.get $0 - local.get $10 - i32.gt_s + local.get $8 + local.get $12 + i32.lt_s if - local.get $3 - local.get $10 + local.get $11 + local.get $8 i32.const 4 i32.shl i32.add - local.tee $15 + local.tee $5 i32.load offset=12 i32.const 1 i32.and i32.eqz if - local.get $1 - local.tee $2 + local.get $0 + local.tee $1 i32.const 1 i32.add - local.set $1 - local.get $15 + local.set $0 + local.get $5 f64.load - local.set $18 + local.set $3 + local.get $1 local.get $2 - local.get $16 i32.load offset=12 i32.ge_u if - local.get $2 + local.get $1 i32.const 0 i32.lt_s if @@ -21514,56 +21716,57 @@ call $~lib/builtins/abort unreachable end - local.get $16 local.get $2 + local.get $1 i32.const 1 i32.add - local.tee $15 + local.tee $5 i32.const 3 i32.const 1 call $~lib/array/ensureCapacity - local.get $16 - local.get $15 + local.get $2 + local.get $5 i32.store offset=12 end - local.get $16 - i32.load offset=4 local.get $2 + i32.load offset=4 + local.get $1 i32.const 3 i32.shl i32.add - local.get $18 + local.get $3 f64.store end - local.get $10 + local.get $8 i32.const 1 i32.add - local.set $10 + local.set $8 br $for-loop|01 end end - local.get $16 - local.get $1 + local.get $2 + local.get $0 i32.const 3 i32.const 0 call $~lib/array/ensureCapacity - local.get $16 - local.get $1 + local.get $2 + local.get $0 i32.store offset=12 global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $14 - local.get $16 + local.get $10 + local.get $2 + local.tee $0 i32.store offset=4 global.get $~lib/memory/__stack_pointer - local.get $17 + local.get $4 call $~lib/map/Map#values - local.tee $5 + local.tee $10 i32.store offset=8 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $5 i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer @@ -21572,49 +21775,49 @@ i32.lt_s br_if $folding-inner1 global.get $~lib/memory/__stack_pointer - local.tee $2 + local.tee $1 i32.const 0 i32.store - local.get $2 + local.get $1 i32.const 24 i32.const 31 call $~lib/rt/itcms/__new - local.tee $3 + local.tee $2 i32.store - local.get $3 + local.get $2 i32.const 16 call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $2 + local.tee $1 i32.store - local.get $3 local.get $2 + local.get $1 call $~lib/rt/itcms/__link - local.get $3 + local.get $2 i32.const 3 i32.store offset=4 - local.get $3 + local.get $2 i32.const 96 call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $2 + local.tee $1 i32.store offset=8 - local.get $3 local.get $2 + local.get $1 call $~lib/rt/itcms/__link - local.get $3 + local.get $2 i32.const 4 i32.store offset=12 - local.get $3 + local.get $2 i32.const 0 i32.store offset=16 - local.get $3 + local.get $2 i32.const 0 i32.store offset=20 global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $1 - local.get $3 + local.get $5 + local.get $2 i32.store offset=12 global.get $~lib/memory/__stack_pointer call $~lib/map/Map#constructor @@ -21622,12 +21825,12 @@ i32.store offset=16 loop $for-loop|2 local.get $9 - local.get $16 + local.get $0 i32.load offset=12 i32.lt_s if local.get $9 - local.get $16 + local.get $0 i32.load offset=12 i32.ge_u if @@ -21638,20 +21841,20 @@ call $~lib/builtins/abort unreachable end - local.get $16 + local.get $0 i32.load offset=4 local.get $9 i32.const 3 i32.shl i32.add f64.load - local.set $18 - local.get $5 + local.set $3 + local.get $10 local.get $9 call $~lib/array/Array#__get - local.set $6 - local.get $17 - local.get $18 + local.set $8 + local.get $4 + local.get $3 call $~lib/map/Map#has i32.eqz if @@ -21662,8 +21865,8 @@ call $~lib/builtins/abort unreachable end - local.get $17 - local.get $6 + local.get $4 + local.get $8 i32.const 20 i32.sub f64.convert_i32_s @@ -21688,9 +21891,9 @@ global.get $~lib/memory/__stack_pointer i32.const 0 i32.store - local.get $18 + local.get $3 i64.reinterpret_f64 - local.tee $8 + local.tee $13 i32.wrap_i64 i32.const -1028477379 i32.mul @@ -21700,7 +21903,7 @@ i32.rotl i32.const 668265263 i32.mul - local.get $8 + local.get $13 i64.const 32 i64.shr_u i32.wrap_i64 @@ -21711,81 +21914,82 @@ i32.rotl i32.const 668265263 i32.mul - local.tee $2 - local.get $2 + local.tee $1 + local.get $1 i32.const 15 i32.shr_u i32.xor i32.const -2048144777 i32.mul - local.tee $2 - local.get $2 + local.tee $1 + local.get $1 i32.const 13 i32.shr_u i32.xor i32.const -1028477379 i32.mul - local.tee $2 - local.get $2 + local.tee $1 + local.get $1 i32.const 16 i32.shr_u i32.xor - local.tee $1 - local.set $13 - local.get $3 - i32.load - local.get $1 - local.get $3 + local.tee $5 + local.set $11 + local.get $2 + i32.load + local.get $5 + local.get $2 i32.load offset=4 i32.and i32.const 2 i32.shl i32.add i32.load - local.set $0 + local.set $6 block $__inlined_func$~lib/map/Map#find loop $while-continue|0 - local.get $0 + local.get $6 if - local.get $0 + local.get $6 i32.load offset=16 - local.tee $1 + local.tee $5 i32.const 1 i32.and if (result i32) i32.const 0 else - local.get $18 - local.get $0 + local.get $3 + local.get $6 f64.load f64.eq end br_if $__inlined_func$~lib/map/Map#find - local.get $1 + local.get $5 i32.const -2 i32.and - local.set $0 + local.set $6 br $while-continue|0 end end i32.const 0 - local.set $0 + local.set $6 end - local.get $0 + local.get $6 if - local.get $0 - local.get $18 + local.get $6 + local.get $3 f64.store offset=8 else - local.get $3 + local.get $2 i32.load offset=16 - local.get $3 + local.get $2 i32.load offset=12 i32.eq if - local.get $3 + local.get $2 + local.get $2 i32.load offset=20 - local.get $3 + local.get $2 i32.load offset=12 i32.const 3 i32.mul @@ -21793,220 +21997,62 @@ i32.div_s i32.lt_s if (result i32) - local.get $3 + local.get $2 i32.load offset=4 else - local.get $3 + local.get $2 i32.load offset=4 i32.const 1 i32.shl i32.const 1 i32.or end - local.set $15 - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 2020 - i32.lt_s - br_if $folding-inner1 - global.get $~lib/memory/__stack_pointer - local.tee $1 - i64.const 0 - i64.store - local.get $1 - local.get $15 - i32.const 1 - i32.add - local.tee $1 - i32.const 2 - i32.shl - call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $2 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.const 3 - i32.shl - i32.const 3 - i32.div_s - local.tee $12 - i32.const 24 - i32.mul - call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $1 - i32.store offset=4 - local.get $3 - i32.load offset=8 - local.tee $11 - local.get $3 - i32.load offset=16 - i32.const 24 - i32.mul - i32.add - local.set $10 - local.get $1 - local.set $0 - loop $while-continue|02 - local.get $10 - local.get $11 - i32.ne - if - local.get $11 - i32.load offset=16 - i32.const 1 - i32.and - i32.eqz - if - local.get $0 - local.get $11 - f64.load - local.tee $4 - f64.store - local.get $0 - local.get $11 - f64.load offset=8 - f64.store offset=8 - local.get $0 - local.get $2 - local.get $15 - local.get $4 - i64.reinterpret_f64 - local.tee $8 - i32.wrap_i64 - i32.const -1028477379 - i32.mul - i32.const 374761401 - i32.add - i32.const 17 - i32.rotl - i32.const 668265263 - i32.mul - local.get $8 - i64.const 32 - i64.shr_u - i32.wrap_i64 - i32.const -1028477379 - i32.mul - i32.add - i32.const 17 - i32.rotl - i32.const 668265263 - i32.mul - local.tee $14 - local.get $14 - i32.const 15 - i32.shr_u - i32.xor - i32.const -2048144777 - i32.mul - local.tee $14 - local.get $14 - i32.const 13 - i32.shr_u - i32.xor - i32.const -1028477379 - i32.mul - local.tee $14 - local.get $14 - i32.const 16 - i32.shr_u - i32.xor - i32.and - i32.const 2 - i32.shl - i32.add - local.tee $14 - i32.load - i32.store offset=16 - local.get $14 - local.get $0 - i32.store - local.get $0 - i32.const 24 - i32.add - local.set $0 - end - local.get $11 - i32.const 24 - i32.add - local.set $11 - br $while-continue|02 - end - end - local.get $3 - local.get $2 - i32.store - local.get $3 - local.get $2 - call $~lib/rt/itcms/__link - local.get $3 - local.get $15 - i32.store offset=4 - local.get $3 - local.get $1 - i32.store offset=8 - local.get $3 - local.get $1 - call $~lib/rt/itcms/__link - local.get $3 - local.get $12 - i32.store offset=12 - local.get $3 - local.get $3 - i32.load offset=20 - i32.store offset=16 - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer + call $~lib/map/Map#rehash end global.get $~lib/memory/__stack_pointer - local.get $3 + local.get $2 i32.load offset=8 - local.tee $15 + local.tee $12 i32.store - local.get $3 - local.get $3 + local.get $2 + local.get $2 i32.load offset=16 - local.tee $1 + local.tee $5 i32.const 1 i32.add i32.store offset=16 - local.get $15 - local.get $1 + local.get $12 + local.get $5 i32.const 24 i32.mul i32.add - local.tee $1 - local.get $18 - f64.store - local.get $1 - local.get $18 - f64.store offset=8 + local.tee $5 local.get $3 + f64.store + local.get $5 local.get $3 + f64.store offset=8 + local.get $2 + local.get $2 i32.load offset=20 i32.const 1 i32.add i32.store offset=20 - local.get $1 - local.get $3 + local.get $5 + local.get $2 i32.load - local.get $13 - local.get $3 + local.get $11 + local.get $2 i32.load offset=4 i32.and i32.const 2 i32.shl i32.add - local.tee $2 + local.tee $1 i32.load i32.store offset=16 - local.get $2 local.get $1 + local.get $5 i32.store end global.get $~lib/memory/__stack_pointer @@ -22014,11 +22060,11 @@ i32.add global.set $~lib/memory/__stack_pointer local.get $7 - local.get $6 + local.get $8 i32.const 20 i32.sub - local.tee $2 - local.get $2 + local.tee $1 + local.get $1 call $~lib/map/Map#set local.get $9 i32.const 1 @@ -22027,7 +22073,7 @@ br $for-loop|2 end end - local.get $3 + local.get $2 i32.load offset=20 i32.const 100 i32.ne @@ -22052,14 +22098,14 @@ unreachable end f64.const 0 - local.set $18 + local.set $3 loop $for-loop|3 - local.get $18 + local.get $3 f64.const 50 f64.lt if - local.get $17 - local.get $18 + local.get $4 + local.get $3 call $~lib/map/Map#has i32.eqz if @@ -22070,10 +22116,10 @@ call $~lib/builtins/abort unreachable end - local.get $17 - local.get $18 + local.get $4 + local.get $3 call $~lib/map/Map#get - local.get $18 + local.get $3 i32.trunc_f64_s i32.const 20 i32.add @@ -22086,11 +22132,11 @@ call $~lib/builtins/abort unreachable end - local.get $17 - local.get $18 + local.get $4 + local.get $3 call $~lib/map/Map#delete - local.get $17 - local.get $18 + local.get $4 + local.get $3 call $~lib/map/Map#has if i32.const 0 @@ -22100,14 +22146,14 @@ call $~lib/builtins/abort unreachable end - local.get $18 + local.get $3 f64.const 1 f64.add - local.set $18 + local.set $3 br $for-loop|3 end end - local.get $17 + local.get $4 i32.load offset=20 i32.const 50 i32.ne @@ -22120,14 +22166,14 @@ unreachable end f64.const 0 - local.set $18 + local.set $3 loop $for-loop|4 - local.get $18 + local.get $3 f64.const 50 f64.lt if - local.get $17 - local.get $18 + local.get $4 + local.get $3 call $~lib/map/Map#has if i32.const 0 @@ -22137,15 +22183,15 @@ call $~lib/builtins/abort unreachable end - local.get $17 - local.get $18 - local.get $18 + local.get $4 + local.get $3 + local.get $3 i32.trunc_f64_s i32.const 10 i32.add call $~lib/map/Map#set - local.get $17 - local.get $18 + local.get $4 + local.get $3 call $~lib/map/Map#has i32.eqz if @@ -22156,11 +22202,11 @@ call $~lib/builtins/abort unreachable end - local.get $17 - local.get $18 + local.get $4 + local.get $3 call $~lib/map/Map#delete - local.get $17 - local.get $18 + local.get $4 + local.get $3 call $~lib/map/Map#has if i32.const 0 @@ -22170,14 +22216,14 @@ call $~lib/builtins/abort unreachable end - local.get $18 + local.get $3 f64.const 1 f64.add - local.set $18 + local.set $3 br $for-loop|4 end end - local.get $17 + local.get $4 i32.load offset=20 i32.const 50 i32.ne @@ -22189,9 +22235,9 @@ call $~lib/builtins/abort unreachable end - local.get $17 + local.get $4 call $~lib/map/Map#clear - local.get $17 + local.get $4 i32.load offset=20 if i32.const 0 diff --git a/tests/compiler/std/math.optimized.wat b/tests/compiler/std/math.optimized.wat index 2e5c82ed14..5dadb386c6 100644 --- a/tests/compiler/std/math.optimized.wat +++ b/tests/compiler/std/math.optimized.wat @@ -2,11 +2,10 @@ (type $f64_=>_f64 (func (param f64) (result f64))) (type $f32_f32_f32_=>_i32 (func (param f32 f32 f32) (result i32))) (type $f64_f64_f64_=>_i32 (func (param f64 f64 f64) (result i32))) - (type $f32_=>_f32 (func (param f32) (result f32))) (type $f64_f64_=>_f64 (func (param f64 f64) (result f64))) - (type $f64_f64_f64_f64_=>_i32 (func (param f64 f64 f64 f64) (result i32))) - (type $f32_f32_f32_f32_=>_i32 (func (param f32 f32 f32 f32) (result i32))) + (type $f32_=>_f32 (func (param f32) (result f32))) (type $f32_f32_=>_f32 (func (param f32 f32) (result f32))) + (type $f64_f64_f64_f64_=>_i32 (func (param f64 f64 f64 f64) (result i32))) (type $none_=>_f64 (func (result f64))) (type $f64_f64_=>_i32 (func (param f64 f64) (result i32))) (type $f32_f32_=>_i32 (func (param f32 f32) (result i32))) @@ -15,6 +14,7 @@ (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) (type $f32_i32_f32_=>_i32 (func (param f32 i32 f32) (result i32))) (type $i64_=>_i32 (func (param i64) (result i32))) + (type $f32_f32_f32_f32_=>_i32 (func (param f32 f32 f32 f32) (result i32))) (type $i64_=>_none (func (param i64))) (type $f64_f64_i32_=>_f64 (func (param f64 f64 i32) (result f64))) (type $f64_=>_none (func (param f64))) @@ -2937,226 +2937,223 @@ local.get $2 call $std/math/check ) - (func $std/math/test_atan2 (param $0 f64) (param $1 f64) (param $2 f64) (param $3 f64) (result i32) - (local $4 f64) + (func $~lib/math/NativeMath.atan2 (param $0 f64) (param $1 f64) (result f64) + (local $2 i32) + (local $3 i32) + (local $4 i32) (local $5 i32) - (local $6 i32) + (local $6 i64) (local $7 i32) - (local $8 i64) - (local $9 i32) - (local $10 i32) + i32.const 1 + local.get $0 + local.get $0 + f64.ne + local.get $1 local.get $1 + f64.ne + select + if + local.get $1 + local.get $0 + f64.add + return + end + local.get $0 + i64.reinterpret_f64 + local.tee $6 + i64.const 32 + i64.shr_u + i32.wrap_i64 local.set $4 - block $__inlined_func$~lib/math/NativeMath.atan2 - i32.const 1 + local.get $6 + i32.wrap_i64 + local.set $3 + local.get $1 + i64.reinterpret_f64 + local.tee $6 + i32.wrap_i64 + local.tee $7 + local.get $6 + i64.const 32 + i64.shr_u + i32.wrap_i64 + local.tee $5 + i32.const 1072693248 + i32.sub + i32.or + i32.eqz + if local.get $0 - local.tee $1 - local.get $1 - f64.ne - local.get $4 - local.get $4 - f64.ne - select - if - local.get $4 - local.get $1 - f64.add - local.set $1 - br $__inlined_func$~lib/math/NativeMath.atan2 - end - local.get $1 - i64.reinterpret_f64 - local.tee $8 - i64.const 32 - i64.shr_u - i32.wrap_i64 - local.set $6 - local.get $8 - i32.wrap_i64 - local.get $4 - i64.reinterpret_f64 - local.tee $8 - i32.wrap_i64 - local.tee $10 - local.get $8 - i64.const 32 - i64.shr_u - i32.wrap_i64 - local.tee $7 - i32.const 1072693248 - i32.sub - i32.or - i32.eqz - if - local.get $1 - call $~lib/math/NativeMath.atan - local.set $1 - br $__inlined_func$~lib/math/NativeMath.atan2 - end - local.get $7 - i32.const 30 - i32.shr_u - i32.const 2 - i32.and - local.get $6 - i32.const 31 - i32.shr_u - i32.or - local.set $5 - local.get $7 - i32.const 2147483647 - i32.and - local.set $7 - local.get $6 - i32.const 2147483647 - i32.and - local.tee $6 - i32.or - i32.eqz - if - block $break|0 - block $case3|0 - block $case2|0 - local.get $5 + call $~lib/math/NativeMath.atan + return + end + local.get $5 + i32.const 30 + i32.shr_u + i32.const 2 + i32.and + local.get $4 + i32.const 31 + i32.shr_u + i32.or + local.set $2 + local.get $5 + i32.const 2147483647 + i32.and + local.set $5 + local.get $4 + i32.const 2147483647 + i32.and + local.tee $4 + local.get $3 + i32.or + i32.eqz + if + block $break|0 + block $case3|0 + block $case2|0 + block $case0|0 + local.get $2 i32.eqz - br_if $__inlined_func$~lib/math/NativeMath.atan2 + br_if $case0|0 block $tablify|0 - local.get $5 + local.get $2 i32.const 1 i32.sub - br_table $__inlined_func$~lib/math/NativeMath.atan2 $case2|0 $case3|0 $tablify|0 + br_table $case0|0 $case2|0 $case3|0 $tablify|0 end br $break|0 end - f64.const 3.141592653589793 - local.set $1 - br $__inlined_func$~lib/math/NativeMath.atan2 + local.get $0 + return end - f64.const -3.141592653589793 - local.set $1 - br $__inlined_func$~lib/math/NativeMath.atan2 + f64.const 3.141592653589793 + return end + f64.const -3.141592653589793 + return end - block $folding-inner0 - local.get $7 - local.get $10 - i32.or - i32.eqz - br_if $folding-inner0 - local.get $7 + end + block $folding-inner0 + local.get $5 + local.get $7 + i32.or + i32.eqz + br_if $folding-inner0 + local.get $5 + i32.const 2146435072 + i32.eq + if + local.get $4 i32.const 2146435072 i32.eq - if - local.get $6 - i32.const 2146435072 - i32.eq - if (result f64) - f64.const 2.356194490192345 - f64.const 0.7853981633974483 - local.get $5 - i32.const 2 - i32.and - select - else - f64.const 3.141592653589793 - f64.const 0 - local.get $5 - i32.const 2 - i32.and - select - end - local.tee $1 - f64.neg - local.get $1 - local.get $5 - i32.const 1 + if (result f64) + f64.const 2.356194490192345 + f64.const 0.7853981633974483 + local.get $2 + i32.const 2 + i32.and + select + else + f64.const 3.141592653589793 + f64.const 0 + local.get $2 + i32.const 2 i32.and select - local.set $1 - br $__inlined_func$~lib/math/NativeMath.atan2 end + local.tee $0 + f64.neg + local.get $0 + local.get $2 i32.const 1 - local.get $6 - i32.const 2146435072 - i32.eq - local.get $6 - local.get $7 - i32.const 67108864 - i32.add - i32.gt_u - select - br_if $folding-inner0 - local.get $7 - local.get $6 - i32.const 67108864 - i32.add - i32.gt_u - i32.const 0 - local.get $5 - i32.const 2 i32.and select - if (result f64) - f64.const 0 - else - local.get $1 - local.get $4 - f64.div - f64.abs - call $~lib/math/NativeMath.atan - end - local.set $1 - block $break|1 - block $case3|1 - block $case2|1 - block $case1|1 - local.get $5 - if - local.get $5 - i32.const 1 - i32.sub - br_table $case1|1 $case2|1 $case3|1 $break|1 - end - br $__inlined_func$~lib/math/NativeMath.atan2 + return + end + i32.const 1 + local.get $4 + i32.const 2146435072 + i32.eq + local.get $4 + local.get $5 + i32.const 67108864 + i32.add + i32.gt_u + select + br_if $folding-inner0 + local.get $5 + local.get $4 + i32.const 67108864 + i32.add + i32.gt_u + i32.const 0 + local.get $2 + i32.const 2 + i32.and + select + if (result f64) + f64.const 0 + else + local.get $0 + local.get $1 + f64.div + f64.abs + call $~lib/math/NativeMath.atan + end + local.set $0 + block $break|1 + block $case3|1 + block $case2|1 + block $case1|1 + local.get $2 + local.tee $3 + if + local.get $3 + i32.const 1 + i32.sub + br_table $case1|1 $case2|1 $case3|1 $break|1 end - local.get $1 - f64.neg - local.set $1 - br $__inlined_func$~lib/math/NativeMath.atan2 + local.get $0 + return end - f64.const 3.141592653589793 - local.get $1 - f64.const 1.2246467991473532e-16 - f64.sub - f64.sub - local.set $1 - br $__inlined_func$~lib/math/NativeMath.atan2 + local.get $0 + f64.neg + return end - local.get $1 + f64.const 3.141592653589793 + local.get $0 f64.const 1.2246467991473532e-16 f64.sub - f64.const 3.141592653589793 f64.sub - local.set $1 - br $__inlined_func$~lib/math/NativeMath.atan2 + return end - unreachable + local.get $0 + f64.const 1.2246467991473532e-16 + f64.sub + f64.const 3.141592653589793 + f64.sub + return end - f64.const -1.5707963267948966 - f64.const 1.5707963267948966 - local.get $5 - i32.const 1 - i32.and - select - local.set $1 + unreachable end + f64.const -1.5707963267948966 + f64.const 1.5707963267948966 + local.get $2 + i32.const 1 + i32.and + select + ) + (func $std/math/test_atan2 (param $0 f64) (param $1 f64) (param $2 f64) (param $3 f64) (result i32) + local.get $0 local.get $1 + call $~lib/math/NativeMath.atan2 local.get $2 local.get $3 call $std/math/check if (result i32) local.get $0 - local.get $4 + local.get $1 call $~lib/bindings/Math/atan2 local.get $2 local.get $3 @@ -3165,11 +3162,12 @@ i32.const 0 end ) - (func $std/math/test_atan2f (param $0 f32) (param $1 f32) (param $2 f32) (param $3 f32) (result i32) + (func $~lib/math/NativeMathf.atan2 (param $0 f32) (param $1 f32) (result f32) + (local $2 i32) + (local $3 i32) (local $4 i32) (local $5 i32) - (local $6 i32) - block $__inlined_func$~lib/math/NativeMathf.atan2 + block $folding-inner0 i32.const 1 local.get $0 local.get $0 @@ -3182,144 +3180,124 @@ local.get $1 local.get $0 f32.add - local.set $0 - br $__inlined_func$~lib/math/NativeMathf.atan2 + return end - local.get $0 - i32.reinterpret_f32 - local.set $5 local.get $1 i32.reinterpret_f32 - local.tee $6 + local.tee $3 i32.const 1065353216 i32.eq if local.get $0 call $~lib/math/NativeMathf.atan - local.set $0 - br $__inlined_func$~lib/math/NativeMathf.atan2 + return end - local.get $6 + local.get $3 i32.const 30 i32.shr_u i32.const 2 i32.and - local.get $5 + local.get $0 + i32.reinterpret_f32 + local.tee $5 i32.const 31 i32.shr_u i32.or - local.set $4 - local.get $6 + local.set $2 + local.get $3 i32.const 2147483647 i32.and - local.set $6 + local.set $4 local.get $5 i32.const 2147483647 i32.and - local.tee $5 + local.tee $3 i32.eqz if block $break|0 block $case3|0 block $case2|0 - local.get $4 - i32.eqz - br_if $__inlined_func$~lib/math/NativeMathf.atan2 - block $tablify|0 - local.get $4 - i32.const 1 - i32.sub - br_table $__inlined_func$~lib/math/NativeMathf.atan2 $case2|0 $case3|0 $tablify|0 + block $case1|0 + local.get $2 + i32.eqz + br_if $case1|0 + block $tablify|0 + local.get $2 + i32.const 1 + i32.sub + br_table $case1|0 $case2|0 $case3|0 $tablify|0 + end + br $break|0 end - br $break|0 + local.get $0 + return end f32.const 3.1415927410125732 - local.set $0 - br $__inlined_func$~lib/math/NativeMathf.atan2 + return end f32.const -3.1415927410125732 - local.set $0 - br $__inlined_func$~lib/math/NativeMathf.atan2 + return end end - local.get $6 + local.get $4 i32.eqz - if - f32.const -1.5707963705062866 - f32.const 1.5707963705062866 - local.get $4 - i32.const 1 - i32.and - select - local.set $0 - br $__inlined_func$~lib/math/NativeMathf.atan2 - end - local.get $6 + br_if $folding-inner0 + local.get $4 i32.const 2139095040 i32.eq if - local.get $5 + local.get $3 i32.const 2139095040 i32.eq if (result f32) f32.const 2.356194496154785 f32.const 0.7853981852531433 - local.get $4 + local.get $2 i32.const 2 i32.and select local.tee $0 f32.neg local.get $0 - local.get $4 + local.get $2 i32.const 1 i32.and select else f32.const 3.1415927410125732 f32.const 0 - local.get $4 + local.get $2 i32.const 2 i32.and select local.tee $0 f32.neg local.get $0 - local.get $4 + local.get $2 i32.const 1 i32.and select end - local.set $0 - br $__inlined_func$~lib/math/NativeMathf.atan2 + return end i32.const 1 - local.get $5 + local.get $3 i32.const 2139095040 i32.eq - local.get $5 - local.get $6 + local.get $3 + local.get $4 i32.const 218103808 i32.add i32.gt_u select - if - f32.const -1.5707963705062866 - f32.const 1.5707963705062866 - local.get $4 - i32.const 1 - i32.and - select - local.set $0 - br $__inlined_func$~lib/math/NativeMathf.atan2 - end - local.get $6 - local.get $5 + br_if $folding-inner0 + local.get $4 + local.get $3 i32.const 218103808 i32.add i32.gt_u i32.const 0 - local.get $4 + local.get $2 i32.const 2 i32.and select @@ -3337,42 +3315,43 @@ block $case3|1 block $case2|1 block $case1|1 - local.get $4 + local.get $2 + local.tee $3 if - local.get $4 + local.get $3 i32.const 1 i32.sub br_table $case1|1 $case2|1 $case3|1 $break|1 end - br $__inlined_func$~lib/math/NativeMathf.atan2 + local.get $0 + return end local.get $0 f32.neg - local.set $0 - br $__inlined_func$~lib/math/NativeMathf.atan2 + return end f32.const 3.1415927410125732 local.get $0 f32.const -8.742277657347586e-08 f32.sub f32.sub - local.set $0 - br $__inlined_func$~lib/math/NativeMathf.atan2 + return end local.get $0 f32.const -8.742277657347586e-08 f32.sub f32.const 3.1415927410125732 f32.sub - local.set $0 - br $__inlined_func$~lib/math/NativeMathf.atan2 + return end unreachable end - local.get $0 + f32.const -1.5707963705062866 + f32.const 1.5707963705062866 local.get $2 - local.get $3 - call $std/math/check + i32.const 1 + i32.and + select ) (func $std/math/test_cbrt (param $0 f64) (param $1 f64) (param $2 f64) (result i32) (local $3 f64) @@ -5732,87 +5711,86 @@ local.get $2 call $std/math/check ) - (func $std/math/test_exp2 (param $0 f64) (param $1 f64) (param $2 f64) (result i32) - (local $3 i32) + (func $~lib/math/NativeMath.exp2 (param $0 f64) (result f64) + (local $1 i32) + (local $2 f64) + (local $3 i64) (local $4 f64) (local $5 i64) - (local $6 f64) + (local $6 i32) (local $7 f64) - (local $8 i64) - (local $9 i32) - (local $10 f64) block $~lib/util/math/exp2_lut|inlined.0 (result f64) local.get $0 - local.tee $4 + local.tee $2 i64.reinterpret_f64 - local.tee $5 + local.tee $3 i64.const 52 i64.shr_u i64.const 2047 i64.and i32.wrap_i64 - local.tee $3 + local.tee $1 i32.const 969 i32.sub i32.const 63 i32.ge_u if f64.const 1 - local.get $3 + local.get $1 i32.const 969 i32.sub i32.const -2147483648 i32.ge_u br_if $~lib/util/math/exp2_lut|inlined.0 drop - local.get $3 + local.get $1 i32.const 1033 i32.ge_u if f64.const 0 - local.get $5 + local.get $3 i64.const -4503599627370496 i64.eq br_if $~lib/util/math/exp2_lut|inlined.0 drop - local.get $4 + local.get $2 f64.const 1 f64.add - local.get $3 + local.get $1 i32.const 2047 i32.ge_u br_if $~lib/util/math/exp2_lut|inlined.0 drop f64.const inf - local.get $5 + local.get $3 i64.const 63 i64.shr_u i64.eqz br_if $~lib/util/math/exp2_lut|inlined.0 drop f64.const 0 - local.get $5 + local.get $3 i64.const -4570929321408987136 i64.ge_u br_if $~lib/util/math/exp2_lut|inlined.0 drop end i32.const 0 + local.get $1 local.get $3 - local.get $5 i64.const 1 i64.shl i64.const -9143996093422370816 i64.gt_u select - local.set $3 + local.set $1 end - local.get $4 + local.get $2 f64.const 52776558133248 f64.add local.tee $0 i64.reinterpret_f64 - local.tee $8 + local.tee $5 i64.const 127 i64.and i64.const 1 @@ -5822,14 +5800,14 @@ i32.shl i32.const 5664 i32.add - local.tee $9 + local.tee $6 i64.load offset=8 - local.get $8 + local.get $5 i64.const 45 i64.shl i64.add - local.set $5 - local.get $4 + local.set $3 + local.get $2 local.get $0 f64.const 52776558133248 f64.sub @@ -5837,15 +5815,15 @@ local.tee $0 local.get $0 f64.mul - local.set $6 - local.get $9 + local.set $2 + local.get $6 i64.load f64.reinterpret_i64 local.get $0 f64.const 0.6931471805599453 f64.mul f64.add - local.get $6 + local.get $2 local.get $0 f64.const 0.0555041086686087 f64.mul @@ -5853,8 +5831,8 @@ f64.add f64.mul f64.add - local.get $6 - local.get $6 + local.get $2 + local.get $2 f64.mul local.get $0 f64.const 1.3332074570119598e-03 @@ -5863,57 +5841,57 @@ f64.add f64.mul f64.add - local.set $6 - local.get $3 + local.set $0 + local.get $1 i32.eqz if block $~lib/util/math/specialcase2|inlined.0 (result f64) - local.get $8 + local.get $5 i64.const 2147483648 i64.and i64.eqz if - local.get $5 + local.get $3 i64.const 4503599627370496 i64.sub f64.reinterpret_i64 - local.tee $0 - local.get $6 - f64.mul + local.tee $2 local.get $0 + f64.mul + local.get $2 f64.add local.tee $0 local.get $0 f64.add br $~lib/util/math/specialcase2|inlined.0 end - local.get $5 + local.get $3 i64.const 4602678819172646912 i64.add f64.reinterpret_i64 - local.tee $7 - local.get $6 + local.tee $4 + local.get $0 f64.mul - local.get $7 + local.get $4 f64.add - local.tee $0 + local.tee $2 f64.const 1 f64.lt if (result f64) - local.get $0 + local.get $2 f64.const 1 f64.add - local.tee $10 + local.tee $7 f64.const 1 - local.get $10 + local.get $7 f64.sub - local.get $0 + local.get $2 f64.add - local.get $7 - local.get $0 + local.get $4 + local.get $2 f64.sub - local.get $7 - local.get $6 + local.get $4 + local.get $0 f64.mul f64.add f64.add @@ -5921,27 +5899,31 @@ f64.const 1 f64.sub else - local.get $0 + local.get $2 end f64.const 2.2250738585072014e-308 f64.mul end br $~lib/util/math/exp2_lut|inlined.0 end - local.get $5 + local.get $3 f64.reinterpret_i64 - local.tee $0 - local.get $6 - f64.mul + local.tee $2 local.get $0 + f64.mul + local.get $2 f64.add end + ) + (func $std/math/test_exp2 (param $0 f64) (param $1 f64) (param $2 f64) (result i32) + local.get $0 + call $~lib/math/NativeMath.exp2 local.get $1 local.get $2 call $std/math/check if (result i32) f64.const 2 - local.get $4 + local.get $0 call $~lib/bindings/Math/pow local.get $1 local.get $2 @@ -6325,229 +6307,208 @@ local.get $3 call $std/math/check ) - (func $std/math/test_log10 (param $0 f64) (param $1 f64) (param $2 f64) (result i32) + (func $~lib/math/NativeMath.log10 (param $0 f64) (result f64) + (local $1 i32) + (local $2 i64) (local $3 f64) - (local $4 i32) + (local $4 f64) (local $5 f64) - (local $6 i64) - (local $7 i32) - (local $8 f64) + (local $6 f64) + (local $7 f64) + (local $8 i32) (local $9 f64) (local $10 f64) (local $11 f64) - (local $12 f64) - (local $13 f64) - (local $14 f64) - (local $15 f64) - block $__inlined_func$~lib/math/NativeMath.log10 - i32.const 1 + i32.const 1 + local.get $0 + i64.reinterpret_f64 + local.tee $2 + i64.const 32 + i64.shr_u + i32.wrap_i64 + local.tee $1 + i32.const 31 + i32.shr_u + local.get $1 + i32.const 1048576 + i32.lt_u + select + if + local.get $2 + i64.const 1 + i64.shl + i64.eqz + if + f64.const -1 + local.get $0 + local.get $0 + f64.mul + f64.div + return + end + local.get $1 + i32.const 31 + i32.shr_u + if + local.get $0 + local.get $0 + f64.sub + f64.const 0 + f64.div + return + end + i32.const -54 + local.set $8 local.get $0 - local.tee $3 + f64.const 18014398509481984 + f64.mul i64.reinterpret_f64 - local.tee $6 + local.tee $2 i64.const 32 i64.shr_u i32.wrap_i64 - local.tee $4 - i32.const 31 - i32.shr_u - local.get $4 - i32.const 1048576 - i32.lt_u - select + local.set $1 + else + local.get $1 + i32.const 2146435072 + i32.ge_u if - local.get $6 - i64.const 1 + local.get $0 + return + else + local.get $2 + i64.const 32 i64.shl + i64.const 1 + local.get $1 + i32.const 1072693248 + i32.eq + select i64.eqz if - f64.const -1 - local.get $3 - local.get $3 - f64.mul - f64.div - local.set $3 - br $__inlined_func$~lib/math/NativeMath.log10 - end - local.get $4 - i32.const 31 - i32.shr_u - if - local.get $3 - local.get $3 - f64.sub f64.const 0 - f64.div - local.set $3 - br $__inlined_func$~lib/math/NativeMath.log10 - end - i32.const -54 - local.set $7 - local.get $3 - f64.const 18014398509481984 - f64.mul - i64.reinterpret_f64 - local.tee $6 - i64.const 32 - i64.shr_u - i32.wrap_i64 - local.set $4 - else - local.get $4 - i32.const 2146435072 - i32.ge_u - if - br $__inlined_func$~lib/math/NativeMath.log10 - else - local.get $6 - i64.const 32 - i64.shl - i64.const 1 - local.get $4 - i32.const 1072693248 - i32.eq - select - i64.eqz - if - f64.const 0 - local.set $3 - br $__inlined_func$~lib/math/NativeMath.log10 - end + return end end - local.get $6 - i64.const 4294967295 - i64.and - local.get $4 - i32.const 614242 - i32.add - local.tee $4 - i32.const 1048575 - i32.and - i32.const 1072079006 - i32.add - i64.extend_i32_u - i64.const 32 - i64.shl - i64.or - f64.reinterpret_i64 - f64.const 1 - f64.sub - local.tee $5 - local.get $5 - f64.const 2 - f64.add - f64.div - local.tee $8 - local.get $8 - f64.mul - local.tee $9 - local.get $9 - f64.mul - local.set $3 - local.get $7 - local.get $4 - i32.const 20 - i32.shr_u - i32.const 1023 - i32.sub - i32.add - f64.convert_i32_s - local.tee $13 - f64.const 0.30102999566361177 - f64.mul - local.tee $14 - local.get $5 - local.get $5 - f64.const 0.5 - f64.mul - local.get $5 - f64.mul - local.tee $10 - f64.sub - i64.reinterpret_f64 - i64.const -4294967296 - i64.and - f64.reinterpret_i64 - local.tee $11 - f64.const 0.4342944818781689 - f64.mul - local.tee $15 - f64.add - local.set $12 - local.get $13 - f64.const 3.694239077158931e-13 - f64.mul - local.get $5 - local.get $11 - f64.sub - local.get $10 - f64.sub - local.get $8 - local.get $10 - local.get $9 - local.get $3 - local.get $3 - local.get $3 - f64.const 0.14798198605116586 - f64.mul - f64.const 0.1818357216161805 - f64.add - f64.mul - f64.const 0.2857142874366239 - f64.add - f64.mul - f64.const 0.6666666666666735 - f64.add - f64.mul - local.get $3 - local.get $3 - local.get $3 - f64.const 0.15313837699209373 - f64.mul - f64.const 0.22222198432149784 - f64.add - f64.mul - f64.const 0.3999999999940942 - f64.add - f64.mul - f64.add - f64.add - f64.mul - f64.add - local.tee $3 - local.get $11 - f64.add - f64.const 2.5082946711645275e-11 - f64.mul - f64.add - local.get $3 - f64.const 0.4342944818781689 - f64.mul - f64.add - local.get $14 - local.get $12 - f64.sub - local.get $15 - f64.add - f64.add - local.get $12 - f64.add - local.set $3 end - local.get $3 - local.get $1 local.get $2 - call $std/math/check - if (result i32) - local.get $0 - call $~lib/bindings/Math/log10 - local.get $1 - local.get $2 - call $std/math/check - else - i32.const 0 - end + i64.const 4294967295 + i64.and + local.get $1 + i32.const 614242 + i32.add + local.tee $1 + i32.const 1048575 + i32.and + i32.const 1072079006 + i32.add + i64.extend_i32_u + i64.const 32 + i64.shl + i64.or + f64.reinterpret_i64 + f64.const 1 + f64.sub + local.tee $0 + local.get $0 + f64.const 2 + f64.add + f64.div + local.tee $4 + local.get $4 + f64.mul + local.set $3 + local.get $8 + local.get $1 + i32.const 20 + i32.shr_u + i32.const 1023 + i32.sub + i32.add + f64.convert_i32_s + local.tee $9 + f64.const 0.30102999566361177 + f64.mul + local.tee $10 + local.get $0 + local.get $0 + f64.const 0.5 + f64.mul + local.get $0 + f64.mul + local.tee $5 + f64.sub + i64.reinterpret_f64 + i64.const -4294967296 + i64.and + f64.reinterpret_i64 + local.tee $6 + f64.const 0.4342944818781689 + f64.mul + local.tee $11 + f64.add + local.set $7 + local.get $9 + f64.const 3.694239077158931e-13 + f64.mul + local.get $0 + local.get $6 + f64.sub + local.get $5 + f64.sub + local.get $4 + local.get $5 + local.get $3 + local.get $3 + local.get $3 + f64.mul + local.tee $0 + local.get $0 + local.get $0 + f64.const 0.14798198605116586 + f64.mul + f64.const 0.1818357216161805 + f64.add + f64.mul + f64.const 0.2857142874366239 + f64.add + f64.mul + f64.const 0.6666666666666735 + f64.add + f64.mul + local.get $0 + local.get $0 + local.get $0 + f64.const 0.15313837699209373 + f64.mul + f64.const 0.22222198432149784 + f64.add + f64.mul + f64.const 0.3999999999940942 + f64.add + f64.mul + f64.add + f64.add + f64.mul + f64.add + local.tee $0 + local.get $6 + f64.add + f64.const 2.5082946711645275e-11 + f64.mul + f64.add + local.get $0 + f64.const 0.4342944818781689 + f64.mul + f64.add + local.get $10 + local.get $7 + f64.sub + local.get $11 + f64.add + f64.add + local.get $7 + f64.add ) (func $std/math/test_log10f (param $0 f32) (param $1 f32) (param $2 f32) (result i32) (local $3 i32) @@ -7114,213 +7075,216 @@ i32.const 0 end ) - (func $std/math/test_mod (param $0 f64) (param $1 f64) (param $2 f64) (result i32) + (func $~lib/math/NativeMath.mod (param $0 f64) (param $1 f64) (result f64) + (local $2 i64) (local $3 i64) (local $4 i64) (local $5 i64) (local $6 i64) (local $7 i64) (local $8 i64) - (local $9 f64) - (local $10 i64) - block $__inlined_func$~lib/math/NativeMath.mod (result f64) + local.get $1 + f64.abs + f64.const 1 + f64.eq + if local.get $0 local.get $0 f64.trunc f64.sub local.get $0 f64.copysign + return + end + local.get $1 + i64.reinterpret_f64 + local.tee $3 + i64.const 52 + i64.shr_u + i64.const 2047 + i64.and + local.set $5 + local.get $0 + i64.reinterpret_f64 + local.tee $2 + i64.const 63 + i64.shr_u + local.set $7 + i32.const 1 + local.get $1 + local.get $1 + f64.ne + i32.const 1 + local.get $2 + i64.const 52 + i64.shr_u + i64.const 2047 + i64.and + local.tee $4 + i64.const 2047 + i64.eq + local.get $3 + i64.const 1 + i64.shl + local.tee $6 + i64.eqz + select + select + if + local.get $0 local.get $1 - f64.abs - f64.const 1 - f64.eq - br_if $__inlined_func$~lib/math/NativeMath.mod - drop - local.get $1 - i64.reinterpret_f64 + f64.mul + local.tee $0 + local.get $0 + f64.div + return + end + local.get $6 + local.get $2 + i64.const 1 + i64.shl + local.tee $8 + i64.ge_u + if + local.get $0 + local.get $6 + local.get $8 + i64.ne + f64.convert_i32_u + f64.mul + return + end + local.get $4 + i64.eqz + if (result i64) + local.get $2 + i64.const 1 + local.get $4 + local.get $2 + i64.const 12 + i64.shl + i64.clz + i64.sub local.tee $4 - i64.const 52 - i64.shr_u - i64.const 2047 + i64.sub + i64.shl + else + local.get $2 + i64.const 4503599627370495 i64.and - local.set $6 - local.get $0 - i64.reinterpret_f64 - local.tee $3 - i64.const 63 - i64.shr_u - local.set $8 - i32.const 1 - local.get $1 - local.get $1 - f64.ne - i32.const 1 + i64.const 4503599627370496 + i64.or + end + local.set $2 + local.get $5 + i64.eqz + if (result i64) local.get $3 - i64.const 52 - i64.shr_u - i64.const 2047 - i64.and - local.tee $5 - i64.const 2047 - i64.eq - local.get $4 i64.const 1 + local.get $5 + local.get $3 + i64.const 12 i64.shl - local.tee $7 - i64.eqz - select - select - if - local.get $0 - local.get $1 - f64.mul - local.tee $9 - local.get $9 - f64.div - br $__inlined_func$~lib/math/NativeMath.mod + i64.clz + i64.sub + local.tee $5 + i64.sub + i64.shl + else + local.get $3 + i64.const 4503599627370495 + i64.and + i64.const 4503599627370496 + i64.or + end + local.set $3 + block $folding-inner0 + loop $while-continue|0 + local.get $4 + local.get $5 + i64.gt_s + if + local.get $2 + local.get $3 + i64.ge_u + if (result i64) + local.get $2 + local.get $3 + i64.eq + br_if $folding-inner0 + local.get $2 + local.get $3 + i64.sub + else + local.get $2 + end + i64.const 1 + i64.shl + local.set $2 + local.get $4 + i64.const 1 + i64.sub + local.set $4 + br $while-continue|0 + end end - local.get $7 + local.get $2 local.get $3 - i64.const 1 - i64.shl - local.tee $10 i64.ge_u if - local.get $0 - local.get $7 - local.get $10 - i64.ne - f64.convert_i32_u - f64.mul - br $__inlined_func$~lib/math/NativeMath.mod - end - local.get $5 - i64.eqz - if (result i64) + local.get $2 local.get $3 - i64.const 1 - local.get $5 + i64.eq + br_if $folding-inner0 + local.get $2 local.get $3 - i64.const 12 - i64.shl - i64.clz - i64.sub - local.tee $5 i64.sub - i64.shl - else - local.get $3 - i64.const 4503599627370495 - i64.and - i64.const 4503599627370496 - i64.or + local.set $2 end - local.set $3 - local.get $6 - i64.eqz + local.get $2 + local.get $2 + i64.const 11 + i64.shl + i64.clz + local.tee $3 + i64.shl + local.set $2 + local.get $4 + local.get $3 + i64.sub + local.tee $4 + i64.const 0 + i64.gt_s if (result i64) - local.get $4 - i64.const 1 - local.get $6 - local.get $4 - i64.const 12 - i64.shl - i64.clz - i64.sub - local.tee $6 - i64.sub - i64.shl - else - local.get $4 - i64.const 4503599627370495 - i64.and + local.get $2 i64.const 4503599627370496 - i64.or - end - local.set $4 - block $folding-inner0 - loop $while-continue|0 - local.get $5 - local.get $6 - i64.gt_s - if - local.get $3 - local.get $4 - i64.ge_u - if (result i64) - local.get $3 - local.get $4 - i64.eq - br_if $folding-inner0 - local.get $3 - local.get $4 - i64.sub - else - local.get $3 - end - i64.const 1 - i64.shl - local.set $3 - local.get $5 - i64.const 1 - i64.sub - local.set $5 - br $while-continue|0 - end - end - local.get $3 + i64.sub local.get $4 - i64.ge_u - if - local.get $3 - local.get $4 - i64.eq - br_if $folding-inner0 - local.get $3 - local.get $4 - i64.sub - local.set $3 - end - local.get $3 - local.get $3 - i64.const 11 - i64.shl - i64.clz - local.tee $4 + i64.const 52 i64.shl - local.set $3 - local.get $5 + i64.or + else + local.get $2 + i64.const 1 local.get $4 i64.sub - local.tee $4 - i64.const 0 - i64.gt_s - if (result i64) - local.get $3 - i64.const 4503599627370496 - i64.sub - local.get $4 - i64.const 52 - i64.shl - i64.or - else - local.get $3 - i64.const 1 - local.get $4 - i64.sub - i64.shr_u - end - local.get $8 - i64.const 63 - i64.shl - i64.or - f64.reinterpret_i64 - br $__inlined_func$~lib/math/NativeMath.mod + i64.shr_u end - local.get $0 - f64.const 0 - f64.mul + local.get $7 + i64.const 63 + i64.shl + i64.or + f64.reinterpret_i64 + return end + local.get $0 + f64.const 0 + f64.mul + ) + (func $std/math/test_mod (param $0 f64) (param $1 f64) (param $2 f64) (result i32) + local.get $0 + local.get $1 + call $~lib/math/NativeMath.mod local.get $2 f64.const 0 call $std/math/check @@ -7335,210 +7299,206 @@ i32.const 0 end ) - (func $std/math/test_modf (param $0 f32) (param $1 f32) (param $2 f32) (result i32) + (func $~lib/math/NativeMathf.mod (param $0 f32) (param $1 f32) (result f32) + (local $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) (local $6 i32) (local $7 i32) (local $8 i32) - (local $9 i32) - block $__inlined_func$~lib/math/NativeMathf.mod (result f32) + local.get $1 + f32.abs + f32.const 1 + f32.eq + if local.get $0 local.get $0 f32.trunc f32.sub local.get $0 f32.copysign + return + end + local.get $1 + i32.reinterpret_f32 + local.tee $3 + i32.const 23 + i32.shr_u + i32.const 255 + i32.and + local.set $5 + local.get $0 + i32.reinterpret_f32 + local.tee $2 + i32.const -2147483648 + i32.and + local.set $7 + i32.const 1 + local.get $1 + local.get $1 + f32.ne + local.get $2 + i32.const 23 + i32.shr_u + i32.const 255 + i32.and + local.tee $4 + i32.const 255 + i32.eq + i32.const 1 + local.get $3 + i32.const 1 + i32.shl + local.tee $6 + select + select + if + local.get $0 local.get $1 - f32.abs - f32.const 1 - f32.eq - br_if $__inlined_func$~lib/math/NativeMathf.mod - drop - local.get $1 - i32.reinterpret_f32 - local.tee $4 - i32.const 23 - i32.shr_u - i32.const 255 - i32.and - local.set $6 + f32.mul + local.tee $0 local.get $0 - i32.reinterpret_f32 - local.tee $3 - i32.const -2147483648 + f32.div + return + end + local.get $6 + local.get $2 + i32.const 1 + i32.shl + local.tee $8 + i32.ge_u + if + local.get $0 + local.get $6 + local.get $8 + i32.ne + f32.convert_i32_u + f32.mul + return + end + local.get $4 + if (result i32) + local.get $2 + i32.const 8388607 i32.and - local.set $8 + i32.const 8388608 + i32.or + else + local.get $2 i32.const 1 - local.get $1 - local.get $1 - f32.ne + local.get $4 + local.get $2 + i32.const 9 + i32.shl + i32.clz + i32.sub + local.tee $4 + i32.sub + i32.shl + end + local.set $2 + local.get $5 + if (result i32) local.get $3 - i32.const 23 - i32.shr_u - i32.const 255 + i32.const 8388607 i32.and - local.tee $5 - i32.const 255 - i32.eq - i32.const 1 - local.get $4 + i32.const 8388608 + i32.or + else + local.get $3 i32.const 1 + local.get $5 + local.get $3 + i32.const 9 i32.shl - local.tee $7 - select - select - if - local.get $0 - local.get $1 - f32.mul - local.tee $0 - local.get $0 - f32.div - br $__inlined_func$~lib/math/NativeMathf.mod + i32.clz + i32.sub + local.tee $5 + i32.sub + i32.shl + end + local.set $3 + block $folding-inner0 + loop $while-continue|0 + local.get $4 + local.get $5 + i32.gt_s + if + local.get $2 + local.get $3 + i32.ge_u + if (result i32) + local.get $2 + local.get $3 + i32.eq + br_if $folding-inner0 + local.get $2 + local.get $3 + i32.sub + else + local.get $2 + end + i32.const 1 + i32.shl + local.set $2 + local.get $4 + i32.const 1 + i32.sub + local.set $4 + br $while-continue|0 + end end - local.get $7 + local.get $2 local.get $3 - i32.const 1 - i32.shl - local.tee $9 i32.ge_u if - local.get $0 - local.get $7 - local.get $9 - i32.ne - f32.convert_i32_u - f32.mul - br $__inlined_func$~lib/math/NativeMathf.mod - end - local.get $5 - if (result i32) - local.get $3 - i32.const 8388607 - i32.and - i32.const 8388608 - i32.or - else + local.get $2 local.get $3 - i32.const 1 - local.get $5 + i32.eq + br_if $folding-inner0 + local.get $2 local.get $3 - i32.const 9 - i32.shl - i32.clz - i32.sub - local.tee $5 i32.sub - i32.shl + local.set $2 end - local.set $3 - local.get $6 + local.get $2 + local.get $2 + i32.const 8 + i32.shl + i32.clz + local.tee $3 + i32.shl + local.set $2 + local.get $4 + local.get $3 + i32.sub + local.tee $4 + i32.const 0 + i32.gt_s if (result i32) - local.get $4 - i32.const 8388607 - i32.and + local.get $2 i32.const 8388608 - i32.or - else - local.get $4 - i32.const 1 - local.get $6 - local.get $4 - i32.const 9 - i32.shl - i32.clz i32.sub - local.tee $6 - i32.sub - i32.shl - end - local.set $4 - block $folding-inner0 - loop $while-continue|0 - local.get $5 - local.get $6 - i32.gt_s - if - local.get $3 - local.get $4 - i32.ge_u - if (result i32) - local.get $3 - local.get $4 - i32.eq - br_if $folding-inner0 - local.get $3 - local.get $4 - i32.sub - else - local.get $3 - end - i32.const 1 - i32.shl - local.set $3 - local.get $5 - i32.const 1 - i32.sub - local.set $5 - br $while-continue|0 - end - end - local.get $3 local.get $4 - i32.ge_u - if - local.get $3 - local.get $4 - i32.eq - br_if $folding-inner0 - local.get $3 - local.get $4 - i32.sub - local.set $3 - end - local.get $3 - local.get $3 - i32.const 8 - i32.shl - i32.clz - local.tee $4 + i32.const 23 i32.shl - local.set $3 - local.get $5 + i32.or + else + local.get $2 + i32.const 1 local.get $4 i32.sub - local.tee $4 - i32.const 0 - i32.gt_s - if (result i32) - local.get $3 - i32.const 8388608 - i32.sub - local.get $4 - i32.const 23 - i32.shl - i32.or - else - local.get $3 - i32.const 1 - local.get $4 - i32.sub - i32.shr_u - end - local.get $8 - i32.or - f32.reinterpret_i32 - br $__inlined_func$~lib/math/NativeMathf.mod + i32.shr_u end - local.get $0 - f32.const 0 - f32.mul + local.get $7 + i32.or + f32.reinterpret_i32 + return end - local.get $2 + local.get $0 f32.const 0 - call $std/math/check + f32.mul ) (func $~lib/math/NativeMath.pow (param $0 f64) (param $1 f64) (result f64) (local $2 i64) @@ -10305,80 +10265,85 @@ (func $std/math/test_sinh (param $0 f64) (param $1 f64) (param $2 f64) (result i32) (local $3 f64) (local $4 f64) - (local $5 i32) - (local $6 i64) - block $__inlined_func$~lib/math/NativeMath.sinh (result f64) - local.get $0 - i64.reinterpret_f64 - i64.const 9223372036854775807 - i64.and - local.tee $6 - f64.reinterpret_i64 - local.set $3 - f64.const 0.5 - local.get $0 - f64.copysign - local.set $4 - local.get $6 + (local $5 f64) + (local $6 i32) + (local $7 i64) + local.get $0 + local.set $3 + local.get $0 + i64.reinterpret_f64 + i64.const 9223372036854775807 + i64.and + local.tee $7 + f64.reinterpret_i64 + local.set $4 + f64.const 0.5 + local.get $0 + f64.copysign + local.set $5 + block $__inlined_func$~lib/math/NativeMath.sinh + local.get $7 i64.const 32 i64.shr_u i32.wrap_i64 - local.tee $5 + local.tee $6 i32.const 1082535490 i32.lt_u if - local.get $3 + local.get $4 call $~lib/math/NativeMath.expm1 - local.set $3 - local.get $5 + local.set $4 + local.get $6 i32.const 1072693248 i32.lt_u if - local.get $0 - local.get $5 + local.get $6 i32.const 1045430272 i32.lt_u br_if $__inlined_func$~lib/math/NativeMath.sinh - drop + local.get $5 + local.get $4 local.get $4 - local.get $3 - local.get $3 f64.add - local.get $3 - local.get $3 + local.get $4 + local.get $4 f64.mul - local.get $3 + local.get $4 f64.const 1 f64.add f64.div f64.sub f64.mul + local.set $3 br $__inlined_func$~lib/math/NativeMath.sinh end + local.get $5 + local.get $4 + local.get $4 local.get $4 - local.get $3 - local.get $3 - local.get $3 f64.const 1 f64.add f64.div f64.add f64.mul + local.set $3 br $__inlined_func$~lib/math/NativeMath.sinh end - local.get $3 + local.get $4 f64.const 1416.0996898839683 f64.sub call $~lib/math/NativeMath.exp - local.get $4 - local.get $4 + local.get $5 + local.get $5 f64.add f64.const 2247116418577894884661631e283 f64.mul f64.mul f64.const 2247116418577894884661631e283 f64.mul + local.set $3 end + local.get $3 local.get $1 local.get $2 call $std/math/check @@ -11303,13 +11268,12 @@ (local $4 i32) (local $5 i64) local.get $0 - local.tee $3 i64.reinterpret_f64 i64.const 9223372036854775807 i64.and local.tee $5 f64.reinterpret_i64 - local.set $0 + local.set $3 local.get $5 i64.const 32 i64.shr_u @@ -11324,14 +11288,14 @@ if (result f64) f64.const 1 f64.const 0 - local.get $0 + local.get $3 f64.div f64.sub else f64.const 1 f64.const 2 - local.get $0 - local.get $0 + local.get $3 + local.get $3 f64.add call $~lib/math/NativeMath.expm1 f64.const 2 @@ -11344,12 +11308,12 @@ i32.const 1070618798 i32.gt_u if (result f64) - local.get $0 - local.get $0 + local.get $3 + local.get $3 f64.add call $~lib/math/NativeMath.expm1 - local.tee $0 - local.get $0 + local.tee $3 + local.get $3 f64.const 2 f64.add f64.div @@ -11358,28 +11322,28 @@ i32.const 1048576 i32.ge_u if (result f64) - local.get $0 + local.get $3 f64.const -2 f64.mul call $~lib/math/NativeMath.expm1 - local.tee $0 + local.tee $3 f64.neg - local.get $0 + local.get $3 f64.const 2 f64.add f64.div else - local.get $0 + local.get $3 end end end - local.get $3 + local.get $0 f64.copysign local.get $1 local.get $2 call $std/math/check if (result i32) - local.get $3 + local.get $0 call $~lib/bindings/Math/tanh local.get $1 local.get $2 @@ -18246,9 +18210,10 @@ end f32.const -8.066848754882812 f32.const 4.535662651062012 + call $~lib/math/NativeMathf.atan2 f32.const -1.0585895776748657 f32.const -0.22352588176727295 - call $std/math/test_atan2f + call $std/math/check i32.eqz if i32.const 0 @@ -18260,9 +18225,10 @@ end f32.const 4.345239639282227 f32.const -8.887990951538086 + call $~lib/math/NativeMathf.atan2 f32.const 2.686873435974121 f32.const 0.09464472532272339 - call $std/math/test_atan2f + call $std/math/check i32.eqz if i32.const 0 @@ -18274,9 +18240,10 @@ end f32.const -8.381433486938477 f32.const -2.7636072635650635 + call $~lib/math/NativeMathf.atan2 f32.const -1.8893001079559326 f32.const -0.21941901743412018 - call $std/math/test_atan2f + call $std/math/check i32.eqz if i32.const 0 @@ -18288,9 +18255,10 @@ end f32.const -6.531673431396484 f32.const 4.567535400390625 + call $~lib/math/NativeMathf.atan2 f32.const -0.9605468511581421 f32.const 0.46015575528144836 - call $std/math/test_atan2f + call $std/math/check i32.eqz if i32.const 0 @@ -18302,9 +18270,10 @@ end f32.const 9.267057418823242 f32.const 4.811392307281494 + call $~lib/math/NativeMathf.atan2 f32.const 1.0919123888015747 f32.const -0.05708503723144531 - call $std/math/test_atan2f + call $std/math/check i32.eqz if i32.const 0 @@ -18316,9 +18285,10 @@ end f32.const -6.450045585632324 f32.const 0.6620717644691467 + call $~lib/math/NativeMathf.atan2 f32.const -1.4685084819793701 f32.const 0.19611206650733948 - call $std/math/test_atan2f + call $std/math/check i32.eqz if i32.const 0 @@ -18330,9 +18300,10 @@ end f32.const 7.858890056610107 f32.const 0.052154526114463806 + call $~lib/math/NativeMathf.atan2 f32.const 1.5641601085662842 f32.const 0.48143187165260315 - call $std/math/test_atan2f + call $std/math/check i32.eqz if i32.const 0 @@ -18344,9 +18315,10 @@ end f32.const -0.7920545339584351 f32.const 7.676402568817139 + call $~lib/math/NativeMathf.atan2 f32.const -0.10281659662723541 f32.const -0.4216274917125702 - call $std/math/test_atan2f + call $std/math/check i32.eqz if i32.const 0 @@ -18358,9 +18330,10 @@ end f32.const 0.6157026886940002 f32.const 2.0119025707244873 + call $~lib/math/NativeMathf.atan2 f32.const 0.29697975516319275 f32.const 0.2322007566690445 - call $std/math/test_atan2f + call $std/math/check i32.eqz if i32.const 0 @@ -18372,9 +18345,10 @@ end f32.const -0.5587586760520935 f32.const 0.03223983198404312 + call $~lib/math/NativeMathf.atan2 f32.const -1.5131611824035645 f32.const 0.16620726883411407 - call $std/math/test_atan2f + call $std/math/check i32.eqz if i32.const 0 @@ -18386,9 +18360,10 @@ end f32.const 0 f32.const 0 + call $~lib/math/NativeMathf.atan2 f32.const 0 f32.const 0 - call $std/math/test_atan2f + call $std/math/check i32.eqz if i32.const 0 @@ -18400,9 +18375,10 @@ end f32.const 0 f32.const -0 + call $~lib/math/NativeMathf.atan2 f32.const 3.1415927410125732 f32.const 0.3666777014732361 - call $std/math/test_atan2f + call $std/math/check i32.eqz if i32.const 0 @@ -18414,9 +18390,10 @@ end f32.const 0 f32.const -1 + call $~lib/math/NativeMathf.atan2 f32.const 3.1415927410125732 f32.const 0.3666777014732361 - call $std/math/test_atan2f + call $std/math/check i32.eqz if i32.const 0 @@ -18428,9 +18405,10 @@ end f32.const 0 f32.const -inf + call $~lib/math/NativeMathf.atan2 f32.const 3.1415927410125732 f32.const 0.3666777014732361 - call $std/math/test_atan2f + call $std/math/check i32.eqz if i32.const 0 @@ -18442,9 +18420,10 @@ end f32.const 0 f32.const 1 + call $~lib/math/NativeMathf.atan2 f32.const 0 f32.const 0 - call $std/math/test_atan2f + call $std/math/check i32.eqz if i32.const 0 @@ -18456,9 +18435,10 @@ end f32.const 0 f32.const inf + call $~lib/math/NativeMathf.atan2 f32.const 0 f32.const 0 - call $std/math/test_atan2f + call $std/math/check i32.eqz if i32.const 0 @@ -18470,9 +18450,10 @@ end f32.const -0 f32.const 0 + call $~lib/math/NativeMathf.atan2 f32.const -0 f32.const 0 - call $std/math/test_atan2f + call $std/math/check i32.eqz if i32.const 0 @@ -18484,9 +18465,10 @@ end f32.const -0 f32.const -0 + call $~lib/math/NativeMathf.atan2 f32.const -3.1415927410125732 f32.const -0.3666777014732361 - call $std/math/test_atan2f + call $std/math/check i32.eqz if i32.const 0 @@ -18498,9 +18480,10 @@ end f32.const -0 f32.const -1 + call $~lib/math/NativeMathf.atan2 f32.const -3.1415927410125732 f32.const -0.3666777014732361 - call $std/math/test_atan2f + call $std/math/check i32.eqz if i32.const 0 @@ -18512,9 +18495,10 @@ end f32.const -0 f32.const -inf + call $~lib/math/NativeMathf.atan2 f32.const -3.1415927410125732 f32.const -0.3666777014732361 - call $std/math/test_atan2f + call $std/math/check i32.eqz if i32.const 0 @@ -18526,9 +18510,10 @@ end f32.const -0 f32.const 1 + call $~lib/math/NativeMathf.atan2 f32.const -0 f32.const 0 - call $std/math/test_atan2f + call $std/math/check i32.eqz if i32.const 0 @@ -18540,9 +18525,10 @@ end f32.const -0 f32.const inf + call $~lib/math/NativeMathf.atan2 f32.const -0 f32.const 0 - call $std/math/test_atan2f + call $std/math/check i32.eqz if i32.const 0 @@ -18554,9 +18540,10 @@ end f32.const -1 f32.const 0 + call $~lib/math/NativeMathf.atan2 f32.const -1.5707963705062866 f32.const -0.3666777014732361 - call $std/math/test_atan2f + call $std/math/check i32.eqz if i32.const 0 @@ -18568,9 +18555,10 @@ end f32.const -1 f32.const -0 + call $~lib/math/NativeMathf.atan2 f32.const -1.5707963705062866 f32.const -0.3666777014732361 - call $std/math/test_atan2f + call $std/math/check i32.eqz if i32.const 0 @@ -18582,9 +18570,10 @@ end f32.const 1 f32.const 0 + call $~lib/math/NativeMathf.atan2 f32.const 1.5707963705062866 f32.const 0.3666777014732361 - call $std/math/test_atan2f + call $std/math/check i32.eqz if i32.const 0 @@ -18596,9 +18585,10 @@ end f32.const 1 f32.const -0 + call $~lib/math/NativeMathf.atan2 f32.const 1.5707963705062866 f32.const 0.3666777014732361 - call $std/math/test_atan2f + call $std/math/check i32.eqz if i32.const 0 @@ -18610,9 +18600,10 @@ end f32.const -1 f32.const inf + call $~lib/math/NativeMathf.atan2 f32.const -0 f32.const 0 - call $std/math/test_atan2f + call $std/math/check i32.eqz if i32.const 0 @@ -18624,9 +18615,10 @@ end f32.const 1 f32.const inf + call $~lib/math/NativeMathf.atan2 f32.const 0 f32.const 0 - call $std/math/test_atan2f + call $std/math/check i32.eqz if i32.const 0 @@ -18638,9 +18630,10 @@ end f32.const -1 f32.const -inf + call $~lib/math/NativeMathf.atan2 f32.const -3.1415927410125732 f32.const -0.3666777014732361 - call $std/math/test_atan2f + call $std/math/check i32.eqz if i32.const 0 @@ -18652,9 +18645,10 @@ end f32.const 1 f32.const -inf + call $~lib/math/NativeMathf.atan2 f32.const 3.1415927410125732 f32.const 0.3666777014732361 - call $std/math/test_atan2f + call $std/math/check i32.eqz if i32.const 0 @@ -18666,9 +18660,10 @@ end f32.const inf f32.const 0 + call $~lib/math/NativeMathf.atan2 f32.const 1.5707963705062866 f32.const 0.3666777014732361 - call $std/math/test_atan2f + call $std/math/check i32.eqz if i32.const 0 @@ -18680,9 +18675,10 @@ end f32.const -inf f32.const 0 + call $~lib/math/NativeMathf.atan2 f32.const -1.5707963705062866 f32.const -0.3666777014732361 - call $std/math/test_atan2f + call $std/math/check i32.eqz if i32.const 0 @@ -18694,9 +18690,10 @@ end f32.const inf f32.const inf + call $~lib/math/NativeMathf.atan2 f32.const 0.7853981852531433 f32.const 0.3666777014732361 - call $std/math/test_atan2f + call $std/math/check i32.eqz if i32.const 0 @@ -18708,9 +18705,10 @@ end f32.const inf f32.const -inf + call $~lib/math/NativeMathf.atan2 f32.const 2.356194496154785 f32.const 0.02500828728079796 - call $std/math/test_atan2f + call $std/math/check i32.eqz if i32.const 0 @@ -18722,9 +18720,10 @@ end f32.const -inf f32.const inf + call $~lib/math/NativeMathf.atan2 f32.const -0.7853981852531433 f32.const -0.3666777014732361 - call $std/math/test_atan2f + call $std/math/check i32.eqz if i32.const 0 @@ -18736,9 +18735,10 @@ end f32.const -inf f32.const -inf + call $~lib/math/NativeMathf.atan2 f32.const -2.356194496154785 f32.const -0.02500828728079796 - call $std/math/test_atan2f + call $std/math/check i32.eqz if i32.const 0 @@ -18750,9 +18750,10 @@ end f32.const 5.877471754111438e-39 f32.const 1 + call $~lib/math/NativeMathf.atan2 f32.const 5.877471754111438e-39 f32.const 0 - call $std/math/test_atan2f + call $std/math/check i32.eqz if i32.const 0 @@ -18764,9 +18765,10 @@ end f32.const 1 f32.const 1701411834604692317316873e14 + call $~lib/math/NativeMathf.atan2 f32.const 5.877471754111438e-39 f32.const 0 - call $std/math/test_atan2f + call $std/math/check i32.eqz if i32.const 0 @@ -30641,9 +30643,19 @@ unreachable end f64.const -8.06684839057968 + call $~lib/math/NativeMath.log10 f64.const nan:0x8000000000000 f64.const 0 - call $std/math/test_log10 + call $std/math/check + if (result i32) + f64.const -8.06684839057968 + call $~lib/bindings/Math/log10 + f64.const nan:0x8000000000000 + f64.const 0 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -30654,9 +30666,19 @@ unreachable end f64.const 4.345239849338305 + call $~lib/math/NativeMath.log10 f64.const 0.6380137537120029 f64.const -0.2088824063539505 - call $std/math/test_log10 + call $std/math/check + if (result i32) + f64.const 4.345239849338305 + call $~lib/bindings/Math/log10 + f64.const 0.6380137537120029 + f64.const -0.2088824063539505 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -30667,9 +30689,19 @@ unreachable end f64.const -8.38143342755525 + call $~lib/math/NativeMath.log10 f64.const nan:0x8000000000000 f64.const 0 - call $std/math/test_log10 + call $std/math/check + if (result i32) + f64.const -8.38143342755525 + call $~lib/bindings/Math/log10 + f64.const nan:0x8000000000000 + f64.const 0 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -30680,9 +30712,19 @@ unreachable end f64.const -6.531673581913484 + call $~lib/math/NativeMath.log10 f64.const nan:0x8000000000000 f64.const 0 - call $std/math/test_log10 + call $std/math/check + if (result i32) + f64.const -6.531673581913484 + call $~lib/bindings/Math/log10 + f64.const nan:0x8000000000000 + f64.const 0 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -30693,9 +30735,19 @@ unreachable end f64.const 9.267056966972586 + call $~lib/math/NativeMath.log10 f64.const 0.9669418327487274 f64.const -0.06120431795716286 - call $std/math/test_log10 + call $std/math/check + if (result i32) + f64.const 9.267056966972586 + call $~lib/bindings/Math/log10 + f64.const 0.9669418327487274 + f64.const -0.06120431795716286 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -30706,9 +30758,19 @@ unreachable end f64.const 0.6619858980995045 + call $~lib/math/NativeMath.log10 f64.const -0.17915126198447093 f64.const 0.39090874791145325 - call $std/math/test_log10 + call $std/math/check + if (result i32) + f64.const 0.6619858980995045 + call $~lib/bindings/Math/log10 + f64.const -0.17915126198447093 + f64.const 0.39090874791145325 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -30719,9 +30781,19 @@ unreachable end f64.const -0.4066039223853553 + call $~lib/math/NativeMath.log10 f64.const nan:0x8000000000000 f64.const 0 - call $std/math/test_log10 + call $std/math/check + if (result i32) + f64.const -0.4066039223853553 + call $~lib/bindings/Math/log10 + f64.const nan:0x8000000000000 + f64.const 0 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -30732,9 +30804,19 @@ unreachable end f64.const 0.5617597462207241 + call $~lib/math/NativeMath.log10 f64.const -0.25044938407454437 f64.const -0.3046841621398926 - call $std/math/test_log10 + call $std/math/check + if (result i32) + f64.const 0.5617597462207241 + call $~lib/bindings/Math/log10 + f64.const -0.25044938407454437 + f64.const -0.3046841621398926 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -30745,9 +30827,19 @@ unreachable end f64.const 0.7741522965913037 + call $~lib/math/NativeMath.log10 f64.const -0.11117359349943837 f64.const -0.31503361463546753 - call $std/math/test_log10 + call $std/math/check + if (result i32) + f64.const 0.7741522965913037 + call $~lib/bindings/Math/log10 + f64.const -0.11117359349943837 + f64.const -0.31503361463546753 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -30758,9 +30850,19 @@ unreachable end f64.const -0.6787637026394024 + call $~lib/math/NativeMath.log10 f64.const nan:0x8000000000000 f64.const 0 - call $std/math/test_log10 + call $std/math/check + if (result i32) + f64.const -0.6787637026394024 + call $~lib/bindings/Math/log10 + f64.const nan:0x8000000000000 + f64.const 0 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -30771,9 +30873,19 @@ unreachable end f64.const 0 + call $~lib/math/NativeMath.log10 f64.const -inf f64.const 0 - call $std/math/test_log10 + call $std/math/check + if (result i32) + f64.const 0 + call $~lib/bindings/Math/log10 + f64.const -inf + f64.const 0 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -30784,9 +30896,19 @@ unreachable end f64.const -0 + call $~lib/math/NativeMath.log10 f64.const -inf f64.const 0 - call $std/math/test_log10 + call $std/math/check + if (result i32) + f64.const -0 + call $~lib/bindings/Math/log10 + f64.const -inf + f64.const 0 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -30797,9 +30919,19 @@ unreachable end f64.const -7.888609052210118e-31 + call $~lib/math/NativeMath.log10 f64.const nan:0x8000000000000 f64.const 0 - call $std/math/test_log10 + call $std/math/check + if (result i32) + f64.const -7.888609052210118e-31 + call $~lib/bindings/Math/log10 + f64.const nan:0x8000000000000 + f64.const 0 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -30810,9 +30942,19 @@ unreachable end f64.const 1 + call $~lib/math/NativeMath.log10 f64.const 0 f64.const 0 - call $std/math/test_log10 + call $std/math/check + if (result i32) + f64.const 1 + call $~lib/bindings/Math/log10 + f64.const 0 + f64.const 0 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -30823,9 +30965,19 @@ unreachable end f64.const -1 + call $~lib/math/NativeMath.log10 f64.const nan:0x8000000000000 f64.const 0 - call $std/math/test_log10 + call $std/math/check + if (result i32) + f64.const -1 + call $~lib/bindings/Math/log10 + f64.const nan:0x8000000000000 + f64.const 0 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -30836,9 +30988,19 @@ unreachable end f64.const inf + call $~lib/math/NativeMath.log10 f64.const inf f64.const 0 - call $std/math/test_log10 + call $std/math/check + if (result i32) + f64.const inf + call $~lib/bindings/Math/log10 + f64.const inf + f64.const 0 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -30849,9 +31011,19 @@ unreachable end f64.const -inf + call $~lib/math/NativeMath.log10 f64.const nan:0x8000000000000 f64.const 0 - call $std/math/test_log10 + call $std/math/check + if (result i32) + f64.const -inf + call $~lib/bindings/Math/log10 + f64.const nan:0x8000000000000 + f64.const 0 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -30862,9 +31034,19 @@ unreachable end f64.const nan:0x8000000000000 + call $~lib/math/NativeMath.log10 f64.const nan:0x8000000000000 f64.const 0 - call $std/math/test_log10 + call $std/math/check + if (result i32) + f64.const nan:0x8000000000000 + call $~lib/bindings/Math/log10 + f64.const nan:0x8000000000000 + f64.const 0 + call $std/math/check + else + i32.const 0 + end i32.eqz if i32.const 0 @@ -37768,8 +37950,10 @@ end f32.const -8.066848754882812 f32.const 4.535662651062012 + call $~lib/math/NativeMathf.mod f32.const -3.531186103820801 - call $std/math/test_modf + f32.const 0 + call $std/math/check i32.eqz if i32.const 0 @@ -37781,8 +37965,10 @@ end f32.const 4.345239639282227 f32.const -8.887990951538086 + call $~lib/math/NativeMathf.mod f32.const 4.345239639282227 - call $std/math/test_modf + f32.const 0 + call $std/math/check i32.eqz if i32.const 0 @@ -37794,8 +37980,10 @@ end f32.const -8.381433486938477 f32.const -2.7636072635650635 + call $~lib/math/NativeMathf.mod f32.const -0.09061169624328613 - call $std/math/test_modf + f32.const 0 + call $std/math/check i32.eqz if i32.const 0 @@ -37807,8 +37995,10 @@ end f32.const -6.531673431396484 f32.const 4.567535400390625 + call $~lib/math/NativeMathf.mod f32.const -1.9641380310058594 - call $std/math/test_modf + f32.const 0 + call $std/math/check i32.eqz if i32.const 0 @@ -37820,8 +38010,10 @@ end f32.const 9.267057418823242 f32.const 4.811392307281494 + call $~lib/math/NativeMathf.mod f32.const 4.455665111541748 - call $std/math/test_modf + f32.const 0 + call $std/math/check i32.eqz if i32.const 0 @@ -37833,8 +38025,10 @@ end f32.const -6.450045585632324 f32.const 0.6620717644691467 + call $~lib/math/NativeMathf.mod f32.const -0.49139970541000366 - call $std/math/test_modf + f32.const 0 + call $std/math/check i32.eqz if i32.const 0 @@ -37846,8 +38040,10 @@ end f32.const 7.858890056610107 f32.const 0.052154526114463806 + call $~lib/math/NativeMathf.mod f32.const 0.0357111394405365 - call $std/math/test_modf + f32.const 0 + call $std/math/check i32.eqz if i32.const 0 @@ -37859,8 +38055,10 @@ end f32.const -0.7920545339584351 f32.const 7.676402568817139 + call $~lib/math/NativeMathf.mod f32.const -0.7920545339584351 - call $std/math/test_modf + f32.const 0 + call $std/math/check i32.eqz if i32.const 0 @@ -37872,8 +38070,10 @@ end f32.const 0.6157026886940002 f32.const 2.0119025707244873 + call $~lib/math/NativeMathf.mod f32.const 0.6157026886940002 - call $std/math/test_modf + f32.const 0 + call $std/math/check i32.eqz if i32.const 0 @@ -37885,8 +38085,10 @@ end f32.const -0.5587586760520935 f32.const 0.03223983198404312 + call $~lib/math/NativeMathf.mod f32.const -0.010681532323360443 - call $std/math/test_modf + f32.const 0 + call $std/math/check i32.eqz if i32.const 0 @@ -37898,8 +38100,10 @@ end f32.const 0 f32.const 1 + call $~lib/math/NativeMathf.mod f32.const 0 - call $std/math/test_modf + f32.const 0 + call $std/math/check i32.eqz if i32.const 0 @@ -37911,8 +38115,10 @@ end f32.const -0 f32.const 1 + call $~lib/math/NativeMathf.mod f32.const -0 - call $std/math/test_modf + f32.const 0 + call $std/math/check i32.eqz if i32.const 0 @@ -37924,8 +38130,10 @@ end f32.const 0.5 f32.const 1 + call $~lib/math/NativeMathf.mod f32.const 0.5 - call $std/math/test_modf + f32.const 0 + call $std/math/check i32.eqz if i32.const 0 @@ -37937,8 +38145,10 @@ end f32.const -0.5 f32.const 1 + call $~lib/math/NativeMathf.mod f32.const -0.5 - call $std/math/test_modf + f32.const 0 + call $std/math/check i32.eqz if i32.const 0 @@ -37950,8 +38160,10 @@ end f32.const 1 f32.const 1 + call $~lib/math/NativeMathf.mod + f32.const 0 f32.const 0 - call $std/math/test_modf + call $std/math/check i32.eqz if i32.const 0 @@ -37963,8 +38175,10 @@ end f32.const -1 f32.const 1 + call $~lib/math/NativeMathf.mod f32.const -0 - call $std/math/test_modf + f32.const 0 + call $std/math/check i32.eqz if i32.const 0 @@ -37976,8 +38190,10 @@ end f32.const 1.5 f32.const 1 + call $~lib/math/NativeMathf.mod f32.const 0.5 - call $std/math/test_modf + f32.const 0 + call $std/math/check i32.eqz if i32.const 0 @@ -37989,8 +38205,10 @@ end f32.const -1.5 f32.const 1 + call $~lib/math/NativeMathf.mod f32.const -0.5 - call $std/math/test_modf + f32.const 0 + call $std/math/check i32.eqz if i32.const 0 @@ -38002,8 +38220,10 @@ end f32.const 2 f32.const 1 + call $~lib/math/NativeMathf.mod + f32.const 0 f32.const 0 - call $std/math/test_modf + call $std/math/check i32.eqz if i32.const 0 @@ -38015,8 +38235,10 @@ end f32.const -2 f32.const 1 + call $~lib/math/NativeMathf.mod f32.const -0 - call $std/math/test_modf + f32.const 0 + call $std/math/check i32.eqz if i32.const 0 @@ -38028,8 +38250,10 @@ end f32.const inf f32.const 1 + call $~lib/math/NativeMathf.mod f32.const nan:0x400000 - call $std/math/test_modf + f32.const 0 + call $std/math/check i32.eqz if i32.const 0 @@ -38041,8 +38265,10 @@ end f32.const -inf f32.const 1 + call $~lib/math/NativeMathf.mod f32.const nan:0x400000 - call $std/math/test_modf + f32.const 0 + call $std/math/check i32.eqz if i32.const 0 @@ -38054,8 +38280,10 @@ end f32.const nan:0x400000 f32.const 1 + call $~lib/math/NativeMathf.mod f32.const nan:0x400000 - call $std/math/test_modf + f32.const 0 + call $std/math/check i32.eqz if i32.const 0 @@ -38067,8 +38295,10 @@ end f32.const 0 f32.const -1 + call $~lib/math/NativeMathf.mod + f32.const 0 f32.const 0 - call $std/math/test_modf + call $std/math/check i32.eqz if i32.const 0 @@ -38080,8 +38310,10 @@ end f32.const -0 f32.const -1 + call $~lib/math/NativeMathf.mod f32.const -0 - call $std/math/test_modf + f32.const 0 + call $std/math/check i32.eqz if i32.const 0 @@ -38093,8 +38325,10 @@ end f32.const 0.5 f32.const -1 + call $~lib/math/NativeMathf.mod f32.const 0.5 - call $std/math/test_modf + f32.const 0 + call $std/math/check i32.eqz if i32.const 0 @@ -38106,8 +38340,10 @@ end f32.const -0.5 f32.const -1 + call $~lib/math/NativeMathf.mod f32.const -0.5 - call $std/math/test_modf + f32.const 0 + call $std/math/check i32.eqz if i32.const 0 @@ -38119,8 +38355,10 @@ end f32.const 1 f32.const -1 + call $~lib/math/NativeMathf.mod + f32.const 0 f32.const 0 - call $std/math/test_modf + call $std/math/check i32.eqz if i32.const 0 @@ -38132,8 +38370,10 @@ end f32.const -1 f32.const -1 + call $~lib/math/NativeMathf.mod f32.const -0 - call $std/math/test_modf + f32.const 0 + call $std/math/check i32.eqz if i32.const 0 @@ -38145,8 +38385,10 @@ end f32.const 1.5 f32.const -1 + call $~lib/math/NativeMathf.mod f32.const 0.5 - call $std/math/test_modf + f32.const 0 + call $std/math/check i32.eqz if i32.const 0 @@ -38158,8 +38400,10 @@ end f32.const -1.5 f32.const -1 + call $~lib/math/NativeMathf.mod f32.const -0.5 - call $std/math/test_modf + f32.const 0 + call $std/math/check i32.eqz if i32.const 0 @@ -38171,8 +38415,10 @@ end f32.const 2 f32.const -1 + call $~lib/math/NativeMathf.mod f32.const 0 - call $std/math/test_modf + f32.const 0 + call $std/math/check i32.eqz if i32.const 0 @@ -38184,8 +38430,10 @@ end f32.const -2 f32.const -1 + call $~lib/math/NativeMathf.mod f32.const -0 - call $std/math/test_modf + f32.const 0 + call $std/math/check i32.eqz if i32.const 0 @@ -38197,8 +38445,10 @@ end f32.const inf f32.const -1 + call $~lib/math/NativeMathf.mod f32.const nan:0x400000 - call $std/math/test_modf + f32.const 0 + call $std/math/check i32.eqz if i32.const 0 @@ -38210,8 +38460,10 @@ end f32.const -inf f32.const -1 + call $~lib/math/NativeMathf.mod f32.const nan:0x400000 - call $std/math/test_modf + f32.const 0 + call $std/math/check i32.eqz if i32.const 0 @@ -38223,8 +38475,10 @@ end f32.const nan:0x400000 f32.const -1 + call $~lib/math/NativeMathf.mod f32.const nan:0x400000 - call $std/math/test_modf + f32.const 0 + call $std/math/check i32.eqz if i32.const 0 @@ -38236,8 +38490,10 @@ end f32.const 0 f32.const 0 + call $~lib/math/NativeMathf.mod f32.const nan:0x400000 - call $std/math/test_modf + f32.const 0 + call $std/math/check i32.eqz if i32.const 0 @@ -38249,8 +38505,10 @@ end f32.const 0 f32.const -0 + call $~lib/math/NativeMathf.mod f32.const nan:0x400000 - call $std/math/test_modf + f32.const 0 + call $std/math/check i32.eqz if i32.const 0 @@ -38262,8 +38520,10 @@ end f32.const 0 f32.const inf + call $~lib/math/NativeMathf.mod + f32.const 0 f32.const 0 - call $std/math/test_modf + call $std/math/check i32.eqz if i32.const 0 @@ -38275,8 +38535,10 @@ end f32.const 0 f32.const -inf + call $~lib/math/NativeMathf.mod + f32.const 0 f32.const 0 - call $std/math/test_modf + call $std/math/check i32.eqz if i32.const 0 @@ -38288,8 +38550,10 @@ end f32.const 0 f32.const nan:0x400000 + call $~lib/math/NativeMathf.mod f32.const nan:0x400000 - call $std/math/test_modf + f32.const 0 + call $std/math/check i32.eqz if i32.const 0 @@ -38301,8 +38565,10 @@ end f32.const -0 f32.const 0 + call $~lib/math/NativeMathf.mod f32.const nan:0x400000 - call $std/math/test_modf + f32.const 0 + call $std/math/check i32.eqz if i32.const 0 @@ -38314,8 +38580,10 @@ end f32.const -0 f32.const -0 + call $~lib/math/NativeMathf.mod f32.const nan:0x400000 - call $std/math/test_modf + f32.const 0 + call $std/math/check i32.eqz if i32.const 0 @@ -38327,8 +38595,10 @@ end f32.const -0 f32.const inf + call $~lib/math/NativeMathf.mod f32.const -0 - call $std/math/test_modf + f32.const 0 + call $std/math/check i32.eqz if i32.const 0 @@ -38340,8 +38610,10 @@ end f32.const -0 f32.const -inf + call $~lib/math/NativeMathf.mod f32.const -0 - call $std/math/test_modf + f32.const 0 + call $std/math/check i32.eqz if i32.const 0 @@ -38353,8 +38625,10 @@ end f32.const -0 f32.const nan:0x400000 + call $~lib/math/NativeMathf.mod f32.const nan:0x400000 - call $std/math/test_modf + f32.const 0 + call $std/math/check i32.eqz if i32.const 0 @@ -38366,8 +38640,10 @@ end f32.const 1 f32.const 0 + call $~lib/math/NativeMathf.mod f32.const nan:0x400000 - call $std/math/test_modf + f32.const 0 + call $std/math/check i32.eqz if i32.const 0 @@ -38379,8 +38655,10 @@ end f32.const -1 f32.const 0 + call $~lib/math/NativeMathf.mod f32.const nan:0x400000 - call $std/math/test_modf + f32.const 0 + call $std/math/check i32.eqz if i32.const 0 @@ -38392,8 +38670,10 @@ end f32.const inf f32.const 0 + call $~lib/math/NativeMathf.mod f32.const nan:0x400000 - call $std/math/test_modf + f32.const 0 + call $std/math/check i32.eqz if i32.const 0 @@ -38405,8 +38685,10 @@ end f32.const -inf f32.const 0 + call $~lib/math/NativeMathf.mod f32.const nan:0x400000 - call $std/math/test_modf + f32.const 0 + call $std/math/check i32.eqz if i32.const 0 @@ -38418,8 +38700,10 @@ end f32.const nan:0x400000 f32.const 0 + call $~lib/math/NativeMathf.mod f32.const nan:0x400000 - call $std/math/test_modf + f32.const 0 + call $std/math/check i32.eqz if i32.const 0 @@ -38431,8 +38715,10 @@ end f32.const -1 f32.const -0 + call $~lib/math/NativeMathf.mod f32.const nan:0x400000 - call $std/math/test_modf + f32.const 0 + call $std/math/check i32.eqz if i32.const 0 @@ -38444,8 +38730,10 @@ end f32.const inf f32.const -0 + call $~lib/math/NativeMathf.mod f32.const nan:0x400000 - call $std/math/test_modf + f32.const 0 + call $std/math/check i32.eqz if i32.const 0 @@ -38457,8 +38745,10 @@ end f32.const -inf f32.const -0 + call $~lib/math/NativeMathf.mod f32.const nan:0x400000 - call $std/math/test_modf + f32.const 0 + call $std/math/check i32.eqz if i32.const 0 @@ -38470,8 +38760,10 @@ end f32.const nan:0x400000 f32.const -0 + call $~lib/math/NativeMathf.mod f32.const nan:0x400000 - call $std/math/test_modf + f32.const 0 + call $std/math/check i32.eqz if i32.const 0 @@ -38483,8 +38775,10 @@ end f32.const inf f32.const 2 + call $~lib/math/NativeMathf.mod f32.const nan:0x400000 - call $std/math/test_modf + f32.const 0 + call $std/math/check i32.eqz if i32.const 0 @@ -38496,8 +38790,10 @@ end f32.const inf f32.const -0.5 + call $~lib/math/NativeMathf.mod f32.const nan:0x400000 - call $std/math/test_modf + f32.const 0 + call $std/math/check i32.eqz if i32.const 0 @@ -38509,8 +38805,10 @@ end f32.const inf f32.const nan:0x400000 + call $~lib/math/NativeMathf.mod f32.const nan:0x400000 - call $std/math/test_modf + f32.const 0 + call $std/math/check i32.eqz if i32.const 0 @@ -38522,8 +38820,10 @@ end f32.const -inf f32.const 2 + call $~lib/math/NativeMathf.mod f32.const nan:0x400000 - call $std/math/test_modf + f32.const 0 + call $std/math/check i32.eqz if i32.const 0 @@ -38535,8 +38835,10 @@ end f32.const -inf f32.const -0.5 + call $~lib/math/NativeMathf.mod f32.const nan:0x400000 - call $std/math/test_modf + f32.const 0 + call $std/math/check i32.eqz if i32.const 0 @@ -38548,8 +38850,10 @@ end f32.const -inf f32.const nan:0x400000 + call $~lib/math/NativeMathf.mod f32.const nan:0x400000 - call $std/math/test_modf + f32.const 0 + call $std/math/check i32.eqz if i32.const 0 @@ -38561,8 +38865,10 @@ end f32.const nan:0x400000 f32.const nan:0x400000 + call $~lib/math/NativeMathf.mod f32.const nan:0x400000 - call $std/math/test_modf + f32.const 0 + call $std/math/check i32.eqz if i32.const 0 @@ -38574,8 +38880,10 @@ end f32.const 1 f32.const nan:0x400000 + call $~lib/math/NativeMathf.mod f32.const nan:0x400000 - call $std/math/test_modf + f32.const 0 + call $std/math/check i32.eqz if i32.const 0 @@ -38587,8 +38895,10 @@ end f32.const -1 f32.const nan:0x400000 + call $~lib/math/NativeMathf.mod f32.const nan:0x400000 - call $std/math/test_modf + f32.const 0 + call $std/math/check i32.eqz if i32.const 0 @@ -38600,8 +38910,10 @@ end f32.const 1 f32.const inf + call $~lib/math/NativeMathf.mod f32.const 1 - call $std/math/test_modf + f32.const 0 + call $std/math/check i32.eqz if i32.const 0 @@ -38613,8 +38925,10 @@ end f32.const -1 f32.const inf + call $~lib/math/NativeMathf.mod f32.const -1 - call $std/math/test_modf + f32.const 0 + call $std/math/check i32.eqz if i32.const 0 @@ -38626,8 +38940,10 @@ end f32.const inf f32.const inf + call $~lib/math/NativeMathf.mod f32.const nan:0x400000 - call $std/math/test_modf + f32.const 0 + call $std/math/check i32.eqz if i32.const 0 @@ -38639,8 +38955,10 @@ end f32.const -inf f32.const inf + call $~lib/math/NativeMathf.mod f32.const nan:0x400000 - call $std/math/test_modf + f32.const 0 + call $std/math/check i32.eqz if i32.const 0 @@ -38652,8 +38970,10 @@ end f32.const 1 f32.const -inf + call $~lib/math/NativeMathf.mod f32.const 1 - call $std/math/test_modf + f32.const 0 + call $std/math/check i32.eqz if i32.const 0 @@ -38665,8 +38985,10 @@ end f32.const -1 f32.const -inf + call $~lib/math/NativeMathf.mod f32.const -1 - call $std/math/test_modf + f32.const 0 + call $std/math/check i32.eqz if i32.const 0 @@ -38678,8 +39000,10 @@ end f32.const inf f32.const -inf + call $~lib/math/NativeMathf.mod f32.const nan:0x400000 - call $std/math/test_modf + f32.const 0 + call $std/math/check i32.eqz if i32.const 0 @@ -38691,8 +39015,10 @@ end f32.const -inf f32.const -inf + call $~lib/math/NativeMathf.mod f32.const nan:0x400000 - call $std/math/test_modf + f32.const 0 + call $std/math/check i32.eqz if i32.const 0 @@ -38704,8 +39030,10 @@ end f32.const 1.75 f32.const 0.5 + call $~lib/math/NativeMathf.mod f32.const 0.25 - call $std/math/test_modf + f32.const 0 + call $std/math/check i32.eqz if i32.const 0 @@ -38717,8 +39045,10 @@ end f32.const -1.75 f32.const 0.5 + call $~lib/math/NativeMathf.mod f32.const -0.25 - call $std/math/test_modf + f32.const 0 + call $std/math/check i32.eqz if i32.const 0 @@ -38730,8 +39060,10 @@ end f32.const 1.75 f32.const -0.5 + call $~lib/math/NativeMathf.mod f32.const 0.25 - call $std/math/test_modf + f32.const 0 + call $std/math/check i32.eqz if i32.const 0 @@ -38743,8 +39075,10 @@ end f32.const -1.75 f32.const -0.5 + call $~lib/math/NativeMathf.mod f32.const -0.25 - call $std/math/test_modf + f32.const 0 + call $std/math/check i32.eqz if i32.const 0 diff --git a/tests/compiler/std/mod.optimized.wat b/tests/compiler/std/mod.optimized.wat index 7cc94f9d46..d668a29858 100644 --- a/tests/compiler/std/mod.optimized.wat +++ b/tests/compiler/std/mod.optimized.wat @@ -1,8 +1,9 @@ (module - (type $none_=>_none (func)) (type $f64_f64_=>_f64 (func (param f64 f64) (result f64))) + (type $none_=>_none (func)) (type $f64_f64_f64_=>_i32 (func (param f64 f64 f64) (result i32))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) + (type $f32_f32_=>_f32 (func (param f32 f32) (result f32))) (type $f32_f32_f32_=>_i32 (func (param f32 f32 f32) (result i32))) (import "mod" "mod" (func $std/mod/mod (param f64 f64) (result f64))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) @@ -12,217 +13,220 @@ (export "mod" (func $std/mod/mod)) (export "memory" (memory $0)) (start $~start) - (func $std/mod/test_fmod (param $0 f64) (param $1 f64) (param $2 f64) (result i32) + (func $~lib/math/NativeMath.mod (param $0 f64) (param $1 f64) (result f64) + (local $2 i64) (local $3 i64) - (local $4 f64) + (local $4 i64) (local $5 i64) (local $6 i64) (local $7 i64) (local $8 i64) - (local $9 i64) - (local $10 i64) - block $__inlined_func$std/mod/check (result i32) - block $__inlined_func$~lib/math/NativeMath.mod (result f64) - local.get $0 - local.get $0 - f64.trunc - f64.sub - local.get $0 - f64.copysign - local.get $1 - local.tee $4 - f64.abs - f64.const 1 - f64.eq - br_if $__inlined_func$~lib/math/NativeMath.mod - drop - local.get $4 - i64.reinterpret_f64 - local.tee $5 - i64.const 52 - i64.shr_u - i64.const 2047 - i64.and - local.set $7 - local.get $0 - i64.reinterpret_f64 - local.tee $3 - i64.const 63 - i64.shr_u - local.set $9 - i32.const 1 - local.get $4 + local.get $1 + f64.abs + f64.const 1 + f64.eq + if + local.get $0 + local.get $0 + f64.trunc + f64.sub + local.get $0 + f64.copysign + return + end + local.get $1 + i64.reinterpret_f64 + local.tee $3 + i64.const 52 + i64.shr_u + i64.const 2047 + i64.and + local.set $5 + local.get $0 + i64.reinterpret_f64 + local.tee $2 + i64.const 63 + i64.shr_u + local.set $7 + i32.const 1 + local.get $1 + local.get $1 + f64.ne + i32.const 1 + local.get $2 + i64.const 52 + i64.shr_u + i64.const 2047 + i64.and + local.tee $4 + i64.const 2047 + i64.eq + local.get $3 + i64.const 1 + i64.shl + local.tee $6 + i64.eqz + select + select + if + local.get $0 + local.get $1 + f64.mul + local.tee $0 + local.get $0 + f64.div + return + end + local.get $6 + local.get $2 + i64.const 1 + i64.shl + local.tee $8 + i64.ge_u + if + local.get $0 + local.get $6 + local.get $8 + i64.ne + f64.convert_i32_u + f64.mul + return + end + local.get $4 + i64.eqz + if (result i64) + local.get $2 + i64.const 1 + local.get $4 + local.get $2 + i64.const 12 + i64.shl + i64.clz + i64.sub + local.tee $4 + i64.sub + i64.shl + else + local.get $2 + i64.const 4503599627370495 + i64.and + i64.const 4503599627370496 + i64.or + end + local.set $2 + local.get $5 + i64.eqz + if (result i64) + local.get $3 + i64.const 1 + local.get $5 + local.get $3 + i64.const 12 + i64.shl + i64.clz + i64.sub + local.tee $5 + i64.sub + i64.shl + else + local.get $3 + i64.const 4503599627370495 + i64.and + i64.const 4503599627370496 + i64.or + end + local.set $3 + block $folding-inner0 + loop $while-continue|0 local.get $4 - f64.ne - i32.const 1 - local.get $3 - i64.const 52 - i64.shr_u - i64.const 2047 - i64.and - local.tee $6 - i64.const 2047 - i64.eq local.get $5 - i64.const 1 - i64.shl - local.tee $8 - i64.eqz - select - select - if - local.get $0 - local.get $4 - f64.mul - local.tee $1 - local.get $1 - f64.div - br $__inlined_func$~lib/math/NativeMath.mod - end - local.get $8 - local.get $3 - i64.const 1 - i64.shl - local.tee $10 - i64.ge_u + i64.gt_s if - local.get $0 - local.get $8 - local.get $10 - i64.ne - f64.convert_i32_u - f64.mul - br $__inlined_func$~lib/math/NativeMath.mod - end - local.get $6 - i64.eqz - if (result i64) - local.get $3 - i64.const 1 - local.get $6 - local.get $3 - i64.const 12 - i64.shl - i64.clz - i64.sub - local.tee $6 - i64.sub - i64.shl - else - local.get $3 - i64.const 4503599627370495 - i64.and - i64.const 4503599627370496 - i64.or - end - local.set $3 - local.get $7 - i64.eqz - if (result i64) - local.get $5 - i64.const 1 - local.get $7 - local.get $5 - i64.const 12 - i64.shl - i64.clz - i64.sub - local.tee $7 - i64.sub - i64.shl - else - local.get $5 - i64.const 4503599627370495 - i64.and - i64.const 4503599627370496 - i64.or - end - local.set $5 - block $folding-inner0 - loop $while-continue|0 - local.get $6 - local.get $7 - i64.gt_s - if - local.get $3 - local.get $5 - i64.ge_u - if (result i64) - local.get $3 - local.get $5 - i64.eq - br_if $folding-inner0 - local.get $3 - local.get $5 - i64.sub - else - local.get $3 - end - i64.const 1 - i64.shl - local.set $3 - local.get $6 - i64.const 1 - i64.sub - local.set $6 - br $while-continue|0 - end - end + local.get $2 local.get $3 - local.get $5 i64.ge_u - if + if (result i64) + local.get $2 local.get $3 - local.get $5 i64.eq br_if $folding-inner0 + local.get $2 local.get $3 - local.get $5 - i64.sub - local.set $3 - end - local.get $3 - local.get $3 - i64.const 11 - i64.shl - i64.clz - local.tee $5 - i64.shl - local.set $3 - local.get $6 - local.get $5 - i64.sub - local.tee $5 - i64.const 0 - i64.gt_s - if (result i64) - local.get $3 - i64.const 4503599627370496 i64.sub - local.get $5 - i64.const 52 - i64.shl - i64.or else - local.get $3 - i64.const 1 - local.get $5 - i64.sub - i64.shr_u + local.get $2 end - local.get $9 - i64.const 63 + i64.const 1 i64.shl - i64.or - f64.reinterpret_i64 - br $__inlined_func$~lib/math/NativeMath.mod + local.set $2 + local.get $4 + i64.const 1 + i64.sub + local.set $4 + br $while-continue|0 end - local.get $0 - f64.const 0 - f64.mul end - local.tee $1 + local.get $2 + local.get $3 + i64.ge_u + if + local.get $2 + local.get $3 + i64.eq + br_if $folding-inner0 + local.get $2 + local.get $3 + i64.sub + local.set $2 + end + local.get $2 + local.get $2 + i64.const 11 + i64.shl + i64.clz + local.tee $3 + i64.shl + local.set $2 + local.get $4 + local.get $3 + i64.sub + local.tee $4 + i64.const 0 + i64.gt_s + if (result i64) + local.get $2 + i64.const 4503599627370496 + i64.sub + local.get $4 + i64.const 52 + i64.shl + i64.or + else + local.get $2 + i64.const 1 + local.get $4 + i64.sub + i64.shr_u + end + local.get $7 + i64.const 63 + i64.shl + i64.or + f64.reinterpret_i64 + return + end + local.get $0 + f64.const 0 + f64.mul + ) + (func $std/mod/test_fmod (param $0 f64) (param $1 f64) (param $2 f64) (result i32) + (local $3 f64) + block $__inlined_func$std/mod/check (result i32) + local.get $0 local.get $1 + call $~lib/math/NativeMath.mod + local.tee $3 + local.get $3 f64.ne local.get $2 local.get $2 @@ -233,7 +237,7 @@ local.get $2 f64.div f64.const 1 - local.get $1 + local.get $3 f64.div f64.eq local.get $2 @@ -241,14 +245,14 @@ f64.eq br_if $__inlined_func$std/mod/check drop - local.get $1 local.get $2 + local.get $3 f64.eq end if (result i32) block $__inlined_func$std/mod/check0 (result i32) local.get $0 - local.get $4 + local.get $1 call $std/mod/mod local.tee $0 local.get $0 @@ -278,208 +282,212 @@ i32.const 0 end ) - (func $std/mod/test_fmodf (param $0 f32) (param $1 f32) (param $2 f32) (result i32) + (func $~lib/math/NativeMathf.mod (param $0 f32) (param $1 f32) (result f32) + (local $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) (local $6 i32) (local $7 i32) (local $8 i32) - (local $9 i32) - block $__inlined_func$std/mod/check (result i32) - block $__inlined_func$~lib/math/NativeMathf.mod (result f32) - local.get $0 - local.get $0 - f32.trunc - f32.sub - local.get $0 - f32.copysign - local.get $1 - f32.abs - f32.const 1 - f32.eq - br_if $__inlined_func$~lib/math/NativeMathf.mod - drop - local.get $1 - i32.reinterpret_f32 - local.tee $4 - i32.const 23 - i32.shr_u - i32.const 255 - i32.and - local.set $6 - local.get $0 - i32.reinterpret_f32 - local.tee $3 - i32.const -2147483648 - i32.and - local.set $8 - i32.const 1 - local.get $1 - local.get $1 - f32.ne - local.get $3 - i32.const 23 - i32.shr_u - i32.const 255 - i32.and - local.tee $5 - i32.const 255 - i32.eq - i32.const 1 + local.get $1 + f32.abs + f32.const 1 + f32.eq + if + local.get $0 + local.get $0 + f32.trunc + f32.sub + local.get $0 + f32.copysign + return + end + local.get $1 + i32.reinterpret_f32 + local.tee $3 + i32.const 23 + i32.shr_u + i32.const 255 + i32.and + local.set $5 + local.get $0 + i32.reinterpret_f32 + local.tee $2 + i32.const -2147483648 + i32.and + local.set $7 + i32.const 1 + local.get $1 + local.get $1 + f32.ne + local.get $2 + i32.const 23 + i32.shr_u + i32.const 255 + i32.and + local.tee $4 + i32.const 255 + i32.eq + i32.const 1 + local.get $3 + i32.const 1 + i32.shl + local.tee $6 + select + select + if + local.get $0 + local.get $1 + f32.mul + local.tee $0 + local.get $0 + f32.div + return + end + local.get $6 + local.get $2 + i32.const 1 + i32.shl + local.tee $8 + i32.ge_u + if + local.get $0 + local.get $6 + local.get $8 + i32.ne + f32.convert_i32_u + f32.mul + return + end + local.get $4 + if (result i32) + local.get $2 + i32.const 8388607 + i32.and + i32.const 8388608 + i32.or + else + local.get $2 + i32.const 1 + local.get $4 + local.get $2 + i32.const 9 + i32.shl + i32.clz + i32.sub + local.tee $4 + i32.sub + i32.shl + end + local.set $2 + local.get $5 + if (result i32) + local.get $3 + i32.const 8388607 + i32.and + i32.const 8388608 + i32.or + else + local.get $3 + i32.const 1 + local.get $5 + local.get $3 + i32.const 9 + i32.shl + i32.clz + i32.sub + local.tee $5 + i32.sub + i32.shl + end + local.set $3 + block $folding-inner0 + loop $while-continue|0 local.get $4 - i32.const 1 - i32.shl - local.tee $7 - select - select - if - local.get $0 - local.get $1 - f32.mul - local.tee $0 - local.get $0 - f32.div - br $__inlined_func$~lib/math/NativeMathf.mod - end - local.get $7 - local.get $3 - i32.const 1 - i32.shl - local.tee $9 - i32.ge_u - if - local.get $0 - local.get $7 - local.get $9 - i32.ne - f32.convert_i32_u - f32.mul - br $__inlined_func$~lib/math/NativeMathf.mod - end local.get $5 - if (result i32) - local.get $3 - i32.const 8388607 - i32.and - i32.const 8388608 - i32.or - else - local.get $3 - i32.const 1 - local.get $5 - local.get $3 - i32.const 9 - i32.shl - i32.clz - i32.sub - local.tee $5 - i32.sub - i32.shl - end - local.set $3 - local.get $6 - if (result i32) - local.get $4 - i32.const 8388607 - i32.and - i32.const 8388608 - i32.or - else - local.get $4 - i32.const 1 - local.get $6 - local.get $4 - i32.const 9 - i32.shl - i32.clz - i32.sub - local.tee $6 - i32.sub - i32.shl - end - local.set $4 - block $folding-inner0 - loop $while-continue|0 - local.get $5 - local.get $6 - i32.gt_s - if - local.get $3 - local.get $4 - i32.ge_u - if (result i32) - local.get $3 - local.get $4 - i32.eq - br_if $folding-inner0 - local.get $3 - local.get $4 - i32.sub - else - local.get $3 - end - i32.const 1 - i32.shl - local.set $3 - local.get $5 - i32.const 1 - i32.sub - local.set $5 - br $while-continue|0 - end - end + i32.gt_s + if + local.get $2 local.get $3 - local.get $4 i32.ge_u - if + if (result i32) + local.get $2 local.get $3 - local.get $4 i32.eq br_if $folding-inner0 + local.get $2 local.get $3 - local.get $4 i32.sub - local.set $3 + else + local.get $2 end - local.get $3 - local.get $3 - i32.const 8 - i32.shl - i32.clz - local.tee $4 + i32.const 1 i32.shl - local.set $3 - local.get $5 + local.set $2 local.get $4 + i32.const 1 i32.sub - local.tee $4 - i32.const 0 - i32.gt_s - if (result i32) - local.get $3 - i32.const 8388608 - i32.sub - local.get $4 - i32.const 23 - i32.shl - i32.or - else - local.get $3 - i32.const 1 - local.get $4 - i32.sub - i32.shr_u - end - local.get $8 - i32.or - f32.reinterpret_i32 - br $__inlined_func$~lib/math/NativeMathf.mod + local.set $4 + br $while-continue|0 end - local.get $0 - f32.const 0 - f32.mul end + local.get $2 + local.get $3 + i32.ge_u + if + local.get $2 + local.get $3 + i32.eq + br_if $folding-inner0 + local.get $2 + local.get $3 + i32.sub + local.set $2 + end + local.get $2 + local.get $2 + i32.const 8 + i32.shl + i32.clz + local.tee $3 + i32.shl + local.set $2 + local.get $4 + local.get $3 + i32.sub + local.tee $4 + i32.const 0 + i32.gt_s + if (result i32) + local.get $2 + i32.const 8388608 + i32.sub + local.get $4 + i32.const 23 + i32.shl + i32.or + else + local.get $2 + i32.const 1 + local.get $4 + i32.sub + i32.shr_u + end + local.get $7 + i32.or + f32.reinterpret_i32 + return + end + local.get $0 + f32.const 0 + f32.mul + ) + (func $std/mod/test_fmodf (param $0 f32) (param $1 f32) (param $2 f32) (result i32) + block $__inlined_func$std/mod/check (result i32) + local.get $0 + local.get $1 + call $~lib/math/NativeMathf.mod local.tee $0 local.get $0 f32.ne diff --git a/tests/compiler/std/new.optimized.wat b/tests/compiler/std/new.optimized.wat index 564f94918e..2a41620cbe 100644 --- a/tests/compiler/std/new.optimized.wat +++ b/tests/compiler/std/new.optimized.wat @@ -1032,7 +1032,7 @@ local.get $0 i32.const 4 i32.add - local.tee $0 + local.tee $1 i32.const 17860 i32.ge_u if @@ -1042,20 +1042,20 @@ call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT - local.get $0 + local.get $1 i32.const 4 i32.sub - local.set $1 - local.get $0 + local.set $0 + local.get $1 i32.const 15 i32.and i32.const 1 - local.get $0 + local.get $1 select if (result i32) i32.const 1 else - local.get $1 + local.get $0 i32.load i32.const 1 i32.and @@ -1068,14 +1068,11 @@ call $~lib/builtins/abort unreachable end - local.get $1 - local.tee $0 + local.get $0 + local.get $0 i32.load i32.const 1 i32.or - local.set $1 - local.get $0 - local.get $1 i32.store local.get $0 call $~lib/rt/tlsf/insertBlock @@ -1088,8 +1085,7 @@ local.tee $0 local.get $0 i32.store offset=4 - global.get $~lib/rt/itcms/toSpace - local.tee $0 + local.get $0 local.get $0 i32.store offset=8 i32.const 0 diff --git a/tests/compiler/std/object.optimized.wat b/tests/compiler/std/object.optimized.wat index 14c652d58d..ffd1f42363 100644 --- a/tests/compiler/std/object.optimized.wat +++ b/tests/compiler/std/object.optimized.wat @@ -43,7 +43,7 @@ i32.load offset=16 i32.const 1 i32.shr_u - local.tee $4 + local.tee $2 local.get $1 i32.const 20 i32.sub @@ -57,18 +57,15 @@ end block $__inlined_func$~lib/util/string/compareImpl (result i32) local.get $0 - local.set $2 - local.get $1 - local.set $3 - local.get $2 + local.tee $3 i32.const 7 i32.and - local.get $3 + local.get $1 i32.const 7 i32.and i32.or i32.const 1 - local.get $4 + local.get $2 local.tee $0 i32.const 4 i32.ge_u @@ -76,20 +73,20 @@ i32.eqz if loop $do-continue|0 - local.get $2 - i64.load local.get $3 i64.load + local.get $1 + i64.load i64.eq if - local.get $2 - i32.const 8 - i32.add - local.set $2 local.get $3 i32.const 8 i32.add local.set $3 + local.get $1 + i32.const 8 + i32.add + local.set $1 local.get $0 i32.const 4 i32.sub @@ -102,33 +99,33 @@ end loop $while-continue|1 local.get $0 - local.tee $1 + local.tee $2 i32.const 1 i32.sub local.set $0 - local.get $1 + local.get $2 if - local.get $2 - i32.load16_u - local.tee $1 local.get $3 i32.load16_u + local.tee $2 + local.get $1 + i32.load16_u local.tee $4 i32.ne if - local.get $1 + local.get $2 local.get $4 i32.sub br $__inlined_func$~lib/util/string/compareImpl end - local.get $2 - i32.const 2 - i32.add - local.set $2 local.get $3 i32.const 2 i32.add local.set $3 + local.get $1 + i32.const 2 + i32.add + local.set $1 br $while-continue|1 end end diff --git a/tests/compiler/std/operator-overloading.optimized.wat b/tests/compiler/std/operator-overloading.optimized.wat index 099c5f590d..22b9c2b224 100644 --- a/tests/compiler/std/operator-overloading.optimized.wat +++ b/tests/compiler/std/operator-overloading.optimized.wat @@ -1091,7 +1091,7 @@ local.get $0 i32.const 4 i32.add - local.tee $0 + local.tee $1 i32.const 17956 i32.ge_u if @@ -1101,20 +1101,20 @@ call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT - local.get $0 + local.get $1 i32.const 4 i32.sub - local.set $1 - local.get $0 + local.set $0 + local.get $1 i32.const 15 i32.and i32.const 1 - local.get $0 + local.get $1 select if (result i32) i32.const 1 else - local.get $1 + local.get $0 i32.load i32.const 1 i32.and @@ -1127,14 +1127,11 @@ call $~lib/builtins/abort unreachable end - local.get $1 - local.tee $0 + local.get $0 + local.get $0 i32.load i32.const 1 i32.or - local.set $1 - local.get $0 - local.get $1 i32.store local.get $0 call $~lib/rt/tlsf/insertBlock @@ -1147,8 +1144,7 @@ local.tee $0 local.get $0 i32.store offset=4 - global.get $~lib/rt/itcms/toSpace - local.tee $0 + local.get $0 local.get $0 i32.store offset=8 i32.const 0 diff --git a/tests/compiler/std/pointer.optimized.wat b/tests/compiler/std/pointer.optimized.wat index f20ac84049..3d9310a38d 100644 --- a/tests/compiler/std/pointer.optimized.wat +++ b/tests/compiler/std/pointer.optimized.wat @@ -1,7 +1,7 @@ (module + (type $i32_i32_=>_none (func (param i32 i32))) (type $none_=>_none (func)) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) - (type $i32_i32_=>_none (func (param i32 i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (global $std/pointer/one (mut i32) (i32.const 0)) (global $std/pointer/two (mut i32) (i32.const 0)) @@ -773,12 +773,196 @@ i32.store8 end ) - (func $start:std/pointer - (local $0 i32) - (local $1 i32) + (func $~lib/memory/memory.copy (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) + block $~lib/util/memory/memmove|inlined.0 + i32.const 8 + local.set $4 + local.get $0 + local.get $1 + i32.eq + br_if $~lib/util/memory/memmove|inlined.0 + local.get $1 + local.get $0 + i32.sub + i32.const 8 + i32.sub + i32.const -16 + i32.le_u + if + local.get $0 + local.get $1 + call $~lib/util/memory/memcpy + br $~lib/util/memory/memmove|inlined.0 + end + local.get $0 + local.get $1 + i32.lt_u + if + local.get $1 + i32.const 7 + i32.and + local.get $0 + i32.const 7 + i32.and + i32.eq + if + loop $while-continue|0 + local.get $0 + i32.const 7 + i32.and + if + local.get $4 + i32.eqz + br_if $~lib/util/memory/memmove|inlined.0 + local.get $4 + i32.const 1 + i32.sub + local.set $4 + local.get $0 + local.tee $2 + i32.const 1 + i32.add + local.set $0 + local.get $1 + local.tee $3 + i32.const 1 + i32.add + local.set $1 + local.get $2 + local.get $3 + i32.load8_u + i32.store8 + br $while-continue|0 + end + end + loop $while-continue|1 + local.get $4 + i32.const 8 + i32.ge_u + if + local.get $0 + local.get $1 + i64.load + i64.store + local.get $4 + i32.const 8 + i32.sub + local.set $4 + local.get $0 + i32.const 8 + i32.add + local.set $0 + local.get $1 + i32.const 8 + i32.add + local.set $1 + br $while-continue|1 + end + end + end + loop $while-continue|2 + local.get $4 + if + local.get $0 + local.tee $2 + i32.const 1 + i32.add + local.set $0 + local.get $1 + local.tee $3 + i32.const 1 + i32.add + local.set $1 + local.get $2 + local.get $3 + i32.load8_u + i32.store8 + local.get $4 + i32.const 1 + i32.sub + local.set $4 + br $while-continue|2 + end + end + else + local.get $1 + i32.const 7 + i32.and + local.get $0 + i32.const 7 + i32.and + i32.eq + if + loop $while-continue|3 + local.get $0 + local.get $4 + i32.add + i32.const 7 + i32.and + if + local.get $4 + i32.eqz + br_if $~lib/util/memory/memmove|inlined.0 + local.get $0 + local.get $4 + i32.const 1 + i32.sub + local.tee $4 + i32.add + local.get $1 + local.get $4 + i32.add + i32.load8_u + i32.store8 + br $while-continue|3 + end + end + loop $while-continue|4 + local.get $4 + i32.const 8 + i32.ge_u + if + local.get $0 + local.get $4 + i32.const 8 + i32.sub + local.tee $4 + i32.add + local.get $1 + local.get $4 + i32.add + i64.load + i64.store + br $while-continue|4 + end + end + end + loop $while-continue|5 + local.get $4 + if + local.get $0 + local.get $4 + i32.const 1 + i32.sub + local.tee $4 + i32.add + local.get $1 + local.get $4 + i32.add + i32.load8_u + i32.store8 + br $while-continue|5 + end + end + end + end + ) + (func $start:std/pointer + (local $0 i32) + (local $1 i32) i32.const 8 global.set $std/pointer/one i32.const 24 @@ -938,224 +1122,45 @@ unreachable end global.get $std/pointer/one - local.set $1 + local.set $0 global.get $std/pointer/two - local.tee $0 + local.tee $1 if - block $~lib/util/memory/memmove|inlined.0 - i32.const 8 - local.set $4 - local.get $0 - local.get $1 - i32.eq - br_if $~lib/util/memory/memmove|inlined.0 - local.get $0 - local.get $1 - i32.sub - i32.const 8 - i32.sub - i32.const -16 - i32.le_u - if - local.get $1 - local.get $0 - call $~lib/util/memory/memcpy - br $~lib/util/memory/memmove|inlined.0 - end - local.get $0 - local.get $1 - i32.gt_u - if - local.get $0 - i32.const 7 - i32.and - local.get $1 - i32.const 7 - i32.and - i32.eq - if - loop $while-continue|0 - local.get $1 - i32.const 7 - i32.and - if - local.get $4 - i32.eqz - br_if $~lib/util/memory/memmove|inlined.0 - local.get $4 - i32.const 1 - i32.sub - local.set $4 - local.get $1 - local.tee $2 - i32.const 1 - i32.add - local.set $1 - local.get $0 - local.tee $3 - i32.const 1 - i32.add - local.set $0 - local.get $2 - local.get $3 - i32.load8_u - i32.store8 - br $while-continue|0 - end - end - loop $while-continue|1 - local.get $4 - i32.const 8 - i32.ge_u - if - local.get $1 - local.get $0 - i64.load - i64.store - local.get $4 - i32.const 8 - i32.sub - local.set $4 - local.get $1 - i32.const 8 - i32.add - local.set $1 - local.get $0 - i32.const 8 - i32.add - local.set $0 - br $while-continue|1 - end - end - end - loop $while-continue|2 - local.get $4 - if - local.get $1 - local.tee $2 - i32.const 1 - i32.add - local.set $1 - local.get $0 - local.tee $3 - i32.const 1 - i32.add - local.set $0 - local.get $2 - local.get $3 - i32.load8_u - i32.store8 - local.get $4 - i32.const 1 - i32.sub - local.set $4 - br $while-continue|2 - end - end - else - local.get $0 - i32.const 7 - i32.and - local.get $1 - i32.const 7 - i32.and - i32.eq - if - loop $while-continue|3 - local.get $1 - local.get $4 - i32.add - i32.const 7 - i32.and - if - local.get $4 - i32.eqz - br_if $~lib/util/memory/memmove|inlined.0 - local.get $1 - local.get $4 - i32.const 1 - i32.sub - local.tee $4 - i32.add - local.get $0 - local.get $4 - i32.add - i32.load8_u - i32.store8 - br $while-continue|3 - end - end - loop $while-continue|4 - local.get $4 - i32.const 8 - i32.ge_u - if - local.get $1 - local.get $4 - i32.const 8 - i32.sub - local.tee $4 - i32.add - local.get $0 - local.get $4 - i32.add - i64.load - i64.store - br $while-continue|4 - end - end - end - loop $while-continue|5 - local.get $4 - if - local.get $1 - local.get $4 - i32.const 1 - i32.sub - local.tee $4 - i32.add - local.get $0 - local.get $4 - i32.add - i32.load8_u - i32.store8 - br $while-continue|5 - end - end - end - end - else + local.get $0 local.get $1 + call $~lib/memory/memory.copy + else + local.get $0 i32.const 0 i32.store8 - local.get $1 + local.get $0 i32.const 8 i32.add - local.tee $0 + local.tee $1 i32.const 1 i32.sub i32.const 0 i32.store8 - local.get $1 + local.get $0 i32.const 0 i32.store8 offset=1 - local.get $1 + local.get $0 i32.const 0 i32.store8 offset=2 - local.get $0 + local.get $1 i32.const 2 i32.sub i32.const 0 i32.store8 - local.get $0 + local.get $1 i32.const 3 i32.sub i32.const 0 i32.store8 - local.get $1 + local.get $0 i32.const 0 i32.store8 offset=3 - local.get $0 + local.get $1 i32.const 4 i32.sub i32.const 0 @@ -1277,12 +1282,12 @@ unreachable end global.get $std/pointer/buf - local.tee $3 + local.tee $0 i32.const 8 i32.add f32.const 1.2999999523162842 f32.store - local.get $3 + local.get $0 f32.load offset=8 f32.const 1.2999999523162842 f32.ne diff --git a/tests/compiler/std/set.optimized.wat b/tests/compiler/std/set.optimized.wat index a995ee1b72..828ab9b28f 100644 --- a/tests/compiler/std/set.optimized.wat +++ b/tests/compiler/std/set.optimized.wat @@ -3,8 +3,8 @@ (type $none_=>_none (func)) (type $none_=>_i32 (func (result i32))) (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) - (type $i32_=>_none (func (param i32))) (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) + (type $i32_=>_none (func (param i32))) (type $i32_i64_=>_none (func (param i32 i64))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) (type $i32_i64_=>_i32 (func (param i32 i64) (result i32))) @@ -1049,7 +1049,7 @@ local.get $0 i32.const 4 i32.add - local.tee $0 + local.tee $1 i32.const 18220 i32.ge_u if @@ -1059,20 +1059,20 @@ call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT - local.get $0 + local.get $1 i32.const 4 i32.sub - local.set $1 - local.get $0 + local.set $0 + local.get $1 i32.const 15 i32.and i32.const 1 - local.get $0 + local.get $1 select if (result i32) i32.const 1 else - local.get $1 + local.get $0 i32.load i32.const 1 i32.and @@ -1085,14 +1085,11 @@ call $~lib/builtins/abort unreachable end - local.get $1 - local.tee $0 + local.get $0 + local.get $0 i32.load i32.const 1 i32.or - local.set $1 - local.get $0 - local.get $1 i32.store local.get $0 call $~lib/rt/tlsf/insertBlock @@ -1105,8 +1102,7 @@ local.tee $0 local.get $0 i32.store offset=4 - global.get $~lib/rt/itcms/toSpace - local.tee $0 + local.get $0 local.get $0 i32.store offset=8 i32.const 0 @@ -1246,6 +1242,210 @@ end end ) + (func $~lib/rt/tlsf/allocateBlock (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + local.get $1 + i32.const 1073741820 + i32.gt_u + if + i32.const 1056 + i32.const 1392 + i32.const 458 + i32.const 29 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.tee $2 + local.get $1 + i32.const 12 + i32.le_u + if (result i32) + i32.const 12 + else + local.get $1 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + end + local.tee $0 + call $~lib/rt/tlsf/searchBlock + local.tee $1 + i32.eqz + if + local.get $0 + i32.const 536870910 + i32.lt_u + if (result i32) + local.get $0 + i32.const 1 + i32.const 27 + local.get $0 + i32.clz + i32.sub + i32.shl + i32.const 1 + i32.sub + i32.add + else + local.get $0 + end + i32.const 4 + memory.size + local.tee $1 + i32.const 16 + i32.shl + i32.const 4 + i32.sub + local.get $2 + i32.load offset=1568 + i32.ne + i32.shl + i32.add + i32.const 65535 + i32.add + i32.const -65536 + i32.and + i32.const 16 + i32.shr_u + local.set $3 + local.get $1 + local.get $3 + local.get $1 + local.get $3 + i32.gt_s + select + memory.grow + i32.const 0 + i32.lt_s + if + local.get $3 + memory.grow + i32.const 0 + i32.lt_s + if + unreachable + end + end + local.get $2 + local.get $1 + i32.const 16 + i32.shl + memory.size + i32.const 16 + i32.shl + call $~lib/rt/tlsf/addMemory + local.get $2 + local.get $0 + call $~lib/rt/tlsf/searchBlock + local.tee $1 + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 496 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + end + local.get $0 + local.get $1 + i32.load + i32.const -4 + i32.and + i32.gt_u + if + i32.const 0 + i32.const 1392 + i32.const 498 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.get $1 + call $~lib/rt/tlsf/removeBlock + local.get $1 + i32.load + local.set $3 + local.get $0 + i32.const 4 + i32.add + i32.const 15 + i32.and + if + i32.const 0 + i32.const 1392 + i32.const 357 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const -4 + i32.and + local.get $0 + i32.sub + local.tee $4 + i32.const 16 + i32.ge_u + if + local.get $1 + local.get $0 + local.get $3 + i32.const 2 + i32.and + i32.or + i32.store + local.get $0 + local.get $1 + i32.const 4 + i32.add + i32.add + local.tee $0 + local.get $4 + i32.const 4 + i32.sub + i32.const 1 + i32.or + i32.store + local.get $2 + local.get $0 + call $~lib/rt/tlsf/insertBlock + else + local.get $1 + local.get $3 + i32.const -2 + i32.and + i32.store + local.get $1 + i32.const 4 + i32.add + local.tee $0 + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.get $0 + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + i32.load + i32.const -3 + i32.and + i32.store + end + local.get $1 + ) (func $~lib/memory/memory.fill (param $0 i32) (param $1 i32) (local $2 i32) block $~lib/util/memory/memset|inlined.0 @@ -1425,9 +1625,6 @@ (func $~lib/rt/itcms/__new (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) local.get $0 i32.const 1073741804 i32.ge_u @@ -1445,12 +1642,12 @@ if block $__inlined_func$~lib/rt/itcms/interrupt i32.const 2048 - local.set $3 + local.set $2 loop $do-continue|0 - local.get $3 + local.get $2 call $~lib/rt/itcms/step i32.sub - local.set $3 + local.set $2 global.get $~lib/rt/itcms/state i32.eqz if @@ -1466,14 +1663,14 @@ global.set $~lib/rt/itcms/threshold br $__inlined_func$~lib/rt/itcms/interrupt end - local.get $3 + local.get $2 i32.const 0 i32.gt_s br_if $do-continue|0 end global.get $~lib/rt/itcms/total - local.tee $3 - local.get $3 + local.tee $2 + local.get $2 global.get $~lib/rt/itcms/threshold i32.sub i32.const 1024 @@ -1487,230 +1684,35 @@ local.get $0 i32.const 16 i32.add - local.set $6 + local.set $2 global.get $~lib/rt/tlsf/ROOT i32.eqz if call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT - local.get $6 - i32.const 1073741820 - i32.gt_u - if - i32.const 1056 - i32.const 1392 - i32.const 458 - i32.const 29 - call $~lib/builtins/abort - unreachable - end + local.get $2 + call $~lib/rt/tlsf/allocateBlock local.tee $2 - local.get $6 - i32.const 12 - i32.le_u - if (result i32) - i32.const 12 - else - local.get $6 - i32.const 19 - i32.add - i32.const -16 - i32.and - i32.const 4 - i32.sub - end - local.tee $3 - call $~lib/rt/tlsf/searchBlock - local.tee $6 - i32.eqz - if - local.get $3 - i32.const 536870910 - i32.lt_u - if (result i32) - local.get $3 - i32.const 1 - i32.const 27 - local.get $3 - i32.clz - i32.sub - i32.shl - i32.const 1 - i32.sub - i32.add - else - local.get $3 - end - i32.const 4 - memory.size - local.tee $6 - i32.const 16 - i32.shl - i32.const 4 - i32.sub - local.get $2 - i32.load offset=1568 - i32.ne - i32.shl - i32.add - i32.const 65535 - i32.add - i32.const -65536 - i32.and - i32.const 16 - i32.shr_u - local.set $5 - local.get $6 - local.get $5 - local.get $5 - local.get $6 - i32.lt_s - select - memory.grow - i32.const 0 - i32.lt_s - if - local.get $5 - memory.grow - i32.const 0 - i32.lt_s - if - unreachable - end - end - local.get $2 - local.get $6 - i32.const 16 - i32.shl - memory.size - i32.const 16 - i32.shl - call $~lib/rt/tlsf/addMemory - local.get $2 - local.get $3 - call $~lib/rt/tlsf/searchBlock - local.tee $6 - i32.eqz - if - i32.const 0 - i32.const 1392 - i32.const 496 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - end - local.get $3 - local.get $6 - i32.load - i32.const -4 - i32.and - i32.gt_u - if - i32.const 0 - i32.const 1392 - i32.const 498 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $2 - local.get $6 - call $~lib/rt/tlsf/removeBlock - local.get $6 - i32.load - local.set $5 - local.get $3 - i32.const 4 - i32.add - i32.const 15 - i32.and - if - i32.const 0 - i32.const 1392 - i32.const 357 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $5 - i32.const -4 - i32.and - local.get $3 - i32.sub - local.tee $4 - i32.const 16 - i32.ge_u - if - local.get $6 - local.get $3 - local.get $5 - i32.const 2 - i32.and - i32.or - i32.store - local.get $3 - local.get $6 - i32.const 4 - i32.add - i32.add - local.tee $3 - local.get $4 - i32.const 4 - i32.sub - i32.const 1 - i32.or - i32.store - local.get $2 - local.get $3 - call $~lib/rt/tlsf/insertBlock - else - local.get $6 - local.get $5 - i32.const -2 - i32.and - i32.store - local.get $6 - i32.const 4 - i32.add - local.tee $3 - local.get $6 - i32.load - i32.const -4 - i32.and - i32.add - local.get $3 - local.get $6 - i32.load - i32.const -4 - i32.and - i32.add - i32.load - i32.const -3 - i32.and - i32.store - end - local.get $6 local.get $1 i32.store offset=12 - local.get $6 + local.get $2 local.get $0 i32.store offset=16 global.get $~lib/rt/itcms/fromSpace local.tee $3 i32.load offset=8 local.set $1 - local.get $6 + local.get $2 local.get $3 global.get $~lib/rt/itcms/white i32.or i32.store offset=4 - local.get $6 + local.get $2 local.get $1 i32.store offset=8 local.get $1 - local.get $6 + local.get $2 local.get $1 i32.load offset=4 i32.const 3 @@ -1718,10 +1720,10 @@ i32.or i32.store offset=4 local.get $3 - local.get $6 + local.get $2 i32.store offset=8 global.get $~lib/rt/itcms/total - local.get $6 + local.get $2 i32.load i32.const -4 i32.and @@ -1729,7 +1731,7 @@ i32.add i32.add global.set $~lib/rt/itcms/total - local.get $6 + local.get $2 i32.const 20 i32.add local.tee $1 @@ -2851,17 +2853,205 @@ i32.store8 end ) + (func $~lib/memory/memory.copy (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + (local $4 i32) + block $~lib/util/memory/memmove|inlined.0 + local.get $2 + local.set $4 + local.get $0 + local.get $1 + i32.eq + br_if $~lib/util/memory/memmove|inlined.0 + local.get $1 + local.get $0 + i32.sub + local.get $4 + i32.sub + i32.const 0 + local.get $4 + i32.const 1 + i32.shl + i32.sub + i32.le_u + if + local.get $0 + local.get $1 + local.get $4 + call $~lib/util/memory/memcpy + br $~lib/util/memory/memmove|inlined.0 + end + local.get $0 + local.get $1 + i32.lt_u + if + local.get $1 + i32.const 7 + i32.and + local.get $0 + i32.const 7 + i32.and + i32.eq + if + loop $while-continue|0 + local.get $0 + i32.const 7 + i32.and + if + local.get $4 + i32.eqz + br_if $~lib/util/memory/memmove|inlined.0 + local.get $4 + i32.const 1 + i32.sub + local.set $4 + local.get $0 + local.tee $2 + i32.const 1 + i32.add + local.set $0 + local.get $1 + local.tee $3 + i32.const 1 + i32.add + local.set $1 + local.get $2 + local.get $3 + i32.load8_u + i32.store8 + br $while-continue|0 + end + end + loop $while-continue|1 + local.get $4 + i32.const 8 + i32.ge_u + if + local.get $0 + local.get $1 + i64.load + i64.store + local.get $4 + i32.const 8 + i32.sub + local.set $4 + local.get $0 + i32.const 8 + i32.add + local.set $0 + local.get $1 + i32.const 8 + i32.add + local.set $1 + br $while-continue|1 + end + end + end + loop $while-continue|2 + local.get $4 + if + local.get $0 + local.tee $2 + i32.const 1 + i32.add + local.set $0 + local.get $1 + local.tee $3 + i32.const 1 + i32.add + local.set $1 + local.get $2 + local.get $3 + i32.load8_u + i32.store8 + local.get $4 + i32.const 1 + i32.sub + local.set $4 + br $while-continue|2 + end + end + else + local.get $1 + i32.const 7 + i32.and + local.get $0 + i32.const 7 + i32.and + i32.eq + if + loop $while-continue|3 + local.get $0 + local.get $4 + i32.add + i32.const 7 + i32.and + if + local.get $4 + i32.eqz + br_if $~lib/util/memory/memmove|inlined.0 + local.get $4 + i32.const 1 + i32.sub + local.tee $4 + local.get $0 + i32.add + local.get $1 + local.get $4 + i32.add + i32.load8_u + i32.store8 + br $while-continue|3 + end + end + loop $while-continue|4 + local.get $4 + i32.const 8 + i32.ge_u + if + local.get $4 + i32.const 8 + i32.sub + local.tee $4 + local.get $0 + i32.add + local.get $1 + local.get $4 + i32.add + i64.load + i64.store + br $while-continue|4 + end + end + end + loop $while-continue|5 + local.get $4 + if + local.get $4 + i32.const 1 + i32.sub + local.tee $4 + local.get $0 + i32.add + local.get $1 + local.get $4 + i32.add + i32.load8_u + i32.store8 + br $while-continue|5 + end + end + end + end + ) (func $~lib/array/ensureCapacity (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (local $4 i32) (local $5 i32) (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) local.get $1 local.get $0 i32.load offset=8 - local.tee $9 + local.tee $5 local.get $2 i32.shr_u i32.gt_u @@ -2881,7 +3071,7 @@ end local.get $0 i32.load - local.set $7 + local.set $4 local.get $1 i32.const 8 local.get $1 @@ -2890,11 +3080,11 @@ select local.get $2 i32.shl - local.set $6 - block $__inlined_func$~lib/rt/itcms/__renew + local.set $2 + block $__inlined_func$~lib/rt/itcms/__renew (result i32) local.get $3 if - local.get $9 + local.get $5 i32.const 1 i32.shl local.tee $1 @@ -2904,19 +3094,19 @@ i32.lt_u select local.tee $1 - local.get $6 + local.get $2 local.get $1 - local.get $6 + local.get $2 i32.gt_u select - local.set $6 + local.set $2 end - local.get $6 - local.get $7 + local.get $2 + local.get $4 local.tee $1 i32.const 20 i32.sub - local.tee $2 + local.tee $6 i32.load i32.const -4 i32.and @@ -2924,223 +3114,38 @@ i32.sub i32.le_u if - local.get $2 local.get $6 + local.get $2 i32.store offset=16 + local.get $1 br $__inlined_func$~lib/rt/itcms/__renew end - local.get $6 local.get $2 + local.get $6 i32.load offset=12 call $~lib/rt/itcms/__new - local.set $3 - local.get $6 + local.tee $3 + local.get $1 local.get $2 + local.get $6 i32.load offset=16 - local.tee $2 + local.tee $1 + local.get $1 local.get $2 - local.get $6 i32.gt_u select - local.set $8 - block $~lib/util/memory/memmove|inlined.0 - local.get $3 - local.tee $2 - local.get $1 - i32.eq - br_if $~lib/util/memory/memmove|inlined.0 - local.get $1 - local.get $2 - i32.sub - local.get $8 - i32.sub - i32.const 0 - local.get $8 - i32.const 1 - i32.shl - i32.sub - i32.le_u - if - local.get $2 - local.get $1 - local.get $8 - call $~lib/util/memory/memcpy - br $~lib/util/memory/memmove|inlined.0 - end - local.get $1 - local.get $2 - i32.gt_u - if - local.get $1 - i32.const 7 - i32.and - local.get $2 - i32.const 7 - i32.and - i32.eq - if - loop $while-continue|0 - local.get $2 - i32.const 7 - i32.and - if - local.get $8 - i32.eqz - br_if $~lib/util/memory/memmove|inlined.0 - local.get $8 - i32.const 1 - i32.sub - local.set $8 - local.get $2 - local.tee $4 - i32.const 1 - i32.add - local.set $2 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $4 - local.get $5 - i32.load8_u - i32.store8 - br $while-continue|0 - end - end - loop $while-continue|1 - local.get $8 - i32.const 8 - i32.ge_u - if - local.get $2 - local.get $1 - i64.load - i64.store - local.get $8 - i32.const 8 - i32.sub - local.set $8 - local.get $2 - i32.const 8 - i32.add - local.set $2 - local.get $1 - i32.const 8 - i32.add - local.set $1 - br $while-continue|1 - end - end - end - loop $while-continue|2 - local.get $8 - if - local.get $2 - local.tee $4 - i32.const 1 - i32.add - local.set $2 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $4 - local.get $5 - i32.load8_u - i32.store8 - local.get $8 - i32.const 1 - i32.sub - local.set $8 - br $while-continue|2 - end - end - else - local.get $1 - i32.const 7 - i32.and - local.get $2 - i32.const 7 - i32.and - i32.eq - if - loop $while-continue|3 - local.get $2 - local.get $8 - i32.add - i32.const 7 - i32.and - if - local.get $8 - i32.eqz - br_if $~lib/util/memory/memmove|inlined.0 - local.get $2 - local.get $8 - i32.const 1 - i32.sub - local.tee $8 - i32.add - local.get $1 - local.get $8 - i32.add - i32.load8_u - i32.store8 - br $while-continue|3 - end - end - loop $while-continue|4 - local.get $8 - i32.const 8 - i32.ge_u - if - local.get $2 - local.get $8 - i32.const 8 - i32.sub - local.tee $8 - i32.add - local.get $1 - local.get $8 - i32.add - i64.load - i64.store - br $while-continue|4 - end - end - end - loop $while-continue|5 - local.get $8 - if - local.get $2 - local.get $8 - i32.const 1 - i32.sub - local.tee $8 - i32.add - local.get $1 - local.get $8 - i32.add - i32.load8_u - i32.store8 - br $while-continue|5 - end - end - end - end + call $~lib/memory/memory.copy local.get $3 - local.set $1 end - local.get $1 - local.get $9 + local.tee $1 + local.get $5 i32.add - local.get $6 - local.get $9 + local.get $2 + local.get $5 i32.sub call $~lib/memory/memory.fill local.get $1 - local.get $7 + local.get $4 i32.ne if local.get $0 @@ -3154,7 +3159,7 @@ call $~lib/rt/itcms/__link end local.get $0 - local.get $6 + local.get $2 i32.store offset=8 end ) diff --git a/tests/compiler/std/static-array.optimized.wat b/tests/compiler/std/static-array.optimized.wat index 85e597f65d..d9e353e6f6 100644 --- a/tests/compiler/std/static-array.optimized.wat +++ b/tests/compiler/std/static-array.optimized.wat @@ -1087,7 +1087,7 @@ local.get $0 i32.const 4 i32.add - local.tee $0 + local.tee $1 i32.const 18396 i32.ge_u if @@ -1097,20 +1097,20 @@ call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT - local.get $0 + local.get $1 i32.const 4 i32.sub - local.set $1 - local.get $0 + local.set $0 + local.get $1 i32.const 15 i32.and i32.const 1 - local.get $0 + local.get $1 select if (result i32) i32.const 1 else - local.get $1 + local.get $0 i32.load i32.const 1 i32.and @@ -1123,14 +1123,11 @@ call $~lib/builtins/abort unreachable end - local.get $1 - local.tee $0 + local.get $0 + local.get $0 i32.load i32.const 1 i32.or - local.set $1 - local.get $0 - local.get $1 i32.store local.get $0 call $~lib/rt/tlsf/insertBlock @@ -1143,8 +1140,7 @@ local.tee $0 local.get $0 i32.store offset=4 - global.get $~lib/rt/itcms/toSpace - local.tee $0 + local.get $0 local.get $0 i32.store offset=8 i32.const 0 @@ -1284,6 +1280,210 @@ end end ) + (func $~lib/rt/tlsf/allocateBlock (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + local.get $1 + i32.const 1073741820 + i32.gt_u + if + i32.const 1632 + i32.const 1904 + i32.const 458 + i32.const 29 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.tee $2 + local.get $1 + i32.const 12 + i32.le_u + if (result i32) + i32.const 12 + else + local.get $1 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + end + local.tee $0 + call $~lib/rt/tlsf/searchBlock + local.tee $1 + i32.eqz + if + local.get $0 + i32.const 536870910 + i32.lt_u + if (result i32) + local.get $0 + i32.const 1 + i32.const 27 + local.get $0 + i32.clz + i32.sub + i32.shl + i32.const 1 + i32.sub + i32.add + else + local.get $0 + end + i32.const 4 + memory.size + local.tee $1 + i32.const 16 + i32.shl + i32.const 4 + i32.sub + local.get $2 + i32.load offset=1568 + i32.ne + i32.shl + i32.add + i32.const 65535 + i32.add + i32.const -65536 + i32.and + i32.const 16 + i32.shr_u + local.set $3 + local.get $1 + local.get $3 + local.get $1 + local.get $3 + i32.gt_s + select + memory.grow + i32.const 0 + i32.lt_s + if + local.get $3 + memory.grow + i32.const 0 + i32.lt_s + if + unreachable + end + end + local.get $2 + local.get $1 + i32.const 16 + i32.shl + memory.size + i32.const 16 + i32.shl + call $~lib/rt/tlsf/addMemory + local.get $2 + local.get $0 + call $~lib/rt/tlsf/searchBlock + local.tee $1 + i32.eqz + if + i32.const 0 + i32.const 1904 + i32.const 496 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + end + local.get $0 + local.get $1 + i32.load + i32.const -4 + i32.and + i32.gt_u + if + i32.const 0 + i32.const 1904 + i32.const 498 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.get $1 + call $~lib/rt/tlsf/removeBlock + local.get $1 + i32.load + local.set $3 + local.get $0 + i32.const 4 + i32.add + i32.const 15 + i32.and + if + i32.const 0 + i32.const 1904 + i32.const 357 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const -4 + i32.and + local.get $0 + i32.sub + local.tee $4 + i32.const 16 + i32.ge_u + if + local.get $1 + local.get $0 + local.get $3 + i32.const 2 + i32.and + i32.or + i32.store + local.get $0 + local.get $1 + i32.const 4 + i32.add + i32.add + local.tee $0 + local.get $4 + i32.const 4 + i32.sub + i32.const 1 + i32.or + i32.store + local.get $2 + local.get $0 + call $~lib/rt/tlsf/insertBlock + else + local.get $1 + local.get $3 + i32.const -2 + i32.and + i32.store + local.get $1 + i32.const 4 + i32.add + local.tee $0 + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.get $0 + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + i32.load + i32.const -3 + i32.and + i32.store + end + local.get $1 + ) (func $~lib/memory/memory.fill (param $0 i32) (param $1 i32) (local $2 i32) block $~lib/util/memory/memset|inlined.0 @@ -1460,354 +1660,39 @@ end end ) - (func $~lib/rt/itcms/__new (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) + (func $~lib/util/memory/memcpy (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) - (local $6 i32) - local.get $0 - i32.const 1073741804 - i32.ge_u - if - i32.const 1632 - i32.const 1696 - i32.const 260 - i32.const 31 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/rt/itcms/total - global.get $~lib/rt/itcms/threshold - i32.ge_u - if - block $__inlined_func$~lib/rt/itcms/interrupt - i32.const 2048 - local.set $3 - loop $do-continue|0 - local.get $3 - call $~lib/rt/itcms/step - i32.sub - local.set $3 - global.get $~lib/rt/itcms/state - i32.eqz - if - global.get $~lib/rt/itcms/total - i64.extend_i32_u - i64.const 200 - i64.mul - i64.const 100 - i64.div_u - i32.wrap_i64 - i32.const 1024 - i32.add - global.set $~lib/rt/itcms/threshold - br $__inlined_func$~lib/rt/itcms/interrupt - end - local.get $3 - i32.const 0 - i32.gt_s - br_if $do-continue|0 - end - global.get $~lib/rt/itcms/total - local.tee $3 - local.get $3 - global.get $~lib/rt/itcms/threshold - i32.sub - i32.const 1024 - i32.lt_u - i32.const 10 - i32.shl - i32.add - global.set $~lib/rt/itcms/threshold - end - end - local.get $0 - i32.const 16 - i32.add - local.set $6 - global.get $~lib/rt/tlsf/ROOT - i32.eqz - if - call $~lib/rt/tlsf/initialize - end - global.get $~lib/rt/tlsf/ROOT - local.get $6 - i32.const 1073741820 - i32.gt_u - if - i32.const 1632 - i32.const 1904 - i32.const 458 - i32.const 29 - call $~lib/builtins/abort - unreachable - end - local.tee $2 - local.get $6 - i32.const 12 - i32.le_u - if (result i32) - i32.const 12 - else - local.get $6 - i32.const 19 - i32.add - i32.const -16 - i32.and - i32.const 4 - i32.sub - end - local.tee $3 - call $~lib/rt/tlsf/searchBlock - local.tee $6 - i32.eqz - if - local.get $3 - i32.const 536870910 - i32.lt_u - if (result i32) - local.get $3 - i32.const 1 - i32.const 27 - local.get $3 - i32.clz - i32.sub - i32.shl - i32.const 1 - i32.sub - i32.add - else - local.get $3 - end - i32.const 4 - memory.size - local.tee $6 - i32.const 16 - i32.shl - i32.const 4 - i32.sub - local.get $2 - i32.load offset=1568 - i32.ne - i32.shl - i32.add - i32.const 65535 - i32.add - i32.const -65536 - i32.and - i32.const 16 - i32.shr_u - local.set $5 - local.get $6 - local.get $5 - local.get $5 - local.get $6 - i32.lt_s - select - memory.grow - i32.const 0 - i32.lt_s - if - local.get $5 - memory.grow - i32.const 0 - i32.lt_s - if - unreachable - end - end - local.get $2 - local.get $6 - i32.const 16 - i32.shl - memory.size - i32.const 16 - i32.shl - call $~lib/rt/tlsf/addMemory - local.get $2 - local.get $3 - call $~lib/rt/tlsf/searchBlock - local.tee $6 - i32.eqz - if - i32.const 0 - i32.const 1904 - i32.const 496 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - end - local.get $3 - local.get $6 - i32.load - i32.const -4 - i32.and - i32.gt_u - if - i32.const 0 - i32.const 1904 - i32.const 498 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $2 - local.get $6 - call $~lib/rt/tlsf/removeBlock - local.get $6 - i32.load - local.set $5 - local.get $3 - i32.const 4 - i32.add - i32.const 15 - i32.and - if - i32.const 0 - i32.const 1904 - i32.const 357 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $5 - i32.const -4 - i32.and - local.get $3 - i32.sub - local.tee $4 - i32.const 16 - i32.ge_u - if - local.get $6 - local.get $3 - local.get $5 - i32.const 2 - i32.and - i32.or - i32.store - local.get $3 - local.get $6 - i32.const 4 - i32.add - i32.add - local.tee $3 - local.get $4 - i32.const 4 - i32.sub - i32.const 1 - i32.or - i32.store - local.get $2 - local.get $3 - call $~lib/rt/tlsf/insertBlock - else - local.get $6 - local.get $5 - i32.const -2 - i32.and - i32.store - local.get $6 - i32.const 4 - i32.add - local.tee $3 - local.get $6 - i32.load - i32.const -4 - i32.and - i32.add - local.get $3 - local.get $6 - i32.load - i32.const -4 - i32.and - i32.add - i32.load - i32.const -3 - i32.and - i32.store - end - local.get $6 - local.get $1 - i32.store offset=12 - local.get $6 - local.get $0 - i32.store offset=16 - global.get $~lib/rt/itcms/fromSpace - local.tee $3 - i32.load offset=8 - local.set $1 - local.get $6 - local.get $3 - global.get $~lib/rt/itcms/white - i32.or - i32.store offset=4 - local.get $6 - local.get $1 - i32.store offset=8 - local.get $1 - local.get $6 - local.get $1 - i32.load offset=4 - i32.const 3 - i32.and - i32.or - i32.store offset=4 - local.get $3 - local.get $6 - i32.store offset=8 - global.get $~lib/rt/itcms/total - local.get $6 - i32.load - i32.const -4 - i32.and - i32.const 4 - i32.add - i32.add - global.set $~lib/rt/itcms/total - local.get $6 - i32.const 20 - i32.add - local.tee $1 - local.get $0 - call $~lib/memory/memory.fill - local.get $1 - ) - (func $~lib/util/memory/memcpy (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - loop $while-continue|0 - local.get $1 - i32.const 3 - i32.and - i32.const 0 - local.get $2 - select - if - local.get $0 - local.tee $3 - i32.const 1 - i32.add - local.set $0 - local.get $1 - local.tee $4 - i32.const 1 - i32.add - local.set $1 - local.get $3 - local.get $4 - i32.load8_u - i32.store8 - local.get $2 - i32.const 1 - i32.sub - local.set $2 - br $while-continue|0 - end - end + loop $while-continue|0 + local.get $1 + i32.const 3 + i32.and + i32.const 0 + local.get $2 + select + if + local.get $0 + local.tee $3 + i32.const 1 + i32.add + local.set $0 + local.get $1 + local.tee $4 + i32.const 1 + i32.add + local.set $1 + local.get $3 + local.get $4 + i32.load8_u + i32.store8 + local.get $2 + i32.const 1 + i32.sub + local.set $2 + br $while-continue|0 + end + end local.get $0 i32.const 3 i32.and @@ -2531,6 +2416,197 @@ i32.store8 end ) + (func $~lib/memory/memory.copy (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + (local $4 i32) + block $~lib/util/memory/memmove|inlined.0 + local.get $2 + local.set $4 + local.get $0 + local.get $1 + i32.eq + br_if $~lib/util/memory/memmove|inlined.0 + local.get $1 + local.get $0 + i32.sub + local.get $4 + i32.sub + i32.const 0 + local.get $4 + i32.const 1 + i32.shl + i32.sub + i32.le_u + if + local.get $0 + local.get $1 + local.get $4 + call $~lib/util/memory/memcpy + br $~lib/util/memory/memmove|inlined.0 + end + local.get $0 + local.get $1 + i32.lt_u + if + local.get $1 + i32.const 7 + i32.and + local.get $0 + i32.const 7 + i32.and + i32.eq + if + loop $while-continue|0 + local.get $0 + i32.const 7 + i32.and + if + local.get $4 + i32.eqz + br_if $~lib/util/memory/memmove|inlined.0 + local.get $4 + i32.const 1 + i32.sub + local.set $4 + local.get $0 + local.tee $2 + i32.const 1 + i32.add + local.set $0 + local.get $1 + local.tee $3 + i32.const 1 + i32.add + local.set $1 + local.get $2 + local.get $3 + i32.load8_u + i32.store8 + br $while-continue|0 + end + end + loop $while-continue|1 + local.get $4 + i32.const 8 + i32.ge_u + if + local.get $0 + local.get $1 + i64.load + i64.store + local.get $4 + i32.const 8 + i32.sub + local.set $4 + local.get $0 + i32.const 8 + i32.add + local.set $0 + local.get $1 + i32.const 8 + i32.add + local.set $1 + br $while-continue|1 + end + end + end + loop $while-continue|2 + local.get $4 + if + local.get $0 + local.tee $2 + i32.const 1 + i32.add + local.set $0 + local.get $1 + local.tee $3 + i32.const 1 + i32.add + local.set $1 + local.get $2 + local.get $3 + i32.load8_u + i32.store8 + local.get $4 + i32.const 1 + i32.sub + local.set $4 + br $while-continue|2 + end + end + else + local.get $1 + i32.const 7 + i32.and + local.get $0 + i32.const 7 + i32.and + i32.eq + if + loop $while-continue|3 + local.get $0 + local.get $4 + i32.add + i32.const 7 + i32.and + if + local.get $4 + i32.eqz + br_if $~lib/util/memory/memmove|inlined.0 + local.get $4 + i32.const 1 + i32.sub + local.tee $4 + local.get $0 + i32.add + local.get $1 + local.get $4 + i32.add + i32.load8_u + i32.store8 + br $while-continue|3 + end + end + loop $while-continue|4 + local.get $4 + i32.const 8 + i32.ge_u + if + local.get $4 + i32.const 8 + i32.sub + local.tee $4 + local.get $0 + i32.add + local.get $1 + local.get $4 + i32.add + i64.load + i64.store + br $while-continue|4 + end + end + end + loop $while-continue|5 + local.get $4 + if + local.get $4 + i32.const 1 + i32.sub + local.tee $4 + local.get $0 + i32.add + local.get $1 + local.get $4 + i32.add + i32.load8_u + i32.store8 + br $while-continue|5 + end + end + end + end + ) (func $~lib/array/ensureCapacity (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) @@ -2539,10 +2615,9 @@ (local $6 i32) (local $7 i32) (local $8 i32) - (local $9 i32) local.get $0 i32.load offset=8 - local.tee $8 + local.tee $5 local.get $1 i32.shr_u i32.const 1 @@ -2562,32 +2637,32 @@ unreachable end block $__inlined_func$~lib/rt/itcms/__renew - local.get $8 + local.get $5 i32.const 1 i32.shl - local.tee $2 + local.tee $3 i32.const 1073741820 - local.get $2 + local.get $3 i32.const 1073741820 i32.lt_u select - local.tee $2 + local.tee $3 i32.const 8 local.get $1 i32.shl local.tee $1 local.get $1 - local.get $2 + local.get $3 i32.lt_u select - local.tee $7 + local.tee $3 local.get $0 i32.load - local.tee $9 + local.tee $8 local.tee $1 i32.const 20 i32.sub - local.tee $2 + local.tee $6 i32.load i32.const -4 i32.and @@ -2595,223 +2670,149 @@ i32.sub i32.le_u if - local.get $2 - local.get $7 + local.get $6 + local.get $3 i32.store offset=16 br $__inlined_func$~lib/rt/itcms/__renew end - local.get $7 - local.get $2 + local.get $6 i32.load offset=12 - call $~lib/rt/itcms/__new - local.set $5 - local.get $7 - local.get $2 - i32.load offset=16 - local.tee $2 - local.get $2 - local.get $7 - i32.gt_u - select - local.set $6 - block $~lib/util/memory/memmove|inlined.0 - local.get $1 - local.get $5 - local.tee $2 - i32.eq - br_if $~lib/util/memory/memmove|inlined.0 - local.get $1 - local.get $2 - i32.sub - local.get $6 - i32.sub - i32.const 0 - local.get $6 - i32.const 1 - i32.shl - i32.sub - i32.le_u - if - local.get $2 - local.get $1 - local.get $6 - call $~lib/util/memory/memcpy - br $~lib/util/memory/memmove|inlined.0 - end - local.get $1 - local.get $2 - i32.gt_u - if - local.get $1 - i32.const 7 - i32.and - local.get $2 - i32.const 7 - i32.and - i32.eq - if - loop $while-continue|0 - local.get $2 - i32.const 7 - i32.and - if - local.get $6 - i32.eqz - br_if $~lib/util/memory/memmove|inlined.0 - local.get $6 - i32.const 1 - i32.sub - local.set $6 - local.get $2 - local.tee $3 - i32.const 1 - i32.add - local.set $2 - local.get $1 - local.tee $4 - i32.const 1 - i32.add - local.set $1 - local.get $3 - local.get $4 - i32.load8_u - i32.store8 - br $while-continue|0 - end - end - loop $while-continue|1 - local.get $6 - i32.const 8 - i32.ge_u - if - local.get $2 - local.get $1 - i64.load - i64.store - local.get $6 - i32.const 8 - i32.sub - local.set $6 - local.get $2 - i32.const 8 - i32.add - local.set $2 - local.get $1 - i32.const 8 - i32.add - local.set $1 - br $while-continue|1 - end - end - end - loop $while-continue|2 - local.get $6 + local.set $4 + local.get $3 + i32.const 1073741804 + i32.ge_u + if + i32.const 1632 + i32.const 1696 + i32.const 260 + i32.const 31 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.ge_u + if + block $__inlined_func$~lib/rt/itcms/interrupt + i32.const 2048 + local.set $2 + loop $do-continue|0 + local.get $2 + call $~lib/rt/itcms/step + i32.sub + local.set $2 + global.get $~lib/rt/itcms/state + i32.eqz if - local.get $2 - local.tee $3 - i32.const 1 + global.get $~lib/rt/itcms/total + i64.extend_i32_u + i64.const 200 + i64.mul + i64.const 100 + i64.div_u + i32.wrap_i64 + i32.const 1024 i32.add - local.set $2 - local.get $1 - local.tee $4 - i32.const 1 - i32.add - local.set $1 - local.get $3 - local.get $4 - i32.load8_u - i32.store8 - local.get $6 - i32.const 1 - i32.sub - local.set $6 - br $while-continue|2 + global.set $~lib/rt/itcms/threshold + br $__inlined_func$~lib/rt/itcms/interrupt end + local.get $2 + i32.const 0 + i32.gt_s + br_if $do-continue|0 end - else - local.get $1 - i32.const 7 - i32.and + global.get $~lib/rt/itcms/total + local.tee $2 local.get $2 - i32.const 7 - i32.and - i32.eq - if - loop $while-continue|3 - local.get $2 - local.get $6 - i32.add - i32.const 7 - i32.and - if - local.get $6 - i32.eqz - br_if $~lib/util/memory/memmove|inlined.0 - local.get $2 - local.get $6 - i32.const 1 - i32.sub - local.tee $6 - i32.add - local.get $1 - local.get $6 - i32.add - i32.load8_u - i32.store8 - br $while-continue|3 - end - end - loop $while-continue|4 - local.get $6 - i32.const 8 - i32.ge_u - if - local.get $2 - local.get $6 - i32.const 8 - i32.sub - local.tee $6 - i32.add - local.get $1 - local.get $6 - i32.add - i64.load - i64.store - br $while-continue|4 - end - end - end - loop $while-continue|5 - local.get $6 - if - local.get $2 - local.get $6 - i32.const 1 - i32.sub - local.tee $6 - i32.add - local.get $1 - local.get $6 - i32.add - i32.load8_u - i32.store8 - br $while-continue|5 - end - end + global.get $~lib/rt/itcms/threshold + i32.sub + i32.const 1024 + i32.lt_u + i32.const 10 + i32.shl + i32.add + global.set $~lib/rt/itcms/threshold end end - local.get $5 + local.get $3 + i32.const 16 + i32.add + local.set $2 + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $2 + call $~lib/rt/tlsf/allocateBlock + local.tee $2 + local.get $4 + i32.store offset=12 + local.get $2 + local.get $3 + i32.store offset=16 + global.get $~lib/rt/itcms/fromSpace + local.tee $7 + i32.load offset=8 + local.set $4 + local.get $2 + local.get $7 + global.get $~lib/rt/itcms/white + i32.or + i32.store offset=4 + local.get $2 + local.get $4 + i32.store offset=8 + local.get $4 + local.get $2 + local.get $4 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + local.get $7 + local.get $2 + i32.store offset=8 + global.get $~lib/rt/itcms/total + local.get $2 + i32.load + i32.const -4 + i32.and + i32.const 4 + i32.add + i32.add + global.set $~lib/rt/itcms/total + local.get $2 + i32.const 20 + i32.add + local.tee $2 + local.get $3 + call $~lib/memory/memory.fill + local.get $2 + local.get $1 + local.get $3 + local.get $6 + i32.load offset=16 + local.tee $1 + local.get $1 + local.get $3 + i32.gt_u + select + call $~lib/memory/memory.copy + local.get $2 local.set $1 end local.get $1 - local.get $8 + local.get $5 i32.add - local.get $7 - local.get $8 + local.get $3 + local.get $5 i32.sub call $~lib/memory/memory.fill local.get $1 - local.get $9 + local.get $8 i32.ne if local.get $0 @@ -2836,7 +2837,7 @@ local.get $1 i32.const 20 i32.sub - local.tee $2 + local.tee $1 i32.load offset=4 i32.const 3 i32.and @@ -2848,24 +2849,24 @@ i32.load offset=4 i32.const 3 i32.and - local.tee $1 + local.tee $2 global.get $~lib/rt/itcms/white i32.eqz i32.eq if - local.get $2 + local.get $1 call $~lib/rt/itcms/Object#makeGray else global.get $~lib/rt/itcms/state i32.const 1 i32.eq i32.const 0 - local.get $1 + local.get $2 i32.const 3 i32.eq select if - local.get $2 + local.get $1 call $~lib/rt/itcms/Object#makeGray end end @@ -2873,7 +2874,7 @@ end end local.get $0 - local.get $7 + local.get $3 i32.store offset=8 end ) diff --git a/tests/compiler/std/staticarray.optimized.wat b/tests/compiler/std/staticarray.optimized.wat index e28570b093..11f4416b5f 100644 --- a/tests/compiler/std/staticarray.optimized.wat +++ b/tests/compiler/std/staticarray.optimized.wat @@ -3,8 +3,8 @@ (type $i32_i32_=>_none (func (param i32 i32))) (type $none_=>_none (func)) (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) - (type $i32_=>_none (func (param i32))) (type $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) + (type $i32_=>_none (func (param i32))) (type $none_=>_i32 (func (result i32))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) (type $i32_=>_i32 (func (param i32) (result i32))) @@ -1177,7 +1177,7 @@ local.get $0 i32.const 4 i32.add - local.tee $0 + local.tee $1 i32.const 19572 i32.ge_u if @@ -1187,20 +1187,20 @@ call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT - local.get $0 + local.get $1 i32.const 4 i32.sub - local.set $1 - local.get $0 + local.set $0 + local.get $1 i32.const 15 i32.and i32.const 1 - local.get $0 + local.get $1 select if (result i32) i32.const 1 else - local.get $1 + local.get $0 i32.load i32.const 1 i32.and @@ -1213,14 +1213,11 @@ call $~lib/builtins/abort unreachable end - local.get $1 - local.tee $0 + local.get $0 + local.get $0 i32.load i32.const 1 i32.or - local.set $1 - local.get $0 - local.get $1 i32.store local.get $0 call $~lib/rt/tlsf/insertBlock @@ -1233,8 +1230,7 @@ local.tee $0 local.get $0 i32.store offset=4 - global.get $~lib/rt/itcms/toSpace - local.tee $0 + local.get $0 local.get $0 i32.store offset=8 i32.const 0 @@ -1374,6 +1370,210 @@ end end ) + (func $~lib/rt/tlsf/allocateBlock (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + local.get $1 + i32.const 1073741820 + i32.gt_u + if + i32.const 1344 + i32.const 1616 + i32.const 458 + i32.const 29 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.tee $2 + local.get $1 + i32.const 12 + i32.le_u + if (result i32) + i32.const 12 + else + local.get $1 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + end + local.tee $0 + call $~lib/rt/tlsf/searchBlock + local.tee $1 + i32.eqz + if + local.get $0 + i32.const 536870910 + i32.lt_u + if (result i32) + local.get $0 + i32.const 1 + i32.const 27 + local.get $0 + i32.clz + i32.sub + i32.shl + i32.const 1 + i32.sub + i32.add + else + local.get $0 + end + i32.const 4 + memory.size + local.tee $1 + i32.const 16 + i32.shl + i32.const 4 + i32.sub + local.get $2 + i32.load offset=1568 + i32.ne + i32.shl + i32.add + i32.const 65535 + i32.add + i32.const -65536 + i32.and + i32.const 16 + i32.shr_u + local.set $3 + local.get $1 + local.get $3 + local.get $1 + local.get $3 + i32.gt_s + select + memory.grow + i32.const 0 + i32.lt_s + if + local.get $3 + memory.grow + i32.const 0 + i32.lt_s + if + unreachable + end + end + local.get $2 + local.get $1 + i32.const 16 + i32.shl + memory.size + i32.const 16 + i32.shl + call $~lib/rt/tlsf/addMemory + local.get $2 + local.get $0 + call $~lib/rt/tlsf/searchBlock + local.tee $1 + i32.eqz + if + i32.const 0 + i32.const 1616 + i32.const 496 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + end + local.get $0 + local.get $1 + i32.load + i32.const -4 + i32.and + i32.gt_u + if + i32.const 0 + i32.const 1616 + i32.const 498 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.get $1 + call $~lib/rt/tlsf/removeBlock + local.get $1 + i32.load + local.set $3 + local.get $0 + i32.const 4 + i32.add + i32.const 15 + i32.and + if + i32.const 0 + i32.const 1616 + i32.const 357 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const -4 + i32.and + local.get $0 + i32.sub + local.tee $4 + i32.const 16 + i32.ge_u + if + local.get $1 + local.get $0 + local.get $3 + i32.const 2 + i32.and + i32.or + i32.store + local.get $0 + local.get $1 + i32.const 4 + i32.add + i32.add + local.tee $0 + local.get $4 + i32.const 4 + i32.sub + i32.const 1 + i32.or + i32.store + local.get $2 + local.get $0 + call $~lib/rt/tlsf/insertBlock + else + local.get $1 + local.get $3 + i32.const -2 + i32.and + i32.store + local.get $1 + i32.const 4 + i32.add + local.tee $0 + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.get $0 + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + i32.load + i32.const -3 + i32.and + i32.store + end + local.get $1 + ) (func $~lib/memory/memory.fill (param $0 i32) (param $1 i32) (local $2 i32) block $~lib/util/memory/memset|inlined.0 @@ -1553,9 +1753,6 @@ (func $~lib/rt/itcms/__new (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) local.get $0 i32.const 1073741804 i32.ge_u @@ -1573,12 +1770,12 @@ if block $__inlined_func$~lib/rt/itcms/interrupt i32.const 2048 - local.set $3 + local.set $2 loop $do-continue|0 - local.get $3 + local.get $2 call $~lib/rt/itcms/step i32.sub - local.set $3 + local.set $2 global.get $~lib/rt/itcms/state i32.eqz if @@ -1594,14 +1791,14 @@ global.set $~lib/rt/itcms/threshold br $__inlined_func$~lib/rt/itcms/interrupt end - local.get $3 + local.get $2 i32.const 0 i32.gt_s br_if $do-continue|0 end global.get $~lib/rt/itcms/total - local.tee $3 - local.get $3 + local.tee $2 + local.get $2 global.get $~lib/rt/itcms/threshold i32.sub i32.const 1024 @@ -1615,230 +1812,35 @@ local.get $0 i32.const 16 i32.add - local.set $6 + local.set $2 global.get $~lib/rt/tlsf/ROOT i32.eqz if call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT - local.get $6 - i32.const 1073741820 - i32.gt_u - if - i32.const 1344 - i32.const 1616 - i32.const 458 - i32.const 29 - call $~lib/builtins/abort - unreachable - end + local.get $2 + call $~lib/rt/tlsf/allocateBlock local.tee $2 - local.get $6 - i32.const 12 - i32.le_u - if (result i32) - i32.const 12 - else - local.get $6 - i32.const 19 - i32.add - i32.const -16 - i32.and - i32.const 4 - i32.sub - end - local.tee $3 - call $~lib/rt/tlsf/searchBlock - local.tee $6 - i32.eqz - if - local.get $3 - i32.const 536870910 - i32.lt_u - if (result i32) - local.get $3 - i32.const 1 - i32.const 27 - local.get $3 - i32.clz - i32.sub - i32.shl - i32.const 1 - i32.sub - i32.add - else - local.get $3 - end - i32.const 4 - memory.size - local.tee $6 - i32.const 16 - i32.shl - i32.const 4 - i32.sub - local.get $2 - i32.load offset=1568 - i32.ne - i32.shl - i32.add - i32.const 65535 - i32.add - i32.const -65536 - i32.and - i32.const 16 - i32.shr_u - local.set $5 - local.get $6 - local.get $5 - local.get $5 - local.get $6 - i32.lt_s - select - memory.grow - i32.const 0 - i32.lt_s - if - local.get $5 - memory.grow - i32.const 0 - i32.lt_s - if - unreachable - end - end - local.get $2 - local.get $6 - i32.const 16 - i32.shl - memory.size - i32.const 16 - i32.shl - call $~lib/rt/tlsf/addMemory - local.get $2 - local.get $3 - call $~lib/rt/tlsf/searchBlock - local.tee $6 - i32.eqz - if - i32.const 0 - i32.const 1616 - i32.const 496 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - end - local.get $3 - local.get $6 - i32.load - i32.const -4 - i32.and - i32.gt_u - if - i32.const 0 - i32.const 1616 - i32.const 498 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $2 - local.get $6 - call $~lib/rt/tlsf/removeBlock - local.get $6 - i32.load - local.set $5 - local.get $3 - i32.const 4 - i32.add - i32.const 15 - i32.and - if - i32.const 0 - i32.const 1616 - i32.const 357 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $5 - i32.const -4 - i32.and - local.get $3 - i32.sub - local.tee $4 - i32.const 16 - i32.ge_u - if - local.get $6 - local.get $3 - local.get $5 - i32.const 2 - i32.and - i32.or - i32.store - local.get $3 - local.get $6 - i32.const 4 - i32.add - i32.add - local.tee $3 - local.get $4 - i32.const 4 - i32.sub - i32.const 1 - i32.or - i32.store - local.get $2 - local.get $3 - call $~lib/rt/tlsf/insertBlock - else - local.get $6 - local.get $5 - i32.const -2 - i32.and - i32.store - local.get $6 - i32.const 4 - i32.add - local.tee $3 - local.get $6 - i32.load - i32.const -4 - i32.and - i32.add - local.get $3 - local.get $6 - i32.load - i32.const -4 - i32.and - i32.add - i32.load - i32.const -3 - i32.and - i32.store - end - local.get $6 local.get $1 i32.store offset=12 - local.get $6 + local.get $2 local.get $0 i32.store offset=16 global.get $~lib/rt/itcms/fromSpace local.tee $3 i32.load offset=8 local.set $1 - local.get $6 + local.get $2 local.get $3 global.get $~lib/rt/itcms/white i32.or i32.store offset=4 - local.get $6 + local.get $2 local.get $1 i32.store offset=8 local.get $1 - local.get $6 + local.get $2 local.get $1 i32.load offset=4 i32.const 3 @@ -1846,10 +1848,10 @@ i32.or i32.store offset=4 local.get $3 - local.get $6 + local.get $2 i32.store offset=8 global.get $~lib/rt/itcms/total - local.get $6 + local.get $2 i32.load i32.const -4 i32.and @@ -1857,7 +1859,7 @@ i32.add i32.add global.set $~lib/rt/itcms/total - local.get $6 + local.get $2 i32.const 20 i32.add local.tee $1 @@ -2898,7 +2900,7 @@ i32.load offset=16 i32.const 1 i32.shr_u - local.tee $4 + local.tee $2 local.get $1 i32.const 20 i32.sub @@ -2912,18 +2914,15 @@ end block $__inlined_func$~lib/util/string/compareImpl (result i32) local.get $0 - local.set $2 - local.get $1 - local.set $3 - local.get $2 + local.tee $3 i32.const 7 i32.and - local.get $3 + local.get $1 i32.const 7 i32.and i32.or i32.const 1 - local.get $4 + local.get $2 local.tee $0 i32.const 4 i32.ge_u @@ -2931,20 +2930,20 @@ i32.eqz if loop $do-continue|0 - local.get $2 - i64.load local.get $3 i64.load + local.get $1 + i64.load i64.eq if - local.get $2 - i32.const 8 - i32.add - local.set $2 local.get $3 i32.const 8 i32.add local.set $3 + local.get $1 + i32.const 8 + i32.add + local.set $1 local.get $0 i32.const 4 i32.sub @@ -2957,33 +2956,33 @@ end loop $while-continue|1 local.get $0 - local.tee $1 + local.tee $2 i32.const 1 i32.sub local.set $0 - local.get $1 + local.get $2 if - local.get $2 - i32.load16_u - local.tee $1 local.get $3 i32.load16_u + local.tee $2 + local.get $1 + i32.load16_u local.tee $4 i32.ne if - local.get $1 + local.get $2 local.get $4 i32.sub br $__inlined_func$~lib/util/string/compareImpl end - local.get $2 - i32.const 2 - i32.add - local.set $2 local.get $3 i32.const 2 i32.add local.set $3 + local.get $1 + i32.const 2 + i32.add + local.set $1 br $while-continue|1 end end @@ -3073,244 +3072,23 @@ global.set $~lib/memory/__stack_pointer br $__inlined_func$~lib/staticarray/StaticArray<~lib/string/String>#indexOf end - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $while-continue|0 - end - end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - i32.const -1 - local.set $2 - end - local.get $2 - i32.const 0 - i32.ge_s - ) - (func $~lib/array/Array<~lib/string/String>#join (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - local.get $0 - i32.load offset=4 - local.set $7 - local.get $0 - i32.load offset=12 - local.set $5 - i32.const 0 - local.set $0 - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 3188 - i32.lt_s - if - i32.const 19600 - i32.const 19648 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.tee $6 - i64.const 0 - i64.store - local.get $6 - i32.const 0 - i32.store offset=8 - block $__inlined_func$~lib/util/string/joinStringArray - local.get $5 - i32.const 1 - i32.sub - local.tee $6 - i32.const 0 - i32.lt_s - if - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.add - global.set $~lib/memory/__stack_pointer - i32.const 2720 - local.set $0 - br $__inlined_func$~lib/util/string/joinStringArray - end - local.get $6 - i32.eqz - if - global.get $~lib/memory/__stack_pointer - local.tee $1 - local.get $7 - i32.load - local.tee $0 - i32.store - local.get $0 - i32.const 2720 - local.get $0 - select - local.set $0 - local.get $1 - i32.const 12 - i32.add - global.set $~lib/memory/__stack_pointer - br $__inlined_func$~lib/util/string/joinStringArray - end - loop $for-loop|0 - local.get $3 - local.get $5 - i32.lt_s - if - global.get $~lib/memory/__stack_pointer - local.get $7 - local.get $3 - i32.const 2 - i32.shl - i32.add - i32.load - local.tee $4 - i32.store offset=4 - local.get $4 - if - local.get $0 - local.get $4 - i32.const 20 - i32.sub - i32.load offset=16 - i32.const 1 - i32.shr_u - i32.add - local.set $0 - end - local.get $3 - i32.const 1 - i32.add - local.set $3 - br $for-loop|0 - end - end - global.get $~lib/memory/__stack_pointer - local.get $0 - local.get $6 - local.get $1 - i32.const 20 - i32.sub - i32.load offset=16 - i32.const 1 - i32.shr_u - local.tee $5 - i32.mul - i32.add - i32.const 1 - i32.shl - i32.const 1 - call $~lib/rt/itcms/__new - local.tee $0 - i32.store offset=8 - i32.const 0 - local.set $3 - loop $for-loop|1 - local.get $3 - local.get $6 - i32.lt_s - if - global.get $~lib/memory/__stack_pointer - local.get $7 - local.get $3 - i32.const 2 - i32.shl - i32.add - i32.load - local.tee $4 - i32.store offset=4 - local.get $4 - if - local.get $0 - local.get $2 - i32.const 1 - i32.shl - i32.add - local.get $4 - local.get $4 - i32.const 20 - i32.sub - i32.load offset=16 - i32.const 1 - i32.shr_u - local.tee $4 - i32.const 1 - i32.shl - call $~lib/memory/memory.copy - local.get $2 - local.get $4 - i32.add - local.set $2 - end - local.get $5 - if - local.get $0 - local.get $2 - i32.const 1 - i32.shl - i32.add - local.get $1 - local.get $5 - i32.const 1 - i32.shl - call $~lib/memory/memory.copy - local.get $2 - local.get $5 - i32.add - local.set $2 - end - local.get $3 + local.get $2 i32.const 1 i32.add - local.set $3 - br $for-loop|1 + local.set $2 + br $while-continue|0 end end global.get $~lib/memory/__stack_pointer - local.get $7 - local.get $6 - i32.const 2 - i32.shl - i32.add - i32.load - local.tee $1 - i32.store offset=4 - local.get $1 - if - local.get $0 - local.get $2 - i32.const 1 - i32.shl - i32.add - local.get $1 - local.get $1 - i32.const 20 - i32.sub - i32.load offset=16 - i32.const 1 - i32.shr_u - i32.const 1 - i32.shl - call $~lib/memory/memory.copy - end - global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 4 i32.add global.set $~lib/memory/__stack_pointer + i32.const -1 + local.set $2 end - local.get $0 + local.get $2 + i32.const 0 + i32.ge_s ) (func $~lib/rt/__visit_members (param $0 i32) (local $1 i32) @@ -4607,7 +4385,7 @@ i32.eqz br_if $__inlined_func$~lib/staticarray/StaticArray#includes drop - loop $while-continue|07 + loop $while-continue|012 local.get $0 local.get $3 i32.lt_s @@ -4633,7 +4411,7 @@ i32.const 1 i32.add local.set $0 - br $while-continue|07 + br $while-continue|012 end end i32.const 0 @@ -4677,7 +4455,7 @@ local.set $0 br $__inlined_func$~lib/staticarray/StaticArray#indexOf end - loop $while-continue|013 + loop $while-continue|014 local.get $0 local.get $1 i32.lt_s @@ -4695,7 +4473,7 @@ i32.const 1 i32.add local.set $0 - br $while-continue|013 + br $while-continue|014 end end i32.const -1 @@ -4712,7 +4490,7 @@ end i32.const 0 local.set $0 - block $__inlined_func$~lib/staticarray/StaticArray#indexOf14 + block $__inlined_func$~lib/staticarray/StaticArray#indexOf15 local.get $2 i32.const 20 i32.sub @@ -4727,9 +4505,9 @@ if i32.const -1 local.set $0 - br $__inlined_func$~lib/staticarray/StaticArray#indexOf14 + br $__inlined_func$~lib/staticarray/StaticArray#indexOf15 end - loop $while-continue|015 + loop $while-continue|016 local.get $0 local.get $1 i32.lt_s @@ -4742,12 +4520,12 @@ i32.load i32.const 7 i32.eq - br_if $__inlined_func$~lib/staticarray/StaticArray#indexOf14 + br_if $__inlined_func$~lib/staticarray/StaticArray#indexOf15 local.get $0 i32.const 1 i32.add local.set $0 - br $while-continue|015 + br $while-continue|016 end end i32.const -1 @@ -4766,7 +4544,7 @@ end i32.const 2 local.set $0 - block $__inlined_func$~lib/staticarray/StaticArray#indexOf16 + block $__inlined_func$~lib/staticarray/StaticArray#indexOf17 local.get $2 i32.const 20 i32.sub @@ -4782,9 +4560,9 @@ if i32.const -1 local.set $0 - br $__inlined_func$~lib/staticarray/StaticArray#indexOf16 + br $__inlined_func$~lib/staticarray/StaticArray#indexOf17 end - loop $while-continue|017 + loop $while-continue|018 local.get $0 local.get $1 i32.lt_s @@ -4797,12 +4575,12 @@ i32.load i32.const 9 i32.eq - br_if $__inlined_func$~lib/staticarray/StaticArray#indexOf16 + br_if $__inlined_func$~lib/staticarray/StaticArray#indexOf17 local.get $0 i32.const 1 i32.add local.set $0 - br $while-continue|017 + br $while-continue|018 end end i32.const -1 @@ -4819,7 +4597,7 @@ call $~lib/builtins/abort unreachable end - block $__inlined_func$~lib/staticarray/StaticArray#indexOf18 + block $__inlined_func$~lib/staticarray/StaticArray#indexOf19 local.get $2 i32.const 20 i32.sub @@ -4835,7 +4613,7 @@ if i32.const -1 local.set $0 - br $__inlined_func$~lib/staticarray/StaticArray#indexOf18 + br $__inlined_func$~lib/staticarray/StaticArray#indexOf19 end local.get $1 i32.const 1 @@ -4847,7 +4625,7 @@ i32.gt_s select local.set $0 - loop $while-continue|019 + loop $while-continue|020 local.get $0 local.get $1 i32.lt_s @@ -4860,12 +4638,12 @@ i32.load i32.const 2 i32.eq - br_if $__inlined_func$~lib/staticarray/StaticArray#indexOf18 + br_if $__inlined_func$~lib/staticarray/StaticArray#indexOf19 local.get $0 i32.const 1 i32.add local.set $0 - br $while-continue|019 + br $while-continue|020 end end i32.const -1 @@ -4882,7 +4660,7 @@ call $~lib/builtins/abort unreachable end - block $__inlined_func$~lib/staticarray/StaticArray#indexOf20 + block $__inlined_func$~lib/staticarray/StaticArray#indexOf21 local.get $2 i32.const 20 i32.sub @@ -4898,7 +4676,7 @@ if i32.const -1 local.set $0 - br $__inlined_func$~lib/staticarray/StaticArray#indexOf20 + br $__inlined_func$~lib/staticarray/StaticArray#indexOf21 end local.get $1 i32.const 3 @@ -4910,7 +4688,7 @@ i32.gt_s select local.set $0 - loop $while-continue|021 + loop $while-continue|022 local.get $0 local.get $1 i32.lt_s @@ -4923,12 +4701,12 @@ i32.load i32.const 2 i32.eq - br_if $__inlined_func$~lib/staticarray/StaticArray#indexOf20 + br_if $__inlined_func$~lib/staticarray/StaticArray#indexOf21 local.get $0 i32.const 1 i32.add local.set $0 - br $while-continue|021 + br $while-continue|022 end end i32.const -1 @@ -4954,8 +4732,11 @@ i32.const 2752 i32.store offset=20 local.get $2 + i32.load offset=4 + local.get $2 + i32.load offset=12 i32.const 2752 - call $~lib/array/Array<~lib/string/String>#join + call $~lib/util/string/joinStringArray local.set $0 global.get $~lib/memory/__stack_pointer local.tee $1 @@ -4980,8 +4761,11 @@ i32.const 2720 i32.store offset=20 local.get $2 + i32.load offset=4 + local.get $2 + i32.load offset=12 i32.const 2720 - call $~lib/array/Array<~lib/string/String>#join + call $~lib/util/string/joinStringArray local.set $0 global.get $~lib/memory/__stack_pointer local.tee $1 @@ -5006,8 +4790,11 @@ i32.const 2880 i32.store offset=20 local.get $2 + i32.load offset=4 + local.get $2 + i32.load offset=12 i32.const 2880 - call $~lib/array/Array<~lib/string/String>#join + call $~lib/util/string/joinStringArray local.set $0 global.get $~lib/memory/__stack_pointer local.tee $1 @@ -5032,8 +4819,11 @@ i32.const 2960 i32.store offset=20 local.get $2 + i32.load offset=4 + local.get $2 + i32.load offset=12 i32.const 2960 - call $~lib/array/Array<~lib/string/String>#join + call $~lib/util/string/joinStringArray local.set $0 global.get $~lib/memory/__stack_pointer local.tee $1 @@ -5058,8 +4848,11 @@ i32.const 2752 i32.store offset=20 local.get $2 + i32.load offset=4 + local.get $2 + i32.load offset=12 i32.const 2752 - call $~lib/array/Array<~lib/string/String>#join + call $~lib/util/string/joinStringArray local.set $0 global.get $~lib/memory/__stack_pointer local.tee $1 @@ -5081,8 +4874,11 @@ i32.const 2752 i32.store local.get $2 + i32.load offset=4 + local.get $2 + i32.load offset=12 i32.const 2752 - call $~lib/array/Array<~lib/string/String>#join + call $~lib/util/string/joinStringArray local.set $2 global.get $~lib/memory/__stack_pointer i32.const 4 @@ -5264,7 +5060,7 @@ local.get $2 i32.load offset=4 local.set $1 - loop $while-continue|023 + loop $while-continue|029 local.get $0 i32.const 0 i32.ge_s @@ -5282,7 +5078,7 @@ i32.const 1 i32.sub local.set $0 - br $while-continue|023 + br $while-continue|029 end end i32.const -1 @@ -5299,7 +5095,7 @@ call $~lib/builtins/abort unreachable end - block $__inlined_func$~lib/array/Array#lastIndexOf24 + block $__inlined_func$~lib/array/Array#lastIndexOf30 local.get $2 i32.load offset=12 local.tee $0 @@ -5307,7 +5103,7 @@ if i32.const -1 local.set $0 - br $__inlined_func$~lib/array/Array#lastIndexOf24 + br $__inlined_func$~lib/array/Array#lastIndexOf30 end local.get $0 i32.const 1 @@ -5321,7 +5117,7 @@ local.get $2 i32.load offset=4 local.set $1 - loop $while-continue|025 + loop $while-continue|031 local.get $0 i32.const 0 i32.ge_s @@ -5334,12 +5130,12 @@ i32.load i32.const 2 i32.eq - br_if $__inlined_func$~lib/array/Array#lastIndexOf24 + br_if $__inlined_func$~lib/array/Array#lastIndexOf30 local.get $0 i32.const 1 i32.sub local.set $0 - br $while-continue|025 + br $while-continue|031 end end i32.const -1 @@ -5354,7 +5150,7 @@ call $~lib/builtins/abort unreachable end - block $__inlined_func$~lib/array/Array#lastIndexOf26 + block $__inlined_func$~lib/array/Array#lastIndexOf32 local.get $2 i32.load offset=12 local.tee $0 @@ -5362,7 +5158,7 @@ if i32.const -1 local.set $0 - br $__inlined_func$~lib/array/Array#lastIndexOf26 + br $__inlined_func$~lib/array/Array#lastIndexOf32 end local.get $0 i32.const 2 @@ -5371,7 +5167,7 @@ local.get $2 i32.load offset=4 local.set $1 - loop $while-continue|027 + loop $while-continue|033 local.get $0 i32.const 0 i32.ge_s @@ -5384,12 +5180,12 @@ i32.load i32.const 2 i32.eq - br_if $__inlined_func$~lib/array/Array#lastIndexOf26 + br_if $__inlined_func$~lib/array/Array#lastIndexOf32 local.get $0 i32.const 1 i32.sub local.set $0 - br $while-continue|027 + br $while-continue|033 end end i32.const -1 @@ -5404,7 +5200,7 @@ call $~lib/builtins/abort unreachable end - block $__inlined_func$~lib/array/Array#lastIndexOf28 + block $__inlined_func$~lib/array/Array#lastIndexOf34 local.get $2 i32.load offset=12 local.tee $0 @@ -5412,7 +5208,7 @@ if i32.const -1 local.set $0 - br $__inlined_func$~lib/array/Array#lastIndexOf28 + br $__inlined_func$~lib/array/Array#lastIndexOf34 end local.get $0 i32.const 1 @@ -5421,7 +5217,7 @@ local.get $2 i32.load offset=4 local.set $2 - loop $while-continue|029 + loop $while-continue|035 local.get $0 i32.const 0 i32.ge_s @@ -5434,12 +5230,12 @@ i32.load i32.const 2 i32.eq - br_if $__inlined_func$~lib/array/Array#lastIndexOf28 + br_if $__inlined_func$~lib/array/Array#lastIndexOf34 local.get $0 i32.const 1 i32.sub local.set $0 - br $while-continue|029 + br $while-continue|035 end end i32.const -1 @@ -5462,12 +5258,12 @@ i32.const 0 i32.gt_s if - loop $while-continue|08 + loop $while-continue|036 global.get $~lib/rt/itcms/state if call $~lib/rt/itcms/step drop - br $while-continue|08 + br $while-continue|036 end end end @@ -6047,4 +5843,211 @@ global.set $~lib/memory/__stack_pointer local.get $3 ) + (func $~lib/util/string/joinStringArray (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 3188 + i32.lt_s + if + i32.const 19600 + i32.const 19648 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.tee $6 + i64.const 0 + i64.store + local.get $6 + i32.const 0 + i32.store offset=8 + local.get $1 + i32.const 1 + i32.sub + local.tee $6 + i32.const 0 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 2720 + return + end + local.get $6 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.load + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + i32.const 2720 + local.get $0 + select + return + end + loop $for-loop|0 + local.get $1 + local.get $5 + i32.gt_s + if + global.get $~lib/memory/__stack_pointer + local.get $0 + local.get $5 + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $7 + i32.store offset=4 + local.get $7 + if + local.get $4 + local.get $7 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 1 + i32.shr_u + i32.add + local.set $4 + end + local.get $5 + i32.const 1 + i32.add + local.set $5 + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + local.get $4 + local.get $6 + local.get $2 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 1 + i32.shr_u + local.tee $7 + i32.mul + i32.add + i32.const 1 + i32.shl + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $1 + i32.store offset=8 + i32.const 0 + local.set $5 + loop $for-loop|1 + local.get $5 + local.get $6 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + local.get $0 + local.get $5 + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $4 + i32.store offset=4 + local.get $4 + if + local.get $1 + local.get $3 + i32.const 1 + i32.shl + i32.add + local.get $4 + local.get $4 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 1 + i32.shr_u + local.tee $4 + i32.const 1 + i32.shl + call $~lib/memory/memory.copy + local.get $3 + local.get $4 + i32.add + local.set $3 + end + local.get $7 + if + local.get $1 + local.get $3 + i32.const 1 + i32.shl + i32.add + local.get $2 + local.get $7 + i32.const 1 + i32.shl + call $~lib/memory/memory.copy + local.get $3 + local.get $7 + i32.add + local.set $3 + end + local.get $5 + i32.const 1 + i32.add + local.set $5 + br $for-loop|1 + end + end + global.get $~lib/memory/__stack_pointer + local.get $0 + local.get $6 + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $0 + i32.store offset=4 + local.get $0 + if + local.get $1 + local.get $3 + i32.const 1 + i32.shl + i32.add + local.get $0 + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 1 + i32.shr_u + i32.const 1 + i32.shl + call $~lib/memory/memory.copy + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + ) ) diff --git a/tests/compiler/std/string-casemapping.optimized.wat b/tests/compiler/std/string-casemapping.optimized.wat index 3511d4eab8..0a1402542c 100644 --- a/tests/compiler/std/string-casemapping.optimized.wat +++ b/tests/compiler/std/string-casemapping.optimized.wat @@ -2,9 +2,9 @@ (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) (type $none_=>_none (func)) (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) + (type $i32_i32_=>_none (func (param i32 i32))) (type $i32_=>_i32 (func (param i32) (result i32))) (type $i32_=>_none (func (param i32))) - (type $i32_i32_=>_none (func (param i32 i32))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) (type $none_=>_i32 (func (result i32))) (type $i32_i32_f64_f64_f64_f64_f64_=>_none (func (param i32 i32 f64 f64 f64 f64 f64))) @@ -1480,7 +1480,7 @@ local.get $0 i32.const 4 i32.add - local.tee $0 + local.tee $1 i32.const 37476 i32.ge_u if @@ -1490,20 +1490,20 @@ call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT - local.get $0 + local.get $1 i32.const 4 i32.sub - local.set $1 - local.get $0 + local.set $0 + local.get $1 i32.const 15 i32.and i32.const 1 - local.get $0 + local.get $1 select if (result i32) i32.const 1 else - local.get $1 + local.get $0 i32.load i32.const 1 i32.and @@ -1516,14 +1516,11 @@ call $~lib/builtins/abort unreachable end - local.get $1 - local.tee $0 + local.get $0 + local.get $0 i32.load i32.const 1 i32.or - local.set $1 - local.get $0 - local.get $1 i32.store local.get $0 call $~lib/rt/tlsf/insertBlock @@ -1536,8 +1533,7 @@ local.tee $0 local.get $0 i32.store offset=4 - global.get $~lib/rt/itcms/toSpace - local.tee $0 + local.get $0 local.get $0 i32.store offset=8 i32.const 0 @@ -1677,80 +1673,11 @@ end end ) - (func $~lib/rt/itcms/__new (param $0 i32) (param $1 i32) (result i32) + (func $~lib/rt/tlsf/allocateBlock (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) - (local $5 i32) - (local $6 i32) - local.get $0 - i32.const 1073741804 - i32.ge_u - if - i32.const 1088 - i32.const 1152 - i32.const 260 - i32.const 31 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/rt/itcms/total - global.get $~lib/rt/itcms/threshold - i32.ge_u - if - block $__inlined_func$~lib/rt/itcms/interrupt - i32.const 2048 - local.set $2 - loop $do-continue|0 - local.get $2 - call $~lib/rt/itcms/step - i32.sub - local.set $2 - global.get $~lib/rt/itcms/state - i32.eqz - if - global.get $~lib/rt/itcms/total - i64.extend_i32_u - i64.const 200 - i64.mul - i64.const 100 - i64.div_u - i32.wrap_i64 - i32.const 1024 - i32.add - global.set $~lib/rt/itcms/threshold - br $__inlined_func$~lib/rt/itcms/interrupt - end - local.get $2 - i32.const 0 - i32.gt_s - br_if $do-continue|0 - end - global.get $~lib/rt/itcms/total - local.tee $2 - local.get $2 - global.get $~lib/rt/itcms/threshold - i32.sub - i32.const 1024 - i32.lt_u - i32.const 10 - i32.shl - i32.add - global.set $~lib/rt/itcms/threshold - end - end - local.get $0 - i32.const 16 - i32.add - local.set $2 - global.get $~lib/rt/tlsf/ROOT - i32.eqz - if - call $~lib/rt/tlsf/initialize - end - global.get $~lib/rt/tlsf/ROOT - local.set $3 - local.get $2 + local.get $1 i32.const 1073741820 i32.gt_u if @@ -1761,14 +1688,15 @@ call $~lib/builtins/abort unreachable end - local.get $3 - local.get $2 + local.get $0 + local.tee $2 + local.get $1 i32.const 12 i32.le_u if (result i32) i32.const 12 else - local.get $2 + local.get $1 i32.const 19 i32.add i32.const -16 @@ -1776,19 +1704,19 @@ i32.const 4 i32.sub end - local.tee $2 + local.tee $0 call $~lib/rt/tlsf/searchBlock - local.tee $4 + local.tee $1 i32.eqz if - local.get $2 + local.get $0 i32.const 536870910 i32.lt_u if (result i32) - local.get $2 + local.get $0 i32.const 1 i32.const 27 - local.get $2 + local.get $0 i32.clz i32.sub i32.shl @@ -1796,16 +1724,16 @@ i32.sub i32.add else - local.get $2 + local.get $0 end i32.const 4 memory.size - local.tee $6 + local.tee $1 i32.const 16 i32.shl i32.const 4 i32.sub - local.get $3 + local.get $2 i32.load offset=1568 i32.ne i32.shl @@ -1816,18 +1744,18 @@ i32.and i32.const 16 i32.shr_u - local.set $5 - local.get $6 - local.get $5 - local.get $5 - local.get $6 - i32.lt_s + local.set $3 + local.get $1 + local.get $3 + local.get $1 + local.get $3 + i32.gt_s select memory.grow i32.const 0 i32.lt_s if - local.get $5 + local.get $3 memory.grow i32.const 0 i32.lt_s @@ -1835,18 +1763,18 @@ unreachable end end - local.get $3 - local.get $6 + local.get $2 + local.get $1 i32.const 16 i32.shl memory.size i32.const 16 i32.shl call $~lib/rt/tlsf/addMemory - local.get $3 local.get $2 + local.get $0 call $~lib/rt/tlsf/searchBlock - local.tee $4 + local.tee $1 i32.eqz if i32.const 0 @@ -1857,8 +1785,8 @@ unreachable end end - local.get $2 - local.get $4 + local.get $0 + local.get $1 i32.load i32.const -4 i32.and @@ -1871,13 +1799,13 @@ call $~lib/builtins/abort unreachable end - local.get $3 - local.get $4 + local.get $2 + local.get $1 call $~lib/rt/tlsf/removeBlock - local.get $4 + local.get $1 i32.load - local.set $6 - local.get $2 + local.set $3 + local.get $0 i32.const 4 i32.add i32.const 15 @@ -1890,54 +1818,54 @@ call $~lib/builtins/abort unreachable end - local.get $6 + local.get $3 i32.const -4 i32.and - local.get $2 + local.get $0 i32.sub - local.tee $5 + local.tee $4 i32.const 16 i32.ge_u if - local.get $4 - local.get $2 - local.get $6 + local.get $1 + local.get $0 + local.get $3 i32.const 2 i32.and i32.or i32.store - local.get $2 - local.get $4 + local.get $0 + local.get $1 i32.const 4 i32.add i32.add - local.tee $2 - local.get $5 + local.tee $0 + local.get $4 i32.const 4 i32.sub i32.const 1 i32.or i32.store - local.get $3 local.get $2 + local.get $0 call $~lib/rt/tlsf/insertBlock else - local.get $4 - local.get $6 + local.get $1 + local.get $3 i32.const -2 i32.and i32.store - local.get $4 + local.get $1 i32.const 4 i32.add - local.tee $2 - local.get $4 + local.tee $0 + local.get $1 i32.load i32.const -4 i32.and i32.add - local.get $2 - local.get $4 + local.get $0 + local.get $1 i32.load i32.const -4 i32.and @@ -1947,182 +1875,143 @@ i32.and i32.store end - local.get $4 local.get $1 - i32.store offset=12 - local.get $4 - local.get $0 - i32.store offset=16 - global.get $~lib/rt/itcms/fromSpace - local.tee $1 - i32.load offset=8 - local.set $2 - local.get $4 - local.get $1 - global.get $~lib/rt/itcms/white - i32.or - i32.store offset=4 - local.get $4 - local.get $2 - i32.store offset=8 - local.get $2 - local.get $4 - local.get $2 - i32.load offset=4 - i32.const 3 - i32.and - i32.or - i32.store offset=4 - local.get $1 - local.get $4 - i32.store offset=8 - global.get $~lib/rt/itcms/total - local.get $4 - i32.load - i32.const -4 - i32.and - i32.const 4 - i32.add - i32.add - global.set $~lib/rt/itcms/total - local.get $4 - i32.const 20 - i32.add - local.tee $2 - local.set $3 + ) + (func $~lib/memory/memory.fill (param $0 i32) (param $1 i32) + (local $2 i32) block $~lib/util/memory/memset|inlined.0 - local.get $0 + local.get $1 i32.eqz br_if $~lib/util/memory/memset|inlined.0 - local.get $3 + local.get $0 i32.const 0 i32.store8 local.get $0 - local.get $3 + local.get $1 i32.add - local.tee $1 + local.tee $2 i32.const 1 i32.sub i32.const 0 i32.store8 - local.get $0 + local.get $1 i32.const 2 i32.le_u br_if $~lib/util/memory/memset|inlined.0 - local.get $3 + local.get $0 i32.const 0 i32.store8 offset=1 - local.get $3 + local.get $0 i32.const 0 i32.store8 offset=2 - local.get $1 + local.get $2 i32.const 2 i32.sub i32.const 0 i32.store8 - local.get $1 + local.get $2 i32.const 3 i32.sub i32.const 0 i32.store8 - local.get $0 + local.get $1 i32.const 6 i32.le_u br_if $~lib/util/memory/memset|inlined.0 - local.get $3 + local.get $0 i32.const 0 i32.store8 offset=3 - local.get $1 + local.get $2 i32.const 4 i32.sub i32.const 0 i32.store8 - local.get $0 + local.get $1 i32.const 8 i32.le_u br_if $~lib/util/memory/memset|inlined.0 - local.get $3 + local.get $0 i32.const 0 - local.get $3 + local.get $0 i32.sub i32.const 3 i32.and - local.tee $1 + local.tee $2 i32.add - local.tee $5 + local.tee $0 i32.const 0 i32.store - local.get $5 local.get $0 local.get $1 + local.get $2 i32.sub i32.const -4 i32.and - local.tee $3 + local.tee $2 i32.add - local.tee $0 + local.tee $1 i32.const 4 i32.sub i32.const 0 i32.store - local.get $3 + local.get $2 i32.const 8 i32.le_u br_if $~lib/util/memory/memset|inlined.0 - local.get $5 + local.get $0 i32.const 0 i32.store offset=4 - local.get $5 + local.get $0 i32.const 0 i32.store offset=8 - local.get $0 + local.get $1 i32.const 12 i32.sub i32.const 0 i32.store - local.get $0 + local.get $1 i32.const 8 i32.sub i32.const 0 i32.store - local.get $3 + local.get $2 i32.const 24 i32.le_u br_if $~lib/util/memory/memset|inlined.0 - local.get $5 + local.get $0 i32.const 0 i32.store offset=12 - local.get $5 + local.get $0 i32.const 0 i32.store offset=16 - local.get $5 + local.get $0 i32.const 0 i32.store offset=20 - local.get $5 + local.get $0 i32.const 0 i32.store offset=24 - local.get $0 + local.get $1 i32.const 28 i32.sub i32.const 0 i32.store - local.get $0 + local.get $1 i32.const 24 i32.sub i32.const 0 i32.store - local.get $0 + local.get $1 i32.const 20 i32.sub i32.const 0 i32.store - local.get $0 + local.get $1 i32.const 16 i32.sub i32.const 0 i32.store - local.get $5 - local.get $5 + local.get $0 + local.get $0 i32.const 4 i32.and i32.const 24 @@ -2130,7 +2019,7 @@ local.tee $1 i32.add local.set $0 - local.get $3 + local.get $2 local.get $1 i32.sub local.set $1 @@ -2163,7 +2052,123 @@ end end end + ) + (func $~lib/rt/itcms/__new (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + local.get $0 + i32.const 1073741804 + i32.ge_u + if + i32.const 1088 + i32.const 1152 + i32.const 260 + i32.const 31 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.ge_u + if + block $__inlined_func$~lib/rt/itcms/interrupt + i32.const 2048 + local.set $2 + loop $do-continue|0 + local.get $2 + call $~lib/rt/itcms/step + i32.sub + local.set $2 + global.get $~lib/rt/itcms/state + i32.eqz + if + global.get $~lib/rt/itcms/total + i64.extend_i32_u + i64.const 200 + i64.mul + i64.const 100 + i64.div_u + i32.wrap_i64 + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold + br $__inlined_func$~lib/rt/itcms/interrupt + end + local.get $2 + i32.const 0 + i32.gt_s + br_if $do-continue|0 + end + global.get $~lib/rt/itcms/total + local.tee $2 + local.get $2 + global.get $~lib/rt/itcms/threshold + i32.sub + i32.const 1024 + i32.lt_u + i32.const 10 + i32.shl + i32.add + global.set $~lib/rt/itcms/threshold + end + end + local.get $0 + i32.const 16 + i32.add + local.set $2 + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT local.get $2 + call $~lib/rt/tlsf/allocateBlock + local.tee $2 + local.get $1 + i32.store offset=12 + local.get $2 + local.get $0 + i32.store offset=16 + global.get $~lib/rt/itcms/fromSpace + local.tee $3 + i32.load offset=8 + local.set $1 + local.get $2 + local.get $3 + global.get $~lib/rt/itcms/white + i32.or + i32.store offset=4 + local.get $2 + local.get $1 + i32.store offset=8 + local.get $1 + local.get $2 + local.get $1 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + local.get $3 + local.get $2 + i32.store offset=8 + global.get $~lib/rt/itcms/total + local.get $2 + i32.load + i32.const -4 + i32.and + i32.const 4 + i32.add + i32.add + global.set $~lib/rt/itcms/total + local.get $2 + i32.const 20 + i32.add + local.tee $1 + local.get $0 + call $~lib/memory/memory.fill + local.get $1 ) (func $~lib/util/casemap/casemap (param $0 i32) (param $1 i32) (result i32) (local $2 i32) @@ -3327,7 +3332,7 @@ i32.load offset=16 i32.const 1 i32.shr_u - local.tee $4 + local.tee $2 local.get $1 i32.const 20 i32.sub @@ -3341,18 +3346,15 @@ end block $__inlined_func$~lib/util/string/compareImpl (result i32) local.get $0 - local.set $2 - local.get $1 - local.set $3 - local.get $2 + local.tee $3 i32.const 7 i32.and - local.get $3 + local.get $1 i32.const 7 i32.and i32.or i32.const 1 - local.get $4 + local.get $2 local.tee $0 i32.const 4 i32.ge_u @@ -3360,20 +3362,20 @@ i32.eqz if loop $do-continue|0 - local.get $2 - i64.load local.get $3 i64.load + local.get $1 + i64.load i64.eq if - local.get $2 - i32.const 8 - i32.add - local.set $2 local.get $3 i32.const 8 i32.add local.set $3 + local.get $1 + i32.const 8 + i32.add + local.set $1 local.get $0 i32.const 4 i32.sub @@ -3386,33 +3388,33 @@ end loop $while-continue|1 local.get $0 - local.tee $1 + local.tee $2 i32.const 1 i32.sub local.set $0 - local.get $1 + local.get $2 if - local.get $2 - i32.load16_u - local.tee $1 local.get $3 i32.load16_u + local.tee $2 + local.get $1 + i32.load16_u local.tee $4 i32.ne if - local.get $1 + local.get $2 local.get $4 i32.sub br $__inlined_func$~lib/util/string/compareImpl end - local.get $2 - i32.const 2 - i32.add - local.set $2 local.get $3 i32.const 2 i32.add local.set $3 + local.get $1 + i32.const 2 + i32.add + local.set $1 br $while-continue|1 end end diff --git a/tests/compiler/std/string-encoding.optimized.wat b/tests/compiler/std/string-encoding.optimized.wat index 192f170923..b624be2567 100644 --- a/tests/compiler/std/string-encoding.optimized.wat +++ b/tests/compiler/std/string-encoding.optimized.wat @@ -1,12 +1,13 @@ (module - (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) (type $none_=>_none (func)) + (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) (type $i32_=>_none (func (param i32))) - (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) (type $i32_i32_=>_none (func (param i32 i32))) + (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) (type $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) (type $none_=>_i32 (func (result i32))) + (type $i32_i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32 i32))) (type $i32_=>_i32 (func (param i32) (result i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) @@ -1065,7 +1066,7 @@ local.get $0 i32.const 4 i32.add - local.tee $0 + local.tee $1 i32.const 38924 i32.ge_u if @@ -1075,20 +1076,20 @@ call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT - local.get $0 + local.get $1 i32.const 4 i32.sub - local.set $1 - local.get $0 + local.set $0 + local.get $1 i32.const 15 i32.and i32.const 1 - local.get $0 + local.get $1 select if (result i32) i32.const 1 else - local.get $1 + local.get $0 i32.load i32.const 1 i32.and @@ -1101,14 +1102,11 @@ call $~lib/builtins/abort unreachable end - local.get $1 - local.tee $0 + local.get $0 + local.get $0 i32.load i32.const 1 i32.or - local.set $1 - local.get $0 - local.get $1 i32.store local.get $0 call $~lib/rt/tlsf/insertBlock @@ -1121,8 +1119,7 @@ local.tee $0 local.get $0 i32.store offset=4 - global.get $~lib/rt/itcms/toSpace - local.tee $0 + local.get $0 local.get $0 i32.store offset=8 i32.const 0 @@ -1262,80 +1259,11 @@ end end ) - (func $~lib/rt/itcms/__new (param $0 i32) (param $1 i32) (result i32) + (func $~lib/rt/tlsf/allocateBlock (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) - (local $5 i32) - (local $6 i32) - local.get $0 - i32.const 1073741804 - i32.ge_u - if - i32.const 1152 - i32.const 1216 - i32.const 260 - i32.const 31 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/rt/itcms/total - global.get $~lib/rt/itcms/threshold - i32.ge_u - if - block $__inlined_func$~lib/rt/itcms/interrupt - i32.const 2048 - local.set $2 - loop $do-continue|0 - local.get $2 - call $~lib/rt/itcms/step - i32.sub - local.set $2 - global.get $~lib/rt/itcms/state - i32.eqz - if - global.get $~lib/rt/itcms/total - i64.extend_i32_u - i64.const 200 - i64.mul - i64.const 100 - i64.div_u - i32.wrap_i64 - i32.const 1024 - i32.add - global.set $~lib/rt/itcms/threshold - br $__inlined_func$~lib/rt/itcms/interrupt - end - local.get $2 - i32.const 0 - i32.gt_s - br_if $do-continue|0 - end - global.get $~lib/rt/itcms/total - local.tee $2 - local.get $2 - global.get $~lib/rt/itcms/threshold - i32.sub - i32.const 1024 - i32.lt_u - i32.const 10 - i32.shl - i32.add - global.set $~lib/rt/itcms/threshold - end - end - local.get $0 - i32.const 16 - i32.add - local.set $2 - global.get $~lib/rt/tlsf/ROOT - i32.eqz - if - call $~lib/rt/tlsf/initialize - end - global.get $~lib/rt/tlsf/ROOT - local.set $3 - local.get $2 + local.get $1 i32.const 1073741820 i32.gt_u if @@ -1346,14 +1274,15 @@ call $~lib/builtins/abort unreachable end - local.get $3 - local.get $2 + local.get $0 + local.tee $2 + local.get $1 i32.const 12 i32.le_u if (result i32) i32.const 12 else - local.get $2 + local.get $1 i32.const 19 i32.add i32.const -16 @@ -1361,19 +1290,19 @@ i32.const 4 i32.sub end - local.tee $2 + local.tee $0 call $~lib/rt/tlsf/searchBlock - local.tee $4 + local.tee $1 i32.eqz if - local.get $2 + local.get $0 i32.const 536870910 i32.lt_u if (result i32) - local.get $2 + local.get $0 i32.const 1 i32.const 27 - local.get $2 + local.get $0 i32.clz i32.sub i32.shl @@ -1381,16 +1310,16 @@ i32.sub i32.add else - local.get $2 + local.get $0 end i32.const 4 memory.size - local.tee $6 + local.tee $1 i32.const 16 i32.shl i32.const 4 i32.sub - local.get $3 + local.get $2 i32.load offset=1568 i32.ne i32.shl @@ -1401,18 +1330,18 @@ i32.and i32.const 16 i32.shr_u - local.set $5 - local.get $6 - local.get $5 - local.get $5 - local.get $6 - i32.lt_s + local.set $3 + local.get $1 + local.get $3 + local.get $1 + local.get $3 + i32.gt_s select memory.grow i32.const 0 i32.lt_s if - local.get $5 + local.get $3 memory.grow i32.const 0 i32.lt_s @@ -1420,18 +1349,18 @@ unreachable end end - local.get $3 - local.get $6 + local.get $2 + local.get $1 i32.const 16 i32.shl memory.size i32.const 16 i32.shl call $~lib/rt/tlsf/addMemory - local.get $3 local.get $2 + local.get $0 call $~lib/rt/tlsf/searchBlock - local.tee $4 + local.tee $1 i32.eqz if i32.const 0 @@ -1442,8 +1371,8 @@ unreachable end end - local.get $2 - local.get $4 + local.get $0 + local.get $1 i32.load i32.const -4 i32.and @@ -1456,13 +1385,13 @@ call $~lib/builtins/abort unreachable end - local.get $3 - local.get $4 + local.get $2 + local.get $1 call $~lib/rt/tlsf/removeBlock - local.get $4 + local.get $1 i32.load - local.set $6 - local.get $2 + local.set $3 + local.get $0 i32.const 4 i32.add i32.const 15 @@ -1475,54 +1404,54 @@ call $~lib/builtins/abort unreachable end - local.get $6 + local.get $3 i32.const -4 i32.and - local.get $2 + local.get $0 i32.sub - local.tee $5 + local.tee $4 i32.const 16 i32.ge_u if - local.get $4 - local.get $2 - local.get $6 + local.get $1 + local.get $0 + local.get $3 i32.const 2 i32.and i32.or i32.store - local.get $2 - local.get $4 + local.get $0 + local.get $1 i32.const 4 i32.add i32.add - local.tee $2 - local.get $5 + local.tee $0 + local.get $4 i32.const 4 i32.sub i32.const 1 i32.or i32.store - local.get $3 local.get $2 + local.get $0 call $~lib/rt/tlsf/insertBlock else - local.get $4 - local.get $6 + local.get $1 + local.get $3 i32.const -2 i32.and i32.store - local.get $4 + local.get $1 i32.const 4 i32.add - local.tee $2 - local.get $4 + local.tee $0 + local.get $1 i32.load i32.const -4 i32.and i32.add - local.get $2 - local.get $4 + local.get $0 + local.get $1 i32.load i32.const -4 i32.and @@ -1532,182 +1461,143 @@ i32.and i32.store end - local.get $4 - local.get $1 - i32.store offset=12 - local.get $4 - local.get $0 - i32.store offset=16 - global.get $~lib/rt/itcms/fromSpace - local.tee $1 - i32.load offset=8 - local.set $2 - local.get $4 - local.get $1 - global.get $~lib/rt/itcms/white - i32.or - i32.store offset=4 - local.get $4 - local.get $2 - i32.store offset=8 - local.get $2 - local.get $4 - local.get $2 - i32.load offset=4 - i32.const 3 - i32.and - i32.or - i32.store offset=4 local.get $1 - local.get $4 - i32.store offset=8 - global.get $~lib/rt/itcms/total - local.get $4 - i32.load - i32.const -4 - i32.and - i32.const 4 - i32.add - i32.add - global.set $~lib/rt/itcms/total - local.get $4 - i32.const 20 - i32.add - local.tee $2 - local.set $3 + ) + (func $~lib/memory/memory.fill (param $0 i32) (param $1 i32) + (local $2 i32) block $~lib/util/memory/memset|inlined.0 - local.get $0 + local.get $1 i32.eqz br_if $~lib/util/memory/memset|inlined.0 - local.get $3 + local.get $0 i32.const 0 i32.store8 local.get $0 - local.get $3 + local.get $1 i32.add - local.tee $1 + local.tee $2 i32.const 1 i32.sub i32.const 0 i32.store8 - local.get $0 + local.get $1 i32.const 2 i32.le_u br_if $~lib/util/memory/memset|inlined.0 - local.get $3 + local.get $0 i32.const 0 i32.store8 offset=1 - local.get $3 + local.get $0 i32.const 0 i32.store8 offset=2 - local.get $1 + local.get $2 i32.const 2 i32.sub i32.const 0 i32.store8 - local.get $1 + local.get $2 i32.const 3 i32.sub i32.const 0 i32.store8 - local.get $0 + local.get $1 i32.const 6 i32.le_u br_if $~lib/util/memory/memset|inlined.0 - local.get $3 + local.get $0 i32.const 0 i32.store8 offset=3 - local.get $1 + local.get $2 i32.const 4 i32.sub i32.const 0 i32.store8 - local.get $0 + local.get $1 i32.const 8 i32.le_u br_if $~lib/util/memory/memset|inlined.0 - local.get $3 + local.get $0 i32.const 0 - local.get $3 + local.get $0 i32.sub i32.const 3 i32.and - local.tee $1 + local.tee $2 i32.add - local.tee $5 + local.tee $0 i32.const 0 i32.store - local.get $5 local.get $0 local.get $1 + local.get $2 i32.sub i32.const -4 i32.and - local.tee $3 + local.tee $2 i32.add - local.tee $0 + local.tee $1 i32.const 4 i32.sub i32.const 0 i32.store - local.get $3 + local.get $2 i32.const 8 i32.le_u br_if $~lib/util/memory/memset|inlined.0 - local.get $5 + local.get $0 i32.const 0 i32.store offset=4 - local.get $5 + local.get $0 i32.const 0 i32.store offset=8 - local.get $0 + local.get $1 i32.const 12 i32.sub i32.const 0 i32.store - local.get $0 + local.get $1 i32.const 8 i32.sub i32.const 0 i32.store - local.get $3 + local.get $2 i32.const 24 i32.le_u br_if $~lib/util/memory/memset|inlined.0 - local.get $5 + local.get $0 i32.const 0 i32.store offset=12 - local.get $5 + local.get $0 i32.const 0 i32.store offset=16 - local.get $5 + local.get $0 i32.const 0 i32.store offset=20 - local.get $5 + local.get $0 i32.const 0 i32.store offset=24 - local.get $0 + local.get $1 i32.const 28 i32.sub i32.const 0 i32.store - local.get $0 + local.get $1 i32.const 24 i32.sub i32.const 0 i32.store - local.get $0 + local.get $1 i32.const 20 i32.sub i32.const 0 i32.store - local.get $0 + local.get $1 i32.const 16 i32.sub i32.const 0 i32.store - local.get $5 - local.get $5 + local.get $0 + local.get $0 i32.const 4 i32.and i32.const 24 @@ -1715,7 +1605,7 @@ local.tee $1 i32.add local.set $0 - local.get $3 + local.get $2 local.get $1 i32.sub local.set $1 @@ -1748,7 +1638,123 @@ end end end + ) + (func $~lib/rt/itcms/__new (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + local.get $0 + i32.const 1073741804 + i32.ge_u + if + i32.const 1152 + i32.const 1216 + i32.const 260 + i32.const 31 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.ge_u + if + block $__inlined_func$~lib/rt/itcms/interrupt + i32.const 2048 + local.set $2 + loop $do-continue|0 + local.get $2 + call $~lib/rt/itcms/step + i32.sub + local.set $2 + global.get $~lib/rt/itcms/state + i32.eqz + if + global.get $~lib/rt/itcms/total + i64.extend_i32_u + i64.const 200 + i64.mul + i64.const 100 + i64.div_u + i32.wrap_i64 + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold + br $__inlined_func$~lib/rt/itcms/interrupt + end + local.get $2 + i32.const 0 + i32.gt_s + br_if $do-continue|0 + end + global.get $~lib/rt/itcms/total + local.tee $2 + local.get $2 + global.get $~lib/rt/itcms/threshold + i32.sub + i32.const 1024 + i32.lt_u + i32.const 10 + i32.shl + i32.add + global.set $~lib/rt/itcms/threshold + end + end + local.get $0 + i32.const 16 + i32.add + local.set $2 + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $2 + call $~lib/rt/tlsf/allocateBlock + local.tee $2 + local.get $1 + i32.store offset=12 + local.get $2 + local.get $0 + i32.store offset=16 + global.get $~lib/rt/itcms/fromSpace + local.tee $3 + i32.load offset=8 + local.set $1 + local.get $2 + local.get $3 + global.get $~lib/rt/itcms/white + i32.or + i32.store offset=4 + local.get $2 + local.get $1 + i32.store offset=8 + local.get $1 + local.get $2 + local.get $1 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + local.get $3 + local.get $2 + i32.store offset=8 + global.get $~lib/rt/itcms/total + local.get $2 + i32.load + i32.const -4 + i32.and + i32.const 4 + i32.add + i32.add + global.set $~lib/rt/itcms/total local.get $2 + i32.const 20 + i32.add + local.tee $1 + local.get $0 + call $~lib/memory/memory.fill + local.get $1 ) (func $~lib/util/memory/memcpy (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) @@ -2723,7 +2729,7 @@ i32.load offset=16 i32.const 1 i32.shr_u - local.tee $4 + local.tee $2 local.get $1 i32.const 20 i32.sub @@ -2737,18 +2743,15 @@ end block $__inlined_func$~lib/util/string/compareImpl (result i32) local.get $0 - local.set $2 - local.get $1 - local.set $3 - local.get $2 + local.tee $3 i32.const 7 i32.and - local.get $3 + local.get $1 i32.const 7 i32.and i32.or i32.const 1 - local.get $4 + local.get $2 local.tee $0 i32.const 4 i32.ge_u @@ -2756,20 +2759,20 @@ i32.eqz if loop $do-continue|0 - local.get $2 - i64.load local.get $3 i64.load + local.get $1 + i64.load i64.eq if - local.get $2 - i32.const 8 - i32.add - local.set $2 local.get $3 i32.const 8 i32.add local.set $3 + local.get $1 + i32.const 8 + i32.add + local.set $1 local.get $0 i32.const 4 i32.sub @@ -2782,33 +2785,33 @@ end loop $while-continue|1 local.get $0 - local.tee $1 + local.tee $2 i32.const 1 i32.sub local.set $0 - local.get $1 + local.get $2 if - local.get $2 - i32.load16_u - local.tee $1 local.get $3 i32.load16_u + local.tee $2 + local.get $1 + i32.load16_u local.tee $4 i32.ne if - local.get $1 + local.get $2 local.get $4 i32.sub br $__inlined_func$~lib/util/string/compareImpl end - local.get $2 - i32.const 2 - i32.add - local.set $2 local.get $3 i32.const 2 i32.add local.set $3 + local.get $1 + i32.const 2 + i32.add + local.set $1 br $while-continue|1 end end @@ -2907,56 +2910,251 @@ end local.get $2 ) - (func $~lib/string/String.UTF8.encode@varargs (param $0 i32) (param $1 i32) (result i32) - block $2of2 - block $0of2 - block $outOfRange - global.get $~argumentsLength - i32.const 1 - i32.sub - br_table $0of2 $2of2 $2of2 $outOfRange - end - unreachable - end - i32.const 0 - local.set $1 - end + (func $~lib/string/String.UTF8.encodeUnsafe (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) + (local $5 i32) + (local $6 i32) local.get $0 local.get $1 - i32.const 0 - call $~lib/string/String.UTF8.encode - ) - (func $~lib/rt/__visit_members (param $0 i32) - block $invalid - block $~lib/arraybuffer/ArrayBufferView - block $~lib/string/String - block $~lib/arraybuffer/ArrayBuffer - local.get $0 - i32.const 8 - i32.sub - i32.load - br_table $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $invalid - end - return - end - return - end + i32.const 1 + i32.shl + i32.add + local.set $5 + local.get $2 + local.set $1 + loop $while-continue|0 local.get $0 - i32.load - local.tee $0 + local.get $5 + i32.lt_u if local.get $0 - call $~lib/rt/itcms/__visit - end - return - end - unreachable - ) + i32.load16_u + local.tee $2 + i32.const 128 + i32.lt_u + if (result i32) + local.get $1 + local.get $2 + i32.store8 + local.get $1 + i32.const 1 + i32.add + else + local.get $2 + i32.const 2048 + i32.lt_u + if (result i32) + local.get $1 + local.get $2 + i32.const 6 + i32.shr_u + i32.const 192 + i32.or + local.get $2 + i32.const 63 + i32.and + i32.const 128 + i32.or + i32.const 8 + i32.shl + i32.or + i32.store16 + local.get $1 + i32.const 2 + i32.add + else + local.get $2 + i32.const 63488 + i32.and + i32.const 55296 + i32.eq + if + local.get $5 + local.get $0 + i32.const 2 + i32.add + i32.gt_u + i32.const 0 + local.get $2 + i32.const 56320 + i32.lt_u + select + if + local.get $0 + i32.load16_u offset=2 + local.tee $6 + i32.const 64512 + i32.and + i32.const 56320 + i32.eq + if + local.get $1 + local.get $2 + i32.const 1023 + i32.and + i32.const 10 + i32.shl + i32.const 65536 + i32.add + local.get $6 + i32.const 1023 + i32.and + i32.or + local.tee $2 + i32.const 63 + i32.and + i32.const 128 + i32.or + i32.const 24 + i32.shl + local.get $2 + i32.const 6 + i32.shr_u + i32.const 63 + i32.and + i32.const 128 + i32.or + i32.const 16 + i32.shl + i32.or + local.get $2 + i32.const 12 + i32.shr_u + i32.const 63 + i32.and + i32.const 128 + i32.or + i32.const 8 + i32.shl + i32.or + local.get $2 + i32.const 18 + i32.shr_u + i32.const 240 + i32.or + i32.or + i32.store + local.get $1 + i32.const 4 + i32.add + local.set $1 + local.get $0 + i32.const 4 + i32.add + local.set $0 + br $while-continue|0 + end + end + local.get $4 + if (result i32) + local.get $4 + i32.const 2 + i32.eq + if + i32.const 1712 + i32.const 1776 + i32.const 739 + i32.const 49 + call $~lib/builtins/abort + unreachable + end + i32.const 65533 + else + local.get $2 + end + local.set $2 + end + local.get $1 + local.get $2 + i32.const 12 + i32.shr_u + i32.const 224 + i32.or + local.get $2 + i32.const 6 + i32.shr_u + i32.const 63 + i32.and + i32.const 128 + i32.or + i32.const 8 + i32.shl + i32.or + i32.store16 + local.get $1 + local.get $2 + i32.const 63 + i32.and + i32.const 128 + i32.or + i32.store8 offset=2 + local.get $1 + i32.const 3 + i32.add + end + end + local.set $1 + local.get $0 + i32.const 2 + i32.add + local.set $0 + br $while-continue|0 + end + end + local.get $3 + if + local.get $1 + i32.const 0 + i32.store8 + end + ) + (func $~lib/string/String.UTF8.encode@varargs (param $0 i32) (param $1 i32) (result i32) + block $2of2 + block $0of2 + block $outOfRange + global.get $~argumentsLength + i32.const 1 + i32.sub + br_table $0of2 $2of2 $2of2 $outOfRange + end + unreachable + end + i32.const 0 + local.set $1 + end + local.get $0 + local.get $1 + i32.const 0 + call $~lib/string/String.UTF8.encode + ) + (func $~lib/rt/__visit_members (param $0 i32) + block $invalid + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $invalid + end + return + end + return + end + local.get $0 + i32.load + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + return + end + unreachable + ) (func $~start (local $0 i32) (local $1 i32) - (local $2 i32) - (local $3 i32) global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub @@ -3033,8 +3231,9 @@ i32.store i32.const 1440 global.set $~lib/rt/itcms/fromSpace + call $std/string-encoding/testUTF16Encode global.get $~lib/memory/__stack_pointer - i32.const 8 + i32.const 12 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -3046,6 +3245,9 @@ i64.const 0 i64.store local.get $0 + i32.const 0 + i32.store offset=8 + local.get $0 i32.const 1056 i32.store local.get $0 @@ -3054,155 +3256,237 @@ local.tee $0 i32.store offset=4 local.get $0 + local.get $0 i32.const 20 i32.sub i32.load offset=16 - i32.const 12 - i32.ne + call $~lib/string/String.UTF16.decodeUnsafe + local.set $0 + global.get $~lib/memory/__stack_pointer + local.tee $1 + local.get $0 + i32.store + local.get $1 + i32.const 1056 + i32.store offset=8 + local.get $0 + i32.const 1056 + call $~lib/string/String.__eq + i32.eqz if i32.const 0 i32.const 1088 - i32.const 15 + i32.const 33 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $0 - i32.load8_u - i32.const 1 - i32.ne - if - i32.const 0 - i32.const 1088 - i32.const 16 - i32.const 3 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + call $std/string-encoding/testUTF16DecodeUnsafe + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 22540 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + local.tee $0 + i32.const 0 + i32.store + local.get $0 + i32.const 1056 + i32.store + i32.const 1056 + i32.const 0 + call $~lib/string/String.UTF8.byteLength + i32.const 10 + i32.ne + if + i32.const 0 + i32.const 1088 + i32.const 55 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 1056 + i32.store + i32.const 1056 + i32.const 1 + call $~lib/string/String.UTF8.byteLength + i32.const 11 + i32.ne + if + i32.const 0 + i32.const 1088 + i32.const 56 + i32.const 3 call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 22540 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + local.tee $0 + i64.const 0 + i64.store local.get $0 - i32.load8_u offset=1 - i32.const 216 + i32.const 1056 + i32.store + i32.const 1 + global.set $~argumentsLength + local.get $0 + i32.const 1056 + i32.const 0 + call $~lib/string/String.UTF8.encode@varargs + local.tee $0 + i32.store offset=4 + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 10 i32.ne if i32.const 0 i32.const 1088 - i32.const 17 + i32.const 63 i32.const 3 call $~lib/builtins/abort unreachable end local.get $0 - i32.load8_u offset=2 - i32.const 55 + i32.load8_u + i32.const 240 i32.ne if i32.const 0 i32.const 1088 - i32.const 18 + i32.const 64 i32.const 3 call $~lib/builtins/abort unreachable end local.get $0 - i32.load8_u offset=3 - i32.const 220 + i32.load8_u offset=1 + i32.const 144 i32.ne if i32.const 0 i32.const 1088 - i32.const 19 + i32.const 65 i32.const 3 call $~lib/builtins/abort unreachable end local.get $0 - i32.load8_u offset=4 - i32.const 104 + i32.load8_u offset=2 + i32.const 144 i32.ne if i32.const 0 i32.const 1088 - i32.const 20 + i32.const 66 i32.const 3 call $~lib/builtins/abort unreachable end local.get $0 - i32.load8_u offset=5 + i32.load8_u offset=3 + i32.const 183 + i32.ne if i32.const 0 i32.const 1088 - i32.const 21 + i32.const 67 i32.const 3 call $~lib/builtins/abort unreachable end local.get $0 - i32.load8_u offset=6 - i32.const 105 + i32.load8_u offset=4 + i32.const 104 i32.ne if i32.const 0 i32.const 1088 - i32.const 22 + i32.const 68 i32.const 3 call $~lib/builtins/abort unreachable end local.get $0 - i32.load8_u offset=7 + i32.load8_u offset=5 + i32.const 105 + i32.ne if i32.const 0 i32.const 1088 - i32.const 23 + i32.const 69 i32.const 3 call $~lib/builtins/abort unreachable end local.get $0 - i32.load8_u offset=8 - i32.const 82 + i32.load8_u offset=6 + i32.const 240 i32.ne if i32.const 0 i32.const 1088 - i32.const 24 + i32.const 70 i32.const 3 call $~lib/builtins/abort unreachable end local.get $0 - i32.load8_u offset=9 - i32.const 216 + i32.load8_u offset=7 + i32.const 164 i32.ne if i32.const 0 i32.const 1088 - i32.const 25 + i32.const 71 i32.const 3 call $~lib/builtins/abort unreachable end local.get $0 - i32.load8_u offset=10 - i32.const 98 + i32.load8_u offset=8 + i32.const 173 i32.ne if i32.const 0 i32.const 1088 - i32.const 26 + i32.const 72 i32.const 3 call $~lib/builtins/abort unreachable end local.get $0 - i32.load8_u offset=11 - i32.const 223 + i32.load8_u offset=9 + i32.const 162 i32.ne if i32.const 0 i32.const 1088 - i32.const 27 + i32.const 73 i32.const 3 call $~lib/builtins/abort unreachable @@ -3211,6 +3495,7 @@ i32.const 8 i32.add global.set $~lib/memory/__stack_pointer + call $std/string-encoding/testUTF8EncodeNullTerminated global.get $~lib/memory/__stack_pointer i32.const 12 i32.sub @@ -3227,35 +3512,148 @@ i32.const 0 i32.store offset=8 local.get $0 - i32.const 1056 + i32.const 1824 + i32.store offset=4 + i32.const 1824 + i32.const 0 + i32.const 0 + call $~lib/string/String.UTF8.encode + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 i32.store local.get $0 - i32.const 1056 - call $~lib/string/String.UTF16.encode + local.get $1 + local.get $1 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 0 + call $~lib/string/String.UTF8.decodeUnsafe local.tee $0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 1824 + i32.store offset=4 + local.get $0 + i32.const 1824 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1088 + i32.const 98 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.tee $1 + i32.const 1824 i32.store offset=4 + i32.const 1824 + i32.const 0 + i32.const 1 + call $~lib/string/String.UTF8.encode + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $1 local.get $0 local.get $0 i32.const 20 i32.sub i32.load offset=16 - call $~lib/string/String.UTF16.decodeUnsafe + i32.const 0 + call $~lib/string/String.UTF8.decodeUnsafe + local.tee $0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 1856 + i32.store offset=4 + local.get $0 + i32.const 1856 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1088 + i32.const 100 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.tee $1 + i32.const 1888 + i32.store offset=4 + i32.const 1888 + i32.const 0 + i32.const 0 + call $~lib/string/String.UTF8.encode local.set $0 global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $1 + local.get $0 + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 0 + call $~lib/string/String.UTF8.decodeUnsafe + local.tee $0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 1888 + i32.store offset=4 + local.get $0 + i32.const 1888 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1088 + i32.const 103 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer local.tee $1 + i32.const 1888 + i32.store offset=4 + i32.const 1888 + i32.const 0 + i32.const 1 + call $~lib/string/String.UTF8.encode + local.set $0 + global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $1 - i32.const 1056 + local.get $0 + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 0 + call $~lib/string/String.UTF8.decodeUnsafe + local.tee $0 i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 1856 + i32.store offset=4 local.get $0 - i32.const 1056 + i32.const 1856 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1088 - i32.const 33 + i32.const 105 i32.const 3 call $~lib/builtins/abort unreachable @@ -3282,1020 +3680,856 @@ local.get $0 i32.const 1056 i32.store + i32.const 1 + global.set $~argumentsLength local.get $0 i32.const 1056 - call $~lib/string/String.UTF16.encode + i32.const 0 + call $~lib/string/String.UTF8.encode@varargs local.tee $0 i32.store offset=4 - global.get $~lib/memory/__stack_pointer - i32.const 1056 - i32.store - i32.const 1052 - i32.load - local.set $2 local.get $0 + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 i32.const 0 - call $~lib/string/String.UTF16.decodeUnsafe - local.set $1 + call $~lib/string/String.UTF8.decodeUnsafe + local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $3 - local.get $1 + local.tee $1 + local.get $0 i32.store - local.get $3 - i32.const 1552 - i32.store offset=8 local.get $1 - i32.const 1552 + i32.const 1056 + i32.store offset=8 + local.get $0 + i32.const 1056 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1088 - i32.const 42 + i32.const 111 i32.const 3 call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 28 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 22540 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + local.tee $0 + i64.const 0 + i64.store local.get $0 - local.get $2 - call $~lib/string/String.UTF16.decodeUnsafe - local.set $1 + i64.const 0 + i64.store offset=8 + local.get $0 + i64.const 0 + i64.store offset=16 + local.get $0 + i32.const 0 + i32.store offset=24 + local.get $0 + i32.const 1056 + i32.store + i32.const 2 + global.set $~argumentsLength + local.get $0 + i32.const 1056 + i32.const 1 + call $~lib/string/String.UTF8.encode@varargs + local.tee $0 + i32.store offset=4 + local.get $0 + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 1 + call $~lib/string/String.UTF8.decodeUnsafe + local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $2 - local.get $1 + local.tee $1 + local.get $0 i32.store - local.get $2 + local.get $1 i32.const 1056 i32.store offset=8 - local.get $1 + local.get $0 i32.const 1056 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1088 - i32.const 43 + i32.const 117 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $0 - i32.const 4 - call $~lib/string/String.UTF16.decodeUnsafe - local.set $1 global.get $~lib/memory/__stack_pointer - local.tee $2 - local.get $1 - i32.store - local.get $2 - i32.const 1584 - i32.store offset=8 - local.get $1 - i32.const 1584 - call $~lib/string/String.__eq - i32.eqz + i32.const 1920 + i32.store offset=12 + i32.const 1920 + i32.const 1 + call $~lib/string/String.UTF8.byteLength + i32.const 4 + i32.ne if i32.const 0 i32.const 1088 - i32.const 44 + i32.const 119 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $0 - i32.const 4 - i32.add i32.const 2 - call $~lib/string/String.UTF16.decodeUnsafe - local.set $1 + global.set $~argumentsLength global.get $~lib/memory/__stack_pointer - local.tee $2 - local.get $1 - i32.store - local.get $2 - i32.const 1616 - i32.store offset=8 - local.get $1 - i32.const 1616 - call $~lib/string/String.__eq - i32.eqz + i32.const 1920 + i32.const 1 + call $~lib/string/String.UTF8.encode@varargs + local.tee $0 + i32.store offset=16 + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 4 + i32.ne if i32.const 0 i32.const 1088 - i32.const 45 + i32.const 121 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $0 - i32.const 4 - i32.add - i32.const 4 - call $~lib/string/String.UTF16.decodeUnsafe - local.set $1 global.get $~lib/memory/__stack_pointer - local.tee $2 - local.get $1 - i32.store - local.get $2 - i32.const 1648 - i32.store offset=8 - local.get $1 - i32.const 1648 - call $~lib/string/String.__eq - i32.eqz + i32.const 1968 + i32.store offset=20 + i32.const 1968 + i32.const 1 + call $~lib/string/String.UTF8.byteLength + i32.const 4 + i32.ne if i32.const 0 i32.const 1088 - i32.const 46 + i32.const 123 i32.const 3 call $~lib/builtins/abort unreachable end local.get $0 - i32.const 8 - i32.add - i32.const 4 - call $~lib/string/String.UTF16.decodeUnsafe - local.set $1 + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 1 + call $~lib/string/String.UTF8.decodeUnsafe + local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $2 - local.get $1 + local.get $0 i32.store - local.get $2 - i32.const 1680 - i32.store offset=8 - local.get $1 - i32.const 1680 + local.get $0 + i32.const 1968 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1088 - i32.const 47 + i32.const 124 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $0 - i32.const 12 - i32.add + i32.const 2 + global.set $~argumentsLength + global.get $~lib/memory/__stack_pointer + i32.const 1920 i32.const 0 - call $~lib/string/String.UTF16.decodeUnsafe + call $~lib/string/String.UTF8.encode@varargs + local.tee $0 + i32.store offset=24 + local.get $0 + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 1 + call $~lib/string/String.UTF8.decodeUnsafe local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $1 local.get $0 i32.store - local.get $1 - i32.const 1552 - i32.store offset=8 local.get $0 - i32.const 1552 + i32.const 1968 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1088 - i32.const 48 + i32.const 126 i32.const 3 call $~lib/builtins/abort unreachable end global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 28 i32.add global.set $~lib/memory/__stack_pointer + call $std/string-encoding/testUTF8DecodeUnsafe global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 22540 - i32.lt_s - br_if $folding-inner1 - global.get $~lib/memory/__stack_pointer - local.tee $0 - i32.const 0 + i32.const 2032 i32.store - local.get $0 - i32.const 1056 + i32.const 2032 + call $std/string-encoding/testLarge + global.get $~lib/memory/__stack_pointer + i32.const 15152 i32.store - i32.const 1056 + i32.const 15152 + call $std/string-encoding/testLarge + global.get $~lib/rt/itcms/state i32.const 0 - call $~lib/string/String.UTF8.byteLength - i32.const 10 - i32.ne + i32.gt_s if - i32.const 0 - i32.const 1088 - i32.const 55 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 1056 - i32.store - i32.const 1056 - i32.const 1 - call $~lib/string/String.UTF8.byteLength - i32.const 11 - i32.ne - if - i32.const 0 - i32.const 1088 - i32.const 56 - i32.const 3 - call $~lib/builtins/abort - unreachable + loop $while-continue|0 + global.get $~lib/rt/itcms/state + if + call $~lib/rt/itcms/step + drop + br $while-continue|0 + end + end + end + call $~lib/rt/itcms/step + drop + loop $while-continue|1 + global.get $~lib/rt/itcms/state + if + call $~lib/rt/itcms/step + drop + br $while-continue|1 + end end + global.get $~lib/rt/itcms/total + i64.extend_i32_u + i64.const 200 + i64.mul + i64.const 100 + i64.div_u + i32.wrap_i64 + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 22540 - i32.lt_s - br_if $folding-inner1 - global.get $~lib/memory/__stack_pointer - local.tee $0 - i64.const 0 - i64.store - local.get $0 - i32.const 1056 - i32.store + return + end + i32.const 38944 + i32.const 38992 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) + (func $std/string-encoding/testUTF16Encode + (local $0 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 22540 + i32.lt_s + if + i32.const 38944 + i32.const 38992 i32.const 1 - global.set $~argumentsLength - local.get $0 - i32.const 1056 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.tee $0 + i64.const 0 + i64.store + local.get $0 + i32.const 1056 + i32.store + local.get $0 + i32.const 1056 + call $~lib/string/String.UTF16.encode + local.tee $0 + i32.store offset=4 + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 12 + i32.ne + if i32.const 0 - call $~lib/string/String.UTF8.encode@varargs - local.tee $0 - i32.store offset=4 - local.get $0 + i32.const 1088 + i32.const 15 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load8_u + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 1088 + i32.const 16 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load8_u offset=1 + i32.const 216 + i32.ne + if + i32.const 0 + i32.const 1088 + i32.const 17 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load8_u offset=2 + i32.const 55 + i32.ne + if + i32.const 0 + i32.const 1088 + i32.const 18 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load8_u offset=3 + i32.const 220 + i32.ne + if + i32.const 0 + i32.const 1088 + i32.const 19 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load8_u offset=4 + i32.const 104 + i32.ne + if + i32.const 0 + i32.const 1088 i32.const 20 - i32.sub - i32.load offset=16 - i32.const 10 - i32.ne - if - i32.const 0 - i32.const 1088 - i32.const 63 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load8_u - i32.const 240 - i32.ne - if - i32.const 0 - i32.const 1088 - i32.const 64 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load8_u offset=1 - i32.const 144 - i32.ne - if - i32.const 0 - i32.const 1088 - i32.const 65 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load8_u offset=2 - i32.const 144 - i32.ne - if - i32.const 0 - i32.const 1088 - i32.const 66 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load8_u offset=3 - i32.const 183 - i32.ne - if - i32.const 0 - i32.const 1088 - i32.const 67 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load8_u offset=4 - i32.const 104 - i32.ne - if - i32.const 0 - i32.const 1088 - i32.const 68 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load8_u offset=5 - i32.const 105 - i32.ne - if - i32.const 0 - i32.const 1088 - i32.const 69 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load8_u offset=6 - i32.const 240 - i32.ne - if - i32.const 0 - i32.const 1088 - i32.const 70 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load8_u offset=7 - i32.const 164 - i32.ne - if - i32.const 0 - i32.const 1088 - i32.const 71 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load8_u offset=8 - i32.const 173 - i32.ne - if - i32.const 0 - i32.const 1088 - i32.const 72 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load8_u offset=9 - i32.const 162 - i32.ne - if - i32.const 0 - i32.const 1088 - i32.const 73 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 22540 - i32.lt_s - br_if $folding-inner1 - global.get $~lib/memory/__stack_pointer - local.tee $0 - i64.const 0 - i64.store - local.get $0 - i32.const 1056 - i32.store - i32.const 2 - global.set $~argumentsLength - local.get $0 - i32.const 1056 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load8_u offset=5 + if + i32.const 0 + i32.const 1088 + i32.const 21 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load8_u offset=6 + i32.const 105 + i32.ne + if + i32.const 0 + i32.const 1088 + i32.const 22 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load8_u offset=7 + if + i32.const 0 + i32.const 1088 + i32.const 23 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load8_u offset=8 + i32.const 82 + i32.ne + if + i32.const 0 + i32.const 1088 + i32.const 24 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load8_u offset=9 + i32.const 216 + i32.ne + if + i32.const 0 + i32.const 1088 + i32.const 25 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load8_u offset=10 + i32.const 98 + i32.ne + if + i32.const 0 + i32.const 1088 + i32.const 26 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load8_u offset=11 + i32.const 223 + i32.ne + if + i32.const 0 + i32.const 1088 + i32.const 27 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $std/string-encoding/testUTF16DecodeUnsafe + (local $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 22540 + i32.lt_s + if + i32.const 38944 + i32.const 38992 i32.const 1 - call $~lib/string/String.UTF8.encode@varargs - local.tee $0 - i32.store offset=4 - local.get $0 - i32.const 20 - i32.sub - i32.load offset=16 - i32.const 11 - i32.ne - if - i32.const 0 - i32.const 1088 - i32.const 80 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load8_u - i32.const 240 - i32.ne - if - i32.const 0 - i32.const 1088 - i32.const 81 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load8_u offset=1 - i32.const 144 - i32.ne - if - i32.const 0 - i32.const 1088 - i32.const 82 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load8_u offset=2 - i32.const 144 - i32.ne - if - i32.const 0 - i32.const 1088 - i32.const 83 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load8_u offset=3 - i32.const 183 - i32.ne - if - i32.const 0 - i32.const 1088 - i32.const 84 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load8_u offset=4 - i32.const 104 - i32.ne - if - i32.const 0 - i32.const 1088 - i32.const 85 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load8_u offset=5 - i32.const 105 - i32.ne - if - i32.const 0 - i32.const 1088 - i32.const 86 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load8_u offset=6 - i32.const 240 - i32.ne - if - i32.const 0 - i32.const 1088 - i32.const 87 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load8_u offset=7 - i32.const 164 - i32.ne - if - i32.const 0 - i32.const 1088 - i32.const 88 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load8_u offset=8 - i32.const 173 - i32.ne - if - i32.const 0 - i32.const 1088 - i32.const 89 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load8_u offset=9 - i32.const 162 - i32.ne - if - i32.const 0 - i32.const 1088 - i32.const 90 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load8_u offset=10 - if - i32.const 0 - i32.const 1088 - i32.const 91 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 22540 - i32.lt_s - br_if $folding-inner1 - global.get $~lib/memory/__stack_pointer - local.tee $0 - i64.const 0 - i64.store - local.get $0 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.tee $1 + i64.const 0 + i64.store + local.get $1 + i32.const 0 + i32.store offset=8 + local.get $1 + i32.const 1056 + i32.store + local.get $1 + i32.const 1056 + call $~lib/string/String.UTF16.encode + local.tee $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 1056 + i32.store + i32.const 1052 + i32.load + local.set $2 + local.get $1 + i32.const 0 + call $~lib/string/String.UTF16.decodeUnsafe + local.set $0 + global.get $~lib/memory/__stack_pointer + local.tee $3 + local.get $0 + i32.store + local.get $3 + i32.const 1552 + i32.store offset=8 + local.get $0 + i32.const 1552 + call $~lib/string/String.__eq + i32.eqz + if i32.const 0 - i32.store offset=8 - local.get $0 - i32.const 1824 - i32.store offset=4 - i32.const 1824 + i32.const 1088 + i32.const 42 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.get $2 + call $~lib/string/String.UTF16.decodeUnsafe + local.set $0 + global.get $~lib/memory/__stack_pointer + local.tee $2 + local.get $0 + i32.store + local.get $2 + i32.const 1056 + i32.store offset=8 + local.get $0 + i32.const 1056 + call $~lib/string/String.__eq + i32.eqz + if i32.const 0 + i32.const 1088 + i32.const 43 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 4 + call $~lib/string/String.UTF16.decodeUnsafe + local.set $0 + global.get $~lib/memory/__stack_pointer + local.tee $2 + local.get $0 + i32.store + local.get $2 + i32.const 1584 + i32.store offset=8 + local.get $0 + i32.const 1584 + call $~lib/string/String.__eq + i32.eqz + if i32.const 0 - call $~lib/string/String.UTF8.encode - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store - local.get $0 - local.get $1 - local.get $1 - i32.const 20 - i32.sub - i32.load offset=16 + i32.const 1088 + i32.const 44 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 4 + i32.add + i32.const 2 + call $~lib/string/String.UTF16.decodeUnsafe + local.set $0 + global.get $~lib/memory/__stack_pointer + local.tee $2 + local.get $0 + i32.store + local.get $2 + i32.const 1616 + i32.store offset=8 + local.get $0 + i32.const 1616 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1088 + i32.const 45 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 4 + i32.add + i32.const 4 + call $~lib/string/String.UTF16.decodeUnsafe + local.set $0 + global.get $~lib/memory/__stack_pointer + local.tee $2 + local.get $0 + i32.store + local.get $2 + i32.const 1648 + i32.store offset=8 + local.get $0 + i32.const 1648 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1088 + i32.const 46 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 8 + i32.add + i32.const 4 + call $~lib/string/String.UTF16.decodeUnsafe + local.set $0 + global.get $~lib/memory/__stack_pointer + local.tee $2 + local.get $0 + i32.store + local.get $2 + i32.const 1680 + i32.store offset=8 + local.get $0 + i32.const 1680 + call $~lib/string/String.__eq + i32.eqz + if i32.const 0 - call $~lib/string/String.UTF8.decodeUnsafe - local.tee $0 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - i32.const 1824 - i32.store offset=4 - local.get $0 - i32.const 1824 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1088 - i32.const 98 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.tee $1 - i32.const 1824 - i32.store offset=4 - i32.const 1824 + i32.const 1088 + i32.const 47 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 12 + i32.add + i32.const 0 + call $~lib/string/String.UTF16.decodeUnsafe + local.set $1 + global.get $~lib/memory/__stack_pointer + local.tee $0 + local.get $1 + i32.store + local.get $0 + i32.const 1552 + i32.store offset=8 + local.get $1 + i32.const 1552 + call $~lib/string/String.__eq + i32.eqz + if i32.const 0 + i32.const 1088 + i32.const 48 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $std/string-encoding/testUTF8EncodeNullTerminated + (local $0 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 22540 + i32.lt_s + if + i32.const 38944 + i32.const 38992 i32.const 1 - call $~lib/string/String.UTF8.encode - local.set $0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $1 - local.get $0 - local.get $0 - i32.const 20 - i32.sub - i32.load offset=16 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.tee $0 + i64.const 0 + i64.store + local.get $0 + i32.const 1056 + i32.store + i32.const 2 + global.set $~argumentsLength + local.get $0 + i32.const 1056 + i32.const 1 + call $~lib/string/String.UTF8.encode@varargs + local.tee $0 + i32.store offset=4 + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 11 + i32.ne + if i32.const 0 - call $~lib/string/String.UTF8.decodeUnsafe - local.tee $0 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - i32.const 1856 - i32.store offset=4 - local.get $0 - i32.const 1856 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1088 - i32.const 100 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.tee $1 - i32.const 1888 - i32.store offset=4 - i32.const 1888 + i32.const 1088 + i32.const 80 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load8_u + i32.const 240 + i32.ne + if i32.const 0 + i32.const 1088 + i32.const 81 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load8_u offset=1 + i32.const 144 + i32.ne + if i32.const 0 - call $~lib/string/String.UTF8.encode - local.set $0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $1 - local.get $0 - local.get $0 - i32.const 20 - i32.sub - i32.load offset=16 + i32.const 1088 + i32.const 82 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load8_u offset=2 + i32.const 144 + i32.ne + if i32.const 0 - call $~lib/string/String.UTF8.decodeUnsafe - local.tee $0 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - i32.const 1888 - i32.store offset=4 - local.get $0 - i32.const 1888 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1088 - i32.const 103 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.tee $1 - i32.const 1888 - i32.store offset=4 - i32.const 1888 + i32.const 1088 + i32.const 83 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load8_u offset=3 + i32.const 183 + i32.ne + if i32.const 0 - i32.const 1 - call $~lib/string/String.UTF8.encode - local.set $0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $1 - local.get $0 - local.get $0 - i32.const 20 - i32.sub - i32.load offset=16 + i32.const 1088 + i32.const 84 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load8_u offset=4 + i32.const 104 + i32.ne + if i32.const 0 - call $~lib/string/String.UTF8.decodeUnsafe - local.tee $0 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - i32.const 1856 - i32.store offset=4 - local.get $0 - i32.const 1856 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1088 - i32.const 105 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.add - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 22540 - i32.lt_s - br_if $folding-inner1 - global.get $~lib/memory/__stack_pointer - local.tee $0 - i64.const 0 - i64.store - local.get $0 + i32.const 1088 + i32.const 85 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load8_u offset=5 + i32.const 105 + i32.ne + if i32.const 0 - i32.store offset=8 - local.get $0 - i32.const 1056 - i32.store - i32.const 1 - global.set $~argumentsLength - local.get $0 - i32.const 1056 + i32.const 1088 + i32.const 86 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load8_u offset=6 + i32.const 240 + i32.ne + if i32.const 0 - call $~lib/string/String.UTF8.encode@varargs - local.tee $0 - i32.store offset=4 - local.get $0 - local.get $0 - i32.const 20 - i32.sub - i32.load offset=16 + i32.const 1088 + i32.const 87 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load8_u offset=7 + i32.const 164 + i32.ne + if i32.const 0 - call $~lib/string/String.UTF8.decodeUnsafe - local.set $0 - global.get $~lib/memory/__stack_pointer - local.tee $1 - local.get $0 - i32.store - local.get $1 - i32.const 1056 - i32.store offset=8 - local.get $0 - i32.const 1056 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1088 - i32.const 111 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.add - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 28 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 22540 - i32.lt_s - br_if $folding-inner1 - global.get $~lib/memory/__stack_pointer - local.tee $0 - i64.const 0 - i64.store - local.get $0 - i64.const 0 - i64.store offset=8 - local.get $0 - i64.const 0 - i64.store offset=16 - local.get $0 + i32.const 1088 + i32.const 88 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load8_u offset=8 + i32.const 173 + i32.ne + if i32.const 0 - i32.store offset=24 - local.get $0 - i32.const 1056 - i32.store - i32.const 2 - global.set $~argumentsLength - local.get $0 - i32.const 1056 - i32.const 1 - call $~lib/string/String.UTF8.encode@varargs - local.tee $0 - i32.store offset=4 - local.get $0 - local.get $0 - i32.const 20 - i32.sub - i32.load offset=16 - i32.const 1 - call $~lib/string/String.UTF8.decodeUnsafe - local.set $0 - global.get $~lib/memory/__stack_pointer - local.tee $1 - local.get $0 - i32.store - local.get $1 - i32.const 1056 - i32.store offset=8 - local.get $0 - i32.const 1056 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1088 - i32.const 117 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 1920 - i32.store offset=12 - i32.const 1920 - i32.const 1 - call $~lib/string/String.UTF8.byteLength - i32.const 4 - i32.ne - if - i32.const 0 - i32.const 1088 - i32.const 119 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 2 - global.set $~argumentsLength - global.get $~lib/memory/__stack_pointer - i32.const 1920 - i32.const 1 - call $~lib/string/String.UTF8.encode@varargs - local.tee $0 - i32.store offset=16 - local.get $0 - i32.const 20 - i32.sub - i32.load offset=16 - i32.const 4 - i32.ne - if - i32.const 0 - i32.const 1088 - i32.const 121 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 1968 - i32.store offset=20 - i32.const 1968 - i32.const 1 - call $~lib/string/String.UTF8.byteLength - i32.const 4 - i32.ne - if - i32.const 0 - i32.const 1088 - i32.const 123 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $0 - i32.const 20 - i32.sub - i32.load offset=16 - i32.const 1 - call $~lib/string/String.UTF8.decodeUnsafe - local.set $0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.const 1968 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1088 - i32.const 124 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 2 - global.set $~argumentsLength - global.get $~lib/memory/__stack_pointer - i32.const 1920 + i32.const 1088 + i32.const 89 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load8_u offset=9 + i32.const 162 + i32.ne + if i32.const 0 - call $~lib/string/String.UTF8.encode@varargs - local.tee $0 - i32.store offset=24 - local.get $0 - local.get $0 - i32.const 20 - i32.sub - i32.load offset=16 - i32.const 1 - call $~lib/string/String.UTF8.decodeUnsafe - local.set $0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.const 1968 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1088 - i32.const 126 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 28 - i32.add - global.set $~lib/memory/__stack_pointer - call $std/string-encoding/testUTF8DecodeUnsafe - global.get $~lib/memory/__stack_pointer - i32.const 2032 - i32.store - i32.const 2032 - call $std/string-encoding/testLarge - global.get $~lib/memory/__stack_pointer - i32.const 15152 - i32.store - i32.const 15152 - call $std/string-encoding/testLarge - global.get $~lib/rt/itcms/state + i32.const 1088 + i32.const 90 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load8_u offset=10 + if i32.const 0 - i32.gt_s - if - loop $while-continue|0 - global.get $~lib/rt/itcms/state - if - call $~lib/rt/itcms/step - drop - br $while-continue|0 - end - end - end - call $~lib/rt/itcms/step - drop - loop $while-continue|1 - global.get $~lib/rt/itcms/state - if - call $~lib/rt/itcms/step - drop - br $while-continue|1 - end - end - global.get $~lib/rt/itcms/total - i64.extend_i32_u - i64.const 200 - i64.mul - i64.const 100 - i64.div_u - i32.wrap_i64 - i32.const 1024 - i32.add - global.set $~lib/rt/itcms/threshold - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - return + i32.const 1088 + i32.const 91 + i32.const 3 + call $~lib/builtins/abort + unreachable end - i32.const 38944 - i32.const 38992 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer ) (func $std/string-encoding/testUTF8DecodeUnsafe (local $0 i32) @@ -4751,10 +4985,6 @@ ) (func $~lib/string/String.UTF8.encode (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub @@ -4771,221 +5001,33 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.tee $5 + local.tee $3 i32.const 0 i32.store - local.get $5 + local.get $3 local.get $0 local.get $1 call $~lib/string/String.UTF8.byteLength i32.const 0 call $~lib/rt/itcms/__new - local.tee $5 + local.tee $3 i32.store local.get $0 - local.tee $4 + local.get $0 i32.const 20 i32.sub i32.load offset=16 i32.const 1 i32.shr_u - i32.const 1 - i32.shl - local.get $4 - i32.add - local.set $7 - local.get $5 - local.set $0 - loop $while-continue|0 - local.get $4 - local.get $7 - i32.lt_u - if - local.get $4 - i32.load16_u - local.tee $3 - i32.const 128 - i32.lt_u - if (result i32) - local.get $0 - local.get $3 - i32.store8 - local.get $0 - i32.const 1 - i32.add - else - local.get $3 - i32.const 2048 - i32.lt_u - if (result i32) - local.get $0 - local.get $3 - i32.const 6 - i32.shr_u - i32.const 192 - i32.or - local.get $3 - i32.const 63 - i32.and - i32.const 128 - i32.or - i32.const 8 - i32.shl - i32.or - i32.store16 - local.get $0 - i32.const 2 - i32.add - else - local.get $3 - i32.const 63488 - i32.and - i32.const 55296 - i32.eq - if - local.get $7 - local.get $4 - i32.const 2 - i32.add - i32.gt_u - i32.const 0 - local.get $3 - i32.const 56320 - i32.lt_u - select - if - local.get $4 - i32.load16_u offset=2 - local.tee $6 - i32.const 64512 - i32.and - i32.const 56320 - i32.eq - if - local.get $0 - local.get $3 - i32.const 1023 - i32.and - i32.const 10 - i32.shl - i32.const 65536 - i32.add - local.get $6 - i32.const 1023 - i32.and - i32.or - local.tee $6 - i32.const 63 - i32.and - i32.const 128 - i32.or - i32.const 24 - i32.shl - local.get $6 - i32.const 6 - i32.shr_u - i32.const 63 - i32.and - i32.const 128 - i32.or - i32.const 16 - i32.shl - i32.or - local.get $6 - i32.const 12 - i32.shr_u - i32.const 63 - i32.and - i32.const 128 - i32.or - i32.const 8 - i32.shl - i32.or - local.get $6 - i32.const 18 - i32.shr_u - i32.const 240 - i32.or - i32.or - i32.store - local.get $0 - i32.const 4 - i32.add - local.set $0 - local.get $4 - i32.const 4 - i32.add - local.set $4 - br $while-continue|0 - end - end - local.get $2 - if (result i32) - local.get $2 - i32.const 2 - i32.eq - if - i32.const 1712 - i32.const 1776 - i32.const 739 - i32.const 49 - call $~lib/builtins/abort - unreachable - end - i32.const 65533 - else - local.get $3 - end - local.set $3 - end - local.get $0 - local.get $3 - i32.const 12 - i32.shr_u - i32.const 224 - i32.or - local.get $3 - i32.const 6 - i32.shr_u - i32.const 63 - i32.and - i32.const 128 - i32.or - i32.const 8 - i32.shl - i32.or - i32.store16 - local.get $0 - local.get $3 - i32.const 63 - i32.and - i32.const 128 - i32.or - i32.store8 offset=2 - local.get $0 - i32.const 3 - i32.add - end - end - local.set $0 - local.get $4 - i32.const 2 - i32.add - local.set $4 - br $while-continue|0 - end - end + local.get $3 local.get $1 - if - local.get $0 - i32.const 0 - i32.store8 - end + local.get $2 + call $~lib/string/String.UTF8.encodeUnsafe global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $5 + local.get $3 ) (func $~lib/string/String.UTF8.decodeUnsafe (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) diff --git a/tests/compiler/std/string.optimized.wat b/tests/compiler/std/string.optimized.wat index 0d8ab54662..25e6daf9de 100644 --- a/tests/compiler/std/string.optimized.wat +++ b/tests/compiler/std/string.optimized.wat @@ -2075,7 +2075,7 @@ local.get $0 i32.const 4 i32.add - local.tee $0 + local.tee $1 i32.const 42268 i32.ge_u if @@ -2085,20 +2085,20 @@ call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT - local.get $0 + local.get $1 i32.const 4 i32.sub - local.set $1 - local.get $0 + local.set $0 + local.get $1 i32.const 15 i32.and i32.const 1 - local.get $0 + local.get $1 select if (result i32) i32.const 1 else - local.get $1 + local.get $0 i32.load i32.const 1 i32.and @@ -2111,14 +2111,11 @@ call $~lib/builtins/abort unreachable end - local.get $1 - local.tee $0 + local.get $0 + local.get $0 i32.load i32.const 1 i32.or - local.set $1 - local.get $0 - local.get $1 i32.store local.get $0 call $~lib/rt/tlsf/insertBlock @@ -2131,8 +2128,7 @@ local.tee $0 local.get $0 i32.store offset=4 - global.get $~lib/rt/itcms/toSpace - local.tee $0 + local.get $0 local.get $0 i32.store offset=8 i32.const 0 @@ -2272,6 +2268,210 @@ end end ) + (func $~lib/rt/tlsf/allocateBlock (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + local.get $1 + i32.const 1073741820 + i32.gt_u + if + i32.const 1376 + i32.const 1648 + i32.const 458 + i32.const 29 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.tee $2 + local.get $1 + i32.const 12 + i32.le_u + if (result i32) + i32.const 12 + else + local.get $1 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + end + local.tee $0 + call $~lib/rt/tlsf/searchBlock + local.tee $1 + i32.eqz + if + local.get $0 + i32.const 536870910 + i32.lt_u + if (result i32) + local.get $0 + i32.const 1 + i32.const 27 + local.get $0 + i32.clz + i32.sub + i32.shl + i32.const 1 + i32.sub + i32.add + else + local.get $0 + end + i32.const 4 + memory.size + local.tee $1 + i32.const 16 + i32.shl + i32.const 4 + i32.sub + local.get $2 + i32.load offset=1568 + i32.ne + i32.shl + i32.add + i32.const 65535 + i32.add + i32.const -65536 + i32.and + i32.const 16 + i32.shr_u + local.set $3 + local.get $1 + local.get $3 + local.get $1 + local.get $3 + i32.gt_s + select + memory.grow + i32.const 0 + i32.lt_s + if + local.get $3 + memory.grow + i32.const 0 + i32.lt_s + if + unreachable + end + end + local.get $2 + local.get $1 + i32.const 16 + i32.shl + memory.size + i32.const 16 + i32.shl + call $~lib/rt/tlsf/addMemory + local.get $2 + local.get $0 + call $~lib/rt/tlsf/searchBlock + local.tee $1 + i32.eqz + if + i32.const 0 + i32.const 1648 + i32.const 496 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + end + local.get $0 + local.get $1 + i32.load + i32.const -4 + i32.and + i32.gt_u + if + i32.const 0 + i32.const 1648 + i32.const 498 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.get $1 + call $~lib/rt/tlsf/removeBlock + local.get $1 + i32.load + local.set $3 + local.get $0 + i32.const 4 + i32.add + i32.const 15 + i32.and + if + i32.const 0 + i32.const 1648 + i32.const 357 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const -4 + i32.and + local.get $0 + i32.sub + local.tee $4 + i32.const 16 + i32.ge_u + if + local.get $1 + local.get $0 + local.get $3 + i32.const 2 + i32.and + i32.or + i32.store + local.get $0 + local.get $1 + i32.const 4 + i32.add + i32.add + local.tee $0 + local.get $4 + i32.const 4 + i32.sub + i32.const 1 + i32.or + i32.store + local.get $2 + local.get $0 + call $~lib/rt/tlsf/insertBlock + else + local.get $1 + local.get $3 + i32.const -2 + i32.and + i32.store + local.get $1 + i32.const 4 + i32.add + local.tee $0 + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.get $0 + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + i32.load + i32.const -3 + i32.and + i32.store + end + local.get $1 + ) (func $~lib/memory/memory.fill (param $0 i32) (param $1 i32) (local $2 i32) block $~lib/util/memory/memset|inlined.0 @@ -2451,9 +2651,6 @@ (func $~lib/rt/itcms/__new (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) local.get $0 i32.const 1073741804 i32.ge_u @@ -2471,12 +2668,12 @@ if block $__inlined_func$~lib/rt/itcms/interrupt i32.const 2048 - local.set $3 + local.set $2 loop $do-continue|0 - local.get $3 + local.get $2 call $~lib/rt/itcms/step i32.sub - local.set $3 + local.set $2 global.get $~lib/rt/itcms/state i32.eqz if @@ -2492,14 +2689,14 @@ global.set $~lib/rt/itcms/threshold br $__inlined_func$~lib/rt/itcms/interrupt end - local.get $3 + local.get $2 i32.const 0 i32.gt_s br_if $do-continue|0 end global.get $~lib/rt/itcms/total - local.tee $3 - local.get $3 + local.tee $2 + local.get $2 global.get $~lib/rt/itcms/threshold i32.sub i32.const 1024 @@ -2513,230 +2710,35 @@ local.get $0 i32.const 16 i32.add - local.set $6 + local.set $2 global.get $~lib/rt/tlsf/ROOT i32.eqz if call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT - local.get $6 - i32.const 1073741820 - i32.gt_u - if - i32.const 1376 - i32.const 1648 - i32.const 458 - i32.const 29 - call $~lib/builtins/abort - unreachable - end - local.tee $2 - local.get $6 - i32.const 12 - i32.le_u - if (result i32) - i32.const 12 - else - local.get $6 - i32.const 19 - i32.add - i32.const -16 - i32.and - i32.const 4 - i32.sub - end - local.tee $3 - call $~lib/rt/tlsf/searchBlock - local.tee $6 - i32.eqz - if - local.get $3 - i32.const 536870910 - i32.lt_u - if (result i32) - local.get $3 - i32.const 1 - i32.const 27 - local.get $3 - i32.clz - i32.sub - i32.shl - i32.const 1 - i32.sub - i32.add - else - local.get $3 - end - i32.const 4 - memory.size - local.tee $6 - i32.const 16 - i32.shl - i32.const 4 - i32.sub - local.get $2 - i32.load offset=1568 - i32.ne - i32.shl - i32.add - i32.const 65535 - i32.add - i32.const -65536 - i32.and - i32.const 16 - i32.shr_u - local.set $5 - local.get $6 - local.get $5 - local.get $5 - local.get $6 - i32.lt_s - select - memory.grow - i32.const 0 - i32.lt_s - if - local.get $5 - memory.grow - i32.const 0 - i32.lt_s - if - unreachable - end - end - local.get $2 - local.get $6 - i32.const 16 - i32.shl - memory.size - i32.const 16 - i32.shl - call $~lib/rt/tlsf/addMemory - local.get $2 - local.get $3 - call $~lib/rt/tlsf/searchBlock - local.tee $6 - i32.eqz - if - i32.const 0 - i32.const 1648 - i32.const 496 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - end - local.get $3 - local.get $6 - i32.load - i32.const -4 - i32.and - i32.gt_u - if - i32.const 0 - i32.const 1648 - i32.const 498 - i32.const 14 - call $~lib/builtins/abort - unreachable - end local.get $2 - local.get $6 - call $~lib/rt/tlsf/removeBlock - local.get $6 - i32.load - local.set $5 - local.get $3 - i32.const 4 - i32.add - i32.const 15 - i32.and - if - i32.const 0 - i32.const 1648 - i32.const 357 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $5 - i32.const -4 - i32.and - local.get $3 - i32.sub - local.tee $4 - i32.const 16 - i32.ge_u - if - local.get $6 - local.get $3 - local.get $5 - i32.const 2 - i32.and - i32.or - i32.store - local.get $3 - local.get $6 - i32.const 4 - i32.add - i32.add - local.tee $3 - local.get $4 - i32.const 4 - i32.sub - i32.const 1 - i32.or - i32.store - local.get $2 - local.get $3 - call $~lib/rt/tlsf/insertBlock - else - local.get $6 - local.get $5 - i32.const -2 - i32.and - i32.store - local.get $6 - i32.const 4 - i32.add - local.tee $3 - local.get $6 - i32.load - i32.const -4 - i32.and - i32.add - local.get $3 - local.get $6 - i32.load - i32.const -4 - i32.and - i32.add - i32.load - i32.const -3 - i32.and - i32.store - end - local.get $6 + call $~lib/rt/tlsf/allocateBlock + local.tee $2 local.get $1 i32.store offset=12 - local.get $6 + local.get $2 local.get $0 i32.store offset=16 global.get $~lib/rt/itcms/fromSpace local.tee $3 i32.load offset=8 local.set $1 - local.get $6 + local.get $2 local.get $3 global.get $~lib/rt/itcms/white i32.or i32.store offset=4 - local.get $6 + local.get $2 local.get $1 i32.store offset=8 local.get $1 - local.get $6 + local.get $2 local.get $1 i32.load offset=4 i32.const 3 @@ -2744,10 +2746,10 @@ i32.or i32.store offset=4 local.get $3 - local.get $6 + local.get $2 i32.store offset=8 global.get $~lib/rt/itcms/total - local.get $6 + local.get $2 i32.load i32.const -4 i32.and @@ -2755,7 +2757,7 @@ i32.add i32.add global.set $~lib/rt/itcms/total - local.get $6 + local.get $2 i32.const 20 i32.add local.tee $1 @@ -6119,12 +6121,11 @@ (local $7 i32) local.get $0 i32.load offset=12 - local.tee $6 + local.tee $5 i32.const 1 i32.add - local.tee $5 - local.set $2 - local.get $5 + local.tee $6 + local.tee $2 local.get $0 i32.load offset=8 local.tee $4 @@ -6199,7 +6200,7 @@ end local.get $0 i32.load offset=4 - local.get $6 + local.get $5 i32.const 2 i32.shl i32.add @@ -6210,7 +6211,7 @@ i32.const 1 call $~lib/rt/itcms/__link local.get $0 - local.get $5 + local.get $6 i32.store offset=12 ) (func $~lib/util/number/utoa32_dec_lut (param $0 i32) (param $1 i32) (param $2 i32) diff --git a/tests/compiler/std/symbol.optimized.wat b/tests/compiler/std/symbol.optimized.wat index d1be29d48a..4a0f515f75 100644 --- a/tests/compiler/std/symbol.optimized.wat +++ b/tests/compiler/std/symbol.optimized.wat @@ -1133,7 +1133,7 @@ local.get $0 i32.const 4 i32.add - local.tee $0 + local.tee $1 i32.const 19084 i32.ge_u if @@ -1143,20 +1143,20 @@ call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT - local.get $0 + local.get $1 i32.const 4 i32.sub - local.set $1 - local.get $0 + local.set $0 + local.get $1 i32.const 15 i32.and i32.const 1 - local.get $0 + local.get $1 select if (result i32) i32.const 1 else - local.get $1 + local.get $0 i32.load i32.const 1 i32.and @@ -1169,14 +1169,11 @@ call $~lib/builtins/abort unreachable end - local.get $1 - local.tee $0 + local.get $0 + local.get $0 i32.load i32.const 1 i32.or - local.set $1 - local.get $0 - local.get $1 i32.store local.get $0 call $~lib/rt/tlsf/insertBlock @@ -1189,8 +1186,7 @@ local.tee $0 local.get $0 i32.store offset=4 - global.get $~lib/rt/itcms/toSpace - local.tee $0 + local.get $0 local.get $0 i32.store offset=8 i32.const 0 @@ -1330,6 +1326,210 @@ end end ) + (func $~lib/rt/tlsf/allocateBlock (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + local.get $1 + i32.const 1073741820 + i32.gt_u + if + i32.const 1136 + i32.const 1472 + i32.const 458 + i32.const 29 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.tee $2 + local.get $1 + i32.const 12 + i32.le_u + if (result i32) + i32.const 12 + else + local.get $1 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + end + local.tee $0 + call $~lib/rt/tlsf/searchBlock + local.tee $1 + i32.eqz + if + local.get $0 + i32.const 536870910 + i32.lt_u + if (result i32) + local.get $0 + i32.const 1 + i32.const 27 + local.get $0 + i32.clz + i32.sub + i32.shl + i32.const 1 + i32.sub + i32.add + else + local.get $0 + end + i32.const 4 + memory.size + local.tee $1 + i32.const 16 + i32.shl + i32.const 4 + i32.sub + local.get $2 + i32.load offset=1568 + i32.ne + i32.shl + i32.add + i32.const 65535 + i32.add + i32.const -65536 + i32.and + i32.const 16 + i32.shr_u + local.set $3 + local.get $1 + local.get $3 + local.get $1 + local.get $3 + i32.gt_s + select + memory.grow + i32.const 0 + i32.lt_s + if + local.get $3 + memory.grow + i32.const 0 + i32.lt_s + if + unreachable + end + end + local.get $2 + local.get $1 + i32.const 16 + i32.shl + memory.size + i32.const 16 + i32.shl + call $~lib/rt/tlsf/addMemory + local.get $2 + local.get $0 + call $~lib/rt/tlsf/searchBlock + local.tee $1 + i32.eqz + if + i32.const 0 + i32.const 1472 + i32.const 496 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + end + local.get $0 + local.get $1 + i32.load + i32.const -4 + i32.and + i32.gt_u + if + i32.const 0 + i32.const 1472 + i32.const 498 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.get $1 + call $~lib/rt/tlsf/removeBlock + local.get $1 + i32.load + local.set $3 + local.get $0 + i32.const 4 + i32.add + i32.const 15 + i32.and + if + i32.const 0 + i32.const 1472 + i32.const 357 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const -4 + i32.and + local.get $0 + i32.sub + local.tee $4 + i32.const 16 + i32.ge_u + if + local.get $1 + local.get $0 + local.get $3 + i32.const 2 + i32.and + i32.or + i32.store + local.get $0 + local.get $1 + i32.const 4 + i32.add + i32.add + local.tee $0 + local.get $4 + i32.const 4 + i32.sub + i32.const 1 + i32.or + i32.store + local.get $2 + local.get $0 + call $~lib/rt/tlsf/insertBlock + else + local.get $1 + local.get $3 + i32.const -2 + i32.and + i32.store + local.get $1 + i32.const 4 + i32.add + local.tee $0 + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.get $0 + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + i32.load + i32.const -3 + i32.and + i32.store + end + local.get $1 + ) (func $~lib/memory/memory.fill (param $0 i32) (param $1 i32) (local $2 i32) block $~lib/util/memory/memset|inlined.0 @@ -1509,9 +1709,6 @@ (func $~lib/rt/itcms/__new (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) local.get $0 i32.const 1073741804 i32.ge_u @@ -1529,12 +1726,12 @@ if block $__inlined_func$~lib/rt/itcms/interrupt i32.const 2048 - local.set $3 + local.set $2 loop $do-continue|0 - local.get $3 + local.get $2 call $~lib/rt/itcms/step i32.sub - local.set $3 + local.set $2 global.get $~lib/rt/itcms/state i32.eqz if @@ -1550,14 +1747,14 @@ global.set $~lib/rt/itcms/threshold br $__inlined_func$~lib/rt/itcms/interrupt end - local.get $3 + local.get $2 i32.const 0 i32.gt_s br_if $do-continue|0 end global.get $~lib/rt/itcms/total - local.tee $3 - local.get $3 + local.tee $2 + local.get $2 global.get $~lib/rt/itcms/threshold i32.sub i32.const 1024 @@ -1571,230 +1768,35 @@ local.get $0 i32.const 16 i32.add - local.set $6 + local.set $2 global.get $~lib/rt/tlsf/ROOT i32.eqz if call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT - local.get $6 - i32.const 1073741820 - i32.gt_u - if - i32.const 1136 - i32.const 1472 - i32.const 458 - i32.const 29 - call $~lib/builtins/abort - unreachable - end - local.tee $2 - local.get $6 - i32.const 12 - i32.le_u - if (result i32) - i32.const 12 - else - local.get $6 - i32.const 19 - i32.add - i32.const -16 - i32.and - i32.const 4 - i32.sub - end - local.tee $3 - call $~lib/rt/tlsf/searchBlock - local.tee $6 - i32.eqz - if - local.get $3 - i32.const 536870910 - i32.lt_u - if (result i32) - local.get $3 - i32.const 1 - i32.const 27 - local.get $3 - i32.clz - i32.sub - i32.shl - i32.const 1 - i32.sub - i32.add - else - local.get $3 - end - i32.const 4 - memory.size - local.tee $6 - i32.const 16 - i32.shl - i32.const 4 - i32.sub - local.get $2 - i32.load offset=1568 - i32.ne - i32.shl - i32.add - i32.const 65535 - i32.add - i32.const -65536 - i32.and - i32.const 16 - i32.shr_u - local.set $5 - local.get $6 - local.get $5 - local.get $5 - local.get $6 - i32.lt_s - select - memory.grow - i32.const 0 - i32.lt_s - if - local.get $5 - memory.grow - i32.const 0 - i32.lt_s - if - unreachable - end - end - local.get $2 - local.get $6 - i32.const 16 - i32.shl - memory.size - i32.const 16 - i32.shl - call $~lib/rt/tlsf/addMemory - local.get $2 - local.get $3 - call $~lib/rt/tlsf/searchBlock - local.tee $6 - i32.eqz - if - i32.const 0 - i32.const 1472 - i32.const 496 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - end - local.get $3 - local.get $6 - i32.load - i32.const -4 - i32.and - i32.gt_u - if - i32.const 0 - i32.const 1472 - i32.const 498 - i32.const 14 - call $~lib/builtins/abort - unreachable - end local.get $2 - local.get $6 - call $~lib/rt/tlsf/removeBlock - local.get $6 - i32.load - local.set $5 - local.get $3 - i32.const 4 - i32.add - i32.const 15 - i32.and - if - i32.const 0 - i32.const 1472 - i32.const 357 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $5 - i32.const -4 - i32.and - local.get $3 - i32.sub - local.tee $4 - i32.const 16 - i32.ge_u - if - local.get $6 - local.get $3 - local.get $5 - i32.const 2 - i32.and - i32.or - i32.store - local.get $3 - local.get $6 - i32.const 4 - i32.add - i32.add - local.tee $3 - local.get $4 - i32.const 4 - i32.sub - i32.const 1 - i32.or - i32.store - local.get $2 - local.get $3 - call $~lib/rt/tlsf/insertBlock - else - local.get $6 - local.get $5 - i32.const -2 - i32.and - i32.store - local.get $6 - i32.const 4 - i32.add - local.tee $3 - local.get $6 - i32.load - i32.const -4 - i32.and - i32.add - local.get $3 - local.get $6 - i32.load - i32.const -4 - i32.and - i32.add - i32.load - i32.const -3 - i32.and - i32.store - end - local.get $6 + call $~lib/rt/tlsf/allocateBlock + local.tee $2 local.get $1 i32.store offset=12 - local.get $6 + local.get $2 local.get $0 i32.store offset=16 global.get $~lib/rt/itcms/fromSpace local.tee $3 i32.load offset=8 local.set $1 - local.get $6 + local.get $2 local.get $3 global.get $~lib/rt/itcms/white i32.or i32.store offset=4 - local.get $6 + local.get $2 local.get $1 i32.store offset=8 local.get $1 - local.get $6 + local.get $2 local.get $1 i32.load offset=4 i32.const 3 @@ -1802,10 +1804,10 @@ i32.or i32.store offset=4 local.get $3 - local.get $6 + local.get $2 i32.store offset=8 global.get $~lib/rt/itcms/total - local.get $6 + local.get $2 i32.load i32.const -4 i32.and @@ -1813,7 +1815,7 @@ i32.add i32.add global.set $~lib/rt/itcms/total - local.get $6 + local.get $2 i32.const 20 i32.add local.tee $1 @@ -2100,7 +2102,7 @@ i32.load offset=16 i32.const 1 i32.shr_u - local.tee $4 + local.tee $2 local.get $1 i32.const 20 i32.sub @@ -2114,18 +2116,15 @@ end block $__inlined_func$~lib/util/string/compareImpl (result i32) local.get $0 - local.set $2 - local.get $1 - local.set $3 - local.get $2 + local.tee $3 i32.const 7 i32.and - local.get $3 + local.get $1 i32.const 7 i32.and i32.or i32.const 1 - local.get $4 + local.get $2 local.tee $0 i32.const 4 i32.ge_u @@ -2133,20 +2132,20 @@ i32.eqz if loop $do-continue|0 - local.get $2 - i64.load local.get $3 i64.load + local.get $1 + i64.load i64.eq if - local.get $2 - i32.const 8 - i32.add - local.set $2 local.get $3 i32.const 8 i32.add local.set $3 + local.get $1 + i32.const 8 + i32.add + local.set $1 local.get $0 i32.const 4 i32.sub @@ -2159,33 +2158,33 @@ end loop $while-continue|1 local.get $0 - local.tee $1 + local.tee $2 i32.const 1 i32.sub local.set $0 - local.get $1 + local.get $2 if - local.get $2 - i32.load16_u - local.tee $1 local.get $3 i32.load16_u + local.tee $2 + local.get $1 + i32.load16_u local.tee $4 i32.ne if - local.get $1 + local.get $2 local.get $4 i32.sub br $__inlined_func$~lib/util/string/compareImpl end - local.get $2 - i32.const 2 - i32.add - local.set $2 local.get $3 i32.const 2 i32.add local.set $3 + local.get $1 + i32.const 2 + i32.add + local.set $1 br $while-continue|1 end end diff --git a/tests/compiler/std/typedarray.optimized.wat b/tests/compiler/std/typedarray.optimized.wat index 4c5b236587..5981b8115a 100644 --- a/tests/compiler/std/typedarray.optimized.wat +++ b/tests/compiler/std/typedarray.optimized.wat @@ -35,6 +35,7 @@ (type $i32_i64_i32_=>_none (func (param i32 i64 i32))) (type $i32_i64_i32_i64_i32_i64_i32_=>_i32 (func (param i32 i64 i32 i64 i32 i64 i32) (result i32))) (type $i32_i32_f64_f64_f64_f64_f64_=>_none (func (param i32 i32 f64 f64 f64 f64 f64))) + (type $i64_=>_i32 (func (param i64) (result i32))) (type $f64_=>_i32 (func (param f64) (result i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (import "env" "trace" (func $~lib/builtins/trace (param i32 i32 f64 f64 f64 f64 f64))) @@ -23819,7 +23820,7 @@ i32.load offset=16 i32.const 1 i32.shr_u - local.tee $4 + local.tee $2 local.get $1 i32.const 20 i32.sub @@ -23833,18 +23834,15 @@ end block $__inlined_func$~lib/util/string/compareImpl (result i32) local.get $0 - local.set $2 - local.get $1 - local.set $3 - local.get $2 + local.tee $3 i32.const 7 i32.and - local.get $3 + local.get $1 i32.const 7 i32.and i32.or i32.const 1 - local.get $4 + local.get $2 local.tee $0 i32.const 4 i32.ge_u @@ -23852,20 +23850,20 @@ i32.eqz if loop $do-continue|0 - local.get $2 - i64.load local.get $3 i64.load + local.get $1 + i64.load i64.eq if - local.get $2 - i32.const 8 - i32.add - local.set $2 local.get $3 i32.const 8 i32.add local.set $3 + local.get $1 + i32.const 8 + i32.add + local.set $1 local.get $0 i32.const 4 i32.sub @@ -23878,33 +23876,33 @@ end loop $while-continue|1 local.get $0 - local.tee $1 + local.tee $2 i32.const 1 i32.sub local.set $0 - local.get $1 + local.get $2 if - local.get $2 - i32.load16_u - local.tee $1 local.get $3 i32.load16_u + local.tee $2 + local.get $1 + i32.load16_u local.tee $4 i32.ne if - local.get $1 + local.get $2 local.get $4 i32.sub br $__inlined_func$~lib/util/string/compareImpl end - local.get $2 - i32.const 2 - i32.add - local.set $2 local.get $3 i32.const 2 i32.add local.set $3 + local.get $1 + i32.const 2 + i32.add + local.set $1 br $while-continue|1 end end @@ -25346,478 +25344,299 @@ local.get $0 ) (func $~lib/typedarray/Int64Array#join (param $0 i32) (result i32) - (local $1 i32) - (local $2 i64) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - local.get $0 - i32.load offset=4 - local.set $4 - local.get $0 - i32.load offset=8 - i32.const 3 - i32.shr_u - local.set $0 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - block $folding-inner1 - global.get $~lib/memory/__stack_pointer - i32.const 15924 - i32.lt_s - br_if $folding-inner1 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - block $__inlined_func$~lib/util/string/joinIntegerArray - local.get $0 - i32.const 1 - i32.sub - local.tee $3 - i32.const 0 - i32.lt_s - if - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - i32.const 7072 - local.set $0 - br $__inlined_func$~lib/util/string/joinIntegerArray - end - block $folding-inner0 - local.get $3 - i32.eqz - if - local.get $4 - i64.load - i32.wrap_i64 - i64.extend_i32_s - local.set $2 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 15924 - i32.lt_s - br_if $folding-inner1 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - block $__inlined_func$~lib/util/number/itoa64 - local.get $2 - i64.eqz - if - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - i32.const 7296 - local.set $0 - br $__inlined_func$~lib/util/number/itoa64 - end - i64.const 0 - local.get $2 - i64.sub - local.get $2 - local.get $2 - i64.const 63 - i64.shr_u - i32.wrap_i64 - local.tee $1 - select - local.tee $2 - i64.const 4294967295 - i64.le_u - if - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.wrap_i64 - local.tee $4 - local.tee $0 - i32.const 100000 - i32.lt_u - if (result i32) - local.get $0 - i32.const 100 - i32.lt_u - if (result i32) - local.get $0 - i32.const 10 - i32.ge_u - i32.const 1 - i32.add - else - local.get $0 - i32.const 10000 - i32.ge_u - i32.const 3 - i32.add - local.get $0 - i32.const 1000 - i32.ge_u - i32.add - end - else - local.get $0 - i32.const 10000000 - i32.lt_u - if (result i32) - local.get $0 - i32.const 1000000 - i32.ge_u - i32.const 6 - i32.add - else - local.get $0 - i32.const 1000000000 - i32.ge_u - i32.const 8 - i32.add - local.get $0 - i32.const 100000000 - i32.ge_u - i32.add - end - end - local.get $1 - i32.add - local.tee $3 - i32.const 1 - i32.shl - i32.const 1 - call $~lib/rt/itcms/__new - local.tee $0 - i32.store - local.get $0 - local.get $4 - local.get $3 - call $~lib/util/number/utoa32_dec_lut - else - global.get $~lib/memory/__stack_pointer - local.get $2 - i64.const 1000000000000000 - i64.lt_u - if (result i32) - local.get $2 - i64.const 1000000000000 - i64.lt_u - if (result i32) - local.get $2 - i64.const 100000000000 - i64.ge_u - i32.const 10 - i32.add - local.get $2 - i64.const 10000000000 - i64.ge_u - i32.add - else - local.get $2 - i64.const 100000000000000 - i64.ge_u - i32.const 13 - i32.add - local.get $2 - i64.const 10000000000000 - i64.ge_u - i32.add - end - else - local.get $2 - i64.const 100000000000000000 - i64.lt_u - if (result i32) - local.get $2 - i64.const 10000000000000000 - i64.ge_u - i32.const 16 - i32.add - else - local.get $2 - i64.const -8446744073709551616 - i64.ge_u - i32.const 18 - i32.add - local.get $2 - i64.const 1000000000000000000 - i64.ge_u - i32.add - end - end - local.get $1 - i32.add - local.tee $3 - i32.const 1 - i32.shl - i32.const 1 - call $~lib/rt/itcms/__new - local.tee $0 - i32.store - local.get $0 - local.get $2 - local.get $3 - call $~lib/util/number/utoa64_dec_lut - end - local.get $1 - if - local.get $0 - i32.const 45 - i32.store16 - end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - end - br $folding-inner0 - end - global.get $~lib/memory/__stack_pointer - local.get $3 - i32.const 8876 - i32.load - i32.const 1 - i32.shr_u - local.tee $5 - i32.const 21 - i32.add - i32.mul - i32.const 21 - i32.add - local.tee $7 - i32.const 1 - i32.shl - i32.const 1 - call $~lib/rt/itcms/__new - local.tee $0 - i32.store - loop $for-loop|0 - local.get $3 - local.get $6 - i32.gt_s - if - local.get $0 - local.get $1 - i32.const 1 - i32.shl - i32.add - local.get $4 - local.get $6 - i32.const 3 - i32.shl - i32.add - i64.load - call $~lib/util/number/itoa_buffered - local.get $1 - i32.add - local.set $1 - local.get $5 - if - local.get $0 - local.get $1 - i32.const 1 - i32.shl - i32.add - i32.const 8880 - local.get $5 - i32.const 1 - i32.shl - call $~lib/memory/memory.copy - local.get $1 - local.get $5 - i32.add - local.set $1 - end - local.get $6 - i32.const 1 - i32.add - local.set $6 - br $for-loop|0 - end - end - local.get $7 - local.get $0 - local.get $1 - i32.const 1 - i32.shl - i32.add - local.get $4 - local.get $3 - i32.const 3 - i32.shl - i32.add - i64.load - call $~lib/util/number/itoa_buffered - local.get $1 - i32.add - local.tee $1 - i32.gt_s - if - local.get $0 - local.get $1 - call $~lib/string/String#substring - local.set $0 - br $folding-inner0 - end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - br $__inlined_func$~lib/util/string/joinIntegerArray - end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - end - local.get $0 - return - end - i32.const 32336 - i32.const 32384 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - ) - (func $~lib/util/number/itoa_buffered (param $0 i32) (param $1 i64) (result i32) - (local $2 i32) - (local $3 i32) - local.get $1 - i64.const 10 - i64.lt_u - if - local.get $0 - local.get $1 - i64.const 48 - i64.or - i64.store16 - i32.const 1 - return - end - local.get $1 - i64.const 4294967295 - i64.le_u - if - local.get $1 - i32.wrap_i64 - local.tee $3 - local.tee $2 - i32.const 100000 - i32.lt_u - if (result i32) - local.get $2 - i32.const 100 - i32.lt_u - if (result i32) - local.get $2 - i32.const 10 - i32.ge_u - i32.const 1 - i32.add - else - local.get $2 - i32.const 10000 - i32.ge_u - i32.const 3 - i32.add - local.get $2 - i32.const 1000 - i32.ge_u - i32.add - end - else - local.get $2 - i32.const 10000000 - i32.lt_u - if (result i32) - local.get $2 - i32.const 1000000 - i32.ge_u - i32.const 6 - i32.add - else - local.get $2 - i32.const 1000000000 - i32.ge_u - i32.const 8 - i32.add - local.get $2 - i32.const 100000000 - i32.ge_u - i32.add - end - end - local.set $2 - local.get $0 - local.get $3 - local.get $2 - local.tee $0 - call $~lib/util/number/utoa32_dec_lut - else - local.get $0 - local.get $1 - local.get $1 - i64.const 1000000000000000 - i64.lt_u - if (result i32) - local.get $1 - i64.const 1000000000000 - i64.lt_u - if (result i32) - local.get $1 - i64.const 100000000000 - i64.ge_u - i32.const 10 - i32.add - local.get $1 - i64.const 10000000000 - i64.ge_u - i32.add - else - local.get $1 - i64.const 100000000000000 - i64.ge_u - i32.const 13 - i32.add - local.get $1 - i64.const 10000000000000 - i64.ge_u - i32.add - end - else - local.get $1 - i64.const 100000000000000000 - i64.lt_u - if (result i32) - local.get $1 - i64.const 10000000000000000 - i64.ge_u - i32.const 16 - i32.add - else - local.get $1 - i64.const -8446744073709551616 - i64.ge_u - i32.const 18 - i32.add - local.get $1 - i64.const 1000000000000000000 - i64.ge_u - i32.add - end - end - local.tee $0 - call $~lib/util/number/utoa64_dec_lut - end - local.get $0 - ) - (func $~lib/typedarray/Uint64Array#join (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + local.get $0 + i32.load offset=4 + local.set $3 + local.get $0 + i32.load offset=8 + i32.const 3 + i32.shr_u + local.set $0 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 15924 + i32.lt_s + if + i32.const 32336 + i32.const 32384 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + block $__inlined_func$~lib/util/string/joinIntegerArray + local.get $0 + i32.const 1 + i32.sub + local.tee $2 + i32.const 0 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 7072 + local.set $0 + br $__inlined_func$~lib/util/string/joinIntegerArray + end + block $folding-inner0 + local.get $2 + i32.eqz + if + local.get $3 + i64.load + i32.wrap_i64 + i64.extend_i32_s + call $~lib/util/number/itoa64 + local.set $0 + br $folding-inner0 + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.const 8876 + i32.load + i32.const 1 + i32.shr_u + local.tee $4 + i32.const 21 + i32.add + i32.mul + i32.const 21 + i32.add + local.tee $6 + i32.const 1 + i32.shl + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + loop $for-loop|0 + local.get $2 + local.get $5 + i32.gt_s + if + local.get $0 + local.get $1 + i32.const 1 + i32.shl + i32.add + local.get $3 + local.get $5 + i32.const 3 + i32.shl + i32.add + i64.load + call $~lib/util/number/itoa_buffered + local.get $1 + i32.add + local.set $1 + local.get $4 + if + local.get $0 + local.get $1 + i32.const 1 + i32.shl + i32.add + i32.const 8880 + local.get $4 + i32.const 1 + i32.shl + call $~lib/memory/memory.copy + local.get $1 + local.get $4 + i32.add + local.set $1 + end + local.get $5 + i32.const 1 + i32.add + local.set $5 + br $for-loop|0 + end + end + local.get $6 + local.get $0 + local.get $1 + i32.const 1 + i32.shl + i32.add + local.get $3 + local.get $2 + i32.const 3 + i32.shl + i32.add + i64.load + call $~lib/util/number/itoa_buffered + local.get $1 + i32.add + local.tee $1 + i32.gt_s + if + local.get $0 + local.get $1 + call $~lib/string/String#substring + local.set $0 + br $folding-inner0 + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + br $__inlined_func$~lib/util/string/joinIntegerArray + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + end + local.get $0 + ) + (func $~lib/util/number/itoa_buffered (param $0 i32) (param $1 i64) (result i32) + (local $2 i32) + (local $3 i32) + local.get $1 + i64.const 10 + i64.lt_u + if + local.get $0 + local.get $1 + i64.const 48 + i64.or + i64.store16 + i32.const 1 + return + end + local.get $1 + i64.const 4294967295 + i64.le_u + if + local.get $1 + i32.wrap_i64 + local.tee $3 + local.tee $2 + i32.const 100000 + i32.lt_u + if (result i32) + local.get $2 + i32.const 100 + i32.lt_u + if (result i32) + local.get $2 + i32.const 10 + i32.ge_u + i32.const 1 + i32.add + else + local.get $2 + i32.const 10000 + i32.ge_u + i32.const 3 + i32.add + local.get $2 + i32.const 1000 + i32.ge_u + i32.add + end + else + local.get $2 + i32.const 10000000 + i32.lt_u + if (result i32) + local.get $2 + i32.const 1000000 + i32.ge_u + i32.const 6 + i32.add + else + local.get $2 + i32.const 1000000000 + i32.ge_u + i32.const 8 + i32.add + local.get $2 + i32.const 100000000 + i32.ge_u + i32.add + end + end + local.set $2 + local.get $0 + local.get $3 + local.get $2 + local.tee $0 + call $~lib/util/number/utoa32_dec_lut + else + local.get $0 + local.get $1 + local.get $1 + i64.const 1000000000000000 + i64.lt_u + if (result i32) + local.get $1 + i64.const 1000000000000 + i64.lt_u + if (result i32) + local.get $1 + i64.const 100000000000 + i64.ge_u + i32.const 10 + i32.add + local.get $1 + i64.const 10000000000 + i64.ge_u + i32.add + else + local.get $1 + i64.const 100000000000000 + i64.ge_u + i32.const 13 + i32.add + local.get $1 + i64.const 10000000000000 + i64.ge_u + i32.add + end + else + local.get $1 + i64.const 100000000000000000 + i64.lt_u + if (result i32) + local.get $1 + i64.const 10000000000000000 + i64.ge_u + i32.const 16 + i32.add + else + local.get $1 + i64.const -8446744073709551616 + i64.ge_u + i32.const 18 + i32.add + local.get $1 + i64.const 1000000000000000000 + i64.ge_u + i32.add + end + end + local.tee $0 + call $~lib/util/number/utoa64_dec_lut + end + local.get $0 + ) + (func $~lib/typedarray/Uint64Array#join (param $0 i32) (result i32) (local $1 i32) (local $2 i64) (local $3 i32) @@ -38586,259 +38405,54 @@ i32.add global.set $~lib/memory/__stack_pointer ) - (func $std/typedarray/valuesEqual<~lib/typedarray/Int8Array> (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 15924 - i32.lt_s - if - i32.const 32336 - i32.const 32384 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - local.get $0 - i32.load offset=8 - local.tee $3 - local.get $1 - i32.load offset=12 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 735 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - loop $for-loop|0 - local.get $2 - local.get $3 - i32.lt_s - if - local.get $2 - local.get $0 - i32.load offset=4 - i32.add - i32.load8_s - local.tee $4 - local.get $2 - local.get $1 - i32.load offset=4 - i32.add - i32.load8_s - local.tee $5 - i32.ne - if - global.get $~lib/memory/__stack_pointer - i32.const 10640 - i32.store - i32.const 10640 - i32.const 3 - local.get $2 - f64.convert_i32_s - local.get $4 - f64.convert_i32_s - local.get $5 - f64.convert_i32_s - f64.const 0 - f64.const 0 - call $~lib/builtins/trace - i32.const 0 - i32.const 1568 - i32.const 741 - i32.const 7 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|0 - end - end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $std/typedarray/testTypedArraySet<~lib/typedarray/Int8Array> + (func $std/typedarray/testArrayWrap<~lib/typedarray/Int16Array,i16> (local $0 i32) (local $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) - (local $6 i32) - (local $7 f32) - (local $8 f64) - (local $9 i32) global.get $~lib/memory/__stack_pointer i32.const 20 i32.sub global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 15924 - i32.lt_s - if - i32.const 32336 - i32.const 32384 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.tee $1 - i64.const 0 - i64.store - local.get $1 - i64.const 0 - i64.store offset=8 - local.get $1 - i32.const 0 - i32.store offset=16 - local.get $1 - i32.const 3 - call $~lib/typedarray/Int64Array#constructor - local.tee $3 - i32.store - local.get $3 - i32.const 0 - i64.const 7 - call $~lib/typedarray/Int64Array#__set - local.get $3 - i32.const 1 - i64.const 8 - call $~lib/typedarray/Int64Array#__set - local.get $3 - i32.const 2 - i64.const 9 - call $~lib/typedarray/Int64Array#__set - global.get $~lib/memory/__stack_pointer - i32.const 4 - call $~lib/typedarray/Uint8Array#constructor - local.tee $2 - i32.store offset=4 - local.get $2 - i32.const 0 - i32.const 100 - call $~lib/typedarray/Uint8Array#__set - local.get $2 - i32.const 1 - i32.const 101 - call $~lib/typedarray/Uint8Array#__set - local.get $2 - i32.const 2 - i32.const 102 - call $~lib/typedarray/Uint8Array#__set - local.get $2 - i32.const 3 - i32.const 103 - call $~lib/typedarray/Uint8Array#__set - global.get $~lib/memory/__stack_pointer - i32.const 3 - call $~lib/typedarray/Int16Array#constructor - local.tee $4 - i32.store offset=8 - local.get $4 - i32.const 0 - i32.const 1000 - call $~lib/typedarray/Int16Array#__set - local.get $4 - i32.const 1 - i32.const 1001 - call $~lib/typedarray/Int16Array#__set - local.get $4 - i32.const 2 - i32.const 1002 - call $~lib/typedarray/Int16Array#__set - global.get $~lib/memory/__stack_pointer - i32.const 10 - call $~lib/typedarray/Int8Array#constructor - local.tee $1 - i32.store offset=12 - global.get $~lib/memory/__stack_pointer - i32.const 10304 - i32.store offset=16 - local.get $1 - call $~lib/typedarray/Int8Array#set<~lib/array/Array> - i32.const 10 - i32.const 0 - i32.const 15 - i32.const 10608 - call $~lib/rt/__newArray - local.set $0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=16 - local.get $1 - local.get $0 - call $std/typedarray/valuesEqual<~lib/typedarray/Int8Array> - global.get $~lib/memory/__stack_pointer - i32.const 10384 - i32.store offset=16 - i32.const 0 - local.set $0 block $folding-inner0 - local.get $1 - i32.load offset=8 - i32.const 10396 - i32.load - i32.const 3 - i32.add + global.get $~lib/memory/__stack_pointer + i32.const 15924 i32.lt_s br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.tee $1 + i64.const 0 + i64.store local.get $1 - i32.load offset=4 - i32.const 3 - i32.add - local.set $5 - i32.const 10388 - i32.load - local.set $6 - i32.const 10396 + i64.const 0 + i64.store offset=8 + local.get $1 + i32.const 0 + i32.store offset=16 + local.get $1 + i32.const 10224 + i32.store + local.get $1 + i32.const 10236 i32.load - local.set $9 + local.tee $3 + call $~lib/typedarray/Int16Array#constructor + local.tee $1 + i32.store offset=4 loop $for-loop|0 local.get $0 - local.get $9 + local.get $3 i32.lt_s if + local.get $1 local.get $0 - local.get $5 - i32.add - local.get $6 + i32.const 10224 local.get $0 - i32.const 2 - i32.shl - i32.add - f32.load - local.tee $7 - local.get $7 - f32.sub - f32.const 0 - f32.eq - if (result i32) - local.get $7 - i32.trunc_f32_s - else - i32.const 0 - end - i32.store8 + call $~lib/array/Array#__get + i32.extend16_s + call $~lib/typedarray/Int16Array#__set local.get $0 i32.const 1 i32.add @@ -38846,391 +38460,349 @@ br $for-loop|0 end end - i32.const 10 - i32.const 0 - i32.const 15 - i32.const 10688 - call $~lib/rt/__newArray - local.set $0 global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=16 + local.tee $0 local.get $1 + i32.load + local.tee $2 + i32.store offset=8 local.get $0 - call $std/typedarray/valuesEqual<~lib/typedarray/Int8Array> + local.get $2 local.get $1 - local.get $3 - call $~lib/typedarray/Int8Array#set<~lib/typedarray/Int64Array> - i32.const 10 - i32.const 0 - i32.const 15 - i32.const 10720 - call $~lib/rt/__newArray - local.set $0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=16 + i32.load offset=4 local.get $1 - local.get $0 - call $std/typedarray/valuesEqual<~lib/typedarray/Int8Array> - global.get $~lib/memory/__stack_pointer - i32.const 10480 - i32.store offset=16 - i32.const 0 - local.set $0 + i32.load + i32.sub local.get $1 i32.load offset=8 - i32.const 10492 + local.get $1 + i32.load offset=4 + local.get $1 i32.load - i32.const 2 + i32.sub i32.add + call $~lib/arraybuffer/ArrayBuffer#slice + local.tee $0 + i32.store offset=12 + i32.const 1 + global.set $~argumentsLength + global.get $~lib/memory/__stack_pointer + local.tee $4 + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 15924 i32.lt_s br_if $folding-inner0 - local.get $1 - i32.load offset=4 - i32.const 2 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + local.tee $5 + i32.const 1 + i32.and + if + i32.const 1056 + i32.const 1632 + i32.const 1831 + i32.const 9 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.const 6 + call $~lib/rt/itcms/__new + local.tee $2 + i32.store + local.get $2 + local.get $0 + i32.store + local.get $2 + local.get $0 + call $~lib/rt/itcms/__link + local.get $2 + local.get $5 + i32.store offset=8 + local.get $2 + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 4 i32.add - local.set $3 - i32.const 10484 - i32.load - local.set $5 - i32.const 10492 - i32.load - local.set $6 - loop $for-loop|00 + global.set $~lib/memory/__stack_pointer + local.get $4 + local.get $2 + i32.store offset=16 + i32.const 0 + local.set $0 + loop $for-loop|1 local.get $0 - local.get $6 + local.get $3 i32.lt_s if + local.get $1 local.get $0 - local.get $3 - i32.add - local.get $5 + call $~lib/typedarray/Int16Array#__get + local.get $2 local.get $0 - i32.const 3 - i32.shl - i32.add - f64.load - local.tee $8 - local.get $8 - f64.sub - f64.const 0 - f64.eq - if (result i32) - local.get $8 - i32.trunc_f64_s - else + call $~lib/typedarray/Int16Array#__get + i32.ne + if i32.const 0 + i32.const 1568 + i32.const 707 + i32.const 5 + call $~lib/builtins/abort + unreachable end - i32.store8 local.get $0 i32.const 1 i32.add local.set $0 - br $for-loop|00 + br $for-loop|1 end end - i32.const 10 - i32.const 0 - i32.const 15 - i32.const 10752 - call $~lib/rt/__newArray - local.set $0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=16 - local.get $1 - local.get $0 - call $std/typedarray/valuesEqual<~lib/typedarray/Int8Array> - local.get $1 - local.get $2 - call $~lib/typedarray/Int8Array#set<~lib/typedarray/Uint8Array> - local.get $1 - local.get $4 - call $~lib/typedarray/Int8Array#set<~lib/typedarray/Int16Array> - global.get $~lib/memory/__stack_pointer - i32.const 10560 - i32.store offset=16 - local.get $1 - call $~lib/typedarray/Int8Array#set<~lib/array/Array> - i32.const 10 - i32.const 0 - i32.const 15 - i32.const 10784 - call $~lib/rt/__newArray - local.set $2 - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=16 - local.get $1 - local.get $2 - call $std/typedarray/valuesEqual<~lib/typedarray/Int8Array> global.get $~lib/memory/__stack_pointer i32.const 20 i32.add global.set $~lib/memory/__stack_pointer return end - i32.const 1360 - i32.const 1632 - i32.const 1865 - i32.const 47 + i32.const 32336 + i32.const 32384 + i32.const 1 + i32.const 1 call $~lib/builtins/abort unreachable ) - (func $std/typedarray/valuesEqual<~lib/typedarray/Uint8Array> (param $0 i32) (param $1 i32) + (func $std/typedarray/testArrayWrap<~lib/typedarray/Uint16Array,u16> + (local $0 i32) + (local $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 20 i32.sub global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 15924 - i32.lt_s - if - i32.const 32336 - i32.const 32384 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - local.get $0 - i32.load offset=8 - local.tee $3 - local.get $1 - i32.load offset=12 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 735 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - loop $for-loop|0 - local.get $2 - local.get $3 + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 15924 i32.lt_s - if - local.get $2 + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.tee $1 + i64.const 0 + i64.store + local.get $1 + i64.const 0 + i64.store offset=8 + local.get $1 + i32.const 0 + i32.store offset=16 + local.get $1 + i32.const 10224 + i32.store + local.get $1 + i32.const 10236 + i32.load + local.tee $3 + call $~lib/typedarray/Uint16Array#constructor + local.tee $1 + i32.store offset=4 + loop $for-loop|0 local.get $0 - i32.load offset=4 - i32.add - i32.load8_u - local.tee $4 - local.get $2 - local.get $1 - i32.load offset=4 - i32.add - i32.load8_u - local.tee $5 - i32.ne + local.get $3 + i32.lt_s if - global.get $~lib/memory/__stack_pointer - i32.const 10848 - i32.store - i32.const 10848 - i32.const 3 - local.get $2 - f64.convert_i32_s - local.get $4 - f64.convert_i32_u - local.get $5 - f64.convert_i32_u - f64.const 0 - f64.const 0 - call $~lib/builtins/trace - i32.const 0 - i32.const 1568 - i32.const 741 - i32.const 7 - call $~lib/builtins/abort - unreachable + local.get $1 + local.get $0 + i32.const 10224 + local.get $0 + call $~lib/array/Array#__get + i32.const 65535 + i32.and + call $~lib/typedarray/Uint16Array#__set + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + local.tee $0 + local.get $1 + i32.load + local.tee $2 + i32.store offset=8 + local.get $0 + local.get $2 + local.get $1 + i32.load offset=4 + local.get $1 + i32.load + i32.sub + local.get $1 + i32.load offset=8 + local.get $1 + i32.load offset=4 + local.get $1 + i32.load + i32.sub + i32.add + call $~lib/arraybuffer/ArrayBuffer#slice + local.tee $0 + i32.store offset=12 + i32.const 1 + global.set $~argumentsLength + global.get $~lib/memory/__stack_pointer + local.tee $4 + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 15924 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + local.tee $5 + i32.const 1 + i32.and + if + i32.const 1056 + i32.const 1632 + i32.const 1831 + i32.const 9 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.const 7 + call $~lib/rt/itcms/__new + local.tee $2 + i32.store + local.get $2 + local.get $0 + i32.store + local.get $2 + local.get $0 + call $~lib/rt/itcms/__link + local.get $2 + local.get $5 + i32.store offset=8 + local.get $2 + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $4 + local.get $2 + i32.store offset=16 + i32.const 0 + local.set $0 + loop $for-loop|1 + local.get $0 + local.get $3 + i32.lt_s + if + local.get $1 + local.get $0 + call $~lib/typedarray/Uint16Array#__get + local.get $2 + local.get $0 + call $~lib/typedarray/Uint16Array#__get + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 707 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|1 end - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|0 end + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.add + global.set $~lib/memory/__stack_pointer + return end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer + i32.const 32336 + i32.const 32384 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable ) - (func $std/typedarray/testTypedArraySet<~lib/typedarray/Uint8Array> + (func $std/typedarray/testArrayWrap<~lib/typedarray/Int32Array,i32> (local $0 i32) (local $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) - (local $6 i32) - (local $7 f32) - (local $8 f64) - (local $9 i32) global.get $~lib/memory/__stack_pointer i32.const 20 i32.sub global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 15924 - i32.lt_s - if - i32.const 32336 - i32.const 32384 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.tee $1 - i64.const 0 - i64.store - local.get $1 - i64.const 0 - i64.store offset=8 - local.get $1 - i32.const 0 - i32.store offset=16 - local.get $1 - i32.const 3 - call $~lib/typedarray/Int64Array#constructor - local.tee $3 - i32.store - local.get $3 - i32.const 0 - i64.const 7 - call $~lib/typedarray/Int64Array#__set - local.get $3 - i32.const 1 - i64.const 8 - call $~lib/typedarray/Int64Array#__set - local.get $3 - i32.const 2 - i64.const 9 - call $~lib/typedarray/Int64Array#__set - global.get $~lib/memory/__stack_pointer - i32.const 4 - call $~lib/typedarray/Uint8Array#constructor - local.tee $2 - i32.store offset=4 - local.get $2 - i32.const 0 - i32.const 100 - call $~lib/typedarray/Uint8Array#__set - local.get $2 - i32.const 1 - i32.const 101 - call $~lib/typedarray/Uint8Array#__set - local.get $2 - i32.const 2 - i32.const 102 - call $~lib/typedarray/Uint8Array#__set - local.get $2 - i32.const 3 - i32.const 103 - call $~lib/typedarray/Uint8Array#__set - global.get $~lib/memory/__stack_pointer - i32.const 3 - call $~lib/typedarray/Int16Array#constructor - local.tee $4 - i32.store offset=8 - local.get $4 - i32.const 0 - i32.const 1000 - call $~lib/typedarray/Int16Array#__set - local.get $4 - i32.const 1 - i32.const 1001 - call $~lib/typedarray/Int16Array#__set - local.get $4 - i32.const 2 - i32.const 1002 - call $~lib/typedarray/Int16Array#__set - global.get $~lib/memory/__stack_pointer - i32.const 10 - call $~lib/typedarray/Uint8Array#constructor - local.tee $1 - i32.store offset=12 - global.get $~lib/memory/__stack_pointer - i32.const 10304 - i32.store offset=16 - local.get $1 - call $~lib/typedarray/Int8Array#set<~lib/array/Array> - i32.const 10 - i32.const 0 - i32.const 63 - i32.const 10816 - call $~lib/rt/__newArray - local.set $0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=16 - local.get $1 - local.get $0 - call $std/typedarray/valuesEqual<~lib/typedarray/Uint8Array> - global.get $~lib/memory/__stack_pointer - i32.const 10384 - i32.store offset=16 - i32.const 0 - local.set $0 block $folding-inner0 - local.get $1 - i32.load offset=8 - i32.const 10396 - i32.load - i32.const 3 - i32.add + global.get $~lib/memory/__stack_pointer + i32.const 15924 i32.lt_s br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.tee $1 + i64.const 0 + i64.store local.get $1 - i32.load offset=4 - i32.const 3 - i32.add - local.set $5 - i32.const 10388 - i32.load - local.set $6 - i32.const 10396 + i64.const 0 + i64.store offset=8 + local.get $1 + i32.const 0 + i32.store offset=16 + local.get $1 + i32.const 10224 + i32.store + local.get $1 + i32.const 10236 i32.load - local.set $9 + local.tee $3 + call $~lib/typedarray/Int32Array#constructor + local.tee $1 + i32.store offset=4 loop $for-loop|0 local.get $0 - local.get $9 + local.get $3 i32.lt_s if + local.get $1 local.get $0 - local.get $5 - i32.add - local.get $6 + i32.const 10224 local.get $0 - i32.const 2 - i32.shl - i32.add - f32.load - local.tee $7 - local.get $7 - f32.sub - f32.const 0 - f32.eq - if (result i32) - local.get $7 - i32.trunc_f32_u - else - i32.const 0 - end - i32.store8 + call $~lib/array/Array#__get + call $~lib/typedarray/Int32Array#__set local.get $0 i32.const 1 i32.add @@ -39238,913 +38810,523 @@ br $for-loop|0 end end - i32.const 10 - i32.const 0 - i32.const 63 - i32.const 10896 - call $~lib/rt/__newArray - local.set $0 global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=16 + local.tee $0 local.get $1 + i32.load + local.tee $2 + i32.store offset=8 local.get $0 - call $std/typedarray/valuesEqual<~lib/typedarray/Uint8Array> + local.get $2 local.get $1 - local.get $3 - call $~lib/typedarray/Int8Array#set<~lib/typedarray/Int64Array> - i32.const 10 - i32.const 0 - i32.const 63 - i32.const 10928 - call $~lib/rt/__newArray - local.set $0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=16 + i32.load offset=4 local.get $1 - local.get $0 - call $std/typedarray/valuesEqual<~lib/typedarray/Uint8Array> - global.get $~lib/memory/__stack_pointer - i32.const 10480 - i32.store offset=16 - i32.const 0 - local.set $0 + i32.load + i32.sub local.get $1 i32.load offset=8 - i32.const 10492 + local.get $1 + i32.load offset=4 + local.get $1 i32.load - i32.const 2 + i32.sub i32.add + call $~lib/arraybuffer/ArrayBuffer#slice + local.tee $0 + i32.store offset=12 + i32.const 1 + global.set $~argumentsLength + global.get $~lib/memory/__stack_pointer + local.tee $4 + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 15924 i32.lt_s br_if $folding-inner0 - local.get $1 - i32.load offset=4 - i32.const 2 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + local.tee $5 + i32.const 3 + i32.and + if + i32.const 1056 + i32.const 1632 + i32.const 1831 + i32.const 9 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.const 8 + call $~lib/rt/itcms/__new + local.tee $2 + i32.store + local.get $2 + local.get $0 + i32.store + local.get $2 + local.get $0 + call $~lib/rt/itcms/__link + local.get $2 + local.get $5 + i32.store offset=8 + local.get $2 + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 4 i32.add - local.set $3 - i32.const 10484 - i32.load - local.set $5 - i32.const 10492 - i32.load - local.set $6 - loop $for-loop|00 + global.set $~lib/memory/__stack_pointer + local.get $4 + local.get $2 + i32.store offset=16 + i32.const 0 + local.set $0 + loop $for-loop|1 local.get $0 - local.get $6 + local.get $3 i32.lt_s if + local.get $1 local.get $0 - local.get $3 - i32.add - local.get $5 + call $~lib/typedarray/Int32Array#__get + local.get $2 local.get $0 - i32.const 3 - i32.shl - i32.add - f64.load - local.tee $8 - local.get $8 - f64.sub - f64.const 0 - f64.eq - if (result i32) - local.get $8 - i32.trunc_f64_u - else + call $~lib/typedarray/Int32Array#__get + i32.ne + if i32.const 0 + i32.const 1568 + i32.const 707 + i32.const 5 + call $~lib/builtins/abort + unreachable end - i32.store8 local.get $0 i32.const 1 i32.add local.set $0 - br $for-loop|00 + br $for-loop|1 end end - i32.const 10 - i32.const 0 - i32.const 63 - i32.const 10960 - call $~lib/rt/__newArray - local.set $0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=16 - local.get $1 - local.get $0 - call $std/typedarray/valuesEqual<~lib/typedarray/Uint8Array> - local.get $1 - local.get $2 - call $~lib/typedarray/Int8Array#set<~lib/typedarray/Uint8Array> - local.get $1 - local.get $4 - call $~lib/typedarray/Int8Array#set<~lib/typedarray/Int16Array> - global.get $~lib/memory/__stack_pointer - i32.const 10560 - i32.store offset=16 - local.get $1 - call $~lib/typedarray/Int8Array#set<~lib/array/Array> - i32.const 10 - i32.const 0 - i32.const 63 - i32.const 10992 - call $~lib/rt/__newArray - local.set $2 - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=16 - local.get $1 - local.get $2 - call $std/typedarray/valuesEqual<~lib/typedarray/Uint8Array> global.get $~lib/memory/__stack_pointer i32.const 20 i32.add global.set $~lib/memory/__stack_pointer return end - i32.const 1360 - i32.const 1632 - i32.const 1865 - i32.const 47 + i32.const 32336 + i32.const 32384 + i32.const 1 + i32.const 1 call $~lib/builtins/abort unreachable ) - (func $std/typedarray/valuesEqual<~lib/typedarray/Uint8ClampedArray> (param $0 i32) (param $1 i32) + (func $std/typedarray/testArrayWrap<~lib/typedarray/Uint32Array,u32> + (local $0 i32) + (local $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 20 i32.sub global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 15924 - i32.lt_s - if - i32.const 32336 - i32.const 32384 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - local.get $0 - i32.load offset=8 - local.tee $3 - local.get $1 - i32.load offset=12 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 735 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - loop $for-loop|0 - local.get $2 - local.get $3 - i32.lt_s - if - local.get $2 - local.get $0 - i32.load offset=4 - i32.add - i32.load8_u - local.tee $4 - local.get $2 - local.get $1 - i32.load offset=4 - i32.add - i32.load8_u - local.tee $5 - i32.ne - if - global.get $~lib/memory/__stack_pointer - i32.const 11056 - i32.store - i32.const 11056 - i32.const 3 - local.get $2 - f64.convert_i32_s - local.get $4 - f64.convert_i32_u - local.get $5 - f64.convert_i32_u - f64.const 0 - f64.const 0 - call $~lib/builtins/trace - i32.const 0 - i32.const 1568 - i32.const 741 - i32.const 7 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|0 - end - end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $std/typedarray/testTypedArraySet<~lib/typedarray/Uint8ClampedArray> - (local $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 f32) - (local $10 f64) - global.get $~lib/memory/__stack_pointer - i32.const 20 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 15924 - i32.lt_s - if - i32.const 32336 - i32.const 32384 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.tee $0 - i64.const 0 - i64.store - local.get $0 - i64.const 0 - i64.store offset=8 - local.get $0 - i32.const 0 - i32.store offset=16 - local.get $0 - i32.const 3 - call $~lib/typedarray/Int64Array#constructor - local.tee $4 - i32.store - local.get $4 - i32.const 0 - i64.const 7 - call $~lib/typedarray/Int64Array#__set - local.get $4 - i32.const 1 - i64.const 8 - call $~lib/typedarray/Int64Array#__set - local.get $4 - i32.const 2 - i64.const 9 - call $~lib/typedarray/Int64Array#__set - global.get $~lib/memory/__stack_pointer - i32.const 4 - call $~lib/typedarray/Uint8Array#constructor - local.tee $2 - i32.store offset=4 - local.get $2 - i32.const 0 - i32.const 100 - call $~lib/typedarray/Uint8Array#__set - local.get $2 - i32.const 1 - i32.const 101 - call $~lib/typedarray/Uint8Array#__set - local.get $2 - i32.const 2 - i32.const 102 - call $~lib/typedarray/Uint8Array#__set - local.get $2 - i32.const 3 - i32.const 103 - call $~lib/typedarray/Uint8Array#__set - global.get $~lib/memory/__stack_pointer - i32.const 3 - call $~lib/typedarray/Int16Array#constructor - local.tee $8 - i32.store offset=8 - local.get $8 - i32.const 0 - i32.const 1000 - call $~lib/typedarray/Int16Array#__set - local.get $8 - i32.const 1 - i32.const 1001 - call $~lib/typedarray/Int16Array#__set - local.get $8 - i32.const 2 - i32.const 1002 - call $~lib/typedarray/Int16Array#__set - global.get $~lib/memory/__stack_pointer - i32.const 10 - call $~lib/typedarray/Uint8ClampedArray#constructor - local.tee $0 - i32.store offset=12 - global.get $~lib/memory/__stack_pointer - i32.const 10304 - i32.store offset=16 - block $folding-inner0 - local.get $0 - i32.load offset=8 - i32.const 10316 - i32.load + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 15924 i32.lt_s br_if $folding-inner0 - local.get $0 - i32.load offset=4 - local.set $5 - i32.const 10308 - i32.load - local.set $6 - i32.const 10316 - i32.load - local.set $1 - loop $for-loop|0 - local.get $1 - local.get $7 - i32.gt_s - if - local.get $5 - local.get $7 - i32.add - local.get $6 - local.get $7 - i32.const 2 - i32.shl - i32.add - i32.load - local.tee $3 - i32.const 31 - i32.shr_s - i32.const -1 - i32.xor - local.get $3 - i32.const 255 - local.get $3 - i32.sub - i32.const 31 - i32.shr_s - i32.or - i32.and - i32.store8 - local.get $7 - i32.const 1 - i32.add - local.set $7 - br $for-loop|0 - end - end - i32.const 10 - i32.const 0 - i32.const 63 - i32.const 11024 - call $~lib/rt/__newArray - local.set $1 global.get $~lib/memory/__stack_pointer + local.tee $1 + i64.const 0 + i64.store local.get $1 - i32.store offset=16 - local.get $0 + i64.const 0 + i64.store offset=8 local.get $1 - call $std/typedarray/valuesEqual<~lib/typedarray/Uint8ClampedArray> - global.get $~lib/memory/__stack_pointer - i32.const 10384 - i32.store offset=16 i32.const 0 - local.set $1 - local.get $0 - i32.load offset=8 - i32.const 10396 - i32.load - i32.const 3 - i32.add - i32.lt_s - br_if $folding-inner0 - local.get $0 - i32.load offset=4 - i32.const 3 - i32.add - local.set $3 - i32.const 10388 - i32.load - local.set $5 - i32.const 10396 + i32.store offset=16 + local.get $1 + i32.const 10224 + i32.store + local.get $1 + i32.const 10236 i32.load - local.set $6 - loop $for-loop|00 - local.get $1 - local.get $6 + local.tee $3 + call $~lib/typedarray/Uint32Array#constructor + local.tee $1 + i32.store offset=4 + loop $for-loop|0 + local.get $0 + local.get $3 i32.lt_s if local.get $1 - local.get $3 - i32.add - local.get $5 - local.get $1 - i32.const 2 - i32.shl - i32.add - f32.load - local.tee $9 - local.get $9 - f32.sub - f32.const 0 - f32.eq - if (result i32) - f32.const 0 - f32.const 255 - local.get $9 - f32.min - f32.max - i32.trunc_f32_u - else - i32.const 0 - end - i32.store8 - local.get $1 + local.get $0 + i32.const 10224 + local.get $0 + call $~lib/array/Array#__get + call $~lib/typedarray/Uint32Array#__set + local.get $0 i32.const 1 i32.add - local.set $1 - br $for-loop|00 + local.set $0 + br $for-loop|0 end end - i32.const 10 - i32.const 0 - i32.const 63 - i32.const 11120 - call $~lib/rt/__newArray - local.set $1 global.get $~lib/memory/__stack_pointer + local.tee $0 local.get $1 - i32.store offset=16 + i32.load + local.tee $2 + i32.store offset=8 local.get $0 + local.get $2 local.get $1 - call $std/typedarray/valuesEqual<~lib/typedarray/Uint8ClampedArray> - local.get $0 - local.get $4 - i32.const 6 - call $~lib/typedarray/Uint8ClampedArray#set<~lib/typedarray/Int64Array> - i32.const 10 - i32.const 0 - i32.const 63 - i32.const 11152 - call $~lib/rt/__newArray - local.set $1 - global.get $~lib/memory/__stack_pointer + i32.load offset=4 local.get $1 - i32.store offset=16 - local.get $0 + i32.load + i32.sub local.get $1 - call $std/typedarray/valuesEqual<~lib/typedarray/Uint8ClampedArray> - global.get $~lib/memory/__stack_pointer - i32.const 10480 - i32.store offset=16 - i32.const 0 - local.set $4 - local.get $0 i32.load offset=8 - i32.const 10492 + local.get $1 + i32.load offset=4 + local.get $1 i32.load - i32.const 2 + i32.sub i32.add + call $~lib/arraybuffer/ArrayBuffer#slice + local.tee $0 + i32.store offset=12 + i32.const 1 + global.set $~argumentsLength + global.get $~lib/memory/__stack_pointer + local.tee $4 + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 15924 i32.lt_s br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store local.get $0 - i32.load offset=4 - i32.const 2 - i32.add - local.set $3 - i32.const 10484 - i32.load - local.set $5 - i32.const 10492 - i32.load - local.set $6 - loop $for-loop|01 - local.get $4 - local.get $6 - i32.lt_s - if - local.get $3 - local.get $4 - i32.add - local.get $5 - local.get $4 - i32.const 3 - i32.shl - i32.add - f64.load - local.tee $10 - local.get $10 - f64.sub - f64.const 0 - f64.eq - if (result i32) - f64.const 0 - f64.const 255 - local.get $10 - f64.min - f64.max - i32.trunc_f64_u - else - i32.const 0 - end - i32.store8 - local.get $4 - i32.const 1 - i32.add - local.set $4 - br $for-loop|01 - end + i32.const 20 + i32.sub + i32.load offset=16 + local.tee $5 + i32.const 3 + i32.and + if + i32.const 1056 + i32.const 1632 + i32.const 1831 + i32.const 9 + call $~lib/builtins/abort + unreachable end - i32.const 10 - i32.const 0 - i32.const 63 - i32.const 11184 - call $~lib/rt/__newArray - local.set $1 global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=16 - local.get $0 - local.get $1 - call $std/typedarray/valuesEqual<~lib/typedarray/Uint8ClampedArray> + i32.const 12 + i32.const 9 + call $~lib/rt/itcms/__new + local.tee $2 + i32.store local.get $2 - i32.load offset=8 local.get $0 - i32.load offset=8 - i32.gt_s - br_if $folding-inner0 + i32.store + local.get $2 local.get $0 - i32.load offset=4 + call $~lib/rt/itcms/__link local.get $2 - i32.load offset=4 + local.get $5 + i32.store offset=8 local.get $2 - i32.load offset=8 - call $~lib/memory/memory.copy local.get $0 - local.get $8 - i32.const 4 - call $~lib/typedarray/Uint8ClampedArray#set<~lib/typedarray/Int16Array> + i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 10560 + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $4 + local.get $2 i32.store offset=16 i32.const 0 - local.set $3 - local.get $0 - i32.load offset=8 - i32.const 10572 - i32.load - i32.const 7 - i32.add - i32.lt_s - br_if $folding-inner0 - local.get $0 - i32.load offset=4 - i32.const 7 - i32.add - local.set $6 - i32.const 10564 - i32.load - local.set $1 - i32.const 10572 - i32.load - local.set $2 - loop $for-loop|02 - local.get $2 + local.set $0 + loop $for-loop|1 + local.get $0 local.get $3 - i32.gt_s + i32.lt_s if - local.get $3 - local.get $6 - i32.add local.get $1 - local.get $3 - i32.add - i32.load8_s - local.tee $5 - i32.const 31 - i32.shr_s - i32.const -1 - i32.xor - local.get $5 - i32.const 255 - local.get $5 - i32.sub - i32.const 31 - i32.shr_s - i32.or - i32.and - i32.store8 - local.get $3 + local.get $0 + call $~lib/typedarray/Uint32Array#__get + local.get $2 + local.get $0 + call $~lib/typedarray/Uint32Array#__get + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 707 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $0 i32.const 1 i32.add - local.set $3 - br $for-loop|02 + local.set $0 + br $for-loop|1 end end - i32.const 10 - i32.const 0 - i32.const 63 - i32.const 11216 - call $~lib/rt/__newArray - local.set $2 - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=16 - local.get $0 - local.get $2 - call $std/typedarray/valuesEqual<~lib/typedarray/Uint8ClampedArray> global.get $~lib/memory/__stack_pointer i32.const 20 i32.add global.set $~lib/memory/__stack_pointer return end - i32.const 1360 - i32.const 1632 - i32.const 1865 - i32.const 47 + i32.const 32336 + i32.const 32384 + i32.const 1 + i32.const 1 call $~lib/builtins/abort unreachable ) - (func $std/typedarray/valuesEqual<~lib/typedarray/Int16Array> (param $0 i32) (param $1 i32) + (func $std/typedarray/testArrayWrap<~lib/typedarray/Int64Array,i64> + (local $0 i32) + (local $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 20 i32.sub global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 15924 - i32.lt_s - if - i32.const 32336 - i32.const 32384 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - local.get $0 - i32.load offset=8 - i32.const 1 - i32.shr_u - local.tee $4 - local.get $1 - i32.load offset=12 - i32.ne - if + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 15924 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.tee $1 + i64.const 0 + i64.store + local.get $1 + i64.const 0 + i64.store offset=8 + local.get $1 i32.const 0 - i32.const 1568 - i32.const 735 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - loop $for-loop|0 + i32.store offset=16 + local.get $1 + i32.const 10224 + i32.store + local.get $1 + i32.const 10236 + i32.load + local.tee $3 + call $~lib/typedarray/Int64Array#constructor + local.tee $1 + i32.store offset=4 + loop $for-loop|0 + local.get $0 + local.get $3 + i32.lt_s + if + local.get $1 + local.get $0 + i32.const 10224 + local.get $0 + call $~lib/array/Array#__get + i64.extend_i32_s + call $~lib/typedarray/Int64Array#__set + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + local.tee $0 + local.get $1 + i32.load + local.tee $2 + i32.store offset=8 + local.get $0 local.get $2 - local.get $4 + local.get $1 + i32.load offset=4 + local.get $1 + i32.load + i32.sub + local.get $1 + i32.load offset=8 + local.get $1 + i32.load offset=4 + local.get $1 + i32.load + i32.sub + i32.add + call $~lib/arraybuffer/ArrayBuffer#slice + local.tee $0 + i32.store offset=12 + i32.const 1 + global.set $~argumentsLength + global.get $~lib/memory/__stack_pointer + local.tee $4 + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 15924 i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + local.tee $5 + i32.const 7 + i32.and if - local.get $2 - i32.const 1 - i32.shl - local.tee $3 + i32.const 1056 + i32.const 1632 + i32.const 1831 + i32.const 9 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.const 10 + call $~lib/rt/itcms/__new + local.tee $2 + i32.store + local.get $2 + local.get $0 + i32.store + local.get $2 + local.get $0 + call $~lib/rt/itcms/__link + local.get $2 + local.get $5 + i32.store offset=8 + local.get $2 + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $4 + local.get $2 + i32.store offset=16 + i32.const 0 + local.set $0 + loop $for-loop|1 local.get $0 - i32.load offset=4 - i32.add - i32.load16_s - local.tee $5 local.get $3 - local.get $1 - i32.load offset=4 - i32.add - i32.load16_s - local.tee $3 - i32.ne + i32.lt_s if - global.get $~lib/memory/__stack_pointer - i32.const 11296 - i32.store - i32.const 11296 - i32.const 3 + local.get $1 + local.get $0 + call $~lib/typedarray/Int64Array#__get local.get $2 - f64.convert_i32_s - local.get $5 - f64.convert_i32_s - local.get $3 - f64.convert_i32_s - f64.const 0 - f64.const 0 - call $~lib/builtins/trace - i32.const 0 - i32.const 1568 - i32.const 741 - i32.const 7 - call $~lib/builtins/abort - unreachable + local.get $0 + call $~lib/typedarray/Int64Array#__get + i64.ne + if + i32.const 0 + i32.const 1568 + i32.const 707 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|1 end - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|0 end + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.add + global.set $~lib/memory/__stack_pointer + return end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer + i32.const 32336 + i32.const 32384 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable ) - (func $std/typedarray/testTypedArraySet<~lib/typedarray/Int16Array> + (func $std/typedarray/testArrayWrap<~lib/typedarray/Uint64Array,u64> (local $0 i32) (local $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) - (local $6 i32) - (local $7 f32) - (local $8 f64) - (local $9 i32) global.get $~lib/memory/__stack_pointer i32.const 20 i32.sub global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 15924 - i32.lt_s - if - i32.const 32336 - i32.const 32384 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.tee $1 - i64.const 0 - i64.store - local.get $1 - i64.const 0 - i64.store offset=8 - local.get $1 - i32.const 0 - i32.store offset=16 - local.get $1 - i32.const 3 - call $~lib/typedarray/Int64Array#constructor - local.tee $3 - i32.store - local.get $3 - i32.const 0 - i64.const 7 - call $~lib/typedarray/Int64Array#__set - local.get $3 - i32.const 1 - i64.const 8 - call $~lib/typedarray/Int64Array#__set - local.get $3 - i32.const 2 - i64.const 9 - call $~lib/typedarray/Int64Array#__set - global.get $~lib/memory/__stack_pointer - i32.const 4 - call $~lib/typedarray/Uint8Array#constructor - local.tee $2 - i32.store offset=4 - local.get $2 - i32.const 0 - i32.const 100 - call $~lib/typedarray/Uint8Array#__set - local.get $2 - i32.const 1 - i32.const 101 - call $~lib/typedarray/Uint8Array#__set - local.get $2 - i32.const 2 - i32.const 102 - call $~lib/typedarray/Uint8Array#__set - local.get $2 - i32.const 3 - i32.const 103 - call $~lib/typedarray/Uint8Array#__set - global.get $~lib/memory/__stack_pointer - i32.const 3 - call $~lib/typedarray/Int16Array#constructor - local.tee $4 - i32.store offset=8 - local.get $4 - i32.const 0 - i32.const 1000 - call $~lib/typedarray/Int16Array#__set - local.get $4 - i32.const 1 - i32.const 1001 - call $~lib/typedarray/Int16Array#__set - local.get $4 - i32.const 2 - i32.const 1002 - call $~lib/typedarray/Int16Array#__set - global.get $~lib/memory/__stack_pointer - i32.const 10 - call $~lib/typedarray/Int16Array#constructor - local.tee $1 - i32.store offset=12 - global.get $~lib/memory/__stack_pointer - i32.const 10304 - i32.store offset=16 - local.get $1 - call $~lib/typedarray/Int16Array#set<~lib/array/Array> - i32.const 10 - i32.const 1 - i32.const 64 - i32.const 11248 - call $~lib/rt/__newArray - local.set $0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=16 - local.get $1 - local.get $0 - call $std/typedarray/valuesEqual<~lib/typedarray/Int16Array> - global.get $~lib/memory/__stack_pointer - i32.const 10384 - i32.store offset=16 - i32.const 0 - local.set $0 block $folding-inner0 - i32.const 10396 - i32.load - i32.const 3 - i32.add - local.get $1 - i32.load offset=8 - i32.const 1 - i32.shr_u - i32.gt_s + global.get $~lib/memory/__stack_pointer + i32.const 15924 + i32.lt_s br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.tee $1 + i64.const 0 + i64.store local.get $1 - i32.load offset=4 - i32.const 6 - i32.add - local.set $5 - i32.const 10388 - i32.load - local.set $6 - i32.const 10396 + i64.const 0 + i64.store offset=8 + local.get $1 + i32.const 0 + i32.store offset=16 + local.get $1 + i32.const 10224 + i32.store + local.get $1 + i32.const 10236 i32.load - local.set $9 + local.tee $3 + call $~lib/typedarray/Uint64Array#constructor + local.tee $1 + i32.store offset=4 loop $for-loop|0 local.get $0 - local.get $9 + local.get $3 i32.lt_s if - local.get $5 + local.get $1 local.get $0 - i32.const 1 - i32.shl - i32.add - local.get $6 + i32.const 10224 local.get $0 - i32.const 2 - i32.shl - i32.add - f32.load - local.tee $7 - local.get $7 - f32.sub - f32.const 0 - f32.eq - if (result i32) - local.get $7 - i32.trunc_f32_s - else - i32.const 0 - end - i32.store16 + call $~lib/array/Array#__get + i64.extend_i32_s + call $~lib/typedarray/Uint64Array#__set local.get $0 i32.const 1 i32.add @@ -40152,143 +39334,477 @@ br $for-loop|0 end end - i32.const 10 - i32.const 1 - i32.const 64 - i32.const 11344 - call $~lib/rt/__newArray - local.set $0 global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=16 + local.tee $0 local.get $1 + i32.load + local.tee $2 + i32.store offset=8 local.get $0 - call $std/typedarray/valuesEqual<~lib/typedarray/Int16Array> + local.get $2 local.get $1 - local.get $3 - call $~lib/typedarray/Int16Array#set<~lib/typedarray/Int64Array> - i32.const 10 - i32.const 1 - i32.const 64 - i32.const 11392 - call $~lib/rt/__newArray - local.set $0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=16 + i32.load offset=4 local.get $1 - local.get $0 - call $std/typedarray/valuesEqual<~lib/typedarray/Int16Array> - global.get $~lib/memory/__stack_pointer - i32.const 10480 - i32.store offset=16 - i32.const 0 - local.set $0 - i32.const 10492 i32.load - i32.const 2 - i32.add + i32.sub local.get $1 i32.load offset=8 - i32.const 1 - i32.shr_u - i32.gt_s - br_if $folding-inner0 local.get $1 i32.load offset=4 + local.get $1 + i32.load + i32.sub + i32.add + call $~lib/arraybuffer/ArrayBuffer#slice + local.tee $0 + i32.store offset=12 + i32.const 1 + global.set $~argumentsLength + global.get $~lib/memory/__stack_pointer + local.tee $4 + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 15924 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + local.tee $5 + i32.const 7 + i32.and + if + i32.const 1056 + i32.const 1632 + i32.const 1831 + i32.const 9 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.const 11 + call $~lib/rt/itcms/__new + local.tee $2 + i32.store + local.get $2 + local.get $0 + i32.store + local.get $2 + local.get $0 + call $~lib/rt/itcms/__link + local.get $2 + local.get $5 + i32.store offset=8 + local.get $2 + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer i32.const 4 i32.add - local.set $3 - i32.const 10484 - i32.load - local.set $5 - i32.const 10492 - i32.load - local.set $6 - loop $for-loop|00 + global.set $~lib/memory/__stack_pointer + local.get $4 + local.get $2 + i32.store offset=16 + i32.const 0 + local.set $0 + loop $for-loop|1 local.get $0 - local.get $6 + local.get $3 i32.lt_s if - local.get $3 + local.get $1 local.get $0 - i32.const 1 - i32.shl - i32.add - local.get $5 + call $~lib/typedarray/Uint64Array#__get + local.get $2 local.get $0 - i32.const 3 - i32.shl - i32.add - f64.load - local.tee $8 - local.get $8 - f64.sub - f64.const 0 - f64.eq - if (result i32) - local.get $8 - i32.trunc_f64_s - else + call $~lib/typedarray/Uint64Array#__get + i64.ne + if i32.const 0 + i32.const 1568 + i32.const 707 + i32.const 5 + call $~lib/builtins/abort + unreachable end - i32.store16 local.get $0 i32.const 1 i32.add local.set $0 - br $for-loop|00 + br $for-loop|1 end end - i32.const 10 - i32.const 1 - i32.const 64 - i32.const 11440 - call $~lib/rt/__newArray - local.set $0 global.get $~lib/memory/__stack_pointer - local.get $0 + i32.const 20 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + i32.const 32336 + i32.const 32384 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) + (func $std/typedarray/testArrayWrap<~lib/typedarray/Float32Array,f32> + (local $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 15924 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.tee $1 + i64.const 0 + i64.store + local.get $1 + i64.const 0 + i64.store offset=8 + local.get $1 + i32.const 0 i32.store offset=16 local.get $1 - local.get $0 - call $std/typedarray/valuesEqual<~lib/typedarray/Int16Array> + i32.const 10224 + i32.store + local.get $1 + i32.const 10236 + i32.load + local.tee $3 + call $~lib/typedarray/Float32Array#constructor + local.tee $1 + i32.store offset=4 + loop $for-loop|0 + local.get $0 + local.get $3 + i32.lt_s + if + local.get $1 + local.get $0 + i32.const 10224 + local.get $0 + call $~lib/array/Array#__get + f32.convert_i32_s + call $~lib/typedarray/Float32Array#__set + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + local.tee $0 local.get $1 + i32.load + local.tee $2 + i32.store offset=8 + local.get $0 local.get $2 - call $~lib/typedarray/Int16Array#set<~lib/typedarray/Uint8Array> local.get $1 + i32.load offset=4 + local.get $1 + i32.load + i32.sub + local.get $1 + i32.load offset=8 + local.get $1 + i32.load offset=4 + local.get $1 + i32.load + i32.sub + i32.add + call $~lib/arraybuffer/ArrayBuffer#slice + local.tee $0 + i32.store offset=12 + i32.const 1 + global.set $~argumentsLength + global.get $~lib/memory/__stack_pointer + local.tee $4 + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 15924 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + local.tee $5 + i32.const 3 + i32.and + if + i32.const 1056 + i32.const 1632 + i32.const 1831 + i32.const 9 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.const 12 + call $~lib/rt/itcms/__new + local.tee $2 + i32.store + local.get $2 + local.get $0 + i32.store + local.get $2 + local.get $0 + call $~lib/rt/itcms/__link + local.get $2 + local.get $5 + i32.store offset=8 + local.get $2 + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer local.get $4 - call $~lib/typedarray/Int16Array#set<~lib/typedarray/Int16Array> + local.get $2 + i32.store offset=16 + i32.const 0 + local.set $0 + loop $for-loop|1 + local.get $0 + local.get $3 + i32.lt_s + if + local.get $1 + local.get $0 + call $~lib/typedarray/Float32Array#__get + local.get $2 + local.get $0 + call $~lib/typedarray/Float32Array#__get + f32.ne + if + i32.const 0 + i32.const 1568 + i32.const 707 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|1 + end + end global.get $~lib/memory/__stack_pointer - i32.const 10560 + i32.const 20 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + i32.const 32336 + i32.const 32384 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) + (func $std/typedarray/testArrayWrap<~lib/typedarray/Float64Array,f64> + (local $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 15924 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.tee $1 + i64.const 0 + i64.store + local.get $1 + i64.const 0 + i64.store offset=8 + local.get $1 + i32.const 0 i32.store offset=16 local.get $1 - call $~lib/typedarray/Int16Array#set<~lib/array/Array> - i32.const 10 - i32.const 1 - i32.const 64 - i32.const 11488 - call $~lib/rt/__newArray - local.set $2 + i32.const 10224 + i32.store + local.get $1 + i32.const 10236 + i32.load + local.tee $3 + call $~lib/typedarray/Float64Array#constructor + local.tee $1 + i32.store offset=4 + loop $for-loop|0 + local.get $0 + local.get $3 + i32.lt_s + if + local.get $1 + local.get $0 + i32.const 10224 + local.get $0 + call $~lib/array/Array#__get + f64.convert_i32_s + call $~lib/typedarray/Float64Array#__set + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|0 + end + end global.get $~lib/memory/__stack_pointer + local.tee $0 + local.get $1 + i32.load + local.tee $2 + i32.store offset=8 + local.get $0 local.get $2 - i32.store offset=16 local.get $1 + i32.load offset=4 + local.get $1 + i32.load + i32.sub + local.get $1 + i32.load offset=8 + local.get $1 + i32.load offset=4 + local.get $1 + i32.load + i32.sub + i32.add + call $~lib/arraybuffer/ArrayBuffer#slice + local.tee $0 + i32.store offset=12 + i32.const 1 + global.set $~argumentsLength + global.get $~lib/memory/__stack_pointer + local.tee $4 + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 15924 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + local.tee $5 + i32.const 7 + i32.and + if + i32.const 1056 + i32.const 1632 + i32.const 1831 + i32.const 9 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.const 13 + call $~lib/rt/itcms/__new + local.tee $2 + i32.store local.get $2 - call $std/typedarray/valuesEqual<~lib/typedarray/Int16Array> + local.get $0 + i32.store + local.get $2 + local.get $0 + call $~lib/rt/itcms/__link + local.get $2 + local.get $5 + i32.store offset=8 + local.get $2 + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $4 + local.get $2 + i32.store offset=16 + i32.const 0 + local.set $0 + loop $for-loop|1 + local.get $0 + local.get $3 + i32.lt_s + if + local.get $1 + local.get $0 + call $~lib/typedarray/Float64Array#__get + local.get $2 + local.get $0 + call $~lib/typedarray/Float64Array#__get + f64.ne + if + i32.const 0 + i32.const 1568 + i32.const 707 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|1 + end + end global.get $~lib/memory/__stack_pointer i32.const 20 i32.add global.set $~lib/memory/__stack_pointer return end - i32.const 1360 - i32.const 1632 - i32.const 1865 - i32.const 47 + i32.const 32336 + i32.const 32384 + i32.const 1 + i32.const 1 call $~lib/builtins/abort unreachable ) - (func $std/typedarray/valuesEqual<~lib/typedarray/Uint16Array> (param $0 i32) (param $1 i32) + (func $std/typedarray/valuesEqual<~lib/typedarray/Int8Array> (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -40313,9 +39829,7 @@ i32.store local.get $0 i32.load offset=8 - i32.const 1 - i32.shr_u - local.tee $4 + local.tee $3 local.get $1 i32.load offset=12 i32.ne @@ -40329,37 +39843,34 @@ end loop $for-loop|0 local.get $2 - local.get $4 + local.get $3 i32.lt_s if local.get $2 - i32.const 1 - i32.shl - local.tee $3 local.get $0 i32.load offset=4 i32.add - i32.load16_u - local.tee $5 - local.get $3 + i32.load8_s + local.tee $4 + local.get $2 local.get $1 i32.load offset=4 i32.add - i32.load16_u - local.tee $3 + i32.load8_s + local.tee $5 i32.ne if global.get $~lib/memory/__stack_pointer - i32.const 11584 + i32.const 10640 i32.store - i32.const 11584 + i32.const 10640 i32.const 3 local.get $2 f64.convert_i32_s + local.get $4 + f64.convert_i32_s local.get $5 - f64.convert_i32_u - local.get $3 - f64.convert_i32_u + f64.convert_i32_s f64.const 0 f64.const 0 call $~lib/builtins/trace @@ -40382,7 +39893,7 @@ i32.add global.set $~lib/memory/__stack_pointer ) - (func $std/typedarray/testTypedArraySet<~lib/typedarray/Uint16Array> + (func $std/typedarray/testTypedArraySet<~lib/typedarray/Int8Array> (local $0 i32) (local $1 i32) (local $2 i32) @@ -40475,18 +39986,18 @@ call $~lib/typedarray/Int16Array#__set global.get $~lib/memory/__stack_pointer i32.const 10 - call $~lib/typedarray/Uint16Array#constructor + call $~lib/typedarray/Int8Array#constructor local.tee $1 i32.store offset=12 global.get $~lib/memory/__stack_pointer i32.const 10304 i32.store offset=16 local.get $1 - call $~lib/typedarray/Int16Array#set<~lib/array/Array> + call $~lib/typedarray/Int8Array#set<~lib/array/Array> i32.const 10 - i32.const 1 - i32.const 65 - i32.const 11536 + i32.const 0 + i32.const 15 + i32.const 10608 call $~lib/rt/__newArray local.set $0 global.get $~lib/memory/__stack_pointer @@ -40494,26 +40005,24 @@ i32.store offset=16 local.get $1 local.get $0 - call $std/typedarray/valuesEqual<~lib/typedarray/Uint16Array> + call $std/typedarray/valuesEqual<~lib/typedarray/Int8Array> global.get $~lib/memory/__stack_pointer i32.const 10384 i32.store offset=16 i32.const 0 local.set $0 block $folding-inner0 + local.get $1 + i32.load offset=8 i32.const 10396 i32.load i32.const 3 i32.add - local.get $1 - i32.load offset=8 - i32.const 1 - i32.shr_u - i32.gt_s + i32.lt_s br_if $folding-inner0 local.get $1 i32.load offset=4 - i32.const 6 + i32.const 3 i32.add local.set $5 i32.const 10388 @@ -40527,10 +40036,8 @@ local.get $9 i32.lt_s if - local.get $5 local.get $0 - i32.const 1 - i32.shl + local.get $5 i32.add local.get $6 local.get $0 @@ -40545,11 +40052,11 @@ f32.eq if (result i32) local.get $7 - i32.trunc_f32_u + i32.trunc_f32_s else i32.const 0 end - i32.store16 + i32.store8 local.get $0 i32.const 1 i32.add @@ -40558,9 +40065,9 @@ end end i32.const 10 - i32.const 1 - i32.const 65 - i32.const 11632 + i32.const 0 + i32.const 15 + i32.const 10688 call $~lib/rt/__newArray local.set $0 global.get $~lib/memory/__stack_pointer @@ -40568,14 +40075,14 @@ i32.store offset=16 local.get $1 local.get $0 - call $std/typedarray/valuesEqual<~lib/typedarray/Uint16Array> + call $std/typedarray/valuesEqual<~lib/typedarray/Int8Array> local.get $1 local.get $3 - call $~lib/typedarray/Int16Array#set<~lib/typedarray/Int64Array> + call $~lib/typedarray/Int8Array#set<~lib/typedarray/Int64Array> i32.const 10 - i32.const 1 - i32.const 65 - i32.const 11680 + i32.const 0 + i32.const 15 + i32.const 10720 call $~lib/rt/__newArray local.set $0 global.get $~lib/memory/__stack_pointer @@ -40583,25 +40090,23 @@ i32.store offset=16 local.get $1 local.get $0 - call $std/typedarray/valuesEqual<~lib/typedarray/Uint16Array> + call $std/typedarray/valuesEqual<~lib/typedarray/Int8Array> global.get $~lib/memory/__stack_pointer i32.const 10480 i32.store offset=16 i32.const 0 local.set $0 + local.get $1 + i32.load offset=8 i32.const 10492 i32.load i32.const 2 i32.add - local.get $1 - i32.load offset=8 - i32.const 1 - i32.shr_u - i32.gt_s + i32.lt_s br_if $folding-inner0 local.get $1 i32.load offset=4 - i32.const 4 + i32.const 2 i32.add local.set $3 i32.const 10484 @@ -40615,10 +40120,8 @@ local.get $6 i32.lt_s if - local.get $3 local.get $0 - i32.const 1 - i32.shl + local.get $3 i32.add local.get $5 local.get $0 @@ -40633,11 +40136,11 @@ f64.eq if (result i32) local.get $8 - i32.trunc_f64_u + i32.trunc_f64_s else i32.const 0 end - i32.store16 + i32.store8 local.get $0 i32.const 1 i32.add @@ -40646,9 +40149,9 @@ end end i32.const 10 - i32.const 1 - i32.const 65 - i32.const 11728 + i32.const 0 + i32.const 15 + i32.const 10752 call $~lib/rt/__newArray local.set $0 global.get $~lib/memory/__stack_pointer @@ -40656,22 +40159,22 @@ i32.store offset=16 local.get $1 local.get $0 - call $std/typedarray/valuesEqual<~lib/typedarray/Uint16Array> + call $std/typedarray/valuesEqual<~lib/typedarray/Int8Array> local.get $1 local.get $2 - call $~lib/typedarray/Int16Array#set<~lib/typedarray/Uint8Array> + call $~lib/typedarray/Int8Array#set<~lib/typedarray/Uint8Array> local.get $1 local.get $4 - call $~lib/typedarray/Int16Array#set<~lib/typedarray/Int16Array> + call $~lib/typedarray/Int8Array#set<~lib/typedarray/Int16Array> global.get $~lib/memory/__stack_pointer i32.const 10560 i32.store offset=16 local.get $1 - call $~lib/typedarray/Int16Array#set<~lib/array/Array> + call $~lib/typedarray/Int8Array#set<~lib/array/Array> i32.const 10 - i32.const 1 - i32.const 65 - i32.const 11776 + i32.const 0 + i32.const 15 + i32.const 10784 call $~lib/rt/__newArray local.set $2 global.get $~lib/memory/__stack_pointer @@ -40679,7 +40182,7 @@ i32.store offset=16 local.get $1 local.get $2 - call $std/typedarray/valuesEqual<~lib/typedarray/Uint16Array> + call $std/typedarray/valuesEqual<~lib/typedarray/Int8Array> global.get $~lib/memory/__stack_pointer i32.const 20 i32.add @@ -40693,7 +40196,7 @@ call $~lib/builtins/abort unreachable ) - (func $std/typedarray/valuesEqual<~lib/typedarray/Int32Array> (param $0 i32) (param $1 i32) + (func $std/typedarray/valuesEqual<~lib/typedarray/Uint8Array> (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -40718,9 +40221,7 @@ i32.store local.get $0 i32.load offset=8 - i32.const 2 - i32.shr_u - local.tee $4 + local.tee $3 local.get $1 i32.load offset=12 i32.ne @@ -40734,37 +40235,34 @@ end loop $for-loop|0 local.get $2 - local.get $4 + local.get $3 i32.lt_s if local.get $2 - i32.const 2 - i32.shl - local.tee $3 local.get $0 i32.load offset=4 i32.add - i32.load - local.tee $5 - local.get $3 + i32.load8_u + local.tee $4 + local.get $2 local.get $1 i32.load offset=4 i32.add - i32.load - local.tee $3 + i32.load8_u + local.tee $5 i32.ne if global.get $~lib/memory/__stack_pointer - i32.const 11888 + i32.const 10848 i32.store - i32.const 11888 + i32.const 10848 i32.const 3 local.get $2 f64.convert_i32_s + local.get $4 + f64.convert_i32_u local.get $5 - f64.convert_i32_s - local.get $3 - f64.convert_i32_s + f64.convert_i32_u f64.const 0 f64.const 0 call $~lib/builtins/trace @@ -40787,7 +40285,7 @@ i32.add global.set $~lib/memory/__stack_pointer ) - (func $std/typedarray/testTypedArraySet<~lib/typedarray/Int32Array> + (func $std/typedarray/testTypedArraySet<~lib/typedarray/Uint8Array> (local $0 i32) (local $1 i32) (local $2 i32) @@ -40795,10 +40293,9 @@ (local $4 i32) (local $5 i32) (local $6 i32) - (local $7 i32) - (local $8 f32) - (local $9 f64) - (local $10 i32) + (local $7 f32) + (local $8 f64) + (local $9 i32) global.get $~lib/memory/__stack_pointer i32.const 20 i32.sub @@ -40815,50 +40312,50 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.tee $0 + local.tee $1 i64.const 0 i64.store - local.get $0 + local.get $1 i64.const 0 i64.store offset=8 - local.get $0 + local.get $1 i32.const 0 i32.store offset=16 - local.get $0 + local.get $1 i32.const 3 call $~lib/typedarray/Int64Array#constructor - local.tee $1 + local.tee $3 i32.store - local.get $1 + local.get $3 i32.const 0 i64.const 7 call $~lib/typedarray/Int64Array#__set - local.get $1 + local.get $3 i32.const 1 i64.const 8 call $~lib/typedarray/Int64Array#__set - local.get $1 + local.get $3 i32.const 2 i64.const 9 call $~lib/typedarray/Int64Array#__set global.get $~lib/memory/__stack_pointer i32.const 4 call $~lib/typedarray/Uint8Array#constructor - local.tee $3 + local.tee $2 i32.store offset=4 - local.get $3 + local.get $2 i32.const 0 i32.const 100 call $~lib/typedarray/Uint8Array#__set - local.get $3 + local.get $2 i32.const 1 i32.const 101 call $~lib/typedarray/Uint8Array#__set - local.get $3 + local.get $2 i32.const 2 i32.const 102 call $~lib/typedarray/Uint8Array#__set - local.get $3 + local.get $2 i32.const 3 i32.const 103 call $~lib/typedarray/Uint8Array#__set @@ -40881,45 +40378,43 @@ call $~lib/typedarray/Int16Array#__set global.get $~lib/memory/__stack_pointer i32.const 10 - call $~lib/typedarray/Int32Array#constructor - local.tee $0 + call $~lib/typedarray/Uint8Array#constructor + local.tee $1 i32.store offset=12 global.get $~lib/memory/__stack_pointer i32.const 10304 i32.store offset=16 - local.get $0 - call $~lib/typedarray/Int32Array#set<~lib/array/Array> + local.get $1 + call $~lib/typedarray/Int8Array#set<~lib/array/Array> i32.const 10 - i32.const 2 - i32.const 16 - i32.const 11824 + i32.const 0 + i32.const 63 + i32.const 10816 call $~lib/rt/__newArray - local.set $2 + local.set $0 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $0 i32.store offset=16 + local.get $1 local.get $0 - local.get $2 - call $std/typedarray/valuesEqual<~lib/typedarray/Int32Array> + call $std/typedarray/valuesEqual<~lib/typedarray/Uint8Array> global.get $~lib/memory/__stack_pointer i32.const 10384 i32.store offset=16 i32.const 0 - local.set $2 + local.set $0 block $folding-inner0 + local.get $1 + i32.load offset=8 i32.const 10396 i32.load i32.const 3 i32.add - local.get $0 - i32.load offset=8 - i32.const 2 - i32.shr_u - i32.gt_s + i32.lt_s br_if $folding-inner0 - local.get $0 + local.get $1 i32.load offset=4 - i32.const 12 + i32.const 3 i32.add local.set $5 i32.const 10388 @@ -40927,88 +40422,85 @@ local.set $6 i32.const 10396 i32.load - local.set $10 + local.set $9 loop $for-loop|0 - local.get $2 - local.get $10 + local.get $0 + local.get $9 i32.lt_s if + local.get $0 local.get $5 - local.get $2 - i32.const 2 - i32.shl - local.tee $7 i32.add local.get $6 - local.get $7 + local.get $0 + i32.const 2 + i32.shl i32.add f32.load - local.tee $8 - local.get $8 + local.tee $7 + local.get $7 f32.sub f32.const 0 f32.eq if (result i32) - local.get $8 - i32.trunc_f32_s + local.get $7 + i32.trunc_f32_u else i32.const 0 end - i32.store - local.get $2 + i32.store8 + local.get $0 i32.const 1 i32.add - local.set $2 + local.set $0 br $for-loop|0 end end i32.const 10 - i32.const 2 - i32.const 16 - i32.const 11936 + i32.const 0 + i32.const 63 + i32.const 10896 call $~lib/rt/__newArray - local.set $2 + local.set $0 global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=16 local.get $0 - local.get $2 - call $std/typedarray/valuesEqual<~lib/typedarray/Int32Array> + i32.store offset=16 + local.get $1 local.get $0 + call $std/typedarray/valuesEqual<~lib/typedarray/Uint8Array> local.get $1 - call $~lib/typedarray/Int32Array#set<~lib/typedarray/Int64Array> + local.get $3 + call $~lib/typedarray/Int8Array#set<~lib/typedarray/Int64Array> i32.const 10 - i32.const 2 - i32.const 16 - i32.const 12000 + i32.const 0 + i32.const 63 + i32.const 10928 call $~lib/rt/__newArray - local.set $1 + local.set $0 global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=16 local.get $0 + i32.store offset=16 local.get $1 - call $std/typedarray/valuesEqual<~lib/typedarray/Int32Array> + local.get $0 + call $std/typedarray/valuesEqual<~lib/typedarray/Uint8Array> global.get $~lib/memory/__stack_pointer i32.const 10480 i32.store offset=16 i32.const 0 - local.set $1 + local.set $0 + local.get $1 + i32.load offset=8 i32.const 10492 i32.load i32.const 2 i32.add - local.get $0 - i32.load offset=8 - i32.const 2 - i32.shr_u - i32.gt_s + i32.lt_s br_if $folding-inner0 - local.get $0 + local.get $1 i32.load offset=4 - i32.const 8 + i32.const 2 i32.add - local.set $7 + local.set $3 i32.const 10484 i32.load local.set $5 @@ -41016,75 +40508,73 @@ i32.load local.set $6 loop $for-loop|00 - local.get $1 + local.get $0 local.get $6 i32.lt_s if - local.get $7 - local.get $1 - i32.const 2 - i32.shl + local.get $0 + local.get $3 i32.add local.get $5 - local.get $1 + local.get $0 i32.const 3 i32.shl i32.add f64.load - local.tee $9 - local.get $9 + local.tee $8 + local.get $8 f64.sub f64.const 0 f64.eq if (result i32) - local.get $9 - i32.trunc_f64_s + local.get $8 + i32.trunc_f64_u else i32.const 0 end - i32.store - local.get $1 + i32.store8 + local.get $0 i32.const 1 i32.add - local.set $1 + local.set $0 br $for-loop|00 end end i32.const 10 - i32.const 2 - i32.const 16 - i32.const 12064 + i32.const 0 + i32.const 63 + i32.const 10960 call $~lib/rt/__newArray - local.set $1 + local.set $0 global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=16 local.get $0 + i32.store offset=16 local.get $1 - call $std/typedarray/valuesEqual<~lib/typedarray/Int32Array> - local.get $0 - local.get $3 - call $~lib/typedarray/Int32Array#set<~lib/typedarray/Uint8Array> local.get $0 + call $std/typedarray/valuesEqual<~lib/typedarray/Uint8Array> + local.get $1 + local.get $2 + call $~lib/typedarray/Int8Array#set<~lib/typedarray/Uint8Array> + local.get $1 local.get $4 - call $~lib/typedarray/Int32Array#set<~lib/typedarray/Int16Array> + call $~lib/typedarray/Int8Array#set<~lib/typedarray/Int16Array> global.get $~lib/memory/__stack_pointer i32.const 10560 i32.store offset=16 - local.get $0 - call $~lib/typedarray/Int32Array#set<~lib/array/Array> + local.get $1 + call $~lib/typedarray/Int8Array#set<~lib/array/Array> i32.const 10 - i32.const 2 - i32.const 16 - i32.const 12128 + i32.const 0 + i32.const 63 + i32.const 10992 call $~lib/rt/__newArray - local.set $3 + local.set $2 global.get $~lib/memory/__stack_pointer - local.get $3 + local.get $2 i32.store offset=16 - local.get $0 - local.get $3 - call $std/typedarray/valuesEqual<~lib/typedarray/Int32Array> + local.get $1 + local.get $2 + call $std/typedarray/valuesEqual<~lib/typedarray/Uint8Array> global.get $~lib/memory/__stack_pointer i32.const 20 i32.add @@ -41098,7 +40588,7 @@ call $~lib/builtins/abort unreachable ) - (func $std/typedarray/valuesEqual<~lib/typedarray/Uint32Array> (param $0 i32) (param $1 i32) + (func $std/typedarray/valuesEqual<~lib/typedarray/Uint8ClampedArray> (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -41123,9 +40613,7 @@ i32.store local.get $0 i32.load offset=8 - i32.const 2 - i32.shr_u - local.tee $4 + local.tee $3 local.get $1 i32.load offset=12 i32.ne @@ -41139,36 +40627,33 @@ end loop $for-loop|0 local.get $2 - local.get $4 + local.get $3 i32.lt_s if local.get $2 - i32.const 2 - i32.shl - local.tee $3 local.get $0 i32.load offset=4 i32.add - i32.load - local.tee $5 - local.get $3 + i32.load8_u + local.tee $4 + local.get $2 local.get $1 i32.load offset=4 i32.add - i32.load - local.tee $3 + i32.load8_u + local.tee $5 i32.ne if global.get $~lib/memory/__stack_pointer - i32.const 12256 + i32.const 11056 i32.store - i32.const 12256 + i32.const 11056 i32.const 3 local.get $2 f64.convert_i32_s - local.get $5 + local.get $4 f64.convert_i32_u - local.get $3 + local.get $5 f64.convert_i32_u f64.const 0 f64.const 0 @@ -41192,7 +40677,7 @@ i32.add global.set $~lib/memory/__stack_pointer ) - (func $std/typedarray/testTypedArraySet<~lib/typedarray/Uint32Array> + (func $std/typedarray/testTypedArraySet<~lib/typedarray/Uint8ClampedArray> (local $0 i32) (local $1 i32) (local $2 i32) @@ -41201,9 +40686,9 @@ (local $5 i32) (local $6 i32) (local $7 i32) - (local $8 f32) - (local $9 f64) - (local $10 i32) + (local $8 i32) + (local $9 f32) + (local $10 f64) global.get $~lib/memory/__stack_pointer i32.const 20 i32.sub @@ -41232,160 +40717,210 @@ local.get $0 i32.const 3 call $~lib/typedarray/Int64Array#constructor - local.tee $1 + local.tee $4 i32.store - local.get $1 + local.get $4 i32.const 0 i64.const 7 call $~lib/typedarray/Int64Array#__set - local.get $1 + local.get $4 i32.const 1 i64.const 8 call $~lib/typedarray/Int64Array#__set - local.get $1 + local.get $4 i32.const 2 i64.const 9 call $~lib/typedarray/Int64Array#__set global.get $~lib/memory/__stack_pointer i32.const 4 call $~lib/typedarray/Uint8Array#constructor - local.tee $3 + local.tee $2 i32.store offset=4 - local.get $3 + local.get $2 i32.const 0 i32.const 100 call $~lib/typedarray/Uint8Array#__set - local.get $3 + local.get $2 i32.const 1 i32.const 101 call $~lib/typedarray/Uint8Array#__set - local.get $3 + local.get $2 i32.const 2 i32.const 102 call $~lib/typedarray/Uint8Array#__set - local.get $3 + local.get $2 i32.const 3 i32.const 103 call $~lib/typedarray/Uint8Array#__set global.get $~lib/memory/__stack_pointer i32.const 3 call $~lib/typedarray/Int16Array#constructor - local.tee $4 + local.tee $8 i32.store offset=8 - local.get $4 + local.get $8 i32.const 0 i32.const 1000 call $~lib/typedarray/Int16Array#__set - local.get $4 + local.get $8 i32.const 1 i32.const 1001 call $~lib/typedarray/Int16Array#__set - local.get $4 + local.get $8 i32.const 2 i32.const 1002 call $~lib/typedarray/Int16Array#__set global.get $~lib/memory/__stack_pointer i32.const 10 - call $~lib/typedarray/Uint32Array#constructor + call $~lib/typedarray/Uint8ClampedArray#constructor local.tee $0 i32.store offset=12 global.get $~lib/memory/__stack_pointer i32.const 10304 i32.store offset=16 - local.get $0 - call $~lib/typedarray/Int32Array#set<~lib/array/Array> - i32.const 10 - i32.const 2 - i32.const 66 - i32.const 12192 - call $~lib/rt/__newArray - local.set $2 - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=16 - local.get $0 - local.get $2 - call $std/typedarray/valuesEqual<~lib/typedarray/Uint32Array> - global.get $~lib/memory/__stack_pointer - i32.const 10384 - i32.store offset=16 - i32.const 0 - local.set $2 block $folding-inner0 + local.get $0 + i32.load offset=8 + i32.const 10316 + i32.load + i32.lt_s + br_if $folding-inner0 + local.get $0 + i32.load offset=4 + local.set $5 + i32.const 10308 + i32.load + local.set $6 + i32.const 10316 + i32.load + local.set $1 + loop $for-loop|0 + local.get $1 + local.get $7 + i32.gt_s + if + local.get $5 + local.get $7 + i32.add + local.get $6 + local.get $7 + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $3 + i32.const 31 + i32.shr_s + i32.const -1 + i32.xor + local.get $3 + i32.const 255 + local.get $3 + i32.sub + i32.const 31 + i32.shr_s + i32.or + i32.and + i32.store8 + local.get $7 + i32.const 1 + i32.add + local.set $7 + br $for-loop|0 + end + end + i32.const 10 + i32.const 0 + i32.const 63 + i32.const 11024 + call $~lib/rt/__newArray + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=16 + local.get $0 + local.get $1 + call $std/typedarray/valuesEqual<~lib/typedarray/Uint8ClampedArray> + global.get $~lib/memory/__stack_pointer + i32.const 10384 + i32.store offset=16 + i32.const 0 + local.set $1 + local.get $0 + i32.load offset=8 i32.const 10396 i32.load i32.const 3 i32.add - local.get $0 - i32.load offset=8 - i32.const 2 - i32.shr_u - i32.gt_s + i32.lt_s br_if $folding-inner0 local.get $0 i32.load offset=4 - i32.const 12 + i32.const 3 i32.add - local.set $5 + local.set $3 i32.const 10388 i32.load - local.set $6 + local.set $5 i32.const 10396 i32.load - local.set $10 - loop $for-loop|0 - local.get $2 - local.get $10 + local.set $6 + loop $for-loop|00 + local.get $1 + local.get $6 i32.lt_s if + local.get $1 + local.get $3 + i32.add local.get $5 - local.get $2 + local.get $1 i32.const 2 i32.shl - local.tee $7 - i32.add - local.get $6 - local.get $7 i32.add f32.load - local.tee $8 - local.get $8 + local.tee $9 + local.get $9 f32.sub f32.const 0 f32.eq if (result i32) - local.get $8 + f32.const 0 + f32.const 255 + local.get $9 + f32.min + f32.max i32.trunc_f32_u else i32.const 0 end - i32.store - local.get $2 + i32.store8 + local.get $1 i32.const 1 i32.add - local.set $2 - br $for-loop|0 + local.set $1 + br $for-loop|00 end end i32.const 10 - i32.const 2 - i32.const 66 - i32.const 12304 + i32.const 0 + i32.const 63 + i32.const 11120 call $~lib/rt/__newArray - local.set $2 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store offset=16 local.get $0 - local.get $2 - call $std/typedarray/valuesEqual<~lib/typedarray/Uint32Array> - local.get $0 local.get $1 - call $~lib/typedarray/Int32Array#set<~lib/typedarray/Int64Array> + call $std/typedarray/valuesEqual<~lib/typedarray/Uint8ClampedArray> + local.get $0 + local.get $4 + i32.const 6 + call $~lib/typedarray/Uint8ClampedArray#set<~lib/typedarray/Int64Array> i32.const 10 - i32.const 2 - i32.const 66 - i32.const 12368 + i32.const 0 + i32.const 63 + i32.const 11152 call $~lib/rt/__newArray local.set $1 global.get $~lib/memory/__stack_pointer @@ -41393,72 +40928,72 @@ i32.store offset=16 local.get $0 local.get $1 - call $std/typedarray/valuesEqual<~lib/typedarray/Uint32Array> + call $std/typedarray/valuesEqual<~lib/typedarray/Uint8ClampedArray> global.get $~lib/memory/__stack_pointer i32.const 10480 i32.store offset=16 i32.const 0 - local.set $1 + local.set $4 + local.get $0 + i32.load offset=8 i32.const 10492 i32.load i32.const 2 i32.add - local.get $0 - i32.load offset=8 - i32.const 2 - i32.shr_u - i32.gt_s + i32.lt_s br_if $folding-inner0 local.get $0 i32.load offset=4 - i32.const 8 + i32.const 2 i32.add - local.set $7 + local.set $3 i32.const 10484 i32.load local.set $5 i32.const 10492 i32.load local.set $6 - loop $for-loop|00 - local.get $1 + loop $for-loop|01 + local.get $4 local.get $6 i32.lt_s if - local.get $7 - local.get $1 - i32.const 2 - i32.shl + local.get $3 + local.get $4 i32.add local.get $5 - local.get $1 + local.get $4 i32.const 3 i32.shl i32.add f64.load - local.tee $9 - local.get $9 + local.tee $10 + local.get $10 f64.sub f64.const 0 f64.eq if (result i32) - local.get $9 + f64.const 0 + f64.const 255 + local.get $10 + f64.min + f64.max i32.trunc_f64_u else i32.const 0 end - i32.store - local.get $1 + i32.store8 + local.get $4 i32.const 1 i32.add - local.set $1 - br $for-loop|00 + local.set $4 + br $for-loop|01 end end i32.const 10 - i32.const 2 - i32.const 66 - i32.const 12432 + i32.const 0 + i32.const 63 + i32.const 11184 call $~lib/rt/__newArray local.set $1 global.get $~lib/memory/__stack_pointer @@ -41466,49 +41001,111 @@ i32.store offset=16 local.get $0 local.get $1 - call $std/typedarray/valuesEqual<~lib/typedarray/Uint32Array> + call $std/typedarray/valuesEqual<~lib/typedarray/Uint8ClampedArray> + local.get $2 + i32.load offset=8 local.get $0 - local.get $3 - call $~lib/typedarray/Int32Array#set<~lib/typedarray/Uint8Array> + i32.load offset=8 + i32.gt_s + br_if $folding-inner0 local.get $0 - local.get $4 - call $~lib/typedarray/Int32Array#set<~lib/typedarray/Int16Array> + i32.load offset=4 + local.get $2 + i32.load offset=4 + local.get $2 + i32.load offset=8 + call $~lib/memory/memory.copy + local.get $0 + local.get $8 + i32.const 4 + call $~lib/typedarray/Uint8ClampedArray#set<~lib/typedarray/Int16Array> global.get $~lib/memory/__stack_pointer i32.const 10560 i32.store offset=16 - local.get $0 - call $~lib/typedarray/Int32Array#set<~lib/array/Array> - i32.const 10 - i32.const 2 - i32.const 66 - i32.const 12496 - call $~lib/rt/__newArray + i32.const 0 local.set $3 - global.get $~lib/memory/__stack_pointer - local.get $3 - i32.store offset=16 local.get $0 - local.get $3 - call $std/typedarray/valuesEqual<~lib/typedarray/Uint32Array> - global.get $~lib/memory/__stack_pointer - i32.const 20 + i32.load offset=8 + i32.const 10572 + i32.load + i32.const 7 i32.add - global.set $~lib/memory/__stack_pointer - return - end - i32.const 1360 - i32.const 1632 - i32.const 1865 - i32.const 47 - call $~lib/builtins/abort - unreachable - ) - (func $std/typedarray/valuesEqual<~lib/typedarray/Int64Array> (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) + i32.lt_s + br_if $folding-inner0 + local.get $0 + i32.load offset=4 + i32.const 7 + i32.add + local.set $6 + i32.const 10564 + i32.load + local.set $1 + i32.const 10572 + i32.load + local.set $2 + loop $for-loop|02 + local.get $2 + local.get $3 + i32.gt_s + if + local.get $3 + local.get $6 + i32.add + local.get $1 + local.get $3 + i32.add + i32.load8_s + local.tee $5 + i32.const 31 + i32.shr_s + i32.const -1 + i32.xor + local.get $5 + i32.const 255 + local.get $5 + i32.sub + i32.const 31 + i32.shr_s + i32.or + i32.and + i32.store8 + local.get $3 + i32.const 1 + i32.add + local.set $3 + br $for-loop|02 + end + end + i32.const 10 + i32.const 0 + i32.const 63 + i32.const 11216 + call $~lib/rt/__newArray + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=16 + local.get $0 + local.get $2 + call $std/typedarray/valuesEqual<~lib/typedarray/Uint8ClampedArray> + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + i32.const 1360 + i32.const 1632 + i32.const 1865 + i32.const 47 + call $~lib/builtins/abort + unreachable + ) + (func $std/typedarray/valuesEqual<~lib/typedarray/Int16Array> (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) (local $4 i32) - (local $5 i64) - (local $6 i64) + (local $5 i32) global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub @@ -41529,9 +41126,9 @@ i32.store local.get $0 i32.load offset=8 - i32.const 3 + i32.const 1 i32.shr_u - local.tee $3 + local.tee $4 local.get $1 i32.load offset=12 i32.ne @@ -41545,37 +41142,37 @@ end loop $for-loop|0 local.get $2 - local.get $3 + local.get $4 i32.lt_s if local.get $2 - i32.const 3 + i32.const 1 i32.shl - local.tee $4 + local.tee $3 local.get $0 i32.load offset=4 i32.add - i64.load + i32.load16_s local.tee $5 - local.get $4 + local.get $3 local.get $1 i32.load offset=4 i32.add - i64.load - local.tee $6 - i64.ne + i32.load16_s + local.tee $3 + i32.ne if global.get $~lib/memory/__stack_pointer - i32.const 12672 + i32.const 11296 i32.store - i32.const 12672 + i32.const 11296 i32.const 3 local.get $2 f64.convert_i32_s local.get $5 - f64.convert_i64_s - local.get $6 - f64.convert_i64_s + f64.convert_i32_s + local.get $3 + f64.convert_i32_s f64.const 0 f64.const 0 call $~lib/builtins/trace @@ -41598,7 +41195,7 @@ i32.add global.set $~lib/memory/__stack_pointer ) - (func $std/typedarray/testTypedArraySet<~lib/typedarray/Int64Array> + (func $std/typedarray/testTypedArraySet<~lib/typedarray/Int16Array> (local $0 i32) (local $1 i32) (local $2 i32) @@ -41606,9 +41203,9 @@ (local $4 i32) (local $5 i32) (local $6 i32) - (local $7 i32) - (local $8 f32) - (local $9 f64) + (local $7 f32) + (local $8 f64) + (local $9 i32) global.get $~lib/memory/__stack_pointer i32.const 20 i32.sub @@ -41691,18 +41288,18 @@ call $~lib/typedarray/Int16Array#__set global.get $~lib/memory/__stack_pointer i32.const 10 - call $~lib/typedarray/Int64Array#constructor + call $~lib/typedarray/Int16Array#constructor local.tee $1 i32.store offset=12 global.get $~lib/memory/__stack_pointer i32.const 10304 i32.store offset=16 local.get $1 - call $~lib/typedarray/Int64Array#set<~lib/array/Array> + call $~lib/typedarray/Int16Array#set<~lib/array/Array> i32.const 10 - i32.const 3 - i32.const 67 - i32.const 12560 + i32.const 1 + i32.const 64 + i32.const 11248 call $~lib/rt/__newArray local.set $0 global.get $~lib/memory/__stack_pointer @@ -41710,7 +41307,7 @@ i32.store offset=16 local.get $1 local.get $0 - call $std/typedarray/valuesEqual<~lib/typedarray/Int64Array> + call $std/typedarray/valuesEqual<~lib/typedarray/Int16Array> global.get $~lib/memory/__stack_pointer i32.const 10384 i32.store offset=16 @@ -41723,13 +41320,13 @@ i32.add local.get $1 i32.load offset=8 - i32.const 3 + i32.const 1 i32.shr_u i32.gt_s br_if $folding-inner0 local.get $1 i32.load offset=4 - i32.const 24 + i32.const 6 i32.add local.set $5 i32.const 10388 @@ -41737,15 +41334,15 @@ local.set $6 i32.const 10396 i32.load - local.set $7 + local.set $9 loop $for-loop|0 local.get $0 - local.get $7 + local.get $9 i32.lt_s if local.get $5 local.get $0 - i32.const 3 + i32.const 1 i32.shl i32.add local.get $6 @@ -41754,18 +41351,18 @@ i32.shl i32.add f32.load - local.tee $8 - local.get $8 + local.tee $7 + local.get $7 f32.sub f32.const 0 f32.eq - if (result i64) - local.get $8 - i64.trunc_f32_s + if (result i32) + local.get $7 + i32.trunc_f32_s else - i64.const 0 + i32.const 0 end - i64.store + i32.store16 local.get $0 i32.const 1 i32.add @@ -41774,9 +41371,9 @@ end end i32.const 10 - i32.const 3 - i32.const 67 - i32.const 12720 + i32.const 1 + i32.const 64 + i32.const 11344 call $~lib/rt/__newArray local.set $0 global.get $~lib/memory/__stack_pointer @@ -41784,14 +41381,14 @@ i32.store offset=16 local.get $1 local.get $0 - call $std/typedarray/valuesEqual<~lib/typedarray/Int64Array> + call $std/typedarray/valuesEqual<~lib/typedarray/Int16Array> local.get $1 local.get $3 - call $~lib/typedarray/Int64Array#set<~lib/typedarray/Int64Array> + call $~lib/typedarray/Int16Array#set<~lib/typedarray/Int64Array> i32.const 10 - i32.const 3 - i32.const 67 - i32.const 12832 + i32.const 1 + i32.const 64 + i32.const 11392 call $~lib/rt/__newArray local.set $0 global.get $~lib/memory/__stack_pointer @@ -41799,7 +41396,7 @@ i32.store offset=16 local.get $1 local.get $0 - call $std/typedarray/valuesEqual<~lib/typedarray/Int64Array> + call $std/typedarray/valuesEqual<~lib/typedarray/Int16Array> global.get $~lib/memory/__stack_pointer i32.const 10480 i32.store offset=16 @@ -41811,13 +41408,13 @@ i32.add local.get $1 i32.load offset=8 - i32.const 3 + i32.const 1 i32.shr_u i32.gt_s br_if $folding-inner0 local.get $1 i32.load offset=4 - i32.const 16 + i32.const 4 i32.add local.set $3 i32.const 10484 @@ -41833,26 +41430,27 @@ if local.get $3 local.get $0 - i32.const 3 + i32.const 1 i32.shl - local.tee $7 i32.add local.get $5 - local.get $7 + local.get $0 + i32.const 3 + i32.shl i32.add f64.load - local.tee $9 - local.get $9 + local.tee $8 + local.get $8 f64.sub f64.const 0 f64.eq - if (result i64) - local.get $9 - i64.trunc_f64_s + if (result i32) + local.get $8 + i32.trunc_f64_s else - i64.const 0 + i32.const 0 end - i64.store + i32.store16 local.get $0 i32.const 1 i32.add @@ -41861,9 +41459,9 @@ end end i32.const 10 - i32.const 3 - i32.const 67 - i32.const 12944 + i32.const 1 + i32.const 64 + i32.const 11440 call $~lib/rt/__newArray local.set $0 global.get $~lib/memory/__stack_pointer @@ -41871,22 +41469,22 @@ i32.store offset=16 local.get $1 local.get $0 - call $std/typedarray/valuesEqual<~lib/typedarray/Int64Array> + call $std/typedarray/valuesEqual<~lib/typedarray/Int16Array> local.get $1 local.get $2 - call $~lib/typedarray/Int64Array#set<~lib/typedarray/Uint8Array> + call $~lib/typedarray/Int16Array#set<~lib/typedarray/Uint8Array> local.get $1 local.get $4 - call $~lib/typedarray/Int64Array#set<~lib/typedarray/Int16Array> + call $~lib/typedarray/Int16Array#set<~lib/typedarray/Int16Array> global.get $~lib/memory/__stack_pointer i32.const 10560 i32.store offset=16 local.get $1 - call $~lib/typedarray/Int64Array#set<~lib/array/Array> + call $~lib/typedarray/Int16Array#set<~lib/array/Array> i32.const 10 - i32.const 3 - i32.const 67 - i32.const 13056 + i32.const 1 + i32.const 64 + i32.const 11488 call $~lib/rt/__newArray local.set $2 global.get $~lib/memory/__stack_pointer @@ -41894,7 +41492,7 @@ i32.store offset=16 local.get $1 local.get $2 - call $std/typedarray/valuesEqual<~lib/typedarray/Int64Array> + call $std/typedarray/valuesEqual<~lib/typedarray/Int16Array> global.get $~lib/memory/__stack_pointer i32.const 20 i32.add @@ -41908,12 +41506,11 @@ call $~lib/builtins/abort unreachable ) - (func $std/typedarray/valuesEqual<~lib/typedarray/Uint64Array> (param $0 i32) (param $1 i32) + (func $std/typedarray/valuesEqual<~lib/typedarray/Uint16Array> (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) - (local $5 i64) - (local $6 i64) + (local $5 i32) global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub @@ -41934,9 +41531,9 @@ i32.store local.get $0 i32.load offset=8 - i32.const 3 + i32.const 1 i32.shr_u - local.tee $3 + local.tee $4 local.get $1 i32.load offset=12 i32.ne @@ -41950,37 +41547,37 @@ end loop $for-loop|0 local.get $2 - local.get $3 + local.get $4 i32.lt_s if local.get $2 - i32.const 3 + i32.const 1 i32.shl - local.tee $4 + local.tee $3 local.get $0 i32.load offset=4 i32.add - i64.load + i32.load16_u local.tee $5 - local.get $4 + local.get $3 local.get $1 i32.load offset=4 i32.add - i64.load - local.tee $6 - i64.ne + i32.load16_u + local.tee $3 + i32.ne if global.get $~lib/memory/__stack_pointer - i32.const 13280 + i32.const 11584 i32.store - i32.const 13280 + i32.const 11584 i32.const 3 local.get $2 f64.convert_i32_s local.get $5 - f64.convert_i64_u - local.get $6 - f64.convert_i64_u + f64.convert_i32_u + local.get $3 + f64.convert_i32_u f64.const 0 f64.const 0 call $~lib/builtins/trace @@ -42003,7 +41600,7 @@ i32.add global.set $~lib/memory/__stack_pointer ) - (func $std/typedarray/testTypedArraySet<~lib/typedarray/Uint64Array> + (func $std/typedarray/testTypedArraySet<~lib/typedarray/Uint16Array> (local $0 i32) (local $1 i32) (local $2 i32) @@ -42011,9 +41608,9 @@ (local $4 i32) (local $5 i32) (local $6 i32) - (local $7 i32) - (local $8 f32) - (local $9 f64) + (local $7 f32) + (local $8 f64) + (local $9 i32) global.get $~lib/memory/__stack_pointer i32.const 20 i32.sub @@ -42096,18 +41693,18 @@ call $~lib/typedarray/Int16Array#__set global.get $~lib/memory/__stack_pointer i32.const 10 - call $~lib/typedarray/Uint64Array#constructor + call $~lib/typedarray/Uint16Array#constructor local.tee $1 i32.store offset=12 global.get $~lib/memory/__stack_pointer i32.const 10304 i32.store offset=16 local.get $1 - call $~lib/typedarray/Int64Array#set<~lib/array/Array> + call $~lib/typedarray/Int16Array#set<~lib/array/Array> i32.const 10 - i32.const 3 - i32.const 68 - i32.const 13168 + i32.const 1 + i32.const 65 + i32.const 11536 call $~lib/rt/__newArray local.set $0 global.get $~lib/memory/__stack_pointer @@ -42115,7 +41712,7 @@ i32.store offset=16 local.get $1 local.get $0 - call $std/typedarray/valuesEqual<~lib/typedarray/Uint64Array> + call $std/typedarray/valuesEqual<~lib/typedarray/Uint16Array> global.get $~lib/memory/__stack_pointer i32.const 10384 i32.store offset=16 @@ -42128,13 +41725,13 @@ i32.add local.get $1 i32.load offset=8 - i32.const 3 + i32.const 1 i32.shr_u i32.gt_s br_if $folding-inner0 local.get $1 i32.load offset=4 - i32.const 24 + i32.const 6 i32.add local.set $5 i32.const 10388 @@ -42142,15 +41739,15 @@ local.set $6 i32.const 10396 i32.load - local.set $7 + local.set $9 loop $for-loop|0 local.get $0 - local.get $7 + local.get $9 i32.lt_s if local.get $5 local.get $0 - i32.const 3 + i32.const 1 i32.shl i32.add local.get $6 @@ -42159,18 +41756,18 @@ i32.shl i32.add f32.load - local.tee $8 - local.get $8 + local.tee $7 + local.get $7 f32.sub f32.const 0 f32.eq - if (result i64) - local.get $8 - i64.trunc_f32_u + if (result i32) + local.get $7 + i32.trunc_f32_u else - i64.const 0 + i32.const 0 end - i64.store + i32.store16 local.get $0 i32.const 1 i32.add @@ -42179,9 +41776,9 @@ end end i32.const 10 - i32.const 3 - i32.const 68 - i32.const 13328 + i32.const 1 + i32.const 65 + i32.const 11632 call $~lib/rt/__newArray local.set $0 global.get $~lib/memory/__stack_pointer @@ -42189,14 +41786,14 @@ i32.store offset=16 local.get $1 local.get $0 - call $std/typedarray/valuesEqual<~lib/typedarray/Uint64Array> + call $std/typedarray/valuesEqual<~lib/typedarray/Uint16Array> local.get $1 local.get $3 - call $~lib/typedarray/Int64Array#set<~lib/typedarray/Int64Array> + call $~lib/typedarray/Int16Array#set<~lib/typedarray/Int64Array> i32.const 10 - i32.const 3 - i32.const 68 - i32.const 13440 + i32.const 1 + i32.const 65 + i32.const 11680 call $~lib/rt/__newArray local.set $0 global.get $~lib/memory/__stack_pointer @@ -42204,7 +41801,7 @@ i32.store offset=16 local.get $1 local.get $0 - call $std/typedarray/valuesEqual<~lib/typedarray/Uint64Array> + call $std/typedarray/valuesEqual<~lib/typedarray/Uint16Array> global.get $~lib/memory/__stack_pointer i32.const 10480 i32.store offset=16 @@ -42216,13 +41813,13 @@ i32.add local.get $1 i32.load offset=8 - i32.const 3 + i32.const 1 i32.shr_u i32.gt_s br_if $folding-inner0 local.get $1 i32.load offset=4 - i32.const 16 + i32.const 4 i32.add local.set $3 i32.const 10484 @@ -42238,26 +41835,27 @@ if local.get $3 local.get $0 - i32.const 3 + i32.const 1 i32.shl - local.tee $7 i32.add local.get $5 - local.get $7 + local.get $0 + i32.const 3 + i32.shl i32.add f64.load - local.tee $9 - local.get $9 + local.tee $8 + local.get $8 f64.sub f64.const 0 f64.eq - if (result i64) - local.get $9 - i64.trunc_f64_u + if (result i32) + local.get $8 + i32.trunc_f64_u else - i64.const 0 + i32.const 0 end - i64.store + i32.store16 local.get $0 i32.const 1 i32.add @@ -42266,9 +41864,9 @@ end end i32.const 10 - i32.const 3 - i32.const 68 - i32.const 13552 + i32.const 1 + i32.const 65 + i32.const 11728 call $~lib/rt/__newArray local.set $0 global.get $~lib/memory/__stack_pointer @@ -42276,22 +41874,22 @@ i32.store offset=16 local.get $1 local.get $0 - call $std/typedarray/valuesEqual<~lib/typedarray/Uint64Array> + call $std/typedarray/valuesEqual<~lib/typedarray/Uint16Array> local.get $1 local.get $2 - call $~lib/typedarray/Int64Array#set<~lib/typedarray/Uint8Array> + call $~lib/typedarray/Int16Array#set<~lib/typedarray/Uint8Array> local.get $1 local.get $4 - call $~lib/typedarray/Int64Array#set<~lib/typedarray/Int16Array> + call $~lib/typedarray/Int16Array#set<~lib/typedarray/Int16Array> global.get $~lib/memory/__stack_pointer i32.const 10560 i32.store offset=16 local.get $1 - call $~lib/typedarray/Int64Array#set<~lib/array/Array> + call $~lib/typedarray/Int16Array#set<~lib/array/Array> i32.const 10 - i32.const 3 - i32.const 68 - i32.const 13664 + i32.const 1 + i32.const 65 + i32.const 11776 call $~lib/rt/__newArray local.set $2 global.get $~lib/memory/__stack_pointer @@ -42299,7 +41897,7 @@ i32.store offset=16 local.get $1 local.get $2 - call $std/typedarray/valuesEqual<~lib/typedarray/Uint64Array> + call $std/typedarray/valuesEqual<~lib/typedarray/Uint16Array> global.get $~lib/memory/__stack_pointer i32.const 20 i32.add @@ -42313,12 +41911,11 @@ call $~lib/builtins/abort unreachable ) - (func $std/typedarray/valuesEqual<~lib/typedarray/Float32Array> (param $0 i32) (param $1 i32) + (func $std/typedarray/valuesEqual<~lib/typedarray/Int32Array> (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) - (local $5 f32) - (local $6 f32) + (local $5 i32) global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub @@ -42341,7 +41938,7 @@ i32.load offset=8 i32.const 2 i32.shr_u - local.tee $3 + local.tee $4 local.get $1 i32.load offset=12 i32.ne @@ -42355,37 +41952,37 @@ end loop $for-loop|0 local.get $2 - local.get $3 + local.get $4 i32.lt_s if local.get $2 i32.const 2 i32.shl - local.tee $4 + local.tee $3 local.get $0 i32.load offset=4 i32.add - f32.load + i32.load local.tee $5 - local.get $4 + local.get $3 local.get $1 i32.load offset=4 i32.add - f32.load - local.tee $6 - f32.ne + i32.load + local.tee $3 + i32.ne if global.get $~lib/memory/__stack_pointer - i32.const 13840 + i32.const 11888 i32.store - i32.const 13840 + i32.const 11888 i32.const 3 local.get $2 f64.convert_i32_s local.get $5 - f64.promote_f32 - local.get $6 - f64.promote_f32 + f64.convert_i32_s + local.get $3 + f64.convert_i32_s f64.const 0 f64.const 0 call $~lib/builtins/trace @@ -42408,7 +42005,7 @@ i32.add global.set $~lib/memory/__stack_pointer ) - (func $std/typedarray/testTypedArraySet<~lib/typedarray/Float32Array> + (func $std/typedarray/testTypedArraySet<~lib/typedarray/Int32Array> (local $0 i32) (local $1 i32) (local $2 i32) @@ -42417,7 +42014,9 @@ (local $5 i32) (local $6 i32) (local $7 i32) - (local $8 i32) + (local $8 f32) + (local $9 f64) + (local $10 i32) global.get $~lib/memory/__stack_pointer i32.const 20 i32.sub @@ -42434,16 +42033,16 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.tee $3 + local.tee $0 i64.const 0 i64.store - local.get $3 + local.get $0 i64.const 0 i64.store offset=8 - local.get $3 + local.get $0 i32.const 0 i32.store offset=16 - local.get $3 + local.get $0 i32.const 3 call $~lib/typedarray/Int64Array#constructor local.tee $1 @@ -42463,21 +42062,21 @@ global.get $~lib/memory/__stack_pointer i32.const 4 call $~lib/typedarray/Uint8Array#constructor - local.tee $0 + local.tee $3 i32.store offset=4 - local.get $0 + local.get $3 i32.const 0 i32.const 100 call $~lib/typedarray/Uint8Array#__set - local.get $0 + local.get $3 i32.const 1 i32.const 101 call $~lib/typedarray/Uint8Array#__set - local.get $0 + local.get $3 i32.const 2 i32.const 102 call $~lib/typedarray/Uint8Array#__set - local.get $0 + local.get $3 i32.const 3 i32.const 103 call $~lib/typedarray/Uint8Array#__set @@ -42500,47 +42099,80 @@ call $~lib/typedarray/Int16Array#__set global.get $~lib/memory/__stack_pointer i32.const 10 - call $~lib/typedarray/Float32Array#constructor - local.tee $3 + call $~lib/typedarray/Int32Array#constructor + local.tee $0 i32.store offset=12 global.get $~lib/memory/__stack_pointer i32.const 10304 i32.store offset=16 + local.get $0 + call $~lib/typedarray/Int32Array#set<~lib/array/Array> + i32.const 10 + i32.const 2 + i32.const 16 + i32.const 11824 + call $~lib/rt/__newArray + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=16 + local.get $0 + local.get $2 + call $std/typedarray/valuesEqual<~lib/typedarray/Int32Array> + global.get $~lib/memory/__stack_pointer + i32.const 10384 + i32.store offset=16 + i32.const 0 + local.set $2 block $folding-inner0 - i32.const 10316 + i32.const 10396 i32.load - local.get $3 + i32.const 3 + i32.add + local.get $0 i32.load offset=8 i32.const 2 i32.shr_u i32.gt_s br_if $folding-inner0 - local.get $3 + local.get $0 i32.load offset=4 + i32.const 12 + i32.add local.set $5 - i32.const 10308 + i32.const 10388 i32.load local.set $6 - i32.const 10316 + i32.const 10396 i32.load - local.set $7 + local.set $10 loop $for-loop|0 local.get $2 - local.get $7 + local.get $10 i32.lt_s if local.get $5 local.get $2 i32.const 2 i32.shl - local.tee $8 + local.tee $7 i32.add local.get $6 - local.get $8 + local.get $7 i32.add - i32.load - f32.convert_i32_s - f32.store + f32.load + local.tee $8 + local.get $8 + f32.sub + f32.const 0 + f32.eq + if (result i32) + local.get $8 + i32.trunc_f32_s + else + i32.const 0 + end + i32.store local.get $2 i32.const 1 i32.add @@ -42550,269 +42182,127 @@ end i32.const 10 i32.const 2 - i32.const 61 - i32.const 13776 + i32.const 16 + i32.const 11936 call $~lib/rt/__newArray local.set $2 global.get $~lib/memory/__stack_pointer local.get $2 i32.store offset=16 - local.get $3 + local.get $0 local.get $2 - call $std/typedarray/valuesEqual<~lib/typedarray/Float32Array> - global.get $~lib/memory/__stack_pointer - i32.const 10384 - i32.store offset=16 - i32.const 10396 - i32.load - i32.const 3 - i32.add - local.get $3 - i32.load offset=8 - i32.const 2 - i32.shr_u - i32.gt_s - br_if $folding-inner0 - local.get $3 - i32.load offset=4 - i32.const 12 - i32.add - i32.const 10388 - i32.load - i32.const 10392 - i32.load - call $~lib/memory/memory.copy + call $std/typedarray/valuesEqual<~lib/typedarray/Int32Array> + local.get $0 + local.get $1 + call $~lib/typedarray/Int32Array#set<~lib/typedarray/Int64Array> i32.const 10 i32.const 2 - i32.const 61 - i32.const 13888 + i32.const 16 + i32.const 12000 call $~lib/rt/__newArray - local.set $2 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store offset=16 - local.get $3 - local.get $2 - call $std/typedarray/valuesEqual<~lib/typedarray/Float32Array> - i32.const 0 - local.set $2 + local.get $0 local.get $1 - i32.load offset=8 - i32.const 3 - i32.shr_u - i32.const 6 + call $std/typedarray/valuesEqual<~lib/typedarray/Int32Array> + global.get $~lib/memory/__stack_pointer + i32.const 10480 + i32.store offset=16 + i32.const 0 + local.set $1 + i32.const 10492 + i32.load + i32.const 2 i32.add - local.get $3 + local.get $0 i32.load offset=8 i32.const 2 i32.shr_u i32.gt_s br_if $folding-inner0 - local.get $3 + local.get $0 i32.load offset=4 - i32.const 24 + i32.const 8 i32.add + local.set $7 + i32.const 10484 + i32.load local.set $5 - local.get $1 - i32.load offset=4 + i32.const 10492 + i32.load local.set $6 - local.get $1 - i32.load offset=8 - i32.const 3 - i32.shr_u - local.set $1 loop $for-loop|00 local.get $1 - local.get $2 - i32.gt_s + local.get $6 + i32.lt_s if - local.get $5 - local.get $2 + local.get $7 + local.get $1 i32.const 2 i32.shl i32.add - local.get $6 - local.get $2 + local.get $5 + local.get $1 i32.const 3 i32.shl i32.add - i64.load - f32.convert_i64_s - f32.store - local.get $2 + f64.load + local.tee $9 + local.get $9 + f64.sub + f64.const 0 + f64.eq + if (result i32) + local.get $9 + i32.trunc_f64_s + else + i32.const 0 + end + i32.store + local.get $1 i32.const 1 i32.add - local.set $2 + local.set $1 br $for-loop|00 end end i32.const 10 i32.const 2 - i32.const 61 - i32.const 13952 + i32.const 16 + i32.const 12064 call $~lib/rt/__newArray local.set $1 global.get $~lib/memory/__stack_pointer local.get $1 i32.store offset=16 - local.get $3 + local.get $0 local.get $1 - call $std/typedarray/valuesEqual<~lib/typedarray/Float32Array> - i32.const 0 - local.set $1 + call $std/typedarray/valuesEqual<~lib/typedarray/Int32Array> local.get $0 - i32.load offset=8 - local.get $3 - i32.load offset=8 - i32.const 2 - i32.shr_u - i32.gt_s - br_if $folding-inner0 local.get $3 - i32.load offset=4 - local.set $2 - local.get $0 - i32.load offset=4 - local.set $5 + call $~lib/typedarray/Int32Array#set<~lib/typedarray/Uint8Array> local.get $0 - i32.load offset=8 - local.set $0 - loop $for-loop|04 - local.get $0 - local.get $1 - i32.gt_s - if - local.get $2 - local.get $1 - i32.const 2 - i32.shl - i32.add - local.get $1 - local.get $5 - i32.add - i32.load8_u - f32.convert_i32_u - f32.store - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $for-loop|04 - end - end - i32.const 0 - local.set $0 - local.get $4 - i32.load offset=8 - i32.const 1 - i32.shr_u - i32.const 4 - i32.add - local.get $3 - i32.load offset=8 - i32.const 2 - i32.shr_u - i32.gt_s - br_if $folding-inner0 - local.get $3 - i32.load offset=4 - i32.const 16 - i32.add - local.set $1 - local.get $4 - i32.load offset=4 - local.set $2 local.get $4 - i32.load offset=8 - i32.const 1 - i32.shr_u - local.set $4 - loop $for-loop|01 - local.get $0 - local.get $4 - i32.lt_s - if - local.get $1 - local.get $0 - i32.const 2 - i32.shl - i32.add - local.get $2 - local.get $0 - i32.const 1 - i32.shl - i32.add - i32.load16_s - f32.convert_i32_s - f32.store - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|01 - end - end + call $~lib/typedarray/Int32Array#set<~lib/typedarray/Int16Array> global.get $~lib/memory/__stack_pointer i32.const 10560 i32.store offset=16 - i32.const 0 - local.set $0 - i32.const 10572 - i32.load - i32.const 7 - i32.add - local.get $3 - i32.load offset=8 - i32.const 2 - i32.shr_u - i32.gt_s - br_if $folding-inner0 - local.get $3 - i32.load offset=4 - i32.const 28 - i32.add - local.set $1 - i32.const 10564 - i32.load - local.set $4 - i32.const 10572 - i32.load - local.set $2 - loop $for-loop|08 - local.get $0 - local.get $2 - i32.lt_s - if - local.get $1 - local.get $0 - i32.const 2 - i32.shl - i32.add - local.get $0 - local.get $4 - i32.add - i32.load8_s - f32.convert_i32_s - f32.store - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|08 - end - end + local.get $0 + call $~lib/typedarray/Int32Array#set<~lib/array/Array> i32.const 10 i32.const 2 - i32.const 61 - i32.const 14016 + i32.const 16 + i32.const 12128 call $~lib/rt/__newArray - local.set $0 + local.set $3 global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=16 local.get $3 + i32.store offset=16 local.get $0 - call $std/typedarray/valuesEqual<~lib/typedarray/Float32Array> + local.get $3 + call $std/typedarray/valuesEqual<~lib/typedarray/Int32Array> global.get $~lib/memory/__stack_pointer i32.const 20 i32.add @@ -42826,12 +42316,11 @@ call $~lib/builtins/abort unreachable ) - (func $std/typedarray/valuesEqual<~lib/typedarray/Float64Array> (param $0 i32) (param $1 i32) + (func $std/typedarray/valuesEqual<~lib/typedarray/Uint32Array> (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) - (local $5 f64) - (local $6 f64) + (local $5 i32) global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub @@ -42852,9 +42341,9 @@ i32.store local.get $0 i32.load offset=8 - i32.const 3 + i32.const 2 i32.shr_u - local.tee $3 + local.tee $4 local.get $1 i32.load offset=12 i32.ne @@ -42868,35 +42357,37 @@ end loop $for-loop|0 local.get $2 - local.get $3 + local.get $4 i32.lt_s if local.get $2 - i32.const 3 + i32.const 2 i32.shl - local.tee $4 + local.tee $3 local.get $0 i32.load offset=4 i32.add - f64.load + i32.load local.tee $5 - local.get $4 + local.get $3 local.get $1 i32.load offset=4 i32.add - f64.load - local.tee $6 - f64.ne + i32.load + local.tee $3 + i32.ne if global.get $~lib/memory/__stack_pointer - i32.const 14192 + i32.const 12256 i32.store - i32.const 14192 + i32.const 12256 i32.const 3 local.get $2 f64.convert_i32_s local.get $5 - local.get $6 + f64.convert_i32_u + local.get $3 + f64.convert_i32_u f64.const 0 f64.const 0 call $~lib/builtins/trace @@ -42919,7 +42410,7 @@ i32.add global.set $~lib/memory/__stack_pointer ) - (func $std/typedarray/testTypedArraySet<~lib/typedarray/Float64Array> + (func $std/typedarray/testTypedArraySet<~lib/typedarray/Uint32Array> (local $0 i32) (local $1 i32) (local $2 i32) @@ -42928,6 +42419,9 @@ (local $5 i32) (local $6 i32) (local $7 i32) + (local $8 f32) + (local $9 f64) + (local $10 i32) global.get $~lib/memory/__stack_pointer i32.const 20 i32.sub @@ -42944,50 +42438,50 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.tee $3 + local.tee $0 i64.const 0 i64.store - local.get $3 + local.get $0 i64.const 0 i64.store offset=8 - local.get $3 + local.get $0 i32.const 0 i32.store offset=16 - local.get $3 + local.get $0 i32.const 3 call $~lib/typedarray/Int64Array#constructor - local.tee $2 + local.tee $1 i32.store - local.get $2 + local.get $1 i32.const 0 i64.const 7 call $~lib/typedarray/Int64Array#__set - local.get $2 + local.get $1 i32.const 1 i64.const 8 call $~lib/typedarray/Int64Array#__set - local.get $2 + local.get $1 i32.const 2 i64.const 9 call $~lib/typedarray/Int64Array#__set global.get $~lib/memory/__stack_pointer i32.const 4 call $~lib/typedarray/Uint8Array#constructor - local.tee $1 + local.tee $3 i32.store offset=4 - local.get $1 + local.get $3 i32.const 0 i32.const 100 call $~lib/typedarray/Uint8Array#__set - local.get $1 + local.get $3 i32.const 1 i32.const 101 call $~lib/typedarray/Uint8Array#__set - local.get $1 + local.get $3 i32.const 2 i32.const 102 call $~lib/typedarray/Uint8Array#__set - local.get $1 + local.get $3 i32.const 3 i32.const 103 call $~lib/typedarray/Uint8Array#__set @@ -43010,85 +42504,45 @@ call $~lib/typedarray/Int16Array#__set global.get $~lib/memory/__stack_pointer i32.const 10 - call $~lib/typedarray/Float64Array#constructor - local.tee $3 + call $~lib/typedarray/Uint32Array#constructor + local.tee $0 i32.store offset=12 global.get $~lib/memory/__stack_pointer i32.const 10304 i32.store offset=16 + local.get $0 + call $~lib/typedarray/Int32Array#set<~lib/array/Array> + i32.const 10 + i32.const 2 + i32.const 66 + i32.const 12192 + call $~lib/rt/__newArray + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=16 + local.get $0 + local.get $2 + call $std/typedarray/valuesEqual<~lib/typedarray/Uint32Array> + global.get $~lib/memory/__stack_pointer + i32.const 10384 + i32.store offset=16 + i32.const 0 + local.set $2 block $folding-inner0 - i32.const 10316 - i32.load - local.get $3 - i32.load offset=8 - i32.const 3 - i32.shr_u - i32.gt_s - br_if $folding-inner0 - local.get $3 - i32.load offset=4 - local.set $5 - i32.const 10308 - i32.load - local.set $6 - i32.const 10316 - i32.load - local.set $7 - loop $for-loop|0 - local.get $0 - local.get $7 - i32.lt_s - if - local.get $5 - local.get $0 - i32.const 3 - i32.shl - i32.add - local.get $6 - local.get $0 - i32.const 2 - i32.shl - i32.add - i32.load - f64.convert_i32_s - f64.store - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|0 - end - end - i32.const 10 - i32.const 3 - i32.const 62 - i32.const 14080 - call $~lib/rt/__newArray - local.set $0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=16 - local.get $3 - local.get $0 - call $std/typedarray/valuesEqual<~lib/typedarray/Float64Array> - global.get $~lib/memory/__stack_pointer - i32.const 10384 - i32.store offset=16 - i32.const 0 - local.set $0 i32.const 10396 i32.load i32.const 3 i32.add - local.get $3 + local.get $0 i32.load offset=8 - i32.const 3 + i32.const 2 i32.shr_u i32.gt_s br_if $folding-inner0 - local.get $3 + local.get $0 i32.load offset=4 - i32.const 24 + i32.const 12 i32.add local.set $5 i32.const 10388 @@ -43096,262 +42550,164 @@ local.set $6 i32.const 10396 i32.load - local.set $7 - loop $for-loop|04 - local.get $0 - local.get $7 - i32.lt_s - if - local.get $5 - local.get $0 - i32.const 3 - i32.shl - i32.add - local.get $6 - local.get $0 - i32.const 2 - i32.shl - i32.add - f32.load - f64.promote_f32 - f64.store - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|04 - end - end - i32.const 10 - i32.const 3 - i32.const 62 - i32.const 14240 - call $~lib/rt/__newArray - local.set $0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=16 - local.get $3 - local.get $0 - call $std/typedarray/valuesEqual<~lib/typedarray/Float64Array> - i32.const 0 - local.set $0 - local.get $2 - i32.load offset=8 - i32.const 3 - i32.shr_u - i32.const 6 - i32.add - local.get $3 - i32.load offset=8 - i32.const 3 - i32.shr_u - i32.gt_s - br_if $folding-inner0 - local.get $3 - i32.load offset=4 - i32.const 48 - i32.add - local.set $5 - local.get $2 - i32.load offset=4 - local.set $6 - local.get $2 - i32.load offset=8 - i32.const 3 - i32.shr_u - local.set $2 - loop $for-loop|06 - local.get $0 + local.set $10 + loop $for-loop|0 local.get $2 + local.get $10 i32.lt_s if local.get $5 - local.get $0 - i32.const 3 + local.get $2 + i32.const 2 i32.shl local.tee $7 i32.add local.get $6 local.get $7 i32.add - i64.load - f64.convert_i64_s - f64.store - local.get $0 + f32.load + local.tee $8 + local.get $8 + f32.sub + f32.const 0 + f32.eq + if (result i32) + local.get $8 + i32.trunc_f32_u + else + i32.const 0 + end + i32.store + local.get $2 i32.const 1 i32.add - local.set $0 - br $for-loop|06 + local.set $2 + br $for-loop|0 end end i32.const 10 - i32.const 3 - i32.const 62 - i32.const 14352 + i32.const 2 + i32.const 66 + i32.const 12304 call $~lib/rt/__newArray local.set $2 global.get $~lib/memory/__stack_pointer local.get $2 i32.store offset=16 - local.get $3 + local.get $0 local.get $2 - call $std/typedarray/valuesEqual<~lib/typedarray/Float64Array> - i32.const 0 - local.set $2 + call $std/typedarray/valuesEqual<~lib/typedarray/Uint32Array> + local.get $0 local.get $1 - i32.load offset=8 - local.get $3 - i32.load offset=8 - i32.const 3 - i32.shr_u - i32.gt_s - br_if $folding-inner0 - local.get $3 - i32.load offset=4 - local.set $0 + call $~lib/typedarray/Int32Array#set<~lib/typedarray/Int64Array> + i32.const 10 + i32.const 2 + i32.const 66 + i32.const 12368 + call $~lib/rt/__newArray + local.set $1 + global.get $~lib/memory/__stack_pointer local.get $1 - i32.load offset=4 - local.set $5 + i32.store offset=16 + local.get $0 local.get $1 - i32.load offset=8 - local.set $1 - loop $for-loop|08 - local.get $1 - local.get $2 - i32.gt_s - if - local.get $0 - local.get $2 - i32.const 3 - i32.shl - i32.add - local.get $2 - local.get $5 - i32.add - i32.load8_u - f64.convert_i32_u - f64.store - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|08 - end - end - i32.const 0 - local.set $1 - local.get $4 - i32.load offset=8 - i32.const 1 - i32.shr_u - i32.const 4 - i32.add - local.get $3 - i32.load offset=8 - i32.const 3 - i32.shr_u - i32.gt_s - br_if $folding-inner0 - local.get $3 - i32.load offset=4 - i32.const 32 - i32.add - local.set $2 - local.get $4 - i32.load offset=4 - local.set $0 - local.get $4 - i32.load offset=8 - i32.const 1 - i32.shr_u - local.set $4 - loop $for-loop|00 - local.get $1 - local.get $4 - i32.lt_s - if - local.get $2 - local.get $1 - i32.const 3 - i32.shl - i32.add - local.get $0 - local.get $1 - i32.const 1 - i32.shl - i32.add - i32.load16_s - f64.convert_i32_s - f64.store - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $for-loop|00 - end - end + call $std/typedarray/valuesEqual<~lib/typedarray/Uint32Array> global.get $~lib/memory/__stack_pointer - i32.const 10560 + i32.const 10480 i32.store offset=16 i32.const 0 local.set $1 - i32.const 10572 + i32.const 10492 i32.load - i32.const 7 + i32.const 2 i32.add - local.get $3 + local.get $0 i32.load offset=8 - i32.const 3 + i32.const 2 i32.shr_u i32.gt_s br_if $folding-inner0 - local.get $3 + local.get $0 i32.load offset=4 - i32.const 56 + i32.const 8 i32.add - local.set $2 - i32.const 10564 + local.set $7 + i32.const 10484 i32.load - local.set $4 - i32.const 10572 + local.set $5 + i32.const 10492 i32.load - local.set $0 - loop $for-loop|012 - local.get $0 + local.set $6 + loop $for-loop|00 local.get $1 - i32.gt_s + local.get $6 + i32.lt_s if - local.get $2 + local.get $7 local.get $1 - i32.const 3 + i32.const 2 i32.shl i32.add + local.get $5 local.get $1 - local.get $4 + i32.const 3 + i32.shl i32.add - i32.load8_s - f64.convert_i32_s - f64.store + f64.load + local.tee $9 + local.get $9 + f64.sub + f64.const 0 + f64.eq + if (result i32) + local.get $9 + i32.trunc_f64_u + else + i32.const 0 + end + i32.store local.get $1 i32.const 1 i32.add local.set $1 - br $for-loop|012 + br $for-loop|00 end end i32.const 10 - i32.const 3 - i32.const 62 - i32.const 14464 + i32.const 2 + i32.const 66 + i32.const 12432 call $~lib/rt/__newArray local.set $1 global.get $~lib/memory/__stack_pointer local.get $1 i32.store offset=16 - local.get $3 + local.get $0 local.get $1 - call $std/typedarray/valuesEqual<~lib/typedarray/Float64Array> + call $std/typedarray/valuesEqual<~lib/typedarray/Uint32Array> + local.get $0 + local.get $3 + call $~lib/typedarray/Int32Array#set<~lib/typedarray/Uint8Array> + local.get $0 + local.get $4 + call $~lib/typedarray/Int32Array#set<~lib/typedarray/Int16Array> + global.get $~lib/memory/__stack_pointer + i32.const 10560 + i32.store offset=16 + local.get $0 + call $~lib/typedarray/Int32Array#set<~lib/array/Array> + i32.const 10 + i32.const 2 + i32.const 66 + i32.const 12496 + call $~lib/rt/__newArray + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=16 + local.get $0 + local.get $3 + call $std/typedarray/valuesEqual<~lib/typedarray/Uint32Array> global.get $~lib/memory/__stack_pointer i32.const 20 i32.add @@ -43365,15994 +42721,17235 @@ call $~lib/builtins/abort unreachable ) - (func $start:std/typedarray - (local $0 i32) - (local $1 i32) + (func $std/typedarray/valuesEqual<~lib/typedarray/Int64Array> (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) - (local $10 i64) - (local $11 f32) - (local $12 f64) - (local $13 i64) - (local $14 f32) - (local $15 f64) + (local $5 i64) + (local $6 i64) global.get $~lib/memory/__stack_pointer - i32.const 32 + i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer - block $folding-inner30 - block $folding-inner14 - block $folding-inner13 - block $folding-inner29 - block $folding-inner28 - block $folding-inner27 - block $folding-inner26 - block $folding-inner25 - block $folding-inner24 - block $folding-inner23 - block $folding-inner22 - block $folding-inner21 - block $folding-inner20 - global.get $~lib/memory/__stack_pointer - i32.const 15924 - i32.lt_s - br_if $folding-inner14 - global.get $~lib/memory/__stack_pointer - local.tee $1 - i64.const 0 - i64.store - local.get $1 - i64.const 0 - i64.store offset=8 - local.get $1 - i64.const 0 - i64.store offset=16 - local.get $1 - i64.const 0 - i64.store offset=24 - memory.size - i32.const 16 - i32.shl - i32.const 32308 - i32.sub - i32.const 1 - i32.shr_u - global.set $~lib/rt/itcms/threshold - i32.const 1284 - i32.const 1280 - i32.store - i32.const 1288 - i32.const 1280 - i32.store - i32.const 1280 - global.set $~lib/rt/itcms/pinSpace - i32.const 1316 - i32.const 1312 - i32.store - i32.const 1320 - i32.const 1312 - i32.store - i32.const 1312 - global.set $~lib/rt/itcms/toSpace - i32.const 1460 - i32.const 1456 - i32.store - i32.const 1464 - i32.const 1456 - i32.store - i32.const 1456 - global.set $~lib/rt/itcms/fromSpace - i32.const 0 - call $std/typedarray/testInstantiate - i32.const 5 - call $std/typedarray/testInstantiate - global.get $~lib/memory/__stack_pointer - i32.const 3 - call $~lib/typedarray/Int32Array#constructor - local.tee $1 - i32.store - local.get $1 - i32.const 0 - i32.const 1 - call $~lib/typedarray/Int32Array#__set - local.get $1 - i32.const 1 - i32.const 2 - call $~lib/typedarray/Int32Array#__set - local.get $1 - i32.const 2 - i32.const 3 - call $~lib/typedarray/Int32Array#__set - local.get $1 - i32.load offset=8 - i32.const 2 - i32.shr_u - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 95 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.load offset=4 - local.get $1 - i32.load - i32.sub - if - i32.const 0 - i32.const 1568 - i32.const 96 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.load offset=8 - i32.const 12 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 97 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 0 - call $~lib/typedarray/Int32Array#__get - i32.const 1 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 98 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 1 - call $~lib/typedarray/Int32Array#__get - i32.const 2 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 99 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 2 - call $~lib/typedarray/Int32Array#__get - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 100 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.const 1 - i32.const 2 - call $~lib/typedarray/Int32Array#subarray - local.tee $1 - i32.store - local.get $1 - i32.load offset=8 - i32.const 2 - i32.shr_u - i32.const 1 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 103 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.load offset=4 - local.get $1 - i32.load - i32.sub - i32.const 4 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 104 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.load offset=8 - i32.const 4 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 105 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 0 - call $~lib/typedarray/Int32Array#__get - i32.const 2 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 106 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 8 - call $~lib/typedarray/Float64Array#constructor - local.tee $1 - i32.store - local.get $1 - i32.const 0 - f64.const 1 - call $~lib/typedarray/Float64Array#__set - local.get $1 - i32.const 1 - f64.const 2 - call $~lib/typedarray/Float64Array#__set - local.get $1 - i32.const 2 - f64.const 7 - call $~lib/typedarray/Float64Array#__set - local.get $1 - i32.const 3 - f64.const 6 - call $~lib/typedarray/Float64Array#__set - local.get $1 - i32.const 4 - f64.const 5 - call $~lib/typedarray/Float64Array#__set - local.get $1 - i32.const 5 - f64.const 4 - call $~lib/typedarray/Float64Array#__set - local.get $1 - i32.const 6 - f64.const 3 - call $~lib/typedarray/Float64Array#__set - local.get $1 - i32.const 7 - f64.const 8 - call $~lib/typedarray/Float64Array#__set - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.const 2 - i32.const 6 - call $~lib/typedarray/Float64Array#subarray - local.tee $0 - i32.store - local.get $0 - i32.load offset=8 - i32.const 3 - i32.shr_u - i32.const 4 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 122 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load offset=4 - local.get $0 - i32.load - i32.sub - i32.const 16 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 123 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load offset=8 - i32.const 32 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 124 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - global.set $~argumentsLength - local.get $0 - call $~lib/typedarray/Float64Array#sort@varargs - drop - local.get $0 - i32.const 0 - call $~lib/typedarray/Float64Array#__get - f64.const 4 - f64.eq - if (result i32) - local.get $0 - i32.const 1 - call $~lib/typedarray/Float64Array#__get - f64.const 5 - f64.eq - else - i32.const 0 - end - if (result i32) - local.get $0 - i32.const 2 - call $~lib/typedarray/Float64Array#__get - f64.const 6 - f64.eq - else - i32.const 0 - end - if (result i32) - local.get $0 - i32.const 3 - call $~lib/typedarray/Float64Array#__get - f64.const 7 - f64.eq - else - i32.const 0 - end - i32.eqz - if - i32.const 0 - i32.const 1568 - i32.const 126 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 3 - call $~lib/typedarray/Uint8ClampedArray#constructor - local.tee $1 - i32.store - local.get $1 - i32.const 0 - i32.const -32 - call $~lib/typedarray/Uint8ClampedArray#__set - local.get $1 - i32.const 1 - i32.const 2 - call $~lib/typedarray/Uint8ClampedArray#__set - local.get $1 - i32.const 2 - i32.const 256 - call $~lib/typedarray/Uint8ClampedArray#__set - local.get $1 - i32.const 0 - call $~lib/typedarray/Uint8ClampedArray#__get - if - i32.const 0 - i32.const 1568 - i32.const 135 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 1 - call $~lib/typedarray/Uint8ClampedArray#__get - i32.const 2 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 136 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 2 - call $~lib/typedarray/Uint8ClampedArray#__get - i32.const 255 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 137 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 5 - call $~lib/typedarray/Int8Array#constructor - local.tee $2 - i32.store - local.get $2 - i32.const 0 - i32.const 1 - call $~lib/typedarray/Int8Array#__set - local.get $2 - i32.const 1 - i32.const 2 - call $~lib/typedarray/Int8Array#__set - local.get $2 - i32.const 2 - i32.const 3 - call $~lib/typedarray/Int8Array#__set - local.get $2 - i32.const 3 - i32.const 4 - call $~lib/typedarray/Int8Array#__set - local.get $2 - i32.const 4 - i32.const 5 - call $~lib/typedarray/Int8Array#__set - local.get $2 - i32.const 1 - i32.const 1 - i32.const 3 - call $~lib/typedarray/Int8Array#fill - i32.const 5 - i32.const 0 - i32.const 15 - i32.const 1728 - call $~lib/rt/__newArray - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $2 - local.get $1 - call $std/typedarray/isInt8ArrayEqual - i32.eqz - if - i32.const 0 - i32.const 1568 - i32.const 149 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.const 0 - i32.const 0 - i32.const 2147483647 - call $~lib/typedarray/Int8Array#fill - i32.const 5 - i32.const 0 - i32.const 15 - i32.const 1808 - call $~lib/rt/__newArray - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $2 - local.get $1 - call $std/typedarray/isInt8ArrayEqual - i32.eqz - if - i32.const 0 - i32.const 1568 - i32.const 152 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.const 1 - i32.const 0 - i32.const -3 - call $~lib/typedarray/Int8Array#fill - i32.const 5 - i32.const 0 - i32.const 15 - i32.const 1840 - call $~lib/rt/__newArray - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $2 - local.get $1 - call $std/typedarray/isInt8ArrayEqual - i32.eqz - if - i32.const 0 - i32.const 1568 - i32.const 155 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.const 2 - i32.const -2 - i32.const 2147483647 - call $~lib/typedarray/Int8Array#fill - i32.const 5 - i32.const 0 - i32.const 15 - i32.const 1872 - call $~lib/rt/__newArray - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $2 - local.get $1 - call $std/typedarray/isInt8ArrayEqual - i32.eqz - if - i32.const 0 - i32.const 1568 - i32.const 158 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.const 0 - i32.const 1 - i32.const 0 - call $~lib/typedarray/Int8Array#fill - i32.const 5 - i32.const 0 - i32.const 15 - i32.const 1904 - call $~lib/rt/__newArray - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $2 - local.get $1 - call $std/typedarray/isInt8ArrayEqual - i32.eqz - if - i32.const 0 - i32.const 1568 - i32.const 161 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.const 1 - i32.const 4 - call $~lib/typedarray/Int8Array#subarray - local.tee $0 - i32.store offset=8 - local.get $0 - i32.const 0 - i32.const 0 - i32.const 2147483647 - call $~lib/typedarray/Int8Array#fill - local.get $0 - i32.load offset=8 - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 165 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load offset=4 - local.get $0 - i32.load - i32.sub - i32.const 1 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 166 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load offset=8 - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 167 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 3 - i32.const 0 - i32.const 15 - i32.const 1936 - call $~lib/rt/__newArray - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $0 - local.get $1 - call $std/typedarray/isInt8ArrayEqual - i32.eqz - if - i32.const 0 - i32.const 1568 - i32.const 168 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 5 - i32.const 0 - i32.const 15 - i32.const 1968 - call $~lib/rt/__newArray - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $2 - local.get $1 - call $std/typedarray/isInt8ArrayEqual - i32.eqz - if - i32.const 0 - i32.const 1568 - i32.const 169 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 5 - call $~lib/typedarray/Int32Array#constructor - local.tee $3 - i32.store offset=8 - local.get $3 - i32.const 0 - i32.const 1 - call $~lib/typedarray/Int32Array#__set - local.get $3 - i32.const 1 - i32.const 2 - call $~lib/typedarray/Int32Array#__set - local.get $3 - i32.const 2 - i32.const 3 - call $~lib/typedarray/Int32Array#__set - local.get $3 - i32.const 3 - i32.const 4 - call $~lib/typedarray/Int32Array#__set - local.get $3 - i32.const 4 - i32.const 5 - call $~lib/typedarray/Int32Array#__set - local.get $3 - i32.load offset=4 - local.set $2 - i32.const 1 - local.get $3 - i32.load offset=8 - i32.const 2 - i32.shr_u - local.tee $0 - local.get $0 - i32.const 1 - i32.gt_s - select - local.set $1 - i32.const 3 - local.get $0 - local.get $0 - i32.const 3 - i32.gt_s - select - local.set $0 - loop $for-loop|0 - local.get $0 - local.get $1 - i32.gt_s - if - local.get $2 - local.get $1 - i32.const 2 - i32.shl - i32.add - i32.const 1 - i32.store - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $for-loop|0 - end - end - i32.const 5 - i32.const 2 - i32.const 16 - i32.const 2000 - call $~lib/rt/__newArray - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $3 - local.get $1 - call $std/typedarray/isInt32ArrayEqual - i32.eqz - if - i32.const 0 - i32.const 1568 - i32.const 181 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.load offset=4 - local.set $0 - i32.const 0 - local.get $3 - i32.load offset=8 - i32.const 2 - i32.shr_u - local.tee $2 - local.get $2 - i32.const 0 - i32.gt_s - select - local.set $1 - loop $for-loop|01 - local.get $1 - local.get $2 - i32.lt_s - if - local.get $0 - local.get $1 - i32.const 2 - i32.shl - i32.add - i32.const 0 - i32.store - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $for-loop|01 - end - end - i32.const 5 - i32.const 2 - i32.const 16 - i32.const 2048 - call $~lib/rt/__newArray - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $3 - local.get $1 - call $std/typedarray/isInt32ArrayEqual - i32.eqz - if - i32.const 0 - i32.const 1568 - i32.const 184 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.load offset=4 - local.set $2 - i32.const 0 - local.get $3 - i32.load offset=8 - i32.const 2 - i32.shr_u - local.tee $0 - local.get $0 - i32.const 0 - i32.gt_s - select - local.set $1 - local.get $0 - i32.const 3 - i32.sub - local.tee $0 - i32.const 0 - local.get $0 - i32.const 0 - i32.gt_s - select - local.set $0 - loop $for-loop|03 - local.get $0 - local.get $1 - i32.gt_s - if - local.get $2 - local.get $1 - i32.const 2 - i32.shl - i32.add - i32.const 1 - i32.store - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $for-loop|03 - end - end - i32.const 5 - i32.const 2 - i32.const 16 - i32.const 2096 - call $~lib/rt/__newArray - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $3 - local.get $1 - call $std/typedarray/isInt32ArrayEqual - i32.eqz - if - i32.const 0 - i32.const 1568 - i32.const 187 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.load offset=4 - local.set $2 - local.get $3 - i32.load offset=8 - i32.const 2 - i32.shr_u - local.tee $0 - i32.const 2 - i32.sub - local.tee $1 - i32.const 0 - local.get $1 - i32.const 0 - i32.gt_s - select - local.set $1 - loop $for-loop|05 - local.get $0 - local.get $1 - i32.gt_s - if - local.get $2 - local.get $1 - i32.const 2 - i32.shl - i32.add - i32.const 2 - i32.store - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $for-loop|05 - end - end - i32.const 5 - i32.const 2 - i32.const 16 - i32.const 2144 - call $~lib/rt/__newArray - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $3 - local.get $1 - call $std/typedarray/isInt32ArrayEqual - i32.eqz - if - i32.const 0 - i32.const 1568 - i32.const 190 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.load offset=4 - local.set $2 - i32.const 1 - local.get $3 - i32.load offset=8 - i32.const 2 - i32.shr_u - local.tee $0 - local.get $0 - i32.const 1 - i32.gt_s - select - local.set $1 - i32.const 0 - local.get $0 - local.get $0 - i32.const 0 - i32.gt_s - select - local.set $0 - loop $for-loop|07 - local.get $0 - local.get $1 - i32.gt_s - if - local.get $2 - local.get $1 - i32.const 2 - i32.shl - i32.add - i32.const 0 - i32.store - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $for-loop|07 - end - end - i32.const 5 - i32.const 2 - i32.const 16 - i32.const 2192 - call $~lib/rt/__newArray - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $3 - local.get $1 - call $std/typedarray/isInt32ArrayEqual - i32.eqz - if - i32.const 0 - i32.const 1568 - i32.const 193 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $3 - i32.const 1 - i32.const 4 - call $~lib/typedarray/Int32Array#subarray - local.tee $4 - i32.store offset=12 - local.get $4 - i32.load offset=4 - local.set $0 - i32.const 0 - local.get $4 - i32.load offset=8 - i32.const 2 - i32.shr_u - local.tee $2 - local.get $2 - i32.const 0 - i32.gt_s - select - local.set $1 - loop $for-loop|09 - local.get $1 - local.get $2 - i32.lt_s - if - local.get $0 - local.get $1 - i32.const 2 - i32.shl - i32.add - i32.const 0 - i32.store - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $for-loop|09 - end - end - local.get $4 - i32.load offset=8 - i32.const 2 - i32.shr_u - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 197 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $4 - i32.load offset=4 - local.get $4 - i32.load - i32.sub - i32.const 4 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 198 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $4 - i32.load offset=8 - i32.const 12 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 199 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 3 - i32.const 2 - i32.const 16 - i32.const 2240 - call $~lib/rt/__newArray - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $4 - local.get $1 - call $std/typedarray/isInt32ArrayEqual - i32.eqz - if - i32.const 0 - i32.const 1568 - i32.const 200 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 5 - i32.const 2 - i32.const 16 - i32.const 2272 - call $~lib/rt/__newArray - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $3 - local.get $1 - call $std/typedarray/isInt32ArrayEqual - i32.eqz - if - i32.const 0 - i32.const 1568 - i32.const 201 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 6 - call $~lib/typedarray/Int8Array#constructor - local.tee $1 - i32.store offset=12 - local.get $1 - i32.const 0 - i32.const 1 - call $~lib/typedarray/Int8Array#__set - local.get $1 - i32.const 1 - i32.const 2 - call $~lib/typedarray/Int8Array#__set - local.get $1 - i32.const 2 - i32.const 3 - call $~lib/typedarray/Int8Array#__set - local.get $1 - i32.const 3 - i32.const 4 - call $~lib/typedarray/Int8Array#__set - local.get $1 - i32.const 4 - i32.const 5 - call $~lib/typedarray/Int8Array#__set - local.get $1 - i32.const 5 - i32.const 6 - call $~lib/typedarray/Int8Array#__set - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.const 1 - i32.const 6 - call $~lib/typedarray/Int8Array#subarray - local.tee $1 - i32.store offset=8 - local.get $1 - i32.const 0 - call $~lib/typedarray/Int8Array#__get - i32.const 2 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 222 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.load offset=8 - i32.const 5 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 223 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.load offset=4 - local.get $1 - i32.load - i32.sub - i32.const 1 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 224 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.load offset=8 - i32.const 5 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 225 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.const 1 - i32.const 5 - call $~lib/typedarray/Int8Array#subarray - local.tee $1 - i32.store - local.get $1 - i32.const 0 - call $~lib/typedarray/Int8Array#__get - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 228 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.load offset=8 - i32.const 4 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 229 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.load offset=4 - local.get $1 - i32.load - i32.sub - i32.const 2 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 230 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.load offset=8 - i32.const 4 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 231 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.const 1 - i32.const 4 - call $~lib/typedarray/Int8Array#subarray - local.tee $1 - i32.store offset=16 - local.get $1 - i32.const 0 - call $~lib/typedarray/Int8Array#__get - i32.const 4 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 234 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.load offset=8 - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 235 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.load offset=4 - local.get $1 - i32.load - i32.sub - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 236 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.load offset=8 - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 237 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 5 - call $~lib/typedarray/Int32Array#constructor - local.tee $1 - i32.store offset=16 - local.get $1 - i32.const 0 - i32.const 1 - call $~lib/typedarray/Int32Array#__set - local.get $1 - i32.const 1 - i32.const 2 - call $~lib/typedarray/Int32Array#__set - local.get $1 - i32.const 2 - i32.const 3 - call $~lib/typedarray/Int32Array#__set - local.get $1 - i32.const 3 - i32.const 4 - call $~lib/typedarray/Int32Array#__set - local.get $1 - i32.const 4 - i32.const 5 - call $~lib/typedarray/Int32Array#__set - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.const 0 - i32.const 2147483647 - call $~lib/typedarray/Int32Array#slice - local.tee $2 - i32.store - local.get $1 - i32.const 0 - i32.const 3 - i32.const 2147483647 - call $~lib/typedarray/Int32Array#copyWithin - local.set $0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=20 - i32.const 5 - i32.const 2 - i32.const 16 - i32.const 2320 - call $~lib/rt/__newArray - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $0 - local.get $1 - call $std/typedarray/isInt32ArrayEqual - i32.eqz - if - i32.const 0 - i32.const 1568 - i32.const 248 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.const 0 - i32.const 2147483647 - call $~lib/typedarray/Int32Array#slice - local.tee $1 - i32.store offset=16 - local.get $1 - i32.const 1 - i32.const 3 - i32.const 2147483647 - call $~lib/typedarray/Int32Array#copyWithin - local.set $0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=20 - i32.const 5 - i32.const 2 - i32.const 16 - i32.const 2368 - call $~lib/rt/__newArray - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $0 - local.get $1 - call $std/typedarray/isInt32ArrayEqual - i32.eqz - if - i32.const 0 - i32.const 1568 - i32.const 250 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.const 0 - i32.const 2147483647 - call $~lib/typedarray/Int32Array#slice - local.tee $1 - i32.store offset=16 - local.get $1 - i32.const 1 - i32.const 2 - i32.const 2147483647 - call $~lib/typedarray/Int32Array#copyWithin - local.set $0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=20 - i32.const 5 - i32.const 2 - i32.const 16 - i32.const 2416 - call $~lib/rt/__newArray - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $0 - local.get $1 - call $std/typedarray/isInt32ArrayEqual - i32.eqz - if - i32.const 0 - i32.const 1568 - i32.const 252 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.const 0 - i32.const 2147483647 - call $~lib/typedarray/Int32Array#slice - local.tee $1 - i32.store offset=16 - local.get $1 - i32.const 2 - i32.const 2 - i32.const 2147483647 - call $~lib/typedarray/Int32Array#copyWithin - local.set $0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=20 - i32.const 5 - i32.const 2 - i32.const 16 - i32.const 2464 - call $~lib/rt/__newArray - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $0 - local.get $1 - call $std/typedarray/isInt32ArrayEqual - i32.eqz - if - i32.const 0 - i32.const 1568 - i32.const 254 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.const 0 - i32.const 2147483647 - call $~lib/typedarray/Int32Array#slice - local.tee $1 - i32.store offset=16 - local.get $1 - i32.const 0 - i32.const 3 - i32.const 4 - call $~lib/typedarray/Int32Array#copyWithin - local.set $0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=20 - i32.const 5 - i32.const 2 - i32.const 16 - i32.const 2512 - call $~lib/rt/__newArray - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $0 - local.get $1 - call $std/typedarray/isInt32ArrayEqual - i32.eqz - if - i32.const 0 - i32.const 1568 - i32.const 256 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.const 0 - i32.const 2147483647 - call $~lib/typedarray/Int32Array#slice - local.tee $1 - i32.store offset=16 - local.get $1 - i32.const 1 - i32.const 3 - i32.const 4 - call $~lib/typedarray/Int32Array#copyWithin - local.set $0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=20 - i32.const 5 - i32.const 2 - i32.const 16 - i32.const 2560 - call $~lib/rt/__newArray - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $0 - local.get $1 - call $std/typedarray/isInt32ArrayEqual - i32.eqz - if - i32.const 0 - i32.const 1568 - i32.const 258 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.const 0 - i32.const 2147483647 - call $~lib/typedarray/Int32Array#slice - local.tee $1 - i32.store offset=16 - local.get $1 - i32.const 1 - i32.const 2 - i32.const 4 - call $~lib/typedarray/Int32Array#copyWithin - local.set $0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=20 - i32.const 5 - i32.const 2 - i32.const 16 - i32.const 2608 - call $~lib/rt/__newArray - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $0 - local.get $1 - call $std/typedarray/isInt32ArrayEqual - i32.eqz - if - i32.const 0 - i32.const 1568 - i32.const 260 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.const 0 - i32.const 2147483647 - call $~lib/typedarray/Int32Array#slice - local.tee $1 - i32.store offset=16 - local.get $1 - i32.const 0 - i32.const -2 - i32.const 2147483647 - call $~lib/typedarray/Int32Array#copyWithin - local.set $0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=20 - i32.const 5 - i32.const 2 - i32.const 16 - i32.const 2656 - call $~lib/rt/__newArray - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $0 - local.get $1 - call $std/typedarray/isInt32ArrayEqual - i32.eqz - if - i32.const 0 - i32.const 1568 - i32.const 262 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.const 0 - i32.const 2147483647 - call $~lib/typedarray/Int32Array#slice - local.tee $1 - i32.store offset=16 - local.get $1 - i32.const 0 - i32.const -2 - i32.const -1 - call $~lib/typedarray/Int32Array#copyWithin - local.set $0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=20 - i32.const 5 - i32.const 2 - i32.const 16 - i32.const 2704 - call $~lib/rt/__newArray - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $0 - local.get $1 - call $std/typedarray/isInt32ArrayEqual - i32.eqz - if - i32.const 0 - i32.const 1568 - i32.const 264 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.const 0 - i32.const 2147483647 - call $~lib/typedarray/Int32Array#slice - local.tee $1 - i32.store offset=16 - local.get $1 - i32.const -4 - i32.const -3 - i32.const -2 - call $~lib/typedarray/Int32Array#copyWithin - local.set $0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=20 - i32.const 5 - i32.const 2 - i32.const 16 - i32.const 2752 - call $~lib/rt/__newArray - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $0 - local.get $1 - call $std/typedarray/isInt32ArrayEqual - i32.eqz - if - i32.const 0 - i32.const 1568 - i32.const 266 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.const 0 - i32.const 2147483647 - call $~lib/typedarray/Int32Array#slice - local.tee $1 - i32.store offset=16 - local.get $1 - i32.const -4 - i32.const -3 - i32.const -1 - call $~lib/typedarray/Int32Array#copyWithin - local.set $0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=20 - i32.const 5 - i32.const 2 - i32.const 16 - i32.const 2800 - call $~lib/rt/__newArray - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $0 - local.get $1 - call $std/typedarray/isInt32ArrayEqual - i32.eqz - if - i32.const 0 - i32.const 1568 - i32.const 268 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.const 0 - i32.const 2147483647 - call $~lib/typedarray/Int32Array#slice - local.tee $1 - i32.store offset=16 - local.get $1 - i32.const -4 - i32.const -3 - i32.const 2147483647 - call $~lib/typedarray/Int32Array#copyWithin - local.set $0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=20 - i32.const 5 - i32.const 2 - i32.const 16 - i32.const 2848 - call $~lib/rt/__newArray - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $0 - local.get $1 - call $std/typedarray/isInt32ArrayEqual - i32.eqz - if - i32.const 0 - i32.const 1568 - i32.const 270 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 5 - call $~lib/typedarray/Int32Array#constructor - local.tee $2 - i32.store - local.get $2 - i32.const 0 - i32.const 1 - call $~lib/typedarray/Int32Array#__set - local.get $2 - i32.const 1 - i32.const 2 - call $~lib/typedarray/Int32Array#__set - local.get $2 - i32.const 2 - i32.const 3 - call $~lib/typedarray/Int32Array#__set - local.get $2 - i32.const 3 - i32.const 4 - call $~lib/typedarray/Int32Array#__set - local.get $2 - i32.const 4 - i32.const 5 - call $~lib/typedarray/Int32Array#__set - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.const 1 - i32.const 4 - call $~lib/typedarray/Int32Array#subarray - local.tee $1 - i32.store offset=16 - local.get $1 - i32.load offset=8 - i32.const 2 - i32.shr_u - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 282 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.load offset=4 - local.get $1 - i32.load - i32.sub - i32.const 4 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 283 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.load offset=8 - i32.const 12 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 284 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.const 1 - i32.const 3 - call $~lib/typedarray/Int32Array#slice - local.tee $0 - i32.store offset=8 - local.get $0 - i32.const 0 - call $~lib/typedarray/Int32Array#__get - i32.const 2 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 287 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 1 - call $~lib/typedarray/Int32Array#__get - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 288 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load offset=8 - i32.const 2 - i32.shr_u - i32.const 2 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 289 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load offset=4 - local.get $0 - i32.load - i32.sub - if - i32.const 0 - i32.const 1568 - i32.const 290 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load offset=8 - i32.const 8 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 291 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.const 1 - i32.const 2 - call $~lib/typedarray/Int32Array#slice - local.tee $1 - i32.store offset=12 - local.get $1 - i32.const 0 - call $~lib/typedarray/Int32Array#__get - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 294 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.load offset=8 - i32.const 2 - i32.shr_u - i32.const 1 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 295 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.load offset=4 - local.get $1 - i32.load - i32.sub - if - i32.const 0 - i32.const 1568 - i32.const 296 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.load offset=8 - i32.const 4 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 297 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.const 0 - i32.const 2147483647 - call $~lib/typedarray/Int32Array#slice - local.tee $1 - i32.store offset=24 - local.get $1 - local.get $2 - i32.eq - if - i32.const 0 - i32.const 1568 - i32.const 300 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.load offset=8 - i32.const 2 - i32.shr_u - local.get $2 - i32.load offset=8 - i32.const 2 - i32.shr_u - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 301 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.load offset=4 - local.get $1 - i32.load - i32.sub - local.get $2 - i32.load offset=4 - local.get $2 - i32.load - i32.sub - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 302 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.load offset=8 - local.get $2 - i32.load offset=8 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 303 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 15924 - i32.lt_s - br_if $folding-inner14 - global.get $~lib/memory/__stack_pointer - local.tee $1 - i64.const 0 - i64.store - local.get $1 - i32.const 3 - call $~lib/typedarray/Int8Array#constructor - local.tee $3 - i32.store - local.get $3 - i32.const 0 - i32.const 1 - call $~lib/typedarray/Int8Array#__set - local.get $3 - i32.const 1 - i32.const 2 - call $~lib/typedarray/Int8Array#__set - local.get $3 - i32.const 2 - i32.const 3 - call $~lib/typedarray/Int8Array#__set - global.get $~lib/memory/__stack_pointer - i32.const 2896 - i32.store offset=4 - i32.const 0 - local.set $0 - local.get $3 - i32.load offset=4 - local.set $4 - local.get $3 - i32.load offset=8 - local.set $2 - loop $for-loop|011 - local.get $0 - local.get $2 - i32.lt_s - if - local.get $0 - local.get $4 - i32.add - i32.load8_s - local.set $1 - i32.const 4 - global.set $~argumentsLength - local.get $9 - local.get $1 - local.get $0 - local.get $3 - i32.const 2896 - i32.load - call_indirect $0 (type $i32_i32_i32_i32_=>_i32) - local.set $9 - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|011 - end - end - block $folding-inner18 - block $folding-inner17 - block $folding-inner16 - block $folding-inner15 - block $folding-inner12 - block $folding-inner11 - block $folding-inner10 - block $folding-inner9 - block $folding-inner8 - block $folding-inner7 - block $folding-inner6 - block $folding-inner5 - block $folding-inner4 - block $folding-inner3 - block $folding-inner2 - block $folding-inner1 - local.get $9 - i32.const 255 - i32.and - i32.const 6 - i32.ne - br_if $folding-inner1 - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 15924 - i32.lt_s - br_if $folding-inner14 - global.get $~lib/memory/__stack_pointer - local.tee $1 - i64.const 0 - i64.store - local.get $1 - i32.const 3 - call $~lib/typedarray/Uint8Array#constructor - local.tee $3 - i32.store - local.get $3 - i32.const 0 - i32.const 1 - call $~lib/typedarray/Uint8Array#__set - local.get $3 - i32.const 1 - i32.const 2 - call $~lib/typedarray/Uint8Array#__set - local.get $3 - i32.const 2 - i32.const 3 - call $~lib/typedarray/Uint8Array#__set - global.get $~lib/memory/__stack_pointer - i32.const 2928 - i32.store offset=4 - i32.const 0 - local.set $0 - local.get $3 - i32.load offset=4 - local.set $4 - local.get $3 - i32.load offset=8 - local.set $2 - loop $for-loop|013 - local.get $0 - local.get $2 - i32.lt_s - if - local.get $0 - local.get $4 - i32.add - i32.load8_u - local.set $1 - i32.const 4 - global.set $~argumentsLength - local.get $5 - local.get $1 - local.get $0 - local.get $3 - i32.const 2928 - i32.load - call_indirect $0 (type $i32_i32_i32_i32_=>_i32) - local.set $5 - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|013 - end - end - local.get $5 - i32.const 255 - i32.and - i32.const 6 - i32.ne - br_if $folding-inner1 - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 15924 - i32.lt_s - br_if $folding-inner14 - global.get $~lib/memory/__stack_pointer - local.tee $1 - i64.const 0 - i64.store - local.get $1 - i32.const 3 - call $~lib/typedarray/Uint8ClampedArray#constructor - local.tee $3 - i32.store - local.get $3 - i32.const 0 - i32.const 1 - call $~lib/typedarray/Uint8ClampedArray#__set - local.get $3 - i32.const 1 - i32.const 2 - call $~lib/typedarray/Uint8ClampedArray#__set - local.get $3 - i32.const 2 - i32.const 3 - call $~lib/typedarray/Uint8ClampedArray#__set - global.get $~lib/memory/__stack_pointer - i32.const 2960 - i32.store offset=4 - i32.const 0 - local.set $0 - i32.const 0 - local.set $5 - local.get $3 - i32.load offset=4 - local.set $4 - local.get $3 - i32.load offset=8 - local.set $2 - loop $for-loop|016 - local.get $0 - local.get $2 - i32.lt_s - if - local.get $0 - local.get $4 - i32.add - i32.load8_u - local.set $1 - i32.const 4 - global.set $~argumentsLength - local.get $5 - local.get $1 - local.get $0 - local.get $3 - i32.const 2960 - i32.load - call_indirect $0 (type $i32_i32_i32_i32_=>_i32) - local.set $5 - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|016 - end - end - local.get $5 - i32.const 255 - i32.and - i32.const 6 - i32.ne - br_if $folding-inner1 - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 15924 - i32.lt_s - br_if $folding-inner14 - global.get $~lib/memory/__stack_pointer - local.tee $1 - i64.const 0 - i64.store - local.get $1 - i32.const 3 - call $~lib/typedarray/Int16Array#constructor - local.tee $3 - i32.store - local.get $3 - i32.const 0 - i32.const 1 - call $~lib/typedarray/Int16Array#__set - local.get $3 - i32.const 1 - i32.const 2 - call $~lib/typedarray/Int16Array#__set - local.get $3 - i32.const 2 - i32.const 3 - call $~lib/typedarray/Int16Array#__set - global.get $~lib/memory/__stack_pointer - i32.const 2992 - i32.store offset=4 - i32.const 0 - local.set $0 - i32.const 0 - local.set $9 - local.get $3 - i32.load offset=4 - local.set $4 - local.get $3 - i32.load offset=8 - i32.const 1 - i32.shr_u - local.set $2 - loop $for-loop|08 - local.get $0 - local.get $2 - i32.lt_s - if - local.get $4 - local.get $0 - i32.const 1 - i32.shl - i32.add - i32.load16_s - local.set $1 - i32.const 4 - global.set $~argumentsLength - local.get $9 - local.get $1 - local.get $0 - local.get $3 - i32.const 2992 - i32.load - call_indirect $0 (type $i32_i32_i32_i32_=>_i32) - local.set $9 - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|08 - end - end - local.get $9 - i32.const 65535 - i32.and - i32.const 6 - i32.ne - br_if $folding-inner1 - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 15924 - i32.lt_s - br_if $folding-inner14 - global.get $~lib/memory/__stack_pointer - local.tee $1 - i64.const 0 - i64.store - local.get $1 - i32.const 3 - call $~lib/typedarray/Uint16Array#constructor - local.tee $3 - i32.store - local.get $3 - i32.const 0 - i32.const 1 - call $~lib/typedarray/Uint16Array#__set - local.get $3 - i32.const 1 - i32.const 2 - call $~lib/typedarray/Uint16Array#__set - local.get $3 - i32.const 2 - i32.const 3 - call $~lib/typedarray/Uint16Array#__set - global.get $~lib/memory/__stack_pointer - i32.const 3024 - i32.store offset=4 - i32.const 0 - local.set $0 - i32.const 0 - local.set $9 - local.get $3 - i32.load offset=4 - local.set $4 - local.get $3 - i32.load offset=8 - i32.const 1 - i32.shr_u - local.set $2 - loop $for-loop|010 - local.get $0 - local.get $2 - i32.lt_s - if - local.get $4 - local.get $0 - i32.const 1 - i32.shl - i32.add - i32.load16_u - local.set $1 - i32.const 4 - global.set $~argumentsLength - local.get $9 - local.get $1 - local.get $0 - local.get $3 - i32.const 3024 - i32.load - call_indirect $0 (type $i32_i32_i32_i32_=>_i32) - local.set $9 - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|010 - end - end - local.get $9 - i32.const 65535 - i32.and - i32.const 6 - i32.ne - br_if $folding-inner1 - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 15924 - i32.lt_s - br_if $folding-inner14 - global.get $~lib/memory/__stack_pointer - local.tee $1 - i64.const 0 - i64.store - local.get $1 - i32.const 3 - call $~lib/typedarray/Int32Array#constructor - local.tee $3 - i32.store - local.get $3 - i32.const 0 - i32.const 1 - call $~lib/typedarray/Int32Array#__set - local.get $3 - i32.const 1 - i32.const 2 - call $~lib/typedarray/Int32Array#__set - local.get $3 - i32.const 2 - i32.const 3 - call $~lib/typedarray/Int32Array#__set - global.get $~lib/memory/__stack_pointer - i32.const 3056 - i32.store offset=4 - i32.const 0 - local.set $0 - i32.const 0 - local.set $9 - local.get $3 - i32.load offset=4 - local.set $4 - local.get $3 - i32.load offset=8 - i32.const 2 - i32.shr_u - local.set $2 - loop $for-loop|012 - local.get $0 - local.get $2 - i32.lt_s - if - local.get $4 - local.get $0 - i32.const 2 - i32.shl - i32.add - i32.load - local.set $1 - i32.const 4 - global.set $~argumentsLength - local.get $9 - local.get $1 - local.get $0 - local.get $3 - i32.const 3056 - i32.load - call_indirect $0 (type $i32_i32_i32_i32_=>_i32) - local.set $9 - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|012 - end - end - local.get $9 - i32.const 6 - i32.ne - br_if $folding-inner1 - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 15924 - i32.lt_s - br_if $folding-inner14 - global.get $~lib/memory/__stack_pointer - local.tee $1 - i64.const 0 - i64.store - local.get $1 - i32.const 3 - call $~lib/typedarray/Uint32Array#constructor - local.tee $3 - i32.store - local.get $3 - i32.const 0 - i32.const 1 - call $~lib/typedarray/Uint32Array#__set - local.get $3 - i32.const 1 - i32.const 2 - call $~lib/typedarray/Uint32Array#__set - local.get $3 - i32.const 2 - i32.const 3 - call $~lib/typedarray/Uint32Array#__set - global.get $~lib/memory/__stack_pointer - i32.const 3088 - i32.store offset=4 - i32.const 0 - local.set $0 - i32.const 0 - local.set $9 - local.get $3 - i32.load offset=4 - local.set $4 - local.get $3 - i32.load offset=8 - i32.const 2 - i32.shr_u - local.set $2 - loop $for-loop|014 - local.get $0 - local.get $2 - i32.lt_s - if - local.get $4 - local.get $0 - i32.const 2 - i32.shl - i32.add - i32.load - local.set $1 - i32.const 4 - global.set $~argumentsLength - local.get $9 - local.get $1 - local.get $0 - local.get $3 - i32.const 3088 - i32.load - call_indirect $0 (type $i32_i32_i32_i32_=>_i32) - local.set $9 - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|014 - end - end - local.get $9 - i32.const 6 - i32.ne - br_if $folding-inner1 - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 15924 - i32.lt_s - br_if $folding-inner14 - global.get $~lib/memory/__stack_pointer - local.tee $1 - i64.const 0 - i64.store - local.get $1 - i32.const 3 - call $~lib/typedarray/Int64Array#constructor - local.tee $4 - i32.store - local.get $4 - i32.const 0 - i64.const 1 - call $~lib/typedarray/Int64Array#__set - local.get $4 - i32.const 1 - i64.const 2 - call $~lib/typedarray/Int64Array#__set - local.get $4 - i32.const 2 - i64.const 3 - call $~lib/typedarray/Int64Array#__set - global.get $~lib/memory/__stack_pointer - i32.const 3120 - i32.store offset=4 - i32.const 0 - local.set $0 - local.get $4 - i32.load offset=4 - local.set $2 - local.get $4 - i32.load offset=8 - i32.const 3 - i32.shr_u - local.set $1 - loop $for-loop|01622 - local.get $0 - local.get $1 - i32.lt_s - if - local.get $2 - local.get $0 - i32.const 3 - i32.shl - i32.add - i64.load - local.set $10 - i32.const 4 - global.set $~argumentsLength - local.get $13 - local.get $10 - local.get $0 - local.get $4 - i32.const 3120 - i32.load - call_indirect $0 (type $i64_i64_i32_i32_=>_i64) - local.set $13 - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|01622 - end - end - local.get $13 - i64.const 6 - i64.ne - br_if $folding-inner1 - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 15924 - i32.lt_s - br_if $folding-inner14 - global.get $~lib/memory/__stack_pointer - local.tee $1 - i64.const 0 - i64.store - local.get $1 - i32.const 3 - call $~lib/typedarray/Uint64Array#constructor - local.tee $4 - i32.store - local.get $4 - i32.const 0 - i64.const 1 - call $~lib/typedarray/Uint64Array#__set - local.get $4 - i32.const 1 - i64.const 2 - call $~lib/typedarray/Uint64Array#__set - local.get $4 - i32.const 2 - i64.const 3 - call $~lib/typedarray/Uint64Array#__set - global.get $~lib/memory/__stack_pointer - i32.const 3152 - i32.store offset=4 - i32.const 0 - local.set $0 - i64.const 0 - local.set $13 - local.get $4 - i32.load offset=4 - local.set $2 - local.get $4 - i32.load offset=8 - i32.const 3 - i32.shr_u - local.set $1 - loop $for-loop|018 - local.get $0 - local.get $1 - i32.lt_s - if - local.get $2 - local.get $0 - i32.const 3 - i32.shl - i32.add - i64.load - local.set $10 - i32.const 4 - global.set $~argumentsLength - local.get $13 - local.get $10 - local.get $0 - local.get $4 - i32.const 3152 - i32.load - call_indirect $0 (type $i64_i64_i32_i32_=>_i64) - local.set $13 - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|018 - end - end - local.get $13 - i64.const 6 - i64.ne - br_if $folding-inner1 - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 15924 - i32.lt_s - br_if $folding-inner14 - global.get $~lib/memory/__stack_pointer - local.tee $1 - i64.const 0 - i64.store - local.get $1 - i32.const 3 - call $~lib/typedarray/Float32Array#constructor - local.tee $4 - i32.store - local.get $4 - i32.const 0 - f32.const 1 - call $~lib/typedarray/Float32Array#__set - local.get $4 - i32.const 1 - f32.const 2 - call $~lib/typedarray/Float32Array#__set - local.get $4 - i32.const 2 - f32.const 3 - call $~lib/typedarray/Float32Array#__set - global.get $~lib/memory/__stack_pointer - i32.const 3184 - i32.store offset=4 - i32.const 0 - local.set $0 - local.get $4 - i32.load offset=4 - local.set $2 - local.get $4 - i32.load offset=8 - i32.const 2 - i32.shr_u - local.set $1 - loop $for-loop|021 - local.get $0 - local.get $1 - i32.lt_s - if - local.get $2 - local.get $0 - i32.const 2 - i32.shl - i32.add - f32.load - local.set $11 - i32.const 4 - global.set $~argumentsLength - local.get $14 - local.get $11 - local.get $0 - local.get $4 - i32.const 3184 - i32.load - call_indirect $0 (type $f32_f32_i32_i32_=>_f32) - local.set $14 - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|021 - end - end - local.get $14 - f32.const 6 - f32.ne - br_if $folding-inner1 - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 15924 - i32.lt_s - br_if $folding-inner14 - global.get $~lib/memory/__stack_pointer - local.tee $1 - i64.const 0 - i64.store - local.get $1 - i32.const 3 - call $~lib/typedarray/Float64Array#constructor - local.tee $4 - i32.store - local.get $4 - i32.const 0 - f64.const 1 - call $~lib/typedarray/Float64Array#__set - local.get $4 - i32.const 1 - f64.const 2 - call $~lib/typedarray/Float64Array#__set - local.get $4 - i32.const 2 - f64.const 3 - call $~lib/typedarray/Float64Array#__set - global.get $~lib/memory/__stack_pointer - i32.const 3216 - i32.store offset=4 - i32.const 0 - local.set $0 - local.get $4 - i32.load offset=4 - local.set $2 - local.get $4 - i32.load offset=8 - i32.const 3 - i32.shr_u - local.set $1 - loop $for-loop|023 - local.get $0 - local.get $1 - i32.lt_s - if - local.get $2 - local.get $0 - i32.const 3 - i32.shl - i32.add - f64.load - local.set $12 - i32.const 4 - global.set $~argumentsLength - local.get $15 - local.get $12 - local.get $0 - local.get $4 - i32.const 3216 - i32.load - call_indirect $0 (type $f64_f64_i32_i32_=>_f64) - local.set $15 - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|023 - end - end - local.get $15 - f64.const 6 - f64.ne - br_if $folding-inner1 - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 15924 - i32.lt_s - br_if $folding-inner14 - global.get $~lib/memory/__stack_pointer - local.tee $1 - i32.const 0 - i32.store - local.get $1 - i32.const 3 - call $~lib/typedarray/Int8Array#constructor - local.tee $1 - i32.store - local.get $1 - i32.const 0 - i32.const 1 - call $~lib/typedarray/Int8Array#__set - local.get $1 - i32.const 1 - i32.const 2 - call $~lib/typedarray/Int8Array#__set - local.get $1 - i32.const 2 - i32.const 3 - call $~lib/typedarray/Int8Array#__set - local.get $1 - i32.const 0 - call $~lib/typedarray/Int8Array#at - i32.const 1 - i32.ne - br_if $folding-inner2 - local.get $1 - i32.const -1 - call $~lib/typedarray/Int8Array#at - i32.const 3 - i32.ne - br_if $folding-inner3 - local.get $1 - i32.const -3 - call $~lib/typedarray/Int8Array#at - i32.const 1 - i32.ne - br_if $folding-inner4 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 15924 - i32.lt_s - br_if $folding-inner14 - global.get $~lib/memory/__stack_pointer - local.tee $1 - i32.const 0 - i32.store - local.get $1 - i32.const 3 - call $~lib/typedarray/Uint8Array#constructor - local.tee $1 - i32.store - local.get $1 - i32.const 0 - i32.const 1 - call $~lib/typedarray/Uint8Array#__set - local.get $1 - i32.const 1 - i32.const 2 - call $~lib/typedarray/Uint8Array#__set - local.get $1 - i32.const 2 - i32.const 3 - call $~lib/typedarray/Uint8Array#__set - local.get $1 - i32.const 0 - call $~lib/typedarray/Uint8Array#at - i32.const 1 - i32.ne - br_if $folding-inner2 - local.get $1 - i32.const -1 - call $~lib/typedarray/Uint8Array#at - i32.const 3 - i32.ne - br_if $folding-inner3 - local.get $1 - i32.const -3 - call $~lib/typedarray/Uint8Array#at - i32.const 1 - i32.ne - br_if $folding-inner4 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 15924 - i32.lt_s - br_if $folding-inner14 - global.get $~lib/memory/__stack_pointer - local.tee $1 - i32.const 0 - i32.store - local.get $1 - i32.const 3 - call $~lib/typedarray/Uint8ClampedArray#constructor - local.tee $1 - i32.store - local.get $1 - i32.const 0 - i32.const 1 - call $~lib/typedarray/Uint8ClampedArray#__set - local.get $1 - i32.const 1 - i32.const 2 - call $~lib/typedarray/Uint8ClampedArray#__set - local.get $1 - i32.const 2 - i32.const 3 - call $~lib/typedarray/Uint8ClampedArray#__set - local.get $1 - i32.const 0 - call $~lib/typedarray/Uint8ClampedArray#at - i32.const 1 - i32.ne - br_if $folding-inner2 - local.get $1 - i32.const -1 - call $~lib/typedarray/Uint8ClampedArray#at - i32.const 3 - i32.ne - br_if $folding-inner3 - local.get $1 - i32.const -3 - call $~lib/typedarray/Uint8ClampedArray#at - i32.const 1 - i32.ne - br_if $folding-inner4 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 15924 - i32.lt_s - br_if $folding-inner14 - global.get $~lib/memory/__stack_pointer - local.tee $1 - i32.const 0 - i32.store - local.get $1 - i32.const 3 - call $~lib/typedarray/Int16Array#constructor - local.tee $1 - i32.store - local.get $1 - i32.const 0 - i32.const 1 - call $~lib/typedarray/Int16Array#__set - local.get $1 - i32.const 1 - i32.const 2 - call $~lib/typedarray/Int16Array#__set - local.get $1 - i32.const 2 - i32.const 3 - call $~lib/typedarray/Int16Array#__set - local.get $1 - i32.const 0 - call $~lib/typedarray/Int16Array#at - i32.const 1 - i32.ne - br_if $folding-inner2 - local.get $1 - i32.const -1 - call $~lib/typedarray/Int16Array#at - i32.const 3 - i32.ne - br_if $folding-inner3 - local.get $1 - i32.const -3 - call $~lib/typedarray/Int16Array#at - i32.const 1 - i32.ne - br_if $folding-inner4 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 15924 - i32.lt_s - br_if $folding-inner14 - global.get $~lib/memory/__stack_pointer - local.tee $1 - i32.const 0 - i32.store - local.get $1 - i32.const 3 - call $~lib/typedarray/Uint16Array#constructor - local.tee $1 - i32.store - local.get $1 - i32.const 0 - i32.const 1 - call $~lib/typedarray/Uint16Array#__set - local.get $1 - i32.const 1 - i32.const 2 - call $~lib/typedarray/Uint16Array#__set - local.get $1 - i32.const 2 - i32.const 3 - call $~lib/typedarray/Uint16Array#__set - local.get $1 - i32.const 0 - call $~lib/typedarray/Uint16Array#at - i32.const 1 - i32.ne - br_if $folding-inner2 - local.get $1 - i32.const -1 - call $~lib/typedarray/Uint16Array#at - i32.const 3 - i32.ne - br_if $folding-inner3 - local.get $1 - i32.const -3 - call $~lib/typedarray/Uint16Array#at - i32.const 1 - i32.ne - br_if $folding-inner4 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 15924 - i32.lt_s - br_if $folding-inner14 - global.get $~lib/memory/__stack_pointer - local.tee $1 - i32.const 0 - i32.store - local.get $1 - i32.const 3 - call $~lib/typedarray/Int32Array#constructor - local.tee $1 - i32.store - local.get $1 - i32.const 0 - i32.const 1 - call $~lib/typedarray/Int32Array#__set - local.get $1 - i32.const 1 - i32.const 2 - call $~lib/typedarray/Int32Array#__set - local.get $1 - i32.const 2 - i32.const 3 - call $~lib/typedarray/Int32Array#__set - local.get $1 - i32.const 0 - call $~lib/typedarray/Int32Array#at - i32.const 1 - i32.ne - br_if $folding-inner2 - local.get $1 - i32.const -1 - call $~lib/typedarray/Int32Array#at - i32.const 3 - i32.ne - br_if $folding-inner3 - local.get $1 - i32.const -3 - call $~lib/typedarray/Int32Array#at - i32.const 1 - i32.ne - br_if $folding-inner4 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 15924 - i32.lt_s - br_if $folding-inner14 - global.get $~lib/memory/__stack_pointer - local.tee $1 - i32.const 0 - i32.store - local.get $1 - i32.const 3 - call $~lib/typedarray/Uint32Array#constructor - local.tee $1 - i32.store - local.get $1 - i32.const 0 - i32.const 1 - call $~lib/typedarray/Uint32Array#__set - local.get $1 - i32.const 1 - i32.const 2 - call $~lib/typedarray/Uint32Array#__set - local.get $1 - i32.const 2 - i32.const 3 - call $~lib/typedarray/Uint32Array#__set - local.get $1 - i32.const 0 - call $~lib/typedarray/Uint32Array#at - i32.const 1 - i32.ne - br_if $folding-inner2 - local.get $1 - i32.const -1 - call $~lib/typedarray/Uint32Array#at - i32.const 3 - i32.ne - br_if $folding-inner3 - local.get $1 - i32.const -3 - call $~lib/typedarray/Uint32Array#at - i32.const 1 - i32.ne - br_if $folding-inner4 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 15924 - i32.lt_s - br_if $folding-inner14 - global.get $~lib/memory/__stack_pointer - local.tee $1 - i32.const 0 - i32.store - local.get $1 - i32.const 3 - call $~lib/typedarray/Int64Array#constructor - local.tee $1 - i32.store - local.get $1 - i32.const 0 - i64.const 1 - call $~lib/typedarray/Int64Array#__set - local.get $1 - i32.const 1 - i64.const 2 - call $~lib/typedarray/Int64Array#__set - local.get $1 - i32.const 2 - i64.const 3 - call $~lib/typedarray/Int64Array#__set - local.get $1 - i32.const 0 - call $~lib/typedarray/Int64Array#at - i64.const 1 - i64.ne - br_if $folding-inner2 - local.get $1 - i32.const -1 - call $~lib/typedarray/Int64Array#at - i64.const 3 - i64.ne - br_if $folding-inner3 - local.get $1 - i32.const -3 - call $~lib/typedarray/Int64Array#at - i64.const 1 - i64.ne - br_if $folding-inner4 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 15924 - i32.lt_s - br_if $folding-inner14 - global.get $~lib/memory/__stack_pointer - local.tee $1 - i32.const 0 - i32.store - local.get $1 - i32.const 3 - call $~lib/typedarray/Uint64Array#constructor - local.tee $1 - i32.store - local.get $1 - i32.const 0 - i64.const 1 - call $~lib/typedarray/Uint64Array#__set - local.get $1 - i32.const 1 - i64.const 2 - call $~lib/typedarray/Uint64Array#__set - local.get $1 - i32.const 2 - i64.const 3 - call $~lib/typedarray/Uint64Array#__set - local.get $1 - i32.const 0 - call $~lib/typedarray/Uint64Array#at - i64.const 1 - i64.ne - br_if $folding-inner2 - local.get $1 - i32.const -1 - call $~lib/typedarray/Uint64Array#at - i64.const 3 - i64.ne - br_if $folding-inner3 - local.get $1 - i32.const -3 - call $~lib/typedarray/Uint64Array#at - i64.const 1 - i64.ne - br_if $folding-inner4 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 15924 - i32.lt_s - br_if $folding-inner14 - global.get $~lib/memory/__stack_pointer - local.tee $1 - i32.const 0 - i32.store - local.get $1 - i32.const 3 - call $~lib/typedarray/Float32Array#constructor - local.tee $1 - i32.store - local.get $1 - i32.const 0 - f32.const 1 - call $~lib/typedarray/Float32Array#__set - local.get $1 - i32.const 1 - f32.const 2 - call $~lib/typedarray/Float32Array#__set - local.get $1 - i32.const 2 - f32.const 3 - call $~lib/typedarray/Float32Array#__set - local.get $1 - i32.const 0 - call $~lib/typedarray/Float32Array#at - f32.const 1 - f32.ne - br_if $folding-inner2 - local.get $1 - i32.const -1 - call $~lib/typedarray/Float32Array#at - f32.const 3 - f32.ne - br_if $folding-inner3 - local.get $1 - i32.const -3 - call $~lib/typedarray/Float32Array#at - f32.const 1 - f32.ne - br_if $folding-inner4 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 15924 - i32.lt_s - br_if $folding-inner14 - global.get $~lib/memory/__stack_pointer - local.tee $1 - i32.const 0 - i32.store - local.get $1 - i32.const 3 - call $~lib/typedarray/Float64Array#constructor - local.tee $1 - i32.store - local.get $1 - i32.const 0 - f64.const 1 - call $~lib/typedarray/Float64Array#__set - local.get $1 - i32.const 1 - f64.const 2 - call $~lib/typedarray/Float64Array#__set - local.get $1 - i32.const 2 - f64.const 3 - call $~lib/typedarray/Float64Array#__set - local.get $1 - i32.const 0 - call $~lib/typedarray/Float64Array#at - f64.const 1 - f64.ne - br_if $folding-inner2 - local.get $1 - i32.const -1 - call $~lib/typedarray/Float64Array#at - f64.const 3 - f64.ne - br_if $folding-inner3 - local.get $1 - i32.const -3 - call $~lib/typedarray/Float64Array#at - f64.const 1 - f64.ne - br_if $folding-inner4 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 15924 - i32.lt_s - br_if $folding-inner14 - global.get $~lib/memory/__stack_pointer - local.tee $1 - i64.const 0 - i64.store - local.get $1 - i32.const 3 - call $~lib/typedarray/Int8Array#constructor - local.tee $4 - i32.store - local.get $4 - i32.const 0 - i32.const 1 - call $~lib/typedarray/Int8Array#__set - local.get $4 - i32.const 1 - i32.const 2 - call $~lib/typedarray/Int8Array#__set - local.get $4 - i32.const 2 - i32.const 3 - call $~lib/typedarray/Int8Array#__set - global.get $~lib/memory/__stack_pointer - i32.const 3248 - i32.store offset=4 - i32.const 0 - local.set $0 - local.get $4 - i32.load offset=4 - local.set $2 - local.get $4 - i32.load offset=8 - i32.const 1 - i32.sub - local.set $5 - loop $for-loop|025 - local.get $5 - i32.const 0 - i32.ge_s - if - local.get $2 - local.get $5 - i32.add - i32.load8_s - local.set $1 - i32.const 4 - global.set $~argumentsLength - local.get $0 - local.get $1 - local.get $5 - local.get $4 - i32.const 3248 - i32.load - call_indirect $0 (type $i32_i32_i32_i32_=>_i32) - local.set $0 - local.get $5 - i32.const 1 - i32.sub - local.set $5 - br $for-loop|025 - end - end - local.get $0 - i32.const 255 - i32.and - i32.const 6 - i32.ne - br_if $folding-inner5 - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 15924 - i32.lt_s - br_if $folding-inner14 - global.get $~lib/memory/__stack_pointer - local.tee $1 - i64.const 0 - i64.store - local.get $1 - i32.const 3 - call $~lib/typedarray/Uint8Array#constructor - local.tee $4 - i32.store - local.get $4 - i32.const 0 - i32.const 1 - call $~lib/typedarray/Uint8Array#__set - local.get $4 - i32.const 1 - i32.const 2 - call $~lib/typedarray/Uint8Array#__set - local.get $4 - i32.const 2 - i32.const 3 - call $~lib/typedarray/Uint8Array#__set - global.get $~lib/memory/__stack_pointer - i32.const 3280 - i32.store offset=4 - i32.const 0 - local.set $5 - local.get $4 - i32.load offset=4 - local.set $2 - local.get $4 - i32.load offset=8 - i32.const 1 - i32.sub - local.set $0 - loop $for-loop|039 - local.get $0 - i32.const 0 - i32.ge_s - if - local.get $0 - local.get $2 - i32.add - i32.load8_u - local.set $1 - i32.const 4 - global.set $~argumentsLength - local.get $5 - local.get $1 - local.get $0 - local.get $4 - i32.const 3280 - i32.load - call_indirect $0 (type $i32_i32_i32_i32_=>_i32) - local.set $5 - local.get $0 - i32.const 1 - i32.sub - local.set $0 - br $for-loop|039 - end - end - local.get $5 - i32.const 255 - i32.and - i32.const 6 - i32.ne - br_if $folding-inner5 - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 15924 - i32.lt_s - br_if $folding-inner14 - global.get $~lib/memory/__stack_pointer - local.tee $1 - i64.const 0 - i64.store - local.get $1 - i32.const 3 - call $~lib/typedarray/Uint8ClampedArray#constructor - local.tee $4 - i32.store - local.get $4 - i32.const 0 - i32.const 1 - call $~lib/typedarray/Uint8ClampedArray#__set - local.get $4 - i32.const 1 - i32.const 2 - call $~lib/typedarray/Uint8ClampedArray#__set - local.get $4 - i32.const 2 - i32.const 3 - call $~lib/typedarray/Uint8ClampedArray#__set - global.get $~lib/memory/__stack_pointer - i32.const 3312 - i32.store offset=4 - i32.const 0 - local.set $5 - local.get $4 - i32.load offset=4 - local.set $2 - local.get $4 - i32.load offset=8 - i32.const 1 - i32.sub - local.set $0 - loop $for-loop|042 - local.get $0 - i32.const 0 - i32.ge_s - if - local.get $0 - local.get $2 - i32.add - i32.load8_u - local.set $1 - i32.const 4 - global.set $~argumentsLength - local.get $5 - local.get $1 - local.get $0 - local.get $4 - i32.const 3312 - i32.load - call_indirect $0 (type $i32_i32_i32_i32_=>_i32) - local.set $5 - local.get $0 - i32.const 1 - i32.sub - local.set $0 - br $for-loop|042 - end - end - local.get $5 - i32.const 255 - i32.and - i32.const 6 - i32.ne - br_if $folding-inner5 - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 15924 - i32.lt_s - br_if $folding-inner14 - global.get $~lib/memory/__stack_pointer - local.tee $1 - i64.const 0 - i64.store - local.get $1 - i32.const 3 - call $~lib/typedarray/Int16Array#constructor - local.tee $4 - i32.store - local.get $4 - i32.const 0 - i32.const 1 - call $~lib/typedarray/Int16Array#__set - local.get $4 - i32.const 1 - i32.const 2 - call $~lib/typedarray/Int16Array#__set - local.get $4 - i32.const 2 - i32.const 3 - call $~lib/typedarray/Int16Array#__set - global.get $~lib/memory/__stack_pointer - i32.const 3344 - i32.store offset=4 - i32.const 0 - local.set $0 - local.get $4 - i32.load offset=4 - local.set $2 - local.get $4 - i32.load offset=8 - i32.const 1 - i32.shr_u - i32.const 1 - i32.sub - local.set $5 - loop $for-loop|027 - local.get $5 - i32.const 0 - i32.ge_s - if - local.get $2 - local.get $5 - i32.const 1 - i32.shl - i32.add - i32.load16_s - local.set $1 - i32.const 4 - global.set $~argumentsLength - local.get $0 - local.get $1 - local.get $5 - local.get $4 - i32.const 3344 - i32.load - call_indirect $0 (type $i32_i32_i32_i32_=>_i32) - local.set $0 - local.get $5 - i32.const 1 - i32.sub - local.set $5 - br $for-loop|027 - end - end - local.get $0 - i32.const 65535 - i32.and - i32.const 6 - i32.ne - br_if $folding-inner5 - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 15924 - i32.lt_s - br_if $folding-inner14 - global.get $~lib/memory/__stack_pointer - local.tee $1 - i64.const 0 - i64.store - local.get $1 - i32.const 3 - call $~lib/typedarray/Uint16Array#constructor - local.tee $4 - i32.store - local.get $4 - i32.const 0 - i32.const 1 - call $~lib/typedarray/Uint16Array#__set - local.get $4 - i32.const 1 - i32.const 2 - call $~lib/typedarray/Uint16Array#__set - local.get $4 - i32.const 2 - i32.const 3 - call $~lib/typedarray/Uint16Array#__set - global.get $~lib/memory/__stack_pointer - i32.const 3376 - i32.store offset=4 - i32.const 0 - local.set $0 - local.get $4 - i32.load offset=4 - local.set $2 - local.get $4 - i32.load offset=8 - i32.const 1 - i32.shr_u - i32.const 1 - i32.sub - local.set $5 - loop $for-loop|029 - local.get $5 - i32.const 0 - i32.ge_s - if - local.get $2 - local.get $5 - i32.const 1 - i32.shl - i32.add - i32.load16_u - local.set $1 - i32.const 4 - global.set $~argumentsLength - local.get $0 - local.get $1 - local.get $5 - local.get $4 - i32.const 3376 - i32.load - call_indirect $0 (type $i32_i32_i32_i32_=>_i32) - local.set $0 - local.get $5 - i32.const 1 - i32.sub - local.set $5 - br $for-loop|029 - end - end - local.get $0 - i32.const 65535 - i32.and - i32.const 6 - i32.ne - br_if $folding-inner5 - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 15924 - i32.lt_s - br_if $folding-inner14 - global.get $~lib/memory/__stack_pointer - local.tee $1 - i64.const 0 - i64.store - local.get $1 - i32.const 3 - call $~lib/typedarray/Int32Array#constructor - local.tee $4 - i32.store - local.get $4 - i32.const 0 - i32.const 1 - call $~lib/typedarray/Int32Array#__set - local.get $4 - i32.const 1 - i32.const 2 - call $~lib/typedarray/Int32Array#__set - local.get $4 - i32.const 2 - i32.const 3 - call $~lib/typedarray/Int32Array#__set - global.get $~lib/memory/__stack_pointer - i32.const 3408 - i32.store offset=4 - i32.const 0 - local.set $0 - local.get $4 - i32.load offset=4 - local.set $2 - local.get $4 - i32.load offset=8 - i32.const 2 - i32.shr_u - i32.const 1 - i32.sub - local.set $5 - loop $for-loop|031 - local.get $5 - i32.const 0 - i32.ge_s - if - local.get $2 - local.get $5 - i32.const 2 - i32.shl - i32.add - i32.load - local.set $1 - i32.const 4 - global.set $~argumentsLength - local.get $0 - local.get $1 - local.get $5 - local.get $4 - i32.const 3408 - i32.load - call_indirect $0 (type $i32_i32_i32_i32_=>_i32) - local.set $0 - local.get $5 - i32.const 1 - i32.sub - local.set $5 - br $for-loop|031 - end - end - local.get $0 - i32.const 6 - i32.ne - br_if $folding-inner5 - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 15924 - i32.lt_s - br_if $folding-inner14 - global.get $~lib/memory/__stack_pointer - local.tee $1 - i64.const 0 - i64.store - local.get $1 - i32.const 3 - call $~lib/typedarray/Uint32Array#constructor - local.tee $4 - i32.store - local.get $4 - i32.const 0 - i32.const 1 - call $~lib/typedarray/Uint32Array#__set - local.get $4 - i32.const 1 - i32.const 2 - call $~lib/typedarray/Uint32Array#__set - local.get $4 - i32.const 2 - i32.const 3 - call $~lib/typedarray/Uint32Array#__set - global.get $~lib/memory/__stack_pointer - i32.const 3440 - i32.store offset=4 - i32.const 0 - local.set $0 - local.get $4 - i32.load offset=4 - local.set $2 - local.get $4 - i32.load offset=8 - i32.const 2 - i32.shr_u - i32.const 1 - i32.sub - local.set $5 - loop $for-loop|033 - local.get $5 - i32.const 0 - i32.ge_s - if - local.get $2 - local.get $5 - i32.const 2 - i32.shl - i32.add - i32.load - local.set $1 - i32.const 4 - global.set $~argumentsLength - local.get $0 - local.get $1 - local.get $5 - local.get $4 - i32.const 3440 - i32.load - call_indirect $0 (type $i32_i32_i32_i32_=>_i32) - local.set $0 - local.get $5 - i32.const 1 - i32.sub - local.set $5 - br $for-loop|033 - end - end - local.get $0 - i32.const 6 - i32.ne - br_if $folding-inner5 - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 15924 - i32.lt_s - br_if $folding-inner14 - global.get $~lib/memory/__stack_pointer - local.tee $1 - i64.const 0 - i64.store - local.get $1 - i32.const 3 - call $~lib/typedarray/Int64Array#constructor - local.tee $0 - i32.store - local.get $0 - i32.const 0 - i64.const 1 - call $~lib/typedarray/Int64Array#__set - local.get $0 - i32.const 1 - i64.const 2 - call $~lib/typedarray/Int64Array#__set - local.get $0 - i32.const 2 - i64.const 3 - call $~lib/typedarray/Int64Array#__set - global.get $~lib/memory/__stack_pointer - i32.const 3472 - i32.store offset=4 - i64.const 0 - local.set $13 - local.get $0 - i32.load offset=4 - local.set $1 - local.get $0 - i32.load offset=8 - i32.const 3 - i32.shr_u - i32.const 1 - i32.sub - local.set $5 - loop $for-loop|035 - local.get $5 - i32.const 0 - i32.ge_s - if - local.get $1 - local.get $5 - i32.const 3 - i32.shl - i32.add - i64.load - local.set $10 - i32.const 4 - global.set $~argumentsLength - local.get $13 - local.get $10 - local.get $5 - local.get $0 - i32.const 3472 - i32.load - call_indirect $0 (type $i64_i64_i32_i32_=>_i64) - local.set $13 - local.get $5 - i32.const 1 - i32.sub - local.set $5 - br $for-loop|035 - end - end - local.get $13 - i64.const 6 - i64.ne - br_if $folding-inner5 - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 15924 - i32.lt_s - br_if $folding-inner14 - global.get $~lib/memory/__stack_pointer - local.tee $1 - i64.const 0 - i64.store - local.get $1 - i32.const 3 - call $~lib/typedarray/Uint64Array#constructor - local.tee $0 - i32.store - local.get $0 - i32.const 0 - i64.const 1 - call $~lib/typedarray/Uint64Array#__set - local.get $0 - i32.const 1 - i64.const 2 - call $~lib/typedarray/Uint64Array#__set - local.get $0 - i32.const 2 - i64.const 3 - call $~lib/typedarray/Uint64Array#__set - global.get $~lib/memory/__stack_pointer - i32.const 3504 - i32.store offset=4 - i64.const 0 - local.set $13 - local.get $0 - i32.load offset=4 - local.set $1 - local.get $0 - i32.load offset=8 - i32.const 3 - i32.shr_u - i32.const 1 - i32.sub - local.set $5 - loop $for-loop|037 - local.get $5 - i32.const 0 - i32.ge_s - if - local.get $1 - local.get $5 - i32.const 3 - i32.shl - i32.add - i64.load - local.set $10 - i32.const 4 - global.set $~argumentsLength - local.get $13 - local.get $10 - local.get $5 - local.get $0 - i32.const 3504 - i32.load - call_indirect $0 (type $i64_i64_i32_i32_=>_i64) - local.set $13 - local.get $5 - i32.const 1 - i32.sub - local.set $5 - br $for-loop|037 - end - end - local.get $13 - i64.const 6 - i64.ne - br_if $folding-inner5 - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 15924 - i32.lt_s - br_if $folding-inner14 - global.get $~lib/memory/__stack_pointer - local.tee $1 - i64.const 0 - i64.store - local.get $1 - i32.const 3 - call $~lib/typedarray/Float32Array#constructor - local.tee $0 - i32.store - local.get $0 - i32.const 0 - f32.const 1 - call $~lib/typedarray/Float32Array#__set - local.get $0 - i32.const 1 - f32.const 2 - call $~lib/typedarray/Float32Array#__set - local.get $0 - i32.const 2 - f32.const 3 - call $~lib/typedarray/Float32Array#__set - global.get $~lib/memory/__stack_pointer - i32.const 3536 - i32.store offset=4 - f32.const 0 - local.set $14 - local.get $0 - i32.load offset=4 - local.set $1 - local.get $0 - i32.load offset=8 - i32.const 2 - i32.shr_u - i32.const 1 - i32.sub - local.set $5 - loop $for-loop|03950 - local.get $5 - i32.const 0 - i32.ge_s - if - local.get $1 - local.get $5 - i32.const 2 - i32.shl - i32.add - f32.load - local.set $11 - i32.const 4 - global.set $~argumentsLength - local.get $14 - local.get $11 - local.get $5 - local.get $0 - i32.const 3536 - i32.load - call_indirect $0 (type $f32_f32_i32_i32_=>_f32) - local.set $14 - local.get $5 - i32.const 1 - i32.sub - local.set $5 - br $for-loop|03950 - end - end - local.get $14 - f32.const 6 - f32.ne - br_if $folding-inner5 - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 15924 - i32.lt_s - br_if $folding-inner14 - global.get $~lib/memory/__stack_pointer - local.tee $1 - i64.const 0 - i64.store - local.get $1 - i32.const 3 - call $~lib/typedarray/Float64Array#constructor - local.tee $0 - i32.store - local.get $0 - i32.const 0 - f64.const 1 - call $~lib/typedarray/Float64Array#__set - local.get $0 - i32.const 1 - f64.const 2 - call $~lib/typedarray/Float64Array#__set - local.get $0 - i32.const 2 - f64.const 3 - call $~lib/typedarray/Float64Array#__set - global.get $~lib/memory/__stack_pointer - i32.const 3568 - i32.store offset=4 - f64.const 0 - local.set $15 - local.get $0 - i32.load offset=4 - local.set $1 - local.get $0 - i32.load offset=8 - i32.const 3 - i32.shr_u - i32.const 1 - i32.sub - local.set $5 - loop $for-loop|041 - local.get $5 - i32.const 0 - i32.ge_s - if - local.get $1 - local.get $5 - i32.const 3 - i32.shl - i32.add - f64.load - local.set $12 - i32.const 4 - global.set $~argumentsLength - local.get $15 - local.get $12 - local.get $5 - local.get $0 - i32.const 3568 - i32.load - call_indirect $0 (type $f64_f64_i32_i32_=>_f64) - local.set $15 - local.get $5 - i32.const 1 - i32.sub - local.set $5 - br $for-loop|041 - end - end - local.get $15 - f64.const 6 - f64.ne - br_if $folding-inner5 - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 15924 - i32.lt_s - br_if $folding-inner14 - global.get $~lib/memory/__stack_pointer - local.tee $1 - i64.const 0 - i64.store - local.get $1 - i32.const 0 - i32.store offset=8 - local.get $1 - i32.const 3 - call $~lib/typedarray/Int8Array#constructor - local.tee $5 - i32.store - local.get $5 - i32.const 0 - i32.const 1 - call $~lib/typedarray/Int8Array#__set - local.get $5 - i32.const 1 - i32.const 2 - call $~lib/typedarray/Int8Array#__set - local.get $5 - i32.const 2 - i32.const 3 - call $~lib/typedarray/Int8Array#__set - global.get $~lib/memory/__stack_pointer - local.tee $2 - i32.const 3600 - i32.store offset=4 - local.get $2 - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 15924 - i32.lt_s - br_if $folding-inner14 - global.get $~lib/memory/__stack_pointer - local.tee $1 - i64.const 0 - i64.store - local.get $5 - i32.load offset=4 - local.set $0 - local.get $5 - i32.load offset=8 - local.set $4 - local.get $1 - i32.const 12 - i32.const 3 - call $~lib/rt/itcms/__new - local.tee $6 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $4 - i32.const 0 - call $~lib/rt/itcms/__new - local.tee $3 - i32.store offset=4 - loop $for-loop|02 - local.get $4 - local.get $7 - i32.gt_s - if - local.get $0 - local.get $7 - i32.add - i32.load8_s - local.set $1 - i32.const 3 - global.set $~argumentsLength - local.get $3 - local.get $7 - i32.add - local.get $1 - local.get $7 - local.get $5 - i32.const 3600 - i32.load - call_indirect $0 (type $i32_i32_i32_=>_i32) - i32.store8 - local.get $7 - i32.const 1 - i32.add - local.set $7 - br $for-loop|02 - end - end - local.get $6 - local.get $3 - i32.store - local.get $6 - local.get $3 - call $~lib/rt/itcms/__link - local.get $6 - local.get $3 - i32.store offset=4 - local.get $6 - local.get $4 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $2 - local.get $6 - i32.store offset=8 - local.get $6 - i32.const 0 - call $~lib/typedarray/Int8Array#__get - i32.const 1 - i32.ne - br_if $folding-inner16 - local.get $6 - i32.const 1 - call $~lib/typedarray/Int8Array#__get - i32.const 4 - i32.ne - br_if $folding-inner17 - local.get $6 - i32.const 2 - call $~lib/typedarray/Int8Array#__get - i32.const 9 - i32.ne - br_if $folding-inner18 - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.add - global.set $~lib/memory/__stack_pointer - i32.const 0 - local.set $7 - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 15924 - i32.lt_s - br_if $folding-inner14 - global.get $~lib/memory/__stack_pointer - local.tee $1 - i64.const 0 - i64.store - local.get $1 - i32.const 0 - i32.store offset=8 - local.get $1 - i32.const 3 - call $~lib/typedarray/Uint8Array#constructor - local.tee $5 - i32.store - local.get $5 - i32.const 0 - i32.const 1 - call $~lib/typedarray/Uint8Array#__set - local.get $5 - i32.const 1 - i32.const 2 - call $~lib/typedarray/Uint8Array#__set - local.get $5 - i32.const 2 - i32.const 3 - call $~lib/typedarray/Uint8Array#__set - global.get $~lib/memory/__stack_pointer - local.tee $2 - i32.const 3632 - i32.store offset=4 - local.get $2 - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 15924 - i32.lt_s - br_if $folding-inner14 - global.get $~lib/memory/__stack_pointer - local.tee $1 - i64.const 0 - i64.store - local.get $5 - i32.load offset=4 - local.set $0 - local.get $5 - i32.load offset=8 - local.set $4 - local.get $1 - i32.const 12 - i32.const 4 - call $~lib/rt/itcms/__new - local.tee $6 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $4 - i32.const 0 - call $~lib/rt/itcms/__new - local.tee $3 - i32.store offset=4 - loop $for-loop|04 - local.get $4 - local.get $7 - i32.gt_s - if - local.get $0 - local.get $7 - i32.add - i32.load8_u - local.set $1 - i32.const 3 - global.set $~argumentsLength - local.get $3 - local.get $7 - i32.add - local.get $1 - local.get $7 - local.get $5 - i32.const 3632 - i32.load - call_indirect $0 (type $i32_i32_i32_=>_i32) - i32.store8 - local.get $7 - i32.const 1 - i32.add - local.set $7 - br $for-loop|04 - end - end - local.get $6 - local.get $3 - i32.store - local.get $6 - local.get $3 - call $~lib/rt/itcms/__link - local.get $6 - local.get $3 - i32.store offset=4 - local.get $6 - local.get $4 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $2 - local.get $6 - i32.store offset=8 - local.get $6 - i32.const 0 - call $~lib/typedarray/Uint8Array#__get - i32.const 1 - i32.ne - br_if $folding-inner16 - local.get $6 - i32.const 1 - call $~lib/typedarray/Uint8Array#__get - i32.const 4 - i32.ne - br_if $folding-inner17 - local.get $6 - i32.const 2 - call $~lib/typedarray/Uint8Array#__get - i32.const 9 - i32.ne - br_if $folding-inner18 - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.add - global.set $~lib/memory/__stack_pointer - i32.const 0 - local.set $7 - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 15924 - i32.lt_s - br_if $folding-inner14 - global.get $~lib/memory/__stack_pointer - local.tee $1 - i64.const 0 - i64.store - local.get $1 - i32.const 0 - i32.store offset=8 - local.get $1 - i32.const 3 - call $~lib/typedarray/Uint8ClampedArray#constructor - local.tee $5 - i32.store - local.get $5 - i32.const 0 - i32.const 1 - call $~lib/typedarray/Uint8ClampedArray#__set - local.get $5 - i32.const 1 - i32.const 2 - call $~lib/typedarray/Uint8ClampedArray#__set - local.get $5 - i32.const 2 - i32.const 3 - call $~lib/typedarray/Uint8ClampedArray#__set - global.get $~lib/memory/__stack_pointer - local.tee $2 - i32.const 3664 - i32.store offset=4 - local.get $2 - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 15924 - i32.lt_s - br_if $folding-inner14 - global.get $~lib/memory/__stack_pointer - local.tee $1 - i64.const 0 - i64.store - local.get $5 - i32.load offset=4 - local.set $0 - local.get $5 - i32.load offset=8 - local.set $4 - local.get $1 - i32.const 12 - i32.const 5 - call $~lib/rt/itcms/__new - local.tee $6 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $4 - i32.const 0 - call $~lib/rt/itcms/__new - local.tee $3 - i32.store offset=4 - loop $for-loop|06 - local.get $4 - local.get $7 - i32.gt_s - if - local.get $0 - local.get $7 - i32.add - i32.load8_u - local.set $1 - i32.const 3 - global.set $~argumentsLength - local.get $3 - local.get $7 - i32.add - local.get $1 - local.get $7 - local.get $5 - i32.const 3664 - i32.load - call_indirect $0 (type $i32_i32_i32_=>_i32) - i32.store8 - local.get $7 - i32.const 1 - i32.add - local.set $7 - br $for-loop|06 - end - end - local.get $6 - local.get $3 - i32.store - local.get $6 - local.get $3 - call $~lib/rt/itcms/__link - local.get $6 - local.get $3 - i32.store offset=4 - local.get $6 - local.get $4 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $2 - local.get $6 - i32.store offset=8 - local.get $6 - i32.const 0 - call $~lib/typedarray/Uint8ClampedArray#__get - i32.const 1 - i32.ne - br_if $folding-inner16 - local.get $6 - i32.const 1 - call $~lib/typedarray/Uint8ClampedArray#__get - i32.const 4 - i32.ne - br_if $folding-inner17 - local.get $6 - i32.const 2 - call $~lib/typedarray/Uint8ClampedArray#__get - i32.const 9 - i32.ne - br_if $folding-inner18 - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.add - global.set $~lib/memory/__stack_pointer - i32.const 0 - local.set $9 - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 15924 - i32.lt_s - br_if $folding-inner14 - global.get $~lib/memory/__stack_pointer - local.tee $1 - i64.const 0 - i64.store - local.get $1 - i32.const 0 - i32.store offset=8 - local.get $1 - i32.const 3 - call $~lib/typedarray/Int16Array#constructor - local.tee $8 - i32.store - local.get $8 - i32.const 0 - i32.const 1 - call $~lib/typedarray/Int16Array#__set - local.get $8 - i32.const 1 - i32.const 2 - call $~lib/typedarray/Int16Array#__set - local.get $8 - i32.const 2 - i32.const 3 - call $~lib/typedarray/Int16Array#__set - global.get $~lib/memory/__stack_pointer - local.tee $5 - i32.const 3696 - i32.store offset=4 - local.get $5 - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 15924 - i32.lt_s - br_if $folding-inner14 - global.get $~lib/memory/__stack_pointer - local.tee $1 - i64.const 0 - i64.store - local.get $8 - i32.load offset=4 - local.set $4 - local.get $8 - i32.load offset=8 - i32.const 1 - i32.shr_u - local.set $3 - local.get $1 - i32.const 12 - i32.const 6 - call $~lib/rt/itcms/__new - local.tee $7 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $3 - i32.const 1 - i32.shl - local.tee $2 - i32.const 0 - call $~lib/rt/itcms/__new - local.tee $6 - i32.store offset=4 - loop $for-loop|015 - local.get $3 - local.get $9 - i32.gt_s - if - local.get $4 - local.get $9 - i32.const 1 - i32.shl - local.tee $0 - i32.add - i32.load16_s - local.set $1 - i32.const 3 - global.set $~argumentsLength - local.get $0 - local.get $6 - i32.add - local.get $1 - local.get $9 - local.get $8 - i32.const 3696 - i32.load - call_indirect $0 (type $i32_i32_i32_=>_i32) - i32.store16 - local.get $9 - i32.const 1 - i32.add - local.set $9 - br $for-loop|015 - end - end - local.get $7 - local.get $6 - i32.store - local.get $7 - local.get $6 - call $~lib/rt/itcms/__link - local.get $7 - local.get $6 - i32.store offset=4 - local.get $7 - local.get $2 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $5 - local.get $7 - i32.store offset=8 - local.get $7 - i32.const 0 - call $~lib/typedarray/Int16Array#__get - i32.const 1 - i32.ne - br_if $folding-inner16 - local.get $7 - i32.const 1 - call $~lib/typedarray/Int16Array#__get - i32.const 4 - i32.ne - br_if $folding-inner17 - local.get $7 - i32.const 2 - call $~lib/typedarray/Int16Array#__get - i32.const 9 - i32.ne - br_if $folding-inner18 - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.add - global.set $~lib/memory/__stack_pointer - i32.const 0 - local.set $9 - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 15924 - i32.lt_s - br_if $folding-inner14 - global.get $~lib/memory/__stack_pointer - local.tee $1 - i64.const 0 - i64.store - local.get $1 - i32.const 0 - i32.store offset=8 - local.get $1 - i32.const 3 - call $~lib/typedarray/Uint16Array#constructor - local.tee $8 - i32.store - local.get $8 - i32.const 0 - i32.const 1 - call $~lib/typedarray/Uint16Array#__set - local.get $8 - i32.const 1 - i32.const 2 - call $~lib/typedarray/Uint16Array#__set - local.get $8 - i32.const 2 - i32.const 3 - call $~lib/typedarray/Uint16Array#__set - global.get $~lib/memory/__stack_pointer - local.tee $5 - i32.const 3728 - i32.store offset=4 - local.get $5 - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 15924 - i32.lt_s - br_if $folding-inner14 - global.get $~lib/memory/__stack_pointer - local.tee $1 - i64.const 0 - i64.store - local.get $8 - i32.load offset=4 - local.set $4 - local.get $8 - i32.load offset=8 - i32.const 1 - i32.shr_u - local.set $3 - local.get $1 - i32.const 12 - i32.const 7 - call $~lib/rt/itcms/__new - local.tee $7 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $3 - i32.const 1 - i32.shl - local.tee $2 - i32.const 0 - call $~lib/rt/itcms/__new - local.tee $6 - i32.store offset=4 - loop $for-loop|017 - local.get $3 - local.get $9 - i32.gt_s - if - local.get $4 - local.get $9 - i32.const 1 - i32.shl - local.tee $0 - i32.add - i32.load16_u - local.set $1 - i32.const 3 - global.set $~argumentsLength - local.get $0 - local.get $6 - i32.add - local.get $1 - local.get $9 - local.get $8 - i32.const 3728 - i32.load - call_indirect $0 (type $i32_i32_i32_=>_i32) - i32.store16 - local.get $9 - i32.const 1 - i32.add - local.set $9 - br $for-loop|017 - end - end - local.get $7 - local.get $6 - i32.store - local.get $7 - local.get $6 - call $~lib/rt/itcms/__link - local.get $7 - local.get $6 - i32.store offset=4 - local.get $7 - local.get $2 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $5 - local.get $7 - i32.store offset=8 - local.get $7 - i32.const 0 - call $~lib/typedarray/Uint16Array#__get - i32.const 1 - i32.ne - br_if $folding-inner16 - local.get $7 - i32.const 1 - call $~lib/typedarray/Uint16Array#__get - i32.const 4 - i32.ne - br_if $folding-inner17 - local.get $7 - i32.const 2 - call $~lib/typedarray/Uint16Array#__get - i32.const 9 - i32.ne - br_if $folding-inner18 - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.add - global.set $~lib/memory/__stack_pointer - i32.const 0 - local.set $9 - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 15924 - i32.lt_s - br_if $folding-inner14 - global.get $~lib/memory/__stack_pointer - local.tee $1 - i64.const 0 - i64.store - local.get $1 - i32.const 0 - i32.store offset=8 - local.get $1 - i32.const 3 - call $~lib/typedarray/Int32Array#constructor - local.tee $8 - i32.store - local.get $8 - i32.const 0 - i32.const 1 - call $~lib/typedarray/Int32Array#__set - local.get $8 - i32.const 1 - i32.const 2 - call $~lib/typedarray/Int32Array#__set - local.get $8 - i32.const 2 - i32.const 3 - call $~lib/typedarray/Int32Array#__set - global.get $~lib/memory/__stack_pointer - local.tee $5 - i32.const 3760 - i32.store offset=4 - local.get $5 - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 15924 - i32.lt_s - br_if $folding-inner14 - global.get $~lib/memory/__stack_pointer - local.tee $1 - i64.const 0 - i64.store - local.get $8 - i32.load offset=4 - local.set $4 - local.get $8 - i32.load offset=8 - i32.const 2 - i32.shr_u - local.set $3 - local.get $1 - i32.const 12 - i32.const 8 - call $~lib/rt/itcms/__new - local.tee $7 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $3 - i32.const 2 - i32.shl - local.tee $2 - i32.const 0 - call $~lib/rt/itcms/__new - local.tee $6 - i32.store offset=4 - loop $for-loop|019 - local.get $3 - local.get $9 - i32.gt_s - if - local.get $4 - local.get $9 - i32.const 2 - i32.shl - local.tee $0 - i32.add - i32.load - local.set $1 - i32.const 3 - global.set $~argumentsLength - local.get $0 - local.get $6 - i32.add - local.get $1 - local.get $9 - local.get $8 - i32.const 3760 - i32.load - call_indirect $0 (type $i32_i32_i32_=>_i32) - i32.store - local.get $9 - i32.const 1 - i32.add - local.set $9 - br $for-loop|019 - end - end - local.get $7 - local.get $6 - i32.store - local.get $7 - local.get $6 - call $~lib/rt/itcms/__link - local.get $7 - local.get $6 - i32.store offset=4 - local.get $7 - local.get $2 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $5 - local.get $7 - i32.store offset=8 - local.get $7 - i32.const 0 - call $~lib/typedarray/Int32Array#__get - i32.const 1 - i32.ne - br_if $folding-inner16 - local.get $7 - i32.const 1 - call $~lib/typedarray/Int32Array#__get - i32.const 4 - i32.ne - br_if $folding-inner17 - local.get $7 - i32.const 2 - call $~lib/typedarray/Int32Array#__get - i32.const 9 - i32.ne - br_if $folding-inner18 - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.add - global.set $~lib/memory/__stack_pointer - i32.const 0 - local.set $9 - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 15924 - i32.lt_s - br_if $folding-inner14 - global.get $~lib/memory/__stack_pointer - local.tee $1 - i64.const 0 - i64.store - local.get $1 - i32.const 0 - i32.store offset=8 - local.get $1 - i32.const 3 - call $~lib/typedarray/Uint32Array#constructor - local.tee $8 - i32.store - local.get $8 - i32.const 0 - i32.const 1 - call $~lib/typedarray/Uint32Array#__set - local.get $8 - i32.const 1 - i32.const 2 - call $~lib/typedarray/Uint32Array#__set - local.get $8 - i32.const 2 - i32.const 3 - call $~lib/typedarray/Uint32Array#__set - global.get $~lib/memory/__stack_pointer - local.tee $5 - i32.const 3792 - i32.store offset=4 - local.get $5 - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 15924 - i32.lt_s - br_if $folding-inner14 - global.get $~lib/memory/__stack_pointer - local.tee $1 - i64.const 0 - i64.store - local.get $8 - i32.load offset=4 - local.set $4 - local.get $8 - i32.load offset=8 - i32.const 2 - i32.shr_u - local.set $3 - local.get $1 - i32.const 12 - i32.const 9 - call $~lib/rt/itcms/__new - local.tee $7 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $3 - i32.const 2 - i32.shl - local.tee $2 - i32.const 0 - call $~lib/rt/itcms/__new - local.tee $6 - i32.store offset=4 - loop $for-loop|022 - local.get $3 - local.get $9 - i32.gt_s - if - local.get $4 - local.get $9 - i32.const 2 - i32.shl - local.tee $0 - i32.add - i32.load - local.set $1 - i32.const 3 - global.set $~argumentsLength - local.get $0 - local.get $6 - i32.add - local.get $1 - local.get $9 - local.get $8 - i32.const 3792 - i32.load - call_indirect $0 (type $i32_i32_i32_=>_i32) - i32.store - local.get $9 - i32.const 1 - i32.add - local.set $9 - br $for-loop|022 - end - end - local.get $7 - local.get $6 - i32.store - local.get $7 - local.get $6 - call $~lib/rt/itcms/__link - local.get $7 - local.get $6 - i32.store offset=4 - local.get $7 - local.get $2 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $5 - local.get $7 - i32.store offset=8 - local.get $7 - i32.const 0 - call $~lib/typedarray/Uint32Array#__get - i32.const 1 - i32.ne - br_if $folding-inner16 - local.get $7 - i32.const 1 - call $~lib/typedarray/Uint32Array#__get - i32.const 4 - i32.ne - br_if $folding-inner17 - local.get $7 - i32.const 2 - call $~lib/typedarray/Uint32Array#__get - i32.const 9 - i32.ne - br_if $folding-inner18 - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.add - global.set $~lib/memory/__stack_pointer - i32.const 0 - local.set $7 - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 15924 - i32.lt_s - br_if $folding-inner14 - global.get $~lib/memory/__stack_pointer - local.tee $1 - i64.const 0 - i64.store - local.get $1 - i32.const 0 - i32.store offset=8 - local.get $1 - i32.const 3 - call $~lib/typedarray/Int64Array#constructor - local.tee $6 - i32.store - local.get $6 - i32.const 0 - i64.const 1 - call $~lib/typedarray/Int64Array#__set - local.get $6 - i32.const 1 - i64.const 2 - call $~lib/typedarray/Int64Array#__set - local.get $6 - i32.const 2 - i64.const 3 - call $~lib/typedarray/Int64Array#__set - global.get $~lib/memory/__stack_pointer - local.tee $3 - i32.const 3824 - i32.store offset=4 - local.get $3 - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 15924 - i32.lt_s - br_if $folding-inner14 - global.get $~lib/memory/__stack_pointer - local.tee $1 - i64.const 0 - i64.store - local.get $6 - i32.load offset=4 - local.set $2 - local.get $6 - i32.load offset=8 - i32.const 3 - i32.shr_u - local.set $4 - local.get $1 - i32.const 12 - i32.const 10 - call $~lib/rt/itcms/__new - local.tee $8 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $4 - i32.const 3 - i32.shl - local.tee $0 - i32.const 0 - call $~lib/rt/itcms/__new - local.tee $5 - i32.store offset=4 - loop $for-loop|024 - local.get $4 - local.get $7 - i32.gt_s - if - local.get $2 - local.get $7 - i32.const 3 - i32.shl - local.tee $1 - i32.add - i64.load - local.set $10 - i32.const 3 - global.set $~argumentsLength - local.get $1 - local.get $5 - i32.add - local.get $10 - local.get $7 - local.get $6 - i32.const 3824 - i32.load - call_indirect $0 (type $i64_i32_i32_=>_i64) - i64.store - local.get $7 - i32.const 1 - i32.add - local.set $7 - br $for-loop|024 - end - end - local.get $8 - local.get $5 - i32.store - local.get $8 - local.get $5 - call $~lib/rt/itcms/__link - local.get $8 - local.get $5 - i32.store offset=4 - local.get $8 - local.get $0 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $3 - local.get $8 - i32.store offset=8 - local.get $8 - i32.const 0 - call $~lib/typedarray/Int64Array#__get - i64.const 1 - i64.ne - br_if $folding-inner16 - local.get $8 - i32.const 1 - call $~lib/typedarray/Int64Array#__get - i64.const 4 - i64.ne - br_if $folding-inner17 - local.get $8 - i32.const 2 - call $~lib/typedarray/Int64Array#__get - i64.const 9 - i64.ne - br_if $folding-inner18 - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.add - global.set $~lib/memory/__stack_pointer - i32.const 0 - local.set $7 - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 15924 - i32.lt_s - br_if $folding-inner14 - global.get $~lib/memory/__stack_pointer - local.tee $1 - i64.const 0 - i64.store - local.get $1 - i32.const 0 - i32.store offset=8 - local.get $1 - i32.const 3 - call $~lib/typedarray/Uint64Array#constructor - local.tee $6 - i32.store - local.get $6 - i32.const 0 - i64.const 1 - call $~lib/typedarray/Uint64Array#__set - local.get $6 - i32.const 1 - i64.const 2 - call $~lib/typedarray/Uint64Array#__set - local.get $6 - i32.const 2 - i64.const 3 - call $~lib/typedarray/Uint64Array#__set - global.get $~lib/memory/__stack_pointer - local.tee $3 - i32.const 3856 - i32.store offset=4 - local.get $3 - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 15924 - i32.lt_s - br_if $folding-inner14 - global.get $~lib/memory/__stack_pointer - local.tee $1 - i64.const 0 - i64.store - local.get $6 - i32.load offset=4 - local.set $2 - local.get $6 - i32.load offset=8 - i32.const 3 - i32.shr_u - local.set $4 - local.get $1 - i32.const 12 - i32.const 11 - call $~lib/rt/itcms/__new - local.tee $8 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $4 - i32.const 3 - i32.shl - local.tee $0 - i32.const 0 - call $~lib/rt/itcms/__new - local.tee $5 - i32.store offset=4 - loop $for-loop|026 - local.get $4 - local.get $7 - i32.gt_s - if - local.get $2 - local.get $7 - i32.const 3 - i32.shl - local.tee $1 - i32.add - i64.load - local.set $10 - i32.const 3 - global.set $~argumentsLength - local.get $1 - local.get $5 - i32.add - local.get $10 - local.get $7 - local.get $6 - i32.const 3856 - i32.load - call_indirect $0 (type $i64_i32_i32_=>_i64) - i64.store - local.get $7 - i32.const 1 - i32.add - local.set $7 - br $for-loop|026 - end - end - local.get $8 - local.get $5 - i32.store - local.get $8 - local.get $5 - call $~lib/rt/itcms/__link - local.get $8 - local.get $5 - i32.store offset=4 - local.get $8 - local.get $0 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $3 - local.get $8 - i32.store offset=8 - local.get $8 - i32.const 0 - call $~lib/typedarray/Uint64Array#__get - i64.const 1 - i64.ne - br_if $folding-inner16 - local.get $8 - i32.const 1 - call $~lib/typedarray/Uint64Array#__get - i64.const 4 - i64.ne - br_if $folding-inner17 - local.get $8 - i32.const 2 - call $~lib/typedarray/Uint64Array#__get - i64.const 9 - i64.ne - br_if $folding-inner18 - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.add - global.set $~lib/memory/__stack_pointer - i32.const 0 - local.set $7 - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 15924 - i32.lt_s - br_if $folding-inner14 - global.get $~lib/memory/__stack_pointer - local.tee $1 - i64.const 0 - i64.store - local.get $1 - i32.const 0 - i32.store offset=8 - local.get $1 - i32.const 3 - call $~lib/typedarray/Float32Array#constructor - local.tee $6 - i32.store - local.get $6 - i32.const 0 - f32.const 1 - call $~lib/typedarray/Float32Array#__set - local.get $6 - i32.const 1 - f32.const 2 - call $~lib/typedarray/Float32Array#__set - local.get $6 - i32.const 2 - f32.const 3 - call $~lib/typedarray/Float32Array#__set - global.get $~lib/memory/__stack_pointer - local.tee $3 - i32.const 3888 - i32.store offset=4 - local.get $3 - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 15924 - i32.lt_s - br_if $folding-inner14 - global.get $~lib/memory/__stack_pointer - local.tee $1 - i64.const 0 - i64.store - local.get $6 - i32.load offset=4 - local.set $2 - local.get $6 - i32.load offset=8 - i32.const 2 - i32.shr_u - local.set $4 - local.get $1 - i32.const 12 - i32.const 12 - call $~lib/rt/itcms/__new - local.tee $8 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $4 - i32.const 2 - i32.shl - local.tee $0 - i32.const 0 - call $~lib/rt/itcms/__new - local.tee $5 - i32.store offset=4 - loop $for-loop|028 - local.get $4 - local.get $7 - i32.gt_s - if - local.get $2 - local.get $7 - i32.const 2 - i32.shl - local.tee $1 - i32.add - f32.load - local.set $11 - i32.const 3 - global.set $~argumentsLength - local.get $1 - local.get $5 - i32.add - local.get $11 - local.get $7 - local.get $6 - i32.const 3888 - i32.load - call_indirect $0 (type $f32_i32_i32_=>_f32) - f32.store - local.get $7 - i32.const 1 - i32.add - local.set $7 - br $for-loop|028 - end - end - local.get $8 - local.get $5 - i32.store - local.get $8 - local.get $5 - call $~lib/rt/itcms/__link - local.get $8 - local.get $5 - i32.store offset=4 - local.get $8 - local.get $0 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $3 - local.get $8 - i32.store offset=8 - local.get $8 - i32.const 0 - call $~lib/typedarray/Float32Array#__get - f32.const 1 - f32.ne - br_if $folding-inner16 - local.get $8 - i32.const 1 - call $~lib/typedarray/Float32Array#__get - f32.const 4 - f32.ne - br_if $folding-inner17 - local.get $8 - i32.const 2 - call $~lib/typedarray/Float32Array#__get - f32.const 9 - f32.ne - br_if $folding-inner18 - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.add - global.set $~lib/memory/__stack_pointer - i32.const 0 - local.set $7 - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 15924 - i32.lt_s - br_if $folding-inner14 - global.get $~lib/memory/__stack_pointer - local.tee $1 - i64.const 0 - i64.store - local.get $1 - i32.const 0 - i32.store offset=8 - local.get $1 - i32.const 3 - call $~lib/typedarray/Float64Array#constructor - local.tee $6 - i32.store - local.get $6 - i32.const 0 - f64.const 1 - call $~lib/typedarray/Float64Array#__set - local.get $6 - i32.const 1 - f64.const 2 - call $~lib/typedarray/Float64Array#__set - local.get $6 - i32.const 2 - f64.const 3 - call $~lib/typedarray/Float64Array#__set - global.get $~lib/memory/__stack_pointer - local.tee $3 - i32.const 3920 - i32.store offset=4 - local.get $3 - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 15924 - i32.lt_s - br_if $folding-inner14 - global.get $~lib/memory/__stack_pointer - local.tee $1 - i64.const 0 - i64.store - local.get $6 - i32.load offset=4 - local.set $2 - local.get $6 - i32.load offset=8 - i32.const 3 - i32.shr_u - local.set $4 - local.get $1 - i32.const 12 - i32.const 13 - call $~lib/rt/itcms/__new - local.tee $8 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $4 - i32.const 3 - i32.shl - local.tee $0 - i32.const 0 - call $~lib/rt/itcms/__new - local.tee $5 - i32.store offset=4 - loop $for-loop|030 - local.get $4 - local.get $7 - i32.gt_s - if - local.get $2 - local.get $7 - i32.const 3 - i32.shl - local.tee $1 - i32.add - f64.load - local.set $12 - i32.const 3 - global.set $~argumentsLength - local.get $1 - local.get $5 - i32.add - local.get $12 - local.get $7 - local.get $6 - i32.const 3920 - i32.load - call_indirect $0 (type $f64_i32_i32_=>_f64) - f64.store - local.get $7 - i32.const 1 - i32.add - local.set $7 - br $for-loop|030 - end - end - local.get $8 - local.get $5 - i32.store - local.get $8 - local.get $5 - call $~lib/rt/itcms/__link - local.get $8 - local.get $5 - i32.store offset=4 - local.get $8 - local.get $0 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $3 - local.get $8 - i32.store offset=8 - local.get $8 - i32.const 0 - call $~lib/typedarray/Float64Array#__get - f64.const 1 - f64.ne - br_if $folding-inner16 - local.get $8 - i32.const 1 - call $~lib/typedarray/Float64Array#__get - f64.const 4 - f64.ne - br_if $folding-inner17 - local.get $8 - i32.const 2 - call $~lib/typedarray/Float64Array#__get - f64.const 9 - f64.ne - br_if $folding-inner18 - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.add - global.set $~lib/memory/__stack_pointer - call $std/typedarray/testArrayFilter<~lib/typedarray/Int8Array,i8> - call $std/typedarray/testArrayFilter<~lib/typedarray/Uint8Array,u8> - call $std/typedarray/testArrayFilter<~lib/typedarray/Uint8ClampedArray,u8> - call $std/typedarray/testArrayFilter<~lib/typedarray/Int16Array,i16> - call $std/typedarray/testArrayFilter<~lib/typedarray/Uint16Array,u16> - call $std/typedarray/testArrayFilter<~lib/typedarray/Int32Array,i32> - call $std/typedarray/testArrayFilter<~lib/typedarray/Uint32Array,u32> - call $std/typedarray/testArrayFilter<~lib/typedarray/Int64Array,i64> - call $std/typedarray/testArrayFilter<~lib/typedarray/Uint64Array,u64> - call $std/typedarray/testArrayFilter<~lib/typedarray/Float32Array,f32> - call $std/typedarray/testArrayFilter<~lib/typedarray/Float64Array,f64> - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 15924 - i32.lt_s - br_if $folding-inner14 - global.get $~lib/memory/__stack_pointer - local.tee $1 - i64.const 0 - i64.store - local.get $1 - i32.const 3 - call $~lib/typedarray/Int8Array#constructor - local.tee $5 - i32.store - local.get $5 - i32.const 0 - i32.const 2 - call $~lib/typedarray/Int8Array#__set - local.get $5 - i32.const 1 - i32.const 4 - call $~lib/typedarray/Int8Array#__set - local.get $5 - i32.const 2 - i32.const 6 - call $~lib/typedarray/Int8Array#__set - global.get $~lib/memory/__stack_pointer - i32.const 4304 - i32.store offset=4 - i32.const 0 - local.set $0 - block $~lib/typedarray/SOME<~lib/typedarray/Int8Array,i8>|inlined.0 (result i32) - local.get $5 - i32.load offset=4 - local.set $4 - local.get $5 - i32.load offset=8 - local.set $2 - loop $for-loop|053 - local.get $0 - local.get $2 - i32.lt_s - if - local.get $0 - local.get $4 - i32.add - i32.load8_s - local.set $1 - i32.const 3 - global.set $~argumentsLength - i32.const 1 - local.get $1 - local.get $0 - local.get $5 - i32.const 4304 - i32.load - call_indirect $0 (type $i32_i32_i32_=>_i32) - br_if $~lib/typedarray/SOME<~lib/typedarray/Int8Array,i8>|inlined.0 - drop - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|053 - end - end - i32.const 0 - end - i32.eqz - br_if $folding-inner6 - global.get $~lib/memory/__stack_pointer - i32.const 4336 - i32.store offset=4 - i32.const 0 - local.set $0 - block $~lib/typedarray/SOME<~lib/typedarray/Int8Array,i8>|inlined.055 (result i32) - local.get $5 - i32.load offset=4 - local.set $4 - local.get $5 - i32.load offset=8 - local.set $2 - loop $for-loop|056 - local.get $0 - local.get $2 - i32.lt_s - if - local.get $0 - local.get $4 - i32.add - i32.load8_s - local.set $1 - i32.const 3 - global.set $~argumentsLength - i32.const 1 - local.get $1 - local.get $0 - local.get $5 - i32.const 4336 - i32.load - call_indirect $0 (type $i32_i32_i32_=>_i32) - br_if $~lib/typedarray/SOME<~lib/typedarray/Int8Array,i8>|inlined.055 - drop - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|056 - end - end - i32.const 0 - end - br_if $folding-inner7 - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 15924 - i32.lt_s - br_if $folding-inner14 - global.get $~lib/memory/__stack_pointer - local.tee $1 - i64.const 0 - i64.store - local.get $1 - i32.const 3 - call $~lib/typedarray/Uint8Array#constructor - local.tee $5 - i32.store - local.get $5 - i32.const 0 - i32.const 2 - call $~lib/typedarray/Uint8Array#__set - local.get $5 - i32.const 1 - i32.const 4 - call $~lib/typedarray/Uint8Array#__set - local.get $5 - i32.const 2 - i32.const 6 - call $~lib/typedarray/Uint8Array#__set - global.get $~lib/memory/__stack_pointer - i32.const 4368 - i32.store offset=4 - i32.const 0 - local.set $0 - block $~lib/typedarray/SOME<~lib/typedarray/Uint8Array,u8>|inlined.0 (result i32) - local.get $5 - i32.load offset=4 - local.set $4 - local.get $5 - i32.load offset=8 - local.set $2 - loop $for-loop|058 - local.get $0 - local.get $2 - i32.lt_s - if - local.get $0 - local.get $4 - i32.add - i32.load8_u - local.set $1 - i32.const 3 - global.set $~argumentsLength - i32.const 1 - local.get $1 - local.get $0 - local.get $5 - i32.const 4368 - i32.load - call_indirect $0 (type $i32_i32_i32_=>_i32) - br_if $~lib/typedarray/SOME<~lib/typedarray/Uint8Array,u8>|inlined.0 - drop - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|058 - end - end - i32.const 0 - end - i32.eqz - br_if $folding-inner6 - global.get $~lib/memory/__stack_pointer - i32.const 4400 - i32.store offset=4 - i32.const 0 - local.set $0 - block $~lib/typedarray/SOME<~lib/typedarray/Uint8Array,u8>|inlined.060 (result i32) - local.get $5 - i32.load offset=4 - local.set $4 - local.get $5 - i32.load offset=8 - local.set $2 - loop $for-loop|061 - local.get $0 - local.get $2 - i32.lt_s - if - local.get $0 - local.get $4 - i32.add - i32.load8_u - local.set $1 - i32.const 3 - global.set $~argumentsLength - i32.const 1 - local.get $1 - local.get $0 - local.get $5 - i32.const 4400 - i32.load - call_indirect $0 (type $i32_i32_i32_=>_i32) - br_if $~lib/typedarray/SOME<~lib/typedarray/Uint8Array,u8>|inlined.060 - drop - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|061 - end - end - i32.const 0 - end - br_if $folding-inner7 - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 15924 - i32.lt_s - br_if $folding-inner14 - global.get $~lib/memory/__stack_pointer - local.tee $1 - i64.const 0 - i64.store - local.get $1 - i32.const 3 - call $~lib/typedarray/Uint8ClampedArray#constructor - local.tee $5 - i32.store - local.get $5 - i32.const 0 - i32.const 2 - call $~lib/typedarray/Uint8ClampedArray#__set - local.get $5 - i32.const 1 - i32.const 4 - call $~lib/typedarray/Uint8ClampedArray#__set - local.get $5 - i32.const 2 - i32.const 6 - call $~lib/typedarray/Uint8ClampedArray#__set - global.get $~lib/memory/__stack_pointer - i32.const 4432 - i32.store offset=4 - i32.const 0 - local.set $0 - block $~lib/typedarray/SOME<~lib/typedarray/Uint8Array,u8>|inlined.064 (result i32) - local.get $5 - i32.load offset=4 - local.set $4 - local.get $5 - i32.load offset=8 - local.set $2 - loop $for-loop|065 - local.get $0 - local.get $2 - i32.lt_s - if - local.get $0 - local.get $4 - i32.add - i32.load8_u - local.set $1 - i32.const 3 - global.set $~argumentsLength - i32.const 1 - local.get $1 - local.get $0 - local.get $5 - i32.const 4432 - i32.load - call_indirect $0 (type $i32_i32_i32_=>_i32) - br_if $~lib/typedarray/SOME<~lib/typedarray/Uint8Array,u8>|inlined.064 - drop - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|065 - end - end - i32.const 0 - end - i32.eqz - br_if $folding-inner6 - global.get $~lib/memory/__stack_pointer - i32.const 4464 - i32.store offset=4 - i32.const 0 - local.set $0 - block $~lib/typedarray/SOME<~lib/typedarray/Uint8Array,u8>|inlined.067 (result i32) - local.get $5 - i32.load offset=4 - local.set $4 - local.get $5 - i32.load offset=8 - local.set $2 - loop $for-loop|068 - local.get $0 - local.get $2 - i32.lt_s - if - local.get $0 - local.get $4 - i32.add - i32.load8_u - local.set $1 - i32.const 3 - global.set $~argumentsLength - i32.const 1 - local.get $1 - local.get $0 - local.get $5 - i32.const 4464 - i32.load - call_indirect $0 (type $i32_i32_i32_=>_i32) - br_if $~lib/typedarray/SOME<~lib/typedarray/Uint8Array,u8>|inlined.067 - drop - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|068 - end - end - i32.const 0 - end - br_if $folding-inner7 - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 15924 - i32.lt_s - br_if $folding-inner14 - global.get $~lib/memory/__stack_pointer - local.tee $1 - i64.const 0 - i64.store - local.get $1 - i32.const 3 - call $~lib/typedarray/Int16Array#constructor - local.tee $5 - i32.store - local.get $5 - i32.const 0 - i32.const 2 - call $~lib/typedarray/Int16Array#__set - local.get $5 - i32.const 1 - i32.const 4 - call $~lib/typedarray/Int16Array#__set - local.get $5 - i32.const 2 - i32.const 6 - call $~lib/typedarray/Int16Array#__set - global.get $~lib/memory/__stack_pointer - i32.const 4496 - i32.store offset=4 - i32.const 0 - local.set $0 - block $~lib/typedarray/SOME<~lib/typedarray/Int16Array,i16>|inlined.0 (result i32) - local.get $5 - i32.load offset=4 - local.set $4 - local.get $5 - i32.load offset=8 - i32.const 1 - i32.shr_u - local.set $2 - loop $for-loop|070 - local.get $0 - local.get $2 - i32.lt_s - if - local.get $4 - local.get $0 - i32.const 1 - i32.shl - i32.add - i32.load16_s - local.set $1 - i32.const 3 - global.set $~argumentsLength - i32.const 1 - local.get $1 - local.get $0 - local.get $5 - i32.const 4496 - i32.load - call_indirect $0 (type $i32_i32_i32_=>_i32) - br_if $~lib/typedarray/SOME<~lib/typedarray/Int16Array,i16>|inlined.0 - drop - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|070 - end - end - i32.const 0 - end - i32.eqz - br_if $folding-inner6 - global.get $~lib/memory/__stack_pointer - i32.const 4528 - i32.store offset=4 - i32.const 0 - local.set $0 - block $~lib/typedarray/SOME<~lib/typedarray/Int16Array,i16>|inlined.072 (result i32) - local.get $5 - i32.load offset=4 - local.set $4 - local.get $5 - i32.load offset=8 - i32.const 1 - i32.shr_u - local.set $2 - loop $for-loop|073 - local.get $0 - local.get $2 - i32.lt_s - if - local.get $4 - local.get $0 - i32.const 1 - i32.shl - i32.add - i32.load16_s - local.set $1 - i32.const 3 - global.set $~argumentsLength - i32.const 1 - local.get $1 - local.get $0 - local.get $5 - i32.const 4528 - i32.load - call_indirect $0 (type $i32_i32_i32_=>_i32) - br_if $~lib/typedarray/SOME<~lib/typedarray/Int16Array,i16>|inlined.072 - drop - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|073 - end - end - i32.const 0 - end - br_if $folding-inner7 - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 15924 - i32.lt_s - br_if $folding-inner14 - global.get $~lib/memory/__stack_pointer - local.tee $1 - i64.const 0 - i64.store - local.get $1 - i32.const 3 - call $~lib/typedarray/Uint16Array#constructor - local.tee $5 - i32.store - local.get $5 - i32.const 0 - i32.const 2 - call $~lib/typedarray/Uint16Array#__set - local.get $5 - i32.const 1 - i32.const 4 - call $~lib/typedarray/Uint16Array#__set - local.get $5 - i32.const 2 - i32.const 6 - call $~lib/typedarray/Uint16Array#__set - global.get $~lib/memory/__stack_pointer - i32.const 4560 - i32.store offset=4 - i32.const 0 - local.set $0 - block $~lib/typedarray/SOME<~lib/typedarray/Uint16Array,u16>|inlined.0 (result i32) - local.get $5 - i32.load offset=4 - local.set $4 - local.get $5 - i32.load offset=8 - i32.const 1 - i32.shr_u - local.set $2 - loop $for-loop|075 - local.get $0 - local.get $2 - i32.lt_s - if - local.get $4 - local.get $0 - i32.const 1 - i32.shl - i32.add - i32.load16_u - local.set $1 - i32.const 3 - global.set $~argumentsLength - i32.const 1 - local.get $1 - local.get $0 - local.get $5 - i32.const 4560 - i32.load - call_indirect $0 (type $i32_i32_i32_=>_i32) - br_if $~lib/typedarray/SOME<~lib/typedarray/Uint16Array,u16>|inlined.0 - drop - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|075 - end - end - i32.const 0 - end - i32.eqz - br_if $folding-inner6 - global.get $~lib/memory/__stack_pointer - i32.const 4592 - i32.store offset=4 - i32.const 0 - local.set $0 - block $~lib/typedarray/SOME<~lib/typedarray/Uint16Array,u16>|inlined.077 (result i32) - local.get $5 - i32.load offset=4 - local.set $4 - local.get $5 - i32.load offset=8 - i32.const 1 - i32.shr_u - local.set $2 - loop $for-loop|078 - local.get $0 - local.get $2 - i32.lt_s - if - local.get $4 - local.get $0 - i32.const 1 - i32.shl - i32.add - i32.load16_u - local.set $1 - i32.const 3 - global.set $~argumentsLength - i32.const 1 - local.get $1 - local.get $0 - local.get $5 - i32.const 4592 - i32.load - call_indirect $0 (type $i32_i32_i32_=>_i32) - br_if $~lib/typedarray/SOME<~lib/typedarray/Uint16Array,u16>|inlined.077 - drop - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|078 - end - end - i32.const 0 - end - br_if $folding-inner7 - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 15924 - i32.lt_s - br_if $folding-inner14 - global.get $~lib/memory/__stack_pointer - local.tee $1 - i64.const 0 - i64.store - local.get $1 - i32.const 3 - call $~lib/typedarray/Int32Array#constructor - local.tee $5 - i32.store - local.get $5 - i32.const 0 - i32.const 2 - call $~lib/typedarray/Int32Array#__set - local.get $5 - i32.const 1 - i32.const 4 - call $~lib/typedarray/Int32Array#__set - local.get $5 - i32.const 2 - i32.const 6 - call $~lib/typedarray/Int32Array#__set - global.get $~lib/memory/__stack_pointer - i32.const 4624 - i32.store offset=4 - i32.const 0 - local.set $0 - block $~lib/typedarray/SOME<~lib/typedarray/Int32Array,i32>|inlined.0 (result i32) - local.get $5 - i32.load offset=4 - local.set $4 - local.get $5 - i32.load offset=8 - i32.const 2 - i32.shr_u - local.set $2 - loop $for-loop|080 - local.get $0 - local.get $2 - i32.lt_s - if - local.get $4 - local.get $0 - i32.const 2 - i32.shl - i32.add - i32.load - local.set $1 - i32.const 3 - global.set $~argumentsLength - i32.const 1 - local.get $1 - local.get $0 - local.get $5 - i32.const 4624 - i32.load - call_indirect $0 (type $i32_i32_i32_=>_i32) - br_if $~lib/typedarray/SOME<~lib/typedarray/Int32Array,i32>|inlined.0 - drop - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|080 - end - end - i32.const 0 - end - i32.eqz - br_if $folding-inner6 - global.get $~lib/memory/__stack_pointer - i32.const 4656 - i32.store offset=4 - i32.const 0 - local.set $0 - block $~lib/typedarray/SOME<~lib/typedarray/Int32Array,i32>|inlined.082 (result i32) - local.get $5 - i32.load offset=4 - local.set $4 - local.get $5 - i32.load offset=8 - i32.const 2 - i32.shr_u - local.set $2 - loop $for-loop|083 - local.get $0 - local.get $2 - i32.lt_s - if - local.get $4 - local.get $0 - i32.const 2 - i32.shl - i32.add - i32.load - local.set $1 - i32.const 3 - global.set $~argumentsLength - i32.const 1 - local.get $1 - local.get $0 - local.get $5 - i32.const 4656 - i32.load - call_indirect $0 (type $i32_i32_i32_=>_i32) - br_if $~lib/typedarray/SOME<~lib/typedarray/Int32Array,i32>|inlined.082 - drop - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|083 - end - end - i32.const 0 - end - br_if $folding-inner7 - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 15924 - i32.lt_s - br_if $folding-inner14 - global.get $~lib/memory/__stack_pointer - local.tee $1 - i64.const 0 - i64.store - local.get $1 - i32.const 3 - call $~lib/typedarray/Uint32Array#constructor - local.tee $5 - i32.store - local.get $5 - i32.const 0 - i32.const 2 - call $~lib/typedarray/Uint32Array#__set - local.get $5 - i32.const 1 - i32.const 4 - call $~lib/typedarray/Uint32Array#__set - local.get $5 - i32.const 2 - i32.const 6 - call $~lib/typedarray/Uint32Array#__set - global.get $~lib/memory/__stack_pointer - i32.const 4688 - i32.store offset=4 - i32.const 0 - local.set $0 - block $~lib/typedarray/SOME<~lib/typedarray/Uint32Array,u32>|inlined.0 (result i32) - local.get $5 - i32.load offset=4 - local.set $4 - local.get $5 - i32.load offset=8 - i32.const 2 - i32.shr_u - local.set $2 - loop $for-loop|085 - local.get $0 - local.get $2 - i32.lt_s - if - local.get $4 - local.get $0 - i32.const 2 - i32.shl - i32.add - i32.load - local.set $1 - i32.const 3 - global.set $~argumentsLength - i32.const 1 - local.get $1 - local.get $0 - local.get $5 - i32.const 4688 - i32.load - call_indirect $0 (type $i32_i32_i32_=>_i32) - br_if $~lib/typedarray/SOME<~lib/typedarray/Uint32Array,u32>|inlined.0 - drop - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|085 - end - end - i32.const 0 - end - i32.eqz - br_if $folding-inner6 - global.get $~lib/memory/__stack_pointer - i32.const 4720 - i32.store offset=4 - i32.const 0 - local.set $0 - block $~lib/typedarray/SOME<~lib/typedarray/Uint32Array,u32>|inlined.087 (result i32) - local.get $5 - i32.load offset=4 - local.set $4 - local.get $5 - i32.load offset=8 - i32.const 2 - i32.shr_u - local.set $2 - loop $for-loop|088 - local.get $0 - local.get $2 - i32.lt_s - if - local.get $4 - local.get $0 - i32.const 2 - i32.shl - i32.add - i32.load - local.set $1 - i32.const 3 - global.set $~argumentsLength - i32.const 1 - local.get $1 - local.get $0 - local.get $5 - i32.const 4720 - i32.load - call_indirect $0 (type $i32_i32_i32_=>_i32) - br_if $~lib/typedarray/SOME<~lib/typedarray/Uint32Array,u32>|inlined.087 - drop - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|088 - end - end - i32.const 0 - end - br_if $folding-inner7 - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 15924 - i32.lt_s - br_if $folding-inner14 - global.get $~lib/memory/__stack_pointer - local.tee $1 - i64.const 0 - i64.store - local.get $1 - i32.const 3 - call $~lib/typedarray/Int64Array#constructor - local.tee $3 - i32.store - local.get $3 - i32.const 0 - i64.const 2 - call $~lib/typedarray/Int64Array#__set - local.get $3 - i32.const 1 - i64.const 4 - call $~lib/typedarray/Int64Array#__set - local.get $3 - i32.const 2 - i64.const 6 - call $~lib/typedarray/Int64Array#__set - global.get $~lib/memory/__stack_pointer - i32.const 4752 - i32.store offset=4 - i32.const 0 - local.set $0 - block $~lib/typedarray/SOME<~lib/typedarray/Int64Array,i64>|inlined.0 (result i32) - local.get $3 - i32.load offset=4 - local.set $2 - local.get $3 - i32.load offset=8 - i32.const 3 - i32.shr_u - local.set $1 - loop $for-loop|090 - local.get $0 - local.get $1 - i32.lt_s - if - local.get $2 - local.get $0 - i32.const 3 - i32.shl - i32.add - i64.load - local.set $10 - i32.const 3 - global.set $~argumentsLength - i32.const 1 - local.get $10 - local.get $0 - local.get $3 - i32.const 4752 - i32.load - call_indirect $0 (type $i64_i32_i32_=>_i32) - br_if $~lib/typedarray/SOME<~lib/typedarray/Int64Array,i64>|inlined.0 - drop - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|090 - end - end - i32.const 0 - end - i32.eqz - br_if $folding-inner6 - global.get $~lib/memory/__stack_pointer - i32.const 4784 - i32.store offset=4 - i32.const 0 - local.set $0 - block $~lib/typedarray/SOME<~lib/typedarray/Int64Array,i64>|inlined.092 (result i32) - local.get $3 - i32.load offset=4 - local.set $2 - local.get $3 - i32.load offset=8 - i32.const 3 - i32.shr_u - local.set $1 - loop $for-loop|093 - local.get $0 - local.get $1 - i32.lt_s - if - local.get $2 - local.get $0 - i32.const 3 - i32.shl - i32.add - i64.load - local.set $10 - i32.const 3 - global.set $~argumentsLength - i32.const 1 - local.get $10 - local.get $0 - local.get $3 - i32.const 4784 - i32.load - call_indirect $0 (type $i64_i32_i32_=>_i32) - br_if $~lib/typedarray/SOME<~lib/typedarray/Int64Array,i64>|inlined.092 - drop - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|093 - end - end - i32.const 0 - end - br_if $folding-inner7 - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 15924 - i32.lt_s - br_if $folding-inner14 - global.get $~lib/memory/__stack_pointer - local.tee $1 - i64.const 0 - i64.store - local.get $1 - i32.const 3 - call $~lib/typedarray/Uint64Array#constructor - local.tee $3 - i32.store - local.get $3 - i32.const 0 - i64.const 2 - call $~lib/typedarray/Uint64Array#__set - local.get $3 - i32.const 1 - i64.const 4 - call $~lib/typedarray/Uint64Array#__set - local.get $3 - i32.const 2 - i64.const 6 - call $~lib/typedarray/Uint64Array#__set - global.get $~lib/memory/__stack_pointer - i32.const 4816 - i32.store offset=4 - i32.const 0 - local.set $0 - block $~lib/typedarray/SOME<~lib/typedarray/Uint64Array,u64>|inlined.0 (result i32) - local.get $3 - i32.load offset=4 - local.set $2 - local.get $3 - i32.load offset=8 - i32.const 3 - i32.shr_u - local.set $1 - loop $for-loop|095 - local.get $0 - local.get $1 - i32.lt_s - if - local.get $2 - local.get $0 - i32.const 3 - i32.shl - i32.add - i64.load - local.set $10 - i32.const 3 - global.set $~argumentsLength - i32.const 1 - local.get $10 - local.get $0 - local.get $3 - i32.const 4816 - i32.load - call_indirect $0 (type $i64_i32_i32_=>_i32) - br_if $~lib/typedarray/SOME<~lib/typedarray/Uint64Array,u64>|inlined.0 - drop - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|095 - end - end - i32.const 0 - end - i32.eqz - br_if $folding-inner6 - global.get $~lib/memory/__stack_pointer - i32.const 4848 - i32.store offset=4 - i32.const 0 - local.set $0 - block $~lib/typedarray/SOME<~lib/typedarray/Uint64Array,u64>|inlined.097 (result i32) - local.get $3 - i32.load offset=4 - local.set $2 - local.get $3 - i32.load offset=8 - i32.const 3 - i32.shr_u - local.set $1 - loop $for-loop|098 - local.get $0 - local.get $1 - i32.lt_s - if - local.get $2 - local.get $0 - i32.const 3 - i32.shl - i32.add - i64.load - local.set $10 - i32.const 3 - global.set $~argumentsLength - i32.const 1 - local.get $10 - local.get $0 - local.get $3 - i32.const 4848 - i32.load - call_indirect $0 (type $i64_i32_i32_=>_i32) - br_if $~lib/typedarray/SOME<~lib/typedarray/Uint64Array,u64>|inlined.097 - drop - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|098 - end - end - i32.const 0 - end - br_if $folding-inner7 - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 15924 - i32.lt_s - br_if $folding-inner14 - global.get $~lib/memory/__stack_pointer - local.tee $1 - i64.const 0 - i64.store - local.get $1 - i32.const 3 - call $~lib/typedarray/Float32Array#constructor - local.tee $3 - i32.store - local.get $3 - i32.const 0 - f32.const 2 - call $~lib/typedarray/Float32Array#__set - local.get $3 - i32.const 1 - f32.const 4 - call $~lib/typedarray/Float32Array#__set - local.get $3 - i32.const 2 - f32.const 6 - call $~lib/typedarray/Float32Array#__set - global.get $~lib/memory/__stack_pointer - i32.const 4880 - i32.store offset=4 - i32.const 0 - local.set $0 - block $~lib/typedarray/SOME<~lib/typedarray/Float32Array,f32>|inlined.0 (result i32) - local.get $3 - i32.load offset=4 - local.set $2 - local.get $3 - i32.load offset=8 - i32.const 2 - i32.shr_u - local.set $1 - loop $for-loop|0100 - local.get $0 - local.get $1 - i32.lt_s - if - local.get $2 - local.get $0 - i32.const 2 - i32.shl - i32.add - f32.load - local.set $11 - i32.const 3 - global.set $~argumentsLength - i32.const 1 - local.get $11 - local.get $0 - local.get $3 - i32.const 4880 - i32.load - call_indirect $0 (type $f32_i32_i32_=>_i32) - br_if $~lib/typedarray/SOME<~lib/typedarray/Float32Array,f32>|inlined.0 - drop - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|0100 - end - end - i32.const 0 - end - i32.eqz - br_if $folding-inner6 - global.get $~lib/memory/__stack_pointer - i32.const 4912 - i32.store offset=4 - i32.const 0 - local.set $0 - block $~lib/typedarray/SOME<~lib/typedarray/Float32Array,f32>|inlined.0102 (result i32) - local.get $3 - i32.load offset=4 - local.set $2 - local.get $3 - i32.load offset=8 - i32.const 2 - i32.shr_u - local.set $1 - loop $for-loop|0103 - local.get $0 - local.get $1 - i32.lt_s - if - local.get $2 - local.get $0 - i32.const 2 - i32.shl - i32.add - f32.load - local.set $11 - i32.const 3 - global.set $~argumentsLength - i32.const 1 - local.get $11 - local.get $0 - local.get $3 - i32.const 4912 - i32.load - call_indirect $0 (type $f32_i32_i32_=>_i32) - br_if $~lib/typedarray/SOME<~lib/typedarray/Float32Array,f32>|inlined.0102 - drop - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|0103 - end - end - i32.const 0 - end - br_if $folding-inner7 - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 15924 - i32.lt_s - br_if $folding-inner14 - global.get $~lib/memory/__stack_pointer - local.tee $1 - i64.const 0 - i64.store - local.get $1 - i32.const 3 - call $~lib/typedarray/Float64Array#constructor - local.tee $3 - i32.store - local.get $3 - i32.const 0 - f64.const 2 - call $~lib/typedarray/Float64Array#__set - local.get $3 - i32.const 1 - f64.const 4 - call $~lib/typedarray/Float64Array#__set - local.get $3 - i32.const 2 - f64.const 6 - call $~lib/typedarray/Float64Array#__set - global.get $~lib/memory/__stack_pointer - i32.const 4944 - i32.store offset=4 - i32.const 0 - local.set $0 - block $~lib/typedarray/SOME<~lib/typedarray/Float64Array,f64>|inlined.0 (result i32) - local.get $3 - i32.load offset=4 - local.set $2 - local.get $3 - i32.load offset=8 - i32.const 3 - i32.shr_u - local.set $1 - loop $for-loop|0105 - local.get $0 - local.get $1 - i32.lt_s - if - local.get $2 - local.get $0 - i32.const 3 - i32.shl - i32.add - f64.load - local.set $12 - i32.const 3 - global.set $~argumentsLength - i32.const 1 - local.get $12 - local.get $0 - local.get $3 - i32.const 4944 - i32.load - call_indirect $0 (type $f64_i32_i32_=>_i32) - br_if $~lib/typedarray/SOME<~lib/typedarray/Float64Array,f64>|inlined.0 - drop - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|0105 - end - end - i32.const 0 - end - i32.eqz - br_if $folding-inner6 - global.get $~lib/memory/__stack_pointer - i32.const 4976 - i32.store offset=4 - i32.const 0 - local.set $0 - block $~lib/typedarray/SOME<~lib/typedarray/Float64Array,f64>|inlined.0107 (result i32) - local.get $3 - i32.load offset=4 - local.set $2 - local.get $3 - i32.load offset=8 - i32.const 3 - i32.shr_u - local.set $1 - loop $for-loop|0108 - local.get $0 - local.get $1 - i32.lt_s - if - local.get $2 - local.get $0 - i32.const 3 - i32.shl - i32.add - f64.load - local.set $12 - i32.const 3 - global.set $~argumentsLength - i32.const 1 - local.get $12 - local.get $0 - local.get $3 - i32.const 4976 - i32.load - call_indirect $0 (type $f64_i32_i32_=>_i32) - br_if $~lib/typedarray/SOME<~lib/typedarray/Float64Array,f64>|inlined.0107 - drop - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|0108 - end - end - i32.const 0 - end - br_if $folding-inner7 - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 15924 - i32.lt_s - br_if $folding-inner14 - global.get $~lib/memory/__stack_pointer - local.tee $1 - i64.const 0 - i64.store - local.get $1 - i32.const 3 - call $~lib/typedarray/Int8Array#constructor - local.tee $3 - i32.store - local.get $3 - i32.const 0 - i32.const 1 - call $~lib/typedarray/Int8Array#__set - local.get $3 - i32.const 1 - i32.const 2 - call $~lib/typedarray/Int8Array#__set - local.get $3 - i32.const 2 - i32.const 3 - call $~lib/typedarray/Int8Array#__set - global.get $~lib/memory/__stack_pointer - i32.const 5008 - i32.store offset=4 - i32.const 0 - local.set $0 - local.get $3 - i32.load offset=4 - local.set $4 - local.get $3 - i32.load offset=8 - local.set $2 - block $~lib/typedarray/FIND_INDEX<~lib/typedarray/Int8Array,i8>|inlined.0 - loop $for-loop|0110 - local.get $0 - local.get $2 - i32.lt_s - if - local.get $0 - local.get $4 - i32.add - i32.load8_s - i32.const 3 - global.set $~argumentsLength - local.get $0 - local.get $3 - i32.const 5008 - i32.load - call_indirect $0 (type $i32_i32_i32_=>_i32) - br_if $~lib/typedarray/FIND_INDEX<~lib/typedarray/Int8Array,i8>|inlined.0 - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|0110 - end - end - i32.const -1 - local.set $0 - end - local.get $0 - i32.const 1 - i32.ne - br_if $folding-inner8 - global.get $~lib/memory/__stack_pointer - i32.const 5040 - i32.store offset=4 - i32.const 0 - local.set $0 - local.get $3 - i32.load offset=4 - local.set $4 - local.get $3 - i32.load offset=8 - local.set $2 - block $~lib/typedarray/FIND_INDEX<~lib/typedarray/Int8Array,i8>|inlined.0112 - loop $for-loop|0113 - local.get $0 - local.get $2 - i32.lt_s - if - local.get $0 - local.get $4 - i32.add - i32.load8_s - i32.const 3 - global.set $~argumentsLength - local.get $0 - local.get $3 - i32.const 5040 - i32.load - call_indirect $0 (type $i32_i32_i32_=>_i32) - br_if $~lib/typedarray/FIND_INDEX<~lib/typedarray/Int8Array,i8>|inlined.0112 - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|0113 - end - end - i32.const -1 - local.set $0 - end - local.get $0 - i32.const -1 - i32.ne - br_if $folding-inner9 - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 15924 - i32.lt_s - br_if $folding-inner14 - global.get $~lib/memory/__stack_pointer - local.tee $1 - i64.const 0 - i64.store - local.get $1 - i32.const 3 - call $~lib/typedarray/Uint8Array#constructor - local.tee $3 - i32.store - local.get $3 - i32.const 0 - i32.const 1 - call $~lib/typedarray/Uint8Array#__set - local.get $3 - i32.const 1 - i32.const 2 - call $~lib/typedarray/Uint8Array#__set - local.get $3 - i32.const 2 - i32.const 3 - call $~lib/typedarray/Uint8Array#__set - global.get $~lib/memory/__stack_pointer - i32.const 5072 - i32.store offset=4 - i32.const 0 - local.set $0 - local.get $3 - i32.load offset=4 - local.set $4 - local.get $3 - i32.load offset=8 - local.set $2 - block $~lib/typedarray/FIND_INDEX<~lib/typedarray/Uint8Array,u8>|inlined.0 - loop $for-loop|0115 - local.get $0 - local.get $2 - i32.lt_s - if - local.get $0 - local.get $4 - i32.add - i32.load8_u - i32.const 3 - global.set $~argumentsLength - local.get $0 - local.get $3 - i32.const 5072 - i32.load - call_indirect $0 (type $i32_i32_i32_=>_i32) - br_if $~lib/typedarray/FIND_INDEX<~lib/typedarray/Uint8Array,u8>|inlined.0 - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|0115 - end - end - i32.const -1 - local.set $0 - end - local.get $0 - i32.const 1 - i32.ne - br_if $folding-inner8 - global.get $~lib/memory/__stack_pointer - i32.const 5104 - i32.store offset=4 - i32.const 0 - local.set $0 - local.get $3 - i32.load offset=4 - local.set $4 - local.get $3 - i32.load offset=8 - local.set $2 - block $~lib/typedarray/FIND_INDEX<~lib/typedarray/Uint8Array,u8>|inlined.0117 - loop $for-loop|0118 - local.get $0 - local.get $2 - i32.lt_s - if - local.get $0 - local.get $4 - i32.add - i32.load8_u - i32.const 3 - global.set $~argumentsLength - local.get $0 - local.get $3 - i32.const 5104 - i32.load - call_indirect $0 (type $i32_i32_i32_=>_i32) - br_if $~lib/typedarray/FIND_INDEX<~lib/typedarray/Uint8Array,u8>|inlined.0117 - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|0118 - end - end - i32.const -1 - local.set $0 - end - local.get $0 - i32.const -1 - i32.ne - br_if $folding-inner9 - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 15924 - i32.lt_s - br_if $folding-inner14 - global.get $~lib/memory/__stack_pointer - local.tee $1 - i64.const 0 - i64.store - local.get $1 - i32.const 3 - call $~lib/typedarray/Uint8ClampedArray#constructor - local.tee $3 - i32.store - local.get $3 - i32.const 0 - i32.const 1 - call $~lib/typedarray/Uint8ClampedArray#__set - local.get $3 - i32.const 1 - i32.const 2 - call $~lib/typedarray/Uint8ClampedArray#__set - local.get $3 - i32.const 2 - i32.const 3 - call $~lib/typedarray/Uint8ClampedArray#__set - global.get $~lib/memory/__stack_pointer - i32.const 5136 - i32.store offset=4 - i32.const 0 - local.set $0 - local.get $3 - i32.load offset=4 - local.set $4 - local.get $3 - i32.load offset=8 - local.set $2 - block $~lib/typedarray/FIND_INDEX<~lib/typedarray/Uint8Array,u8>|inlined.0121 - loop $for-loop|0122 - local.get $0 - local.get $2 - i32.lt_s - if - local.get $0 - local.get $4 - i32.add - i32.load8_u - i32.const 3 - global.set $~argumentsLength - local.get $0 - local.get $3 - i32.const 5136 - i32.load - call_indirect $0 (type $i32_i32_i32_=>_i32) - br_if $~lib/typedarray/FIND_INDEX<~lib/typedarray/Uint8Array,u8>|inlined.0121 - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|0122 - end - end - i32.const -1 - local.set $0 - end - local.get $0 - i32.const 1 - i32.ne - br_if $folding-inner8 - global.get $~lib/memory/__stack_pointer - i32.const 5168 - i32.store offset=4 - i32.const 0 - local.set $0 - local.get $3 - i32.load offset=4 - local.set $4 - local.get $3 - i32.load offset=8 - local.set $2 - block $~lib/typedarray/FIND_INDEX<~lib/typedarray/Uint8Array,u8>|inlined.0124 - loop $for-loop|0125 - local.get $0 - local.get $2 - i32.lt_s - if - local.get $0 - local.get $4 - i32.add - i32.load8_u - i32.const 3 - global.set $~argumentsLength - local.get $0 - local.get $3 - i32.const 5168 - i32.load - call_indirect $0 (type $i32_i32_i32_=>_i32) - br_if $~lib/typedarray/FIND_INDEX<~lib/typedarray/Uint8Array,u8>|inlined.0124 - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|0125 - end - end - i32.const -1 - local.set $0 - end - local.get $0 - i32.const -1 - i32.ne - br_if $folding-inner9 - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 15924 - i32.lt_s - br_if $folding-inner14 - global.get $~lib/memory/__stack_pointer - local.tee $1 - i64.const 0 - i64.store - local.get $1 - i32.const 3 - call $~lib/typedarray/Int16Array#constructor - local.tee $3 - i32.store - local.get $3 - i32.const 0 - i32.const 1 - call $~lib/typedarray/Int16Array#__set - local.get $3 - i32.const 1 - i32.const 2 - call $~lib/typedarray/Int16Array#__set - local.get $3 - i32.const 2 - i32.const 3 - call $~lib/typedarray/Int16Array#__set - global.get $~lib/memory/__stack_pointer - i32.const 5200 - i32.store offset=4 - i32.const 0 - local.set $0 - local.get $3 - i32.load offset=4 - local.set $4 - local.get $3 - i32.load offset=8 - i32.const 1 - i32.shr_u - local.set $2 - block $~lib/typedarray/FIND_INDEX<~lib/typedarray/Int16Array,i16>|inlined.0 - loop $for-loop|0127 - local.get $0 - local.get $2 - i32.lt_s - if - local.get $4 - local.get $0 - i32.const 1 - i32.shl - i32.add - i32.load16_s - i32.const 3 - global.set $~argumentsLength - local.get $0 - local.get $3 - i32.const 5200 - i32.load - call_indirect $0 (type $i32_i32_i32_=>_i32) - br_if $~lib/typedarray/FIND_INDEX<~lib/typedarray/Int16Array,i16>|inlined.0 - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|0127 - end - end - i32.const -1 - local.set $0 - end - local.get $0 - i32.const 1 - i32.ne - br_if $folding-inner8 - global.get $~lib/memory/__stack_pointer - i32.const 5232 - i32.store offset=4 - i32.const 0 - local.set $0 - local.get $3 - i32.load offset=4 - local.set $4 - local.get $3 - i32.load offset=8 - i32.const 1 - i32.shr_u - local.set $2 - block $~lib/typedarray/FIND_INDEX<~lib/typedarray/Int16Array,i16>|inlined.0129 - loop $for-loop|0130 - local.get $0 - local.get $2 - i32.lt_s - if - local.get $4 - local.get $0 - i32.const 1 - i32.shl - i32.add - i32.load16_s - i32.const 3 - global.set $~argumentsLength - local.get $0 - local.get $3 - i32.const 5232 - i32.load - call_indirect $0 (type $i32_i32_i32_=>_i32) - br_if $~lib/typedarray/FIND_INDEX<~lib/typedarray/Int16Array,i16>|inlined.0129 - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|0130 - end - end - i32.const -1 - local.set $0 - end - local.get $0 - i32.const -1 - i32.ne - br_if $folding-inner9 - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 15924 - i32.lt_s - br_if $folding-inner14 - global.get $~lib/memory/__stack_pointer - local.tee $1 - i64.const 0 - i64.store - local.get $1 - i32.const 3 - call $~lib/typedarray/Uint16Array#constructor - local.tee $3 - i32.store - local.get $3 - i32.const 0 - i32.const 1 - call $~lib/typedarray/Uint16Array#__set - local.get $3 - i32.const 1 - i32.const 2 - call $~lib/typedarray/Uint16Array#__set - local.get $3 - i32.const 2 - i32.const 3 - call $~lib/typedarray/Uint16Array#__set - global.get $~lib/memory/__stack_pointer - i32.const 5264 - i32.store offset=4 - i32.const 0 - local.set $0 - local.get $3 - i32.load offset=4 - local.set $4 - local.get $3 - i32.load offset=8 - i32.const 1 - i32.shr_u - local.set $2 - block $~lib/typedarray/FIND_INDEX<~lib/typedarray/Uint16Array,u16>|inlined.0 - loop $for-loop|0132 - local.get $0 - local.get $2 - i32.lt_s - if - local.get $4 - local.get $0 - i32.const 1 - i32.shl - i32.add - i32.load16_u - i32.const 3 - global.set $~argumentsLength - local.get $0 - local.get $3 - i32.const 5264 - i32.load - call_indirect $0 (type $i32_i32_i32_=>_i32) - br_if $~lib/typedarray/FIND_INDEX<~lib/typedarray/Uint16Array,u16>|inlined.0 - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|0132 - end - end - i32.const -1 - local.set $0 - end - local.get $0 - i32.const 1 - i32.ne - br_if $folding-inner8 - global.get $~lib/memory/__stack_pointer - i32.const 5296 - i32.store offset=4 - i32.const 0 - local.set $0 - local.get $3 - i32.load offset=4 - local.set $4 - local.get $3 - i32.load offset=8 - i32.const 1 - i32.shr_u - local.set $2 - block $~lib/typedarray/FIND_INDEX<~lib/typedarray/Uint16Array,u16>|inlined.0134 - loop $for-loop|0135 - local.get $0 - local.get $2 - i32.lt_s - if - local.get $4 - local.get $0 - i32.const 1 - i32.shl - i32.add - i32.load16_u - i32.const 3 - global.set $~argumentsLength - local.get $0 - local.get $3 - i32.const 5296 - i32.load - call_indirect $0 (type $i32_i32_i32_=>_i32) - br_if $~lib/typedarray/FIND_INDEX<~lib/typedarray/Uint16Array,u16>|inlined.0134 - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|0135 - end - end - i32.const -1 - local.set $0 - end - local.get $0 - i32.const -1 - i32.ne - br_if $folding-inner9 - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 15924 - i32.lt_s - br_if $folding-inner14 - global.get $~lib/memory/__stack_pointer - local.tee $1 - i64.const 0 - i64.store - local.get $1 - i32.const 3 - call $~lib/typedarray/Int32Array#constructor - local.tee $3 - i32.store - local.get $3 - i32.const 0 - i32.const 1 - call $~lib/typedarray/Int32Array#__set - local.get $3 - i32.const 1 - i32.const 2 - call $~lib/typedarray/Int32Array#__set - local.get $3 - i32.const 2 - i32.const 3 - call $~lib/typedarray/Int32Array#__set - global.get $~lib/memory/__stack_pointer - i32.const 5328 - i32.store offset=4 - i32.const 0 - local.set $0 - local.get $3 - i32.load offset=4 - local.set $4 - local.get $3 - i32.load offset=8 - i32.const 2 - i32.shr_u - local.set $2 - block $~lib/typedarray/FIND_INDEX<~lib/typedarray/Int32Array,i32>|inlined.0 - loop $for-loop|0137 - local.get $0 - local.get $2 - i32.lt_s - if - local.get $4 - local.get $0 - i32.const 2 - i32.shl - i32.add - i32.load - i32.const 3 - global.set $~argumentsLength - local.get $0 - local.get $3 - i32.const 5328 - i32.load - call_indirect $0 (type $i32_i32_i32_=>_i32) - br_if $~lib/typedarray/FIND_INDEX<~lib/typedarray/Int32Array,i32>|inlined.0 - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|0137 - end - end - i32.const -1 - local.set $0 - end - local.get $0 - i32.const 1 - i32.ne - br_if $folding-inner8 - global.get $~lib/memory/__stack_pointer - i32.const 5360 - i32.store offset=4 - i32.const 0 - local.set $0 - local.get $3 - i32.load offset=4 - local.set $4 - local.get $3 - i32.load offset=8 - i32.const 2 - i32.shr_u - local.set $2 - block $~lib/typedarray/FIND_INDEX<~lib/typedarray/Int32Array,i32>|inlined.0139 - loop $for-loop|0140 - local.get $0 - local.get $2 - i32.lt_s - if - local.get $4 - local.get $0 - i32.const 2 - i32.shl - i32.add - i32.load - i32.const 3 - global.set $~argumentsLength - local.get $0 - local.get $3 - i32.const 5360 - i32.load - call_indirect $0 (type $i32_i32_i32_=>_i32) - br_if $~lib/typedarray/FIND_INDEX<~lib/typedarray/Int32Array,i32>|inlined.0139 - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|0140 - end - end - i32.const -1 - local.set $0 - end - local.get $0 - i32.const -1 - i32.ne - br_if $folding-inner9 - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 15924 - i32.lt_s - br_if $folding-inner14 - global.get $~lib/memory/__stack_pointer - local.tee $1 - i64.const 0 - i64.store - local.get $1 - i32.const 3 - call $~lib/typedarray/Uint32Array#constructor - local.tee $3 - i32.store - local.get $3 - i32.const 0 - i32.const 1 - call $~lib/typedarray/Uint32Array#__set - local.get $3 - i32.const 1 - i32.const 2 - call $~lib/typedarray/Uint32Array#__set - local.get $3 - i32.const 2 - i32.const 3 - call $~lib/typedarray/Uint32Array#__set - global.get $~lib/memory/__stack_pointer - i32.const 5392 - i32.store offset=4 - i32.const 0 - local.set $0 - local.get $3 - i32.load offset=4 - local.set $4 - local.get $3 - i32.load offset=8 - i32.const 2 - i32.shr_u - local.set $2 - block $~lib/typedarray/FIND_INDEX<~lib/typedarray/Uint32Array,u32>|inlined.0 - loop $for-loop|0142 - local.get $0 - local.get $2 - i32.lt_s - if - local.get $4 - local.get $0 - i32.const 2 - i32.shl - i32.add - i32.load - i32.const 3 - global.set $~argumentsLength - local.get $0 - local.get $3 - i32.const 5392 - i32.load - call_indirect $0 (type $i32_i32_i32_=>_i32) - br_if $~lib/typedarray/FIND_INDEX<~lib/typedarray/Uint32Array,u32>|inlined.0 - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|0142 - end - end - i32.const -1 - local.set $0 - end - local.get $0 - i32.const 1 - i32.ne - br_if $folding-inner8 - global.get $~lib/memory/__stack_pointer - i32.const 5424 - i32.store offset=4 - i32.const 0 - local.set $0 - local.get $3 - i32.load offset=4 - local.set $4 - local.get $3 - i32.load offset=8 - i32.const 2 - i32.shr_u - local.set $2 - block $~lib/typedarray/FIND_INDEX<~lib/typedarray/Uint32Array,u32>|inlined.0144 - loop $for-loop|0145 - local.get $0 - local.get $2 - i32.lt_s - if - local.get $4 - local.get $0 - i32.const 2 - i32.shl - i32.add - i32.load - i32.const 3 - global.set $~argumentsLength - local.get $0 - local.get $3 - i32.const 5424 - i32.load - call_indirect $0 (type $i32_i32_i32_=>_i32) - br_if $~lib/typedarray/FIND_INDEX<~lib/typedarray/Uint32Array,u32>|inlined.0144 - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|0145 - end - end - i32.const -1 - local.set $0 - end - local.get $0 - i32.const -1 - i32.ne - br_if $folding-inner9 - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 15924 - i32.lt_s - br_if $folding-inner14 - global.get $~lib/memory/__stack_pointer - local.tee $1 - i64.const 0 - i64.store - local.get $1 - i32.const 3 - call $~lib/typedarray/Int64Array#constructor - local.tee $4 - i32.store - local.get $4 - i32.const 0 - i64.const 1 - call $~lib/typedarray/Int64Array#__set - local.get $4 - i32.const 1 - i64.const 2 - call $~lib/typedarray/Int64Array#__set - local.get $4 - i32.const 2 - i64.const 3 - call $~lib/typedarray/Int64Array#__set - global.get $~lib/memory/__stack_pointer - i32.const 5456 - i32.store offset=4 - i32.const 0 - local.set $0 - local.get $4 - i32.load offset=4 - local.set $2 - local.get $4 - i32.load offset=8 - i32.const 3 - i32.shr_u - local.set $1 - block $~lib/typedarray/FIND_INDEX<~lib/typedarray/Int64Array,i64>|inlined.0 - loop $for-loop|0147 - local.get $0 - local.get $1 - i32.lt_s - if - local.get $2 - local.get $0 - i32.const 3 - i32.shl - i32.add - i64.load - i32.const 3 - global.set $~argumentsLength - local.get $0 - local.get $4 - i32.const 5456 - i32.load - call_indirect $0 (type $i64_i32_i32_=>_i32) - br_if $~lib/typedarray/FIND_INDEX<~lib/typedarray/Int64Array,i64>|inlined.0 - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|0147 - end - end - i32.const -1 - local.set $0 - end - local.get $0 - i32.const 1 - i32.ne - br_if $folding-inner8 - global.get $~lib/memory/__stack_pointer - i32.const 5488 - i32.store offset=4 - i32.const 0 - local.set $0 - local.get $4 - i32.load offset=4 - local.set $2 - local.get $4 - i32.load offset=8 - i32.const 3 - i32.shr_u - local.set $1 - block $~lib/typedarray/FIND_INDEX<~lib/typedarray/Int64Array,i64>|inlined.0149 - loop $for-loop|0150 - local.get $0 - local.get $1 - i32.lt_s - if - local.get $2 - local.get $0 - i32.const 3 - i32.shl - i32.add - i64.load - i32.const 3 - global.set $~argumentsLength - local.get $0 - local.get $4 - i32.const 5488 - i32.load - call_indirect $0 (type $i64_i32_i32_=>_i32) - br_if $~lib/typedarray/FIND_INDEX<~lib/typedarray/Int64Array,i64>|inlined.0149 - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|0150 - end - end - i32.const -1 - local.set $0 - end - local.get $0 - i32.const -1 - i32.ne - br_if $folding-inner9 - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 15924 - i32.lt_s - br_if $folding-inner14 - global.get $~lib/memory/__stack_pointer - local.tee $1 - i64.const 0 - i64.store - local.get $1 - i32.const 3 - call $~lib/typedarray/Uint64Array#constructor - local.tee $4 - i32.store - local.get $4 - i32.const 0 - i64.const 1 - call $~lib/typedarray/Uint64Array#__set - local.get $4 - i32.const 1 - i64.const 2 - call $~lib/typedarray/Uint64Array#__set - local.get $4 - i32.const 2 - i64.const 3 - call $~lib/typedarray/Uint64Array#__set - global.get $~lib/memory/__stack_pointer - i32.const 5520 - i32.store offset=4 - i32.const 0 - local.set $0 - local.get $4 - i32.load offset=4 - local.set $2 - local.get $4 - i32.load offset=8 - i32.const 3 - i32.shr_u - local.set $1 - block $~lib/typedarray/FIND_INDEX<~lib/typedarray/Uint64Array,u64>|inlined.0 - loop $for-loop|0152 - local.get $0 - local.get $1 - i32.lt_s - if - local.get $2 - local.get $0 - i32.const 3 - i32.shl - i32.add - i64.load - i32.const 3 - global.set $~argumentsLength - local.get $0 - local.get $4 - i32.const 5520 - i32.load - call_indirect $0 (type $i64_i32_i32_=>_i32) - br_if $~lib/typedarray/FIND_INDEX<~lib/typedarray/Uint64Array,u64>|inlined.0 - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|0152 - end - end - i32.const -1 - local.set $0 - end - local.get $0 - i32.const 1 - i32.ne - br_if $folding-inner8 - global.get $~lib/memory/__stack_pointer - i32.const 5552 - i32.store offset=4 - i32.const 0 - local.set $0 - local.get $4 - i32.load offset=4 - local.set $2 - local.get $4 - i32.load offset=8 - i32.const 3 - i32.shr_u - local.set $1 - block $~lib/typedarray/FIND_INDEX<~lib/typedarray/Uint64Array,u64>|inlined.0154 - loop $for-loop|0155 - local.get $0 - local.get $1 - i32.lt_s - if - local.get $2 - local.get $0 - i32.const 3 - i32.shl - i32.add - i64.load - i32.const 3 - global.set $~argumentsLength - local.get $0 - local.get $4 - i32.const 5552 - i32.load - call_indirect $0 (type $i64_i32_i32_=>_i32) - br_if $~lib/typedarray/FIND_INDEX<~lib/typedarray/Uint64Array,u64>|inlined.0154 - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|0155 - end - end - i32.const -1 - local.set $0 - end - local.get $0 - i32.const -1 - i32.ne - br_if $folding-inner9 - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 15924 - i32.lt_s - br_if $folding-inner14 - global.get $~lib/memory/__stack_pointer - local.tee $1 - i64.const 0 - i64.store - local.get $1 - i32.const 3 - call $~lib/typedarray/Float32Array#constructor - local.tee $4 - i32.store - local.get $4 - i32.const 0 - f32.const 1 - call $~lib/typedarray/Float32Array#__set - local.get $4 - i32.const 1 - f32.const 2 - call $~lib/typedarray/Float32Array#__set - local.get $4 - i32.const 2 - f32.const 3 - call $~lib/typedarray/Float32Array#__set - global.get $~lib/memory/__stack_pointer - i32.const 5584 - i32.store offset=4 - i32.const 0 - local.set $0 - local.get $4 - i32.load offset=4 - local.set $2 - local.get $4 - i32.load offset=8 - i32.const 2 - i32.shr_u - local.set $1 - block $~lib/typedarray/FIND_INDEX<~lib/typedarray/Float32Array,f32>|inlined.0 - loop $for-loop|0157 - local.get $0 - local.get $1 - i32.lt_s - if - local.get $2 - local.get $0 - i32.const 2 - i32.shl - i32.add - f32.load - i32.const 3 - global.set $~argumentsLength - local.get $0 - local.get $4 - i32.const 5584 - i32.load - call_indirect $0 (type $f32_i32_i32_=>_i32) - br_if $~lib/typedarray/FIND_INDEX<~lib/typedarray/Float32Array,f32>|inlined.0 - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|0157 - end - end - i32.const -1 - local.set $0 - end - local.get $0 - i32.const 1 - i32.ne - br_if $folding-inner8 - global.get $~lib/memory/__stack_pointer - i32.const 5616 - i32.store offset=4 - i32.const 0 - local.set $0 - local.get $4 - i32.load offset=4 - local.set $2 - local.get $4 - i32.load offset=8 - i32.const 2 - i32.shr_u - local.set $1 - block $~lib/typedarray/FIND_INDEX<~lib/typedarray/Float32Array,f32>|inlined.0159 - loop $for-loop|0160 - local.get $0 - local.get $1 - i32.lt_s - if - local.get $2 - local.get $0 - i32.const 2 - i32.shl - i32.add - f32.load - i32.const 3 - global.set $~argumentsLength - local.get $0 - local.get $4 - i32.const 5616 - i32.load - call_indirect $0 (type $f32_i32_i32_=>_i32) - br_if $~lib/typedarray/FIND_INDEX<~lib/typedarray/Float32Array,f32>|inlined.0159 - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|0160 - end - end - i32.const -1 - local.set $0 - end - local.get $0 - i32.const -1 - i32.ne - br_if $folding-inner9 - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 15924 - i32.lt_s - br_if $folding-inner14 - global.get $~lib/memory/__stack_pointer - local.tee $1 - i64.const 0 - i64.store - local.get $1 - i32.const 3 - call $~lib/typedarray/Float64Array#constructor - local.tee $4 - i32.store - local.get $4 - i32.const 0 - f64.const 1 - call $~lib/typedarray/Float64Array#__set - local.get $4 - i32.const 1 - f64.const 2 - call $~lib/typedarray/Float64Array#__set - local.get $4 - i32.const 2 - f64.const 3 - call $~lib/typedarray/Float64Array#__set - global.get $~lib/memory/__stack_pointer - i32.const 5648 - i32.store offset=4 - i32.const 0 - local.set $0 - local.get $4 - i32.load offset=4 - local.set $2 - local.get $4 - i32.load offset=8 - i32.const 3 - i32.shr_u - local.set $1 - block $~lib/typedarray/FIND_INDEX<~lib/typedarray/Float64Array,f64>|inlined.0 - loop $for-loop|0162 - local.get $0 - local.get $1 - i32.lt_s - if - local.get $2 - local.get $0 - i32.const 3 - i32.shl - i32.add - f64.load - i32.const 3 - global.set $~argumentsLength - local.get $0 - local.get $4 - i32.const 5648 - i32.load - call_indirect $0 (type $f64_i32_i32_=>_i32) - br_if $~lib/typedarray/FIND_INDEX<~lib/typedarray/Float64Array,f64>|inlined.0 - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|0162 - end - end - i32.const -1 - local.set $0 - end - local.get $0 - i32.const 1 - i32.ne - br_if $folding-inner8 - global.get $~lib/memory/__stack_pointer - i32.const 5680 - i32.store offset=4 - i32.const 0 - local.set $0 - local.get $4 - i32.load offset=4 - local.set $2 - local.get $4 - i32.load offset=8 - i32.const 3 - i32.shr_u - local.set $1 - block $~lib/typedarray/FIND_INDEX<~lib/typedarray/Float64Array,f64>|inlined.0164 - loop $for-loop|0165 - local.get $0 - local.get $1 - i32.lt_s - if - local.get $2 - local.get $0 - i32.const 3 - i32.shl - i32.add - f64.load - i32.const 3 - global.set $~argumentsLength - local.get $0 - local.get $4 - i32.const 5680 - i32.load - call_indirect $0 (type $f64_i32_i32_=>_i32) - br_if $~lib/typedarray/FIND_INDEX<~lib/typedarray/Float64Array,f64>|inlined.0164 - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|0165 - end - end - i32.const -1 - local.set $0 - end - local.get $0 - i32.const -1 - i32.ne - br_if $folding-inner9 - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 15924 - i32.lt_s - br_if $folding-inner14 - global.get $~lib/memory/__stack_pointer - local.tee $1 - i64.const 0 - i64.store - local.get $1 - i32.const 3 - call $~lib/typedarray/Int8Array#constructor - local.tee $5 - i32.store - local.get $5 - i32.const 0 - i32.const 2 - call $~lib/typedarray/Int8Array#__set - local.get $5 - i32.const 1 - i32.const 4 - call $~lib/typedarray/Int8Array#__set - local.get $5 - i32.const 2 - i32.const 6 - call $~lib/typedarray/Int8Array#__set - global.get $~lib/memory/__stack_pointer - i32.const 5712 - i32.store offset=4 - i32.const 0 - local.set $0 - block $~lib/typedarray/EVERY<~lib/typedarray/Int8Array,i8>|inlined.0 (result i32) - local.get $5 - i32.load offset=4 - local.set $4 - local.get $5 - i32.load offset=8 - local.set $2 - loop $for-loop|0167 - local.get $0 - local.get $2 - i32.lt_s - if - local.get $0 - local.get $4 - i32.add - i32.load8_s - local.set $1 - i32.const 3 - global.set $~argumentsLength - i32.const 0 - local.get $1 - local.get $0 - local.get $5 - i32.const 5712 - i32.load - call_indirect $0 (type $i32_i32_i32_=>_i32) - i32.eqz - br_if $~lib/typedarray/EVERY<~lib/typedarray/Int8Array,i8>|inlined.0 - drop - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|0167 - end - end - i32.const 1 - end - i32.eqz - br_if $folding-inner10 - global.get $~lib/memory/__stack_pointer - i32.const 5744 - i32.store offset=4 - i32.const 0 - local.set $0 - block $~lib/typedarray/EVERY<~lib/typedarray/Int8Array,i8>|inlined.0169 (result i32) - local.get $5 - i32.load offset=4 - local.set $4 - local.get $5 - i32.load offset=8 - local.set $2 - loop $for-loop|0170 - local.get $0 - local.get $2 - i32.lt_s - if - local.get $0 - local.get $4 - i32.add - i32.load8_s - local.set $1 - i32.const 3 - global.set $~argumentsLength - i32.const 0 - local.get $1 - local.get $0 - local.get $5 - i32.const 5744 - i32.load - call_indirect $0 (type $i32_i32_i32_=>_i32) - i32.eqz - br_if $~lib/typedarray/EVERY<~lib/typedarray/Int8Array,i8>|inlined.0169 - drop - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|0170 - end - end - i32.const 1 - end - br_if $folding-inner11 - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 15924 - i32.lt_s - br_if $folding-inner14 - global.get $~lib/memory/__stack_pointer - local.tee $1 - i64.const 0 - i64.store - local.get $1 - i32.const 3 - call $~lib/typedarray/Uint8Array#constructor - local.tee $5 - i32.store - local.get $5 - i32.const 0 - i32.const 2 - call $~lib/typedarray/Uint8Array#__set - local.get $5 - i32.const 1 - i32.const 4 - call $~lib/typedarray/Uint8Array#__set - local.get $5 - i32.const 2 - i32.const 6 - call $~lib/typedarray/Uint8Array#__set - global.get $~lib/memory/__stack_pointer - i32.const 5776 - i32.store offset=4 - i32.const 0 - local.set $0 - block $~lib/typedarray/EVERY<~lib/typedarray/Uint8Array,u8>|inlined.0 (result i32) - local.get $5 - i32.load offset=4 - local.set $4 - local.get $5 - i32.load offset=8 - local.set $2 - loop $for-loop|0172 - local.get $0 - local.get $2 - i32.lt_s - if - local.get $0 - local.get $4 - i32.add - i32.load8_u - local.set $1 - i32.const 3 - global.set $~argumentsLength - i32.const 0 - local.get $1 - local.get $0 - local.get $5 - i32.const 5776 - i32.load - call_indirect $0 (type $i32_i32_i32_=>_i32) - i32.eqz - br_if $~lib/typedarray/EVERY<~lib/typedarray/Uint8Array,u8>|inlined.0 - drop - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|0172 - end - end - i32.const 1 - end - i32.eqz - br_if $folding-inner10 - global.get $~lib/memory/__stack_pointer - i32.const 5808 - i32.store offset=4 - i32.const 0 - local.set $0 - block $~lib/typedarray/EVERY<~lib/typedarray/Uint8Array,u8>|inlined.0174 (result i32) - local.get $5 - i32.load offset=4 - local.set $4 - local.get $5 - i32.load offset=8 - local.set $2 - loop $for-loop|0175 - local.get $0 - local.get $2 - i32.lt_s - if - local.get $0 - local.get $4 - i32.add - i32.load8_u - local.set $1 - i32.const 3 - global.set $~argumentsLength - i32.const 0 - local.get $1 - local.get $0 - local.get $5 - i32.const 5808 - i32.load - call_indirect $0 (type $i32_i32_i32_=>_i32) - i32.eqz - br_if $~lib/typedarray/EVERY<~lib/typedarray/Uint8Array,u8>|inlined.0174 - drop - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|0175 - end - end - i32.const 1 - end - br_if $folding-inner11 - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 15924 - i32.lt_s - br_if $folding-inner14 - global.get $~lib/memory/__stack_pointer - local.tee $1 - i64.const 0 - i64.store - local.get $1 - i32.const 3 - call $~lib/typedarray/Uint8ClampedArray#constructor - local.tee $5 - i32.store - local.get $5 - i32.const 0 - i32.const 2 - call $~lib/typedarray/Uint8ClampedArray#__set - local.get $5 - i32.const 1 - i32.const 4 - call $~lib/typedarray/Uint8ClampedArray#__set - local.get $5 - i32.const 2 - i32.const 6 - call $~lib/typedarray/Uint8ClampedArray#__set - global.get $~lib/memory/__stack_pointer - i32.const 5840 - i32.store offset=4 - i32.const 0 - local.set $0 - block $~lib/typedarray/EVERY<~lib/typedarray/Uint8Array,u8>|inlined.0178 (result i32) - local.get $5 - i32.load offset=4 - local.set $4 - local.get $5 - i32.load offset=8 - local.set $2 - loop $for-loop|0179 - local.get $0 - local.get $2 - i32.lt_s - if - local.get $0 - local.get $4 - i32.add - i32.load8_u - local.set $1 - i32.const 3 - global.set $~argumentsLength - i32.const 0 - local.get $1 - local.get $0 - local.get $5 - i32.const 5840 - i32.load - call_indirect $0 (type $i32_i32_i32_=>_i32) - i32.eqz - br_if $~lib/typedarray/EVERY<~lib/typedarray/Uint8Array,u8>|inlined.0178 - drop - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|0179 - end - end - i32.const 1 - end - i32.eqz - br_if $folding-inner10 - global.get $~lib/memory/__stack_pointer - i32.const 5872 - i32.store offset=4 - i32.const 0 - local.set $0 - block $~lib/typedarray/EVERY<~lib/typedarray/Uint8Array,u8>|inlined.0181 (result i32) - local.get $5 - i32.load offset=4 - local.set $4 - local.get $5 - i32.load offset=8 - local.set $2 - loop $for-loop|0182 - local.get $0 - local.get $2 - i32.lt_s - if - local.get $0 - local.get $4 - i32.add - i32.load8_u - local.set $1 - i32.const 3 - global.set $~argumentsLength - i32.const 0 - local.get $1 - local.get $0 - local.get $5 - i32.const 5872 - i32.load - call_indirect $0 (type $i32_i32_i32_=>_i32) - i32.eqz - br_if $~lib/typedarray/EVERY<~lib/typedarray/Uint8Array,u8>|inlined.0181 - drop - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|0182 - end - end - i32.const 1 - end - br_if $folding-inner11 - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 15924 - i32.lt_s - br_if $folding-inner14 - global.get $~lib/memory/__stack_pointer - local.tee $1 - i64.const 0 - i64.store - local.get $1 - i32.const 3 - call $~lib/typedarray/Int16Array#constructor - local.tee $5 - i32.store - local.get $5 - i32.const 0 - i32.const 2 - call $~lib/typedarray/Int16Array#__set - local.get $5 - i32.const 1 - i32.const 4 - call $~lib/typedarray/Int16Array#__set - local.get $5 - i32.const 2 - i32.const 6 - call $~lib/typedarray/Int16Array#__set - global.get $~lib/memory/__stack_pointer - i32.const 5904 - i32.store offset=4 - i32.const 0 - local.set $0 - block $~lib/typedarray/EVERY<~lib/typedarray/Int16Array,i16>|inlined.0 (result i32) - local.get $5 - i32.load offset=4 - local.set $4 - local.get $5 - i32.load offset=8 - i32.const 1 - i32.shr_u - local.set $2 - loop $for-loop|0184 - local.get $0 - local.get $2 - i32.lt_s - if - local.get $4 - local.get $0 - i32.const 1 - i32.shl - i32.add - i32.load16_s - local.set $1 - i32.const 3 - global.set $~argumentsLength - i32.const 0 - local.get $1 - local.get $0 - local.get $5 - i32.const 5904 - i32.load - call_indirect $0 (type $i32_i32_i32_=>_i32) - i32.eqz - br_if $~lib/typedarray/EVERY<~lib/typedarray/Int16Array,i16>|inlined.0 - drop - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|0184 - end - end - i32.const 1 - end - i32.eqz - br_if $folding-inner10 - global.get $~lib/memory/__stack_pointer - i32.const 5936 - i32.store offset=4 - i32.const 0 - local.set $0 - block $~lib/typedarray/EVERY<~lib/typedarray/Int16Array,i16>|inlined.0186 (result i32) - local.get $5 - i32.load offset=4 - local.set $4 - local.get $5 - i32.load offset=8 - i32.const 1 - i32.shr_u - local.set $2 - loop $for-loop|0187 - local.get $0 - local.get $2 - i32.lt_s - if - local.get $4 - local.get $0 - i32.const 1 - i32.shl - i32.add - i32.load16_s - local.set $1 - i32.const 3 - global.set $~argumentsLength - i32.const 0 - local.get $1 - local.get $0 - local.get $5 - i32.const 5936 - i32.load - call_indirect $0 (type $i32_i32_i32_=>_i32) - i32.eqz - br_if $~lib/typedarray/EVERY<~lib/typedarray/Int16Array,i16>|inlined.0186 - drop - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|0187 - end - end - i32.const 1 - end - br_if $folding-inner11 - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 15924 - i32.lt_s - br_if $folding-inner14 - global.get $~lib/memory/__stack_pointer - local.tee $1 - i64.const 0 - i64.store - local.get $1 - i32.const 3 - call $~lib/typedarray/Uint16Array#constructor - local.tee $5 - i32.store - local.get $5 - i32.const 0 - i32.const 2 - call $~lib/typedarray/Uint16Array#__set - local.get $5 - i32.const 1 - i32.const 4 - call $~lib/typedarray/Uint16Array#__set - local.get $5 - i32.const 2 - i32.const 6 - call $~lib/typedarray/Uint16Array#__set - global.get $~lib/memory/__stack_pointer - i32.const 5968 - i32.store offset=4 - i32.const 0 - local.set $0 - block $~lib/typedarray/EVERY<~lib/typedarray/Uint16Array,u16>|inlined.0 (result i32) - local.get $5 - i32.load offset=4 - local.set $4 - local.get $5 - i32.load offset=8 - i32.const 1 - i32.shr_u - local.set $2 - loop $for-loop|0189 - local.get $0 - local.get $2 - i32.lt_s - if - local.get $4 - local.get $0 - i32.const 1 - i32.shl - i32.add - i32.load16_u - local.set $1 - i32.const 3 - global.set $~argumentsLength - i32.const 0 - local.get $1 - local.get $0 - local.get $5 - i32.const 5968 - i32.load - call_indirect $0 (type $i32_i32_i32_=>_i32) - i32.eqz - br_if $~lib/typedarray/EVERY<~lib/typedarray/Uint16Array,u16>|inlined.0 - drop - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|0189 - end - end - i32.const 1 - end - i32.eqz - br_if $folding-inner10 - global.get $~lib/memory/__stack_pointer - i32.const 6000 - i32.store offset=4 - i32.const 0 - local.set $0 - block $~lib/typedarray/EVERY<~lib/typedarray/Uint16Array,u16>|inlined.0191 (result i32) - local.get $5 - i32.load offset=4 - local.set $4 - local.get $5 - i32.load offset=8 - i32.const 1 - i32.shr_u - local.set $2 - loop $for-loop|0192 - local.get $0 - local.get $2 - i32.lt_s - if - local.get $4 - local.get $0 - i32.const 1 - i32.shl - i32.add - i32.load16_u - local.set $1 - i32.const 3 - global.set $~argumentsLength - i32.const 0 - local.get $1 - local.get $0 - local.get $5 - i32.const 6000 - i32.load - call_indirect $0 (type $i32_i32_i32_=>_i32) - i32.eqz - br_if $~lib/typedarray/EVERY<~lib/typedarray/Uint16Array,u16>|inlined.0191 - drop - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|0192 - end - end - i32.const 1 - end - br_if $folding-inner11 - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 15924 - i32.lt_s - br_if $folding-inner14 - global.get $~lib/memory/__stack_pointer - local.tee $1 - i64.const 0 - i64.store - local.get $1 - i32.const 3 - call $~lib/typedarray/Int32Array#constructor - local.tee $5 - i32.store - local.get $5 - i32.const 0 - i32.const 2 - call $~lib/typedarray/Int32Array#__set - local.get $5 - i32.const 1 - i32.const 4 - call $~lib/typedarray/Int32Array#__set - local.get $5 - i32.const 2 - i32.const 6 - call $~lib/typedarray/Int32Array#__set - global.get $~lib/memory/__stack_pointer - i32.const 6032 - i32.store offset=4 - i32.const 0 - local.set $0 - block $~lib/typedarray/EVERY<~lib/typedarray/Int32Array,i32>|inlined.0 (result i32) - local.get $5 - i32.load offset=4 - local.set $4 - local.get $5 - i32.load offset=8 - i32.const 2 - i32.shr_u - local.set $2 - loop $for-loop|0194 - local.get $0 - local.get $2 - i32.lt_s - if - local.get $4 - local.get $0 - i32.const 2 - i32.shl - i32.add - i32.load - local.set $1 - i32.const 3 - global.set $~argumentsLength - i32.const 0 - local.get $1 - local.get $0 - local.get $5 - i32.const 6032 - i32.load - call_indirect $0 (type $i32_i32_i32_=>_i32) - i32.eqz - br_if $~lib/typedarray/EVERY<~lib/typedarray/Int32Array,i32>|inlined.0 - drop - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|0194 - end - end - i32.const 1 - end - i32.eqz - br_if $folding-inner10 - global.get $~lib/memory/__stack_pointer - i32.const 6064 - i32.store offset=4 - i32.const 0 - local.set $0 - block $~lib/typedarray/EVERY<~lib/typedarray/Int32Array,i32>|inlined.0196 (result i32) - local.get $5 - i32.load offset=4 - local.set $4 - local.get $5 - i32.load offset=8 - i32.const 2 - i32.shr_u - local.set $2 - loop $for-loop|0197 - local.get $0 - local.get $2 - i32.lt_s - if - local.get $4 - local.get $0 - i32.const 2 - i32.shl - i32.add - i32.load - local.set $1 - i32.const 3 - global.set $~argumentsLength - i32.const 0 - local.get $1 - local.get $0 - local.get $5 - i32.const 6064 - i32.load - call_indirect $0 (type $i32_i32_i32_=>_i32) - i32.eqz - br_if $~lib/typedarray/EVERY<~lib/typedarray/Int32Array,i32>|inlined.0196 - drop - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|0197 - end - end - i32.const 1 - end - br_if $folding-inner11 - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 15924 - i32.lt_s - br_if $folding-inner14 - global.get $~lib/memory/__stack_pointer - local.tee $1 - i64.const 0 - i64.store - local.get $1 - i32.const 3 - call $~lib/typedarray/Uint32Array#constructor - local.tee $5 - i32.store - local.get $5 - i32.const 0 - i32.const 2 - call $~lib/typedarray/Uint32Array#__set - local.get $5 - i32.const 1 - i32.const 4 - call $~lib/typedarray/Uint32Array#__set - local.get $5 - i32.const 2 - i32.const 6 - call $~lib/typedarray/Uint32Array#__set - global.get $~lib/memory/__stack_pointer - i32.const 6096 - i32.store offset=4 - i32.const 0 - local.set $0 - block $~lib/typedarray/EVERY<~lib/typedarray/Uint32Array,u32>|inlined.0 (result i32) - local.get $5 - i32.load offset=4 - local.set $4 - local.get $5 - i32.load offset=8 - i32.const 2 - i32.shr_u - local.set $2 - loop $for-loop|0199 - local.get $0 - local.get $2 - i32.lt_s - if - local.get $4 - local.get $0 - i32.const 2 - i32.shl - i32.add - i32.load - local.set $1 - i32.const 3 - global.set $~argumentsLength - i32.const 0 - local.get $1 - local.get $0 - local.get $5 - i32.const 6096 - i32.load - call_indirect $0 (type $i32_i32_i32_=>_i32) - i32.eqz - br_if $~lib/typedarray/EVERY<~lib/typedarray/Uint32Array,u32>|inlined.0 - drop - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|0199 - end - end - i32.const 1 - end - i32.eqz - br_if $folding-inner10 - global.get $~lib/memory/__stack_pointer - i32.const 6128 - i32.store offset=4 - i32.const 0 - local.set $0 - block $~lib/typedarray/EVERY<~lib/typedarray/Uint32Array,u32>|inlined.0201 (result i32) - local.get $5 - i32.load offset=4 - local.set $4 - local.get $5 - i32.load offset=8 - i32.const 2 - i32.shr_u - local.set $2 - loop $for-loop|0202 - local.get $0 - local.get $2 - i32.lt_s - if - local.get $4 - local.get $0 - i32.const 2 - i32.shl - i32.add - i32.load - local.set $1 - i32.const 3 - global.set $~argumentsLength - i32.const 0 - local.get $1 - local.get $0 - local.get $5 - i32.const 6128 - i32.load - call_indirect $0 (type $i32_i32_i32_=>_i32) - i32.eqz - br_if $~lib/typedarray/EVERY<~lib/typedarray/Uint32Array,u32>|inlined.0201 - drop - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|0202 - end - end - i32.const 1 - end - br_if $folding-inner11 - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 15924 - i32.lt_s - br_if $folding-inner14 - global.get $~lib/memory/__stack_pointer - local.tee $1 - i64.const 0 - i64.store - local.get $1 - i32.const 3 - call $~lib/typedarray/Int64Array#constructor - local.tee $3 - i32.store - local.get $3 - i32.const 0 - i64.const 2 - call $~lib/typedarray/Int64Array#__set - local.get $3 - i32.const 1 - i64.const 4 - call $~lib/typedarray/Int64Array#__set - local.get $3 - i32.const 2 - i64.const 6 - call $~lib/typedarray/Int64Array#__set - global.get $~lib/memory/__stack_pointer - i32.const 6160 - i32.store offset=4 - i32.const 0 - local.set $0 - block $~lib/typedarray/EVERY<~lib/typedarray/Int64Array,i64>|inlined.0 (result i32) - local.get $3 - i32.load offset=4 - local.set $2 - local.get $3 - i32.load offset=8 - i32.const 3 - i32.shr_u - local.set $1 - loop $for-loop|0204 - local.get $0 - local.get $1 - i32.lt_s - if - local.get $2 - local.get $0 - i32.const 3 - i32.shl - i32.add - i64.load - local.set $10 - i32.const 3 - global.set $~argumentsLength - i32.const 0 - local.get $10 - local.get $0 - local.get $3 - i32.const 6160 - i32.load - call_indirect $0 (type $i64_i32_i32_=>_i32) - i32.eqz - br_if $~lib/typedarray/EVERY<~lib/typedarray/Int64Array,i64>|inlined.0 - drop - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|0204 - end - end - i32.const 1 - end - i32.eqz - br_if $folding-inner10 - global.get $~lib/memory/__stack_pointer - i32.const 6192 - i32.store offset=4 - i32.const 0 - local.set $0 - block $~lib/typedarray/EVERY<~lib/typedarray/Int64Array,i64>|inlined.0206 (result i32) - local.get $3 - i32.load offset=4 - local.set $2 - local.get $3 - i32.load offset=8 - i32.const 3 - i32.shr_u - local.set $1 - loop $for-loop|0207 - local.get $0 - local.get $1 - i32.lt_s - if - local.get $2 - local.get $0 - i32.const 3 - i32.shl - i32.add - i64.load - local.set $10 - i32.const 3 - global.set $~argumentsLength - i32.const 0 - local.get $10 - local.get $0 - local.get $3 - i32.const 6192 - i32.load - call_indirect $0 (type $i64_i32_i32_=>_i32) - i32.eqz - br_if $~lib/typedarray/EVERY<~lib/typedarray/Int64Array,i64>|inlined.0206 - drop - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|0207 - end - end - i32.const 1 - end - br_if $folding-inner11 - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 15924 - i32.lt_s - br_if $folding-inner14 - global.get $~lib/memory/__stack_pointer - local.tee $1 - i64.const 0 - i64.store - local.get $1 - i32.const 3 - call $~lib/typedarray/Uint64Array#constructor - local.tee $3 - i32.store - local.get $3 - i32.const 0 - i64.const 2 - call $~lib/typedarray/Uint64Array#__set - local.get $3 - i32.const 1 - i64.const 4 - call $~lib/typedarray/Uint64Array#__set - local.get $3 - i32.const 2 - i64.const 6 - call $~lib/typedarray/Uint64Array#__set - global.get $~lib/memory/__stack_pointer - i32.const 6224 - i32.store offset=4 - i32.const 0 - local.set $0 - block $~lib/typedarray/EVERY<~lib/typedarray/Uint64Array,u64>|inlined.0 (result i32) - local.get $3 - i32.load offset=4 - local.set $2 - local.get $3 - i32.load offset=8 - i32.const 3 - i32.shr_u - local.set $1 - loop $for-loop|0209 - local.get $0 - local.get $1 - i32.lt_s - if - local.get $2 - local.get $0 - i32.const 3 - i32.shl - i32.add - i64.load - local.set $10 - i32.const 3 - global.set $~argumentsLength - i32.const 0 - local.get $10 - local.get $0 - local.get $3 - i32.const 6224 - i32.load - call_indirect $0 (type $i64_i32_i32_=>_i32) - i32.eqz - br_if $~lib/typedarray/EVERY<~lib/typedarray/Uint64Array,u64>|inlined.0 - drop - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|0209 - end - end - i32.const 1 - end - i32.eqz - br_if $folding-inner10 - global.get $~lib/memory/__stack_pointer - i32.const 6256 - i32.store offset=4 - i32.const 0 - local.set $0 - block $~lib/typedarray/EVERY<~lib/typedarray/Uint64Array,u64>|inlined.0211 (result i32) - local.get $3 - i32.load offset=4 - local.set $2 - local.get $3 - i32.load offset=8 - i32.const 3 - i32.shr_u - local.set $1 - loop $for-loop|0212 - local.get $0 - local.get $1 - i32.lt_s - if - local.get $2 - local.get $0 - i32.const 3 - i32.shl - i32.add - i64.load - local.set $10 - i32.const 3 - global.set $~argumentsLength - i32.const 0 - local.get $10 - local.get $0 - local.get $3 - i32.const 6256 - i32.load - call_indirect $0 (type $i64_i32_i32_=>_i32) - i32.eqz - br_if $~lib/typedarray/EVERY<~lib/typedarray/Uint64Array,u64>|inlined.0211 - drop - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|0212 - end - end - i32.const 1 - end - br_if $folding-inner11 - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 15924 - i32.lt_s - br_if $folding-inner14 - global.get $~lib/memory/__stack_pointer - local.tee $1 - i64.const 0 - i64.store - local.get $1 - i32.const 3 - call $~lib/typedarray/Float32Array#constructor - local.tee $3 - i32.store - local.get $3 - i32.const 0 - f32.const 2 - call $~lib/typedarray/Float32Array#__set - local.get $3 - i32.const 1 - f32.const 4 - call $~lib/typedarray/Float32Array#__set - local.get $3 - i32.const 2 - f32.const 6 - call $~lib/typedarray/Float32Array#__set - global.get $~lib/memory/__stack_pointer - i32.const 6288 - i32.store offset=4 - i32.const 0 - local.set $0 - block $~lib/typedarray/EVERY<~lib/typedarray/Float32Array,f32>|inlined.0 (result i32) - local.get $3 - i32.load offset=4 - local.set $2 - local.get $3 - i32.load offset=8 - i32.const 2 - i32.shr_u - local.set $1 - loop $for-loop|0214 - local.get $0 - local.get $1 - i32.lt_s - if - local.get $2 - local.get $0 - i32.const 2 - i32.shl - i32.add - f32.load - local.set $11 - i32.const 3 - global.set $~argumentsLength - i32.const 0 - local.get $11 - local.get $0 - local.get $3 - i32.const 6288 - i32.load - call_indirect $0 (type $f32_i32_i32_=>_i32) - i32.eqz - br_if $~lib/typedarray/EVERY<~lib/typedarray/Float32Array,f32>|inlined.0 - drop - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|0214 - end - end - i32.const 1 - end - i32.eqz - br_if $folding-inner10 - global.get $~lib/memory/__stack_pointer - i32.const 6320 - i32.store offset=4 - i32.const 0 - local.set $0 - block $~lib/typedarray/EVERY<~lib/typedarray/Float32Array,f32>|inlined.0216 (result i32) - local.get $3 - i32.load offset=4 - local.set $2 - local.get $3 - i32.load offset=8 - i32.const 2 - i32.shr_u - local.set $1 - loop $for-loop|0217 - local.get $0 - local.get $1 - i32.lt_s - if - local.get $2 - local.get $0 - i32.const 2 - i32.shl - i32.add - f32.load - local.set $11 - i32.const 3 - global.set $~argumentsLength - i32.const 0 - local.get $11 - local.get $0 - local.get $3 - i32.const 6320 - i32.load - call_indirect $0 (type $f32_i32_i32_=>_i32) - i32.eqz - br_if $~lib/typedarray/EVERY<~lib/typedarray/Float32Array,f32>|inlined.0216 - drop - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|0217 - end - end - i32.const 1 - end - br_if $folding-inner11 - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 15924 - i32.lt_s - br_if $folding-inner14 - global.get $~lib/memory/__stack_pointer - local.tee $1 - i64.const 0 - i64.store - local.get $1 - i32.const 3 - call $~lib/typedarray/Float64Array#constructor - local.tee $3 - i32.store - local.get $3 - i32.const 0 - f64.const 2 - call $~lib/typedarray/Float64Array#__set - local.get $3 - i32.const 1 - f64.const 4 - call $~lib/typedarray/Float64Array#__set - local.get $3 - i32.const 2 - f64.const 6 - call $~lib/typedarray/Float64Array#__set - global.get $~lib/memory/__stack_pointer - i32.const 6352 - i32.store offset=4 - i32.const 0 - local.set $0 - block $~lib/typedarray/EVERY<~lib/typedarray/Float64Array,f64>|inlined.0 (result i32) - local.get $3 - i32.load offset=4 - local.set $2 - local.get $3 - i32.load offset=8 - i32.const 3 - i32.shr_u - local.set $1 - loop $for-loop|0219 - local.get $0 - local.get $1 - i32.lt_s - if - local.get $2 - local.get $0 - i32.const 3 - i32.shl - i32.add - f64.load - local.set $12 - i32.const 3 - global.set $~argumentsLength - i32.const 0 - local.get $12 - local.get $0 - local.get $3 - i32.const 6352 - i32.load - call_indirect $0 (type $f64_i32_i32_=>_i32) - i32.eqz - br_if $~lib/typedarray/EVERY<~lib/typedarray/Float64Array,f64>|inlined.0 - drop - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|0219 - end - end - i32.const 1 - end - i32.eqz - br_if $folding-inner10 - global.get $~lib/memory/__stack_pointer - i32.const 6384 - i32.store offset=4 - i32.const 0 - local.set $0 - block $~lib/typedarray/EVERY<~lib/typedarray/Float64Array,f64>|inlined.0221 (result i32) - local.get $3 - i32.load offset=4 - local.set $2 - local.get $3 - i32.load offset=8 - i32.const 3 - i32.shr_u - local.set $1 - loop $for-loop|0222 - local.get $0 - local.get $1 - i32.lt_s - if - local.get $2 - local.get $0 - i32.const 3 - i32.shl - i32.add - f64.load - local.set $12 - i32.const 3 - global.set $~argumentsLength - i32.const 0 - local.get $12 - local.get $0 - local.get $3 - i32.const 6384 - i32.load - call_indirect $0 (type $f64_i32_i32_=>_i32) - i32.eqz - br_if $~lib/typedarray/EVERY<~lib/typedarray/Float64Array,f64>|inlined.0221 - drop - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|0222 - end - end - i32.const 1 - end - br_if $folding-inner11 - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 15924 - i32.lt_s - br_if $folding-inner14 - global.get $~lib/memory/__stack_pointer - local.tee $1 - i64.const 0 - i64.store - local.get $1 - i32.const 0 - i32.store offset=8 - i32.const 0 - global.set $std/typedarray/forEachCallCount - local.get $1 - i32.const 3 - call $~lib/typedarray/Int8Array#constructor - local.tee $3 - i32.store - local.get $3 - global.set $std/typedarray/forEachSelf - global.get $~lib/memory/__stack_pointer - i32.const 6448 - i32.store offset=4 - local.get $3 - i32.const 0 - i32.const 6448 - i32.const 0 - call $~lib/array/Array#__get - i32.extend8_s - call $~lib/typedarray/Int8Array#__set - global.get $~lib/memory/__stack_pointer - i32.const 6448 - i32.store offset=4 - local.get $3 - i32.const 1 - i32.const 6448 - i32.const 1 - call $~lib/array/Array#__get - i32.extend8_s - call $~lib/typedarray/Int8Array#__set - global.get $~lib/memory/__stack_pointer - i32.const 6448 - i32.store offset=4 - local.get $3 - i32.const 2 - i32.const 6448 - i32.const 2 - call $~lib/array/Array#__get - i32.extend8_s - call $~lib/typedarray/Int8Array#__set - global.get $~lib/memory/__stack_pointer - i32.const 6496 - i32.store offset=8 - i32.const 0 - local.set $0 - local.get $3 - i32.load offset=4 - local.set $4 - local.get $3 - i32.load offset=8 - local.set $2 - loop $for-loop|043 - local.get $0 - local.get $2 - i32.lt_s - if - local.get $0 - local.get $4 - i32.add - i32.load8_s - i32.const 3 - global.set $~argumentsLength - local.get $0 - local.get $3 - i32.const 6496 - i32.load - call_indirect $0 (type $i32_i32_i32_=>_none) - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|043 - end - end - global.get $std/typedarray/forEachCallCount - i32.const 3 - i32.ne - br_if $folding-inner12 - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.add - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 15924 - i32.lt_s - br_if $folding-inner14 - global.get $~lib/memory/__stack_pointer - local.tee $1 - i64.const 0 - i64.store - local.get $1 - i32.const 0 - i32.store offset=8 - i32.const 0 - global.set $std/typedarray/forEachCallCount - local.get $1 - i32.const 3 - call $~lib/typedarray/Uint8Array#constructor - local.tee $3 - i32.store - local.get $3 - global.set $std/typedarray/forEachSelf - global.get $~lib/memory/__stack_pointer - i32.const 6448 - i32.store offset=4 - local.get $3 - i32.const 0 - i32.const 6448 - i32.const 0 - call $~lib/array/Array#__get - i32.const 255 - i32.and - call $~lib/typedarray/Uint8Array#__set - global.get $~lib/memory/__stack_pointer - i32.const 6448 - i32.store offset=4 - local.get $3 - i32.const 1 - i32.const 6448 - i32.const 1 - call $~lib/array/Array#__get - i32.const 255 - i32.and - call $~lib/typedarray/Uint8Array#__set - global.get $~lib/memory/__stack_pointer - i32.const 6448 - i32.store offset=4 - local.get $3 - i32.const 2 - i32.const 6448 - i32.const 2 - call $~lib/array/Array#__get - i32.const 255 - i32.and - call $~lib/typedarray/Uint8Array#__set - global.get $~lib/memory/__stack_pointer - i32.const 6528 - i32.store offset=8 - i32.const 0 - local.set $0 - local.get $3 - i32.load offset=4 - local.set $4 - local.get $3 - i32.load offset=8 - local.set $2 - loop $for-loop|0225 - local.get $0 - local.get $2 - i32.lt_s - if - local.get $0 - local.get $4 - i32.add - i32.load8_u - i32.const 3 - global.set $~argumentsLength - local.get $0 - local.get $3 - i32.const 6528 - i32.load - call_indirect $0 (type $i32_i32_i32_=>_none) - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|0225 - end - end - global.get $std/typedarray/forEachCallCount - i32.const 3 - i32.ne - br_if $folding-inner12 - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.add - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 15924 - i32.lt_s - br_if $folding-inner14 - global.get $~lib/memory/__stack_pointer - local.tee $1 - i64.const 0 - i64.store - local.get $1 - i32.const 0 - i32.store offset=8 - i32.const 0 - global.set $std/typedarray/forEachCallCount - local.get $1 - i32.const 3 - call $~lib/typedarray/Uint8ClampedArray#constructor - local.tee $3 - i32.store - local.get $3 - global.set $std/typedarray/forEachSelf - global.get $~lib/memory/__stack_pointer - i32.const 6448 - i32.store offset=4 - local.get $3 - i32.const 0 - i32.const 6448 - i32.const 0 - call $~lib/array/Array#__get - i32.const 255 - i32.and - call $~lib/typedarray/Uint8ClampedArray#__set - global.get $~lib/memory/__stack_pointer - i32.const 6448 - i32.store offset=4 - local.get $3 - i32.const 1 - i32.const 6448 - i32.const 1 - call $~lib/array/Array#__get - i32.const 255 - i32.and - call $~lib/typedarray/Uint8ClampedArray#__set - global.get $~lib/memory/__stack_pointer - i32.const 6448 - i32.store offset=4 - local.get $3 - i32.const 2 - i32.const 6448 - i32.const 2 - call $~lib/array/Array#__get - i32.const 255 - i32.and - call $~lib/typedarray/Uint8ClampedArray#__set - global.get $~lib/memory/__stack_pointer - i32.const 6560 - i32.store offset=8 - i32.const 0 - local.set $0 - local.get $3 - i32.load offset=4 - local.set $4 - local.get $3 - i32.load offset=8 - local.set $2 - loop $for-loop|0228 - local.get $0 - local.get $2 - i32.lt_s - if - local.get $0 - local.get $4 - i32.add - i32.load8_u - i32.const 3 - global.set $~argumentsLength - local.get $0 - local.get $3 - i32.const 6560 - i32.load - call_indirect $0 (type $i32_i32_i32_=>_none) - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|0228 - end - end - global.get $std/typedarray/forEachCallCount - i32.const 3 - i32.ne - br_if $folding-inner12 - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.add - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 15924 - i32.lt_s - br_if $folding-inner14 - global.get $~lib/memory/__stack_pointer - local.tee $1 - i64.const 0 - i64.store - local.get $1 - i32.const 0 - i32.store offset=8 - i32.const 0 - global.set $std/typedarray/forEachCallCount - local.get $1 - i32.const 3 - call $~lib/typedarray/Int16Array#constructor - local.tee $3 - i32.store - local.get $3 - global.set $std/typedarray/forEachSelf - global.get $~lib/memory/__stack_pointer - i32.const 6448 - i32.store offset=4 - local.get $3 - i32.const 0 - i32.const 6448 - i32.const 0 - call $~lib/array/Array#__get - i32.extend16_s - call $~lib/typedarray/Int16Array#__set - global.get $~lib/memory/__stack_pointer - i32.const 6448 - i32.store offset=4 - local.get $3 - i32.const 1 - i32.const 6448 - i32.const 1 - call $~lib/array/Array#__get - i32.extend16_s - call $~lib/typedarray/Int16Array#__set - global.get $~lib/memory/__stack_pointer - i32.const 6448 - i32.store offset=4 - local.get $3 - i32.const 2 - i32.const 6448 - i32.const 2 - call $~lib/array/Array#__get - i32.extend16_s - call $~lib/typedarray/Int16Array#__set - global.get $~lib/memory/__stack_pointer - i32.const 6592 - i32.store offset=8 - i32.const 0 - local.set $0 - local.get $3 - i32.load offset=4 - local.set $4 - local.get $3 - i32.load offset=8 - i32.const 1 - i32.shr_u - local.set $2 - loop $for-loop|045 - local.get $0 - local.get $2 - i32.lt_s - if - local.get $4 - local.get $0 - i32.const 1 - i32.shl - i32.add - i32.load16_s - i32.const 3 - global.set $~argumentsLength - local.get $0 - local.get $3 - i32.const 6592 - i32.load - call_indirect $0 (type $i32_i32_i32_=>_none) - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|045 - end - end - global.get $std/typedarray/forEachCallCount - i32.const 3 - i32.ne - br_if $folding-inner12 - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.add - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 15924 - i32.lt_s - br_if $folding-inner14 - global.get $~lib/memory/__stack_pointer - local.tee $1 - i64.const 0 - i64.store - local.get $1 - i32.const 0 - i32.store offset=8 - i32.const 0 - global.set $std/typedarray/forEachCallCount - local.get $1 - i32.const 3 - call $~lib/typedarray/Uint16Array#constructor - local.tee $3 - i32.store - local.get $3 - global.set $std/typedarray/forEachSelf - global.get $~lib/memory/__stack_pointer - i32.const 6448 - i32.store offset=4 - local.get $3 - i32.const 0 - i32.const 6448 - i32.const 0 - call $~lib/array/Array#__get - i32.const 65535 - i32.and - call $~lib/typedarray/Uint16Array#__set - global.get $~lib/memory/__stack_pointer - i32.const 6448 - i32.store offset=4 - local.get $3 - i32.const 1 - i32.const 6448 - i32.const 1 - call $~lib/array/Array#__get - i32.const 65535 - i32.and - call $~lib/typedarray/Uint16Array#__set - global.get $~lib/memory/__stack_pointer - i32.const 6448 - i32.store offset=4 - local.get $3 - i32.const 2 - i32.const 6448 - i32.const 2 - call $~lib/array/Array#__get - i32.const 65535 - i32.and - call $~lib/typedarray/Uint16Array#__set - global.get $~lib/memory/__stack_pointer - i32.const 6624 - i32.store offset=8 - i32.const 0 - local.set $0 - local.get $3 - i32.load offset=4 - local.set $4 - local.get $3 - i32.load offset=8 - i32.const 1 - i32.shr_u - local.set $2 - loop $for-loop|047 - local.get $0 - local.get $2 - i32.lt_s - if - local.get $4 - local.get $0 - i32.const 1 - i32.shl - i32.add - i32.load16_u - i32.const 3 - global.set $~argumentsLength - local.get $0 - local.get $3 - i32.const 6624 - i32.load - call_indirect $0 (type $i32_i32_i32_=>_none) - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|047 - end - end - global.get $std/typedarray/forEachCallCount - i32.const 3 - i32.ne - br_if $folding-inner12 - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.add - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 15924 - i32.lt_s - br_if $folding-inner14 - global.get $~lib/memory/__stack_pointer - local.tee $1 - i64.const 0 - i64.store - local.get $1 - i32.const 0 - i32.store offset=8 - i32.const 0 - global.set $std/typedarray/forEachCallCount - local.get $1 - i32.const 3 - call $~lib/typedarray/Int32Array#constructor - local.tee $3 - i32.store - local.get $3 - global.set $std/typedarray/forEachSelf - global.get $~lib/memory/__stack_pointer - i32.const 6448 - i32.store offset=4 - local.get $3 - i32.const 0 - i32.const 6448 - i32.const 0 - call $~lib/array/Array#__get - call $~lib/typedarray/Int32Array#__set - global.get $~lib/memory/__stack_pointer - i32.const 6448 - i32.store offset=4 - local.get $3 - i32.const 1 - i32.const 6448 - i32.const 1 - call $~lib/array/Array#__get - call $~lib/typedarray/Int32Array#__set - global.get $~lib/memory/__stack_pointer - i32.const 6448 - i32.store offset=4 - local.get $3 - i32.const 2 - i32.const 6448 - i32.const 2 - call $~lib/array/Array#__get - call $~lib/typedarray/Int32Array#__set - global.get $~lib/memory/__stack_pointer - i32.const 6656 - i32.store offset=8 - i32.const 0 - local.set $0 - local.get $3 - i32.load offset=4 - local.set $4 - local.get $3 - i32.load offset=8 - i32.const 2 - i32.shr_u - local.set $2 - loop $for-loop|049 - local.get $0 - local.get $2 - i32.lt_s - if - local.get $4 - local.get $0 - i32.const 2 - i32.shl - i32.add - i32.load - i32.const 3 - global.set $~argumentsLength - local.get $0 - local.get $3 - i32.const 6656 - i32.load - call_indirect $0 (type $i32_i32_i32_=>_none) - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|049 - end - end - global.get $std/typedarray/forEachCallCount - i32.const 3 - i32.ne - br_if $folding-inner12 - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.add - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 15924 - i32.lt_s - br_if $folding-inner14 - global.get $~lib/memory/__stack_pointer - local.tee $1 - i64.const 0 - i64.store - local.get $1 - i32.const 0 - i32.store offset=8 - i32.const 0 - global.set $std/typedarray/forEachCallCount - local.get $1 - i32.const 3 - call $~lib/typedarray/Uint32Array#constructor - local.tee $3 - i32.store - local.get $3 - global.set $std/typedarray/forEachSelf - global.get $~lib/memory/__stack_pointer - i32.const 6448 - i32.store offset=4 - local.get $3 - i32.const 0 - i32.const 6448 - i32.const 0 - call $~lib/array/Array#__get - call $~lib/typedarray/Uint32Array#__set - global.get $~lib/memory/__stack_pointer - i32.const 6448 - i32.store offset=4 - local.get $3 - i32.const 1 - i32.const 6448 - i32.const 1 - call $~lib/array/Array#__get - call $~lib/typedarray/Uint32Array#__set - global.get $~lib/memory/__stack_pointer - i32.const 6448 - i32.store offset=4 - local.get $3 - i32.const 2 - i32.const 6448 - i32.const 2 - call $~lib/array/Array#__get - call $~lib/typedarray/Uint32Array#__set - global.get $~lib/memory/__stack_pointer - i32.const 6688 - i32.store offset=8 - i32.const 0 - local.set $0 - local.get $3 - i32.load offset=4 - local.set $4 - local.get $3 - i32.load offset=8 - i32.const 2 - i32.shr_u - local.set $2 - loop $for-loop|051 - local.get $0 - local.get $2 - i32.lt_s - if - local.get $4 - local.get $0 - i32.const 2 - i32.shl - i32.add - i32.load - i32.const 3 - global.set $~argumentsLength - local.get $0 - local.get $3 - i32.const 6688 - i32.load - call_indirect $0 (type $i32_i32_i32_=>_none) - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|051 - end - end - global.get $std/typedarray/forEachCallCount - i32.const 3 - i32.ne - br_if $folding-inner12 - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.add - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 15924 - i32.lt_s - br_if $folding-inner14 - global.get $~lib/memory/__stack_pointer - local.tee $1 - i64.const 0 - i64.store - local.get $1 - i32.const 0 - i32.store offset=8 - i32.const 0 - global.set $std/typedarray/forEachCallCount - local.get $1 - i32.const 3 - call $~lib/typedarray/Int64Array#constructor - local.tee $4 - i32.store - local.get $4 - global.set $std/typedarray/forEachSelf - global.get $~lib/memory/__stack_pointer - i32.const 6448 - i32.store offset=4 - local.get $4 - i32.const 0 - i32.const 6448 - i32.const 0 - call $~lib/array/Array#__get - i64.extend_i32_s - call $~lib/typedarray/Int64Array#__set - global.get $~lib/memory/__stack_pointer - i32.const 6448 - i32.store offset=4 - local.get $4 - i32.const 1 - i32.const 6448 - i32.const 1 - call $~lib/array/Array#__get - i64.extend_i32_s - call $~lib/typedarray/Int64Array#__set - global.get $~lib/memory/__stack_pointer - i32.const 6448 - i32.store offset=4 - local.get $4 - i32.const 2 - i32.const 6448 - i32.const 2 - call $~lib/array/Array#__get - i64.extend_i32_s - call $~lib/typedarray/Int64Array#__set - global.get $~lib/memory/__stack_pointer - i32.const 6720 - i32.store offset=8 - i32.const 0 - local.set $0 - local.get $4 - i32.load offset=4 - local.set $2 - local.get $4 - i32.load offset=8 - i32.const 3 - i32.shr_u - local.set $1 - loop $for-loop|053234 - local.get $0 - local.get $1 - i32.lt_s - if - local.get $2 - local.get $0 - i32.const 3 - i32.shl - i32.add - i64.load - i32.const 3 - global.set $~argumentsLength - local.get $0 - local.get $4 - i32.const 6720 - i32.load - call_indirect $0 (type $i64_i32_i32_=>_none) - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|053234 - end - end - global.get $std/typedarray/forEachCallCount - i32.const 3 - i32.ne - br_if $folding-inner12 - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.add - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 15924 - i32.lt_s - br_if $folding-inner14 - global.get $~lib/memory/__stack_pointer - local.tee $1 - i64.const 0 - i64.store - local.get $1 - i32.const 0 - i32.store offset=8 - i32.const 0 - global.set $std/typedarray/forEachCallCount - local.get $1 - i32.const 3 - call $~lib/typedarray/Uint64Array#constructor - local.tee $4 - i32.store - local.get $4 - global.set $std/typedarray/forEachSelf - global.get $~lib/memory/__stack_pointer - i32.const 6448 - i32.store offset=4 - local.get $4 - i32.const 0 - i32.const 6448 - i32.const 0 - call $~lib/array/Array#__get - i64.extend_i32_s - call $~lib/typedarray/Uint64Array#__set - global.get $~lib/memory/__stack_pointer - i32.const 6448 - i32.store offset=4 - local.get $4 - i32.const 1 - i32.const 6448 - i32.const 1 - call $~lib/array/Array#__get - i64.extend_i32_s - call $~lib/typedarray/Uint64Array#__set - global.get $~lib/memory/__stack_pointer - i32.const 6448 - i32.store offset=4 - local.get $4 - i32.const 2 - i32.const 6448 - i32.const 2 - call $~lib/array/Array#__get - i64.extend_i32_s - call $~lib/typedarray/Uint64Array#__set - global.get $~lib/memory/__stack_pointer - i32.const 6752 - i32.store offset=8 - i32.const 0 - local.set $0 - local.get $4 - i32.load offset=4 - local.set $2 - local.get $4 - i32.load offset=8 - i32.const 3 - i32.shr_u - local.set $1 - loop $for-loop|055 - local.get $0 - local.get $1 - i32.lt_s - if - local.get $2 - local.get $0 - i32.const 3 - i32.shl - i32.add - i64.load - i32.const 3 - global.set $~argumentsLength - local.get $0 - local.get $4 - i32.const 6752 - i32.load - call_indirect $0 (type $i64_i32_i32_=>_none) - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|055 - end - end - global.get $std/typedarray/forEachCallCount - i32.const 3 - i32.ne - br_if $folding-inner12 - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.add - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 15924 - i32.lt_s - br_if $folding-inner14 - global.get $~lib/memory/__stack_pointer - local.tee $1 - i64.const 0 - i64.store - local.get $1 - i32.const 0 - i32.store offset=8 - i32.const 0 - global.set $std/typedarray/forEachCallCount - local.get $1 - i32.const 3 - call $~lib/typedarray/Float32Array#constructor - local.tee $4 - i32.store - local.get $4 - global.set $std/typedarray/forEachSelf - global.get $~lib/memory/__stack_pointer - i32.const 6448 - i32.store offset=4 - local.get $4 - i32.const 0 - i32.const 6448 - i32.const 0 - call $~lib/array/Array#__get - f32.convert_i32_s - call $~lib/typedarray/Float32Array#__set - global.get $~lib/memory/__stack_pointer - i32.const 6448 - i32.store offset=4 - local.get $4 - i32.const 1 - i32.const 6448 - i32.const 1 - call $~lib/array/Array#__get - f32.convert_i32_s - call $~lib/typedarray/Float32Array#__set - global.get $~lib/memory/__stack_pointer - i32.const 6448 - i32.store offset=4 - local.get $4 - i32.const 2 - i32.const 6448 - i32.const 2 - call $~lib/array/Array#__get - f32.convert_i32_s - call $~lib/typedarray/Float32Array#__set - global.get $~lib/memory/__stack_pointer - i32.const 6784 - i32.store offset=8 - i32.const 0 - local.set $0 - local.get $4 - i32.load offset=4 - local.set $2 - local.get $4 - i32.load offset=8 - i32.const 2 - i32.shr_u - local.set $1 - loop $for-loop|057 - local.get $0 - local.get $1 - i32.lt_s - if - local.get $2 - local.get $0 - i32.const 2 - i32.shl - i32.add - f32.load - i32.const 3 - global.set $~argumentsLength - local.get $0 - local.get $4 - i32.const 6784 - i32.load - call_indirect $0 (type $f32_i32_i32_=>_none) - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|057 - end - end - global.get $std/typedarray/forEachCallCount - i32.const 3 - i32.ne - br_if $folding-inner12 - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.add - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 15924 - i32.lt_s - br_if $folding-inner14 - global.get $~lib/memory/__stack_pointer - local.tee $1 - i64.const 0 - i64.store - local.get $1 - i32.const 0 - i32.store offset=8 - i32.const 0 - global.set $std/typedarray/forEachCallCount - local.get $1 - i32.const 3 - call $~lib/typedarray/Float64Array#constructor - local.tee $4 - i32.store - local.get $4 - global.set $std/typedarray/forEachSelf - global.get $~lib/memory/__stack_pointer - i32.const 6448 - i32.store offset=4 - local.get $4 - i32.const 0 - i32.const 6448 - i32.const 0 - call $~lib/array/Array#__get - f64.convert_i32_s - call $~lib/typedarray/Float64Array#__set - global.get $~lib/memory/__stack_pointer - i32.const 6448 - i32.store offset=4 - local.get $4 - i32.const 1 - i32.const 6448 - i32.const 1 - call $~lib/array/Array#__get - f64.convert_i32_s - call $~lib/typedarray/Float64Array#__set - global.get $~lib/memory/__stack_pointer - i32.const 6448 - i32.store offset=4 - local.get $4 - i32.const 2 - i32.const 6448 - i32.const 2 - call $~lib/array/Array#__get - f64.convert_i32_s - call $~lib/typedarray/Float64Array#__set - global.get $~lib/memory/__stack_pointer - i32.const 6816 - i32.store offset=8 - i32.const 0 - local.set $0 - local.get $4 - i32.load offset=4 - local.set $2 - local.get $4 - i32.load offset=8 - i32.const 3 - i32.shr_u - local.set $1 - loop $for-loop|059 - local.get $0 - local.get $1 - i32.lt_s - if - local.get $2 - local.get $0 - i32.const 3 - i32.shl - i32.add - f64.load - i32.const 3 - global.set $~argumentsLength - local.get $0 - local.get $4 - i32.const 6816 - i32.load - call_indirect $0 (type $f64_i32_i32_=>_none) - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|059 - end - end - global.get $std/typedarray/forEachCallCount - i32.const 3 - i32.ne - br_if $folding-inner12 - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.add - global.set $~lib/memory/__stack_pointer - call $std/typedarray/testArrayReverse<~lib/typedarray/Int8Array,i8> - call $std/typedarray/testArrayReverse<~lib/typedarray/Uint8Array,u8> - call $std/typedarray/testArrayReverse<~lib/typedarray/Uint8ClampedArray,u8> - call $std/typedarray/testArrayReverse<~lib/typedarray/Int16Array,i16> - call $std/typedarray/testArrayReverse<~lib/typedarray/Uint16Array,u16> - call $std/typedarray/testArrayReverse<~lib/typedarray/Int32Array,i32> - call $std/typedarray/testArrayReverse<~lib/typedarray/Uint32Array,u32> - call $std/typedarray/testArrayReverse<~lib/typedarray/Int64Array,i64> - call $std/typedarray/testArrayReverse<~lib/typedarray/Uint64Array,u64> - call $std/typedarray/testArrayReverse<~lib/typedarray/Float32Array,f32> - call $std/typedarray/testArrayReverse<~lib/typedarray/Float64Array,f64> - call $std/typedarray/testArrayIndexOfAndLastIndexOf<~lib/typedarray/Int8Array,i8> - call $std/typedarray/testArrayIndexOfAndLastIndexOf<~lib/typedarray/Uint8Array,u8> - call $std/typedarray/testArrayIndexOfAndLastIndexOf<~lib/typedarray/Uint8ClampedArray,u8> - call $std/typedarray/testArrayIndexOfAndLastIndexOf<~lib/typedarray/Int16Array,i16> - call $std/typedarray/testArrayIndexOfAndLastIndexOf<~lib/typedarray/Uint16Array,u16> - call $std/typedarray/testArrayIndexOfAndLastIndexOf<~lib/typedarray/Int32Array,i32> - call $std/typedarray/testArrayIndexOfAndLastIndexOf<~lib/typedarray/Uint32Array,u32> - call $std/typedarray/testArrayIndexOfAndLastIndexOf<~lib/typedarray/Int64Array,i64> - call $std/typedarray/testArrayIndexOfAndLastIndexOf<~lib/typedarray/Uint64Array,u64> - call $std/typedarray/testArrayIndexOfAndLastIndexOf<~lib/typedarray/Float32Array,f32> - call $std/typedarray/testArrayIndexOfAndLastIndexOf<~lib/typedarray/Float64Array,f64> - global.get $~lib/memory/__stack_pointer - i32.const 1 - call $~lib/typedarray/Float64Array#constructor - local.tee $3 - i32.store offset=12 - local.get $3 - i32.const 0 - f64.const nan:0x8000000000000 - call $~lib/typedarray/Float64Array#__set - i32.const 0 - local.set $1 - i32.const -1 - local.set $0 - block $~lib/typedarray/INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.0 - local.get $3 - i32.load offset=8 - i32.const 3 - i32.shr_u - local.tee $4 - i32.const 0 - local.get $4 - select - i32.eqz - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.0 - local.get $3 - i32.load offset=4 - local.set $2 - loop $while-continue|0 - local.get $1 - local.get $4 - i32.lt_s - if - local.get $2 - local.get $1 - local.tee $0 - i32.const 3 - i32.shl - i32.add - f64.load - f64.const nan:0x8000000000000 - f64.eq - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.0 - local.get $0 - i32.const 1 - i32.add - local.set $1 - br $while-continue|0 - end - end - i32.const -1 - local.set $0 - end - local.get $0 - i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 630 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - block $~lib/typedarray/INCLUDES<~lib/typedarray/Float64Array,f64>|inlined.0 (result i32) - i32.const 0 - local.set $0 - i32.const 0 - local.get $3 - i32.load offset=8 - i32.const 3 - i32.shr_u - local.tee $2 - i32.const 0 - local.get $2 - select - i32.eqz - br_if $~lib/typedarray/INCLUDES<~lib/typedarray/Float64Array,f64>|inlined.0 - drop - local.get $3 - i32.load offset=4 - local.set $1 - loop $while-continue|0238 - local.get $0 - local.get $2 - i32.lt_s - if - i32.const 1 - i32.const 1 - local.get $1 - local.get $0 - i32.const 3 - i32.shl - i32.add - f64.load - local.tee $12 - local.get $12 - f64.ne - local.get $12 - f64.const nan:0x8000000000000 - f64.eq - select - br_if $~lib/typedarray/INCLUDES<~lib/typedarray/Float64Array,f64>|inlined.0 - drop - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $while-continue|0238 - end - end - i32.const 0 - end - i32.eqz - if - i32.const 0 - i32.const 1568 - i32.const 631 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 1 - call $~lib/typedarray/Float32Array#constructor - local.tee $3 - i32.store offset=24 - local.get $3 - i32.const 0 - f32.const nan:0x400000 - call $~lib/typedarray/Float32Array#__set - i32.const 0 - local.set $1 - i32.const -1 - local.set $0 - block $~lib/typedarray/INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.0 - local.get $3 - i32.load offset=8 - i32.const 2 - i32.shr_u - local.tee $4 - i32.const 0 - local.get $4 - select - i32.eqz - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.0 - local.get $3 - i32.load offset=4 - local.set $2 - loop $while-continue|0239 - local.get $1 - local.get $4 - i32.lt_s - if - local.get $2 - local.get $1 - local.tee $0 - i32.const 2 - i32.shl - i32.add - f32.load - f32.const nan:0x400000 - f32.eq - br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.0 - local.get $0 - i32.const 1 - i32.add - local.set $1 - br $while-continue|0239 - end - end - i32.const -1 - local.set $0 - end - local.get $0 - i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 636 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - block $~lib/typedarray/INCLUDES<~lib/typedarray/Float32Array,f32>|inlined.0 (result i32) - i32.const 0 - local.set $0 - i32.const 0 - local.get $3 - i32.load offset=8 - i32.const 2 - i32.shr_u - local.tee $2 - i32.const 0 - local.get $2 - select - i32.eqz - br_if $~lib/typedarray/INCLUDES<~lib/typedarray/Float32Array,f32>|inlined.0 - drop - local.get $3 - i32.load offset=4 - local.set $1 - loop $while-continue|062 - local.get $0 - local.get $2 - i32.lt_s - if - i32.const 1 - i32.const 1 - local.get $1 - local.get $0 - i32.const 2 - i32.shl - i32.add - f32.load - local.tee $11 - local.get $11 - f32.ne - local.get $11 - f32.const nan:0x400000 - f32.eq - select - br_if $~lib/typedarray/INCLUDES<~lib/typedarray/Float32Array,f32>|inlined.0 - drop - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $while-continue|062 - end - end - i32.const 0 - end - i32.eqz - if - i32.const 0 - i32.const 1568 - i32.const 637 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 16 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 15924 - i32.lt_s - br_if $folding-inner14 - global.get $~lib/memory/__stack_pointer - local.tee $1 - i64.const 0 - i64.store - local.get $1 - i64.const 0 - i64.store offset=8 - local.get $1 - i32.const 5 - call $~lib/typedarray/Int8Array#constructor - local.tee $2 - i32.store - local.get $2 - i32.const 0 - i32.const 1 - call $~lib/typedarray/Int8Array#__set - local.get $2 - i32.const 1 - i32.const 2 - call $~lib/typedarray/Int8Array#__set - local.get $2 - i32.const 2 - i32.const 3 - call $~lib/typedarray/Int8Array#__set - local.get $2 - i32.const 3 - i32.const 4 - call $~lib/typedarray/Int8Array#__set - local.get $2 - i32.const 4 - i32.const 5 - call $~lib/typedarray/Int8Array#__set - global.get $~lib/memory/__stack_pointer - i32.const 8880 - i32.store offset=12 - local.get $2 - call $~lib/typedarray/Int8Array#join - local.set $0 - global.get $~lib/memory/__stack_pointer - local.tee $1 - local.get $0 - i32.store offset=4 - local.get $1 - i32.const 8912 - i32.store offset=8 - local.get $0 - i32.const 8912 - call $~lib/string/String.__eq - i32.eqz - br_if $folding-inner20 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 15924 - i32.lt_s - br_if $folding-inner14 - global.get $~lib/memory/__stack_pointer - local.tee $1 - i32.const 0 - i32.store - local.get $1 - i32.const 8880 - i32.store - local.get $2 - call $~lib/typedarray/Int8Array#join - local.set $0 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - local.tee $1 - local.get $0 - i32.store offset=4 - local.get $1 - i32.const 8912 - i32.store offset=8 - local.get $0 - i32.const 8912 - call $~lib/string/String.__eq - i32.eqz - br_if $folding-inner21 - global.get $~lib/memory/__stack_pointer - i32.const 16 - i32.add - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 15924 - i32.lt_s - br_if $folding-inner14 - global.get $~lib/memory/__stack_pointer - local.tee $1 - i64.const 0 - i64.store - local.get $1 - i64.const 0 - i64.store offset=8 - local.get $1 - i32.const 5 - call $~lib/typedarray/Uint8Array#constructor - local.tee $2 - i32.store - local.get $2 - i32.const 0 - i32.const 1 - call $~lib/typedarray/Uint8Array#__set - local.get $2 - i32.const 1 - i32.const 2 - call $~lib/typedarray/Uint8Array#__set - local.get $2 - i32.const 2 - i32.const 3 - call $~lib/typedarray/Uint8Array#__set - local.get $2 - i32.const 3 - i32.const 4 - call $~lib/typedarray/Uint8Array#__set - local.get $2 - i32.const 4 - i32.const 5 - call $~lib/typedarray/Uint8Array#__set - global.get $~lib/memory/__stack_pointer - i32.const 8880 - i32.store offset=12 - local.get $2 - call $~lib/typedarray/Uint8Array#join - local.set $0 - global.get $~lib/memory/__stack_pointer - local.tee $1 - local.get $0 - i32.store offset=4 - local.get $1 - i32.const 8912 - i32.store offset=8 - local.get $0 - i32.const 8912 - call $~lib/string/String.__eq - i32.eqz - br_if $folding-inner20 - local.get $2 - call $~lib/typedarray/Uint8Array#toString - local.set $0 - global.get $~lib/memory/__stack_pointer - local.tee $1 - local.get $0 - i32.store offset=4 - local.get $1 - i32.const 8912 - i32.store offset=8 - local.get $0 - i32.const 8912 - call $~lib/string/String.__eq - i32.eqz - br_if $folding-inner21 - global.get $~lib/memory/__stack_pointer - i32.const 16 - i32.add - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 15924 - i32.lt_s - br_if $folding-inner14 - global.get $~lib/memory/__stack_pointer - local.tee $1 - i64.const 0 - i64.store - local.get $1 - i64.const 0 - i64.store offset=8 - local.get $1 - i32.const 5 - call $~lib/typedarray/Uint8ClampedArray#constructor - local.tee $2 - i32.store - local.get $2 - i32.const 0 - i32.const 1 - call $~lib/typedarray/Uint8ClampedArray#__set - local.get $2 - i32.const 1 - i32.const 2 - call $~lib/typedarray/Uint8ClampedArray#__set - local.get $2 - i32.const 2 - i32.const 3 - call $~lib/typedarray/Uint8ClampedArray#__set - local.get $2 - i32.const 3 - i32.const 4 - call $~lib/typedarray/Uint8ClampedArray#__set - local.get $2 - i32.const 4 - i32.const 5 - call $~lib/typedarray/Uint8ClampedArray#__set - global.get $~lib/memory/__stack_pointer - i32.const 8880 - i32.store offset=12 - local.get $2 - call $~lib/typedarray/Uint8Array#join - local.set $0 - global.get $~lib/memory/__stack_pointer - local.tee $1 - local.get $0 - i32.store offset=4 - local.get $1 - i32.const 8912 - i32.store offset=8 - local.get $0 - i32.const 8912 - call $~lib/string/String.__eq - i32.eqz - br_if $folding-inner20 - local.get $2 - call $~lib/typedarray/Uint8Array#toString - local.set $0 - global.get $~lib/memory/__stack_pointer - local.tee $1 - local.get $0 - i32.store offset=4 - local.get $1 - i32.const 8912 - i32.store offset=8 - local.get $0 - i32.const 8912 - call $~lib/string/String.__eq - i32.eqz - br_if $folding-inner21 - global.get $~lib/memory/__stack_pointer - i32.const 16 - i32.add - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 15924 - i32.lt_s - br_if $folding-inner14 - global.get $~lib/memory/__stack_pointer - local.tee $1 - i64.const 0 - i64.store - local.get $1 - i64.const 0 - i64.store offset=8 - local.get $1 - i32.const 5 - call $~lib/typedarray/Int16Array#constructor - local.tee $2 - i32.store - local.get $2 - i32.const 0 - i32.const 1 - call $~lib/typedarray/Int16Array#__set - local.get $2 - i32.const 1 - i32.const 2 - call $~lib/typedarray/Int16Array#__set - local.get $2 - i32.const 2 - i32.const 3 - call $~lib/typedarray/Int16Array#__set - local.get $2 - i32.const 3 - i32.const 4 - call $~lib/typedarray/Int16Array#__set - local.get $2 - i32.const 4 - i32.const 5 - call $~lib/typedarray/Int16Array#__set - global.get $~lib/memory/__stack_pointer - i32.const 8880 - i32.store offset=12 - local.get $2 - call $~lib/typedarray/Int16Array#join - local.set $0 - global.get $~lib/memory/__stack_pointer - local.tee $1 - local.get $0 - i32.store offset=4 - local.get $1 - i32.const 8912 - i32.store offset=8 - local.get $0 - i32.const 8912 - call $~lib/string/String.__eq - i32.eqz - br_if $folding-inner20 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 15924 - i32.lt_s - br_if $folding-inner14 - global.get $~lib/memory/__stack_pointer - local.tee $1 - i32.const 0 - i32.store - local.get $1 - i32.const 8880 - i32.store - local.get $2 - call $~lib/typedarray/Int16Array#join - local.set $0 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - local.tee $1 - local.get $0 - i32.store offset=4 - local.get $1 - i32.const 8912 - i32.store offset=8 - local.get $0 - i32.const 8912 - call $~lib/string/String.__eq - i32.eqz - br_if $folding-inner21 - global.get $~lib/memory/__stack_pointer - i32.const 16 - i32.add - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 15924 - i32.lt_s - br_if $folding-inner14 - global.get $~lib/memory/__stack_pointer - local.tee $1 - i64.const 0 - i64.store - local.get $1 - i64.const 0 - i64.store offset=8 - local.get $1 - i32.const 5 - call $~lib/typedarray/Uint16Array#constructor - local.tee $2 - i32.store - local.get $2 - i32.const 0 - i32.const 1 - call $~lib/typedarray/Uint16Array#__set - local.get $2 - i32.const 1 - i32.const 2 - call $~lib/typedarray/Uint16Array#__set - local.get $2 - i32.const 2 - i32.const 3 - call $~lib/typedarray/Uint16Array#__set - local.get $2 - i32.const 3 - i32.const 4 - call $~lib/typedarray/Uint16Array#__set - local.get $2 - i32.const 4 - i32.const 5 - call $~lib/typedarray/Uint16Array#__set - global.get $~lib/memory/__stack_pointer - i32.const 8880 - i32.store offset=12 - local.get $2 - call $~lib/typedarray/Uint16Array#join - local.set $0 - global.get $~lib/memory/__stack_pointer - local.tee $1 - local.get $0 - i32.store offset=4 - local.get $1 - i32.const 8912 - i32.store offset=8 - local.get $0 - i32.const 8912 - call $~lib/string/String.__eq - i32.eqz - br_if $folding-inner20 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 15924 - i32.lt_s - br_if $folding-inner14 - global.get $~lib/memory/__stack_pointer - local.tee $1 - i32.const 0 - i32.store - local.get $1 - i32.const 8880 - i32.store - local.get $2 - call $~lib/typedarray/Uint16Array#join - local.set $0 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - local.tee $1 - local.get $0 - i32.store offset=4 - local.get $1 - i32.const 8912 - i32.store offset=8 - local.get $0 - i32.const 8912 - call $~lib/string/String.__eq - i32.eqz - br_if $folding-inner21 - global.get $~lib/memory/__stack_pointer - i32.const 16 - i32.add - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 15924 - i32.lt_s - br_if $folding-inner14 - global.get $~lib/memory/__stack_pointer - local.tee $1 - i64.const 0 - i64.store - local.get $1 - i64.const 0 - i64.store offset=8 - local.get $1 - i32.const 5 - call $~lib/typedarray/Int32Array#constructor - local.tee $2 - i32.store - local.get $2 - i32.const 0 - i32.const 1 - call $~lib/typedarray/Int32Array#__set - local.get $2 - i32.const 1 - i32.const 2 - call $~lib/typedarray/Int32Array#__set - local.get $2 - i32.const 2 - i32.const 3 - call $~lib/typedarray/Int32Array#__set - local.get $2 - i32.const 3 - i32.const 4 - call $~lib/typedarray/Int32Array#__set - local.get $2 - i32.const 4 - i32.const 5 - call $~lib/typedarray/Int32Array#__set - global.get $~lib/memory/__stack_pointer - i32.const 8880 - i32.store offset=12 - local.get $2 - call $~lib/typedarray/Int32Array#join - local.set $0 - global.get $~lib/memory/__stack_pointer - local.tee $1 - local.get $0 - i32.store offset=4 - local.get $1 - i32.const 8912 - i32.store offset=8 - local.get $0 - i32.const 8912 - call $~lib/string/String.__eq - i32.eqz - br_if $folding-inner20 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 15924 - i32.lt_s - br_if $folding-inner14 - global.get $~lib/memory/__stack_pointer - local.tee $1 - i32.const 0 - i32.store - local.get $1 - i32.const 8880 - i32.store - local.get $2 - call $~lib/typedarray/Int32Array#join - local.set $0 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - local.tee $1 - local.get $0 - i32.store offset=4 - local.get $1 - i32.const 8912 - i32.store offset=8 - local.get $0 - i32.const 8912 - call $~lib/string/String.__eq - i32.eqz - br_if $folding-inner21 - global.get $~lib/memory/__stack_pointer - i32.const 16 - i32.add - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 15924 - i32.lt_s - br_if $folding-inner14 - global.get $~lib/memory/__stack_pointer - local.tee $1 - i64.const 0 - i64.store - local.get $1 - i64.const 0 - i64.store offset=8 - local.get $1 - i32.const 5 - call $~lib/typedarray/Uint32Array#constructor - local.tee $2 - i32.store - local.get $2 - i32.const 0 - i32.const 1 - call $~lib/typedarray/Uint32Array#__set - local.get $2 - i32.const 1 - i32.const 2 - call $~lib/typedarray/Uint32Array#__set - local.get $2 - i32.const 2 - i32.const 3 - call $~lib/typedarray/Uint32Array#__set - local.get $2 - i32.const 3 - i32.const 4 - call $~lib/typedarray/Uint32Array#__set - local.get $2 - i32.const 4 - i32.const 5 - call $~lib/typedarray/Uint32Array#__set - global.get $~lib/memory/__stack_pointer - i32.const 8880 - i32.store offset=12 - local.get $2 - call $~lib/typedarray/Uint32Array#join - local.set $0 - global.get $~lib/memory/__stack_pointer - local.tee $1 - local.get $0 - i32.store offset=4 - local.get $1 - i32.const 8912 - i32.store offset=8 - local.get $0 - i32.const 8912 - call $~lib/string/String.__eq - i32.eqz - br_if $folding-inner20 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 15924 - i32.lt_s - br_if $folding-inner14 - global.get $~lib/memory/__stack_pointer - local.tee $1 - i32.const 0 - i32.store - local.get $1 - i32.const 8880 - i32.store - local.get $2 - call $~lib/typedarray/Uint32Array#join - local.set $0 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - local.tee $1 - local.get $0 - i32.store offset=4 - local.get $1 - i32.const 8912 - i32.store offset=8 - local.get $0 - i32.const 8912 - call $~lib/string/String.__eq - i32.eqz - br_if $folding-inner21 - global.get $~lib/memory/__stack_pointer - i32.const 16 - i32.add - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 15924 - i32.lt_s - br_if $folding-inner14 - global.get $~lib/memory/__stack_pointer - local.tee $1 - i64.const 0 - i64.store - local.get $1 - i64.const 0 - i64.store offset=8 - local.get $1 - i32.const 5 - call $~lib/typedarray/Int64Array#constructor - local.tee $2 - i32.store - local.get $2 - i32.const 0 - i64.const 1 - call $~lib/typedarray/Int64Array#__set - local.get $2 - i32.const 1 - i64.const 2 - call $~lib/typedarray/Int64Array#__set - local.get $2 - i32.const 2 - i64.const 3 - call $~lib/typedarray/Int64Array#__set - local.get $2 - i32.const 3 - i64.const 4 - call $~lib/typedarray/Int64Array#__set - local.get $2 - i32.const 4 - i64.const 5 - call $~lib/typedarray/Int64Array#__set - global.get $~lib/memory/__stack_pointer - i32.const 8880 - i32.store offset=12 - local.get $2 - call $~lib/typedarray/Int64Array#join - local.set $0 - global.get $~lib/memory/__stack_pointer - local.tee $1 - local.get $0 - i32.store offset=4 - local.get $1 - i32.const 8912 - i32.store offset=8 - local.get $0 - i32.const 8912 - call $~lib/string/String.__eq - i32.eqz - br_if $folding-inner20 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 15924 - i32.lt_s - br_if $folding-inner14 - global.get $~lib/memory/__stack_pointer - local.tee $1 - i32.const 0 - i32.store - local.get $1 - i32.const 8880 - i32.store - local.get $2 - call $~lib/typedarray/Int64Array#join - local.set $0 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - local.tee $1 - local.get $0 - i32.store offset=4 - local.get $1 - i32.const 8912 - i32.store offset=8 - local.get $0 - i32.const 8912 - call $~lib/string/String.__eq - i32.eqz - br_if $folding-inner21 - global.get $~lib/memory/__stack_pointer - i32.const 16 - i32.add - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 15924 - i32.lt_s - br_if $folding-inner14 - global.get $~lib/memory/__stack_pointer - local.tee $1 - i64.const 0 - i64.store - local.get $1 - i64.const 0 - i64.store offset=8 - local.get $1 - i32.const 5 - call $~lib/typedarray/Uint64Array#constructor - local.tee $2 - i32.store - local.get $2 - i32.const 0 - i64.const 1 - call $~lib/typedarray/Uint64Array#__set - local.get $2 - i32.const 1 - i64.const 2 - call $~lib/typedarray/Uint64Array#__set - local.get $2 - i32.const 2 - i64.const 3 - call $~lib/typedarray/Uint64Array#__set - local.get $2 - i32.const 3 - i64.const 4 - call $~lib/typedarray/Uint64Array#__set - local.get $2 - i32.const 4 - i64.const 5 - call $~lib/typedarray/Uint64Array#__set - global.get $~lib/memory/__stack_pointer - i32.const 8880 - i32.store offset=12 - local.get $2 - call $~lib/typedarray/Uint64Array#join - local.set $0 - global.get $~lib/memory/__stack_pointer - local.tee $1 - local.get $0 - i32.store offset=4 - local.get $1 - i32.const 8912 - i32.store offset=8 - local.get $0 - i32.const 8912 - call $~lib/string/String.__eq - i32.eqz - br_if $folding-inner20 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 15924 - i32.lt_s - br_if $folding-inner14 - global.get $~lib/memory/__stack_pointer - local.tee $1 - i32.const 0 - i32.store - local.get $1 - i32.const 8880 - i32.store - local.get $2 - call $~lib/typedarray/Uint64Array#join - local.set $0 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - local.tee $1 - local.get $0 - i32.store offset=4 - local.get $1 - i32.const 8912 - i32.store offset=8 - local.get $0 - i32.const 8912 - call $~lib/string/String.__eq - i32.eqz - br_if $folding-inner21 - global.get $~lib/memory/__stack_pointer - i32.const 16 - i32.add - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 15924 - i32.lt_s - br_if $folding-inner14 - global.get $~lib/memory/__stack_pointer - local.tee $1 - i64.const 0 - i64.store - local.get $1 - i64.const 0 - i64.store offset=8 - local.get $1 - i32.const 5 - call $~lib/typedarray/Float32Array#constructor - local.tee $2 - i32.store - local.get $2 - i32.const 0 - f32.const 1 - call $~lib/typedarray/Float32Array#__set - local.get $2 - i32.const 1 - f32.const 2 - call $~lib/typedarray/Float32Array#__set - local.get $2 - i32.const 2 - f32.const 3 - call $~lib/typedarray/Float32Array#__set - local.get $2 - i32.const 3 - f32.const 4 - call $~lib/typedarray/Float32Array#__set - local.get $2 - i32.const 4 - f32.const 5 - call $~lib/typedarray/Float32Array#__set - global.get $~lib/memory/__stack_pointer - i32.const 8880 - i32.store offset=12 - local.get $2 - call $~lib/typedarray/Float32Array#join - local.set $0 - global.get $~lib/memory/__stack_pointer - local.tee $1 - local.get $0 - i32.store offset=4 - local.get $1 - i32.const 10096 - i32.store offset=8 - local.get $0 - i32.const 10096 - call $~lib/string/String.__eq - i32.eqz - br_if $folding-inner22 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 15924 - i32.lt_s - br_if $folding-inner14 - global.get $~lib/memory/__stack_pointer - local.tee $1 - i32.const 0 - i32.store - local.get $1 - i32.const 8880 - i32.store - local.get $2 - call $~lib/typedarray/Float32Array#join - local.set $0 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - local.tee $1 - local.get $0 - i32.store offset=4 - local.get $1 - i32.const 10096 - i32.store offset=8 - local.get $0 - i32.const 10096 - call $~lib/string/String.__eq - i32.eqz - br_if $folding-inner23 - global.get $~lib/memory/__stack_pointer - i32.const 16 - i32.add - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 15924 - i32.lt_s - br_if $folding-inner14 - global.get $~lib/memory/__stack_pointer - local.tee $1 - i64.const 0 - i64.store - local.get $1 - i64.const 0 - i64.store offset=8 - local.get $1 - i32.const 5 - call $~lib/typedarray/Float64Array#constructor - local.tee $2 - i32.store - local.get $2 - i32.const 0 - f64.const 1 - call $~lib/typedarray/Float64Array#__set - local.get $2 - i32.const 1 - f64.const 2 - call $~lib/typedarray/Float64Array#__set - local.get $2 - i32.const 2 - f64.const 3 - call $~lib/typedarray/Float64Array#__set - local.get $2 - i32.const 3 - f64.const 4 - call $~lib/typedarray/Float64Array#__set - local.get $2 - i32.const 4 - f64.const 5 - call $~lib/typedarray/Float64Array#__set - global.get $~lib/memory/__stack_pointer - i32.const 8880 - i32.store offset=12 - local.get $2 - call $~lib/typedarray/Float64Array#join - local.set $0 - global.get $~lib/memory/__stack_pointer - local.tee $1 - local.get $0 - i32.store offset=4 - local.get $1 - i32.const 10096 - i32.store offset=8 - local.get $0 - i32.const 10096 - call $~lib/string/String.__eq - i32.eqz - br_if $folding-inner22 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 15924 - i32.lt_s - br_if $folding-inner14 - global.get $~lib/memory/__stack_pointer - local.tee $1 - i32.const 0 - i32.store - local.get $1 - i32.const 8880 - i32.store - local.get $2 - call $~lib/typedarray/Float64Array#join - local.set $0 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - local.tee $1 - local.get $0 - i32.store offset=4 - local.get $1 - i32.const 10096 - i32.store offset=8 - local.get $0 - i32.const 10096 - call $~lib/string/String.__eq - i32.eqz - br_if $folding-inner23 - global.get $~lib/memory/__stack_pointer - i32.const 16 - i32.add - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 0 - call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $1 - i32.store offset=12 - i32.const 2 - global.set $~argumentsLength - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.const 0 - call $~lib/typedarray/Uint8Array.wrap@varargs - local.tee $1 - i32.store offset=24 - local.get $1 - i32.load offset=8 - if - i32.const 0 - i32.const 1568 - i32.const 714 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 2 - call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $1 - i32.store offset=12 - i32.const 2 - global.set $~argumentsLength - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.const 2 - call $~lib/typedarray/Uint8Array.wrap@varargs - local.tee $1 - i32.store offset=24 - local.get $1 - i32.load offset=8 - if - i32.const 0 - i32.const 1568 - i32.const 718 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - local.set $2 - global.get $~lib/memory/__stack_pointer - i32.const 20 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 15924 - i32.lt_s - br_if $folding-inner14 - global.get $~lib/memory/__stack_pointer - local.tee $1 - i64.const 0 - i64.store - local.get $1 - i64.const 0 - i64.store offset=8 - local.get $1 - i32.const 0 - i32.store offset=16 - local.get $1 - i32.const 10224 - i32.store - local.get $1 - i32.const 10236 - i32.load - local.tee $4 - call $~lib/typedarray/Int8Array#constructor - local.tee $5 - i32.store offset=4 - loop $for-loop|00 - local.get $2 - local.get $4 - i32.lt_s - if - local.get $5 - local.get $2 - i32.const 10224 - local.get $2 - call $~lib/array/Array#__get - i32.extend8_s - call $~lib/typedarray/Int8Array#__set - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|00 - end - end - global.get $~lib/memory/__stack_pointer - local.tee $0 - local.get $5 - i32.load - local.tee $1 - i32.store offset=8 - local.get $0 - local.get $1 - local.get $5 - i32.load offset=4 - local.get $5 - i32.load - i32.sub - local.get $5 - i32.load offset=8 - local.get $5 - i32.load offset=4 - local.get $5 - i32.load - i32.sub - i32.add - call $~lib/arraybuffer/ArrayBuffer#slice - local.tee $3 - i32.store offset=12 - i32.const 1 - global.set $~argumentsLength - global.get $~lib/memory/__stack_pointer - local.tee $2 - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 15924 - i32.lt_s - br_if $folding-inner14 - global.get $~lib/memory/__stack_pointer - local.tee $0 - i32.const 0 - i32.store - local.get $3 - i32.const 20 - i32.sub - i32.load offset=16 - local.set $1 - local.get $0 - i32.const 12 - i32.const 3 - call $~lib/rt/itcms/__new - local.tee $0 - i32.store - local.get $0 - local.get $3 - i32.store - local.get $0 - local.get $3 - call $~lib/rt/itcms/__link - local.get $0 - local.get $1 - i32.store offset=8 - local.get $0 - local.get $3 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $2 - local.get $0 - i32.store offset=16 - i32.const 0 - local.set $2 - loop $for-loop|1 - local.get $2 - local.get $4 - i32.lt_s - if - local.get $5 - local.get $2 - call $~lib/typedarray/Int8Array#__get - local.get $0 - local.get $2 - call $~lib/typedarray/Int8Array#__get - i32.ne - br_if $folding-inner13 - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|1 - end - end - global.get $~lib/memory/__stack_pointer - i32.const 20 - i32.add - global.set $~lib/memory/__stack_pointer - i32.const 0 - local.set $0 - global.get $~lib/memory/__stack_pointer - i32.const 20 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 15924 - i32.lt_s - br_if $folding-inner14 - global.get $~lib/memory/__stack_pointer - local.tee $1 - i64.const 0 - i64.store - local.get $1 - i64.const 0 - i64.store offset=8 - local.get $1 - i32.const 0 - i32.store offset=16 - local.get $1 - i32.const 10224 - i32.store - local.get $1 - i32.const 10236 - i32.load - local.tee $2 - call $~lib/typedarray/Uint8Array#constructor - local.tee $4 - i32.store offset=4 - loop $for-loop|040 - local.get $0 - local.get $2 - i32.lt_s - if - local.get $4 - local.get $0 - i32.const 10224 - local.get $0 - call $~lib/array/Array#__get - i32.const 255 - i32.and - call $~lib/typedarray/Uint8Array#__set - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|040 - end - end - global.get $~lib/memory/__stack_pointer - local.tee $0 - local.get $4 - i32.load - local.tee $1 - i32.store offset=8 - local.get $0 - local.get $1 - local.get $4 - i32.load offset=4 - local.get $4 - i32.load - i32.sub - local.get $4 - i32.load offset=8 - local.get $4 - i32.load offset=4 - local.get $4 - i32.load - i32.sub - i32.add - call $~lib/arraybuffer/ArrayBuffer#slice - local.tee $1 - i32.store offset=12 - i32.const 1 - global.set $~argumentsLength - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.const 0 - call $~lib/typedarray/Uint8Array.wrap@varargs - local.tee $1 - i32.store offset=16 - i32.const 0 - local.set $0 - loop $for-loop|11 - local.get $0 - local.get $2 - i32.lt_s - if - local.get $4 - local.get $0 - call $~lib/typedarray/Uint8Array#__get - local.get $1 - local.get $0 - call $~lib/typedarray/Uint8Array#__get - i32.ne - br_if $folding-inner13 - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|11 - end - end - global.get $~lib/memory/__stack_pointer - i32.const 20 - i32.add - global.set $~lib/memory/__stack_pointer - i32.const 0 - local.set $2 - global.get $~lib/memory/__stack_pointer - i32.const 20 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 15924 - i32.lt_s - br_if $folding-inner14 - global.get $~lib/memory/__stack_pointer - local.tee $1 - i64.const 0 - i64.store - local.get $1 - i64.const 0 - i64.store offset=8 - local.get $1 - i32.const 0 - i32.store offset=16 - local.get $1 - i32.const 10224 - i32.store - local.get $1 - i32.const 10236 - i32.load - local.tee $4 - call $~lib/typedarray/Uint8ClampedArray#constructor - local.tee $5 - i32.store offset=4 - loop $for-loop|020 - local.get $2 - local.get $4 - i32.lt_s - if - local.get $5 - local.get $2 - i32.const 10224 - local.get $2 - call $~lib/array/Array#__get - i32.const 255 - i32.and - call $~lib/typedarray/Uint8ClampedArray#__set - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|020 - end - end - global.get $~lib/memory/__stack_pointer - local.tee $0 - local.get $5 - i32.load - local.tee $1 - i32.store offset=8 - local.get $0 - local.get $1 - local.get $5 - i32.load offset=4 - local.get $5 - i32.load - i32.sub - local.get $5 - i32.load offset=8 - local.get $5 - i32.load offset=4 - local.get $5 - i32.load - i32.sub - i32.add - call $~lib/arraybuffer/ArrayBuffer#slice - local.tee $3 - i32.store offset=12 - i32.const 1 - global.set $~argumentsLength - global.get $~lib/memory/__stack_pointer - local.tee $2 - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 15924 - i32.lt_s - br_if $folding-inner14 - global.get $~lib/memory/__stack_pointer - local.tee $0 - i32.const 0 - i32.store - local.get $3 - i32.const 20 - i32.sub - i32.load offset=16 - local.set $1 - local.get $0 - i32.const 12 - i32.const 5 - call $~lib/rt/itcms/__new - local.tee $0 - i32.store - local.get $0 - local.get $3 - i32.store - local.get $0 - local.get $3 - call $~lib/rt/itcms/__link - local.get $0 - local.get $1 - i32.store offset=8 - local.get $0 - local.get $3 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $2 - local.get $0 - i32.store offset=16 - i32.const 0 - local.set $2 - loop $for-loop|121 - local.get $2 - local.get $4 - i32.lt_s - if - local.get $5 - local.get $2 - call $~lib/typedarray/Uint8ClampedArray#__get - local.get $0 - local.get $2 - call $~lib/typedarray/Uint8ClampedArray#__get - i32.ne - br_if $folding-inner13 - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|121 - end - end - global.get $~lib/memory/__stack_pointer - i32.const 20 - i32.add - global.set $~lib/memory/__stack_pointer - i32.const 0 - local.set $0 - global.get $~lib/memory/__stack_pointer - i32.const 20 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 15924 - i32.lt_s - br_if $folding-inner14 - global.get $~lib/memory/__stack_pointer - local.tee $1 - i64.const 0 - i64.store - local.get $1 - i64.const 0 - i64.store offset=8 - local.get $1 - i32.const 0 - i32.store offset=16 - local.get $1 - i32.const 10224 - i32.store - local.get $1 - i32.const 10236 - i32.load - local.tee $2 - call $~lib/typedarray/Int16Array#constructor - local.tee $5 - i32.store offset=4 - loop $for-loop|032 - local.get $0 - local.get $2 - i32.lt_s - if - local.get $5 - local.get $0 - i32.const 10224 - local.get $0 - call $~lib/array/Array#__get - i32.extend16_s - call $~lib/typedarray/Int16Array#__set - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|032 - end - end - global.get $~lib/memory/__stack_pointer - local.tee $0 - local.get $5 - i32.load - local.tee $1 - i32.store offset=8 - local.get $0 - local.get $1 - local.get $5 - i32.load offset=4 - local.get $5 - i32.load - i32.sub - local.get $5 - i32.load offset=8 - local.get $5 - i32.load offset=4 - local.get $5 - i32.load - i32.sub - i32.add - call $~lib/arraybuffer/ArrayBuffer#slice - local.tee $4 - i32.store offset=12 - i32.const 1 - global.set $~argumentsLength - global.get $~lib/memory/__stack_pointer - local.tee $0 - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 15924 - i32.lt_s - br_if $folding-inner14 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - local.get $4 - i32.const 20 - i32.sub - i32.load offset=16 - local.tee $1 - i32.const 1 - i32.and - br_if $folding-inner30 - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.const 6 - call $~lib/rt/itcms/__new - local.tee $3 - i32.store - local.get $3 - local.get $4 - i32.store - local.get $3 - local.get $4 - call $~lib/rt/itcms/__link - local.get $3 - local.get $1 - i32.store offset=8 - local.get $3 - local.get $4 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $0 - local.get $3 - i32.store offset=16 - i32.const 0 - local.set $0 - loop $for-loop|133 - local.get $0 - local.get $2 - i32.lt_s - if - local.get $5 - local.get $0 - call $~lib/typedarray/Int16Array#__get - local.get $3 - local.get $0 - call $~lib/typedarray/Int16Array#__get - i32.ne - br_if $folding-inner13 - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|133 - end - end - global.get $~lib/memory/__stack_pointer - i32.const 20 - i32.add - global.set $~lib/memory/__stack_pointer - i32.const 0 - local.set $0 - global.get $~lib/memory/__stack_pointer - i32.const 20 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 15924 - i32.lt_s - br_if $folding-inner14 - global.get $~lib/memory/__stack_pointer - local.tee $1 - i64.const 0 - i64.store - local.get $1 - i64.const 0 - i64.store offset=8 - local.get $1 - i32.const 0 - i32.store offset=16 - local.get $1 - i32.const 10224 - i32.store - local.get $1 - i32.const 10236 - i32.load - local.tee $2 - call $~lib/typedarray/Uint16Array#constructor - local.tee $5 - i32.store offset=4 - loop $for-loop|036 - local.get $0 - local.get $2 - i32.lt_s - if - local.get $5 - local.get $0 - i32.const 10224 - local.get $0 - call $~lib/array/Array#__get - i32.const 65535 - i32.and - call $~lib/typedarray/Uint16Array#__set - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|036 - end - end - global.get $~lib/memory/__stack_pointer - local.tee $0 - local.get $5 - i32.load - local.tee $1 - i32.store offset=8 - local.get $0 - local.get $1 - local.get $5 - i32.load offset=4 - local.get $5 - i32.load - i32.sub - local.get $5 - i32.load offset=8 - local.get $5 - i32.load offset=4 - local.get $5 - i32.load - i32.sub - i32.add - call $~lib/arraybuffer/ArrayBuffer#slice - local.tee $4 - i32.store offset=12 - i32.const 1 - global.set $~argumentsLength - global.get $~lib/memory/__stack_pointer - local.tee $0 - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 15924 - i32.lt_s - br_if $folding-inner14 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - local.get $4 - i32.const 20 - i32.sub - i32.load offset=16 - local.tee $1 - i32.const 1 - i32.and - br_if $folding-inner30 - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.const 7 - call $~lib/rt/itcms/__new - local.tee $3 - i32.store - local.get $3 - local.get $4 - i32.store - local.get $3 - local.get $4 - call $~lib/rt/itcms/__link - local.get $3 - local.get $1 - i32.store offset=8 - local.get $3 - local.get $4 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $0 - local.get $3 - i32.store offset=16 - i32.const 0 - local.set $0 - loop $for-loop|137 - local.get $0 - local.get $2 - i32.lt_s - if - local.get $5 - local.get $0 - call $~lib/typedarray/Uint16Array#__get - local.get $3 - local.get $0 - call $~lib/typedarray/Uint16Array#__get - i32.ne - br_if $folding-inner13 - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|137 - end - end - global.get $~lib/memory/__stack_pointer - i32.const 20 - i32.add - global.set $~lib/memory/__stack_pointer - i32.const 0 - local.set $0 - global.get $~lib/memory/__stack_pointer - i32.const 20 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 15924 - i32.lt_s - br_if $folding-inner14 - global.get $~lib/memory/__stack_pointer - local.tee $1 - i64.const 0 - i64.store - local.get $1 - i64.const 0 - i64.store offset=8 - local.get $1 - i32.const 0 - i32.store offset=16 - local.get $1 - i32.const 10224 - i32.store - local.get $1 - i32.const 10236 - i32.load - local.tee $2 - call $~lib/typedarray/Int32Array#constructor - local.tee $5 - i32.store offset=4 - loop $for-loop|044 - local.get $0 - local.get $2 - i32.lt_s - if - local.get $5 - local.get $0 - i32.const 10224 - local.get $0 - call $~lib/array/Array#__get - call $~lib/typedarray/Int32Array#__set - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|044 - end - end - global.get $~lib/memory/__stack_pointer - local.tee $0 - local.get $5 - i32.load - local.tee $1 - i32.store offset=8 - local.get $0 - local.get $1 - local.get $5 - i32.load offset=4 - local.get $5 - i32.load - i32.sub - local.get $5 - i32.load offset=8 - local.get $5 - i32.load offset=4 - local.get $5 - i32.load - i32.sub - i32.add - call $~lib/arraybuffer/ArrayBuffer#slice - local.tee $4 - i32.store offset=12 - i32.const 1 - global.set $~argumentsLength - global.get $~lib/memory/__stack_pointer - local.tee $0 - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 15924 - i32.lt_s - br_if $folding-inner14 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - local.get $4 - i32.const 20 - i32.sub - i32.load offset=16 - local.tee $1 - i32.const 3 - i32.and - br_if $folding-inner30 - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.const 8 - call $~lib/rt/itcms/__new - local.tee $3 - i32.store - local.get $3 - local.get $4 - i32.store - local.get $3 - local.get $4 - call $~lib/rt/itcms/__link - local.get $3 - local.get $1 - i32.store offset=8 - local.get $3 - local.get $4 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $0 - local.get $3 - i32.store offset=16 - i32.const 0 - local.set $0 - loop $for-loop|145 - local.get $0 - local.get $2 - i32.lt_s - if - local.get $5 - local.get $0 - call $~lib/typedarray/Int32Array#__get - local.get $3 - local.get $0 - call $~lib/typedarray/Int32Array#__get - i32.ne - br_if $folding-inner13 - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|145 - end - end - global.get $~lib/memory/__stack_pointer - i32.const 20 - i32.add - global.set $~lib/memory/__stack_pointer - i32.const 0 - local.set $0 - global.get $~lib/memory/__stack_pointer - i32.const 20 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 15924 - i32.lt_s - br_if $folding-inner14 - global.get $~lib/memory/__stack_pointer - local.tee $1 - i64.const 0 - i64.store - local.get $1 - i64.const 0 - i64.store offset=8 - local.get $1 - i32.const 0 - i32.store offset=16 - local.get $1 - i32.const 10224 - i32.store - local.get $1 - i32.const 10236 - i32.load - local.tee $2 - call $~lib/typedarray/Uint32Array#constructor - local.tee $5 - i32.store offset=4 - loop $for-loop|048 - local.get $0 - local.get $2 - i32.lt_s - if - local.get $5 - local.get $0 - i32.const 10224 - local.get $0 - call $~lib/array/Array#__get - call $~lib/typedarray/Uint32Array#__set - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|048 - end - end - global.get $~lib/memory/__stack_pointer - local.tee $0 - local.get $5 - i32.load - local.tee $1 - i32.store offset=8 - local.get $0 - local.get $1 - local.get $5 - i32.load offset=4 - local.get $5 - i32.load - i32.sub - local.get $5 - i32.load offset=8 - local.get $5 - i32.load offset=4 - local.get $5 - i32.load - i32.sub - i32.add - call $~lib/arraybuffer/ArrayBuffer#slice - local.tee $4 - i32.store offset=12 - i32.const 1 - global.set $~argumentsLength - global.get $~lib/memory/__stack_pointer - local.tee $0 - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 15924 - i32.lt_s - br_if $folding-inner14 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - local.get $4 - i32.const 20 - i32.sub - i32.load offset=16 - local.tee $1 - i32.const 3 - i32.and - br_if $folding-inner30 - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.const 9 - call $~lib/rt/itcms/__new - local.tee $3 - i32.store - local.get $3 - local.get $4 - i32.store - local.get $3 - local.get $4 - call $~lib/rt/itcms/__link - local.get $3 - local.get $1 - i32.store offset=8 - local.get $3 - local.get $4 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $0 - local.get $3 - i32.store offset=16 - i32.const 0 - local.set $0 - loop $for-loop|149 - local.get $0 - local.get $2 - i32.lt_s - if - local.get $5 - local.get $0 - call $~lib/typedarray/Uint32Array#__get - local.get $3 - local.get $0 - call $~lib/typedarray/Uint32Array#__get - i32.ne - br_if $folding-inner13 - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|149 - end - end - global.get $~lib/memory/__stack_pointer - i32.const 20 - i32.add - global.set $~lib/memory/__stack_pointer - i32.const 0 - local.set $0 - global.get $~lib/memory/__stack_pointer - i32.const 20 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 15924 - i32.lt_s - br_if $folding-inner14 - global.get $~lib/memory/__stack_pointer - local.tee $1 - i64.const 0 - i64.store - local.get $1 - i64.const 0 - i64.store offset=8 - local.get $1 - i32.const 0 - i32.store offset=16 - local.get $1 - i32.const 10224 - i32.store - local.get $1 - i32.const 10236 - i32.load - local.tee $2 - call $~lib/typedarray/Int64Array#constructor - local.tee $5 - i32.store offset=4 - loop $for-loop|052 - local.get $0 - local.get $2 - i32.lt_s - if - local.get $5 - local.get $0 - i32.const 10224 - local.get $0 - call $~lib/array/Array#__get - i64.extend_i32_s - call $~lib/typedarray/Int64Array#__set - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|052 - end - end - global.get $~lib/memory/__stack_pointer - local.tee $0 - local.get $5 - i32.load - local.tee $1 - i32.store offset=8 - local.get $0 - local.get $1 - local.get $5 - i32.load offset=4 - local.get $5 - i32.load - i32.sub - local.get $5 - i32.load offset=8 - local.get $5 - i32.load offset=4 - local.get $5 - i32.load - i32.sub - i32.add - call $~lib/arraybuffer/ArrayBuffer#slice - local.tee $4 - i32.store offset=12 - i32.const 1 - global.set $~argumentsLength - global.get $~lib/memory/__stack_pointer - local.tee $0 - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 15924 - i32.lt_s - br_if $folding-inner14 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - local.get $4 - i32.const 20 - i32.sub - i32.load offset=16 - local.tee $1 - i32.const 7 - i32.and - br_if $folding-inner30 - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.const 10 - call $~lib/rt/itcms/__new - local.tee $3 - i32.store - local.get $3 - local.get $4 - i32.store - local.get $3 - local.get $4 - call $~lib/rt/itcms/__link - local.get $3 - local.get $1 - i32.store offset=8 - local.get $3 - local.get $4 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $0 - local.get $3 - i32.store offset=16 - i32.const 0 - local.set $0 - loop $for-loop|153 - local.get $0 - local.get $2 - i32.lt_s - if - local.get $5 - local.get $0 - call $~lib/typedarray/Int64Array#__get - local.get $3 - local.get $0 - call $~lib/typedarray/Int64Array#__get - i64.ne - br_if $folding-inner13 - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|153 - end - end - global.get $~lib/memory/__stack_pointer - i32.const 20 - i32.add - global.set $~lib/memory/__stack_pointer - i32.const 0 - local.set $0 - global.get $~lib/memory/__stack_pointer - i32.const 20 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 15924 - i32.lt_s - br_if $folding-inner14 - global.get $~lib/memory/__stack_pointer - local.tee $1 - i64.const 0 - i64.store - local.get $1 - i64.const 0 - i64.store offset=8 - local.get $1 - i32.const 0 - i32.store offset=16 - local.get $1 - i32.const 10224 - i32.store - local.get $1 - i32.const 10236 - i32.load - local.tee $2 - call $~lib/typedarray/Uint64Array#constructor - local.tee $5 - i32.store offset=4 - loop $for-loop|060 - local.get $0 - local.get $2 - i32.lt_s - if - local.get $5 - local.get $0 - i32.const 10224 - local.get $0 - call $~lib/array/Array#__get - i64.extend_i32_s - call $~lib/typedarray/Uint64Array#__set - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|060 - end - end - global.get $~lib/memory/__stack_pointer - local.tee $0 - local.get $5 - i32.load - local.tee $1 - i32.store offset=8 - local.get $0 - local.get $1 - local.get $5 - i32.load offset=4 - local.get $5 - i32.load - i32.sub - local.get $5 - i32.load offset=8 - local.get $5 - i32.load offset=4 - local.get $5 - i32.load - i32.sub - i32.add - call $~lib/arraybuffer/ArrayBuffer#slice - local.tee $4 - i32.store offset=12 - i32.const 1 - global.set $~argumentsLength - global.get $~lib/memory/__stack_pointer - local.tee $0 - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 15924 - i32.lt_s - br_if $folding-inner14 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - local.get $4 - i32.const 20 - i32.sub - i32.load offset=16 - local.tee $1 - i32.const 7 - i32.and - br_if $folding-inner30 - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.const 11 - call $~lib/rt/itcms/__new - local.tee $3 - i32.store - local.get $3 - local.get $4 - i32.store - local.get $3 - local.get $4 - call $~lib/rt/itcms/__link - local.get $3 - local.get $1 - i32.store offset=8 - local.get $3 - local.get $4 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $0 - local.get $3 - i32.store offset=16 - i32.const 0 - local.set $0 - loop $for-loop|161 - local.get $0 - local.get $2 - i32.lt_s - if - local.get $5 - local.get $0 - call $~lib/typedarray/Uint64Array#__get - local.get $3 - local.get $0 - call $~lib/typedarray/Uint64Array#__get - i64.ne - br_if $folding-inner13 - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|161 - end - end - global.get $~lib/memory/__stack_pointer - i32.const 20 - i32.add - global.set $~lib/memory/__stack_pointer - i32.const 0 - local.set $0 - global.get $~lib/memory/__stack_pointer - i32.const 20 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 15924 - i32.lt_s - br_if $folding-inner14 - global.get $~lib/memory/__stack_pointer - local.tee $1 - i64.const 0 - i64.store - local.get $1 - i64.const 0 - i64.store offset=8 - local.get $1 - i32.const 0 - i32.store offset=16 - local.get $1 - i32.const 10224 - i32.store - local.get $1 - i32.const 10236 - i32.load - local.tee $2 - call $~lib/typedarray/Float32Array#constructor - local.tee $5 - i32.store offset=4 - loop $for-loop|063 - local.get $0 - local.get $2 - i32.lt_s - if - local.get $5 - local.get $0 - i32.const 10224 - local.get $0 - call $~lib/array/Array#__get - f32.convert_i32_s - call $~lib/typedarray/Float32Array#__set - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|063 - end - end - global.get $~lib/memory/__stack_pointer - local.tee $0 - local.get $5 - i32.load - local.tee $1 - i32.store offset=8 - local.get $0 - local.get $1 - local.get $5 - i32.load offset=4 - local.get $5 - i32.load - i32.sub - local.get $5 - i32.load offset=8 - local.get $5 - i32.load offset=4 - local.get $5 - i32.load - i32.sub - i32.add - call $~lib/arraybuffer/ArrayBuffer#slice - local.tee $4 - i32.store offset=12 - i32.const 1 - global.set $~argumentsLength - global.get $~lib/memory/__stack_pointer - local.tee $0 - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 15924 - i32.lt_s - br_if $folding-inner14 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - local.get $4 - i32.const 20 - i32.sub - i32.load offset=16 - local.tee $1 - i32.const 3 - i32.and - br_if $folding-inner30 - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.const 12 - call $~lib/rt/itcms/__new - local.tee $3 - i32.store - local.get $3 - local.get $4 - i32.store - local.get $3 - local.get $4 - call $~lib/rt/itcms/__link - local.get $3 - local.get $1 - i32.store offset=8 - local.get $3 - local.get $4 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $0 - local.get $3 - i32.store offset=16 - i32.const 0 - local.set $0 - loop $for-loop|164 - local.get $0 - local.get $2 - i32.lt_s - if - local.get $5 - local.get $0 - call $~lib/typedarray/Float32Array#__get - local.get $3 - local.get $0 - call $~lib/typedarray/Float32Array#__get - f32.ne - br_if $folding-inner13 - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|164 - end - end - global.get $~lib/memory/__stack_pointer - i32.const 20 - i32.add - global.set $~lib/memory/__stack_pointer - i32.const 0 - local.set $0 - global.get $~lib/memory/__stack_pointer - i32.const 20 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 15924 - i32.lt_s - br_if $folding-inner14 - global.get $~lib/memory/__stack_pointer - local.tee $1 - i64.const 0 - i64.store - local.get $1 - i64.const 0 - i64.store offset=8 - local.get $1 - i32.const 0 - i32.store offset=16 - local.get $1 - i32.const 10224 - i32.store - local.get $1 - i32.const 10236 - i32.load - local.tee $2 - call $~lib/typedarray/Float64Array#constructor - local.tee $5 - i32.store offset=4 - loop $for-loop|066 - local.get $0 - local.get $2 - i32.lt_s - if - local.get $5 - local.get $0 - i32.const 10224 - local.get $0 - call $~lib/array/Array#__get - f64.convert_i32_s - call $~lib/typedarray/Float64Array#__set - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|066 - end - end - global.get $~lib/memory/__stack_pointer - local.tee $0 - local.get $5 - i32.load - local.tee $1 - i32.store offset=8 - local.get $0 - local.get $1 - local.get $5 - i32.load offset=4 - local.get $5 - i32.load - i32.sub - local.get $5 - i32.load offset=8 - local.get $5 - i32.load offset=4 - local.get $5 - i32.load - i32.sub - i32.add - call $~lib/arraybuffer/ArrayBuffer#slice - local.tee $4 - i32.store offset=12 - i32.const 1 - global.set $~argumentsLength - global.get $~lib/memory/__stack_pointer - local.tee $0 - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 15924 - i32.lt_s - br_if $folding-inner14 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - local.get $4 - i32.const 20 - i32.sub - i32.load offset=16 - local.tee $1 - i32.const 7 - i32.and - br_if $folding-inner30 - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.const 13 - call $~lib/rt/itcms/__new - local.tee $3 - i32.store - local.get $3 - local.get $4 - i32.store - local.get $3 - local.get $4 - call $~lib/rt/itcms/__link - local.get $3 - local.get $1 - i32.store offset=8 - local.get $3 - local.get $4 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $0 - local.get $3 - i32.store offset=16 - i32.const 0 - local.set $0 - loop $for-loop|167 - local.get $0 - local.get $2 - i32.lt_s - if - local.get $5 - local.get $0 - call $~lib/typedarray/Float64Array#__get - local.get $3 - local.get $0 - call $~lib/typedarray/Float64Array#__get - f64.ne - br_if $folding-inner13 - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|167 - end - end - global.get $~lib/memory/__stack_pointer - i32.const 20 - i32.add - global.set $~lib/memory/__stack_pointer - call $std/typedarray/testTypedArraySet<~lib/typedarray/Int8Array> - call $std/typedarray/testTypedArraySet<~lib/typedarray/Uint8Array> - call $std/typedarray/testTypedArraySet<~lib/typedarray/Uint8ClampedArray> - call $std/typedarray/testTypedArraySet<~lib/typedarray/Int16Array> - call $std/typedarray/testTypedArraySet<~lib/typedarray/Uint16Array> - call $std/typedarray/testTypedArraySet<~lib/typedarray/Int32Array> - call $std/typedarray/testTypedArraySet<~lib/typedarray/Uint32Array> - call $std/typedarray/testTypedArraySet<~lib/typedarray/Int64Array> - call $std/typedarray/testTypedArraySet<~lib/typedarray/Uint64Array> - call $std/typedarray/testTypedArraySet<~lib/typedarray/Float32Array> - call $std/typedarray/testTypedArraySet<~lib/typedarray/Float64Array> - global.get $~lib/memory/__stack_pointer - i32.const 10 - call $~lib/typedarray/Uint8ClampedArray#constructor - local.tee $8 - i32.store offset=24 - global.get $~lib/memory/__stack_pointer - i32.const 3 - call $~lib/typedarray/Float32Array#constructor - local.tee $1 - i32.store offset=12 - local.get $1 - i32.const 0 - f32.const 400 - call $~lib/typedarray/Float32Array#__set - local.get $1 - i32.const 1 - f32.const nan:0x400000 - call $~lib/typedarray/Float32Array#__set - local.get $1 - i32.const 2 - f32.const inf - call $~lib/typedarray/Float32Array#__set - global.get $~lib/memory/__stack_pointer - i32.const 4 - call $~lib/typedarray/Int64Array#constructor - local.tee $6 - i32.store offset=8 - local.get $6 - i32.const 0 - i64.const -10 - call $~lib/typedarray/Int64Array#__set - local.get $6 - i32.const 1 - i64.const 100 - call $~lib/typedarray/Int64Array#__set - local.get $6 - i32.const 2 - i64.const 10 - call $~lib/typedarray/Int64Array#__set - local.get $6 - i32.const 3 - i64.const 300 - call $~lib/typedarray/Int64Array#__set - global.get $~lib/memory/__stack_pointer - i32.const 2 - call $~lib/typedarray/Int32Array#constructor - local.tee $5 - i32.store offset=16 - local.get $5 - i32.const 0 - i32.const 300 - call $~lib/typedarray/Int32Array#__set - local.get $5 - i32.const 1 - i32.const -1 - call $~lib/typedarray/Int32Array#__set - i32.const 0 - local.set $9 - local.get $8 - i32.load offset=8 - local.get $1 - i32.load offset=8 - i32.const 2 - i32.shr_u - i32.const 1 - i32.add - i32.lt_s - br_if $folding-inner15 - local.get $8 - i32.load offset=4 - i32.const 1 - i32.add - local.set $4 - local.get $1 - i32.load offset=4 - local.set $2 - local.get $1 - i32.load offset=8 - i32.const 2 - i32.shr_u - local.set $0 - loop $for-loop|0242 - local.get $0 - local.get $9 - i32.gt_s - if - local.get $4 - local.get $9 - i32.add - local.get $2 - local.get $9 - i32.const 2 - i32.shl - i32.add - f32.load - local.tee $11 - local.get $11 - f32.sub - f32.const 0 - f32.eq - if (result i32) - f32.const 0 - f32.const 255 - local.get $11 - f32.min - f32.max - i32.trunc_f32_u - else - i32.const 0 - end - i32.store8 - local.get $9 - i32.const 1 - i32.add - local.set $9 - br $for-loop|0242 - end - end - local.get $8 - local.get $6 - i32.const 4 - call $~lib/typedarray/Uint8ClampedArray#set<~lib/typedarray/Int64Array> - i32.const 0 - local.set $0 - local.get $8 - i32.load offset=8 - local.get $5 - i32.load offset=8 - i32.const 2 - i32.shr_u - i32.const 8 - i32.add - i32.lt_s - br_if $folding-inner15 - local.get $8 - i32.load offset=4 - i32.const 8 - i32.add - local.set $4 - local.get $5 - i32.load offset=4 - local.set $2 - local.get $5 - i32.load offset=8 - i32.const 2 - i32.shr_u - local.set $1 - loop $for-loop|0243 - local.get $0 - local.get $1 - i32.lt_s - if - local.get $0 - local.get $4 - i32.add - local.get $2 - local.get $0 - i32.const 2 - i32.shl - i32.add - i32.load - local.tee $3 - i32.const 31 - i32.shr_s - i32.const -1 - i32.xor - local.get $3 - i32.const 255 - local.get $3 - i32.sub - i32.const 31 - i32.shr_s - i32.or - i32.and - i32.store8 - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|0243 - end - end - i32.const 10 - i32.const 0 - i32.const 63 - i32.const 14576 - call $~lib/rt/__newArray - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $8 - local.get $1 - call $std/typedarray/valuesEqual<~lib/typedarray/Uint8ClampedArray> - global.get $~lib/memory/__stack_pointer - i32.const 4 - call $~lib/typedarray/Uint32Array#constructor - local.tee $1 - i32.store offset=28 - local.get $1 - i32.const 0 - i32.const 1 - call $~lib/typedarray/Uint32Array#__set - local.get $1 - i32.const 1 - i32.const 300 - call $~lib/typedarray/Uint32Array#__set - local.get $1 - i32.const 2 - i32.const 100 - call $~lib/typedarray/Uint32Array#__set - local.get $1 - i32.const 3 - i32.const -1 - call $~lib/typedarray/Uint32Array#__set - global.get $~lib/memory/__stack_pointer - i32.const 4 - call $~lib/typedarray/Int16Array#constructor - local.tee $5 - i32.store - local.get $5 - i32.const 0 - i32.const -10 - call $~lib/typedarray/Int16Array#__set - local.get $5 - i32.const 1 - i32.const 100 - call $~lib/typedarray/Int16Array#__set - local.get $5 - i32.const 2 - i32.const 10 - call $~lib/typedarray/Int16Array#__set - local.get $5 - i32.const 3 - i32.const 300 - call $~lib/typedarray/Int16Array#__set - i32.const 0 - local.set $3 - local.get $8 - i32.load offset=8 - local.get $1 - i32.load offset=8 - i32.const 2 - i32.shr_u - i32.lt_s - br_if $folding-inner15 - local.get $8 - i32.load offset=4 - local.set $4 - local.get $1 - i32.load offset=4 - local.set $2 - local.get $1 - i32.load offset=8 - i32.const 2 - i32.shr_u - local.set $0 - loop $for-loop|0244 - local.get $0 - local.get $3 - i32.gt_s - if - local.get $3 - local.get $4 - i32.add - i32.const 255 - local.get $2 - local.get $3 - i32.const 2 - i32.shl - i32.add - i32.load - local.tee $1 - local.get $1 - i32.const 255 - i32.gt_u - select - i32.store8 - local.get $3 - i32.const 1 - i32.add - local.set $3 - br $for-loop|0244 - end - end - local.get $8 - local.get $5 - i32.const 5 - call $~lib/typedarray/Uint8ClampedArray#set<~lib/typedarray/Int16Array> - i32.const 10 - i32.const 0 - i32.const 63 - i32.const 14608 - call $~lib/rt/__newArray - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $8 - local.get $1 - call $std/typedarray/valuesEqual<~lib/typedarray/Uint8ClampedArray> - i32.const 0 - local.set $0 - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 15924 - i32.lt_s - br_if $folding-inner14 - global.get $~lib/memory/__stack_pointer - local.tee $1 - i64.const 0 - i64.store - local.get $1 - i32.const 0 - i32.store offset=8 - local.get $1 - i32.const 3 - call $~lib/typedarray/Int8Array#constructor - local.tee $2 - i32.store - local.get $2 - i32.const 2 - i32.const 1 - call $~lib/typedarray/Int8Array#__set - local.get $2 - i32.const 1 - i32.const 2 - call $~lib/typedarray/Int8Array#__set - local.get $2 - i32.const 0 - i32.const 3 - call $~lib/typedarray/Int8Array#__set - i32.const 0 - global.set $~argumentsLength - global.get $~lib/memory/__stack_pointer - local.tee $1 - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 15924 - i32.lt_s - br_if $folding-inner14 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - block $1of1 - block $0of1 - block $outOfRange - global.get $~argumentsLength - br_table $0of1 $1of1 $outOfRange - end - unreachable - end - i32.const 14640 - local.set $0 - global.get $~lib/memory/__stack_pointer - i32.const 14640 - i32.store - end - local.get $2 - local.get $0 - call $~lib/typedarray/Int8Array#sort - local.set $0 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $1 - local.get $0 - i32.store offset=4 - local.get $0 - i32.const 0 - call $~lib/typedarray/Int8Array#__get - i32.const 1 - i32.ne - br_if $folding-inner24 - local.get $0 - i32.const 1 - call $~lib/typedarray/Int8Array#__get - i32.const 2 - i32.ne - br_if $folding-inner25 - local.get $0 - i32.const 2 - call $~lib/typedarray/Int8Array#__get - i32.const 3 - i32.ne - br_if $folding-inner26 - global.get $~lib/memory/__stack_pointer - i32.const 14672 - i32.store offset=8 - local.get $0 - i32.const 14672 - call $~lib/typedarray/Int8Array#sort - drop - local.get $0 - i32.const 0 - call $~lib/typedarray/Int8Array#__get - i32.const 3 - i32.ne - br_if $folding-inner27 - local.get $0 - i32.const 1 - call $~lib/typedarray/Int8Array#__get - i32.const 2 - i32.ne - br_if $folding-inner28 - local.get $0 - i32.const 2 - call $~lib/typedarray/Int8Array#__get - i32.const 1 - i32.ne - br_if $folding-inner29 - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.add - global.set $~lib/memory/__stack_pointer - i32.const 0 - local.set $0 - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 15924 - i32.lt_s - br_if $folding-inner14 - global.get $~lib/memory/__stack_pointer - local.tee $1 - i64.const 0 - i64.store - local.get $1 - i32.const 0 - i32.store offset=8 - local.get $1 - i32.const 3 - call $~lib/typedarray/Uint8Array#constructor - local.tee $2 - i32.store - local.get $2 - i32.const 2 - i32.const 1 - call $~lib/typedarray/Uint8Array#__set - local.get $2 - i32.const 1 - i32.const 2 - call $~lib/typedarray/Uint8Array#__set - local.get $2 - i32.const 0 - i32.const 3 - call $~lib/typedarray/Uint8Array#__set - i32.const 0 - global.set $~argumentsLength - global.get $~lib/memory/__stack_pointer - local.tee $1 - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 15924 - i32.lt_s - br_if $folding-inner14 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - block $1of143 - block $0of144 - block $outOfRange45 - global.get $~argumentsLength - br_table $0of144 $1of143 $outOfRange45 - end - unreachable - end - i32.const 14704 - local.set $0 - global.get $~lib/memory/__stack_pointer - i32.const 14704 - i32.store - end - local.get $2 - local.get $0 - call $~lib/typedarray/Uint8Array#sort - local.set $0 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $1 - local.get $0 - i32.store offset=4 - local.get $0 - i32.const 0 - call $~lib/typedarray/Uint8Array#__get - i32.const 1 - i32.ne - br_if $folding-inner24 - local.get $0 - i32.const 1 - call $~lib/typedarray/Uint8Array#__get - i32.const 2 - i32.ne - br_if $folding-inner25 - local.get $0 - i32.const 2 - call $~lib/typedarray/Uint8Array#__get - i32.const 3 - i32.ne - br_if $folding-inner26 - global.get $~lib/memory/__stack_pointer - i32.const 14736 - i32.store offset=8 - local.get $0 - i32.const 14736 - call $~lib/typedarray/Uint8Array#sort - drop - local.get $0 - i32.const 0 - call $~lib/typedarray/Uint8Array#__get - i32.const 3 - i32.ne - br_if $folding-inner27 - local.get $0 - i32.const 1 - call $~lib/typedarray/Uint8Array#__get - i32.const 2 - i32.ne - br_if $folding-inner28 - local.get $0 - i32.const 2 - call $~lib/typedarray/Uint8Array#__get - i32.const 1 - i32.ne - br_if $folding-inner29 - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.add - global.set $~lib/memory/__stack_pointer - i32.const 0 - local.set $0 - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 15924 - i32.lt_s - br_if $folding-inner14 - global.get $~lib/memory/__stack_pointer - local.tee $1 - i64.const 0 - i64.store - local.get $1 - i32.const 0 - i32.store offset=8 - local.get $1 - i32.const 3 - call $~lib/typedarray/Uint8ClampedArray#constructor - local.tee $2 - i32.store - local.get $2 - i32.const 2 - i32.const 1 - call $~lib/typedarray/Uint8ClampedArray#__set - local.get $2 - i32.const 1 - i32.const 2 - call $~lib/typedarray/Uint8ClampedArray#__set - local.get $2 - i32.const 0 - i32.const 3 - call $~lib/typedarray/Uint8ClampedArray#__set - i32.const 0 - global.set $~argumentsLength - global.get $~lib/memory/__stack_pointer - local.tee $1 - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 15924 - i32.lt_s - br_if $folding-inner14 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - block $1of147 - block $0of148 - block $outOfRange49 - global.get $~argumentsLength - br_table $0of148 $1of147 $outOfRange49 - end - unreachable - end - i32.const 14768 - local.set $0 - global.get $~lib/memory/__stack_pointer - i32.const 14768 - i32.store - end - local.get $2 - local.get $0 - call $~lib/typedarray/Uint8Array#sort - local.set $0 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $1 - local.get $0 - i32.store offset=4 - local.get $0 - i32.const 0 - call $~lib/typedarray/Uint8ClampedArray#__get - i32.const 1 - i32.ne - br_if $folding-inner24 - local.get $0 - i32.const 1 - call $~lib/typedarray/Uint8ClampedArray#__get - i32.const 2 - i32.ne - br_if $folding-inner25 - local.get $0 - i32.const 2 - call $~lib/typedarray/Uint8ClampedArray#__get - i32.const 3 - i32.ne - br_if $folding-inner26 - global.get $~lib/memory/__stack_pointer - i32.const 14800 - i32.store offset=8 - local.get $0 - i32.const 14800 - call $~lib/typedarray/Uint8Array#sort - drop - local.get $0 - i32.const 0 - call $~lib/typedarray/Uint8ClampedArray#__get - i32.const 3 - i32.ne - br_if $folding-inner27 - local.get $0 - i32.const 1 - call $~lib/typedarray/Uint8ClampedArray#__get - i32.const 2 - i32.ne - br_if $folding-inner28 - local.get $0 - i32.const 2 - call $~lib/typedarray/Uint8ClampedArray#__get - i32.const 1 - i32.ne - br_if $folding-inner29 - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.add - global.set $~lib/memory/__stack_pointer - i32.const 0 - local.set $0 - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 15924 - i32.lt_s - br_if $folding-inner14 - global.get $~lib/memory/__stack_pointer - local.tee $1 - i64.const 0 - i64.store - local.get $1 - i32.const 0 - i32.store offset=8 - local.get $1 - i32.const 3 - call $~lib/typedarray/Int16Array#constructor - local.tee $2 - i32.store - local.get $2 - i32.const 2 - i32.const 1 - call $~lib/typedarray/Int16Array#__set - local.get $2 - i32.const 1 - i32.const 2 - call $~lib/typedarray/Int16Array#__set - local.get $2 - i32.const 0 - i32.const 3 - call $~lib/typedarray/Int16Array#__set - i32.const 0 - global.set $~argumentsLength - global.get $~lib/memory/__stack_pointer - local.tee $1 - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 15924 - i32.lt_s - br_if $folding-inner14 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - block $1of151 - block $0of152 - block $outOfRange53 - global.get $~argumentsLength - br_table $0of152 $1of151 $outOfRange53 - end - unreachable - end - i32.const 14832 - local.set $0 - global.get $~lib/memory/__stack_pointer - i32.const 14832 - i32.store - end - local.get $2 - local.get $0 - call $~lib/typedarray/Int16Array#sort - local.set $0 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $1 - local.get $0 - i32.store offset=4 - local.get $0 - i32.const 0 - call $~lib/typedarray/Int16Array#__get - i32.const 1 - i32.ne - br_if $folding-inner24 - local.get $0 - i32.const 1 - call $~lib/typedarray/Int16Array#__get - i32.const 2 - i32.ne - br_if $folding-inner25 - local.get $0 - i32.const 2 - call $~lib/typedarray/Int16Array#__get - i32.const 3 - i32.ne - br_if $folding-inner26 - global.get $~lib/memory/__stack_pointer - i32.const 14864 - i32.store offset=8 - local.get $0 - i32.const 14864 - call $~lib/typedarray/Int16Array#sort - drop - local.get $0 - i32.const 0 - call $~lib/typedarray/Int16Array#__get - i32.const 3 - i32.ne - br_if $folding-inner27 - local.get $0 - i32.const 1 - call $~lib/typedarray/Int16Array#__get - i32.const 2 - i32.ne - br_if $folding-inner28 - local.get $0 - i32.const 2 - call $~lib/typedarray/Int16Array#__get - i32.const 1 - i32.ne - br_if $folding-inner29 - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.add - global.set $~lib/memory/__stack_pointer - i32.const 0 - local.set $0 - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 15924 - i32.lt_s - br_if $folding-inner14 - global.get $~lib/memory/__stack_pointer - local.tee $1 - i64.const 0 - i64.store - local.get $1 - i32.const 0 - i32.store offset=8 - local.get $1 - i32.const 3 - call $~lib/typedarray/Uint16Array#constructor - local.tee $2 - i32.store - local.get $2 - i32.const 2 - i32.const 1 - call $~lib/typedarray/Uint16Array#__set - local.get $2 - i32.const 1 - i32.const 2 - call $~lib/typedarray/Uint16Array#__set - local.get $2 - i32.const 0 - i32.const 3 - call $~lib/typedarray/Uint16Array#__set - i32.const 0 - global.set $~argumentsLength - global.get $~lib/memory/__stack_pointer - local.tee $1 - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 15924 - i32.lt_s - br_if $folding-inner14 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - block $1of155 - block $0of156 - block $outOfRange57 - global.get $~argumentsLength - br_table $0of156 $1of155 $outOfRange57 - end - unreachable - end - i32.const 14896 - local.set $0 - global.get $~lib/memory/__stack_pointer - i32.const 14896 - i32.store - end - local.get $2 - local.get $0 - call $~lib/typedarray/Uint16Array#sort - local.set $0 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $1 - local.get $0 - i32.store offset=4 - local.get $0 - i32.const 0 - call $~lib/typedarray/Uint16Array#__get - i32.const 1 - i32.ne - br_if $folding-inner24 - local.get $0 - i32.const 1 - call $~lib/typedarray/Uint16Array#__get - i32.const 2 - i32.ne - br_if $folding-inner25 - local.get $0 - i32.const 2 - call $~lib/typedarray/Uint16Array#__get - i32.const 3 - i32.ne - br_if $folding-inner26 - global.get $~lib/memory/__stack_pointer - i32.const 14928 - i32.store offset=8 - local.get $0 - i32.const 14928 - call $~lib/typedarray/Uint16Array#sort - drop - local.get $0 - i32.const 0 - call $~lib/typedarray/Uint16Array#__get - i32.const 3 - i32.ne - br_if $folding-inner27 - local.get $0 - i32.const 1 - call $~lib/typedarray/Uint16Array#__get - i32.const 2 - i32.ne - br_if $folding-inner28 - local.get $0 - i32.const 2 - call $~lib/typedarray/Uint16Array#__get - i32.const 1 - i32.ne - br_if $folding-inner29 - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.add - global.set $~lib/memory/__stack_pointer - i32.const 0 - local.set $0 - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 15924 - i32.lt_s - br_if $folding-inner14 - global.get $~lib/memory/__stack_pointer - local.tee $1 - i64.const 0 - i64.store - local.get $1 - i32.const 0 - i32.store offset=8 - local.get $1 - i32.const 3 - call $~lib/typedarray/Int32Array#constructor - local.tee $2 - i32.store - local.get $2 - i32.const 2 - i32.const 1 - call $~lib/typedarray/Int32Array#__set - local.get $2 - i32.const 1 - i32.const 2 - call $~lib/typedarray/Int32Array#__set - local.get $2 - i32.const 0 - i32.const 3 - call $~lib/typedarray/Int32Array#__set - i32.const 0 - global.set $~argumentsLength - global.get $~lib/memory/__stack_pointer - local.tee $1 - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 15924 - i32.lt_s - br_if $folding-inner14 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - block $1of159 - block $0of160 - block $outOfRange61 - global.get $~argumentsLength - br_table $0of160 $1of159 $outOfRange61 - end - unreachable - end - i32.const 14960 - local.set $0 - global.get $~lib/memory/__stack_pointer - i32.const 14960 - i32.store - end - local.get $2 - local.get $0 - call $~lib/typedarray/Int32Array#sort - local.set $0 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $1 - local.get $0 - i32.store offset=4 - local.get $0 - i32.const 0 - call $~lib/typedarray/Int32Array#__get - i32.const 1 - i32.ne - br_if $folding-inner24 - local.get $0 - i32.const 1 - call $~lib/typedarray/Int32Array#__get - i32.const 2 - i32.ne - br_if $folding-inner25 - local.get $0 - i32.const 2 - call $~lib/typedarray/Int32Array#__get - i32.const 3 - i32.ne - br_if $folding-inner26 - global.get $~lib/memory/__stack_pointer - i32.const 14992 - i32.store offset=8 - local.get $0 - i32.const 14992 - call $~lib/typedarray/Int32Array#sort - drop - local.get $0 - i32.const 0 - call $~lib/typedarray/Int32Array#__get - i32.const 3 - i32.ne - br_if $folding-inner27 - local.get $0 - i32.const 1 - call $~lib/typedarray/Int32Array#__get - i32.const 2 - i32.ne - br_if $folding-inner28 - local.get $0 - i32.const 2 - call $~lib/typedarray/Int32Array#__get - i32.const 1 - i32.ne - br_if $folding-inner29 - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.add - global.set $~lib/memory/__stack_pointer - i32.const 0 - local.set $0 - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 15924 - i32.lt_s - br_if $folding-inner14 - global.get $~lib/memory/__stack_pointer - local.tee $1 - i64.const 0 - i64.store - local.get $1 - i32.const 0 - i32.store offset=8 - local.get $1 - i32.const 3 - call $~lib/typedarray/Uint32Array#constructor - local.tee $2 - i32.store - local.get $2 - i32.const 2 - i32.const 1 - call $~lib/typedarray/Uint32Array#__set - local.get $2 - i32.const 1 - i32.const 2 - call $~lib/typedarray/Uint32Array#__set - local.get $2 - i32.const 0 - i32.const 3 - call $~lib/typedarray/Uint32Array#__set - i32.const 0 - global.set $~argumentsLength - global.get $~lib/memory/__stack_pointer - local.tee $1 - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 15924 - i32.lt_s - br_if $folding-inner14 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - block $1of163 - block $0of164 - block $outOfRange65 - global.get $~argumentsLength - br_table $0of164 $1of163 $outOfRange65 - end - unreachable - end - i32.const 15024 - local.set $0 - global.get $~lib/memory/__stack_pointer - i32.const 15024 - i32.store - end - local.get $2 - local.get $0 - call $~lib/typedarray/Uint32Array#sort - local.set $0 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $1 - local.get $0 - i32.store offset=4 - local.get $0 - i32.const 0 - call $~lib/typedarray/Uint32Array#__get - i32.const 1 - i32.ne - br_if $folding-inner24 - local.get $0 - i32.const 1 - call $~lib/typedarray/Uint32Array#__get - i32.const 2 - i32.ne - br_if $folding-inner25 - local.get $0 - i32.const 2 - call $~lib/typedarray/Uint32Array#__get - i32.const 3 - i32.ne - br_if $folding-inner26 - global.get $~lib/memory/__stack_pointer - i32.const 15056 - i32.store offset=8 - local.get $0 - i32.const 15056 - call $~lib/typedarray/Uint32Array#sort - drop - local.get $0 - i32.const 0 - call $~lib/typedarray/Uint32Array#__get - i32.const 3 - i32.ne - br_if $folding-inner27 - local.get $0 - i32.const 1 - call $~lib/typedarray/Uint32Array#__get - i32.const 2 - i32.ne - br_if $folding-inner28 - local.get $0 - i32.const 2 - call $~lib/typedarray/Uint32Array#__get - i32.const 1 - i32.ne - br_if $folding-inner29 - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.add - global.set $~lib/memory/__stack_pointer - i32.const 0 - local.set $0 - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 15924 - i32.lt_s - br_if $folding-inner14 - global.get $~lib/memory/__stack_pointer - local.tee $1 - i64.const 0 - i64.store - local.get $1 - i32.const 0 - i32.store offset=8 - local.get $1 - i32.const 3 - call $~lib/typedarray/Int64Array#constructor - local.tee $2 - i32.store - local.get $2 - i32.const 2 - i64.const 1 - call $~lib/typedarray/Int64Array#__set - local.get $2 - i32.const 1 - i64.const 2 - call $~lib/typedarray/Int64Array#__set - local.get $2 - i32.const 0 - i64.const 3 - call $~lib/typedarray/Int64Array#__set - i32.const 0 - global.set $~argumentsLength - global.get $~lib/memory/__stack_pointer - local.tee $1 - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 15924 - i32.lt_s - br_if $folding-inner14 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - block $1of167 - block $0of168 - block $outOfRange69 - global.get $~argumentsLength - br_table $0of168 $1of167 $outOfRange69 - end - unreachable - end - i32.const 15088 - local.set $0 - global.get $~lib/memory/__stack_pointer - i32.const 15088 - i32.store - end - local.get $2 - local.get $0 - call $~lib/typedarray/Int64Array#sort - local.set $0 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $1 - local.get $0 - i32.store offset=4 - local.get $0 - i32.const 0 - call $~lib/typedarray/Int64Array#__get - i64.const 1 - i64.ne - br_if $folding-inner24 - local.get $0 - i32.const 1 - call $~lib/typedarray/Int64Array#__get - i64.const 2 - i64.ne - br_if $folding-inner25 - local.get $0 - i32.const 2 - call $~lib/typedarray/Int64Array#__get - i64.const 3 - i64.ne - br_if $folding-inner26 - global.get $~lib/memory/__stack_pointer - i32.const 15120 - i32.store offset=8 - local.get $0 - i32.const 15120 - call $~lib/typedarray/Int64Array#sort - drop - local.get $0 - i32.const 0 - call $~lib/typedarray/Int64Array#__get - i64.const 3 - i64.ne - br_if $folding-inner27 - local.get $0 - i32.const 1 - call $~lib/typedarray/Int64Array#__get - i64.const 2 - i64.ne - br_if $folding-inner28 - local.get $0 - i32.const 2 - call $~lib/typedarray/Int64Array#__get - i64.const 1 - i64.ne - br_if $folding-inner29 - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.add - global.set $~lib/memory/__stack_pointer - i32.const 0 - local.set $0 - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 15924 - i32.lt_s - br_if $folding-inner14 - global.get $~lib/memory/__stack_pointer - local.tee $1 - i64.const 0 - i64.store - local.get $1 - i32.const 0 - i32.store offset=8 - local.get $1 - i32.const 3 - call $~lib/typedarray/Uint64Array#constructor - local.tee $2 - i32.store - local.get $2 - i32.const 2 - i64.const 1 - call $~lib/typedarray/Uint64Array#__set - local.get $2 - i32.const 1 - i64.const 2 - call $~lib/typedarray/Uint64Array#__set - local.get $2 - i32.const 0 - i64.const 3 - call $~lib/typedarray/Uint64Array#__set - i32.const 0 - global.set $~argumentsLength - global.get $~lib/memory/__stack_pointer - local.tee $1 - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 15924 - i32.lt_s - br_if $folding-inner14 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - block $1of171 - block $0of172 - block $outOfRange73 - global.get $~argumentsLength - br_table $0of172 $1of171 $outOfRange73 - end - unreachable - end - i32.const 15152 - local.set $0 - global.get $~lib/memory/__stack_pointer - i32.const 15152 - i32.store - end - local.get $2 - local.get $0 - call $~lib/typedarray/Uint64Array#sort - local.set $0 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $1 - local.get $0 - i32.store offset=4 - local.get $0 - i32.const 0 - call $~lib/typedarray/Uint64Array#__get - i64.const 1 - i64.ne - br_if $folding-inner24 - local.get $0 - i32.const 1 - call $~lib/typedarray/Uint64Array#__get - i64.const 2 - i64.ne - br_if $folding-inner25 - local.get $0 - i32.const 2 - call $~lib/typedarray/Uint64Array#__get - i64.const 3 - i64.ne - br_if $folding-inner26 - global.get $~lib/memory/__stack_pointer - i32.const 15184 - i32.store offset=8 - local.get $0 - i32.const 15184 - call $~lib/typedarray/Uint64Array#sort - drop - local.get $0 - i32.const 0 - call $~lib/typedarray/Uint64Array#__get - i64.const 3 - i64.ne - br_if $folding-inner27 - local.get $0 - i32.const 1 - call $~lib/typedarray/Uint64Array#__get - i64.const 2 - i64.ne - br_if $folding-inner28 - local.get $0 - i32.const 2 - call $~lib/typedarray/Uint64Array#__get - i64.const 1 - i64.ne - br_if $folding-inner29 - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.add - global.set $~lib/memory/__stack_pointer - i32.const 0 - local.set $0 - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 15924 - i32.lt_s - br_if $folding-inner14 - global.get $~lib/memory/__stack_pointer - local.tee $1 - i64.const 0 - i64.store - local.get $1 - i32.const 0 - i32.store offset=8 - local.get $1 - i32.const 3 - call $~lib/typedarray/Float32Array#constructor - local.tee $2 - i32.store - local.get $2 - i32.const 2 - f32.const 1 - call $~lib/typedarray/Float32Array#__set - local.get $2 - i32.const 1 - f32.const 2 - call $~lib/typedarray/Float32Array#__set - local.get $2 - i32.const 0 - f32.const 3 - call $~lib/typedarray/Float32Array#__set - i32.const 0 - global.set $~argumentsLength - global.get $~lib/memory/__stack_pointer - local.tee $1 - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 15924 - i32.lt_s - br_if $folding-inner14 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - block $1of175 - block $0of176 - block $outOfRange77 - global.get $~argumentsLength - br_table $0of176 $1of175 $outOfRange77 - end - unreachable - end - i32.const 15216 - local.set $0 - global.get $~lib/memory/__stack_pointer - i32.const 15216 - i32.store - end - local.get $2 - local.get $0 - call $~lib/typedarray/Float32Array#sort - local.set $0 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $1 - local.get $0 - i32.store offset=4 - local.get $0 - i32.const 0 - call $~lib/typedarray/Float32Array#__get - f32.const 1 - f32.ne - br_if $folding-inner24 - local.get $0 - i32.const 1 - call $~lib/typedarray/Float32Array#__get - f32.const 2 - f32.ne - br_if $folding-inner25 - local.get $0 - i32.const 2 - call $~lib/typedarray/Float32Array#__get - f32.const 3 - f32.ne - br_if $folding-inner26 - global.get $~lib/memory/__stack_pointer - i32.const 15248 - i32.store offset=8 - local.get $0 - i32.const 15248 - call $~lib/typedarray/Float32Array#sort - drop - local.get $0 - i32.const 0 - call $~lib/typedarray/Float32Array#__get - f32.const 3 - f32.ne - br_if $folding-inner27 - local.get $0 - i32.const 1 - call $~lib/typedarray/Float32Array#__get - f32.const 2 - f32.ne - br_if $folding-inner28 - local.get $0 - i32.const 2 - call $~lib/typedarray/Float32Array#__get - f32.const 1 - f32.ne - br_if $folding-inner29 - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.add - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 15924 - i32.lt_s - br_if $folding-inner14 - global.get $~lib/memory/__stack_pointer - local.tee $1 - i64.const 0 - i64.store - local.get $1 - i32.const 0 - i32.store offset=8 - local.get $1 - i32.const 3 - call $~lib/typedarray/Float64Array#constructor - local.tee $1 - i32.store - local.get $1 - i32.const 2 - f64.const 1 - call $~lib/typedarray/Float64Array#__set - local.get $1 - i32.const 1 - f64.const 2 - call $~lib/typedarray/Float64Array#__set - local.get $1 - i32.const 0 - f64.const 3 - call $~lib/typedarray/Float64Array#__set - i32.const 0 - global.set $~argumentsLength - global.get $~lib/memory/__stack_pointer - local.get $1 - call $~lib/typedarray/Float64Array#sort@varargs - local.tee $1 - i32.store offset=4 - local.get $1 - i32.const 0 - call $~lib/typedarray/Float64Array#__get - f64.const 1 - f64.ne - br_if $folding-inner24 - local.get $1 - i32.const 1 - call $~lib/typedarray/Float64Array#__get - f64.const 2 - f64.ne - br_if $folding-inner25 - local.get $1 - i32.const 2 - call $~lib/typedarray/Float64Array#__get - f64.const 3 - f64.ne - br_if $folding-inner26 - global.get $~lib/memory/__stack_pointer - i32.const 15280 - i32.store offset=8 - local.get $1 - i32.const 15280 - call $~lib/typedarray/Float64Array#sort - drop - local.get $1 - i32.const 0 - call $~lib/typedarray/Float64Array#__get - f64.const 3 - f64.ne - br_if $folding-inner27 - local.get $1 - i32.const 1 - call $~lib/typedarray/Float64Array#__get - f64.const 2 - f64.ne - br_if $folding-inner28 - local.get $1 - i32.const 2 - call $~lib/typedarray/Float64Array#__get - f64.const 1 - f64.ne - br_if $folding-inner29 - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.add - global.set $~lib/memory/__stack_pointer - i32.const 32308 - global.set $~lib/memory/__stack_pointer - global.get $~lib/rt/itcms/state - i32.const 0 - i32.gt_s - if - loop $while-continue|063 - global.get $~lib/rt/itcms/state - if - call $~lib/rt/itcms/step - drop - br $while-continue|063 - end - end - end - call $~lib/rt/itcms/step - drop - loop $while-continue|1 - global.get $~lib/rt/itcms/state - if - call $~lib/rt/itcms/step - drop - br $while-continue|1 - end - end - global.get $~lib/rt/itcms/total - i64.extend_i32_u - i64.const 200 - i64.mul - i64.const 100 - i64.div_u - i32.wrap_i64 - i32.const 1024 - i32.add - global.set $~lib/rt/itcms/threshold - global.get $~lib/memory/__stack_pointer - i32.const 32 - i32.add - global.set $~lib/memory/__stack_pointer - return - end - i32.const 0 - i32.const 1568 - i32.const 323 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - i32.const 1568 - i32.const 344 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - i32.const 1568 - i32.const 345 - i32.const 3 - call $~lib/builtins/abort - unreachable - end + global.get $~lib/memory/__stack_pointer + i32.const 15924 + i32.lt_s + if + i32.const 32336 + i32.const 32384 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $0 + i32.load offset=8 + i32.const 3 + i32.shr_u + local.tee $3 + local.get $1 + i32.load offset=12 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 735 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + loop $for-loop|0 + local.get $2 + local.get $3 + i32.lt_s + if + local.get $2 + i32.const 3 + i32.shl + local.tee $4 + local.get $0 + i32.load offset=4 + i32.add + i64.load + local.tee $5 + local.get $4 + local.get $1 + i32.load offset=4 + i32.add + i64.load + local.tee $6 + i64.ne + if + global.get $~lib/memory/__stack_pointer + i32.const 12672 + i32.store + i32.const 12672 + i32.const 3 + local.get $2 + f64.convert_i32_s + local.get $5 + f64.convert_i64_s + local.get $6 + f64.convert_i64_s + f64.const 0 + f64.const 0 + call $~lib/builtins/trace + i32.const 0 + i32.const 1568 + i32.const 741 + i32.const 7 + call $~lib/builtins/abort + unreachable + end + local.get $2 + i32.const 1 + i32.add + local.set $2 + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $std/typedarray/testTypedArraySet<~lib/typedarray/Int64Array> + (local $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 f32) + (local $9 f64) + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 15924 + i32.lt_s + if + i32.const 32336 + i32.const 32384 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.tee $1 + i64.const 0 + i64.store + local.get $1 + i64.const 0 + i64.store offset=8 + local.get $1 + i32.const 0 + i32.store offset=16 + local.get $1 + i32.const 3 + call $~lib/typedarray/Int64Array#constructor + local.tee $3 + i32.store + local.get $3 + i32.const 0 + i64.const 7 + call $~lib/typedarray/Int64Array#__set + local.get $3 + i32.const 1 + i64.const 8 + call $~lib/typedarray/Int64Array#__set + local.get $3 + i32.const 2 + i64.const 9 + call $~lib/typedarray/Int64Array#__set + global.get $~lib/memory/__stack_pointer + i32.const 4 + call $~lib/typedarray/Uint8Array#constructor + local.tee $2 + i32.store offset=4 + local.get $2 + i32.const 0 + i32.const 100 + call $~lib/typedarray/Uint8Array#__set + local.get $2 + i32.const 1 + i32.const 101 + call $~lib/typedarray/Uint8Array#__set + local.get $2 + i32.const 2 + i32.const 102 + call $~lib/typedarray/Uint8Array#__set + local.get $2 + i32.const 3 + i32.const 103 + call $~lib/typedarray/Uint8Array#__set + global.get $~lib/memory/__stack_pointer + i32.const 3 + call $~lib/typedarray/Int16Array#constructor + local.tee $4 + i32.store offset=8 + local.get $4 + i32.const 0 + i32.const 1000 + call $~lib/typedarray/Int16Array#__set + local.get $4 + i32.const 1 + i32.const 1001 + call $~lib/typedarray/Int16Array#__set + local.get $4 + i32.const 2 + i32.const 1002 + call $~lib/typedarray/Int16Array#__set + global.get $~lib/memory/__stack_pointer + i32.const 10 + call $~lib/typedarray/Int64Array#constructor + local.tee $1 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + i32.const 10304 + i32.store offset=16 + local.get $1 + call $~lib/typedarray/Int64Array#set<~lib/array/Array> + i32.const 10 + i32.const 3 + i32.const 67 + i32.const 12560 + call $~lib/rt/__newArray + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=16 + local.get $1 + local.get $0 + call $std/typedarray/valuesEqual<~lib/typedarray/Int64Array> + global.get $~lib/memory/__stack_pointer + i32.const 10384 + i32.store offset=16 + i32.const 0 + local.set $0 + block $folding-inner0 + i32.const 10396 + i32.load + i32.const 3 + i32.add + local.get $1 + i32.load offset=8 + i32.const 3 + i32.shr_u + i32.gt_s + br_if $folding-inner0 + local.get $1 + i32.load offset=4 + i32.const 24 + i32.add + local.set $5 + i32.const 10388 + i32.load + local.set $6 + i32.const 10396 + i32.load + local.set $7 + loop $for-loop|0 + local.get $0 + local.get $7 + i32.lt_s + if + local.get $5 + local.get $0 + i32.const 3 + i32.shl + i32.add + local.get $6 + local.get $0 + i32.const 2 + i32.shl + i32.add + f32.load + local.tee $8 + local.get $8 + f32.sub + f32.const 0 + f32.eq + if (result i64) + local.get $8 + i64.trunc_f32_s + else + i64.const 0 + end + i64.store + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|0 + end + end + i32.const 10 + i32.const 3 + i32.const 67 + i32.const 12720 + call $~lib/rt/__newArray + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=16 + local.get $1 + local.get $0 + call $std/typedarray/valuesEqual<~lib/typedarray/Int64Array> + local.get $1 + local.get $3 + call $~lib/typedarray/Int64Array#set<~lib/typedarray/Int64Array> + i32.const 10 + i32.const 3 + i32.const 67 + i32.const 12832 + call $~lib/rt/__newArray + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=16 + local.get $1 + local.get $0 + call $std/typedarray/valuesEqual<~lib/typedarray/Int64Array> + global.get $~lib/memory/__stack_pointer + i32.const 10480 + i32.store offset=16 + i32.const 0 + local.set $0 + i32.const 10492 + i32.load + i32.const 2 + i32.add + local.get $1 + i32.load offset=8 + i32.const 3 + i32.shr_u + i32.gt_s + br_if $folding-inner0 + local.get $1 + i32.load offset=4 + i32.const 16 + i32.add + local.set $3 + i32.const 10484 + i32.load + local.set $5 + i32.const 10492 + i32.load + local.set $6 + loop $for-loop|00 + local.get $0 + local.get $6 + i32.lt_s + if + local.get $3 + local.get $0 + i32.const 3 + i32.shl + local.tee $7 + i32.add + local.get $5 + local.get $7 + i32.add + f64.load + local.tee $9 + local.get $9 + f64.sub + f64.const 0 + f64.eq + if (result i64) + local.get $9 + i64.trunc_f64_s + else + i64.const 0 + end + i64.store + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|00 + end + end + i32.const 10 + i32.const 3 + i32.const 67 + i32.const 12944 + call $~lib/rt/__newArray + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=16 + local.get $1 + local.get $0 + call $std/typedarray/valuesEqual<~lib/typedarray/Int64Array> + local.get $1 + local.get $2 + call $~lib/typedarray/Int64Array#set<~lib/typedarray/Uint8Array> + local.get $1 + local.get $4 + call $~lib/typedarray/Int64Array#set<~lib/typedarray/Int16Array> + global.get $~lib/memory/__stack_pointer + i32.const 10560 + i32.store offset=16 + local.get $1 + call $~lib/typedarray/Int64Array#set<~lib/array/Array> + i32.const 10 + i32.const 3 + i32.const 67 + i32.const 13056 + call $~lib/rt/__newArray + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=16 + local.get $1 + local.get $2 + call $std/typedarray/valuesEqual<~lib/typedarray/Int64Array> + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + i32.const 1360 + i32.const 1632 + i32.const 1865 + i32.const 47 + call $~lib/builtins/abort + unreachable + ) + (func $std/typedarray/valuesEqual<~lib/typedarray/Uint64Array> (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i64) + (local $6 i64) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 15924 + i32.lt_s + if + i32.const 32336 + i32.const 32384 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $0 + i32.load offset=8 + i32.const 3 + i32.shr_u + local.tee $3 + local.get $1 + i32.load offset=12 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 735 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + loop $for-loop|0 + local.get $2 + local.get $3 + i32.lt_s + if + local.get $2 + i32.const 3 + i32.shl + local.tee $4 + local.get $0 + i32.load offset=4 + i32.add + i64.load + local.tee $5 + local.get $4 + local.get $1 + i32.load offset=4 + i32.add + i64.load + local.tee $6 + i64.ne + if + global.get $~lib/memory/__stack_pointer + i32.const 13280 + i32.store + i32.const 13280 + i32.const 3 + local.get $2 + f64.convert_i32_s + local.get $5 + f64.convert_i64_u + local.get $6 + f64.convert_i64_u + f64.const 0 + f64.const 0 + call $~lib/builtins/trace + i32.const 0 + i32.const 1568 + i32.const 741 + i32.const 7 + call $~lib/builtins/abort + unreachable + end + local.get $2 + i32.const 1 + i32.add + local.set $2 + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $std/typedarray/testTypedArraySet<~lib/typedarray/Uint64Array> + (local $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 f32) + (local $9 f64) + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 15924 + i32.lt_s + if + i32.const 32336 + i32.const 32384 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.tee $1 + i64.const 0 + i64.store + local.get $1 + i64.const 0 + i64.store offset=8 + local.get $1 + i32.const 0 + i32.store offset=16 + local.get $1 + i32.const 3 + call $~lib/typedarray/Int64Array#constructor + local.tee $3 + i32.store + local.get $3 + i32.const 0 + i64.const 7 + call $~lib/typedarray/Int64Array#__set + local.get $3 + i32.const 1 + i64.const 8 + call $~lib/typedarray/Int64Array#__set + local.get $3 + i32.const 2 + i64.const 9 + call $~lib/typedarray/Int64Array#__set + global.get $~lib/memory/__stack_pointer + i32.const 4 + call $~lib/typedarray/Uint8Array#constructor + local.tee $2 + i32.store offset=4 + local.get $2 + i32.const 0 + i32.const 100 + call $~lib/typedarray/Uint8Array#__set + local.get $2 + i32.const 1 + i32.const 101 + call $~lib/typedarray/Uint8Array#__set + local.get $2 + i32.const 2 + i32.const 102 + call $~lib/typedarray/Uint8Array#__set + local.get $2 + i32.const 3 + i32.const 103 + call $~lib/typedarray/Uint8Array#__set + global.get $~lib/memory/__stack_pointer + i32.const 3 + call $~lib/typedarray/Int16Array#constructor + local.tee $4 + i32.store offset=8 + local.get $4 + i32.const 0 + i32.const 1000 + call $~lib/typedarray/Int16Array#__set + local.get $4 + i32.const 1 + i32.const 1001 + call $~lib/typedarray/Int16Array#__set + local.get $4 + i32.const 2 + i32.const 1002 + call $~lib/typedarray/Int16Array#__set + global.get $~lib/memory/__stack_pointer + i32.const 10 + call $~lib/typedarray/Uint64Array#constructor + local.tee $1 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + i32.const 10304 + i32.store offset=16 + local.get $1 + call $~lib/typedarray/Int64Array#set<~lib/array/Array> + i32.const 10 + i32.const 3 + i32.const 68 + i32.const 13168 + call $~lib/rt/__newArray + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=16 + local.get $1 + local.get $0 + call $std/typedarray/valuesEqual<~lib/typedarray/Uint64Array> + global.get $~lib/memory/__stack_pointer + i32.const 10384 + i32.store offset=16 + i32.const 0 + local.set $0 + block $folding-inner0 + i32.const 10396 + i32.load + i32.const 3 + i32.add + local.get $1 + i32.load offset=8 + i32.const 3 + i32.shr_u + i32.gt_s + br_if $folding-inner0 + local.get $1 + i32.load offset=4 + i32.const 24 + i32.add + local.set $5 + i32.const 10388 + i32.load + local.set $6 + i32.const 10396 + i32.load + local.set $7 + loop $for-loop|0 + local.get $0 + local.get $7 + i32.lt_s + if + local.get $5 + local.get $0 + i32.const 3 + i32.shl + i32.add + local.get $6 + local.get $0 + i32.const 2 + i32.shl + i32.add + f32.load + local.tee $8 + local.get $8 + f32.sub + f32.const 0 + f32.eq + if (result i64) + local.get $8 + i64.trunc_f32_u + else + i64.const 0 + end + i64.store + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|0 + end + end + i32.const 10 + i32.const 3 + i32.const 68 + i32.const 13328 + call $~lib/rt/__newArray + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=16 + local.get $1 + local.get $0 + call $std/typedarray/valuesEqual<~lib/typedarray/Uint64Array> + local.get $1 + local.get $3 + call $~lib/typedarray/Int64Array#set<~lib/typedarray/Int64Array> + i32.const 10 + i32.const 3 + i32.const 68 + i32.const 13440 + call $~lib/rt/__newArray + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=16 + local.get $1 + local.get $0 + call $std/typedarray/valuesEqual<~lib/typedarray/Uint64Array> + global.get $~lib/memory/__stack_pointer + i32.const 10480 + i32.store offset=16 + i32.const 0 + local.set $0 + i32.const 10492 + i32.load + i32.const 2 + i32.add + local.get $1 + i32.load offset=8 + i32.const 3 + i32.shr_u + i32.gt_s + br_if $folding-inner0 + local.get $1 + i32.load offset=4 + i32.const 16 + i32.add + local.set $3 + i32.const 10484 + i32.load + local.set $5 + i32.const 10492 + i32.load + local.set $6 + loop $for-loop|00 + local.get $0 + local.get $6 + i32.lt_s + if + local.get $3 + local.get $0 + i32.const 3 + i32.shl + local.tee $7 + i32.add + local.get $5 + local.get $7 + i32.add + f64.load + local.tee $9 + local.get $9 + f64.sub + f64.const 0 + f64.eq + if (result i64) + local.get $9 + i64.trunc_f64_u + else + i64.const 0 + end + i64.store + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|00 + end + end + i32.const 10 + i32.const 3 + i32.const 68 + i32.const 13552 + call $~lib/rt/__newArray + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=16 + local.get $1 + local.get $0 + call $std/typedarray/valuesEqual<~lib/typedarray/Uint64Array> + local.get $1 + local.get $2 + call $~lib/typedarray/Int64Array#set<~lib/typedarray/Uint8Array> + local.get $1 + local.get $4 + call $~lib/typedarray/Int64Array#set<~lib/typedarray/Int16Array> + global.get $~lib/memory/__stack_pointer + i32.const 10560 + i32.store offset=16 + local.get $1 + call $~lib/typedarray/Int64Array#set<~lib/array/Array> + i32.const 10 + i32.const 3 + i32.const 68 + i32.const 13664 + call $~lib/rt/__newArray + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=16 + local.get $1 + local.get $2 + call $std/typedarray/valuesEqual<~lib/typedarray/Uint64Array> + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + i32.const 1360 + i32.const 1632 + i32.const 1865 + i32.const 47 + call $~lib/builtins/abort + unreachable + ) + (func $std/typedarray/valuesEqual<~lib/typedarray/Float32Array> (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 f32) + (local $6 f32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 15924 + i32.lt_s + if + i32.const 32336 + i32.const 32384 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $0 + i32.load offset=8 + i32.const 2 + i32.shr_u + local.tee $3 + local.get $1 + i32.load offset=12 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 735 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + loop $for-loop|0 + local.get $2 + local.get $3 + i32.lt_s + if + local.get $2 + i32.const 2 + i32.shl + local.tee $4 + local.get $0 + i32.load offset=4 + i32.add + f32.load + local.tee $5 + local.get $4 + local.get $1 + i32.load offset=4 + i32.add + f32.load + local.tee $6 + f32.ne + if + global.get $~lib/memory/__stack_pointer + i32.const 13840 + i32.store + i32.const 13840 + i32.const 3 + local.get $2 + f64.convert_i32_s + local.get $5 + f64.promote_f32 + local.get $6 + f64.promote_f32 + f64.const 0 + f64.const 0 + call $~lib/builtins/trace + i32.const 0 + i32.const 1568 + i32.const 741 + i32.const 7 + call $~lib/builtins/abort + unreachable + end + local.get $2 + i32.const 1 + i32.add + local.set $2 + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $std/typedarray/testTypedArraySet<~lib/typedarray/Float32Array> + (local $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 15924 + i32.lt_s + if + i32.const 32336 + i32.const 32384 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.tee $3 + i64.const 0 + i64.store + local.get $3 + i64.const 0 + i64.store offset=8 + local.get $3 + i32.const 0 + i32.store offset=16 + local.get $3 + i32.const 3 + call $~lib/typedarray/Int64Array#constructor + local.tee $2 + i32.store + local.get $2 + i32.const 0 + i64.const 7 + call $~lib/typedarray/Int64Array#__set + local.get $2 + i32.const 1 + i64.const 8 + call $~lib/typedarray/Int64Array#__set + local.get $2 + i32.const 2 + i64.const 9 + call $~lib/typedarray/Int64Array#__set + global.get $~lib/memory/__stack_pointer + i32.const 4 + call $~lib/typedarray/Uint8Array#constructor + local.tee $0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.const 100 + call $~lib/typedarray/Uint8Array#__set + local.get $0 + i32.const 1 + i32.const 101 + call $~lib/typedarray/Uint8Array#__set + local.get $0 + i32.const 2 + i32.const 102 + call $~lib/typedarray/Uint8Array#__set + local.get $0 + i32.const 3 + i32.const 103 + call $~lib/typedarray/Uint8Array#__set + global.get $~lib/memory/__stack_pointer + i32.const 3 + call $~lib/typedarray/Int16Array#constructor + local.tee $4 + i32.store offset=8 + local.get $4 + i32.const 0 + i32.const 1000 + call $~lib/typedarray/Int16Array#__set + local.get $4 + i32.const 1 + i32.const 1001 + call $~lib/typedarray/Int16Array#__set + local.get $4 + i32.const 2 + i32.const 1002 + call $~lib/typedarray/Int16Array#__set + global.get $~lib/memory/__stack_pointer + i32.const 10 + call $~lib/typedarray/Float32Array#constructor + local.tee $3 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + i32.const 10304 + i32.store offset=16 + block $folding-inner0 + i32.const 10316 + i32.load + local.get $3 + i32.load offset=8 + i32.const 2 + i32.shr_u + i32.gt_s + br_if $folding-inner0 + local.get $3 + i32.load offset=4 + local.set $5 + i32.const 10308 + i32.load + local.set $6 + i32.const 10316 + i32.load + local.set $7 + loop $for-loop|0 + local.get $1 + local.get $7 + i32.lt_s + if + local.get $5 + local.get $1 + i32.const 2 + i32.shl + local.tee $8 + i32.add + local.get $6 + local.get $8 + i32.add + i32.load + f32.convert_i32_s + f32.store + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|0 + end + end + i32.const 10 + i32.const 2 + i32.const 61 + i32.const 13776 + call $~lib/rt/__newArray + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=16 + local.get $3 + local.get $1 + call $std/typedarray/valuesEqual<~lib/typedarray/Float32Array> + global.get $~lib/memory/__stack_pointer + i32.const 10384 + i32.store offset=16 + i32.const 10396 + i32.load + i32.const 3 + i32.add + local.get $3 + i32.load offset=8 + i32.const 2 + i32.shr_u + i32.gt_s + br_if $folding-inner0 + local.get $3 + i32.load offset=4 + i32.const 12 + i32.add + i32.const 10388 + i32.load + i32.const 10392 + i32.load + call $~lib/memory/memory.copy + i32.const 10 + i32.const 2 + i32.const 61 + i32.const 13888 + call $~lib/rt/__newArray + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=16 + local.get $3 + local.get $1 + call $std/typedarray/valuesEqual<~lib/typedarray/Float32Array> + i32.const 0 + local.set $1 + local.get $2 + i32.load offset=8 + i32.const 3 + i32.shr_u + i32.const 6 + i32.add + local.get $3 + i32.load offset=8 + i32.const 2 + i32.shr_u + i32.gt_s + br_if $folding-inner0 + local.get $3 + i32.load offset=4 + i32.const 24 + i32.add + local.set $5 + local.get $2 + i32.load offset=4 + local.set $6 + local.get $2 + i32.load offset=8 + i32.const 3 + i32.shr_u + local.set $2 + loop $for-loop|00 + local.get $1 + local.get $2 + i32.lt_s + if + local.get $5 + local.get $1 + i32.const 2 + i32.shl + i32.add + local.get $6 + local.get $1 + i32.const 3 + i32.shl + i32.add + i64.load + f32.convert_i64_s + f32.store + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|00 + end + end + i32.const 10 + i32.const 2 + i32.const 61 + i32.const 13952 + call $~lib/rt/__newArray + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=16 + local.get $3 + local.get $2 + call $std/typedarray/valuesEqual<~lib/typedarray/Float32Array> + i32.const 0 + local.set $2 + local.get $0 + i32.load offset=8 + local.get $3 + i32.load offset=8 + i32.const 2 + i32.shr_u + i32.gt_s + br_if $folding-inner0 + local.get $3 + i32.load offset=4 + local.set $1 + local.get $0 + i32.load offset=4 + local.set $5 + local.get $0 + i32.load offset=8 + local.set $0 + loop $for-loop|01 + local.get $0 + local.get $2 + i32.gt_s + if + local.get $1 + local.get $2 + i32.const 2 + i32.shl + i32.add + local.get $2 + local.get $5 + i32.add + i32.load8_u + f32.convert_i32_u + f32.store + local.get $2 + i32.const 1 + i32.add + local.set $2 + br $for-loop|01 + end + end + i32.const 0 + local.set $0 + local.get $4 + i32.load offset=8 + i32.const 1 + i32.shr_u + i32.const 4 + i32.add + local.get $3 + i32.load offset=8 + i32.const 2 + i32.shr_u + i32.gt_s + br_if $folding-inner0 + local.get $3 + i32.load offset=4 + i32.const 16 + i32.add + local.set $2 + local.get $4 + i32.load offset=4 + local.set $1 + local.get $4 + i32.load offset=8 + i32.const 1 + i32.shr_u + local.set $4 + loop $for-loop|02 + local.get $0 + local.get $4 + i32.lt_s + if + local.get $2 + local.get $0 + i32.const 2 + i32.shl + i32.add + local.get $1 + local.get $0 + i32.const 1 + i32.shl + i32.add + i32.load16_s + f32.convert_i32_s + f32.store + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|02 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 10560 + i32.store offset=16 + i32.const 0 + local.set $0 + i32.const 10572 + i32.load + i32.const 7 + i32.add + local.get $3 + i32.load offset=8 + i32.const 2 + i32.shr_u + i32.gt_s + br_if $folding-inner0 + local.get $3 + i32.load offset=4 + i32.const 28 + i32.add + local.set $2 + i32.const 10564 + i32.load + local.set $4 + i32.const 10572 + i32.load + local.set $1 + loop $for-loop|03 + local.get $0 + local.get $1 + i32.lt_s + if + local.get $2 + local.get $0 + i32.const 2 + i32.shl + i32.add + local.get $0 + local.get $4 + i32.add + i32.load8_s + f32.convert_i32_s + f32.store + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|03 + end + end + i32.const 10 + i32.const 2 + i32.const 61 + i32.const 14016 + call $~lib/rt/__newArray + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=16 + local.get $3 + local.get $0 + call $std/typedarray/valuesEqual<~lib/typedarray/Float32Array> + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + i32.const 1360 + i32.const 1632 + i32.const 1865 + i32.const 47 + call $~lib/builtins/abort + unreachable + ) + (func $std/typedarray/valuesEqual<~lib/typedarray/Float64Array> (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 f64) + (local $6 f64) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 15924 + i32.lt_s + if + i32.const 32336 + i32.const 32384 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $0 + i32.load offset=8 + i32.const 3 + i32.shr_u + local.tee $3 + local.get $1 + i32.load offset=12 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 735 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + loop $for-loop|0 + local.get $2 + local.get $3 + i32.lt_s + if + local.get $2 + i32.const 3 + i32.shl + local.tee $4 + local.get $0 + i32.load offset=4 + i32.add + f64.load + local.tee $5 + local.get $4 + local.get $1 + i32.load offset=4 + i32.add + f64.load + local.tee $6 + f64.ne + if + global.get $~lib/memory/__stack_pointer + i32.const 14192 + i32.store + i32.const 14192 + i32.const 3 + local.get $2 + f64.convert_i32_s + local.get $5 + local.get $6 + f64.const 0 + f64.const 0 + call $~lib/builtins/trace + i32.const 0 + i32.const 1568 + i32.const 741 + i32.const 7 + call $~lib/builtins/abort + unreachable + end + local.get $2 + i32.const 1 + i32.add + local.set $2 + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $std/typedarray/testTypedArraySet<~lib/typedarray/Float64Array> + (local $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 15924 + i32.lt_s + if + i32.const 32336 + i32.const 32384 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.tee $3 + i64.const 0 + i64.store + local.get $3 + i64.const 0 + i64.store offset=8 + local.get $3 + i32.const 0 + i32.store offset=16 + local.get $3 + i32.const 3 + call $~lib/typedarray/Int64Array#constructor + local.tee $2 + i32.store + local.get $2 + i32.const 0 + i64.const 7 + call $~lib/typedarray/Int64Array#__set + local.get $2 + i32.const 1 + i64.const 8 + call $~lib/typedarray/Int64Array#__set + local.get $2 + i32.const 2 + i64.const 9 + call $~lib/typedarray/Int64Array#__set + global.get $~lib/memory/__stack_pointer + i32.const 4 + call $~lib/typedarray/Uint8Array#constructor + local.tee $1 + i32.store offset=4 + local.get $1 + i32.const 0 + i32.const 100 + call $~lib/typedarray/Uint8Array#__set + local.get $1 + i32.const 1 + i32.const 101 + call $~lib/typedarray/Uint8Array#__set + local.get $1 + i32.const 2 + i32.const 102 + call $~lib/typedarray/Uint8Array#__set + local.get $1 + i32.const 3 + i32.const 103 + call $~lib/typedarray/Uint8Array#__set + global.get $~lib/memory/__stack_pointer + i32.const 3 + call $~lib/typedarray/Int16Array#constructor + local.tee $4 + i32.store offset=8 + local.get $4 + i32.const 0 + i32.const 1000 + call $~lib/typedarray/Int16Array#__set + local.get $4 + i32.const 1 + i32.const 1001 + call $~lib/typedarray/Int16Array#__set + local.get $4 + i32.const 2 + i32.const 1002 + call $~lib/typedarray/Int16Array#__set + global.get $~lib/memory/__stack_pointer + i32.const 10 + call $~lib/typedarray/Float64Array#constructor + local.tee $3 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + i32.const 10304 + i32.store offset=16 + block $folding-inner0 + i32.const 10316 + i32.load + local.get $3 + i32.load offset=8 + i32.const 3 + i32.shr_u + i32.gt_s + br_if $folding-inner0 + local.get $3 + i32.load offset=4 + local.set $5 + i32.const 10308 + i32.load + local.set $6 + i32.const 10316 + i32.load + local.set $7 + loop $for-loop|0 + local.get $0 + local.get $7 + i32.lt_s + if + local.get $5 + local.get $0 + i32.const 3 + i32.shl + i32.add + local.get $6 + local.get $0 + i32.const 2 + i32.shl + i32.add + i32.load + f64.convert_i32_s + f64.store + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|0 + end + end + i32.const 10 + i32.const 3 + i32.const 62 + i32.const 14080 + call $~lib/rt/__newArray + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=16 + local.get $3 + local.get $0 + call $std/typedarray/valuesEqual<~lib/typedarray/Float64Array> + global.get $~lib/memory/__stack_pointer + i32.const 10384 + i32.store offset=16 + i32.const 0 + local.set $0 + i32.const 10396 + i32.load + i32.const 3 + i32.add + local.get $3 + i32.load offset=8 + i32.const 3 + i32.shr_u + i32.gt_s + br_if $folding-inner0 + local.get $3 + i32.load offset=4 + i32.const 24 + i32.add + local.set $5 + i32.const 10388 + i32.load + local.set $6 + i32.const 10396 + i32.load + local.set $7 + loop $for-loop|00 + local.get $0 + local.get $7 + i32.lt_s + if + local.get $5 + local.get $0 + i32.const 3 + i32.shl + i32.add + local.get $6 + local.get $0 + i32.const 2 + i32.shl + i32.add + f32.load + f64.promote_f32 + f64.store + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|00 + end + end + i32.const 10 + i32.const 3 + i32.const 62 + i32.const 14240 + call $~lib/rt/__newArray + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=16 + local.get $3 + local.get $0 + call $std/typedarray/valuesEqual<~lib/typedarray/Float64Array> + i32.const 0 + local.set $0 + local.get $2 + i32.load offset=8 + i32.const 3 + i32.shr_u + i32.const 6 + i32.add + local.get $3 + i32.load offset=8 + i32.const 3 + i32.shr_u + i32.gt_s + br_if $folding-inner0 + local.get $3 + i32.load offset=4 + i32.const 48 + i32.add + local.set $5 + local.get $2 + i32.load offset=4 + local.set $6 + local.get $2 + i32.load offset=8 + i32.const 3 + i32.shr_u + local.set $2 + loop $for-loop|01 + local.get $0 + local.get $2 + i32.lt_s + if + local.get $5 + local.get $0 + i32.const 3 + i32.shl + local.tee $7 + i32.add + local.get $6 + local.get $7 + i32.add + i64.load + f64.convert_i64_s + f64.store + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|01 + end + end + i32.const 10 + i32.const 3 + i32.const 62 + i32.const 14352 + call $~lib/rt/__newArray + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=16 + local.get $3 + local.get $2 + call $std/typedarray/valuesEqual<~lib/typedarray/Float64Array> + i32.const 0 + local.set $2 + local.get $1 + i32.load offset=8 + local.get $3 + i32.load offset=8 + i32.const 3 + i32.shr_u + i32.gt_s + br_if $folding-inner0 + local.get $3 + i32.load offset=4 + local.set $0 + local.get $1 + i32.load offset=4 + local.set $5 + local.get $1 + i32.load offset=8 + local.set $1 + loop $for-loop|02 + local.get $1 + local.get $2 + i32.gt_s + if + local.get $0 + local.get $2 + i32.const 3 + i32.shl + i32.add + local.get $2 + local.get $5 + i32.add + i32.load8_u + f64.convert_i32_u + f64.store + local.get $2 + i32.const 1 + i32.add + local.set $2 + br $for-loop|02 + end + end + i32.const 0 + local.set $1 + local.get $4 + i32.load offset=8 + i32.const 1 + i32.shr_u + i32.const 4 + i32.add + local.get $3 + i32.load offset=8 + i32.const 3 + i32.shr_u + i32.gt_s + br_if $folding-inner0 + local.get $3 + i32.load offset=4 + i32.const 32 + i32.add + local.set $2 + local.get $4 + i32.load offset=4 + local.set $0 + local.get $4 + i32.load offset=8 + i32.const 1 + i32.shr_u + local.set $4 + loop $for-loop|03 + local.get $1 + local.get $4 + i32.lt_s + if + local.get $2 + local.get $1 + i32.const 3 + i32.shl + i32.add + local.get $0 + local.get $1 + i32.const 1 + i32.shl + i32.add + i32.load16_s + f64.convert_i32_s + f64.store + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|03 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 10560 + i32.store offset=16 + i32.const 0 + local.set $1 + i32.const 10572 + i32.load + i32.const 7 + i32.add + local.get $3 + i32.load offset=8 + i32.const 3 + i32.shr_u + i32.gt_s + br_if $folding-inner0 + local.get $3 + i32.load offset=4 + i32.const 56 + i32.add + local.set $2 + i32.const 10564 + i32.load + local.set $4 + i32.const 10572 + i32.load + local.set $0 + loop $for-loop|04 + local.get $0 + local.get $1 + i32.gt_s + if + local.get $2 + local.get $1 + i32.const 3 + i32.shl + i32.add + local.get $1 + local.get $4 + i32.add + i32.load8_s + f64.convert_i32_s + f64.store + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|04 + end + end + i32.const 10 + i32.const 3 + i32.const 62 + i32.const 14464 + call $~lib/rt/__newArray + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=16 + local.get $3 + local.get $1 + call $std/typedarray/valuesEqual<~lib/typedarray/Float64Array> + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + i32.const 1360 + i32.const 1632 + i32.const 1865 + i32.const 47 + call $~lib/builtins/abort + unreachable + ) + (func $std/typedarray/testArraySort<~lib/typedarray/Int8Array,i8> + (local $0 i32) + (local $1 i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 15924 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.tee $0 + i64.const 0 + i64.store + local.get $0 + i32.const 0 + i32.store offset=8 + local.get $0 + i32.const 3 + call $~lib/typedarray/Int8Array#constructor + local.tee $0 + i32.store + local.get $0 + i32.const 2 + i32.const 1 + call $~lib/typedarray/Int8Array#__set + local.get $0 + i32.const 1 + i32.const 2 + call $~lib/typedarray/Int8Array#__set + local.get $0 + i32.const 0 + i32.const 3 + call $~lib/typedarray/Int8Array#__set + i32.const 0 + global.set $~argumentsLength + global.get $~lib/memory/__stack_pointer + local.tee $1 + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 15924 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + block $1of1 + block $0of1 + block $outOfRange + global.get $~argumentsLength + br_table $0of1 $1of1 $outOfRange + end + unreachable + end + i32.const 14640 + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 14640 + i32.store + end + local.get $0 + local.get $2 + call $~lib/typedarray/Int8Array#sort + local.set $0 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + call $~lib/typedarray/Int8Array#__get + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 855 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 1 + call $~lib/typedarray/Int8Array#__get + i32.const 2 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 856 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 2 + call $~lib/typedarray/Int8Array#__get + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 857 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 14672 + i32.store offset=8 + local.get $0 + i32.const 14672 + call $~lib/typedarray/Int8Array#sort + drop + local.get $0 + i32.const 0 + call $~lib/typedarray/Int8Array#__get + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 859 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 1 + call $~lib/typedarray/Int8Array#__get + i32.const 2 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 860 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 2 + call $~lib/typedarray/Int8Array#__get + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 861 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + i32.const 32336 + i32.const 32384 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) + (func $std/typedarray/testArraySort<~lib/typedarray/Uint8Array,u8> + (local $0 i32) + (local $1 i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 15924 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.tee $0 + i64.const 0 + i64.store + local.get $0 + i32.const 0 + i32.store offset=8 + local.get $0 + i32.const 3 + call $~lib/typedarray/Uint8Array#constructor + local.tee $0 + i32.store + local.get $0 + i32.const 2 + i32.const 1 + call $~lib/typedarray/Uint8Array#__set + local.get $0 + i32.const 1 + i32.const 2 + call $~lib/typedarray/Uint8Array#__set + local.get $0 + i32.const 0 + i32.const 3 + call $~lib/typedarray/Uint8Array#__set + i32.const 0 + global.set $~argumentsLength + global.get $~lib/memory/__stack_pointer + local.tee $1 + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 15924 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + block $1of1 + block $0of1 + block $outOfRange + global.get $~argumentsLength + br_table $0of1 $1of1 $outOfRange + end + unreachable + end + i32.const 14704 + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 14704 + i32.store + end + local.get $0 + local.get $2 + call $~lib/typedarray/Uint8Array#sort + local.set $0 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + call $~lib/typedarray/Uint8Array#__get + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 855 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 1 + call $~lib/typedarray/Uint8Array#__get + i32.const 2 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 856 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 2 + call $~lib/typedarray/Uint8Array#__get + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 857 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 14736 + i32.store offset=8 + local.get $0 + i32.const 14736 + call $~lib/typedarray/Uint8Array#sort + drop + local.get $0 + i32.const 0 + call $~lib/typedarray/Uint8Array#__get + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 859 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 1 + call $~lib/typedarray/Uint8Array#__get + i32.const 2 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 860 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 2 + call $~lib/typedarray/Uint8Array#__get + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 861 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + i32.const 32336 + i32.const 32384 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) + (func $std/typedarray/testArraySort<~lib/typedarray/Uint8ClampedArray,u8> + (local $0 i32) + (local $1 i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 15924 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.tee $0 + i64.const 0 + i64.store + local.get $0 + i32.const 0 + i32.store offset=8 + local.get $0 + i32.const 3 + call $~lib/typedarray/Uint8ClampedArray#constructor + local.tee $0 + i32.store + local.get $0 + i32.const 2 + i32.const 1 + call $~lib/typedarray/Uint8ClampedArray#__set + local.get $0 + i32.const 1 + i32.const 2 + call $~lib/typedarray/Uint8ClampedArray#__set + local.get $0 + i32.const 0 + i32.const 3 + call $~lib/typedarray/Uint8ClampedArray#__set + i32.const 0 + global.set $~argumentsLength + global.get $~lib/memory/__stack_pointer + local.tee $1 + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 15924 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + block $1of1 + block $0of1 + block $outOfRange + global.get $~argumentsLength + br_table $0of1 $1of1 $outOfRange + end + unreachable + end + i32.const 14768 + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 14768 + i32.store + end + local.get $0 + local.get $2 + call $~lib/typedarray/Uint8Array#sort + local.set $0 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + call $~lib/typedarray/Uint8ClampedArray#__get + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 855 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 1 + call $~lib/typedarray/Uint8ClampedArray#__get + i32.const 2 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 856 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 2 + call $~lib/typedarray/Uint8ClampedArray#__get + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 857 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 14800 + i32.store offset=8 + local.get $0 + i32.const 14800 + call $~lib/typedarray/Uint8Array#sort + drop + local.get $0 + i32.const 0 + call $~lib/typedarray/Uint8ClampedArray#__get + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 859 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 1 + call $~lib/typedarray/Uint8ClampedArray#__get + i32.const 2 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 860 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 2 + call $~lib/typedarray/Uint8ClampedArray#__get + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 861 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + i32.const 32336 + i32.const 32384 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) + (func $std/typedarray/testArraySort<~lib/typedarray/Int16Array,i16> + (local $0 i32) + (local $1 i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 15924 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.tee $0 + i64.const 0 + i64.store + local.get $0 + i32.const 0 + i32.store offset=8 + local.get $0 + i32.const 3 + call $~lib/typedarray/Int16Array#constructor + local.tee $0 + i32.store + local.get $0 + i32.const 2 + i32.const 1 + call $~lib/typedarray/Int16Array#__set + local.get $0 + i32.const 1 + i32.const 2 + call $~lib/typedarray/Int16Array#__set + local.get $0 + i32.const 0 + i32.const 3 + call $~lib/typedarray/Int16Array#__set + i32.const 0 + global.set $~argumentsLength + global.get $~lib/memory/__stack_pointer + local.tee $1 + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 15924 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + block $1of1 + block $0of1 + block $outOfRange + global.get $~argumentsLength + br_table $0of1 $1of1 $outOfRange + end + unreachable + end + i32.const 14832 + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 14832 + i32.store + end + local.get $0 + local.get $2 + call $~lib/typedarray/Int16Array#sort + local.set $0 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + call $~lib/typedarray/Int16Array#__get + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 855 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 1 + call $~lib/typedarray/Int16Array#__get + i32.const 2 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 856 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 2 + call $~lib/typedarray/Int16Array#__get + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 857 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 14864 + i32.store offset=8 + local.get $0 + i32.const 14864 + call $~lib/typedarray/Int16Array#sort + drop + local.get $0 + i32.const 0 + call $~lib/typedarray/Int16Array#__get + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 859 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 1 + call $~lib/typedarray/Int16Array#__get + i32.const 2 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 860 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 2 + call $~lib/typedarray/Int16Array#__get + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 861 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + i32.const 32336 + i32.const 32384 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) + (func $std/typedarray/testArraySort<~lib/typedarray/Uint16Array,u16> + (local $0 i32) + (local $1 i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 15924 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.tee $0 + i64.const 0 + i64.store + local.get $0 + i32.const 0 + i32.store offset=8 + local.get $0 + i32.const 3 + call $~lib/typedarray/Uint16Array#constructor + local.tee $0 + i32.store + local.get $0 + i32.const 2 + i32.const 1 + call $~lib/typedarray/Uint16Array#__set + local.get $0 + i32.const 1 + i32.const 2 + call $~lib/typedarray/Uint16Array#__set + local.get $0 + i32.const 0 + i32.const 3 + call $~lib/typedarray/Uint16Array#__set + i32.const 0 + global.set $~argumentsLength + global.get $~lib/memory/__stack_pointer + local.tee $1 + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 15924 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + block $1of1 + block $0of1 + block $outOfRange + global.get $~argumentsLength + br_table $0of1 $1of1 $outOfRange + end + unreachable + end + i32.const 14896 + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 14896 + i32.store + end + local.get $0 + local.get $2 + call $~lib/typedarray/Uint16Array#sort + local.set $0 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + call $~lib/typedarray/Uint16Array#__get + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 855 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 1 + call $~lib/typedarray/Uint16Array#__get + i32.const 2 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 856 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 2 + call $~lib/typedarray/Uint16Array#__get + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 857 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 14928 + i32.store offset=8 + local.get $0 + i32.const 14928 + call $~lib/typedarray/Uint16Array#sort + drop + local.get $0 + i32.const 0 + call $~lib/typedarray/Uint16Array#__get + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 859 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 1 + call $~lib/typedarray/Uint16Array#__get + i32.const 2 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 860 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 2 + call $~lib/typedarray/Uint16Array#__get + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 861 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + i32.const 32336 + i32.const 32384 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) + (func $std/typedarray/testArraySort<~lib/typedarray/Int32Array,i32> + (local $0 i32) + (local $1 i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 15924 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.tee $0 + i64.const 0 + i64.store + local.get $0 + i32.const 0 + i32.store offset=8 + local.get $0 + i32.const 3 + call $~lib/typedarray/Int32Array#constructor + local.tee $0 + i32.store + local.get $0 + i32.const 2 + i32.const 1 + call $~lib/typedarray/Int32Array#__set + local.get $0 + i32.const 1 + i32.const 2 + call $~lib/typedarray/Int32Array#__set + local.get $0 + i32.const 0 + i32.const 3 + call $~lib/typedarray/Int32Array#__set + i32.const 0 + global.set $~argumentsLength + global.get $~lib/memory/__stack_pointer + local.tee $1 + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 15924 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + block $1of1 + block $0of1 + block $outOfRange + global.get $~argumentsLength + br_table $0of1 $1of1 $outOfRange + end + unreachable + end + i32.const 14960 + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 14960 + i32.store + end + local.get $0 + local.get $2 + call $~lib/typedarray/Int32Array#sort + local.set $0 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + call $~lib/typedarray/Int32Array#__get + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 855 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 1 + call $~lib/typedarray/Int32Array#__get + i32.const 2 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 856 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 2 + call $~lib/typedarray/Int32Array#__get + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 857 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 14992 + i32.store offset=8 + local.get $0 + i32.const 14992 + call $~lib/typedarray/Int32Array#sort + drop + local.get $0 + i32.const 0 + call $~lib/typedarray/Int32Array#__get + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 859 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 1 + call $~lib/typedarray/Int32Array#__get + i32.const 2 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 860 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 2 + call $~lib/typedarray/Int32Array#__get + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 861 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + i32.const 32336 + i32.const 32384 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) + (func $std/typedarray/testArraySort<~lib/typedarray/Uint32Array,u32> + (local $0 i32) + (local $1 i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 15924 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.tee $0 + i64.const 0 + i64.store + local.get $0 + i32.const 0 + i32.store offset=8 + local.get $0 + i32.const 3 + call $~lib/typedarray/Uint32Array#constructor + local.tee $0 + i32.store + local.get $0 + i32.const 2 + i32.const 1 + call $~lib/typedarray/Uint32Array#__set + local.get $0 + i32.const 1 + i32.const 2 + call $~lib/typedarray/Uint32Array#__set + local.get $0 + i32.const 0 + i32.const 3 + call $~lib/typedarray/Uint32Array#__set + i32.const 0 + global.set $~argumentsLength + global.get $~lib/memory/__stack_pointer + local.tee $1 + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 15924 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + block $1of1 + block $0of1 + block $outOfRange + global.get $~argumentsLength + br_table $0of1 $1of1 $outOfRange + end + unreachable + end + i32.const 15024 + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 15024 + i32.store + end + local.get $0 + local.get $2 + call $~lib/typedarray/Uint32Array#sort + local.set $0 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + call $~lib/typedarray/Uint32Array#__get + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 855 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 1 + call $~lib/typedarray/Uint32Array#__get + i32.const 2 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 856 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 2 + call $~lib/typedarray/Uint32Array#__get + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 857 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 15056 + i32.store offset=8 + local.get $0 + i32.const 15056 + call $~lib/typedarray/Uint32Array#sort + drop + local.get $0 + i32.const 0 + call $~lib/typedarray/Uint32Array#__get + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 859 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 1 + call $~lib/typedarray/Uint32Array#__get + i32.const 2 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 860 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 2 + call $~lib/typedarray/Uint32Array#__get + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 861 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + i32.const 32336 + i32.const 32384 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) + (func $std/typedarray/testArraySort<~lib/typedarray/Int64Array,i64> + (local $0 i32) + (local $1 i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 15924 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.tee $0 + i64.const 0 + i64.store + local.get $0 + i32.const 0 + i32.store offset=8 + local.get $0 + i32.const 3 + call $~lib/typedarray/Int64Array#constructor + local.tee $0 + i32.store + local.get $0 + i32.const 2 + i64.const 1 + call $~lib/typedarray/Int64Array#__set + local.get $0 + i32.const 1 + i64.const 2 + call $~lib/typedarray/Int64Array#__set + local.get $0 + i32.const 0 + i64.const 3 + call $~lib/typedarray/Int64Array#__set + i32.const 0 + global.set $~argumentsLength + global.get $~lib/memory/__stack_pointer + local.tee $1 + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 15924 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + block $1of1 + block $0of1 + block $outOfRange + global.get $~argumentsLength + br_table $0of1 $1of1 $outOfRange + end + unreachable + end + i32.const 15088 + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 15088 + i32.store + end + local.get $0 + local.get $2 + call $~lib/typedarray/Int64Array#sort + local.set $0 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + call $~lib/typedarray/Int64Array#__get + i64.const 1 + i64.ne + if + i32.const 0 + i32.const 1568 + i32.const 855 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 1 + call $~lib/typedarray/Int64Array#__get + i64.const 2 + i64.ne + if + i32.const 0 + i32.const 1568 + i32.const 856 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 2 + call $~lib/typedarray/Int64Array#__get + i64.const 3 + i64.ne + if + i32.const 0 + i32.const 1568 + i32.const 857 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 15120 + i32.store offset=8 + local.get $0 + i32.const 15120 + call $~lib/typedarray/Int64Array#sort + drop + local.get $0 + i32.const 0 + call $~lib/typedarray/Int64Array#__get + i64.const 3 + i64.ne + if + i32.const 0 + i32.const 1568 + i32.const 859 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 1 + call $~lib/typedarray/Int64Array#__get + i64.const 2 + i64.ne + if + i32.const 0 + i32.const 1568 + i32.const 860 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 2 + call $~lib/typedarray/Int64Array#__get + i64.const 1 + i64.ne + if + i32.const 0 + i32.const 1568 + i32.const 861 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + i32.const 32336 + i32.const 32384 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) + (func $std/typedarray/testArraySort<~lib/typedarray/Uint64Array,u64> + (local $0 i32) + (local $1 i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 15924 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.tee $0 + i64.const 0 + i64.store + local.get $0 + i32.const 0 + i32.store offset=8 + local.get $0 + i32.const 3 + call $~lib/typedarray/Uint64Array#constructor + local.tee $0 + i32.store + local.get $0 + i32.const 2 + i64.const 1 + call $~lib/typedarray/Uint64Array#__set + local.get $0 + i32.const 1 + i64.const 2 + call $~lib/typedarray/Uint64Array#__set + local.get $0 + i32.const 0 + i64.const 3 + call $~lib/typedarray/Uint64Array#__set + i32.const 0 + global.set $~argumentsLength + global.get $~lib/memory/__stack_pointer + local.tee $1 + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 15924 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + block $1of1 + block $0of1 + block $outOfRange + global.get $~argumentsLength + br_table $0of1 $1of1 $outOfRange + end + unreachable + end + i32.const 15152 + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 15152 + i32.store + end + local.get $0 + local.get $2 + call $~lib/typedarray/Uint64Array#sort + local.set $0 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + call $~lib/typedarray/Uint64Array#__get + i64.const 1 + i64.ne + if + i32.const 0 + i32.const 1568 + i32.const 855 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 1 + call $~lib/typedarray/Uint64Array#__get + i64.const 2 + i64.ne + if + i32.const 0 + i32.const 1568 + i32.const 856 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 2 + call $~lib/typedarray/Uint64Array#__get + i64.const 3 + i64.ne + if + i32.const 0 + i32.const 1568 + i32.const 857 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 15184 + i32.store offset=8 + local.get $0 + i32.const 15184 + call $~lib/typedarray/Uint64Array#sort + drop + local.get $0 + i32.const 0 + call $~lib/typedarray/Uint64Array#__get + i64.const 3 + i64.ne + if + i32.const 0 + i32.const 1568 + i32.const 859 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 1 + call $~lib/typedarray/Uint64Array#__get + i64.const 2 + i64.ne + if + i32.const 0 + i32.const 1568 + i32.const 860 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 2 + call $~lib/typedarray/Uint64Array#__get + i64.const 1 + i64.ne + if + i32.const 0 + i32.const 1568 + i32.const 861 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + i32.const 32336 + i32.const 32384 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) + (func $std/typedarray/testArraySort<~lib/typedarray/Float32Array,f32> + (local $0 i32) + (local $1 i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 15924 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.tee $0 + i64.const 0 + i64.store + local.get $0 + i32.const 0 + i32.store offset=8 + local.get $0 + i32.const 3 + call $~lib/typedarray/Float32Array#constructor + local.tee $0 + i32.store + local.get $0 + i32.const 2 + f32.const 1 + call $~lib/typedarray/Float32Array#__set + local.get $0 + i32.const 1 + f32.const 2 + call $~lib/typedarray/Float32Array#__set + local.get $0 + i32.const 0 + f32.const 3 + call $~lib/typedarray/Float32Array#__set + i32.const 0 + global.set $~argumentsLength + global.get $~lib/memory/__stack_pointer + local.tee $1 + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 15924 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + block $1of1 + block $0of1 + block $outOfRange + global.get $~argumentsLength + br_table $0of1 $1of1 $outOfRange + end + unreachable + end + i32.const 15216 + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 15216 + i32.store + end + local.get $0 + local.get $2 + call $~lib/typedarray/Float32Array#sort + local.set $0 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + call $~lib/typedarray/Float32Array#__get + f32.const 1 + f32.ne + if + i32.const 0 + i32.const 1568 + i32.const 855 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 1 + call $~lib/typedarray/Float32Array#__get + f32.const 2 + f32.ne + if + i32.const 0 + i32.const 1568 + i32.const 856 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 2 + call $~lib/typedarray/Float32Array#__get + f32.const 3 + f32.ne + if + i32.const 0 + i32.const 1568 + i32.const 857 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 15248 + i32.store offset=8 + local.get $0 + i32.const 15248 + call $~lib/typedarray/Float32Array#sort + drop + local.get $0 + i32.const 0 + call $~lib/typedarray/Float32Array#__get + f32.const 3 + f32.ne + if + i32.const 0 + i32.const 1568 + i32.const 859 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 1 + call $~lib/typedarray/Float32Array#__get + f32.const 2 + f32.ne + if + i32.const 0 + i32.const 1568 + i32.const 860 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 2 + call $~lib/typedarray/Float32Array#__get + f32.const 1 + f32.ne + if + i32.const 0 + i32.const 1568 + i32.const 861 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + i32.const 32336 + i32.const 32384 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) + (func $start:std/typedarray + (local $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) + (local $10 i64) + (local $11 f32) + (local $12 f64) + (local $13 i64) + (local $14 f32) + (local $15 f64) + global.get $~lib/memory/__stack_pointer + i32.const 32 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner23 + block $folding-inner22 + block $folding-inner21 + block $folding-inner20 + block $folding-inner19 + block $folding-inner18 + global.get $~lib/memory/__stack_pointer + i32.const 15924 + i32.lt_s + br_if $folding-inner23 + global.get $~lib/memory/__stack_pointer + local.tee $0 + i64.const 0 + i64.store + local.get $0 + i64.const 0 + i64.store offset=8 + local.get $0 + i64.const 0 + i64.store offset=16 + local.get $0 + i64.const 0 + i64.store offset=24 + memory.size + i32.const 16 + i32.shl + i32.const 32308 + i32.sub + i32.const 1 + i32.shr_u + global.set $~lib/rt/itcms/threshold + i32.const 1284 + i32.const 1280 + i32.store + i32.const 1288 + i32.const 1280 + i32.store + i32.const 1280 + global.set $~lib/rt/itcms/pinSpace + i32.const 1316 + i32.const 1312 + i32.store + i32.const 1320 + i32.const 1312 + i32.store + i32.const 1312 + global.set $~lib/rt/itcms/toSpace + i32.const 1460 + i32.const 1456 + i32.store + i32.const 1464 + i32.const 1456 + i32.store + i32.const 1456 + global.set $~lib/rt/itcms/fromSpace + i32.const 0 + call $std/typedarray/testInstantiate + i32.const 5 + call $std/typedarray/testInstantiate + global.get $~lib/memory/__stack_pointer + i32.const 3 + call $~lib/typedarray/Int32Array#constructor + local.tee $0 + i32.store + local.get $0 + i32.const 0 + i32.const 1 + call $~lib/typedarray/Int32Array#__set + local.get $0 + i32.const 1 + i32.const 2 + call $~lib/typedarray/Int32Array#__set + local.get $0 + i32.const 2 + i32.const 3 + call $~lib/typedarray/Int32Array#__set + local.get $0 + i32.load offset=8 + i32.const 2 + i32.shr_u + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 95 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load offset=4 + local.get $0 + i32.load + i32.sub + if + i32.const 0 + i32.const 1568 + i32.const 96 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load offset=8 + i32.const 12 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 97 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 0 + call $~lib/typedarray/Int32Array#__get + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 98 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 1 + call $~lib/typedarray/Int32Array#__get + i32.const 2 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 99 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 2 + call $~lib/typedarray/Int32Array#__get + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 100 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.const 1 + i32.const 2 + call $~lib/typedarray/Int32Array#subarray + local.tee $0 + i32.store + local.get $0 + i32.load offset=8 + i32.const 2 + i32.shr_u + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 103 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load offset=4 + local.get $0 + i32.load + i32.sub + i32.const 4 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 104 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load offset=8 + i32.const 4 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 105 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 0 + call $~lib/typedarray/Int32Array#__get + i32.const 2 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 106 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + call $~lib/typedarray/Float64Array#constructor + local.tee $0 + i32.store + local.get $0 + i32.const 0 + f64.const 1 + call $~lib/typedarray/Float64Array#__set + local.get $0 + i32.const 1 + f64.const 2 + call $~lib/typedarray/Float64Array#__set + local.get $0 + i32.const 2 + f64.const 7 + call $~lib/typedarray/Float64Array#__set + local.get $0 + i32.const 3 + f64.const 6 + call $~lib/typedarray/Float64Array#__set + local.get $0 + i32.const 4 + f64.const 5 + call $~lib/typedarray/Float64Array#__set + local.get $0 + i32.const 5 + f64.const 4 + call $~lib/typedarray/Float64Array#__set + local.get $0 + i32.const 6 + f64.const 3 + call $~lib/typedarray/Float64Array#__set + local.get $0 + i32.const 7 + f64.const 8 + call $~lib/typedarray/Float64Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.const 2 + i32.const 6 + call $~lib/typedarray/Float64Array#subarray + local.tee $1 + i32.store + local.get $1 + i32.load offset=8 + i32.const 3 + i32.shr_u + i32.const 4 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 122 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.load offset=4 + local.get $1 + i32.load + i32.sub + i32.const 16 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 123 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.load offset=8 + i32.const 32 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 124 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + global.set $~argumentsLength + local.get $1 + call $~lib/typedarray/Float64Array#sort@varargs + drop + local.get $1 + i32.const 0 + call $~lib/typedarray/Float64Array#__get + f64.const 4 + f64.eq + if (result i32) + local.get $1 + i32.const 1 + call $~lib/typedarray/Float64Array#__get + f64.const 5 + f64.eq + else + i32.const 0 + end + if (result i32) + local.get $1 + i32.const 2 + call $~lib/typedarray/Float64Array#__get + f64.const 6 + f64.eq + else + i32.const 0 + end + if (result i32) + local.get $1 + i32.const 3 + call $~lib/typedarray/Float64Array#__get + f64.const 7 + f64.eq + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 126 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 3 + call $~lib/typedarray/Uint8ClampedArray#constructor + local.tee $0 + i32.store + local.get $0 + i32.const 0 + i32.const -32 + call $~lib/typedarray/Uint8ClampedArray#__set + local.get $0 + i32.const 1 + i32.const 2 + call $~lib/typedarray/Uint8ClampedArray#__set + local.get $0 + i32.const 2 + i32.const 256 + call $~lib/typedarray/Uint8ClampedArray#__set + local.get $0 + i32.const 0 + call $~lib/typedarray/Uint8ClampedArray#__get + if + i32.const 0 + i32.const 1568 + i32.const 135 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 1 + call $~lib/typedarray/Uint8ClampedArray#__get + i32.const 2 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 136 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 2 + call $~lib/typedarray/Uint8ClampedArray#__get + i32.const 255 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 137 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 5 + call $~lib/typedarray/Int8Array#constructor + local.tee $2 + i32.store + local.get $2 + i32.const 0 + i32.const 1 + call $~lib/typedarray/Int8Array#__set + local.get $2 + i32.const 1 + i32.const 2 + call $~lib/typedarray/Int8Array#__set + local.get $2 + i32.const 2 + i32.const 3 + call $~lib/typedarray/Int8Array#__set + local.get $2 + i32.const 3 + i32.const 4 + call $~lib/typedarray/Int8Array#__set + local.get $2 + i32.const 4 + i32.const 5 + call $~lib/typedarray/Int8Array#__set + local.get $2 + i32.const 1 + i32.const 1 + i32.const 3 + call $~lib/typedarray/Int8Array#fill + i32.const 5 + i32.const 0 + i32.const 15 + i32.const 1728 + call $~lib/rt/__newArray + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $2 + local.get $0 + call $std/typedarray/isInt8ArrayEqual + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 149 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $2 + i32.const 0 + i32.const 0 + i32.const 2147483647 + call $~lib/typedarray/Int8Array#fill + i32.const 5 + i32.const 0 + i32.const 15 + i32.const 1808 + call $~lib/rt/__newArray + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $2 + local.get $0 + call $std/typedarray/isInt8ArrayEqual + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 152 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $2 + i32.const 1 + i32.const 0 + i32.const -3 + call $~lib/typedarray/Int8Array#fill + i32.const 5 + i32.const 0 + i32.const 15 + i32.const 1840 + call $~lib/rt/__newArray + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $2 + local.get $0 + call $std/typedarray/isInt8ArrayEqual + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 155 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $2 + i32.const 2 + i32.const -2 + i32.const 2147483647 + call $~lib/typedarray/Int8Array#fill + i32.const 5 + i32.const 0 + i32.const 15 + i32.const 1872 + call $~lib/rt/__newArray + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $2 + local.get $0 + call $std/typedarray/isInt8ArrayEqual + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 158 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $2 + i32.const 0 + i32.const 1 + i32.const 0 + call $~lib/typedarray/Int8Array#fill + i32.const 5 + i32.const 0 + i32.const 15 + i32.const 1904 + call $~lib/rt/__newArray + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $2 + local.get $0 + call $std/typedarray/isInt8ArrayEqual + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 161 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.const 1 + i32.const 4 + call $~lib/typedarray/Int8Array#subarray + local.tee $1 + i32.store offset=8 + local.get $1 + i32.const 0 + i32.const 0 + i32.const 2147483647 + call $~lib/typedarray/Int8Array#fill + local.get $1 + i32.load offset=8 + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 165 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.load offset=4 + local.get $1 + i32.load + i32.sub + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 166 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.load offset=8 + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 167 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 3 + i32.const 0 + i32.const 15 + i32.const 1936 + call $~lib/rt/__newArray + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $1 + local.get $0 + call $std/typedarray/isInt8ArrayEqual + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 168 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 5 + i32.const 0 + i32.const 15 + i32.const 1968 + call $~lib/rt/__newArray + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $2 + local.get $0 + call $std/typedarray/isInt8ArrayEqual + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 169 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 5 + call $~lib/typedarray/Int32Array#constructor + local.tee $4 + i32.store offset=8 + local.get $4 + i32.const 0 + i32.const 1 + call $~lib/typedarray/Int32Array#__set + local.get $4 + i32.const 1 + i32.const 2 + call $~lib/typedarray/Int32Array#__set + local.get $4 + i32.const 2 + i32.const 3 + call $~lib/typedarray/Int32Array#__set + local.get $4 + i32.const 3 + i32.const 4 + call $~lib/typedarray/Int32Array#__set + local.get $4 + i32.const 4 + i32.const 5 + call $~lib/typedarray/Int32Array#__set + local.get $4 + i32.load offset=4 + local.set $1 + i32.const 1 + local.get $4 + i32.load offset=8 + i32.const 2 + i32.shr_u + local.tee $0 + local.get $0 + i32.const 1 + i32.gt_s + select + local.set $3 + i32.const 3 + local.get $0 + local.get $0 + i32.const 3 + i32.gt_s + select + local.set $0 + loop $for-loop|0 + local.get $0 + local.get $3 + i32.gt_s + if + local.get $1 + local.get $3 + i32.const 2 + i32.shl + i32.add + i32.const 1 + i32.store + local.get $3 + i32.const 1 + i32.add + local.set $3 + br $for-loop|0 + end + end + i32.const 5 + i32.const 2 + i32.const 16 + i32.const 2000 + call $~lib/rt/__newArray + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $4 + local.get $0 + call $std/typedarray/isInt32ArrayEqual + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 181 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $4 + i32.load offset=4 + local.set $0 + i32.const 0 + local.get $4 + i32.load offset=8 + i32.const 2 + i32.shr_u + local.tee $1 + local.get $1 + i32.const 0 + i32.gt_s + select + local.set $3 + loop $for-loop|01 + local.get $1 + local.get $3 + i32.gt_s + if + local.get $0 + local.get $3 + i32.const 2 + i32.shl + i32.add + i32.const 0 + i32.store + local.get $3 + i32.const 1 + i32.add + local.set $3 + br $for-loop|01 + end + end + i32.const 5 + i32.const 2 + i32.const 16 + i32.const 2048 + call $~lib/rt/__newArray + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $4 + local.get $0 + call $std/typedarray/isInt32ArrayEqual + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 184 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $4 + i32.load offset=4 + local.set $1 + i32.const 0 + local.get $4 + i32.load offset=8 + i32.const 2 + i32.shr_u + local.tee $0 + local.get $0 + i32.const 0 + i32.gt_s + select + local.set $3 + local.get $0 + i32.const 3 + i32.sub + local.tee $0 + i32.const 0 + local.get $0 + i32.const 0 + i32.gt_s + select + local.set $0 + loop $for-loop|03 + local.get $0 + local.get $3 + i32.gt_s + if + local.get $1 + local.get $3 + i32.const 2 + i32.shl + i32.add + i32.const 1 + i32.store + local.get $3 + i32.const 1 + i32.add + local.set $3 + br $for-loop|03 + end + end + i32.const 5 + i32.const 2 + i32.const 16 + i32.const 2096 + call $~lib/rt/__newArray + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $4 + local.get $0 + call $std/typedarray/isInt32ArrayEqual + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 187 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $4 + i32.load offset=4 + local.set $2 + local.get $4 + i32.load offset=8 + i32.const 2 + i32.shr_u + local.tee $1 + i32.const 2 + i32.sub + local.tee $0 + i32.const 0 + local.get $0 + i32.const 0 + i32.gt_s + select + local.set $3 + loop $for-loop|05 + local.get $1 + local.get $3 + i32.gt_s + if + local.get $2 + local.get $3 + i32.const 2 + i32.shl + i32.add + i32.const 2 + i32.store + local.get $3 + i32.const 1 + i32.add + local.set $3 + br $for-loop|05 + end + end + i32.const 5 + i32.const 2 + i32.const 16 + i32.const 2144 + call $~lib/rt/__newArray + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $4 + local.get $0 + call $std/typedarray/isInt32ArrayEqual + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 190 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $4 + i32.load offset=4 + local.set $1 + i32.const 1 + local.get $4 + i32.load offset=8 + i32.const 2 + i32.shr_u + local.tee $0 + local.get $0 + i32.const 1 + i32.gt_s + select + local.set $3 + i32.const 0 + local.get $0 + local.get $0 + i32.const 0 + i32.gt_s + select + local.set $0 + loop $for-loop|07 + local.get $0 + local.get $3 + i32.gt_s + if + local.get $1 + local.get $3 + i32.const 2 + i32.shl + i32.add + i32.const 0 + i32.store + local.get $3 + i32.const 1 + i32.add + local.set $3 + br $for-loop|07 + end + end + i32.const 5 + i32.const 2 + i32.const 16 + i32.const 2192 + call $~lib/rt/__newArray + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $4 + local.get $0 + call $std/typedarray/isInt32ArrayEqual + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 193 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.const 1 + i32.const 4 + call $~lib/typedarray/Int32Array#subarray + local.tee $2 + i32.store offset=12 + local.get $2 + i32.load offset=4 + local.set $0 + i32.const 0 + local.get $2 + i32.load offset=8 + i32.const 2 + i32.shr_u + local.tee $1 + local.get $1 + i32.const 0 + i32.gt_s + select + local.set $3 + loop $for-loop|09 + local.get $1 + local.get $3 + i32.gt_s + if + local.get $0 + local.get $3 + i32.const 2 + i32.shl + i32.add + i32.const 0 + i32.store + local.get $3 + i32.const 1 + i32.add + local.set $3 + br $for-loop|09 + end + end + local.get $2 + i32.load offset=8 + i32.const 2 + i32.shr_u + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 197 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $2 + i32.load offset=4 + local.get $2 + i32.load + i32.sub + i32.const 4 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 198 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $2 + i32.load offset=8 + i32.const 12 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 199 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 3 + i32.const 2 + i32.const 16 + i32.const 2240 + call $~lib/rt/__newArray + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $2 + local.get $0 + call $std/typedarray/isInt32ArrayEqual + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 200 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 5 + i32.const 2 + i32.const 16 + i32.const 2272 + call $~lib/rt/__newArray + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $4 + local.get $0 + call $std/typedarray/isInt32ArrayEqual + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 201 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 6 + call $~lib/typedarray/Int8Array#constructor + local.tee $0 + i32.store offset=12 + local.get $0 + i32.const 0 + i32.const 1 + call $~lib/typedarray/Int8Array#__set + local.get $0 + i32.const 1 + i32.const 2 + call $~lib/typedarray/Int8Array#__set + local.get $0 + i32.const 2 + i32.const 3 + call $~lib/typedarray/Int8Array#__set + local.get $0 + i32.const 3 + i32.const 4 + call $~lib/typedarray/Int8Array#__set + local.get $0 + i32.const 4 + i32.const 5 + call $~lib/typedarray/Int8Array#__set + local.get $0 + i32.const 5 + i32.const 6 + call $~lib/typedarray/Int8Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.const 1 + i32.const 6 + call $~lib/typedarray/Int8Array#subarray + local.tee $0 + i32.store offset=8 + local.get $0 + i32.const 0 + call $~lib/typedarray/Int8Array#__get + i32.const 2 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 222 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load offset=8 + i32.const 5 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 223 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load offset=4 + local.get $0 + i32.load + i32.sub + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 224 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load offset=8 + i32.const 5 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 225 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.const 1 + i32.const 5 + call $~lib/typedarray/Int8Array#subarray + local.tee $0 + i32.store + local.get $0 + i32.const 0 + call $~lib/typedarray/Int8Array#__get + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 228 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load offset=8 + i32.const 4 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 229 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load offset=4 + local.get $0 + i32.load + i32.sub + i32.const 2 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 230 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load offset=8 + i32.const 4 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 231 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.const 1 + i32.const 4 + call $~lib/typedarray/Int8Array#subarray + local.tee $0 + i32.store offset=16 + local.get $0 + i32.const 0 + call $~lib/typedarray/Int8Array#__get + i32.const 4 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 234 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load offset=8 + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 235 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load offset=4 + local.get $0 + i32.load + i32.sub + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 236 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load offset=8 + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 237 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 5 + call $~lib/typedarray/Int32Array#constructor + local.tee $0 + i32.store offset=16 + local.get $0 + i32.const 0 + i32.const 1 + call $~lib/typedarray/Int32Array#__set + local.get $0 + i32.const 1 + i32.const 2 + call $~lib/typedarray/Int32Array#__set + local.get $0 + i32.const 2 + i32.const 3 + call $~lib/typedarray/Int32Array#__set + local.get $0 + i32.const 3 + i32.const 4 + call $~lib/typedarray/Int32Array#__set + local.get $0 + i32.const 4 + i32.const 5 + call $~lib/typedarray/Int32Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.const 0 + i32.const 2147483647 + call $~lib/typedarray/Int32Array#slice + local.tee $2 + i32.store + local.get $0 + i32.const 0 + i32.const 3 + i32.const 2147483647 + call $~lib/typedarray/Int32Array#copyWithin + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=20 + i32.const 5 + i32.const 2 + i32.const 16 + i32.const 2320 + call $~lib/rt/__newArray + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $1 + local.get $0 + call $std/typedarray/isInt32ArrayEqual + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 248 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.const 0 + i32.const 2147483647 + call $~lib/typedarray/Int32Array#slice + local.tee $0 + i32.store offset=16 + local.get $0 + i32.const 1 + i32.const 3 + i32.const 2147483647 + call $~lib/typedarray/Int32Array#copyWithin + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=20 + i32.const 5 + i32.const 2 + i32.const 16 + i32.const 2368 + call $~lib/rt/__newArray + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $1 + local.get $0 + call $std/typedarray/isInt32ArrayEqual + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 250 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.const 0 + i32.const 2147483647 + call $~lib/typedarray/Int32Array#slice + local.tee $0 + i32.store offset=16 + local.get $0 + i32.const 1 + i32.const 2 + i32.const 2147483647 + call $~lib/typedarray/Int32Array#copyWithin + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=20 + i32.const 5 + i32.const 2 + i32.const 16 + i32.const 2416 + call $~lib/rt/__newArray + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $1 + local.get $0 + call $std/typedarray/isInt32ArrayEqual + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 252 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.const 0 + i32.const 2147483647 + call $~lib/typedarray/Int32Array#slice + local.tee $0 + i32.store offset=16 + local.get $0 + i32.const 2 + i32.const 2 + i32.const 2147483647 + call $~lib/typedarray/Int32Array#copyWithin + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=20 + i32.const 5 + i32.const 2 + i32.const 16 + i32.const 2464 + call $~lib/rt/__newArray + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $1 + local.get $0 + call $std/typedarray/isInt32ArrayEqual + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 254 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.const 0 + i32.const 2147483647 + call $~lib/typedarray/Int32Array#slice + local.tee $0 + i32.store offset=16 + local.get $0 + i32.const 0 + i32.const 3 + i32.const 4 + call $~lib/typedarray/Int32Array#copyWithin + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=20 + i32.const 5 + i32.const 2 + i32.const 16 + i32.const 2512 + call $~lib/rt/__newArray + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $1 + local.get $0 + call $std/typedarray/isInt32ArrayEqual + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 256 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.const 0 + i32.const 2147483647 + call $~lib/typedarray/Int32Array#slice + local.tee $0 + i32.store offset=16 + local.get $0 + i32.const 1 + i32.const 3 + i32.const 4 + call $~lib/typedarray/Int32Array#copyWithin + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=20 + i32.const 5 + i32.const 2 + i32.const 16 + i32.const 2560 + call $~lib/rt/__newArray + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $1 + local.get $0 + call $std/typedarray/isInt32ArrayEqual + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 258 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.const 0 + i32.const 2147483647 + call $~lib/typedarray/Int32Array#slice + local.tee $0 + i32.store offset=16 + local.get $0 + i32.const 1 + i32.const 2 + i32.const 4 + call $~lib/typedarray/Int32Array#copyWithin + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=20 + i32.const 5 + i32.const 2 + i32.const 16 + i32.const 2608 + call $~lib/rt/__newArray + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $1 + local.get $0 + call $std/typedarray/isInt32ArrayEqual + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 260 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.const 0 + i32.const 2147483647 + call $~lib/typedarray/Int32Array#slice + local.tee $0 + i32.store offset=16 + local.get $0 + i32.const 0 + i32.const -2 + i32.const 2147483647 + call $~lib/typedarray/Int32Array#copyWithin + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=20 + i32.const 5 + i32.const 2 + i32.const 16 + i32.const 2656 + call $~lib/rt/__newArray + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $1 + local.get $0 + call $std/typedarray/isInt32ArrayEqual + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 262 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.const 0 + i32.const 2147483647 + call $~lib/typedarray/Int32Array#slice + local.tee $0 + i32.store offset=16 + local.get $0 + i32.const 0 + i32.const -2 + i32.const -1 + call $~lib/typedarray/Int32Array#copyWithin + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=20 + i32.const 5 + i32.const 2 + i32.const 16 + i32.const 2704 + call $~lib/rt/__newArray + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $1 + local.get $0 + call $std/typedarray/isInt32ArrayEqual + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 264 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.const 0 + i32.const 2147483647 + call $~lib/typedarray/Int32Array#slice + local.tee $0 + i32.store offset=16 + local.get $0 + i32.const -4 + i32.const -3 + i32.const -2 + call $~lib/typedarray/Int32Array#copyWithin + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=20 + i32.const 5 + i32.const 2 + i32.const 16 + i32.const 2752 + call $~lib/rt/__newArray + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $1 + local.get $0 + call $std/typedarray/isInt32ArrayEqual + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 266 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.const 0 + i32.const 2147483647 + call $~lib/typedarray/Int32Array#slice + local.tee $0 + i32.store offset=16 + local.get $0 + i32.const -4 + i32.const -3 + i32.const -1 + call $~lib/typedarray/Int32Array#copyWithin + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=20 + i32.const 5 + i32.const 2 + i32.const 16 + i32.const 2800 + call $~lib/rt/__newArray + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $1 + local.get $0 + call $std/typedarray/isInt32ArrayEqual + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 268 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.const 0 + i32.const 2147483647 + call $~lib/typedarray/Int32Array#slice + local.tee $0 + i32.store offset=16 + local.get $0 + i32.const -4 + i32.const -3 + i32.const 2147483647 + call $~lib/typedarray/Int32Array#copyWithin + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=20 + i32.const 5 + i32.const 2 + i32.const 16 + i32.const 2848 + call $~lib/rt/__newArray + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $1 + local.get $0 + call $std/typedarray/isInt32ArrayEqual + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 270 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 5 + call $~lib/typedarray/Int32Array#constructor + local.tee $2 + i32.store + local.get $2 + i32.const 0 + i32.const 1 + call $~lib/typedarray/Int32Array#__set + local.get $2 + i32.const 1 + i32.const 2 + call $~lib/typedarray/Int32Array#__set + local.get $2 + i32.const 2 + i32.const 3 + call $~lib/typedarray/Int32Array#__set + local.get $2 + i32.const 3 + i32.const 4 + call $~lib/typedarray/Int32Array#__set + local.get $2 + i32.const 4 + i32.const 5 + call $~lib/typedarray/Int32Array#__set + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.const 1 + i32.const 4 + call $~lib/typedarray/Int32Array#subarray + local.tee $0 + i32.store offset=16 + local.get $0 + i32.load offset=8 + i32.const 2 + i32.shr_u + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 282 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load offset=4 + local.get $0 + i32.load + i32.sub + i32.const 4 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 283 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load offset=8 + i32.const 12 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 284 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.const 1 + i32.const 3 + call $~lib/typedarray/Int32Array#slice + local.tee $1 + i32.store offset=8 + local.get $1 + i32.const 0 + call $~lib/typedarray/Int32Array#__get + i32.const 2 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 287 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 1 + call $~lib/typedarray/Int32Array#__get + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 288 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.load offset=8 + i32.const 2 + i32.shr_u + i32.const 2 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 289 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.load offset=4 + local.get $1 + i32.load + i32.sub + if + i32.const 0 + i32.const 1568 + i32.const 290 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.load offset=8 + i32.const 8 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 291 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.const 1 + i32.const 2 + call $~lib/typedarray/Int32Array#slice + local.tee $0 + i32.store offset=12 + local.get $0 + i32.const 0 + call $~lib/typedarray/Int32Array#__get + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 294 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load offset=8 + i32.const 2 + i32.shr_u + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 295 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load offset=4 + local.get $0 + i32.load + i32.sub + if + i32.const 0 + i32.const 1568 + i32.const 296 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load offset=8 + i32.const 4 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 297 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.const 0 + i32.const 2147483647 + call $~lib/typedarray/Int32Array#slice + local.tee $0 + i32.store offset=24 + local.get $0 + local.get $2 + i32.eq + if + i32.const 0 + i32.const 1568 + i32.const 300 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load offset=8 + i32.const 2 + i32.shr_u + local.get $2 + i32.load offset=8 + i32.const 2 + i32.shr_u + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 301 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load offset=4 + local.get $0 + i32.load + i32.sub + local.get $2 + i32.load offset=4 + local.get $2 + i32.load + i32.sub + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 302 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load offset=8 + local.get $2 + i32.load offset=8 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 303 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 15924 + i32.lt_s + br_if $folding-inner23 + global.get $~lib/memory/__stack_pointer + local.tee $0 + i64.const 0 + i64.store + local.get $0 + i32.const 3 + call $~lib/typedarray/Int8Array#constructor + local.tee $3 + i32.store + local.get $3 + i32.const 0 + i32.const 1 + call $~lib/typedarray/Int8Array#__set + local.get $3 + i32.const 1 + i32.const 2 + call $~lib/typedarray/Int8Array#__set + local.get $3 + i32.const 2 + i32.const 3 + call $~lib/typedarray/Int8Array#__set + global.get $~lib/memory/__stack_pointer + i32.const 2896 + i32.store offset=4 + i32.const 0 + local.set $1 + local.get $3 + i32.load offset=4 + local.set $4 + local.get $3 + i32.load offset=8 + local.set $2 + loop $for-loop|011 + local.get $1 + local.get $2 + i32.lt_s + if + local.get $1 + local.get $4 + i32.add + i32.load8_s + local.set $0 + i32.const 4 + global.set $~argumentsLength + local.get $9 + local.get $0 + local.get $1 + local.get $3 + i32.const 2896 + i32.load + call_indirect $0 (type $i32_i32_i32_i32_=>_i32) + local.set $9 + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|011 + end + end + block $folding-inner16 + block $folding-inner15 + block $folding-inner14 + block $folding-inner13 + block $folding-inner12 + block $folding-inner11 + block $folding-inner10 + block $folding-inner9 + block $folding-inner8 + block $folding-inner7 + block $folding-inner6 + block $folding-inner5 + block $folding-inner4 + block $folding-inner3 + block $folding-inner2 + block $folding-inner1 + local.get $9 + i32.const 255 + i32.and + i32.const 6 + i32.ne + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 15924 + i32.lt_s + br_if $folding-inner23 + global.get $~lib/memory/__stack_pointer + local.tee $0 + i64.const 0 + i64.store + local.get $0 + i32.const 3 + call $~lib/typedarray/Uint8Array#constructor + local.tee $5 + i32.store + local.get $5 + i32.const 0 + i32.const 1 + call $~lib/typedarray/Uint8Array#__set + local.get $5 + i32.const 1 + i32.const 2 + call $~lib/typedarray/Uint8Array#__set + local.get $5 + i32.const 2 + i32.const 3 + call $~lib/typedarray/Uint8Array#__set + global.get $~lib/memory/__stack_pointer + i32.const 2928 + i32.store offset=4 + i32.const 0 + local.set $1 + i32.const 0 + local.set $0 + local.get $5 + i32.load offset=4 + local.set $3 + local.get $5 + i32.load offset=8 + local.set $4 + loop $for-loop|013 + local.get $1 + local.get $4 + i32.lt_s + if + local.get $1 + local.get $3 + i32.add + i32.load8_u + local.set $2 + i32.const 4 + global.set $~argumentsLength + local.get $0 + local.get $2 + local.get $1 + local.get $5 + i32.const 2928 + i32.load + call_indirect $0 (type $i32_i32_i32_i32_=>_i32) + local.set $0 + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|013 + end + end + local.get $0 + i32.const 255 + i32.and + i32.const 6 + i32.ne + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 15924 + i32.lt_s + br_if $folding-inner23 + global.get $~lib/memory/__stack_pointer + local.tee $0 + i64.const 0 + i64.store + local.get $0 + i32.const 3 + call $~lib/typedarray/Uint8ClampedArray#constructor + local.tee $5 + i32.store + local.get $5 + i32.const 0 + i32.const 1 + call $~lib/typedarray/Uint8ClampedArray#__set + local.get $5 + i32.const 1 + i32.const 2 + call $~lib/typedarray/Uint8ClampedArray#__set + local.get $5 + i32.const 2 + i32.const 3 + call $~lib/typedarray/Uint8ClampedArray#__set + global.get $~lib/memory/__stack_pointer + i32.const 2960 + i32.store offset=4 + i32.const 0 + local.set $1 + i32.const 0 + local.set $0 + local.get $5 + i32.load offset=4 + local.set $3 + local.get $5 + i32.load offset=8 + local.set $4 + loop $for-loop|016 + local.get $1 + local.get $4 + i32.lt_s + if + local.get $1 + local.get $3 + i32.add + i32.load8_u + local.set $2 + i32.const 4 + global.set $~argumentsLength + local.get $0 + local.get $2 + local.get $1 + local.get $5 + i32.const 2960 + i32.load + call_indirect $0 (type $i32_i32_i32_i32_=>_i32) + local.set $0 + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|016 + end + end + local.get $0 + i32.const 255 + i32.and + i32.const 6 + i32.ne + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 15924 + i32.lt_s + br_if $folding-inner23 + global.get $~lib/memory/__stack_pointer + local.tee $0 + i64.const 0 + i64.store + local.get $0 + i32.const 3 + call $~lib/typedarray/Int16Array#constructor + local.tee $3 + i32.store + local.get $3 + i32.const 0 + i32.const 1 + call $~lib/typedarray/Int16Array#__set + local.get $3 + i32.const 1 + i32.const 2 + call $~lib/typedarray/Int16Array#__set + local.get $3 + i32.const 2 + i32.const 3 + call $~lib/typedarray/Int16Array#__set + global.get $~lib/memory/__stack_pointer + i32.const 2992 + i32.store offset=4 + i32.const 0 + local.set $1 + i32.const 0 + local.set $9 + local.get $3 + i32.load offset=4 + local.set $4 + local.get $3 + i32.load offset=8 + i32.const 1 + i32.shr_u + local.set $2 + loop $for-loop|08 + local.get $1 + local.get $2 + i32.lt_s + if + local.get $4 + local.get $1 + i32.const 1 + i32.shl + i32.add + i32.load16_s + local.set $0 + i32.const 4 + global.set $~argumentsLength + local.get $9 + local.get $0 + local.get $1 + local.get $3 + i32.const 2992 + i32.load + call_indirect $0 (type $i32_i32_i32_i32_=>_i32) + local.set $9 + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|08 + end + end + local.get $9 + i32.const 65535 + i32.and + i32.const 6 + i32.ne + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 15924 + i32.lt_s + br_if $folding-inner23 + global.get $~lib/memory/__stack_pointer + local.tee $0 + i64.const 0 + i64.store + local.get $0 + i32.const 3 + call $~lib/typedarray/Uint16Array#constructor + local.tee $3 + i32.store + local.get $3 + i32.const 0 + i32.const 1 + call $~lib/typedarray/Uint16Array#__set + local.get $3 + i32.const 1 + i32.const 2 + call $~lib/typedarray/Uint16Array#__set + local.get $3 + i32.const 2 + i32.const 3 + call $~lib/typedarray/Uint16Array#__set + global.get $~lib/memory/__stack_pointer + i32.const 3024 + i32.store offset=4 + i32.const 0 + local.set $1 + i32.const 0 + local.set $9 + local.get $3 + i32.load offset=4 + local.set $4 + local.get $3 + i32.load offset=8 + i32.const 1 + i32.shr_u + local.set $2 + loop $for-loop|010 + local.get $1 + local.get $2 + i32.lt_s + if + local.get $4 + local.get $1 + i32.const 1 + i32.shl + i32.add + i32.load16_u + local.set $0 + i32.const 4 + global.set $~argumentsLength + local.get $9 + local.get $0 + local.get $1 + local.get $3 + i32.const 3024 + i32.load + call_indirect $0 (type $i32_i32_i32_i32_=>_i32) + local.set $9 + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|010 + end + end + local.get $9 + i32.const 65535 + i32.and + i32.const 6 + i32.ne + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 15924 + i32.lt_s + br_if $folding-inner23 + global.get $~lib/memory/__stack_pointer + local.tee $0 + i64.const 0 + i64.store + local.get $0 + i32.const 3 + call $~lib/typedarray/Int32Array#constructor + local.tee $3 + i32.store + local.get $3 + i32.const 0 + i32.const 1 + call $~lib/typedarray/Int32Array#__set + local.get $3 + i32.const 1 + i32.const 2 + call $~lib/typedarray/Int32Array#__set + local.get $3 + i32.const 2 + i32.const 3 + call $~lib/typedarray/Int32Array#__set + global.get $~lib/memory/__stack_pointer + i32.const 3056 + i32.store offset=4 + i32.const 0 + local.set $1 + i32.const 0 + local.set $9 + local.get $3 + i32.load offset=4 + local.set $4 + local.get $3 + i32.load offset=8 + i32.const 2 + i32.shr_u + local.set $2 + loop $for-loop|012 + local.get $1 + local.get $2 + i32.lt_s + if + local.get $4 + local.get $1 + i32.const 2 + i32.shl + i32.add + i32.load + local.set $0 + i32.const 4 + global.set $~argumentsLength + local.get $9 + local.get $0 + local.get $1 + local.get $3 + i32.const 3056 + i32.load + call_indirect $0 (type $i32_i32_i32_i32_=>_i32) + local.set $9 + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|012 + end + end + local.get $9 + i32.const 6 + i32.ne + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 15924 + i32.lt_s + br_if $folding-inner23 + global.get $~lib/memory/__stack_pointer + local.tee $0 + i64.const 0 + i64.store + local.get $0 + i32.const 3 + call $~lib/typedarray/Uint32Array#constructor + local.tee $3 + i32.store + local.get $3 + i32.const 0 + i32.const 1 + call $~lib/typedarray/Uint32Array#__set + local.get $3 + i32.const 1 + i32.const 2 + call $~lib/typedarray/Uint32Array#__set + local.get $3 + i32.const 2 + i32.const 3 + call $~lib/typedarray/Uint32Array#__set + global.get $~lib/memory/__stack_pointer + i32.const 3088 + i32.store offset=4 + i32.const 0 + local.set $1 + i32.const 0 + local.set $9 + local.get $3 + i32.load offset=4 + local.set $4 + local.get $3 + i32.load offset=8 + i32.const 2 + i32.shr_u + local.set $2 + loop $for-loop|014 + local.get $1 + local.get $2 + i32.lt_s + if + local.get $4 + local.get $1 + i32.const 2 + i32.shl + i32.add + i32.load + local.set $0 + i32.const 4 + global.set $~argumentsLength + local.get $9 + local.get $0 + local.get $1 + local.get $3 + i32.const 3088 + i32.load + call_indirect $0 (type $i32_i32_i32_i32_=>_i32) + local.set $9 + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|014 + end + end + local.get $9 + i32.const 6 + i32.ne + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 15924 + i32.lt_s + br_if $folding-inner23 + global.get $~lib/memory/__stack_pointer + local.tee $0 + i64.const 0 + i64.store + local.get $0 + i32.const 3 + call $~lib/typedarray/Int64Array#constructor + local.tee $4 + i32.store + local.get $4 + i32.const 0 + i64.const 1 + call $~lib/typedarray/Int64Array#__set + local.get $4 + i32.const 1 + i64.const 2 + call $~lib/typedarray/Int64Array#__set + local.get $4 + i32.const 2 + i64.const 3 + call $~lib/typedarray/Int64Array#__set + global.get $~lib/memory/__stack_pointer + i32.const 3120 + i32.store offset=4 + i32.const 0 + local.set $1 + local.get $4 + i32.load offset=4 + local.set $2 + local.get $4 + i32.load offset=8 + i32.const 3 + i32.shr_u + local.set $0 + loop $for-loop|01622 + local.get $0 + local.get $1 + i32.gt_s + if + local.get $2 + local.get $1 + i32.const 3 + i32.shl + i32.add + i64.load + local.set $10 + i32.const 4 + global.set $~argumentsLength + local.get $13 + local.get $10 + local.get $1 + local.get $4 + i32.const 3120 + i32.load + call_indirect $0 (type $i64_i64_i32_i32_=>_i64) + local.set $13 + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|01622 + end + end + local.get $13 + i64.const 6 + i64.ne + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 15924 + i32.lt_s + br_if $folding-inner23 + global.get $~lib/memory/__stack_pointer + local.tee $0 + i64.const 0 + i64.store + local.get $0 + i32.const 3 + call $~lib/typedarray/Uint64Array#constructor + local.tee $4 + i32.store + local.get $4 + i32.const 0 + i64.const 1 + call $~lib/typedarray/Uint64Array#__set + local.get $4 + i32.const 1 + i64.const 2 + call $~lib/typedarray/Uint64Array#__set + local.get $4 + i32.const 2 + i64.const 3 + call $~lib/typedarray/Uint64Array#__set + global.get $~lib/memory/__stack_pointer + i32.const 3152 + i32.store offset=4 + i32.const 0 + local.set $1 + i64.const 0 + local.set $13 + local.get $4 + i32.load offset=4 + local.set $2 + local.get $4 + i32.load offset=8 + i32.const 3 + i32.shr_u + local.set $0 + loop $for-loop|018 + local.get $0 + local.get $1 + i32.gt_s + if + local.get $2 + local.get $1 + i32.const 3 + i32.shl + i32.add + i64.load + local.set $10 + i32.const 4 + global.set $~argumentsLength + local.get $13 + local.get $10 + local.get $1 + local.get $4 + i32.const 3152 + i32.load + call_indirect $0 (type $i64_i64_i32_i32_=>_i64) + local.set $13 + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|018 + end + end + local.get $13 + i64.const 6 + i64.ne + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 15924 + i32.lt_s + br_if $folding-inner23 + global.get $~lib/memory/__stack_pointer + local.tee $0 + i64.const 0 + i64.store + local.get $0 + i32.const 3 + call $~lib/typedarray/Float32Array#constructor + local.tee $4 + i32.store + local.get $4 + i32.const 0 + f32.const 1 + call $~lib/typedarray/Float32Array#__set + local.get $4 + i32.const 1 + f32.const 2 + call $~lib/typedarray/Float32Array#__set + local.get $4 + i32.const 2 + f32.const 3 + call $~lib/typedarray/Float32Array#__set + global.get $~lib/memory/__stack_pointer + i32.const 3184 + i32.store offset=4 + i32.const 0 + local.set $1 + local.get $4 + i32.load offset=4 + local.set $2 + local.get $4 + i32.load offset=8 + i32.const 2 + i32.shr_u + local.set $0 + loop $for-loop|021 + local.get $0 + local.get $1 + i32.gt_s + if + local.get $2 + local.get $1 + i32.const 2 + i32.shl + i32.add + f32.load + local.set $11 + i32.const 4 + global.set $~argumentsLength + local.get $14 + local.get $11 + local.get $1 + local.get $4 + i32.const 3184 + i32.load + call_indirect $0 (type $f32_f32_i32_i32_=>_f32) + local.set $14 + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|021 + end + end + local.get $14 + f32.const 6 + f32.ne + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 15924 + i32.lt_s + br_if $folding-inner23 + global.get $~lib/memory/__stack_pointer + local.tee $0 + i64.const 0 + i64.store + local.get $0 + i32.const 3 + call $~lib/typedarray/Float64Array#constructor + local.tee $4 + i32.store + local.get $4 + i32.const 0 + f64.const 1 + call $~lib/typedarray/Float64Array#__set + local.get $4 + i32.const 1 + f64.const 2 + call $~lib/typedarray/Float64Array#__set + local.get $4 + i32.const 2 + f64.const 3 + call $~lib/typedarray/Float64Array#__set + global.get $~lib/memory/__stack_pointer + i32.const 3216 + i32.store offset=4 + i32.const 0 + local.set $1 + local.get $4 + i32.load offset=4 + local.set $2 + local.get $4 + i32.load offset=8 + i32.const 3 + i32.shr_u + local.set $0 + loop $for-loop|023 + local.get $0 + local.get $1 + i32.gt_s + if + local.get $2 + local.get $1 + i32.const 3 + i32.shl + i32.add + f64.load + local.set $12 + i32.const 4 + global.set $~argumentsLength + local.get $15 + local.get $12 + local.get $1 + local.get $4 + i32.const 3216 + i32.load + call_indirect $0 (type $f64_f64_i32_i32_=>_f64) + local.set $15 + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|023 + end + end + local.get $15 + f64.const 6 + f64.ne + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 15924 + i32.lt_s + br_if $folding-inner23 + global.get $~lib/memory/__stack_pointer + local.tee $0 + i32.const 0 + i32.store + local.get $0 + i32.const 3 + call $~lib/typedarray/Int8Array#constructor + local.tee $0 + i32.store + local.get $0 + i32.const 0 + i32.const 1 + call $~lib/typedarray/Int8Array#__set + local.get $0 + i32.const 1 + i32.const 2 + call $~lib/typedarray/Int8Array#__set + local.get $0 + i32.const 2 + i32.const 3 + call $~lib/typedarray/Int8Array#__set + local.get $0 + i32.const 0 + call $~lib/typedarray/Int8Array#at + i32.const 1 + i32.ne + br_if $folding-inner2 + local.get $0 + i32.const -1 + call $~lib/typedarray/Int8Array#at + i32.const 3 + i32.ne + br_if $folding-inner3 + local.get $0 + i32.const -3 + call $~lib/typedarray/Int8Array#at + i32.const 1 + i32.ne + br_if $folding-inner4 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 15924 + i32.lt_s + br_if $folding-inner23 + global.get $~lib/memory/__stack_pointer + local.tee $0 + i32.const 0 + i32.store + local.get $0 + i32.const 3 + call $~lib/typedarray/Uint8Array#constructor + local.tee $0 + i32.store + local.get $0 + i32.const 0 + i32.const 1 + call $~lib/typedarray/Uint8Array#__set + local.get $0 + i32.const 1 + i32.const 2 + call $~lib/typedarray/Uint8Array#__set + local.get $0 + i32.const 2 + i32.const 3 + call $~lib/typedarray/Uint8Array#__set + local.get $0 + i32.const 0 + call $~lib/typedarray/Uint8Array#at + i32.const 1 + i32.ne + br_if $folding-inner2 + local.get $0 + i32.const -1 + call $~lib/typedarray/Uint8Array#at + i32.const 3 + i32.ne + br_if $folding-inner3 + local.get $0 + i32.const -3 + call $~lib/typedarray/Uint8Array#at + i32.const 1 + i32.ne + br_if $folding-inner4 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 15924 + i32.lt_s + br_if $folding-inner23 + global.get $~lib/memory/__stack_pointer + local.tee $0 + i32.const 0 + i32.store + local.get $0 + i32.const 3 + call $~lib/typedarray/Uint8ClampedArray#constructor + local.tee $0 + i32.store + local.get $0 + i32.const 0 + i32.const 1 + call $~lib/typedarray/Uint8ClampedArray#__set + local.get $0 + i32.const 1 + i32.const 2 + call $~lib/typedarray/Uint8ClampedArray#__set + local.get $0 + i32.const 2 + i32.const 3 + call $~lib/typedarray/Uint8ClampedArray#__set + local.get $0 + i32.const 0 + call $~lib/typedarray/Uint8ClampedArray#at + i32.const 1 + i32.ne + br_if $folding-inner2 + local.get $0 + i32.const -1 + call $~lib/typedarray/Uint8ClampedArray#at + i32.const 3 + i32.ne + br_if $folding-inner3 + local.get $0 + i32.const -3 + call $~lib/typedarray/Uint8ClampedArray#at + i32.const 1 + i32.ne + br_if $folding-inner4 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 15924 + i32.lt_s + br_if $folding-inner23 + global.get $~lib/memory/__stack_pointer + local.tee $0 + i32.const 0 + i32.store + local.get $0 + i32.const 3 + call $~lib/typedarray/Int16Array#constructor + local.tee $0 + i32.store + local.get $0 + i32.const 0 + i32.const 1 + call $~lib/typedarray/Int16Array#__set + local.get $0 + i32.const 1 + i32.const 2 + call $~lib/typedarray/Int16Array#__set + local.get $0 + i32.const 2 + i32.const 3 + call $~lib/typedarray/Int16Array#__set + local.get $0 + i32.const 0 + call $~lib/typedarray/Int16Array#at + i32.const 1 + i32.ne + br_if $folding-inner2 + local.get $0 + i32.const -1 + call $~lib/typedarray/Int16Array#at + i32.const 3 + i32.ne + br_if $folding-inner3 + local.get $0 + i32.const -3 + call $~lib/typedarray/Int16Array#at + i32.const 1 + i32.ne + br_if $folding-inner4 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 15924 + i32.lt_s + br_if $folding-inner23 + global.get $~lib/memory/__stack_pointer + local.tee $0 + i32.const 0 + i32.store + local.get $0 + i32.const 3 + call $~lib/typedarray/Uint16Array#constructor + local.tee $0 + i32.store + local.get $0 + i32.const 0 + i32.const 1 + call $~lib/typedarray/Uint16Array#__set + local.get $0 + i32.const 1 + i32.const 2 + call $~lib/typedarray/Uint16Array#__set + local.get $0 + i32.const 2 + i32.const 3 + call $~lib/typedarray/Uint16Array#__set + local.get $0 + i32.const 0 + call $~lib/typedarray/Uint16Array#at + i32.const 1 + i32.ne + br_if $folding-inner2 + local.get $0 + i32.const -1 + call $~lib/typedarray/Uint16Array#at + i32.const 3 + i32.ne + br_if $folding-inner3 + local.get $0 + i32.const -3 + call $~lib/typedarray/Uint16Array#at + i32.const 1 + i32.ne + br_if $folding-inner4 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 15924 + i32.lt_s + br_if $folding-inner23 + global.get $~lib/memory/__stack_pointer + local.tee $0 + i32.const 0 + i32.store + local.get $0 + i32.const 3 + call $~lib/typedarray/Int32Array#constructor + local.tee $0 + i32.store + local.get $0 + i32.const 0 + i32.const 1 + call $~lib/typedarray/Int32Array#__set + local.get $0 + i32.const 1 + i32.const 2 + call $~lib/typedarray/Int32Array#__set + local.get $0 + i32.const 2 + i32.const 3 + call $~lib/typedarray/Int32Array#__set + local.get $0 + i32.const 0 + call $~lib/typedarray/Int32Array#at + i32.const 1 + i32.ne + br_if $folding-inner2 + local.get $0 + i32.const -1 + call $~lib/typedarray/Int32Array#at + i32.const 3 + i32.ne + br_if $folding-inner3 + local.get $0 + i32.const -3 + call $~lib/typedarray/Int32Array#at + i32.const 1 + i32.ne + br_if $folding-inner4 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 15924 + i32.lt_s + br_if $folding-inner23 + global.get $~lib/memory/__stack_pointer + local.tee $0 + i32.const 0 + i32.store + local.get $0 + i32.const 3 + call $~lib/typedarray/Uint32Array#constructor + local.tee $0 + i32.store + local.get $0 + i32.const 0 + i32.const 1 + call $~lib/typedarray/Uint32Array#__set + local.get $0 + i32.const 1 + i32.const 2 + call $~lib/typedarray/Uint32Array#__set + local.get $0 + i32.const 2 + i32.const 3 + call $~lib/typedarray/Uint32Array#__set + local.get $0 + i32.const 0 + call $~lib/typedarray/Uint32Array#at + i32.const 1 + i32.ne + br_if $folding-inner2 + local.get $0 + i32.const -1 + call $~lib/typedarray/Uint32Array#at + i32.const 3 + i32.ne + br_if $folding-inner3 + local.get $0 + i32.const -3 + call $~lib/typedarray/Uint32Array#at + i32.const 1 + i32.ne + br_if $folding-inner4 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 15924 + i32.lt_s + br_if $folding-inner23 + global.get $~lib/memory/__stack_pointer + local.tee $0 + i32.const 0 + i32.store + local.get $0 + i32.const 3 + call $~lib/typedarray/Int64Array#constructor + local.tee $0 + i32.store + local.get $0 + i32.const 0 + i64.const 1 + call $~lib/typedarray/Int64Array#__set + local.get $0 + i32.const 1 + i64.const 2 + call $~lib/typedarray/Int64Array#__set + local.get $0 + i32.const 2 + i64.const 3 + call $~lib/typedarray/Int64Array#__set + local.get $0 + i32.const 0 + call $~lib/typedarray/Int64Array#at + i64.const 1 + i64.ne + br_if $folding-inner2 + local.get $0 + i32.const -1 + call $~lib/typedarray/Int64Array#at + i64.const 3 + i64.ne + br_if $folding-inner3 + local.get $0 + i32.const -3 + call $~lib/typedarray/Int64Array#at + i64.const 1 + i64.ne + br_if $folding-inner4 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 15924 + i32.lt_s + br_if $folding-inner23 + global.get $~lib/memory/__stack_pointer + local.tee $0 + i32.const 0 + i32.store + local.get $0 + i32.const 3 + call $~lib/typedarray/Uint64Array#constructor + local.tee $0 + i32.store + local.get $0 + i32.const 0 + i64.const 1 + call $~lib/typedarray/Uint64Array#__set + local.get $0 + i32.const 1 + i64.const 2 + call $~lib/typedarray/Uint64Array#__set + local.get $0 + i32.const 2 + i64.const 3 + call $~lib/typedarray/Uint64Array#__set + local.get $0 + i32.const 0 + call $~lib/typedarray/Uint64Array#at + i64.const 1 + i64.ne + br_if $folding-inner2 + local.get $0 + i32.const -1 + call $~lib/typedarray/Uint64Array#at + i64.const 3 + i64.ne + br_if $folding-inner3 + local.get $0 + i32.const -3 + call $~lib/typedarray/Uint64Array#at + i64.const 1 + i64.ne + br_if $folding-inner4 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 15924 + i32.lt_s + br_if $folding-inner23 + global.get $~lib/memory/__stack_pointer + local.tee $0 + i32.const 0 + i32.store + local.get $0 + i32.const 3 + call $~lib/typedarray/Float32Array#constructor + local.tee $0 + i32.store + local.get $0 + i32.const 0 + f32.const 1 + call $~lib/typedarray/Float32Array#__set + local.get $0 + i32.const 1 + f32.const 2 + call $~lib/typedarray/Float32Array#__set + local.get $0 + i32.const 2 + f32.const 3 + call $~lib/typedarray/Float32Array#__set + local.get $0 + i32.const 0 + call $~lib/typedarray/Float32Array#at + f32.const 1 + f32.ne + br_if $folding-inner2 + local.get $0 + i32.const -1 + call $~lib/typedarray/Float32Array#at + f32.const 3 + f32.ne + br_if $folding-inner3 + local.get $0 + i32.const -3 + call $~lib/typedarray/Float32Array#at + f32.const 1 + f32.ne + br_if $folding-inner4 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 15924 + i32.lt_s + br_if $folding-inner23 + global.get $~lib/memory/__stack_pointer + local.tee $0 + i32.const 0 + i32.store + local.get $0 + i32.const 3 + call $~lib/typedarray/Float64Array#constructor + local.tee $0 + i32.store + local.get $0 + i32.const 0 + f64.const 1 + call $~lib/typedarray/Float64Array#__set + local.get $0 + i32.const 1 + f64.const 2 + call $~lib/typedarray/Float64Array#__set + local.get $0 + i32.const 2 + f64.const 3 + call $~lib/typedarray/Float64Array#__set + local.get $0 + i32.const 0 + call $~lib/typedarray/Float64Array#at + f64.const 1 + f64.ne + br_if $folding-inner2 + local.get $0 + i32.const -1 + call $~lib/typedarray/Float64Array#at + f64.const 3 + f64.ne + br_if $folding-inner3 + local.get $0 + i32.const -3 + call $~lib/typedarray/Float64Array#at + f64.const 1 + f64.ne + br_if $folding-inner4 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 15924 + i32.lt_s + br_if $folding-inner23 + global.get $~lib/memory/__stack_pointer + local.tee $0 + i64.const 0 + i64.store + local.get $0 + i32.const 3 + call $~lib/typedarray/Int8Array#constructor + local.tee $3 + i32.store + local.get $3 + i32.const 0 + i32.const 1 + call $~lib/typedarray/Int8Array#__set + local.get $3 + i32.const 1 + i32.const 2 + call $~lib/typedarray/Int8Array#__set + local.get $3 + i32.const 2 + i32.const 3 + call $~lib/typedarray/Int8Array#__set + global.get $~lib/memory/__stack_pointer + i32.const 3248 + i32.store offset=4 + i32.const 0 + local.set $1 + local.get $3 + i32.load offset=4 + local.set $4 + local.get $3 + i32.load offset=8 + i32.const 1 + i32.sub + local.set $0 + loop $for-loop|025 + local.get $0 + i32.const 0 + i32.ge_s + if + local.get $0 + local.get $4 + i32.add + i32.load8_s + local.set $2 + i32.const 4 + global.set $~argumentsLength + local.get $1 + local.get $2 + local.get $0 + local.get $3 + i32.const 3248 + i32.load + call_indirect $0 (type $i32_i32_i32_i32_=>_i32) + local.set $1 + local.get $0 + i32.const 1 + i32.sub + local.set $0 + br $for-loop|025 + end + end + local.get $1 + i32.const 255 + i32.and + i32.const 6 + i32.ne + br_if $folding-inner5 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 15924 + i32.lt_s + br_if $folding-inner23 + global.get $~lib/memory/__stack_pointer + local.tee $0 + i64.const 0 + i64.store + local.get $0 + i32.const 3 + call $~lib/typedarray/Uint8Array#constructor + local.tee $3 + i32.store + local.get $3 + i32.const 0 + i32.const 1 + call $~lib/typedarray/Uint8Array#__set + local.get $3 + i32.const 1 + i32.const 2 + call $~lib/typedarray/Uint8Array#__set + local.get $3 + i32.const 2 + i32.const 3 + call $~lib/typedarray/Uint8Array#__set + global.get $~lib/memory/__stack_pointer + i32.const 3280 + i32.store offset=4 + i32.const 0 + local.set $0 + local.get $3 + i32.load offset=4 + local.set $4 + local.get $3 + i32.load offset=8 + i32.const 1 + i32.sub + local.set $1 + loop $for-loop|039 + local.get $1 + i32.const 0 + i32.ge_s + if + local.get $1 + local.get $4 + i32.add + i32.load8_u + local.set $2 + i32.const 4 + global.set $~argumentsLength + local.get $0 + local.get $2 + local.get $1 + local.get $3 + i32.const 3280 + i32.load + call_indirect $0 (type $i32_i32_i32_i32_=>_i32) + local.set $0 + local.get $1 + i32.const 1 + i32.sub + local.set $1 + br $for-loop|039 + end + end + local.get $0 + i32.const 255 + i32.and + i32.const 6 + i32.ne + br_if $folding-inner5 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 15924 + i32.lt_s + br_if $folding-inner23 + global.get $~lib/memory/__stack_pointer + local.tee $0 + i64.const 0 + i64.store + local.get $0 + i32.const 3 + call $~lib/typedarray/Uint8ClampedArray#constructor + local.tee $3 + i32.store + local.get $3 + i32.const 0 + i32.const 1 + call $~lib/typedarray/Uint8ClampedArray#__set + local.get $3 + i32.const 1 + i32.const 2 + call $~lib/typedarray/Uint8ClampedArray#__set + local.get $3 + i32.const 2 + i32.const 3 + call $~lib/typedarray/Uint8ClampedArray#__set + global.get $~lib/memory/__stack_pointer + i32.const 3312 + i32.store offset=4 + i32.const 0 + local.set $0 + local.get $3 + i32.load offset=4 + local.set $4 + local.get $3 + i32.load offset=8 + i32.const 1 + i32.sub + local.set $1 + loop $for-loop|042 + local.get $1 + i32.const 0 + i32.ge_s + if + local.get $1 + local.get $4 + i32.add + i32.load8_u + local.set $2 + i32.const 4 + global.set $~argumentsLength + local.get $0 + local.get $2 + local.get $1 + local.get $3 + i32.const 3312 + i32.load + call_indirect $0 (type $i32_i32_i32_i32_=>_i32) + local.set $0 + local.get $1 + i32.const 1 + i32.sub + local.set $1 + br $for-loop|042 + end + end + local.get $0 + i32.const 255 + i32.and + i32.const 6 + i32.ne + br_if $folding-inner5 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 15924 + i32.lt_s + br_if $folding-inner23 + global.get $~lib/memory/__stack_pointer + local.tee $0 + i64.const 0 + i64.store + local.get $0 + i32.const 3 + call $~lib/typedarray/Int16Array#constructor + local.tee $3 + i32.store + local.get $3 + i32.const 0 + i32.const 1 + call $~lib/typedarray/Int16Array#__set + local.get $3 + i32.const 1 + i32.const 2 + call $~lib/typedarray/Int16Array#__set + local.get $3 + i32.const 2 + i32.const 3 + call $~lib/typedarray/Int16Array#__set + global.get $~lib/memory/__stack_pointer + i32.const 3344 + i32.store offset=4 + i32.const 0 + local.set $1 + local.get $3 + i32.load offset=4 + local.set $4 + local.get $3 + i32.load offset=8 + i32.const 1 + i32.shr_u + i32.const 1 + i32.sub + local.set $0 + loop $for-loop|027 + local.get $0 + i32.const 0 + i32.ge_s + if + local.get $4 + local.get $0 + i32.const 1 + i32.shl + i32.add + i32.load16_s + local.set $2 + i32.const 4 + global.set $~argumentsLength + local.get $1 + local.get $2 + local.get $0 + local.get $3 + i32.const 3344 + i32.load + call_indirect $0 (type $i32_i32_i32_i32_=>_i32) + local.set $1 + local.get $0 + i32.const 1 + i32.sub + local.set $0 + br $for-loop|027 + end + end + local.get $1 + i32.const 65535 + i32.and + i32.const 6 + i32.ne + br_if $folding-inner5 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 15924 + i32.lt_s + br_if $folding-inner23 + global.get $~lib/memory/__stack_pointer + local.tee $0 + i64.const 0 + i64.store + local.get $0 + i32.const 3 + call $~lib/typedarray/Uint16Array#constructor + local.tee $3 + i32.store + local.get $3 + i32.const 0 + i32.const 1 + call $~lib/typedarray/Uint16Array#__set + local.get $3 + i32.const 1 + i32.const 2 + call $~lib/typedarray/Uint16Array#__set + local.get $3 + i32.const 2 + i32.const 3 + call $~lib/typedarray/Uint16Array#__set + global.get $~lib/memory/__stack_pointer + i32.const 3376 + i32.store offset=4 + i32.const 0 + local.set $1 + local.get $3 + i32.load offset=4 + local.set $4 + local.get $3 + i32.load offset=8 + i32.const 1 + i32.shr_u + i32.const 1 + i32.sub + local.set $0 + loop $for-loop|029 + local.get $0 + i32.const 0 + i32.ge_s + if + local.get $4 + local.get $0 + i32.const 1 + i32.shl + i32.add + i32.load16_u + local.set $2 + i32.const 4 + global.set $~argumentsLength + local.get $1 + local.get $2 + local.get $0 + local.get $3 + i32.const 3376 + i32.load + call_indirect $0 (type $i32_i32_i32_i32_=>_i32) + local.set $1 + local.get $0 + i32.const 1 + i32.sub + local.set $0 + br $for-loop|029 + end + end + local.get $1 + i32.const 65535 + i32.and + i32.const 6 + i32.ne + br_if $folding-inner5 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 15924 + i32.lt_s + br_if $folding-inner23 + global.get $~lib/memory/__stack_pointer + local.tee $0 + i64.const 0 + i64.store + local.get $0 + i32.const 3 + call $~lib/typedarray/Int32Array#constructor + local.tee $3 + i32.store + local.get $3 + i32.const 0 + i32.const 1 + call $~lib/typedarray/Int32Array#__set + local.get $3 + i32.const 1 + i32.const 2 + call $~lib/typedarray/Int32Array#__set + local.get $3 + i32.const 2 + i32.const 3 + call $~lib/typedarray/Int32Array#__set + global.get $~lib/memory/__stack_pointer + i32.const 3408 + i32.store offset=4 + i32.const 0 + local.set $1 + local.get $3 + i32.load offset=4 + local.set $4 + local.get $3 + i32.load offset=8 + i32.const 2 + i32.shr_u + i32.const 1 + i32.sub + local.set $0 + loop $for-loop|031 + local.get $0 + i32.const 0 + i32.ge_s + if + local.get $4 + local.get $0 + i32.const 2 + i32.shl + i32.add + i32.load + local.set $2 + i32.const 4 + global.set $~argumentsLength + local.get $1 + local.get $2 + local.get $0 + local.get $3 + i32.const 3408 + i32.load + call_indirect $0 (type $i32_i32_i32_i32_=>_i32) + local.set $1 + local.get $0 + i32.const 1 + i32.sub + local.set $0 + br $for-loop|031 + end + end + local.get $1 + i32.const 6 + i32.ne + br_if $folding-inner5 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 15924 + i32.lt_s + br_if $folding-inner23 + global.get $~lib/memory/__stack_pointer + local.tee $0 + i64.const 0 + i64.store + local.get $0 + i32.const 3 + call $~lib/typedarray/Uint32Array#constructor + local.tee $3 + i32.store + local.get $3 + i32.const 0 + i32.const 1 + call $~lib/typedarray/Uint32Array#__set + local.get $3 + i32.const 1 + i32.const 2 + call $~lib/typedarray/Uint32Array#__set + local.get $3 + i32.const 2 + i32.const 3 + call $~lib/typedarray/Uint32Array#__set + global.get $~lib/memory/__stack_pointer + i32.const 3440 + i32.store offset=4 + i32.const 0 + local.set $1 + local.get $3 + i32.load offset=4 + local.set $4 + local.get $3 + i32.load offset=8 + i32.const 2 + i32.shr_u + i32.const 1 + i32.sub + local.set $0 + loop $for-loop|033 + local.get $0 + i32.const 0 + i32.ge_s + if + local.get $4 + local.get $0 + i32.const 2 + i32.shl + i32.add + i32.load + local.set $2 + i32.const 4 + global.set $~argumentsLength + local.get $1 + local.get $2 + local.get $0 + local.get $3 + i32.const 3440 + i32.load + call_indirect $0 (type $i32_i32_i32_i32_=>_i32) + local.set $1 + local.get $0 + i32.const 1 + i32.sub + local.set $0 + br $for-loop|033 + end + end + local.get $1 + i32.const 6 + i32.ne + br_if $folding-inner5 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 15924 + i32.lt_s + br_if $folding-inner23 + global.get $~lib/memory/__stack_pointer + local.tee $0 + i64.const 0 + i64.store + local.get $0 + i32.const 3 + call $~lib/typedarray/Int64Array#constructor + local.tee $2 + i32.store + local.get $2 + i32.const 0 + i64.const 1 + call $~lib/typedarray/Int64Array#__set + local.get $2 + i32.const 1 + i64.const 2 + call $~lib/typedarray/Int64Array#__set + local.get $2 + i32.const 2 + i64.const 3 + call $~lib/typedarray/Int64Array#__set + global.get $~lib/memory/__stack_pointer + i32.const 3472 + i32.store offset=4 + i64.const 0 + local.set $13 + local.get $2 + i32.load offset=4 + local.set $1 + local.get $2 + i32.load offset=8 + i32.const 3 + i32.shr_u + i32.const 1 + i32.sub + local.set $0 + loop $for-loop|035 + local.get $0 + i32.const 0 + i32.ge_s + if + local.get $1 + local.get $0 + i32.const 3 + i32.shl + i32.add + i64.load + local.set $10 + i32.const 4 + global.set $~argumentsLength + local.get $13 + local.get $10 + local.get $0 + local.get $2 + i32.const 3472 + i32.load + call_indirect $0 (type $i64_i64_i32_i32_=>_i64) + local.set $13 + local.get $0 + i32.const 1 + i32.sub + local.set $0 + br $for-loop|035 + end + end + local.get $13 + i64.const 6 + i64.ne + br_if $folding-inner5 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 15924 + i32.lt_s + br_if $folding-inner23 + global.get $~lib/memory/__stack_pointer + local.tee $0 + i64.const 0 + i64.store + local.get $0 + i32.const 3 + call $~lib/typedarray/Uint64Array#constructor + local.tee $2 + i32.store + local.get $2 + i32.const 0 + i64.const 1 + call $~lib/typedarray/Uint64Array#__set + local.get $2 + i32.const 1 + i64.const 2 + call $~lib/typedarray/Uint64Array#__set + local.get $2 + i32.const 2 + i64.const 3 + call $~lib/typedarray/Uint64Array#__set + global.get $~lib/memory/__stack_pointer + i32.const 3504 + i32.store offset=4 + i64.const 0 + local.set $13 + local.get $2 + i32.load offset=4 + local.set $1 + local.get $2 + i32.load offset=8 + i32.const 3 + i32.shr_u + i32.const 1 + i32.sub + local.set $0 + loop $for-loop|037 + local.get $0 + i32.const 0 + i32.ge_s + if + local.get $1 + local.get $0 + i32.const 3 + i32.shl + i32.add + i64.load + local.set $10 + i32.const 4 + global.set $~argumentsLength + local.get $13 + local.get $10 + local.get $0 + local.get $2 + i32.const 3504 + i32.load + call_indirect $0 (type $i64_i64_i32_i32_=>_i64) + local.set $13 + local.get $0 + i32.const 1 + i32.sub + local.set $0 + br $for-loop|037 + end + end + local.get $13 + i64.const 6 + i64.ne + br_if $folding-inner5 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 15924 + i32.lt_s + br_if $folding-inner23 + global.get $~lib/memory/__stack_pointer + local.tee $0 + i64.const 0 + i64.store + local.get $0 + i32.const 3 + call $~lib/typedarray/Float32Array#constructor + local.tee $2 + i32.store + local.get $2 + i32.const 0 + f32.const 1 + call $~lib/typedarray/Float32Array#__set + local.get $2 + i32.const 1 + f32.const 2 + call $~lib/typedarray/Float32Array#__set + local.get $2 + i32.const 2 + f32.const 3 + call $~lib/typedarray/Float32Array#__set + global.get $~lib/memory/__stack_pointer + i32.const 3536 + i32.store offset=4 + f32.const 0 + local.set $14 + local.get $2 + i32.load offset=4 + local.set $1 + local.get $2 + i32.load offset=8 + i32.const 2 + i32.shr_u + i32.const 1 + i32.sub + local.set $0 + loop $for-loop|03950 + local.get $0 + i32.const 0 + i32.ge_s + if + local.get $1 + local.get $0 + i32.const 2 + i32.shl + i32.add + f32.load + local.set $11 + i32.const 4 + global.set $~argumentsLength + local.get $14 + local.get $11 + local.get $0 + local.get $2 + i32.const 3536 + i32.load + call_indirect $0 (type $f32_f32_i32_i32_=>_f32) + local.set $14 + local.get $0 + i32.const 1 + i32.sub + local.set $0 + br $for-loop|03950 + end + end + local.get $14 + f32.const 6 + f32.ne + br_if $folding-inner5 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 15924 + i32.lt_s + br_if $folding-inner23 + global.get $~lib/memory/__stack_pointer + local.tee $0 + i64.const 0 + i64.store + local.get $0 + i32.const 3 + call $~lib/typedarray/Float64Array#constructor + local.tee $2 + i32.store + local.get $2 + i32.const 0 + f64.const 1 + call $~lib/typedarray/Float64Array#__set + local.get $2 + i32.const 1 + f64.const 2 + call $~lib/typedarray/Float64Array#__set + local.get $2 + i32.const 2 + f64.const 3 + call $~lib/typedarray/Float64Array#__set + global.get $~lib/memory/__stack_pointer + i32.const 3568 + i32.store offset=4 + f64.const 0 + local.set $15 + local.get $2 + i32.load offset=4 + local.set $1 + local.get $2 + i32.load offset=8 + i32.const 3 + i32.shr_u + i32.const 1 + i32.sub + local.set $0 + loop $for-loop|041 + local.get $0 + i32.const 0 + i32.ge_s + if + local.get $1 + local.get $0 + i32.const 3 + i32.shl + i32.add + f64.load + local.set $12 + i32.const 4 + global.set $~argumentsLength + local.get $15 + local.get $12 + local.get $0 + local.get $2 + i32.const 3568 + i32.load + call_indirect $0 (type $f64_f64_i32_i32_=>_f64) + local.set $15 + local.get $0 + i32.const 1 + i32.sub + local.set $0 + br $for-loop|041 + end + end + local.get $15 + f64.const 6 + f64.ne + br_if $folding-inner5 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 15924 + i32.lt_s + br_if $folding-inner23 + global.get $~lib/memory/__stack_pointer + local.tee $0 + i64.const 0 + i64.store + local.get $0 + i32.const 0 + i32.store offset=8 + local.get $0 + i32.const 3 + call $~lib/typedarray/Int8Array#constructor + local.tee $5 + i32.store + local.get $5 + i32.const 0 + i32.const 1 + call $~lib/typedarray/Int8Array#__set + local.get $5 + i32.const 1 + i32.const 2 + call $~lib/typedarray/Int8Array#__set + local.get $5 + i32.const 2 + i32.const 3 + call $~lib/typedarray/Int8Array#__set + global.get $~lib/memory/__stack_pointer + local.tee $2 + i32.const 3600 + i32.store offset=4 + local.get $2 + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 15924 + i32.lt_s + br_if $folding-inner23 + global.get $~lib/memory/__stack_pointer + local.tee $0 + i64.const 0 + i64.store + local.get $5 + i32.load offset=4 + local.set $1 + local.get $5 + i32.load offset=8 + local.set $4 + local.get $0 + i32.const 12 + i32.const 3 + call $~lib/rt/itcms/__new + local.tee $6 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.const 0 + call $~lib/rt/itcms/__new + local.tee $3 + i32.store offset=4 + loop $for-loop|053 + local.get $4 + local.get $8 + i32.gt_s + if + local.get $1 + local.get $8 + i32.add + i32.load8_s + local.set $0 + i32.const 3 + global.set $~argumentsLength + local.get $3 + local.get $8 + i32.add + local.get $0 + local.get $8 + local.get $5 + i32.const 3600 + i32.load + call_indirect $0 (type $i32_i32_i32_=>_i32) + i32.store8 + local.get $8 + i32.const 1 + i32.add + local.set $8 + br $for-loop|053 + end + end + local.get $6 + local.get $3 + i32.store + local.get $6 + local.get $3 + call $~lib/rt/itcms/__link + local.get $6 + local.get $3 + i32.store offset=4 + local.get $6 + local.get $4 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + local.get $6 + i32.store offset=8 + local.get $6 + i32.const 0 + call $~lib/typedarray/Int8Array#__get + i32.const 1 + i32.ne + br_if $folding-inner6 + local.get $6 + i32.const 1 + call $~lib/typedarray/Int8Array#__get + i32.const 4 + i32.ne + br_if $folding-inner7 + local.get $6 + i32.const 2 + call $~lib/typedarray/Int8Array#__get + i32.const 9 + i32.ne + br_if $folding-inner8 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 15924 + i32.lt_s + br_if $folding-inner23 + global.get $~lib/memory/__stack_pointer + local.tee $0 + i64.const 0 + i64.store + local.get $0 + i32.const 0 + i32.store offset=8 + local.get $0 + i32.const 3 + call $~lib/typedarray/Uint8Array#constructor + local.tee $5 + i32.store + local.get $5 + i32.const 0 + i32.const 1 + call $~lib/typedarray/Uint8Array#__set + local.get $5 + i32.const 1 + i32.const 2 + call $~lib/typedarray/Uint8Array#__set + local.get $5 + i32.const 2 + i32.const 3 + call $~lib/typedarray/Uint8Array#__set + global.get $~lib/memory/__stack_pointer + local.tee $2 + i32.const 3632 + i32.store offset=4 + i32.const 0 + local.set $8 + local.get $2 + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 15924 + i32.lt_s + br_if $folding-inner23 + global.get $~lib/memory/__stack_pointer + local.tee $0 + i64.const 0 + i64.store + local.get $5 + i32.load offset=4 + local.set $1 + local.get $5 + i32.load offset=8 + local.set $4 + local.get $0 + i32.const 12 + i32.const 4 + call $~lib/rt/itcms/__new + local.tee $6 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.const 0 + call $~lib/rt/itcms/__new + local.tee $3 + i32.store offset=4 + loop $for-loop|055 + local.get $4 + local.get $8 + i32.gt_s + if + local.get $1 + local.get $8 + i32.add + i32.load8_u + local.set $0 + i32.const 3 + global.set $~argumentsLength + local.get $3 + local.get $8 + i32.add + local.get $0 + local.get $8 + local.get $5 + i32.const 3632 + i32.load + call_indirect $0 (type $i32_i32_i32_=>_i32) + i32.store8 + local.get $8 + i32.const 1 + i32.add + local.set $8 + br $for-loop|055 + end + end + local.get $6 + local.get $3 + i32.store + local.get $6 + local.get $3 + call $~lib/rt/itcms/__link + local.get $6 + local.get $3 + i32.store offset=4 + local.get $6 + local.get $4 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + local.get $6 + i32.store offset=8 + local.get $6 + i32.const 0 + call $~lib/typedarray/Uint8Array#__get + i32.const 1 + i32.ne + br_if $folding-inner6 + local.get $6 + i32.const 1 + call $~lib/typedarray/Uint8Array#__get + i32.const 4 + i32.ne + br_if $folding-inner7 + local.get $6 + i32.const 2 + call $~lib/typedarray/Uint8Array#__get + i32.const 9 + i32.ne + br_if $folding-inner8 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 15924 + i32.lt_s + br_if $folding-inner23 + global.get $~lib/memory/__stack_pointer + local.tee $0 + i64.const 0 + i64.store + local.get $0 + i32.const 0 + i32.store offset=8 + local.get $0 + i32.const 3 + call $~lib/typedarray/Uint8ClampedArray#constructor + local.tee $5 + i32.store + local.get $5 + i32.const 0 + i32.const 1 + call $~lib/typedarray/Uint8ClampedArray#__set + local.get $5 + i32.const 1 + i32.const 2 + call $~lib/typedarray/Uint8ClampedArray#__set + local.get $5 + i32.const 2 + i32.const 3 + call $~lib/typedarray/Uint8ClampedArray#__set + global.get $~lib/memory/__stack_pointer + local.tee $2 + i32.const 3664 + i32.store offset=4 + i32.const 0 + local.set $8 + local.get $2 + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 15924 + i32.lt_s + br_if $folding-inner23 + global.get $~lib/memory/__stack_pointer + local.tee $0 + i64.const 0 + i64.store + local.get $5 + i32.load offset=4 + local.set $1 + local.get $5 + i32.load offset=8 + local.set $4 + local.get $0 + i32.const 12 + i32.const 5 + call $~lib/rt/itcms/__new + local.tee $6 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.const 0 + call $~lib/rt/itcms/__new + local.tee $3 + i32.store offset=4 + loop $for-loop|057 + local.get $4 + local.get $8 + i32.gt_s + if + local.get $1 + local.get $8 + i32.add + i32.load8_u + local.set $0 + i32.const 3 + global.set $~argumentsLength + local.get $3 + local.get $8 + i32.add + local.get $0 + local.get $8 + local.get $5 + i32.const 3664 + i32.load + call_indirect $0 (type $i32_i32_i32_=>_i32) + i32.store8 + local.get $8 + i32.const 1 + i32.add + local.set $8 + br $for-loop|057 + end + end + local.get $6 + local.get $3 + i32.store + local.get $6 + local.get $3 + call $~lib/rt/itcms/__link + local.get $6 + local.get $3 + i32.store offset=4 + local.get $6 + local.get $4 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + local.get $6 + i32.store offset=8 + local.get $6 + i32.const 0 + call $~lib/typedarray/Uint8ClampedArray#__get + i32.const 1 + i32.ne + br_if $folding-inner6 + local.get $6 + i32.const 1 + call $~lib/typedarray/Uint8ClampedArray#__get + i32.const 4 + i32.ne + br_if $folding-inner7 + local.get $6 + i32.const 2 + call $~lib/typedarray/Uint8ClampedArray#__get + i32.const 9 + i32.ne + br_if $folding-inner8 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 15924 + i32.lt_s + br_if $folding-inner23 + global.get $~lib/memory/__stack_pointer + local.tee $0 + i64.const 0 + i64.store + local.get $0 + i32.const 0 + i32.store offset=8 + local.get $0 + i32.const 3 + call $~lib/typedarray/Int16Array#constructor + local.tee $7 + i32.store + local.get $7 + i32.const 0 + i32.const 1 + call $~lib/typedarray/Int16Array#__set + local.get $7 + i32.const 1 + i32.const 2 + call $~lib/typedarray/Int16Array#__set + local.get $7 + i32.const 2 + i32.const 3 + call $~lib/typedarray/Int16Array#__set + global.get $~lib/memory/__stack_pointer + local.tee $5 + i32.const 3696 + i32.store offset=4 + i32.const 0 + local.set $8 + local.get $5 + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 15924 + i32.lt_s + br_if $folding-inner23 + global.get $~lib/memory/__stack_pointer + local.tee $0 + i64.const 0 + i64.store + local.get $7 + i32.load offset=4 + local.set $4 + local.get $7 + i32.load offset=8 + i32.const 1 + i32.shr_u + local.set $3 + local.get $0 + i32.const 12 + i32.const 6 + call $~lib/rt/itcms/__new + local.tee $9 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.const 1 + i32.shl + local.tee $2 + i32.const 0 + call $~lib/rt/itcms/__new + local.tee $6 + i32.store offset=4 + loop $for-loop|059 + local.get $3 + local.get $8 + i32.gt_s + if + local.get $4 + local.get $8 + i32.const 1 + i32.shl + local.tee $1 + i32.add + i32.load16_s + local.set $0 + i32.const 3 + global.set $~argumentsLength + local.get $1 + local.get $6 + i32.add + local.get $0 + local.get $8 + local.get $7 + i32.const 3696 + i32.load + call_indirect $0 (type $i32_i32_i32_=>_i32) + i32.store16 + local.get $8 + i32.const 1 + i32.add + local.set $8 + br $for-loop|059 + end + end + local.get $9 + local.get $6 + i32.store + local.get $9 + local.get $6 + call $~lib/rt/itcms/__link + local.get $9 + local.get $6 + i32.store offset=4 + local.get $9 + local.get $2 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $5 + local.get $9 + i32.store offset=8 + local.get $9 + i32.const 0 + call $~lib/typedarray/Int16Array#__get + i32.const 1 + i32.ne + br_if $folding-inner6 + local.get $9 + i32.const 1 + call $~lib/typedarray/Int16Array#__get + i32.const 4 + i32.ne + br_if $folding-inner7 + local.get $9 + i32.const 2 + call $~lib/typedarray/Int16Array#__get + i32.const 9 + i32.ne + br_if $folding-inner8 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 15924 + i32.lt_s + br_if $folding-inner23 + global.get $~lib/memory/__stack_pointer + local.tee $0 + i64.const 0 + i64.store + local.get $0 + i32.const 0 + i32.store offset=8 + local.get $0 + i32.const 3 + call $~lib/typedarray/Uint16Array#constructor + local.tee $7 + i32.store + local.get $7 + i32.const 0 + i32.const 1 + call $~lib/typedarray/Uint16Array#__set + local.get $7 + i32.const 1 + i32.const 2 + call $~lib/typedarray/Uint16Array#__set + local.get $7 + i32.const 2 + i32.const 3 + call $~lib/typedarray/Uint16Array#__set + global.get $~lib/memory/__stack_pointer + local.tee $5 + i32.const 3728 + i32.store offset=4 + i32.const 0 + local.set $8 + local.get $5 + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 15924 + i32.lt_s + br_if $folding-inner23 + global.get $~lib/memory/__stack_pointer + local.tee $0 + i64.const 0 + i64.store + local.get $7 + i32.load offset=4 + local.set $4 + local.get $7 + i32.load offset=8 + i32.const 1 + i32.shr_u + local.set $3 + local.get $0 + i32.const 12 + i32.const 7 + call $~lib/rt/itcms/__new + local.tee $9 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.const 1 + i32.shl + local.tee $2 + i32.const 0 + call $~lib/rt/itcms/__new + local.tee $6 + i32.store offset=4 + loop $for-loop|061 + local.get $3 + local.get $8 + i32.gt_s + if + local.get $4 + local.get $8 + i32.const 1 + i32.shl + local.tee $1 + i32.add + i32.load16_u + local.set $0 + i32.const 3 + global.set $~argumentsLength + local.get $1 + local.get $6 + i32.add + local.get $0 + local.get $8 + local.get $7 + i32.const 3728 + i32.load + call_indirect $0 (type $i32_i32_i32_=>_i32) + i32.store16 + local.get $8 + i32.const 1 + i32.add + local.set $8 + br $for-loop|061 + end + end + local.get $9 + local.get $6 + i32.store + local.get $9 + local.get $6 + call $~lib/rt/itcms/__link + local.get $9 + local.get $6 + i32.store offset=4 + local.get $9 + local.get $2 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $5 + local.get $9 + i32.store offset=8 + local.get $9 + i32.const 0 + call $~lib/typedarray/Uint16Array#__get + i32.const 1 + i32.ne + br_if $folding-inner6 + local.get $9 + i32.const 1 + call $~lib/typedarray/Uint16Array#__get + i32.const 4 + i32.ne + br_if $folding-inner7 + local.get $9 + i32.const 2 + call $~lib/typedarray/Uint16Array#__get + i32.const 9 + i32.ne + br_if $folding-inner8 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 15924 + i32.lt_s + br_if $folding-inner23 + global.get $~lib/memory/__stack_pointer + local.tee $0 + i64.const 0 + i64.store + local.get $0 + i32.const 0 + i32.store offset=8 + local.get $0 + i32.const 3 + call $~lib/typedarray/Int32Array#constructor + local.tee $7 + i32.store + local.get $7 + i32.const 0 + i32.const 1 + call $~lib/typedarray/Int32Array#__set + local.get $7 + i32.const 1 + i32.const 2 + call $~lib/typedarray/Int32Array#__set + local.get $7 + i32.const 2 + i32.const 3 + call $~lib/typedarray/Int32Array#__set + global.get $~lib/memory/__stack_pointer + local.tee $5 + i32.const 3760 + i32.store offset=4 + i32.const 0 + local.set $8 + local.get $5 + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 15924 + i32.lt_s + br_if $folding-inner23 + global.get $~lib/memory/__stack_pointer + local.tee $0 + i64.const 0 + i64.store + local.get $7 + i32.load offset=4 + local.set $4 + local.get $7 + i32.load offset=8 + i32.const 2 + i32.shr_u + local.set $3 + local.get $0 + i32.const 12 + i32.const 8 + call $~lib/rt/itcms/__new + local.tee $9 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.const 2 + i32.shl + local.tee $2 + i32.const 0 + call $~lib/rt/itcms/__new + local.tee $6 + i32.store offset=4 + loop $for-loop|063 + local.get $3 + local.get $8 + i32.gt_s + if + local.get $4 + local.get $8 + i32.const 2 + i32.shl + local.tee $1 + i32.add + i32.load + local.set $0 + i32.const 3 + global.set $~argumentsLength + local.get $1 + local.get $6 + i32.add + local.get $0 + local.get $8 + local.get $7 + i32.const 3760 + i32.load + call_indirect $0 (type $i32_i32_i32_=>_i32) + i32.store + local.get $8 + i32.const 1 + i32.add + local.set $8 + br $for-loop|063 + end + end + local.get $9 + local.get $6 + i32.store + local.get $9 + local.get $6 + call $~lib/rt/itcms/__link + local.get $9 + local.get $6 + i32.store offset=4 + local.get $9 + local.get $2 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $5 + local.get $9 + i32.store offset=8 + local.get $9 + i32.const 0 + call $~lib/typedarray/Int32Array#__get + i32.const 1 + i32.ne + br_if $folding-inner6 + local.get $9 + i32.const 1 + call $~lib/typedarray/Int32Array#__get + i32.const 4 + i32.ne + br_if $folding-inner7 + local.get $9 + i32.const 2 + call $~lib/typedarray/Int32Array#__get + i32.const 9 + i32.ne + br_if $folding-inner8 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 15924 + i32.lt_s + br_if $folding-inner23 + global.get $~lib/memory/__stack_pointer + local.tee $0 + i64.const 0 + i64.store + local.get $0 + i32.const 0 + i32.store offset=8 + local.get $0 + i32.const 3 + call $~lib/typedarray/Uint32Array#constructor + local.tee $7 + i32.store + local.get $7 + i32.const 0 + i32.const 1 + call $~lib/typedarray/Uint32Array#__set + local.get $7 + i32.const 1 + i32.const 2 + call $~lib/typedarray/Uint32Array#__set + local.get $7 + i32.const 2 + i32.const 3 + call $~lib/typedarray/Uint32Array#__set + global.get $~lib/memory/__stack_pointer + local.tee $5 + i32.const 3792 + i32.store offset=4 + i32.const 0 + local.set $8 + local.get $5 + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 15924 + i32.lt_s + br_if $folding-inner23 + global.get $~lib/memory/__stack_pointer + local.tee $0 + i64.const 0 + i64.store + local.get $7 + i32.load offset=4 + local.set $4 + local.get $7 + i32.load offset=8 + i32.const 2 + i32.shr_u + local.set $3 + local.get $0 + i32.const 12 + i32.const 9 + call $~lib/rt/itcms/__new + local.tee $9 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.const 2 + i32.shl + local.tee $2 + i32.const 0 + call $~lib/rt/itcms/__new + local.tee $6 + i32.store offset=4 + loop $for-loop|065 + local.get $3 + local.get $8 + i32.gt_s + if + local.get $4 + local.get $8 + i32.const 2 + i32.shl + local.tee $1 + i32.add + i32.load + local.set $0 + i32.const 3 + global.set $~argumentsLength + local.get $1 + local.get $6 + i32.add + local.get $0 + local.get $8 + local.get $7 + i32.const 3792 + i32.load + call_indirect $0 (type $i32_i32_i32_=>_i32) + i32.store + local.get $8 + i32.const 1 + i32.add + local.set $8 + br $for-loop|065 + end + end + local.get $9 + local.get $6 + i32.store + local.get $9 + local.get $6 + call $~lib/rt/itcms/__link + local.get $9 + local.get $6 + i32.store offset=4 + local.get $9 + local.get $2 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $5 + local.get $9 + i32.store offset=8 + local.get $9 + i32.const 0 + call $~lib/typedarray/Uint32Array#__get + i32.const 1 + i32.ne + br_if $folding-inner6 + local.get $9 + i32.const 1 + call $~lib/typedarray/Uint32Array#__get + i32.const 4 + i32.ne + br_if $folding-inner7 + local.get $9 + i32.const 2 + call $~lib/typedarray/Uint32Array#__get + i32.const 9 + i32.ne + br_if $folding-inner8 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 15924 + i32.lt_s + br_if $folding-inner23 + global.get $~lib/memory/__stack_pointer + local.tee $0 + i64.const 0 + i64.store + local.get $0 + i32.const 0 + i32.store offset=8 + local.get $0 + i32.const 3 + call $~lib/typedarray/Int64Array#constructor + local.tee $6 + i32.store + local.get $6 + i32.const 0 + i64.const 1 + call $~lib/typedarray/Int64Array#__set + local.get $6 + i32.const 1 + i64.const 2 + call $~lib/typedarray/Int64Array#__set + local.get $6 + i32.const 2 + i64.const 3 + call $~lib/typedarray/Int64Array#__set + global.get $~lib/memory/__stack_pointer + local.tee $3 + i32.const 3824 + i32.store offset=4 + i32.const 0 + local.set $8 + local.get $3 + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 15924 + i32.lt_s + br_if $folding-inner23 + global.get $~lib/memory/__stack_pointer + local.tee $0 + i64.const 0 + i64.store + local.get $6 + i32.load offset=4 + local.set $2 + local.get $6 + i32.load offset=8 + i32.const 3 + i32.shr_u + local.set $4 + local.get $0 + i32.const 12 + i32.const 10 + call $~lib/rt/itcms/__new + local.tee $7 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.const 3 + i32.shl + local.tee $1 + i32.const 0 + call $~lib/rt/itcms/__new + local.tee $5 + i32.store offset=4 + loop $for-loop|067 + local.get $4 + local.get $8 + i32.gt_s + if + local.get $2 + local.get $8 + i32.const 3 + i32.shl + local.tee $0 + i32.add + i64.load + local.set $10 + i32.const 3 + global.set $~argumentsLength + local.get $0 + local.get $5 + i32.add + local.get $10 + local.get $8 + local.get $6 + i32.const 3824 + i32.load + call_indirect $0 (type $i64_i32_i32_=>_i64) + i64.store + local.get $8 + i32.const 1 + i32.add + local.set $8 + br $for-loop|067 + end + end + local.get $7 + local.get $5 + i32.store + local.get $7 + local.get $5 + call $~lib/rt/itcms/__link + local.get $7 + local.get $5 + i32.store offset=4 + local.get $7 + local.get $1 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + local.get $7 + i32.store offset=8 + local.get $7 + i32.const 0 + call $~lib/typedarray/Int64Array#__get + i64.const 1 + i64.ne + br_if $folding-inner6 + local.get $7 + i32.const 1 + call $~lib/typedarray/Int64Array#__get + i64.const 4 + i64.ne + br_if $folding-inner7 + local.get $7 + i32.const 2 + call $~lib/typedarray/Int64Array#__get + i64.const 9 + i64.ne + br_if $folding-inner8 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 15924 + i32.lt_s + br_if $folding-inner23 + global.get $~lib/memory/__stack_pointer + local.tee $0 + i64.const 0 + i64.store + local.get $0 + i32.const 0 + i32.store offset=8 + local.get $0 + i32.const 3 + call $~lib/typedarray/Uint64Array#constructor + local.tee $6 + i32.store + local.get $6 + i32.const 0 + i64.const 1 + call $~lib/typedarray/Uint64Array#__set + local.get $6 + i32.const 1 + i64.const 2 + call $~lib/typedarray/Uint64Array#__set + local.get $6 + i32.const 2 + i64.const 3 + call $~lib/typedarray/Uint64Array#__set + global.get $~lib/memory/__stack_pointer + local.tee $3 + i32.const 3856 + i32.store offset=4 + i32.const 0 + local.set $8 + local.get $3 + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 15924 + i32.lt_s + br_if $folding-inner23 + global.get $~lib/memory/__stack_pointer + local.tee $0 + i64.const 0 + i64.store + local.get $6 + i32.load offset=4 + local.set $2 + local.get $6 + i32.load offset=8 + i32.const 3 + i32.shr_u + local.set $4 + local.get $0 + i32.const 12 + i32.const 11 + call $~lib/rt/itcms/__new + local.tee $7 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.const 3 + i32.shl + local.tee $1 + i32.const 0 + call $~lib/rt/itcms/__new + local.tee $5 + i32.store offset=4 + loop $for-loop|069 + local.get $4 + local.get $8 + i32.gt_s + if + local.get $2 + local.get $8 + i32.const 3 + i32.shl + local.tee $0 + i32.add + i64.load + local.set $10 + i32.const 3 + global.set $~argumentsLength + local.get $0 + local.get $5 + i32.add + local.get $10 + local.get $8 + local.get $6 + i32.const 3856 + i32.load + call_indirect $0 (type $i64_i32_i32_=>_i64) + i64.store + local.get $8 + i32.const 1 + i32.add + local.set $8 + br $for-loop|069 + end + end + local.get $7 + local.get $5 + i32.store + local.get $7 + local.get $5 + call $~lib/rt/itcms/__link + local.get $7 + local.get $5 + i32.store offset=4 + local.get $7 + local.get $1 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + local.get $7 + i32.store offset=8 + local.get $7 + i32.const 0 + call $~lib/typedarray/Uint64Array#__get + i64.const 1 + i64.ne + br_if $folding-inner6 + local.get $7 + i32.const 1 + call $~lib/typedarray/Uint64Array#__get + i64.const 4 + i64.ne + br_if $folding-inner7 + local.get $7 + i32.const 2 + call $~lib/typedarray/Uint64Array#__get + i64.const 9 + i64.ne + br_if $folding-inner8 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 15924 + i32.lt_s + br_if $folding-inner23 + global.get $~lib/memory/__stack_pointer + local.tee $0 + i64.const 0 + i64.store + local.get $0 + i32.const 0 + i32.store offset=8 + local.get $0 + i32.const 3 + call $~lib/typedarray/Float32Array#constructor + local.tee $6 + i32.store + local.get $6 + i32.const 0 + f32.const 1 + call $~lib/typedarray/Float32Array#__set + local.get $6 + i32.const 1 + f32.const 2 + call $~lib/typedarray/Float32Array#__set + local.get $6 + i32.const 2 + f32.const 3 + call $~lib/typedarray/Float32Array#__set + global.get $~lib/memory/__stack_pointer + local.tee $3 + i32.const 3888 + i32.store offset=4 + i32.const 0 + local.set $8 + local.get $3 + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 15924 + i32.lt_s + br_if $folding-inner23 + global.get $~lib/memory/__stack_pointer + local.tee $0 + i64.const 0 + i64.store + local.get $6 + i32.load offset=4 + local.set $2 + local.get $6 + i32.load offset=8 + i32.const 2 + i32.shr_u + local.set $4 + local.get $0 + i32.const 12 + i32.const 12 + call $~lib/rt/itcms/__new + local.tee $7 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.const 2 + i32.shl + local.tee $1 + i32.const 0 + call $~lib/rt/itcms/__new + local.tee $5 + i32.store offset=4 + loop $for-loop|071 + local.get $4 + local.get $8 + i32.gt_s + if + local.get $2 + local.get $8 + i32.const 2 + i32.shl + local.tee $0 + i32.add + f32.load + local.set $11 + i32.const 3 + global.set $~argumentsLength + local.get $0 + local.get $5 + i32.add + local.get $11 + local.get $8 + local.get $6 + i32.const 3888 + i32.load + call_indirect $0 (type $f32_i32_i32_=>_f32) + f32.store + local.get $8 + i32.const 1 + i32.add + local.set $8 + br $for-loop|071 + end + end + local.get $7 + local.get $5 + i32.store + local.get $7 + local.get $5 + call $~lib/rt/itcms/__link + local.get $7 + local.get $5 + i32.store offset=4 + local.get $7 + local.get $1 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + local.get $7 + i32.store offset=8 + local.get $7 + i32.const 0 + call $~lib/typedarray/Float32Array#__get + f32.const 1 + f32.ne + br_if $folding-inner6 + local.get $7 + i32.const 1 + call $~lib/typedarray/Float32Array#__get + f32.const 4 + f32.ne + br_if $folding-inner7 + local.get $7 + i32.const 2 + call $~lib/typedarray/Float32Array#__get + f32.const 9 + f32.ne + br_if $folding-inner8 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 15924 + i32.lt_s + br_if $folding-inner23 + global.get $~lib/memory/__stack_pointer + local.tee $0 + i64.const 0 + i64.store + local.get $0 + i32.const 0 + i32.store offset=8 + local.get $0 + i32.const 3 + call $~lib/typedarray/Float64Array#constructor + local.tee $6 + i32.store + local.get $6 + i32.const 0 + f64.const 1 + call $~lib/typedarray/Float64Array#__set + local.get $6 + i32.const 1 + f64.const 2 + call $~lib/typedarray/Float64Array#__set + local.get $6 + i32.const 2 + f64.const 3 + call $~lib/typedarray/Float64Array#__set + global.get $~lib/memory/__stack_pointer + local.tee $3 + i32.const 3920 + i32.store offset=4 + i32.const 0 + local.set $8 + local.get $3 + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 15924 + i32.lt_s + br_if $folding-inner23 + global.get $~lib/memory/__stack_pointer + local.tee $0 + i64.const 0 + i64.store + local.get $6 + i32.load offset=4 + local.set $2 + local.get $6 + i32.load offset=8 + i32.const 3 + i32.shr_u + local.set $4 + local.get $0 + i32.const 12 + i32.const 13 + call $~lib/rt/itcms/__new + local.tee $7 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.const 3 + i32.shl + local.tee $1 + i32.const 0 + call $~lib/rt/itcms/__new + local.tee $5 + i32.store offset=4 + loop $for-loop|073 + local.get $4 + local.get $8 + i32.gt_s + if + local.get $2 + local.get $8 + i32.const 3 + i32.shl + local.tee $0 + i32.add + f64.load + local.set $12 + i32.const 3 + global.set $~argumentsLength + local.get $0 + local.get $5 + i32.add + local.get $12 + local.get $8 + local.get $6 + i32.const 3920 + i32.load + call_indirect $0 (type $f64_i32_i32_=>_f64) + f64.store + local.get $8 + i32.const 1 + i32.add + local.set $8 + br $for-loop|073 + end + end + local.get $7 + local.get $5 + i32.store + local.get $7 + local.get $5 + call $~lib/rt/itcms/__link + local.get $7 + local.get $5 + i32.store offset=4 + local.get $7 + local.get $1 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + local.get $7 + i32.store offset=8 + local.get $7 + i32.const 0 + call $~lib/typedarray/Float64Array#__get + f64.const 1 + f64.ne + br_if $folding-inner6 + local.get $7 + i32.const 1 + call $~lib/typedarray/Float64Array#__get + f64.const 4 + f64.ne + br_if $folding-inner7 + local.get $7 + i32.const 2 + call $~lib/typedarray/Float64Array#__get + f64.const 9 + f64.ne + br_if $folding-inner8 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + call $std/typedarray/testArrayFilter<~lib/typedarray/Int8Array,i8> + call $std/typedarray/testArrayFilter<~lib/typedarray/Uint8Array,u8> + call $std/typedarray/testArrayFilter<~lib/typedarray/Uint8ClampedArray,u8> + call $std/typedarray/testArrayFilter<~lib/typedarray/Int16Array,i16> + call $std/typedarray/testArrayFilter<~lib/typedarray/Uint16Array,u16> + call $std/typedarray/testArrayFilter<~lib/typedarray/Int32Array,i32> + call $std/typedarray/testArrayFilter<~lib/typedarray/Uint32Array,u32> + call $std/typedarray/testArrayFilter<~lib/typedarray/Int64Array,i64> + call $std/typedarray/testArrayFilter<~lib/typedarray/Uint64Array,u64> + call $std/typedarray/testArrayFilter<~lib/typedarray/Float32Array,f32> + call $std/typedarray/testArrayFilter<~lib/typedarray/Float64Array,f64> + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 15924 + i32.lt_s + br_if $folding-inner23 + global.get $~lib/memory/__stack_pointer + local.tee $0 + i64.const 0 + i64.store + local.get $0 + i32.const 3 + call $~lib/typedarray/Int8Array#constructor + local.tee $5 + i32.store + local.get $5 + i32.const 0 + i32.const 2 + call $~lib/typedarray/Int8Array#__set + local.get $5 + i32.const 1 + i32.const 4 + call $~lib/typedarray/Int8Array#__set + local.get $5 + i32.const 2 + i32.const 6 + call $~lib/typedarray/Int8Array#__set + global.get $~lib/memory/__stack_pointer + i32.const 4304 + i32.store offset=4 + i32.const 0 + local.set $1 + block $~lib/typedarray/SOME<~lib/typedarray/Int8Array,i8>|inlined.0 (result i32) + local.get $5 + i32.load offset=4 + local.set $4 + local.get $5 + i32.load offset=8 + local.set $2 + loop $for-loop|075 + local.get $1 + local.get $2 + i32.lt_s + if + local.get $1 + local.get $4 + i32.add + i32.load8_s + local.set $0 + i32.const 3 + global.set $~argumentsLength + i32.const 1 + local.get $0 + local.get $1 + local.get $5 + i32.const 4304 + i32.load + call_indirect $0 (type $i32_i32_i32_=>_i32) + br_if $~lib/typedarray/SOME<~lib/typedarray/Int8Array,i8>|inlined.0 + drop + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|075 + end + end + i32.const 0 + end + i32.eqz + br_if $folding-inner9 + global.get $~lib/memory/__stack_pointer + i32.const 4336 + i32.store offset=4 + i32.const 0 + local.set $1 + block $~lib/typedarray/SOME<~lib/typedarray/Int8Array,i8>|inlined.077 (result i32) + local.get $5 + i32.load offset=4 + local.set $4 + local.get $5 + i32.load offset=8 + local.set $2 + loop $for-loop|078 + local.get $1 + local.get $2 + i32.lt_s + if + local.get $1 + local.get $4 + i32.add + i32.load8_s + local.set $0 + i32.const 3 + global.set $~argumentsLength + i32.const 1 + local.get $0 + local.get $1 + local.get $5 + i32.const 4336 + i32.load + call_indirect $0 (type $i32_i32_i32_=>_i32) + br_if $~lib/typedarray/SOME<~lib/typedarray/Int8Array,i8>|inlined.077 + drop + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|078 + end + end + i32.const 0 + end + br_if $folding-inner10 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 15924 + i32.lt_s + br_if $folding-inner23 + global.get $~lib/memory/__stack_pointer + local.tee $0 + i64.const 0 + i64.store + local.get $0 + i32.const 3 + call $~lib/typedarray/Uint8Array#constructor + local.tee $5 + i32.store + local.get $5 + i32.const 0 + i32.const 2 + call $~lib/typedarray/Uint8Array#__set + local.get $5 + i32.const 1 + i32.const 4 + call $~lib/typedarray/Uint8Array#__set + local.get $5 + i32.const 2 + i32.const 6 + call $~lib/typedarray/Uint8Array#__set + global.get $~lib/memory/__stack_pointer + i32.const 4368 + i32.store offset=4 + i32.const 0 + local.set $1 + block $~lib/typedarray/SOME<~lib/typedarray/Uint8Array,u8>|inlined.0 (result i32) + local.get $5 + i32.load offset=4 + local.set $4 + local.get $5 + i32.load offset=8 + local.set $2 + loop $for-loop|080 + local.get $1 + local.get $2 + i32.lt_s + if + local.get $1 + local.get $4 + i32.add + i32.load8_u + local.set $0 + i32.const 3 + global.set $~argumentsLength + i32.const 1 + local.get $0 + local.get $1 + local.get $5 + i32.const 4368 + i32.load + call_indirect $0 (type $i32_i32_i32_=>_i32) + br_if $~lib/typedarray/SOME<~lib/typedarray/Uint8Array,u8>|inlined.0 + drop + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|080 + end + end + i32.const 0 + end + i32.eqz + br_if $folding-inner9 + global.get $~lib/memory/__stack_pointer + i32.const 4400 + i32.store offset=4 + i32.const 0 + local.set $1 + block $~lib/typedarray/SOME<~lib/typedarray/Uint8Array,u8>|inlined.082 (result i32) + local.get $5 + i32.load offset=4 + local.set $4 + local.get $5 + i32.load offset=8 + local.set $2 + loop $for-loop|083 + local.get $1 + local.get $2 + i32.lt_s + if + local.get $1 + local.get $4 + i32.add + i32.load8_u + local.set $0 + i32.const 3 + global.set $~argumentsLength + i32.const 1 + local.get $0 + local.get $1 + local.get $5 + i32.const 4400 + i32.load + call_indirect $0 (type $i32_i32_i32_=>_i32) + br_if $~lib/typedarray/SOME<~lib/typedarray/Uint8Array,u8>|inlined.082 + drop + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|083 + end + end + i32.const 0 + end + br_if $folding-inner10 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 15924 + i32.lt_s + br_if $folding-inner23 + global.get $~lib/memory/__stack_pointer + local.tee $0 + i64.const 0 + i64.store + local.get $0 + i32.const 3 + call $~lib/typedarray/Uint8ClampedArray#constructor + local.tee $5 + i32.store + local.get $5 + i32.const 0 + i32.const 2 + call $~lib/typedarray/Uint8ClampedArray#__set + local.get $5 + i32.const 1 + i32.const 4 + call $~lib/typedarray/Uint8ClampedArray#__set + local.get $5 + i32.const 2 + i32.const 6 + call $~lib/typedarray/Uint8ClampedArray#__set + global.get $~lib/memory/__stack_pointer + i32.const 4432 + i32.store offset=4 + i32.const 0 + local.set $1 + block $~lib/typedarray/SOME<~lib/typedarray/Uint8Array,u8>|inlined.086 (result i32) + local.get $5 + i32.load offset=4 + local.set $4 + local.get $5 + i32.load offset=8 + local.set $2 + loop $for-loop|087 + local.get $1 + local.get $2 + i32.lt_s + if + local.get $1 + local.get $4 + i32.add + i32.load8_u + local.set $0 + i32.const 3 + global.set $~argumentsLength + i32.const 1 + local.get $0 + local.get $1 + local.get $5 + i32.const 4432 + i32.load + call_indirect $0 (type $i32_i32_i32_=>_i32) + br_if $~lib/typedarray/SOME<~lib/typedarray/Uint8Array,u8>|inlined.086 + drop + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|087 + end + end + i32.const 0 + end + i32.eqz + br_if $folding-inner9 + global.get $~lib/memory/__stack_pointer + i32.const 4464 + i32.store offset=4 + i32.const 0 + local.set $1 + block $~lib/typedarray/SOME<~lib/typedarray/Uint8Array,u8>|inlined.089 (result i32) + local.get $5 + i32.load offset=4 + local.set $4 + local.get $5 + i32.load offset=8 + local.set $2 + loop $for-loop|090 + local.get $1 + local.get $2 + i32.lt_s + if + local.get $1 + local.get $4 + i32.add + i32.load8_u + local.set $0 + i32.const 3 + global.set $~argumentsLength + i32.const 1 + local.get $0 + local.get $1 + local.get $5 + i32.const 4464 + i32.load + call_indirect $0 (type $i32_i32_i32_=>_i32) + br_if $~lib/typedarray/SOME<~lib/typedarray/Uint8Array,u8>|inlined.089 + drop + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|090 + end + end + i32.const 0 + end + br_if $folding-inner10 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 15924 + i32.lt_s + br_if $folding-inner23 + global.get $~lib/memory/__stack_pointer + local.tee $0 + i64.const 0 + i64.store + local.get $0 + i32.const 3 + call $~lib/typedarray/Int16Array#constructor + local.tee $5 + i32.store + local.get $5 + i32.const 0 + i32.const 2 + call $~lib/typedarray/Int16Array#__set + local.get $5 + i32.const 1 + i32.const 4 + call $~lib/typedarray/Int16Array#__set + local.get $5 + i32.const 2 + i32.const 6 + call $~lib/typedarray/Int16Array#__set + global.get $~lib/memory/__stack_pointer + i32.const 4496 + i32.store offset=4 + i32.const 0 + local.set $1 + block $~lib/typedarray/SOME<~lib/typedarray/Int16Array,i16>|inlined.0 (result i32) + local.get $5 + i32.load offset=4 + local.set $4 + local.get $5 + i32.load offset=8 + i32.const 1 + i32.shr_u + local.set $2 + loop $for-loop|092 + local.get $1 + local.get $2 + i32.lt_s + if + local.get $4 + local.get $1 + i32.const 1 + i32.shl + i32.add + i32.load16_s + local.set $0 + i32.const 3 + global.set $~argumentsLength + i32.const 1 + local.get $0 + local.get $1 + local.get $5 + i32.const 4496 + i32.load + call_indirect $0 (type $i32_i32_i32_=>_i32) + br_if $~lib/typedarray/SOME<~lib/typedarray/Int16Array,i16>|inlined.0 + drop + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|092 + end + end + i32.const 0 + end + i32.eqz + br_if $folding-inner9 + global.get $~lib/memory/__stack_pointer + i32.const 4528 + i32.store offset=4 + i32.const 0 + local.set $1 + block $~lib/typedarray/SOME<~lib/typedarray/Int16Array,i16>|inlined.094 (result i32) + local.get $5 + i32.load offset=4 + local.set $4 + local.get $5 + i32.load offset=8 + i32.const 1 + i32.shr_u + local.set $2 + loop $for-loop|095 + local.get $1 + local.get $2 + i32.lt_s + if + local.get $4 + local.get $1 + i32.const 1 + i32.shl + i32.add + i32.load16_s + local.set $0 + i32.const 3 + global.set $~argumentsLength + i32.const 1 + local.get $0 + local.get $1 + local.get $5 + i32.const 4528 + i32.load + call_indirect $0 (type $i32_i32_i32_=>_i32) + br_if $~lib/typedarray/SOME<~lib/typedarray/Int16Array,i16>|inlined.094 + drop + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|095 + end + end + i32.const 0 + end + br_if $folding-inner10 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 15924 + i32.lt_s + br_if $folding-inner23 + global.get $~lib/memory/__stack_pointer + local.tee $0 + i64.const 0 + i64.store + local.get $0 + i32.const 3 + call $~lib/typedarray/Uint16Array#constructor + local.tee $5 + i32.store + local.get $5 + i32.const 0 + i32.const 2 + call $~lib/typedarray/Uint16Array#__set + local.get $5 + i32.const 1 + i32.const 4 + call $~lib/typedarray/Uint16Array#__set + local.get $5 + i32.const 2 + i32.const 6 + call $~lib/typedarray/Uint16Array#__set + global.get $~lib/memory/__stack_pointer + i32.const 4560 + i32.store offset=4 + i32.const 0 + local.set $1 + block $~lib/typedarray/SOME<~lib/typedarray/Uint16Array,u16>|inlined.0 (result i32) + local.get $5 + i32.load offset=4 + local.set $4 + local.get $5 + i32.load offset=8 + i32.const 1 + i32.shr_u + local.set $2 + loop $for-loop|097 + local.get $1 + local.get $2 + i32.lt_s + if + local.get $4 + local.get $1 + i32.const 1 + i32.shl + i32.add + i32.load16_u + local.set $0 + i32.const 3 + global.set $~argumentsLength + i32.const 1 + local.get $0 + local.get $1 + local.get $5 + i32.const 4560 + i32.load + call_indirect $0 (type $i32_i32_i32_=>_i32) + br_if $~lib/typedarray/SOME<~lib/typedarray/Uint16Array,u16>|inlined.0 + drop + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|097 + end + end + i32.const 0 + end + i32.eqz + br_if $folding-inner9 + global.get $~lib/memory/__stack_pointer + i32.const 4592 + i32.store offset=4 + i32.const 0 + local.set $1 + block $~lib/typedarray/SOME<~lib/typedarray/Uint16Array,u16>|inlined.099 (result i32) + local.get $5 + i32.load offset=4 + local.set $4 + local.get $5 + i32.load offset=8 + i32.const 1 + i32.shr_u + local.set $2 + loop $for-loop|0100 + local.get $1 + local.get $2 + i32.lt_s + if + local.get $4 + local.get $1 + i32.const 1 + i32.shl + i32.add + i32.load16_u + local.set $0 + i32.const 3 + global.set $~argumentsLength + i32.const 1 + local.get $0 + local.get $1 + local.get $5 + i32.const 4592 + i32.load + call_indirect $0 (type $i32_i32_i32_=>_i32) + br_if $~lib/typedarray/SOME<~lib/typedarray/Uint16Array,u16>|inlined.099 + drop + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|0100 + end + end + i32.const 0 + end + br_if $folding-inner10 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 15924 + i32.lt_s + br_if $folding-inner23 + global.get $~lib/memory/__stack_pointer + local.tee $0 + i64.const 0 + i64.store + local.get $0 + i32.const 3 + call $~lib/typedarray/Int32Array#constructor + local.tee $5 + i32.store + local.get $5 + i32.const 0 + i32.const 2 + call $~lib/typedarray/Int32Array#__set + local.get $5 + i32.const 1 + i32.const 4 + call $~lib/typedarray/Int32Array#__set + local.get $5 + i32.const 2 + i32.const 6 + call $~lib/typedarray/Int32Array#__set + global.get $~lib/memory/__stack_pointer + i32.const 4624 + i32.store offset=4 + i32.const 0 + local.set $1 + block $~lib/typedarray/SOME<~lib/typedarray/Int32Array,i32>|inlined.0 (result i32) + local.get $5 + i32.load offset=4 + local.set $4 + local.get $5 + i32.load offset=8 + i32.const 2 + i32.shr_u + local.set $2 + loop $for-loop|0102 + local.get $1 + local.get $2 + i32.lt_s + if + local.get $4 + local.get $1 + i32.const 2 + i32.shl + i32.add + i32.load + local.set $0 + i32.const 3 + global.set $~argumentsLength + i32.const 1 + local.get $0 + local.get $1 + local.get $5 + i32.const 4624 + i32.load + call_indirect $0 (type $i32_i32_i32_=>_i32) + br_if $~lib/typedarray/SOME<~lib/typedarray/Int32Array,i32>|inlined.0 + drop + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|0102 + end + end + i32.const 0 + end + i32.eqz + br_if $folding-inner9 + global.get $~lib/memory/__stack_pointer + i32.const 4656 + i32.store offset=4 + i32.const 0 + local.set $1 + block $~lib/typedarray/SOME<~lib/typedarray/Int32Array,i32>|inlined.0104 (result i32) + local.get $5 + i32.load offset=4 + local.set $4 + local.get $5 + i32.load offset=8 + i32.const 2 + i32.shr_u + local.set $2 + loop $for-loop|0105 + local.get $1 + local.get $2 + i32.lt_s + if + local.get $4 + local.get $1 + i32.const 2 + i32.shl + i32.add + i32.load + local.set $0 + i32.const 3 + global.set $~argumentsLength + i32.const 1 + local.get $0 + local.get $1 + local.get $5 + i32.const 4656 + i32.load + call_indirect $0 (type $i32_i32_i32_=>_i32) + br_if $~lib/typedarray/SOME<~lib/typedarray/Int32Array,i32>|inlined.0104 + drop + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|0105 + end + end + i32.const 0 + end + br_if $folding-inner10 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 15924 + i32.lt_s + br_if $folding-inner23 + global.get $~lib/memory/__stack_pointer + local.tee $0 + i64.const 0 + i64.store + local.get $0 + i32.const 3 + call $~lib/typedarray/Uint32Array#constructor + local.tee $5 + i32.store + local.get $5 + i32.const 0 + i32.const 2 + call $~lib/typedarray/Uint32Array#__set + local.get $5 + i32.const 1 + i32.const 4 + call $~lib/typedarray/Uint32Array#__set + local.get $5 + i32.const 2 + i32.const 6 + call $~lib/typedarray/Uint32Array#__set + global.get $~lib/memory/__stack_pointer + i32.const 4688 + i32.store offset=4 + i32.const 0 + local.set $1 + block $~lib/typedarray/SOME<~lib/typedarray/Uint32Array,u32>|inlined.0 (result i32) + local.get $5 + i32.load offset=4 + local.set $4 + local.get $5 + i32.load offset=8 + i32.const 2 + i32.shr_u + local.set $2 + loop $for-loop|0107 + local.get $1 + local.get $2 + i32.lt_s + if + local.get $4 + local.get $1 + i32.const 2 + i32.shl + i32.add + i32.load + local.set $0 + i32.const 3 + global.set $~argumentsLength + i32.const 1 + local.get $0 + local.get $1 + local.get $5 + i32.const 4688 + i32.load + call_indirect $0 (type $i32_i32_i32_=>_i32) + br_if $~lib/typedarray/SOME<~lib/typedarray/Uint32Array,u32>|inlined.0 + drop + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|0107 + end + end + i32.const 0 + end + i32.eqz + br_if $folding-inner9 + global.get $~lib/memory/__stack_pointer + i32.const 4720 + i32.store offset=4 + i32.const 0 + local.set $1 + block $~lib/typedarray/SOME<~lib/typedarray/Uint32Array,u32>|inlined.0109 (result i32) + local.get $5 + i32.load offset=4 + local.set $4 + local.get $5 + i32.load offset=8 + i32.const 2 + i32.shr_u + local.set $2 + loop $for-loop|0110 + local.get $1 + local.get $2 + i32.lt_s + if + local.get $4 + local.get $1 + i32.const 2 + i32.shl + i32.add + i32.load + local.set $0 + i32.const 3 + global.set $~argumentsLength + i32.const 1 + local.get $0 + local.get $1 + local.get $5 + i32.const 4720 + i32.load + call_indirect $0 (type $i32_i32_i32_=>_i32) + br_if $~lib/typedarray/SOME<~lib/typedarray/Uint32Array,u32>|inlined.0109 + drop + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|0110 + end + end + i32.const 0 + end + br_if $folding-inner10 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 15924 + i32.lt_s + br_if $folding-inner23 + global.get $~lib/memory/__stack_pointer + local.tee $0 + i64.const 0 + i64.store + local.get $0 + i32.const 3 + call $~lib/typedarray/Int64Array#constructor + local.tee $3 + i32.store + local.get $3 + i32.const 0 + i64.const 2 + call $~lib/typedarray/Int64Array#__set + local.get $3 + i32.const 1 + i64.const 4 + call $~lib/typedarray/Int64Array#__set + local.get $3 + i32.const 2 + i64.const 6 + call $~lib/typedarray/Int64Array#__set + global.get $~lib/memory/__stack_pointer + i32.const 4752 + i32.store offset=4 + i32.const 0 + local.set $1 + block $~lib/typedarray/SOME<~lib/typedarray/Int64Array,i64>|inlined.0 (result i32) + local.get $3 + i32.load offset=4 + local.set $2 + local.get $3 + i32.load offset=8 + i32.const 3 + i32.shr_u + local.set $0 + loop $for-loop|0112 + local.get $0 + local.get $1 + i32.gt_s + if + local.get $2 + local.get $1 + i32.const 3 + i32.shl + i32.add + i64.load + local.set $10 + i32.const 3 + global.set $~argumentsLength + i32.const 1 + local.get $10 + local.get $1 + local.get $3 + i32.const 4752 + i32.load + call_indirect $0 (type $i64_i32_i32_=>_i32) + br_if $~lib/typedarray/SOME<~lib/typedarray/Int64Array,i64>|inlined.0 + drop + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|0112 + end + end + i32.const 0 + end + i32.eqz + br_if $folding-inner9 + global.get $~lib/memory/__stack_pointer + i32.const 4784 + i32.store offset=4 + i32.const 0 + local.set $1 + block $~lib/typedarray/SOME<~lib/typedarray/Int64Array,i64>|inlined.0114 (result i32) + local.get $3 + i32.load offset=4 + local.set $2 + local.get $3 + i32.load offset=8 + i32.const 3 + i32.shr_u + local.set $0 + loop $for-loop|0115 + local.get $0 + local.get $1 + i32.gt_s + if + local.get $2 + local.get $1 + i32.const 3 + i32.shl + i32.add + i64.load + local.set $10 + i32.const 3 + global.set $~argumentsLength + i32.const 1 + local.get $10 + local.get $1 + local.get $3 + i32.const 4784 + i32.load + call_indirect $0 (type $i64_i32_i32_=>_i32) + br_if $~lib/typedarray/SOME<~lib/typedarray/Int64Array,i64>|inlined.0114 + drop + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|0115 + end + end + i32.const 0 + end + br_if $folding-inner10 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 15924 + i32.lt_s + br_if $folding-inner23 + global.get $~lib/memory/__stack_pointer + local.tee $0 + i64.const 0 + i64.store + local.get $0 + i32.const 3 + call $~lib/typedarray/Uint64Array#constructor + local.tee $3 + i32.store + local.get $3 + i32.const 0 + i64.const 2 + call $~lib/typedarray/Uint64Array#__set + local.get $3 + i32.const 1 + i64.const 4 + call $~lib/typedarray/Uint64Array#__set + local.get $3 + i32.const 2 + i64.const 6 + call $~lib/typedarray/Uint64Array#__set + global.get $~lib/memory/__stack_pointer + i32.const 4816 + i32.store offset=4 + i32.const 0 + local.set $1 + block $~lib/typedarray/SOME<~lib/typedarray/Uint64Array,u64>|inlined.0 (result i32) + local.get $3 + i32.load offset=4 + local.set $2 + local.get $3 + i32.load offset=8 + i32.const 3 + i32.shr_u + local.set $0 + loop $for-loop|0117 + local.get $0 + local.get $1 + i32.gt_s + if + local.get $2 + local.get $1 + i32.const 3 + i32.shl + i32.add + i64.load + local.set $10 + i32.const 3 + global.set $~argumentsLength + i32.const 1 + local.get $10 + local.get $1 + local.get $3 + i32.const 4816 + i32.load + call_indirect $0 (type $i64_i32_i32_=>_i32) + br_if $~lib/typedarray/SOME<~lib/typedarray/Uint64Array,u64>|inlined.0 + drop + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|0117 + end + end + i32.const 0 + end + i32.eqz + br_if $folding-inner9 + global.get $~lib/memory/__stack_pointer + i32.const 4848 + i32.store offset=4 + i32.const 0 + local.set $1 + block $~lib/typedarray/SOME<~lib/typedarray/Uint64Array,u64>|inlined.0119 (result i32) + local.get $3 + i32.load offset=4 + local.set $2 + local.get $3 + i32.load offset=8 + i32.const 3 + i32.shr_u + local.set $0 + loop $for-loop|0120 + local.get $0 + local.get $1 + i32.gt_s + if + local.get $2 + local.get $1 + i32.const 3 + i32.shl + i32.add + i64.load + local.set $10 + i32.const 3 + global.set $~argumentsLength + i32.const 1 + local.get $10 + local.get $1 + local.get $3 + i32.const 4848 + i32.load + call_indirect $0 (type $i64_i32_i32_=>_i32) + br_if $~lib/typedarray/SOME<~lib/typedarray/Uint64Array,u64>|inlined.0119 + drop + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|0120 + end + end + i32.const 0 + end + br_if $folding-inner10 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 15924 + i32.lt_s + br_if $folding-inner23 + global.get $~lib/memory/__stack_pointer + local.tee $0 + i64.const 0 + i64.store + local.get $0 + i32.const 3 + call $~lib/typedarray/Float32Array#constructor + local.tee $3 + i32.store + local.get $3 + i32.const 0 + f32.const 2 + call $~lib/typedarray/Float32Array#__set + local.get $3 + i32.const 1 + f32.const 4 + call $~lib/typedarray/Float32Array#__set + local.get $3 + i32.const 2 + f32.const 6 + call $~lib/typedarray/Float32Array#__set + global.get $~lib/memory/__stack_pointer + i32.const 4880 + i32.store offset=4 + i32.const 0 + local.set $1 + block $~lib/typedarray/SOME<~lib/typedarray/Float32Array,f32>|inlined.0 (result i32) + local.get $3 + i32.load offset=4 + local.set $2 + local.get $3 + i32.load offset=8 + i32.const 2 + i32.shr_u + local.set $0 + loop $for-loop|0122 + local.get $0 + local.get $1 + i32.gt_s + if + local.get $2 + local.get $1 + i32.const 2 + i32.shl + i32.add + f32.load + local.set $11 + i32.const 3 + global.set $~argumentsLength + i32.const 1 + local.get $11 + local.get $1 + local.get $3 + i32.const 4880 + i32.load + call_indirect $0 (type $f32_i32_i32_=>_i32) + br_if $~lib/typedarray/SOME<~lib/typedarray/Float32Array,f32>|inlined.0 + drop + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|0122 + end + end + i32.const 0 + end + i32.eqz + br_if $folding-inner9 + global.get $~lib/memory/__stack_pointer + i32.const 4912 + i32.store offset=4 + i32.const 0 + local.set $1 + block $~lib/typedarray/SOME<~lib/typedarray/Float32Array,f32>|inlined.0124 (result i32) + local.get $3 + i32.load offset=4 + local.set $2 + local.get $3 + i32.load offset=8 + i32.const 2 + i32.shr_u + local.set $0 + loop $for-loop|0125 + local.get $0 + local.get $1 + i32.gt_s + if + local.get $2 + local.get $1 + i32.const 2 + i32.shl + i32.add + f32.load + local.set $11 + i32.const 3 + global.set $~argumentsLength + i32.const 1 + local.get $11 + local.get $1 + local.get $3 + i32.const 4912 + i32.load + call_indirect $0 (type $f32_i32_i32_=>_i32) + br_if $~lib/typedarray/SOME<~lib/typedarray/Float32Array,f32>|inlined.0124 + drop + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|0125 + end + end + i32.const 0 + end + br_if $folding-inner10 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 15924 + i32.lt_s + br_if $folding-inner23 + global.get $~lib/memory/__stack_pointer + local.tee $0 + i64.const 0 + i64.store + local.get $0 + i32.const 3 + call $~lib/typedarray/Float64Array#constructor + local.tee $3 + i32.store + local.get $3 + i32.const 0 + f64.const 2 + call $~lib/typedarray/Float64Array#__set + local.get $3 + i32.const 1 + f64.const 4 + call $~lib/typedarray/Float64Array#__set + local.get $3 + i32.const 2 + f64.const 6 + call $~lib/typedarray/Float64Array#__set + global.get $~lib/memory/__stack_pointer + i32.const 4944 + i32.store offset=4 + i32.const 0 + local.set $1 + block $~lib/typedarray/SOME<~lib/typedarray/Float64Array,f64>|inlined.0 (result i32) + local.get $3 + i32.load offset=4 + local.set $2 + local.get $3 + i32.load offset=8 + i32.const 3 + i32.shr_u + local.set $0 + loop $for-loop|0127 + local.get $0 + local.get $1 + i32.gt_s + if + local.get $2 + local.get $1 + i32.const 3 + i32.shl + i32.add + f64.load + local.set $12 + i32.const 3 + global.set $~argumentsLength + i32.const 1 + local.get $12 + local.get $1 + local.get $3 + i32.const 4944 + i32.load + call_indirect $0 (type $f64_i32_i32_=>_i32) + br_if $~lib/typedarray/SOME<~lib/typedarray/Float64Array,f64>|inlined.0 + drop + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|0127 + end + end + i32.const 0 + end + i32.eqz + br_if $folding-inner9 + global.get $~lib/memory/__stack_pointer + i32.const 4976 + i32.store offset=4 + i32.const 0 + local.set $1 + block $~lib/typedarray/SOME<~lib/typedarray/Float64Array,f64>|inlined.0129 (result i32) + local.get $3 + i32.load offset=4 + local.set $2 + local.get $3 + i32.load offset=8 + i32.const 3 + i32.shr_u + local.set $0 + loop $for-loop|0130 + local.get $0 + local.get $1 + i32.gt_s + if + local.get $2 + local.get $1 + i32.const 3 + i32.shl + i32.add + f64.load + local.set $12 + i32.const 3 + global.set $~argumentsLength + i32.const 1 + local.get $12 + local.get $1 + local.get $3 + i32.const 4976 + i32.load + call_indirect $0 (type $f64_i32_i32_=>_i32) + br_if $~lib/typedarray/SOME<~lib/typedarray/Float64Array,f64>|inlined.0129 + drop + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|0130 + end + end + i32.const 0 + end + br_if $folding-inner10 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 15924 + i32.lt_s + br_if $folding-inner23 + global.get $~lib/memory/__stack_pointer + local.tee $0 + i64.const 0 + i64.store + local.get $0 + i32.const 3 + call $~lib/typedarray/Int8Array#constructor + local.tee $3 + i32.store + local.get $3 + i32.const 0 + i32.const 1 + call $~lib/typedarray/Int8Array#__set + local.get $3 + i32.const 1 + i32.const 2 + call $~lib/typedarray/Int8Array#__set + local.get $3 + i32.const 2 + i32.const 3 + call $~lib/typedarray/Int8Array#__set + global.get $~lib/memory/__stack_pointer + i32.const 5008 + i32.store offset=4 + i32.const 0 + local.set $1 + local.get $3 + i32.load offset=4 + local.set $4 + local.get $3 + i32.load offset=8 + local.set $2 + block $~lib/typedarray/FIND_INDEX<~lib/typedarray/Int8Array,i8>|inlined.0 + loop $for-loop|0132 + local.get $1 + local.get $2 + i32.lt_s + if + local.get $1 + local.get $4 + i32.add + i32.load8_s + i32.const 3 + global.set $~argumentsLength + local.get $1 + local.get $3 + i32.const 5008 + i32.load + call_indirect $0 (type $i32_i32_i32_=>_i32) + br_if $~lib/typedarray/FIND_INDEX<~lib/typedarray/Int8Array,i8>|inlined.0 + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|0132 + end + end + i32.const -1 + local.set $1 + end + local.get $1 + i32.const 1 + i32.ne + br_if $folding-inner11 + global.get $~lib/memory/__stack_pointer + i32.const 5040 + i32.store offset=4 + i32.const 0 + local.set $1 + local.get $3 + i32.load offset=4 + local.set $4 + local.get $3 + i32.load offset=8 + local.set $2 + block $~lib/typedarray/FIND_INDEX<~lib/typedarray/Int8Array,i8>|inlined.0134 + loop $for-loop|0135 + local.get $1 + local.get $2 + i32.lt_s + if + local.get $1 + local.get $4 + i32.add + i32.load8_s + i32.const 3 + global.set $~argumentsLength + local.get $1 + local.get $3 + i32.const 5040 + i32.load + call_indirect $0 (type $i32_i32_i32_=>_i32) + br_if $~lib/typedarray/FIND_INDEX<~lib/typedarray/Int8Array,i8>|inlined.0134 + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|0135 + end + end + i32.const -1 + local.set $1 + end + local.get $1 + i32.const -1 + i32.ne + br_if $folding-inner12 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 15924 + i32.lt_s + br_if $folding-inner23 + global.get $~lib/memory/__stack_pointer + local.tee $0 + i64.const 0 + i64.store + local.get $0 + i32.const 3 + call $~lib/typedarray/Uint8Array#constructor + local.tee $3 + i32.store + local.get $3 + i32.const 0 + i32.const 1 + call $~lib/typedarray/Uint8Array#__set + local.get $3 + i32.const 1 + i32.const 2 + call $~lib/typedarray/Uint8Array#__set + local.get $3 + i32.const 2 + i32.const 3 + call $~lib/typedarray/Uint8Array#__set + global.get $~lib/memory/__stack_pointer + i32.const 5072 + i32.store offset=4 + i32.const 0 + local.set $1 + local.get $3 + i32.load offset=4 + local.set $4 + local.get $3 + i32.load offset=8 + local.set $2 + block $~lib/typedarray/FIND_INDEX<~lib/typedarray/Uint8Array,u8>|inlined.0 + loop $for-loop|0137 + local.get $1 + local.get $2 + i32.lt_s + if + local.get $1 + local.get $4 + i32.add + i32.load8_u + i32.const 3 + global.set $~argumentsLength + local.get $1 + local.get $3 + i32.const 5072 + i32.load + call_indirect $0 (type $i32_i32_i32_=>_i32) + br_if $~lib/typedarray/FIND_INDEX<~lib/typedarray/Uint8Array,u8>|inlined.0 + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|0137 + end + end + i32.const -1 + local.set $1 + end + local.get $1 + i32.const 1 + i32.ne + br_if $folding-inner11 + global.get $~lib/memory/__stack_pointer + i32.const 5104 + i32.store offset=4 + i32.const 0 + local.set $1 + local.get $3 + i32.load offset=4 + local.set $4 + local.get $3 + i32.load offset=8 + local.set $2 + block $~lib/typedarray/FIND_INDEX<~lib/typedarray/Uint8Array,u8>|inlined.0139 + loop $for-loop|0140 + local.get $1 + local.get $2 + i32.lt_s + if + local.get $1 + local.get $4 + i32.add + i32.load8_u + i32.const 3 + global.set $~argumentsLength + local.get $1 + local.get $3 + i32.const 5104 + i32.load + call_indirect $0 (type $i32_i32_i32_=>_i32) + br_if $~lib/typedarray/FIND_INDEX<~lib/typedarray/Uint8Array,u8>|inlined.0139 + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|0140 + end + end + i32.const -1 + local.set $1 + end + local.get $1 + i32.const -1 + i32.ne + br_if $folding-inner12 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 15924 + i32.lt_s + br_if $folding-inner23 + global.get $~lib/memory/__stack_pointer + local.tee $0 + i64.const 0 + i64.store + local.get $0 + i32.const 3 + call $~lib/typedarray/Uint8ClampedArray#constructor + local.tee $3 + i32.store + local.get $3 + i32.const 0 + i32.const 1 + call $~lib/typedarray/Uint8ClampedArray#__set + local.get $3 + i32.const 1 + i32.const 2 + call $~lib/typedarray/Uint8ClampedArray#__set + local.get $3 + i32.const 2 + i32.const 3 + call $~lib/typedarray/Uint8ClampedArray#__set + global.get $~lib/memory/__stack_pointer + i32.const 5136 + i32.store offset=4 + i32.const 0 + local.set $1 + local.get $3 + i32.load offset=4 + local.set $4 + local.get $3 + i32.load offset=8 + local.set $2 + block $~lib/typedarray/FIND_INDEX<~lib/typedarray/Uint8Array,u8>|inlined.0143 + loop $for-loop|0144 + local.get $1 + local.get $2 + i32.lt_s + if + local.get $1 + local.get $4 + i32.add + i32.load8_u + i32.const 3 + global.set $~argumentsLength + local.get $1 + local.get $3 + i32.const 5136 + i32.load + call_indirect $0 (type $i32_i32_i32_=>_i32) + br_if $~lib/typedarray/FIND_INDEX<~lib/typedarray/Uint8Array,u8>|inlined.0143 + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|0144 + end + end + i32.const -1 + local.set $1 + end + local.get $1 + i32.const 1 + i32.ne + br_if $folding-inner11 + global.get $~lib/memory/__stack_pointer + i32.const 5168 + i32.store offset=4 + i32.const 0 + local.set $1 + local.get $3 + i32.load offset=4 + local.set $4 + local.get $3 + i32.load offset=8 + local.set $2 + block $~lib/typedarray/FIND_INDEX<~lib/typedarray/Uint8Array,u8>|inlined.0146 + loop $for-loop|0147 + local.get $1 + local.get $2 + i32.lt_s + if + local.get $1 + local.get $4 + i32.add + i32.load8_u + i32.const 3 + global.set $~argumentsLength + local.get $1 + local.get $3 + i32.const 5168 + i32.load + call_indirect $0 (type $i32_i32_i32_=>_i32) + br_if $~lib/typedarray/FIND_INDEX<~lib/typedarray/Uint8Array,u8>|inlined.0146 + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|0147 + end + end + i32.const -1 + local.set $1 + end + local.get $1 + i32.const -1 + i32.ne + br_if $folding-inner12 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 15924 + i32.lt_s + br_if $folding-inner23 + global.get $~lib/memory/__stack_pointer + local.tee $0 + i64.const 0 + i64.store + local.get $0 + i32.const 3 + call $~lib/typedarray/Int16Array#constructor + local.tee $3 + i32.store + local.get $3 + i32.const 0 + i32.const 1 + call $~lib/typedarray/Int16Array#__set + local.get $3 + i32.const 1 + i32.const 2 + call $~lib/typedarray/Int16Array#__set + local.get $3 + i32.const 2 + i32.const 3 + call $~lib/typedarray/Int16Array#__set + global.get $~lib/memory/__stack_pointer + i32.const 5200 + i32.store offset=4 + i32.const 0 + local.set $1 + local.get $3 + i32.load offset=4 + local.set $4 + local.get $3 + i32.load offset=8 + i32.const 1 + i32.shr_u + local.set $2 + block $~lib/typedarray/FIND_INDEX<~lib/typedarray/Int16Array,i16>|inlined.0 + loop $for-loop|0149 + local.get $1 + local.get $2 + i32.lt_s + if + local.get $4 + local.get $1 + i32.const 1 + i32.shl + i32.add + i32.load16_s + i32.const 3 + global.set $~argumentsLength + local.get $1 + local.get $3 + i32.const 5200 + i32.load + call_indirect $0 (type $i32_i32_i32_=>_i32) + br_if $~lib/typedarray/FIND_INDEX<~lib/typedarray/Int16Array,i16>|inlined.0 + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|0149 + end + end + i32.const -1 + local.set $1 + end + local.get $1 + i32.const 1 + i32.ne + br_if $folding-inner11 + global.get $~lib/memory/__stack_pointer + i32.const 5232 + i32.store offset=4 + i32.const 0 + local.set $1 + local.get $3 + i32.load offset=4 + local.set $4 + local.get $3 + i32.load offset=8 + i32.const 1 + i32.shr_u + local.set $2 + block $~lib/typedarray/FIND_INDEX<~lib/typedarray/Int16Array,i16>|inlined.0151 + loop $for-loop|0152 + local.get $1 + local.get $2 + i32.lt_s + if + local.get $4 + local.get $1 + i32.const 1 + i32.shl + i32.add + i32.load16_s + i32.const 3 + global.set $~argumentsLength + local.get $1 + local.get $3 + i32.const 5232 + i32.load + call_indirect $0 (type $i32_i32_i32_=>_i32) + br_if $~lib/typedarray/FIND_INDEX<~lib/typedarray/Int16Array,i16>|inlined.0151 + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|0152 + end + end + i32.const -1 + local.set $1 + end + local.get $1 + i32.const -1 + i32.ne + br_if $folding-inner12 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 15924 + i32.lt_s + br_if $folding-inner23 + global.get $~lib/memory/__stack_pointer + local.tee $0 + i64.const 0 + i64.store + local.get $0 + i32.const 3 + call $~lib/typedarray/Uint16Array#constructor + local.tee $3 + i32.store + local.get $3 + i32.const 0 + i32.const 1 + call $~lib/typedarray/Uint16Array#__set + local.get $3 + i32.const 1 + i32.const 2 + call $~lib/typedarray/Uint16Array#__set + local.get $3 + i32.const 2 + i32.const 3 + call $~lib/typedarray/Uint16Array#__set + global.get $~lib/memory/__stack_pointer + i32.const 5264 + i32.store offset=4 + i32.const 0 + local.set $1 + local.get $3 + i32.load offset=4 + local.set $4 + local.get $3 + i32.load offset=8 + i32.const 1 + i32.shr_u + local.set $2 + block $~lib/typedarray/FIND_INDEX<~lib/typedarray/Uint16Array,u16>|inlined.0 + loop $for-loop|0154 + local.get $1 + local.get $2 + i32.lt_s + if + local.get $4 + local.get $1 + i32.const 1 + i32.shl + i32.add + i32.load16_u + i32.const 3 + global.set $~argumentsLength + local.get $1 + local.get $3 + i32.const 5264 + i32.load + call_indirect $0 (type $i32_i32_i32_=>_i32) + br_if $~lib/typedarray/FIND_INDEX<~lib/typedarray/Uint16Array,u16>|inlined.0 + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|0154 + end + end + i32.const -1 + local.set $1 + end + local.get $1 + i32.const 1 + i32.ne + br_if $folding-inner11 + global.get $~lib/memory/__stack_pointer + i32.const 5296 + i32.store offset=4 + i32.const 0 + local.set $1 + local.get $3 + i32.load offset=4 + local.set $4 + local.get $3 + i32.load offset=8 + i32.const 1 + i32.shr_u + local.set $2 + block $~lib/typedarray/FIND_INDEX<~lib/typedarray/Uint16Array,u16>|inlined.0156 + loop $for-loop|0157 + local.get $1 + local.get $2 + i32.lt_s + if + local.get $4 + local.get $1 + i32.const 1 + i32.shl + i32.add + i32.load16_u + i32.const 3 + global.set $~argumentsLength + local.get $1 + local.get $3 + i32.const 5296 + i32.load + call_indirect $0 (type $i32_i32_i32_=>_i32) + br_if $~lib/typedarray/FIND_INDEX<~lib/typedarray/Uint16Array,u16>|inlined.0156 + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|0157 + end + end + i32.const -1 + local.set $1 + end + local.get $1 + i32.const -1 + i32.ne + br_if $folding-inner12 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 15924 + i32.lt_s + br_if $folding-inner23 + global.get $~lib/memory/__stack_pointer + local.tee $0 + i64.const 0 + i64.store + local.get $0 + i32.const 3 + call $~lib/typedarray/Int32Array#constructor + local.tee $3 + i32.store + local.get $3 + i32.const 0 + i32.const 1 + call $~lib/typedarray/Int32Array#__set + local.get $3 + i32.const 1 + i32.const 2 + call $~lib/typedarray/Int32Array#__set + local.get $3 + i32.const 2 + i32.const 3 + call $~lib/typedarray/Int32Array#__set + global.get $~lib/memory/__stack_pointer + i32.const 5328 + i32.store offset=4 + i32.const 0 + local.set $1 + local.get $3 + i32.load offset=4 + local.set $4 + local.get $3 + i32.load offset=8 + i32.const 2 + i32.shr_u + local.set $2 + block $~lib/typedarray/FIND_INDEX<~lib/typedarray/Int32Array,i32>|inlined.0 + loop $for-loop|0159 + local.get $1 + local.get $2 + i32.lt_s + if + local.get $4 + local.get $1 + i32.const 2 + i32.shl + i32.add + i32.load + i32.const 3 + global.set $~argumentsLength + local.get $1 + local.get $3 + i32.const 5328 + i32.load + call_indirect $0 (type $i32_i32_i32_=>_i32) + br_if $~lib/typedarray/FIND_INDEX<~lib/typedarray/Int32Array,i32>|inlined.0 + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|0159 + end + end + i32.const -1 + local.set $1 + end + local.get $1 + i32.const 1 + i32.ne + br_if $folding-inner11 + global.get $~lib/memory/__stack_pointer + i32.const 5360 + i32.store offset=4 + i32.const 0 + local.set $1 + local.get $3 + i32.load offset=4 + local.set $4 + local.get $3 + i32.load offset=8 + i32.const 2 + i32.shr_u + local.set $2 + block $~lib/typedarray/FIND_INDEX<~lib/typedarray/Int32Array,i32>|inlined.0161 + loop $for-loop|0162 + local.get $1 + local.get $2 + i32.lt_s + if + local.get $4 + local.get $1 + i32.const 2 + i32.shl + i32.add + i32.load + i32.const 3 + global.set $~argumentsLength + local.get $1 + local.get $3 + i32.const 5360 + i32.load + call_indirect $0 (type $i32_i32_i32_=>_i32) + br_if $~lib/typedarray/FIND_INDEX<~lib/typedarray/Int32Array,i32>|inlined.0161 + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|0162 + end + end + i32.const -1 + local.set $1 + end + local.get $1 + i32.const -1 + i32.ne + br_if $folding-inner12 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 15924 + i32.lt_s + br_if $folding-inner23 + global.get $~lib/memory/__stack_pointer + local.tee $0 + i64.const 0 + i64.store + local.get $0 + i32.const 3 + call $~lib/typedarray/Uint32Array#constructor + local.tee $3 + i32.store + local.get $3 + i32.const 0 + i32.const 1 + call $~lib/typedarray/Uint32Array#__set + local.get $3 + i32.const 1 + i32.const 2 + call $~lib/typedarray/Uint32Array#__set + local.get $3 + i32.const 2 + i32.const 3 + call $~lib/typedarray/Uint32Array#__set + global.get $~lib/memory/__stack_pointer + i32.const 5392 + i32.store offset=4 + i32.const 0 + local.set $1 + local.get $3 + i32.load offset=4 + local.set $4 + local.get $3 + i32.load offset=8 + i32.const 2 + i32.shr_u + local.set $2 + block $~lib/typedarray/FIND_INDEX<~lib/typedarray/Uint32Array,u32>|inlined.0 + loop $for-loop|0164 + local.get $1 + local.get $2 + i32.lt_s + if + local.get $4 + local.get $1 + i32.const 2 + i32.shl + i32.add + i32.load + i32.const 3 + global.set $~argumentsLength + local.get $1 + local.get $3 + i32.const 5392 + i32.load + call_indirect $0 (type $i32_i32_i32_=>_i32) + br_if $~lib/typedarray/FIND_INDEX<~lib/typedarray/Uint32Array,u32>|inlined.0 + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|0164 + end + end + i32.const -1 + local.set $1 + end + local.get $1 + i32.const 1 + i32.ne + br_if $folding-inner11 + global.get $~lib/memory/__stack_pointer + i32.const 5424 + i32.store offset=4 + i32.const 0 + local.set $1 + local.get $3 + i32.load offset=4 + local.set $4 + local.get $3 + i32.load offset=8 + i32.const 2 + i32.shr_u + local.set $2 + block $~lib/typedarray/FIND_INDEX<~lib/typedarray/Uint32Array,u32>|inlined.0166 + loop $for-loop|0167 + local.get $1 + local.get $2 + i32.lt_s + if + local.get $4 + local.get $1 + i32.const 2 + i32.shl + i32.add + i32.load + i32.const 3 + global.set $~argumentsLength + local.get $1 + local.get $3 + i32.const 5424 + i32.load + call_indirect $0 (type $i32_i32_i32_=>_i32) + br_if $~lib/typedarray/FIND_INDEX<~lib/typedarray/Uint32Array,u32>|inlined.0166 + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|0167 + end + end + i32.const -1 + local.set $1 + end + local.get $1 + i32.const -1 + i32.ne + br_if $folding-inner12 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 15924 + i32.lt_s + br_if $folding-inner23 + global.get $~lib/memory/__stack_pointer + local.tee $0 + i64.const 0 + i64.store + local.get $0 + i32.const 3 + call $~lib/typedarray/Int64Array#constructor + local.tee $4 + i32.store + local.get $4 + i32.const 0 + i64.const 1 + call $~lib/typedarray/Int64Array#__set + local.get $4 + i32.const 1 + i64.const 2 + call $~lib/typedarray/Int64Array#__set + local.get $4 + i32.const 2 + i64.const 3 + call $~lib/typedarray/Int64Array#__set + global.get $~lib/memory/__stack_pointer + i32.const 5456 + i32.store offset=4 + i32.const 0 + local.set $1 + local.get $4 + i32.load offset=4 + local.set $2 + local.get $4 + i32.load offset=8 + i32.const 3 + i32.shr_u + local.set $0 + block $~lib/typedarray/FIND_INDEX<~lib/typedarray/Int64Array,i64>|inlined.0 + loop $for-loop|0169 + local.get $0 + local.get $1 + i32.gt_s + if + local.get $2 + local.get $1 + i32.const 3 + i32.shl + i32.add + i64.load + i32.const 3 + global.set $~argumentsLength + local.get $1 + local.get $4 + i32.const 5456 + i32.load + call_indirect $0 (type $i64_i32_i32_=>_i32) + br_if $~lib/typedarray/FIND_INDEX<~lib/typedarray/Int64Array,i64>|inlined.0 + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|0169 + end + end + i32.const -1 + local.set $1 + end + local.get $1 + i32.const 1 + i32.ne + br_if $folding-inner11 + global.get $~lib/memory/__stack_pointer + i32.const 5488 + i32.store offset=4 + i32.const 0 + local.set $1 + local.get $4 + i32.load offset=4 + local.set $2 + local.get $4 + i32.load offset=8 + i32.const 3 + i32.shr_u + local.set $0 + block $~lib/typedarray/FIND_INDEX<~lib/typedarray/Int64Array,i64>|inlined.0171 + loop $for-loop|0172 + local.get $0 + local.get $1 + i32.gt_s + if + local.get $2 + local.get $1 + i32.const 3 + i32.shl + i32.add + i64.load + i32.const 3 + global.set $~argumentsLength + local.get $1 + local.get $4 + i32.const 5488 + i32.load + call_indirect $0 (type $i64_i32_i32_=>_i32) + br_if $~lib/typedarray/FIND_INDEX<~lib/typedarray/Int64Array,i64>|inlined.0171 + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|0172 + end + end + i32.const -1 + local.set $1 + end + local.get $1 + i32.const -1 + i32.ne + br_if $folding-inner12 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 15924 + i32.lt_s + br_if $folding-inner23 + global.get $~lib/memory/__stack_pointer + local.tee $0 + i64.const 0 + i64.store + local.get $0 + i32.const 3 + call $~lib/typedarray/Uint64Array#constructor + local.tee $4 + i32.store + local.get $4 + i32.const 0 + i64.const 1 + call $~lib/typedarray/Uint64Array#__set + local.get $4 + i32.const 1 + i64.const 2 + call $~lib/typedarray/Uint64Array#__set + local.get $4 + i32.const 2 + i64.const 3 + call $~lib/typedarray/Uint64Array#__set + global.get $~lib/memory/__stack_pointer + i32.const 5520 + i32.store offset=4 + i32.const 0 + local.set $1 + local.get $4 + i32.load offset=4 + local.set $2 + local.get $4 + i32.load offset=8 + i32.const 3 + i32.shr_u + local.set $0 + block $~lib/typedarray/FIND_INDEX<~lib/typedarray/Uint64Array,u64>|inlined.0 + loop $for-loop|0174 + local.get $0 + local.get $1 + i32.gt_s + if + local.get $2 + local.get $1 + i32.const 3 + i32.shl + i32.add + i64.load + i32.const 3 + global.set $~argumentsLength + local.get $1 + local.get $4 + i32.const 5520 + i32.load + call_indirect $0 (type $i64_i32_i32_=>_i32) + br_if $~lib/typedarray/FIND_INDEX<~lib/typedarray/Uint64Array,u64>|inlined.0 + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|0174 + end + end + i32.const -1 + local.set $1 + end + local.get $1 + i32.const 1 + i32.ne + br_if $folding-inner11 + global.get $~lib/memory/__stack_pointer + i32.const 5552 + i32.store offset=4 + i32.const 0 + local.set $1 + local.get $4 + i32.load offset=4 + local.set $2 + local.get $4 + i32.load offset=8 + i32.const 3 + i32.shr_u + local.set $0 + block $~lib/typedarray/FIND_INDEX<~lib/typedarray/Uint64Array,u64>|inlined.0176 + loop $for-loop|0177 + local.get $0 + local.get $1 + i32.gt_s + if + local.get $2 + local.get $1 + i32.const 3 + i32.shl + i32.add + i64.load + i32.const 3 + global.set $~argumentsLength + local.get $1 + local.get $4 + i32.const 5552 + i32.load + call_indirect $0 (type $i64_i32_i32_=>_i32) + br_if $~lib/typedarray/FIND_INDEX<~lib/typedarray/Uint64Array,u64>|inlined.0176 + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|0177 + end + end + i32.const -1 + local.set $1 + end + local.get $1 + i32.const -1 + i32.ne + br_if $folding-inner12 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 15924 + i32.lt_s + br_if $folding-inner23 + global.get $~lib/memory/__stack_pointer + local.tee $0 + i64.const 0 + i64.store + local.get $0 + i32.const 3 + call $~lib/typedarray/Float32Array#constructor + local.tee $4 + i32.store + local.get $4 + i32.const 0 + f32.const 1 + call $~lib/typedarray/Float32Array#__set + local.get $4 + i32.const 1 + f32.const 2 + call $~lib/typedarray/Float32Array#__set + local.get $4 + i32.const 2 + f32.const 3 + call $~lib/typedarray/Float32Array#__set + global.get $~lib/memory/__stack_pointer + i32.const 5584 + i32.store offset=4 + i32.const 0 + local.set $1 + local.get $4 + i32.load offset=4 + local.set $2 + local.get $4 + i32.load offset=8 + i32.const 2 + i32.shr_u + local.set $0 + block $~lib/typedarray/FIND_INDEX<~lib/typedarray/Float32Array,f32>|inlined.0 + loop $for-loop|0179 + local.get $0 + local.get $1 + i32.gt_s + if + local.get $2 + local.get $1 + i32.const 2 + i32.shl + i32.add + f32.load + i32.const 3 + global.set $~argumentsLength + local.get $1 + local.get $4 + i32.const 5584 + i32.load + call_indirect $0 (type $f32_i32_i32_=>_i32) + br_if $~lib/typedarray/FIND_INDEX<~lib/typedarray/Float32Array,f32>|inlined.0 + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|0179 + end + end + i32.const -1 + local.set $1 + end + local.get $1 + i32.const 1 + i32.ne + br_if $folding-inner11 + global.get $~lib/memory/__stack_pointer + i32.const 5616 + i32.store offset=4 + i32.const 0 + local.set $1 + local.get $4 + i32.load offset=4 + local.set $2 + local.get $4 + i32.load offset=8 + i32.const 2 + i32.shr_u + local.set $0 + block $~lib/typedarray/FIND_INDEX<~lib/typedarray/Float32Array,f32>|inlined.0181 + loop $for-loop|0182 + local.get $0 + local.get $1 + i32.gt_s + if + local.get $2 + local.get $1 + i32.const 2 + i32.shl + i32.add + f32.load + i32.const 3 + global.set $~argumentsLength + local.get $1 + local.get $4 + i32.const 5616 + i32.load + call_indirect $0 (type $f32_i32_i32_=>_i32) + br_if $~lib/typedarray/FIND_INDEX<~lib/typedarray/Float32Array,f32>|inlined.0181 + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|0182 + end + end + i32.const -1 + local.set $1 + end + local.get $1 + i32.const -1 + i32.ne + br_if $folding-inner12 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 15924 + i32.lt_s + br_if $folding-inner23 + global.get $~lib/memory/__stack_pointer + local.tee $0 + i64.const 0 + i64.store + local.get $0 + i32.const 3 + call $~lib/typedarray/Float64Array#constructor + local.tee $4 + i32.store + local.get $4 + i32.const 0 + f64.const 1 + call $~lib/typedarray/Float64Array#__set + local.get $4 + i32.const 1 + f64.const 2 + call $~lib/typedarray/Float64Array#__set + local.get $4 + i32.const 2 + f64.const 3 + call $~lib/typedarray/Float64Array#__set + global.get $~lib/memory/__stack_pointer + i32.const 5648 + i32.store offset=4 + i32.const 0 + local.set $1 + local.get $4 + i32.load offset=4 + local.set $2 + local.get $4 + i32.load offset=8 + i32.const 3 + i32.shr_u + local.set $0 + block $~lib/typedarray/FIND_INDEX<~lib/typedarray/Float64Array,f64>|inlined.0 + loop $for-loop|0184 + local.get $0 + local.get $1 + i32.gt_s + if + local.get $2 + local.get $1 + i32.const 3 + i32.shl + i32.add + f64.load + i32.const 3 + global.set $~argumentsLength + local.get $1 + local.get $4 + i32.const 5648 + i32.load + call_indirect $0 (type $f64_i32_i32_=>_i32) + br_if $~lib/typedarray/FIND_INDEX<~lib/typedarray/Float64Array,f64>|inlined.0 + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|0184 + end + end + i32.const -1 + local.set $1 + end + local.get $1 + i32.const 1 + i32.ne + br_if $folding-inner11 + global.get $~lib/memory/__stack_pointer + i32.const 5680 + i32.store offset=4 + i32.const 0 + local.set $1 + local.get $4 + i32.load offset=4 + local.set $2 + local.get $4 + i32.load offset=8 + i32.const 3 + i32.shr_u + local.set $0 + block $~lib/typedarray/FIND_INDEX<~lib/typedarray/Float64Array,f64>|inlined.0186 + loop $for-loop|0187 + local.get $0 + local.get $1 + i32.gt_s + if + local.get $2 + local.get $1 + i32.const 3 + i32.shl + i32.add + f64.load + i32.const 3 + global.set $~argumentsLength + local.get $1 + local.get $4 + i32.const 5680 + i32.load + call_indirect $0 (type $f64_i32_i32_=>_i32) + br_if $~lib/typedarray/FIND_INDEX<~lib/typedarray/Float64Array,f64>|inlined.0186 + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|0187 + end + end + i32.const -1 + local.set $1 + end + local.get $1 + i32.const -1 + i32.ne + br_if $folding-inner12 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 15924 + i32.lt_s + br_if $folding-inner23 + global.get $~lib/memory/__stack_pointer + local.tee $0 + i64.const 0 + i64.store + local.get $0 + i32.const 3 + call $~lib/typedarray/Int8Array#constructor + local.tee $5 + i32.store + local.get $5 + i32.const 0 + i32.const 2 + call $~lib/typedarray/Int8Array#__set + local.get $5 + i32.const 1 + i32.const 4 + call $~lib/typedarray/Int8Array#__set + local.get $5 + i32.const 2 + i32.const 6 + call $~lib/typedarray/Int8Array#__set + global.get $~lib/memory/__stack_pointer + i32.const 5712 + i32.store offset=4 + i32.const 0 + local.set $1 + block $~lib/typedarray/EVERY<~lib/typedarray/Int8Array,i8>|inlined.0 (result i32) + local.get $5 + i32.load offset=4 + local.set $4 + local.get $5 + i32.load offset=8 + local.set $2 + loop $for-loop|0189 + local.get $1 + local.get $2 + i32.lt_s + if + local.get $1 + local.get $4 + i32.add + i32.load8_s + local.set $0 + i32.const 3 + global.set $~argumentsLength + i32.const 0 + local.get $0 + local.get $1 + local.get $5 + i32.const 5712 + i32.load + call_indirect $0 (type $i32_i32_i32_=>_i32) + i32.eqz + br_if $~lib/typedarray/EVERY<~lib/typedarray/Int8Array,i8>|inlined.0 + drop + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|0189 + end + end + i32.const 1 + end + i32.eqz + br_if $folding-inner13 + global.get $~lib/memory/__stack_pointer + i32.const 5744 + i32.store offset=4 + i32.const 0 + local.set $1 + block $~lib/typedarray/EVERY<~lib/typedarray/Int8Array,i8>|inlined.0191 (result i32) + local.get $5 + i32.load offset=4 + local.set $4 + local.get $5 + i32.load offset=8 + local.set $2 + loop $for-loop|0192 + local.get $1 + local.get $2 + i32.lt_s + if + local.get $1 + local.get $4 + i32.add + i32.load8_s + local.set $0 + i32.const 3 + global.set $~argumentsLength + i32.const 0 + local.get $0 + local.get $1 + local.get $5 + i32.const 5744 + i32.load + call_indirect $0 (type $i32_i32_i32_=>_i32) + i32.eqz + br_if $~lib/typedarray/EVERY<~lib/typedarray/Int8Array,i8>|inlined.0191 + drop + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|0192 + end + end + i32.const 1 + end + br_if $folding-inner14 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 15924 + i32.lt_s + br_if $folding-inner23 + global.get $~lib/memory/__stack_pointer + local.tee $0 + i64.const 0 + i64.store + local.get $0 + i32.const 3 + call $~lib/typedarray/Uint8Array#constructor + local.tee $5 + i32.store + local.get $5 + i32.const 0 + i32.const 2 + call $~lib/typedarray/Uint8Array#__set + local.get $5 + i32.const 1 + i32.const 4 + call $~lib/typedarray/Uint8Array#__set + local.get $5 + i32.const 2 + i32.const 6 + call $~lib/typedarray/Uint8Array#__set + global.get $~lib/memory/__stack_pointer + i32.const 5776 + i32.store offset=4 + i32.const 0 + local.set $1 + block $~lib/typedarray/EVERY<~lib/typedarray/Uint8Array,u8>|inlined.0 (result i32) + local.get $5 + i32.load offset=4 + local.set $4 + local.get $5 + i32.load offset=8 + local.set $2 + loop $for-loop|0194 + local.get $1 + local.get $2 + i32.lt_s + if + local.get $1 + local.get $4 + i32.add + i32.load8_u + local.set $0 + i32.const 3 + global.set $~argumentsLength + i32.const 0 + local.get $0 + local.get $1 + local.get $5 + i32.const 5776 + i32.load + call_indirect $0 (type $i32_i32_i32_=>_i32) + i32.eqz + br_if $~lib/typedarray/EVERY<~lib/typedarray/Uint8Array,u8>|inlined.0 + drop + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|0194 + end + end + i32.const 1 + end + i32.eqz + br_if $folding-inner13 + global.get $~lib/memory/__stack_pointer + i32.const 5808 + i32.store offset=4 + i32.const 0 + local.set $1 + block $~lib/typedarray/EVERY<~lib/typedarray/Uint8Array,u8>|inlined.0196 (result i32) + local.get $5 + i32.load offset=4 + local.set $4 + local.get $5 + i32.load offset=8 + local.set $2 + loop $for-loop|0197 + local.get $1 + local.get $2 + i32.lt_s + if + local.get $1 + local.get $4 + i32.add + i32.load8_u + local.set $0 + i32.const 3 + global.set $~argumentsLength + i32.const 0 + local.get $0 + local.get $1 + local.get $5 + i32.const 5808 + i32.load + call_indirect $0 (type $i32_i32_i32_=>_i32) + i32.eqz + br_if $~lib/typedarray/EVERY<~lib/typedarray/Uint8Array,u8>|inlined.0196 + drop + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|0197 + end + end + i32.const 1 + end + br_if $folding-inner14 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 15924 + i32.lt_s + br_if $folding-inner23 + global.get $~lib/memory/__stack_pointer + local.tee $0 + i64.const 0 + i64.store + local.get $0 + i32.const 3 + call $~lib/typedarray/Uint8ClampedArray#constructor + local.tee $5 + i32.store + local.get $5 + i32.const 0 + i32.const 2 + call $~lib/typedarray/Uint8ClampedArray#__set + local.get $5 + i32.const 1 + i32.const 4 + call $~lib/typedarray/Uint8ClampedArray#__set + local.get $5 + i32.const 2 + i32.const 6 + call $~lib/typedarray/Uint8ClampedArray#__set + global.get $~lib/memory/__stack_pointer + i32.const 5840 + i32.store offset=4 + i32.const 0 + local.set $1 + block $~lib/typedarray/EVERY<~lib/typedarray/Uint8Array,u8>|inlined.0200 (result i32) + local.get $5 + i32.load offset=4 + local.set $4 + local.get $5 + i32.load offset=8 + local.set $2 + loop $for-loop|0201 + local.get $1 + local.get $2 + i32.lt_s + if + local.get $1 + local.get $4 + i32.add + i32.load8_u + local.set $0 + i32.const 3 + global.set $~argumentsLength + i32.const 0 + local.get $0 + local.get $1 + local.get $5 + i32.const 5840 + i32.load + call_indirect $0 (type $i32_i32_i32_=>_i32) + i32.eqz + br_if $~lib/typedarray/EVERY<~lib/typedarray/Uint8Array,u8>|inlined.0200 + drop + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|0201 + end + end + i32.const 1 + end + i32.eqz + br_if $folding-inner13 + global.get $~lib/memory/__stack_pointer + i32.const 5872 + i32.store offset=4 + i32.const 0 + local.set $1 + block $~lib/typedarray/EVERY<~lib/typedarray/Uint8Array,u8>|inlined.0203 (result i32) + local.get $5 + i32.load offset=4 + local.set $4 + local.get $5 + i32.load offset=8 + local.set $2 + loop $for-loop|0204 + local.get $1 + local.get $2 + i32.lt_s + if + local.get $1 + local.get $4 + i32.add + i32.load8_u + local.set $0 + i32.const 3 + global.set $~argumentsLength + i32.const 0 + local.get $0 + local.get $1 + local.get $5 + i32.const 5872 + i32.load + call_indirect $0 (type $i32_i32_i32_=>_i32) + i32.eqz + br_if $~lib/typedarray/EVERY<~lib/typedarray/Uint8Array,u8>|inlined.0203 + drop + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|0204 + end + end + i32.const 1 + end + br_if $folding-inner14 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 15924 + i32.lt_s + br_if $folding-inner23 + global.get $~lib/memory/__stack_pointer + local.tee $0 + i64.const 0 + i64.store + local.get $0 + i32.const 3 + call $~lib/typedarray/Int16Array#constructor + local.tee $5 + i32.store + local.get $5 + i32.const 0 + i32.const 2 + call $~lib/typedarray/Int16Array#__set + local.get $5 + i32.const 1 + i32.const 4 + call $~lib/typedarray/Int16Array#__set + local.get $5 + i32.const 2 + i32.const 6 + call $~lib/typedarray/Int16Array#__set + global.get $~lib/memory/__stack_pointer + i32.const 5904 + i32.store offset=4 + i32.const 0 + local.set $1 + block $~lib/typedarray/EVERY<~lib/typedarray/Int16Array,i16>|inlined.0 (result i32) + local.get $5 + i32.load offset=4 + local.set $4 + local.get $5 + i32.load offset=8 + i32.const 1 + i32.shr_u + local.set $2 + loop $for-loop|0206 + local.get $1 + local.get $2 + i32.lt_s + if + local.get $4 + local.get $1 + i32.const 1 + i32.shl + i32.add + i32.load16_s + local.set $0 + i32.const 3 + global.set $~argumentsLength + i32.const 0 + local.get $0 + local.get $1 + local.get $5 + i32.const 5904 + i32.load + call_indirect $0 (type $i32_i32_i32_=>_i32) + i32.eqz + br_if $~lib/typedarray/EVERY<~lib/typedarray/Int16Array,i16>|inlined.0 + drop + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|0206 + end + end + i32.const 1 + end + i32.eqz + br_if $folding-inner13 + global.get $~lib/memory/__stack_pointer + i32.const 5936 + i32.store offset=4 + i32.const 0 + local.set $1 + block $~lib/typedarray/EVERY<~lib/typedarray/Int16Array,i16>|inlined.0208 (result i32) + local.get $5 + i32.load offset=4 + local.set $4 + local.get $5 + i32.load offset=8 + i32.const 1 + i32.shr_u + local.set $2 + loop $for-loop|0209 + local.get $1 + local.get $2 + i32.lt_s + if + local.get $4 + local.get $1 + i32.const 1 + i32.shl + i32.add + i32.load16_s + local.set $0 + i32.const 3 + global.set $~argumentsLength + i32.const 0 + local.get $0 + local.get $1 + local.get $5 + i32.const 5936 + i32.load + call_indirect $0 (type $i32_i32_i32_=>_i32) + i32.eqz + br_if $~lib/typedarray/EVERY<~lib/typedarray/Int16Array,i16>|inlined.0208 + drop + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|0209 + end + end + i32.const 1 + end + br_if $folding-inner14 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 15924 + i32.lt_s + br_if $folding-inner23 + global.get $~lib/memory/__stack_pointer + local.tee $0 + i64.const 0 + i64.store + local.get $0 + i32.const 3 + call $~lib/typedarray/Uint16Array#constructor + local.tee $5 + i32.store + local.get $5 + i32.const 0 + i32.const 2 + call $~lib/typedarray/Uint16Array#__set + local.get $5 + i32.const 1 + i32.const 4 + call $~lib/typedarray/Uint16Array#__set + local.get $5 + i32.const 2 + i32.const 6 + call $~lib/typedarray/Uint16Array#__set + global.get $~lib/memory/__stack_pointer + i32.const 5968 + i32.store offset=4 + i32.const 0 + local.set $1 + block $~lib/typedarray/EVERY<~lib/typedarray/Uint16Array,u16>|inlined.0 (result i32) + local.get $5 + i32.load offset=4 + local.set $4 + local.get $5 + i32.load offset=8 + i32.const 1 + i32.shr_u + local.set $2 + loop $for-loop|0211 + local.get $1 + local.get $2 + i32.lt_s + if + local.get $4 + local.get $1 + i32.const 1 + i32.shl + i32.add + i32.load16_u + local.set $0 + i32.const 3 + global.set $~argumentsLength + i32.const 0 + local.get $0 + local.get $1 + local.get $5 + i32.const 5968 + i32.load + call_indirect $0 (type $i32_i32_i32_=>_i32) + i32.eqz + br_if $~lib/typedarray/EVERY<~lib/typedarray/Uint16Array,u16>|inlined.0 + drop + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|0211 + end + end + i32.const 1 + end + i32.eqz + br_if $folding-inner13 + global.get $~lib/memory/__stack_pointer + i32.const 6000 + i32.store offset=4 + i32.const 0 + local.set $1 + block $~lib/typedarray/EVERY<~lib/typedarray/Uint16Array,u16>|inlined.0213 (result i32) + local.get $5 + i32.load offset=4 + local.set $4 + local.get $5 + i32.load offset=8 + i32.const 1 + i32.shr_u + local.set $2 + loop $for-loop|0214 + local.get $1 + local.get $2 + i32.lt_s + if + local.get $4 + local.get $1 + i32.const 1 + i32.shl + i32.add + i32.load16_u + local.set $0 + i32.const 3 + global.set $~argumentsLength + i32.const 0 + local.get $0 + local.get $1 + local.get $5 + i32.const 6000 + i32.load + call_indirect $0 (type $i32_i32_i32_=>_i32) + i32.eqz + br_if $~lib/typedarray/EVERY<~lib/typedarray/Uint16Array,u16>|inlined.0213 + drop + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|0214 + end + end + i32.const 1 + end + br_if $folding-inner14 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 15924 + i32.lt_s + br_if $folding-inner23 + global.get $~lib/memory/__stack_pointer + local.tee $0 + i64.const 0 + i64.store + local.get $0 + i32.const 3 + call $~lib/typedarray/Int32Array#constructor + local.tee $5 + i32.store + local.get $5 + i32.const 0 + i32.const 2 + call $~lib/typedarray/Int32Array#__set + local.get $5 + i32.const 1 + i32.const 4 + call $~lib/typedarray/Int32Array#__set + local.get $5 + i32.const 2 + i32.const 6 + call $~lib/typedarray/Int32Array#__set + global.get $~lib/memory/__stack_pointer + i32.const 6032 + i32.store offset=4 + i32.const 0 + local.set $1 + block $~lib/typedarray/EVERY<~lib/typedarray/Int32Array,i32>|inlined.0 (result i32) + local.get $5 + i32.load offset=4 + local.set $4 + local.get $5 + i32.load offset=8 + i32.const 2 + i32.shr_u + local.set $2 + loop $for-loop|0216 + local.get $1 + local.get $2 + i32.lt_s + if + local.get $4 + local.get $1 + i32.const 2 + i32.shl + i32.add + i32.load + local.set $0 + i32.const 3 + global.set $~argumentsLength + i32.const 0 + local.get $0 + local.get $1 + local.get $5 + i32.const 6032 + i32.load + call_indirect $0 (type $i32_i32_i32_=>_i32) + i32.eqz + br_if $~lib/typedarray/EVERY<~lib/typedarray/Int32Array,i32>|inlined.0 + drop + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|0216 + end + end + i32.const 1 + end + i32.eqz + br_if $folding-inner13 + global.get $~lib/memory/__stack_pointer + i32.const 6064 + i32.store offset=4 + i32.const 0 + local.set $1 + block $~lib/typedarray/EVERY<~lib/typedarray/Int32Array,i32>|inlined.0218 (result i32) + local.get $5 + i32.load offset=4 + local.set $4 + local.get $5 + i32.load offset=8 + i32.const 2 + i32.shr_u + local.set $2 + loop $for-loop|0219 + local.get $1 + local.get $2 + i32.lt_s + if + local.get $4 + local.get $1 + i32.const 2 + i32.shl + i32.add + i32.load + local.set $0 + i32.const 3 + global.set $~argumentsLength + i32.const 0 + local.get $0 + local.get $1 + local.get $5 + i32.const 6064 + i32.load + call_indirect $0 (type $i32_i32_i32_=>_i32) + i32.eqz + br_if $~lib/typedarray/EVERY<~lib/typedarray/Int32Array,i32>|inlined.0218 + drop + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|0219 + end + end + i32.const 1 + end + br_if $folding-inner14 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 15924 + i32.lt_s + br_if $folding-inner23 + global.get $~lib/memory/__stack_pointer + local.tee $0 + i64.const 0 + i64.store + local.get $0 + i32.const 3 + call $~lib/typedarray/Uint32Array#constructor + local.tee $5 + i32.store + local.get $5 + i32.const 0 + i32.const 2 + call $~lib/typedarray/Uint32Array#__set + local.get $5 + i32.const 1 + i32.const 4 + call $~lib/typedarray/Uint32Array#__set + local.get $5 + i32.const 2 + i32.const 6 + call $~lib/typedarray/Uint32Array#__set + global.get $~lib/memory/__stack_pointer + i32.const 6096 + i32.store offset=4 + i32.const 0 + local.set $1 + block $~lib/typedarray/EVERY<~lib/typedarray/Uint32Array,u32>|inlined.0 (result i32) + local.get $5 + i32.load offset=4 + local.set $4 + local.get $5 + i32.load offset=8 + i32.const 2 + i32.shr_u + local.set $2 + loop $for-loop|0221 + local.get $1 + local.get $2 + i32.lt_s + if + local.get $4 + local.get $1 + i32.const 2 + i32.shl + i32.add + i32.load + local.set $0 + i32.const 3 + global.set $~argumentsLength + i32.const 0 + local.get $0 + local.get $1 + local.get $5 + i32.const 6096 + i32.load + call_indirect $0 (type $i32_i32_i32_=>_i32) + i32.eqz + br_if $~lib/typedarray/EVERY<~lib/typedarray/Uint32Array,u32>|inlined.0 + drop + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|0221 + end + end + i32.const 1 + end + i32.eqz + br_if $folding-inner13 + global.get $~lib/memory/__stack_pointer + i32.const 6128 + i32.store offset=4 + i32.const 0 + local.set $1 + block $~lib/typedarray/EVERY<~lib/typedarray/Uint32Array,u32>|inlined.0223 (result i32) + local.get $5 + i32.load offset=4 + local.set $4 + local.get $5 + i32.load offset=8 + i32.const 2 + i32.shr_u + local.set $2 + loop $for-loop|0224 + local.get $1 + local.get $2 + i32.lt_s + if + local.get $4 + local.get $1 + i32.const 2 + i32.shl + i32.add + i32.load + local.set $0 + i32.const 3 + global.set $~argumentsLength + i32.const 0 + local.get $0 + local.get $1 + local.get $5 + i32.const 6128 + i32.load + call_indirect $0 (type $i32_i32_i32_=>_i32) + i32.eqz + br_if $~lib/typedarray/EVERY<~lib/typedarray/Uint32Array,u32>|inlined.0223 + drop + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|0224 + end + end + i32.const 1 + end + br_if $folding-inner14 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 15924 + i32.lt_s + br_if $folding-inner23 + global.get $~lib/memory/__stack_pointer + local.tee $0 + i64.const 0 + i64.store + local.get $0 + i32.const 3 + call $~lib/typedarray/Int64Array#constructor + local.tee $3 + i32.store + local.get $3 + i32.const 0 + i64.const 2 + call $~lib/typedarray/Int64Array#__set + local.get $3 + i32.const 1 + i64.const 4 + call $~lib/typedarray/Int64Array#__set + local.get $3 + i32.const 2 + i64.const 6 + call $~lib/typedarray/Int64Array#__set + global.get $~lib/memory/__stack_pointer + i32.const 6160 + i32.store offset=4 + i32.const 0 + local.set $1 + block $~lib/typedarray/EVERY<~lib/typedarray/Int64Array,i64>|inlined.0 (result i32) + local.get $3 + i32.load offset=4 + local.set $2 + local.get $3 + i32.load offset=8 + i32.const 3 + i32.shr_u + local.set $0 + loop $for-loop|0226 + local.get $0 + local.get $1 + i32.gt_s + if + local.get $2 + local.get $1 + i32.const 3 + i32.shl + i32.add + i64.load + local.set $10 + i32.const 3 + global.set $~argumentsLength i32.const 0 - i32.const 1568 - i32.const 346 + local.get $10 + local.get $1 + local.get $3 + i32.const 6160 + i32.load + call_indirect $0 (type $i64_i32_i32_=>_i32) + i32.eqz + br_if $~lib/typedarray/EVERY<~lib/typedarray/Int64Array,i64>|inlined.0 + drop + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|0226 + end + end + i32.const 1 + end + i32.eqz + br_if $folding-inner13 + global.get $~lib/memory/__stack_pointer + i32.const 6192 + i32.store offset=4 + i32.const 0 + local.set $1 + block $~lib/typedarray/EVERY<~lib/typedarray/Int64Array,i64>|inlined.0228 (result i32) + local.get $3 + i32.load offset=4 + local.set $2 + local.get $3 + i32.load offset=8 + i32.const 3 + i32.shr_u + local.set $0 + loop $for-loop|0229 + local.get $0 + local.get $1 + i32.gt_s + if + local.get $2 + local.get $1 + i32.const 3 + i32.shl + i32.add + i64.load + local.set $10 + i32.const 3 + global.set $~argumentsLength + i32.const 0 + local.get $10 + local.get $1 + local.get $3 + i32.const 6192 + i32.load + call_indirect $0 (type $i64_i32_i32_=>_i32) + i32.eqz + br_if $~lib/typedarray/EVERY<~lib/typedarray/Int64Array,i64>|inlined.0228 + drop + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|0229 + end + end + i32.const 1 + end + br_if $folding-inner14 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 15924 + i32.lt_s + br_if $folding-inner23 + global.get $~lib/memory/__stack_pointer + local.tee $0 + i64.const 0 + i64.store + local.get $0 + i32.const 3 + call $~lib/typedarray/Uint64Array#constructor + local.tee $3 + i32.store + local.get $3 + i32.const 0 + i64.const 2 + call $~lib/typedarray/Uint64Array#__set + local.get $3 + i32.const 1 + i64.const 4 + call $~lib/typedarray/Uint64Array#__set + local.get $3 + i32.const 2 + i64.const 6 + call $~lib/typedarray/Uint64Array#__set + global.get $~lib/memory/__stack_pointer + i32.const 6224 + i32.store offset=4 + i32.const 0 + local.set $1 + block $~lib/typedarray/EVERY<~lib/typedarray/Uint64Array,u64>|inlined.0 (result i32) + local.get $3 + i32.load offset=4 + local.set $2 + local.get $3 + i32.load offset=8 + i32.const 3 + i32.shr_u + local.set $0 + loop $for-loop|0231 + local.get $0 + local.get $1 + i32.gt_s + if + local.get $2 + local.get $1 + i32.const 3 + i32.shl + i32.add + i64.load + local.set $10 + i32.const 3 + global.set $~argumentsLength + i32.const 0 + local.get $10 + local.get $1 + local.get $3 + i32.const 6224 + i32.load + call_indirect $0 (type $i64_i32_i32_=>_i32) + i32.eqz + br_if $~lib/typedarray/EVERY<~lib/typedarray/Uint64Array,u64>|inlined.0 + drop + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|0231 + end + end + i32.const 1 + end + i32.eqz + br_if $folding-inner13 + global.get $~lib/memory/__stack_pointer + i32.const 6256 + i32.store offset=4 + i32.const 0 + local.set $1 + block $~lib/typedarray/EVERY<~lib/typedarray/Uint64Array,u64>|inlined.0233 (result i32) + local.get $3 + i32.load offset=4 + local.set $2 + local.get $3 + i32.load offset=8 + i32.const 3 + i32.shr_u + local.set $0 + loop $for-loop|0234 + local.get $0 + local.get $1 + i32.gt_s + if + local.get $2 + local.get $1 + i32.const 3 + i32.shl + i32.add + i64.load + local.set $10 + i32.const 3 + global.set $~argumentsLength + i32.const 0 + local.get $10 + local.get $1 + local.get $3 + i32.const 6256 + i32.load + call_indirect $0 (type $i64_i32_i32_=>_i32) + i32.eqz + br_if $~lib/typedarray/EVERY<~lib/typedarray/Uint64Array,u64>|inlined.0233 + drop + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|0234 + end + end + i32.const 1 + end + br_if $folding-inner14 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 15924 + i32.lt_s + br_if $folding-inner23 + global.get $~lib/memory/__stack_pointer + local.tee $0 + i64.const 0 + i64.store + local.get $0 + i32.const 3 + call $~lib/typedarray/Float32Array#constructor + local.tee $3 + i32.store + local.get $3 + i32.const 0 + f32.const 2 + call $~lib/typedarray/Float32Array#__set + local.get $3 + i32.const 1 + f32.const 4 + call $~lib/typedarray/Float32Array#__set + local.get $3 + i32.const 2 + f32.const 6 + call $~lib/typedarray/Float32Array#__set + global.get $~lib/memory/__stack_pointer + i32.const 6288 + i32.store offset=4 + i32.const 0 + local.set $1 + block $~lib/typedarray/EVERY<~lib/typedarray/Float32Array,f32>|inlined.0 (result i32) + local.get $3 + i32.load offset=4 + local.set $2 + local.get $3 + i32.load offset=8 + i32.const 2 + i32.shr_u + local.set $0 + loop $for-loop|0236 + local.get $0 + local.get $1 + i32.gt_s + if + local.get $2 + local.get $1 + i32.const 2 + i32.shl + i32.add + f32.load + local.set $11 + i32.const 3 + global.set $~argumentsLength + i32.const 0 + local.get $11 + local.get $1 + local.get $3 + i32.const 6288 + i32.load + call_indirect $0 (type $f32_i32_i32_=>_i32) + i32.eqz + br_if $~lib/typedarray/EVERY<~lib/typedarray/Float32Array,f32>|inlined.0 + drop + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|0236 + end + end + i32.const 1 + end + i32.eqz + br_if $folding-inner13 + global.get $~lib/memory/__stack_pointer + i32.const 6320 + i32.store offset=4 + i32.const 0 + local.set $1 + block $~lib/typedarray/EVERY<~lib/typedarray/Float32Array,f32>|inlined.0238 (result i32) + local.get $3 + i32.load offset=4 + local.set $2 + local.get $3 + i32.load offset=8 + i32.const 2 + i32.shr_u + local.set $0 + loop $for-loop|0239 + local.get $0 + local.get $1 + i32.gt_s + if + local.get $2 + local.get $1 + i32.const 2 + i32.shl + i32.add + f32.load + local.set $11 + i32.const 3 + global.set $~argumentsLength + i32.const 0 + local.get $11 + local.get $1 + local.get $3 + i32.const 6320 + i32.load + call_indirect $0 (type $f32_i32_i32_=>_i32) + i32.eqz + br_if $~lib/typedarray/EVERY<~lib/typedarray/Float32Array,f32>|inlined.0238 + drop + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|0239 + end + end + i32.const 1 + end + br_if $folding-inner14 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 15924 + i32.lt_s + br_if $folding-inner23 + global.get $~lib/memory/__stack_pointer + local.tee $0 + i64.const 0 + i64.store + local.get $0 + i32.const 3 + call $~lib/typedarray/Float64Array#constructor + local.tee $3 + i32.store + local.get $3 + i32.const 0 + f64.const 2 + call $~lib/typedarray/Float64Array#__set + local.get $3 + i32.const 1 + f64.const 4 + call $~lib/typedarray/Float64Array#__set + local.get $3 + i32.const 2 + f64.const 6 + call $~lib/typedarray/Float64Array#__set + global.get $~lib/memory/__stack_pointer + i32.const 6352 + i32.store offset=4 + i32.const 0 + local.set $1 + block $~lib/typedarray/EVERY<~lib/typedarray/Float64Array,f64>|inlined.0 (result i32) + local.get $3 + i32.load offset=4 + local.set $2 + local.get $3 + i32.load offset=8 + i32.const 3 + i32.shr_u + local.set $0 + loop $for-loop|0241 + local.get $0 + local.get $1 + i32.gt_s + if + local.get $2 + local.get $1 + i32.const 3 + i32.shl + i32.add + f64.load + local.set $12 + i32.const 3 + global.set $~argumentsLength + i32.const 0 + local.get $12 + local.get $1 + local.get $3 + i32.const 6352 + i32.load + call_indirect $0 (type $f64_i32_i32_=>_i32) + i32.eqz + br_if $~lib/typedarray/EVERY<~lib/typedarray/Float64Array,f64>|inlined.0 + drop + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|0241 + end + end + i32.const 1 + end + i32.eqz + br_if $folding-inner13 + global.get $~lib/memory/__stack_pointer + i32.const 6384 + i32.store offset=4 + i32.const 0 + local.set $1 + block $~lib/typedarray/EVERY<~lib/typedarray/Float64Array,f64>|inlined.0243 (result i32) + local.get $3 + i32.load offset=4 + local.set $2 + local.get $3 + i32.load offset=8 + i32.const 3 + i32.shr_u + local.set $0 + loop $for-loop|0244 + local.get $0 + local.get $1 + i32.gt_s + if + local.get $2 + local.get $1 + i32.const 3 + i32.shl + i32.add + f64.load + local.set $12 + i32.const 3 + global.set $~argumentsLength + i32.const 0 + local.get $12 + local.get $1 + local.get $3 + i32.const 6384 + i32.load + call_indirect $0 (type $f64_i32_i32_=>_i32) + i32.eqz + br_if $~lib/typedarray/EVERY<~lib/typedarray/Float64Array,f64>|inlined.0243 + drop + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|0244 + end + end + i32.const 1 + end + br_if $folding-inner14 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 15924 + i32.lt_s + br_if $folding-inner23 + global.get $~lib/memory/__stack_pointer + local.tee $0 + i64.const 0 + i64.store + local.get $0 + i32.const 0 + i32.store offset=8 + i32.const 0 + global.set $std/typedarray/forEachCallCount + local.get $0 + i32.const 3 + call $~lib/typedarray/Int8Array#constructor + local.tee $3 + i32.store + local.get $3 + global.set $std/typedarray/forEachSelf + global.get $~lib/memory/__stack_pointer + i32.const 6448 + i32.store offset=4 + local.get $3 + i32.const 0 + i32.const 6448 + i32.const 0 + call $~lib/array/Array#__get + i32.extend8_s + call $~lib/typedarray/Int8Array#__set + global.get $~lib/memory/__stack_pointer + i32.const 6448 + i32.store offset=4 + local.get $3 + i32.const 1 + i32.const 6448 + i32.const 1 + call $~lib/array/Array#__get + i32.extend8_s + call $~lib/typedarray/Int8Array#__set + global.get $~lib/memory/__stack_pointer + i32.const 6448 + i32.store offset=4 + local.get $3 + i32.const 2 + i32.const 6448 + i32.const 2 + call $~lib/array/Array#__get + i32.extend8_s + call $~lib/typedarray/Int8Array#__set + global.get $~lib/memory/__stack_pointer + i32.const 6496 + i32.store offset=8 + i32.const 0 + local.set $1 + local.get $3 + i32.load offset=4 + local.set $4 + local.get $3 + i32.load offset=8 + local.set $2 + loop $for-loop|043 + local.get $1 + local.get $2 + i32.lt_s + if + local.get $1 + local.get $4 + i32.add + i32.load8_s + i32.const 3 + global.set $~argumentsLength + local.get $1 + local.get $3 + i32.const 6496 + i32.load + call_indirect $0 (type $i32_i32_i32_=>_none) + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|043 + end + end + global.get $std/typedarray/forEachCallCount + i32.const 3 + i32.ne + br_if $folding-inner15 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 15924 + i32.lt_s + br_if $folding-inner23 + global.get $~lib/memory/__stack_pointer + local.tee $0 + i64.const 0 + i64.store + local.get $0 + i32.const 0 + i32.store offset=8 + i32.const 0 + global.set $std/typedarray/forEachCallCount + local.get $0 + i32.const 3 + call $~lib/typedarray/Uint8Array#constructor + local.tee $3 + i32.store + local.get $3 + global.set $std/typedarray/forEachSelf + global.get $~lib/memory/__stack_pointer + i32.const 6448 + i32.store offset=4 + local.get $3 + i32.const 0 + i32.const 6448 + i32.const 0 + call $~lib/array/Array#__get + i32.const 255 + i32.and + call $~lib/typedarray/Uint8Array#__set + global.get $~lib/memory/__stack_pointer + i32.const 6448 + i32.store offset=4 + local.get $3 + i32.const 1 + i32.const 6448 + i32.const 1 + call $~lib/array/Array#__get + i32.const 255 + i32.and + call $~lib/typedarray/Uint8Array#__set + global.get $~lib/memory/__stack_pointer + i32.const 6448 + i32.store offset=4 + local.get $3 + i32.const 2 + i32.const 6448 + i32.const 2 + call $~lib/array/Array#__get + i32.const 255 + i32.and + call $~lib/typedarray/Uint8Array#__set + global.get $~lib/memory/__stack_pointer + i32.const 6528 + i32.store offset=8 + i32.const 0 + local.set $1 + local.get $3 + i32.load offset=4 + local.set $4 + local.get $3 + i32.load offset=8 + local.set $2 + loop $for-loop|0247 + local.get $1 + local.get $2 + i32.lt_s + if + local.get $1 + local.get $4 + i32.add + i32.load8_u + i32.const 3 + global.set $~argumentsLength + local.get $1 + local.get $3 + i32.const 6528 + i32.load + call_indirect $0 (type $i32_i32_i32_=>_none) + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|0247 + end + end + global.get $std/typedarray/forEachCallCount + i32.const 3 + i32.ne + br_if $folding-inner15 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 15924 + i32.lt_s + br_if $folding-inner23 + global.get $~lib/memory/__stack_pointer + local.tee $0 + i64.const 0 + i64.store + local.get $0 + i32.const 0 + i32.store offset=8 + i32.const 0 + global.set $std/typedarray/forEachCallCount + local.get $0 + i32.const 3 + call $~lib/typedarray/Uint8ClampedArray#constructor + local.tee $3 + i32.store + local.get $3 + global.set $std/typedarray/forEachSelf + global.get $~lib/memory/__stack_pointer + i32.const 6448 + i32.store offset=4 + local.get $3 + i32.const 0 + i32.const 6448 + i32.const 0 + call $~lib/array/Array#__get + i32.const 255 + i32.and + call $~lib/typedarray/Uint8ClampedArray#__set + global.get $~lib/memory/__stack_pointer + i32.const 6448 + i32.store offset=4 + local.get $3 + i32.const 1 + i32.const 6448 + i32.const 1 + call $~lib/array/Array#__get + i32.const 255 + i32.and + call $~lib/typedarray/Uint8ClampedArray#__set + global.get $~lib/memory/__stack_pointer + i32.const 6448 + i32.store offset=4 + local.get $3 + i32.const 2 + i32.const 6448 + i32.const 2 + call $~lib/array/Array#__get + i32.const 255 + i32.and + call $~lib/typedarray/Uint8ClampedArray#__set + global.get $~lib/memory/__stack_pointer + i32.const 6560 + i32.store offset=8 + i32.const 0 + local.set $1 + local.get $3 + i32.load offset=4 + local.set $4 + local.get $3 + i32.load offset=8 + local.set $2 + loop $for-loop|0250 + local.get $1 + local.get $2 + i32.lt_s + if + local.get $1 + local.get $4 + i32.add + i32.load8_u + i32.const 3 + global.set $~argumentsLength + local.get $1 + local.get $3 + i32.const 6560 + i32.load + call_indirect $0 (type $i32_i32_i32_=>_none) + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|0250 + end + end + global.get $std/typedarray/forEachCallCount + i32.const 3 + i32.ne + br_if $folding-inner15 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 15924 + i32.lt_s + br_if $folding-inner23 + global.get $~lib/memory/__stack_pointer + local.tee $0 + i64.const 0 + i64.store + local.get $0 + i32.const 0 + i32.store offset=8 + i32.const 0 + global.set $std/typedarray/forEachCallCount + local.get $0 + i32.const 3 + call $~lib/typedarray/Int16Array#constructor + local.tee $3 + i32.store + local.get $3 + global.set $std/typedarray/forEachSelf + global.get $~lib/memory/__stack_pointer + i32.const 6448 + i32.store offset=4 + local.get $3 + i32.const 0 + i32.const 6448 + i32.const 0 + call $~lib/array/Array#__get + i32.extend16_s + call $~lib/typedarray/Int16Array#__set + global.get $~lib/memory/__stack_pointer + i32.const 6448 + i32.store offset=4 + local.get $3 + i32.const 1 + i32.const 6448 + i32.const 1 + call $~lib/array/Array#__get + i32.extend16_s + call $~lib/typedarray/Int16Array#__set + global.get $~lib/memory/__stack_pointer + i32.const 6448 + i32.store offset=4 + local.get $3 + i32.const 2 + i32.const 6448 + i32.const 2 + call $~lib/array/Array#__get + i32.extend16_s + call $~lib/typedarray/Int16Array#__set + global.get $~lib/memory/__stack_pointer + i32.const 6592 + i32.store offset=8 + i32.const 0 + local.set $1 + local.get $3 + i32.load offset=4 + local.set $4 + local.get $3 + i32.load offset=8 + i32.const 1 + i32.shr_u + local.set $2 + loop $for-loop|045 + local.get $1 + local.get $2 + i32.lt_s + if + local.get $4 + local.get $1 + i32.const 1 + i32.shl + i32.add + i32.load16_s + i32.const 3 + global.set $~argumentsLength + local.get $1 + local.get $3 + i32.const 6592 + i32.load + call_indirect $0 (type $i32_i32_i32_=>_none) + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|045 + end + end + global.get $std/typedarray/forEachCallCount + i32.const 3 + i32.ne + br_if $folding-inner15 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 15924 + i32.lt_s + br_if $folding-inner23 + global.get $~lib/memory/__stack_pointer + local.tee $0 + i64.const 0 + i64.store + local.get $0 + i32.const 0 + i32.store offset=8 + i32.const 0 + global.set $std/typedarray/forEachCallCount + local.get $0 + i32.const 3 + call $~lib/typedarray/Uint16Array#constructor + local.tee $3 + i32.store + local.get $3 + global.set $std/typedarray/forEachSelf + global.get $~lib/memory/__stack_pointer + i32.const 6448 + i32.store offset=4 + local.get $3 + i32.const 0 + i32.const 6448 + i32.const 0 + call $~lib/array/Array#__get + i32.const 65535 + i32.and + call $~lib/typedarray/Uint16Array#__set + global.get $~lib/memory/__stack_pointer + i32.const 6448 + i32.store offset=4 + local.get $3 + i32.const 1 + i32.const 6448 + i32.const 1 + call $~lib/array/Array#__get + i32.const 65535 + i32.and + call $~lib/typedarray/Uint16Array#__set + global.get $~lib/memory/__stack_pointer + i32.const 6448 + i32.store offset=4 + local.get $3 + i32.const 2 + i32.const 6448 + i32.const 2 + call $~lib/array/Array#__get + i32.const 65535 + i32.and + call $~lib/typedarray/Uint16Array#__set + global.get $~lib/memory/__stack_pointer + i32.const 6624 + i32.store offset=8 + i32.const 0 + local.set $1 + local.get $3 + i32.load offset=4 + local.set $4 + local.get $3 + i32.load offset=8 + i32.const 1 + i32.shr_u + local.set $2 + loop $for-loop|047 + local.get $1 + local.get $2 + i32.lt_s + if + local.get $4 + local.get $1 + i32.const 1 + i32.shl + i32.add + i32.load16_u + i32.const 3 + global.set $~argumentsLength + local.get $1 + local.get $3 + i32.const 6624 + i32.load + call_indirect $0 (type $i32_i32_i32_=>_none) + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|047 + end + end + global.get $std/typedarray/forEachCallCount + i32.const 3 + i32.ne + br_if $folding-inner15 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 15924 + i32.lt_s + br_if $folding-inner23 + global.get $~lib/memory/__stack_pointer + local.tee $0 + i64.const 0 + i64.store + local.get $0 + i32.const 0 + i32.store offset=8 + i32.const 0 + global.set $std/typedarray/forEachCallCount + local.get $0 + i32.const 3 + call $~lib/typedarray/Int32Array#constructor + local.tee $3 + i32.store + local.get $3 + global.set $std/typedarray/forEachSelf + global.get $~lib/memory/__stack_pointer + i32.const 6448 + i32.store offset=4 + local.get $3 + i32.const 0 + i32.const 6448 + i32.const 0 + call $~lib/array/Array#__get + call $~lib/typedarray/Int32Array#__set + global.get $~lib/memory/__stack_pointer + i32.const 6448 + i32.store offset=4 + local.get $3 + i32.const 1 + i32.const 6448 + i32.const 1 + call $~lib/array/Array#__get + call $~lib/typedarray/Int32Array#__set + global.get $~lib/memory/__stack_pointer + i32.const 6448 + i32.store offset=4 + local.get $3 + i32.const 2 + i32.const 6448 + i32.const 2 + call $~lib/array/Array#__get + call $~lib/typedarray/Int32Array#__set + global.get $~lib/memory/__stack_pointer + i32.const 6656 + i32.store offset=8 + i32.const 0 + local.set $1 + local.get $3 + i32.load offset=4 + local.set $4 + local.get $3 + i32.load offset=8 + i32.const 2 + i32.shr_u + local.set $2 + loop $for-loop|049 + local.get $1 + local.get $2 + i32.lt_s + if + local.get $4 + local.get $1 + i32.const 2 + i32.shl + i32.add + i32.load + i32.const 3 + global.set $~argumentsLength + local.get $1 + local.get $3 + i32.const 6656 + i32.load + call_indirect $0 (type $i32_i32_i32_=>_none) + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|049 + end + end + global.get $std/typedarray/forEachCallCount + i32.const 3 + i32.ne + br_if $folding-inner15 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 15924 + i32.lt_s + br_if $folding-inner23 + global.get $~lib/memory/__stack_pointer + local.tee $0 + i64.const 0 + i64.store + local.get $0 + i32.const 0 + i32.store offset=8 + i32.const 0 + global.set $std/typedarray/forEachCallCount + local.get $0 + i32.const 3 + call $~lib/typedarray/Uint32Array#constructor + local.tee $3 + i32.store + local.get $3 + global.set $std/typedarray/forEachSelf + global.get $~lib/memory/__stack_pointer + i32.const 6448 + i32.store offset=4 + local.get $3 + i32.const 0 + i32.const 6448 + i32.const 0 + call $~lib/array/Array#__get + call $~lib/typedarray/Uint32Array#__set + global.get $~lib/memory/__stack_pointer + i32.const 6448 + i32.store offset=4 + local.get $3 + i32.const 1 + i32.const 6448 + i32.const 1 + call $~lib/array/Array#__get + call $~lib/typedarray/Uint32Array#__set + global.get $~lib/memory/__stack_pointer + i32.const 6448 + i32.store offset=4 + local.get $3 + i32.const 2 + i32.const 6448 + i32.const 2 + call $~lib/array/Array#__get + call $~lib/typedarray/Uint32Array#__set + global.get $~lib/memory/__stack_pointer + i32.const 6688 + i32.store offset=8 + i32.const 0 + local.set $1 + local.get $3 + i32.load offset=4 + local.set $4 + local.get $3 + i32.load offset=8 + i32.const 2 + i32.shr_u + local.set $2 + loop $for-loop|051 + local.get $1 + local.get $2 + i32.lt_s + if + local.get $4 + local.get $1 + i32.const 2 + i32.shl + i32.add + i32.load + i32.const 3 + global.set $~argumentsLength + local.get $1 + local.get $3 + i32.const 6688 + i32.load + call_indirect $0 (type $i32_i32_i32_=>_none) + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|051 + end + end + global.get $std/typedarray/forEachCallCount + i32.const 3 + i32.ne + br_if $folding-inner15 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 15924 + i32.lt_s + br_if $folding-inner23 + global.get $~lib/memory/__stack_pointer + local.tee $0 + i64.const 0 + i64.store + local.get $0 + i32.const 0 + i32.store offset=8 + i32.const 0 + global.set $std/typedarray/forEachCallCount + local.get $0 + i32.const 3 + call $~lib/typedarray/Int64Array#constructor + local.tee $4 + i32.store + local.get $4 + global.set $std/typedarray/forEachSelf + global.get $~lib/memory/__stack_pointer + i32.const 6448 + i32.store offset=4 + local.get $4 + i32.const 0 + i32.const 6448 + i32.const 0 + call $~lib/array/Array#__get + i64.extend_i32_s + call $~lib/typedarray/Int64Array#__set + global.get $~lib/memory/__stack_pointer + i32.const 6448 + i32.store offset=4 + local.get $4 + i32.const 1 + i32.const 6448 + i32.const 1 + call $~lib/array/Array#__get + i64.extend_i32_s + call $~lib/typedarray/Int64Array#__set + global.get $~lib/memory/__stack_pointer + i32.const 6448 + i32.store offset=4 + local.get $4 + i32.const 2 + i32.const 6448 + i32.const 2 + call $~lib/array/Array#__get + i64.extend_i32_s + call $~lib/typedarray/Int64Array#__set + global.get $~lib/memory/__stack_pointer + i32.const 6720 + i32.store offset=8 + i32.const 0 + local.set $1 + local.get $4 + i32.load offset=4 + local.set $2 + local.get $4 + i32.load offset=8 + i32.const 3 + i32.shr_u + local.set $0 + loop $for-loop|053256 + local.get $0 + local.get $1 + i32.gt_s + if + local.get $2 + local.get $1 + i32.const 3 + i32.shl + i32.add + i64.load + i32.const 3 + global.set $~argumentsLength + local.get $1 + local.get $4 + i32.const 6720 + i32.load + call_indirect $0 (type $i64_i32_i32_=>_none) + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|053256 + end + end + global.get $std/typedarray/forEachCallCount + i32.const 3 + i32.ne + br_if $folding-inner15 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 15924 + i32.lt_s + br_if $folding-inner23 + global.get $~lib/memory/__stack_pointer + local.tee $0 + i64.const 0 + i64.store + local.get $0 + i32.const 0 + i32.store offset=8 + i32.const 0 + global.set $std/typedarray/forEachCallCount + local.get $0 + i32.const 3 + call $~lib/typedarray/Uint64Array#constructor + local.tee $4 + i32.store + local.get $4 + global.set $std/typedarray/forEachSelf + global.get $~lib/memory/__stack_pointer + i32.const 6448 + i32.store offset=4 + local.get $4 + i32.const 0 + i32.const 6448 + i32.const 0 + call $~lib/array/Array#__get + i64.extend_i32_s + call $~lib/typedarray/Uint64Array#__set + global.get $~lib/memory/__stack_pointer + i32.const 6448 + i32.store offset=4 + local.get $4 + i32.const 1 + i32.const 6448 + i32.const 1 + call $~lib/array/Array#__get + i64.extend_i32_s + call $~lib/typedarray/Uint64Array#__set + global.get $~lib/memory/__stack_pointer + i32.const 6448 + i32.store offset=4 + local.get $4 + i32.const 2 + i32.const 6448 + i32.const 2 + call $~lib/array/Array#__get + i64.extend_i32_s + call $~lib/typedarray/Uint64Array#__set + global.get $~lib/memory/__stack_pointer + i32.const 6752 + i32.store offset=8 + i32.const 0 + local.set $1 + local.get $4 + i32.load offset=4 + local.set $2 + local.get $4 + i32.load offset=8 + i32.const 3 + i32.shr_u + local.set $0 + loop $for-loop|055258 + local.get $0 + local.get $1 + i32.gt_s + if + local.get $2 + local.get $1 + i32.const 3 + i32.shl + i32.add + i64.load + i32.const 3 + global.set $~argumentsLength + local.get $1 + local.get $4 + i32.const 6752 + i32.load + call_indirect $0 (type $i64_i32_i32_=>_none) + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|055258 + end + end + global.get $std/typedarray/forEachCallCount + i32.const 3 + i32.ne + br_if $folding-inner15 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 15924 + i32.lt_s + br_if $folding-inner23 + global.get $~lib/memory/__stack_pointer + local.tee $0 + i64.const 0 + i64.store + local.get $0 + i32.const 0 + i32.store offset=8 + i32.const 0 + global.set $std/typedarray/forEachCallCount + local.get $0 + i32.const 3 + call $~lib/typedarray/Float32Array#constructor + local.tee $4 + i32.store + local.get $4 + global.set $std/typedarray/forEachSelf + global.get $~lib/memory/__stack_pointer + i32.const 6448 + i32.store offset=4 + local.get $4 + i32.const 0 + i32.const 6448 + i32.const 0 + call $~lib/array/Array#__get + f32.convert_i32_s + call $~lib/typedarray/Float32Array#__set + global.get $~lib/memory/__stack_pointer + i32.const 6448 + i32.store offset=4 + local.get $4 + i32.const 1 + i32.const 6448 + i32.const 1 + call $~lib/array/Array#__get + f32.convert_i32_s + call $~lib/typedarray/Float32Array#__set + global.get $~lib/memory/__stack_pointer + i32.const 6448 + i32.store offset=4 + local.get $4 + i32.const 2 + i32.const 6448 + i32.const 2 + call $~lib/array/Array#__get + f32.convert_i32_s + call $~lib/typedarray/Float32Array#__set + global.get $~lib/memory/__stack_pointer + i32.const 6784 + i32.store offset=8 + i32.const 0 + local.set $1 + local.get $4 + i32.load offset=4 + local.set $2 + local.get $4 + i32.load offset=8 + i32.const 2 + i32.shr_u + local.set $0 + loop $for-loop|057260 + local.get $0 + local.get $1 + i32.gt_s + if + local.get $2 + local.get $1 + i32.const 2 + i32.shl + i32.add + f32.load + i32.const 3 + global.set $~argumentsLength + local.get $1 + local.get $4 + i32.const 6784 + i32.load + call_indirect $0 (type $f32_i32_i32_=>_none) + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|057260 + end + end + global.get $std/typedarray/forEachCallCount + i32.const 3 + i32.ne + br_if $folding-inner15 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 15924 + i32.lt_s + br_if $folding-inner23 + global.get $~lib/memory/__stack_pointer + local.tee $0 + i64.const 0 + i64.store + local.get $0 + i32.const 0 + i32.store offset=8 + i32.const 0 + global.set $std/typedarray/forEachCallCount + local.get $0 + i32.const 3 + call $~lib/typedarray/Float64Array#constructor + local.tee $4 + i32.store + local.get $4 + global.set $std/typedarray/forEachSelf + global.get $~lib/memory/__stack_pointer + i32.const 6448 + i32.store offset=4 + local.get $4 + i32.const 0 + i32.const 6448 + i32.const 0 + call $~lib/array/Array#__get + f64.convert_i32_s + call $~lib/typedarray/Float64Array#__set + global.get $~lib/memory/__stack_pointer + i32.const 6448 + i32.store offset=4 + local.get $4 + i32.const 1 + i32.const 6448 + i32.const 1 + call $~lib/array/Array#__get + f64.convert_i32_s + call $~lib/typedarray/Float64Array#__set + global.get $~lib/memory/__stack_pointer + i32.const 6448 + i32.store offset=4 + local.get $4 + i32.const 2 + i32.const 6448 + i32.const 2 + call $~lib/array/Array#__get + f64.convert_i32_s + call $~lib/typedarray/Float64Array#__set + global.get $~lib/memory/__stack_pointer + i32.const 6816 + i32.store offset=8 + i32.const 0 + local.set $1 + local.get $4 + i32.load offset=4 + local.set $2 + local.get $4 + i32.load offset=8 + i32.const 3 + i32.shr_u + local.set $0 + loop $for-loop|059262 + local.get $0 + local.get $1 + i32.gt_s + if + local.get $2 + local.get $1 + i32.const 3 + i32.shl + i32.add + f64.load + i32.const 3 + global.set $~argumentsLength + local.get $1 + local.get $4 + i32.const 6816 + i32.load + call_indirect $0 (type $f64_i32_i32_=>_none) + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|059262 + end + end + global.get $std/typedarray/forEachCallCount + i32.const 3 + i32.ne + br_if $folding-inner15 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + call $std/typedarray/testArrayReverse<~lib/typedarray/Int8Array,i8> + call $std/typedarray/testArrayReverse<~lib/typedarray/Uint8Array,u8> + call $std/typedarray/testArrayReverse<~lib/typedarray/Uint8ClampedArray,u8> + call $std/typedarray/testArrayReverse<~lib/typedarray/Int16Array,i16> + call $std/typedarray/testArrayReverse<~lib/typedarray/Uint16Array,u16> + call $std/typedarray/testArrayReverse<~lib/typedarray/Int32Array,i32> + call $std/typedarray/testArrayReverse<~lib/typedarray/Uint32Array,u32> + call $std/typedarray/testArrayReverse<~lib/typedarray/Int64Array,i64> + call $std/typedarray/testArrayReverse<~lib/typedarray/Uint64Array,u64> + call $std/typedarray/testArrayReverse<~lib/typedarray/Float32Array,f32> + call $std/typedarray/testArrayReverse<~lib/typedarray/Float64Array,f64> + call $std/typedarray/testArrayIndexOfAndLastIndexOf<~lib/typedarray/Int8Array,i8> + call $std/typedarray/testArrayIndexOfAndLastIndexOf<~lib/typedarray/Uint8Array,u8> + call $std/typedarray/testArrayIndexOfAndLastIndexOf<~lib/typedarray/Uint8ClampedArray,u8> + call $std/typedarray/testArrayIndexOfAndLastIndexOf<~lib/typedarray/Int16Array,i16> + call $std/typedarray/testArrayIndexOfAndLastIndexOf<~lib/typedarray/Uint16Array,u16> + call $std/typedarray/testArrayIndexOfAndLastIndexOf<~lib/typedarray/Int32Array,i32> + call $std/typedarray/testArrayIndexOfAndLastIndexOf<~lib/typedarray/Uint32Array,u32> + call $std/typedarray/testArrayIndexOfAndLastIndexOf<~lib/typedarray/Int64Array,i64> + call $std/typedarray/testArrayIndexOfAndLastIndexOf<~lib/typedarray/Uint64Array,u64> + call $std/typedarray/testArrayIndexOfAndLastIndexOf<~lib/typedarray/Float32Array,f32> + call $std/typedarray/testArrayIndexOfAndLastIndexOf<~lib/typedarray/Float64Array,f64> + global.get $~lib/memory/__stack_pointer + i32.const 1 + call $~lib/typedarray/Float64Array#constructor + local.tee $3 + i32.store offset=12 + local.get $3 + i32.const 0 + f64.const nan:0x8000000000000 + call $~lib/typedarray/Float64Array#__set + i32.const 0 + local.set $1 + i32.const -1 + local.set $0 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.0 + local.get $3 + i32.load offset=8 + i32.const 3 + i32.shr_u + local.tee $4 + i32.const 0 + local.get $4 + select + i32.eqz + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.0 + local.get $3 + i32.load offset=4 + local.set $2 + loop $while-continue|0 + local.get $1 + local.get $4 + i32.lt_s + if + local.get $2 + local.get $1 + local.tee $0 i32.const 3 - call $~lib/builtins/abort - unreachable + i32.shl + i32.add + f64.load + f64.const nan:0x8000000000000 + f64.eq + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.0 + local.get $0 + i32.const 1 + i32.add + local.set $1 + br $while-continue|0 + end + end + i32.const -1 + local.set $0 + end + local.get $0 + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 630 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + local.set $1 + block $~lib/typedarray/INCLUDES<~lib/typedarray/Float64Array,f64>|inlined.0 (result i32) + i32.const 0 + local.get $3 + i32.load offset=8 + i32.const 3 + i32.shr_u + local.tee $2 + i32.const 0 + local.get $2 + select + i32.eqz + br_if $~lib/typedarray/INCLUDES<~lib/typedarray/Float64Array,f64>|inlined.0 + drop + local.get $3 + i32.load offset=4 + local.set $0 + loop $while-continue|0263 + local.get $1 + local.get $2 + i32.lt_s + if + i32.const 1 + i32.const 1 + local.get $0 + local.get $1 + i32.const 3 + i32.shl + i32.add + f64.load + local.tee $12 + local.get $12 + f64.ne + local.get $12 + f64.const nan:0x8000000000000 + f64.eq + select + br_if $~lib/typedarray/INCLUDES<~lib/typedarray/Float64Array,f64>|inlined.0 + drop + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $while-continue|0263 + end + end + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 631 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 1 + call $~lib/typedarray/Float32Array#constructor + local.tee $3 + i32.store offset=24 + local.get $3 + i32.const 0 + f32.const nan:0x400000 + call $~lib/typedarray/Float32Array#__set + i32.const 0 + local.set $1 + i32.const -1 + local.set $0 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.0 + local.get $3 + i32.load offset=8 + i32.const 2 + i32.shr_u + local.tee $4 + i32.const 0 + local.get $4 + select + i32.eqz + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.0 + local.get $3 + i32.load offset=4 + local.set $2 + loop $while-continue|0264 + local.get $1 + local.get $4 + i32.lt_s + if + local.get $2 + local.get $1 + local.tee $0 + i32.const 2 + i32.shl + i32.add + f32.load + f32.const nan:0x400000 + f32.eq + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.0 + local.get $0 + i32.const 1 + i32.add + local.set $1 + br $while-continue|0264 + end + end + i32.const -1 + local.set $0 + end + local.get $0 + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 636 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + local.set $1 + block $~lib/typedarray/INCLUDES<~lib/typedarray/Float32Array,f32>|inlined.0 (result i32) + i32.const 0 + local.get $3 + i32.load offset=8 + i32.const 2 + i32.shr_u + local.tee $2 + i32.const 0 + local.get $2 + select + i32.eqz + br_if $~lib/typedarray/INCLUDES<~lib/typedarray/Float32Array,f32>|inlined.0 + drop + local.get $3 + i32.load offset=4 + local.set $0 + loop $while-continue|0265 + local.get $1 + local.get $2 + i32.lt_s + if + i32.const 1 + i32.const 1 + local.get $0 + local.get $1 + i32.const 2 + i32.shl + i32.add + f32.load + local.tee $11 + local.get $11 + f32.ne + local.get $11 + f32.const nan:0x400000 + f32.eq + select + br_if $~lib/typedarray/INCLUDES<~lib/typedarray/Float32Array,f32>|inlined.0 + drop + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $while-continue|0265 end - i32.const 0 - i32.const 1568 - i32.const 367 - i32.const 3 - call $~lib/builtins/abort - unreachable end i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 637 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 15924 + i32.lt_s + br_if $folding-inner23 + global.get $~lib/memory/__stack_pointer + local.tee $0 + i64.const 0 + i64.store + local.get $0 + i64.const 0 + i64.store offset=8 + local.get $0 + i32.const 5 + call $~lib/typedarray/Int8Array#constructor + local.tee $2 + i32.store + local.get $2 + i32.const 0 + i32.const 1 + call $~lib/typedarray/Int8Array#__set + local.get $2 + i32.const 1 + i32.const 2 + call $~lib/typedarray/Int8Array#__set + local.get $2 + i32.const 2 + i32.const 3 + call $~lib/typedarray/Int8Array#__set + local.get $2 + i32.const 3 + i32.const 4 + call $~lib/typedarray/Int8Array#__set + local.get $2 + i32.const 4 + i32.const 5 + call $~lib/typedarray/Int8Array#__set + global.get $~lib/memory/__stack_pointer + i32.const 8880 + i32.store offset=12 + local.get $2 + call $~lib/typedarray/Int8Array#join + local.set $1 + global.get $~lib/memory/__stack_pointer + local.tee $0 + local.get $1 + i32.store offset=4 + local.get $0 + i32.const 8912 + i32.store offset=8 + local.get $1 + i32.const 8912 + call $~lib/string/String.__eq + i32.eqz + br_if $folding-inner18 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 15924 + i32.lt_s + br_if $folding-inner23 + global.get $~lib/memory/__stack_pointer + local.tee $0 + i32.const 0 + i32.store + local.get $0 + i32.const 8880 + i32.store + local.get $2 + call $~lib/typedarray/Int8Array#join + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.tee $0 + local.get $1 + i32.store offset=4 + local.get $0 + i32.const 8912 + i32.store offset=8 + local.get $1 + i32.const 8912 + call $~lib/string/String.__eq + i32.eqz + br_if $folding-inner19 + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 15924 + i32.lt_s + br_if $folding-inner23 + global.get $~lib/memory/__stack_pointer + local.tee $0 + i64.const 0 + i64.store + local.get $0 + i64.const 0 + i64.store offset=8 + local.get $0 + i32.const 5 + call $~lib/typedarray/Uint8Array#constructor + local.tee $2 + i32.store + local.get $2 + i32.const 0 + i32.const 1 + call $~lib/typedarray/Uint8Array#__set + local.get $2 + i32.const 1 + i32.const 2 + call $~lib/typedarray/Uint8Array#__set + local.get $2 + i32.const 2 + i32.const 3 + call $~lib/typedarray/Uint8Array#__set + local.get $2 + i32.const 3 + i32.const 4 + call $~lib/typedarray/Uint8Array#__set + local.get $2 + i32.const 4 + i32.const 5 + call $~lib/typedarray/Uint8Array#__set + global.get $~lib/memory/__stack_pointer + i32.const 8880 + i32.store offset=12 + local.get $2 + call $~lib/typedarray/Uint8Array#join + local.set $1 + global.get $~lib/memory/__stack_pointer + local.tee $0 + local.get $1 + i32.store offset=4 + local.get $0 + i32.const 8912 + i32.store offset=8 + local.get $1 + i32.const 8912 + call $~lib/string/String.__eq + i32.eqz + br_if $folding-inner18 + local.get $2 + call $~lib/typedarray/Uint8Array#toString + local.set $1 + global.get $~lib/memory/__stack_pointer + local.tee $0 + local.get $1 + i32.store offset=4 + local.get $0 + i32.const 8912 + i32.store offset=8 + local.get $1 + i32.const 8912 + call $~lib/string/String.__eq + i32.eqz + br_if $folding-inner19 + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 15924 + i32.lt_s + br_if $folding-inner23 + global.get $~lib/memory/__stack_pointer + local.tee $0 + i64.const 0 + i64.store + local.get $0 + i64.const 0 + i64.store offset=8 + local.get $0 + i32.const 5 + call $~lib/typedarray/Uint8ClampedArray#constructor + local.tee $2 + i32.store + local.get $2 + i32.const 0 + i32.const 1 + call $~lib/typedarray/Uint8ClampedArray#__set + local.get $2 + i32.const 1 + i32.const 2 + call $~lib/typedarray/Uint8ClampedArray#__set + local.get $2 + i32.const 2 + i32.const 3 + call $~lib/typedarray/Uint8ClampedArray#__set + local.get $2 + i32.const 3 + i32.const 4 + call $~lib/typedarray/Uint8ClampedArray#__set + local.get $2 + i32.const 4 + i32.const 5 + call $~lib/typedarray/Uint8ClampedArray#__set + global.get $~lib/memory/__stack_pointer + i32.const 8880 + i32.store offset=12 + local.get $2 + call $~lib/typedarray/Uint8Array#join + local.set $1 + global.get $~lib/memory/__stack_pointer + local.tee $0 + local.get $1 + i32.store offset=4 + local.get $0 + i32.const 8912 + i32.store offset=8 + local.get $1 + i32.const 8912 + call $~lib/string/String.__eq + i32.eqz + br_if $folding-inner18 + local.get $2 + call $~lib/typedarray/Uint8Array#toString + local.set $1 + global.get $~lib/memory/__stack_pointer + local.tee $0 + local.get $1 + i32.store offset=4 + local.get $0 + i32.const 8912 + i32.store offset=8 + local.get $1 + i32.const 8912 + call $~lib/string/String.__eq + i32.eqz + br_if $folding-inner19 + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 15924 + i32.lt_s + br_if $folding-inner23 + global.get $~lib/memory/__stack_pointer + local.tee $0 + i64.const 0 + i64.store + local.get $0 + i64.const 0 + i64.store offset=8 + local.get $0 + i32.const 5 + call $~lib/typedarray/Int16Array#constructor + local.tee $2 + i32.store + local.get $2 + i32.const 0 + i32.const 1 + call $~lib/typedarray/Int16Array#__set + local.get $2 + i32.const 1 + i32.const 2 + call $~lib/typedarray/Int16Array#__set + local.get $2 + i32.const 2 + i32.const 3 + call $~lib/typedarray/Int16Array#__set + local.get $2 + i32.const 3 + i32.const 4 + call $~lib/typedarray/Int16Array#__set + local.get $2 + i32.const 4 + i32.const 5 + call $~lib/typedarray/Int16Array#__set + global.get $~lib/memory/__stack_pointer + i32.const 8880 + i32.store offset=12 + local.get $2 + call $~lib/typedarray/Int16Array#join + local.set $1 + global.get $~lib/memory/__stack_pointer + local.tee $0 + local.get $1 + i32.store offset=4 + local.get $0 + i32.const 8912 + i32.store offset=8 + local.get $1 + i32.const 8912 + call $~lib/string/String.__eq + i32.eqz + br_if $folding-inner18 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 15924 + i32.lt_s + br_if $folding-inner23 + global.get $~lib/memory/__stack_pointer + local.tee $0 + i32.const 0 + i32.store + local.get $0 + i32.const 8880 + i32.store + local.get $2 + call $~lib/typedarray/Int16Array#join + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.tee $0 + local.get $1 + i32.store offset=4 + local.get $0 + i32.const 8912 + i32.store offset=8 + local.get $1 + i32.const 8912 + call $~lib/string/String.__eq + i32.eqz + br_if $folding-inner19 + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 15924 + i32.lt_s + br_if $folding-inner23 + global.get $~lib/memory/__stack_pointer + local.tee $0 + i64.const 0 + i64.store + local.get $0 + i64.const 0 + i64.store offset=8 + local.get $0 + i32.const 5 + call $~lib/typedarray/Uint16Array#constructor + local.tee $2 + i32.store + local.get $2 + i32.const 0 + i32.const 1 + call $~lib/typedarray/Uint16Array#__set + local.get $2 + i32.const 1 + i32.const 2 + call $~lib/typedarray/Uint16Array#__set + local.get $2 + i32.const 2 + i32.const 3 + call $~lib/typedarray/Uint16Array#__set + local.get $2 + i32.const 3 + i32.const 4 + call $~lib/typedarray/Uint16Array#__set + local.get $2 + i32.const 4 + i32.const 5 + call $~lib/typedarray/Uint16Array#__set + global.get $~lib/memory/__stack_pointer + i32.const 8880 + i32.store offset=12 + local.get $2 + call $~lib/typedarray/Uint16Array#join + local.set $1 + global.get $~lib/memory/__stack_pointer + local.tee $0 + local.get $1 + i32.store offset=4 + local.get $0 + i32.const 8912 + i32.store offset=8 + local.get $1 + i32.const 8912 + call $~lib/string/String.__eq + i32.eqz + br_if $folding-inner18 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 15924 + i32.lt_s + br_if $folding-inner23 + global.get $~lib/memory/__stack_pointer + local.tee $0 + i32.const 0 + i32.store + local.get $0 + i32.const 8880 + i32.store + local.get $2 + call $~lib/typedarray/Uint16Array#join + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.tee $0 + local.get $1 + i32.store offset=4 + local.get $0 + i32.const 8912 + i32.store offset=8 + local.get $1 + i32.const 8912 + call $~lib/string/String.__eq + i32.eqz + br_if $folding-inner19 + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 15924 + i32.lt_s + br_if $folding-inner23 + global.get $~lib/memory/__stack_pointer + local.tee $0 + i64.const 0 + i64.store + local.get $0 + i64.const 0 + i64.store offset=8 + local.get $0 + i32.const 5 + call $~lib/typedarray/Int32Array#constructor + local.tee $2 + i32.store + local.get $2 + i32.const 0 + i32.const 1 + call $~lib/typedarray/Int32Array#__set + local.get $2 + i32.const 1 + i32.const 2 + call $~lib/typedarray/Int32Array#__set + local.get $2 + i32.const 2 + i32.const 3 + call $~lib/typedarray/Int32Array#__set + local.get $2 + i32.const 3 + i32.const 4 + call $~lib/typedarray/Int32Array#__set + local.get $2 + i32.const 4 + i32.const 5 + call $~lib/typedarray/Int32Array#__set + global.get $~lib/memory/__stack_pointer + i32.const 8880 + i32.store offset=12 + local.get $2 + call $~lib/typedarray/Int32Array#join + local.set $1 + global.get $~lib/memory/__stack_pointer + local.tee $0 + local.get $1 + i32.store offset=4 + local.get $0 + i32.const 8912 + i32.store offset=8 + local.get $1 + i32.const 8912 + call $~lib/string/String.__eq + i32.eqz + br_if $folding-inner18 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 15924 + i32.lt_s + br_if $folding-inner23 + global.get $~lib/memory/__stack_pointer + local.tee $0 + i32.const 0 + i32.store + local.get $0 + i32.const 8880 + i32.store + local.get $2 + call $~lib/typedarray/Int32Array#join + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.tee $0 + local.get $1 + i32.store offset=4 + local.get $0 + i32.const 8912 + i32.store offset=8 + local.get $1 + i32.const 8912 + call $~lib/string/String.__eq + i32.eqz + br_if $folding-inner19 + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 15924 + i32.lt_s + br_if $folding-inner23 + global.get $~lib/memory/__stack_pointer + local.tee $0 + i64.const 0 + i64.store + local.get $0 + i64.const 0 + i64.store offset=8 + local.get $0 + i32.const 5 + call $~lib/typedarray/Uint32Array#constructor + local.tee $2 + i32.store + local.get $2 + i32.const 0 + i32.const 1 + call $~lib/typedarray/Uint32Array#__set + local.get $2 + i32.const 1 + i32.const 2 + call $~lib/typedarray/Uint32Array#__set + local.get $2 + i32.const 2 + i32.const 3 + call $~lib/typedarray/Uint32Array#__set + local.get $2 + i32.const 3 + i32.const 4 + call $~lib/typedarray/Uint32Array#__set + local.get $2 + i32.const 4 + i32.const 5 + call $~lib/typedarray/Uint32Array#__set + global.get $~lib/memory/__stack_pointer + i32.const 8880 + i32.store offset=12 + local.get $2 + call $~lib/typedarray/Uint32Array#join + local.set $1 + global.get $~lib/memory/__stack_pointer + local.tee $0 + local.get $1 + i32.store offset=4 + local.get $0 + i32.const 8912 + i32.store offset=8 + local.get $1 + i32.const 8912 + call $~lib/string/String.__eq + i32.eqz + br_if $folding-inner18 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 15924 + i32.lt_s + br_if $folding-inner23 + global.get $~lib/memory/__stack_pointer + local.tee $0 + i32.const 0 + i32.store + local.get $0 + i32.const 8880 + i32.store + local.get $2 + call $~lib/typedarray/Uint32Array#join + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.tee $0 + local.get $1 + i32.store offset=4 + local.get $0 + i32.const 8912 + i32.store offset=8 + local.get $1 + i32.const 8912 + call $~lib/string/String.__eq + i32.eqz + br_if $folding-inner19 + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 15924 + i32.lt_s + br_if $folding-inner23 + global.get $~lib/memory/__stack_pointer + local.tee $0 + i64.const 0 + i64.store + local.get $0 + i64.const 0 + i64.store offset=8 + local.get $0 + i32.const 5 + call $~lib/typedarray/Int64Array#constructor + local.tee $2 + i32.store + local.get $2 + i32.const 0 + i64.const 1 + call $~lib/typedarray/Int64Array#__set + local.get $2 + i32.const 1 + i64.const 2 + call $~lib/typedarray/Int64Array#__set + local.get $2 + i32.const 2 + i64.const 3 + call $~lib/typedarray/Int64Array#__set + local.get $2 + i32.const 3 + i64.const 4 + call $~lib/typedarray/Int64Array#__set + local.get $2 + i32.const 4 + i64.const 5 + call $~lib/typedarray/Int64Array#__set + global.get $~lib/memory/__stack_pointer + i32.const 8880 + i32.store offset=12 + local.get $2 + call $~lib/typedarray/Int64Array#join + local.set $1 + global.get $~lib/memory/__stack_pointer + local.tee $0 + local.get $1 + i32.store offset=4 + local.get $0 + i32.const 8912 + i32.store offset=8 + local.get $1 + i32.const 8912 + call $~lib/string/String.__eq + i32.eqz + br_if $folding-inner18 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 15924 + i32.lt_s + br_if $folding-inner23 + global.get $~lib/memory/__stack_pointer + local.tee $0 + i32.const 0 + i32.store + local.get $0 + i32.const 8880 + i32.store + local.get $2 + call $~lib/typedarray/Int64Array#join + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.tee $0 + local.get $1 + i32.store offset=4 + local.get $0 + i32.const 8912 + i32.store offset=8 + local.get $1 + i32.const 8912 + call $~lib/string/String.__eq + i32.eqz + br_if $folding-inner19 + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 15924 + i32.lt_s + br_if $folding-inner23 + global.get $~lib/memory/__stack_pointer + local.tee $0 + i64.const 0 + i64.store + local.get $0 + i64.const 0 + i64.store offset=8 + local.get $0 + i32.const 5 + call $~lib/typedarray/Uint64Array#constructor + local.tee $2 + i32.store + local.get $2 + i32.const 0 + i64.const 1 + call $~lib/typedarray/Uint64Array#__set + local.get $2 + i32.const 1 + i64.const 2 + call $~lib/typedarray/Uint64Array#__set + local.get $2 + i32.const 2 + i64.const 3 + call $~lib/typedarray/Uint64Array#__set + local.get $2 + i32.const 3 + i64.const 4 + call $~lib/typedarray/Uint64Array#__set + local.get $2 + i32.const 4 + i64.const 5 + call $~lib/typedarray/Uint64Array#__set + global.get $~lib/memory/__stack_pointer + i32.const 8880 + i32.store offset=12 + local.get $2 + call $~lib/typedarray/Uint64Array#join + local.set $1 + global.get $~lib/memory/__stack_pointer + local.tee $0 + local.get $1 + i32.store offset=4 + local.get $0 + i32.const 8912 + i32.store offset=8 + local.get $1 + i32.const 8912 + call $~lib/string/String.__eq + i32.eqz + br_if $folding-inner18 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 15924 + i32.lt_s + br_if $folding-inner23 + global.get $~lib/memory/__stack_pointer + local.tee $0 + i32.const 0 + i32.store + local.get $0 + i32.const 8880 + i32.store + local.get $2 + call $~lib/typedarray/Uint64Array#join + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.tee $0 + local.get $1 + i32.store offset=4 + local.get $0 + i32.const 8912 + i32.store offset=8 + local.get $1 + i32.const 8912 + call $~lib/string/String.__eq + i32.eqz + br_if $folding-inner19 + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 15924 + i32.lt_s + br_if $folding-inner23 + global.get $~lib/memory/__stack_pointer + local.tee $0 + i64.const 0 + i64.store + local.get $0 + i64.const 0 + i64.store offset=8 + local.get $0 + i32.const 5 + call $~lib/typedarray/Float32Array#constructor + local.tee $2 + i32.store + local.get $2 + i32.const 0 + f32.const 1 + call $~lib/typedarray/Float32Array#__set + local.get $2 + i32.const 1 + f32.const 2 + call $~lib/typedarray/Float32Array#__set + local.get $2 + i32.const 2 + f32.const 3 + call $~lib/typedarray/Float32Array#__set + local.get $2 + i32.const 3 + f32.const 4 + call $~lib/typedarray/Float32Array#__set + local.get $2 + i32.const 4 + f32.const 5 + call $~lib/typedarray/Float32Array#__set + global.get $~lib/memory/__stack_pointer + i32.const 8880 + i32.store offset=12 + local.get $2 + call $~lib/typedarray/Float32Array#join + local.set $1 + global.get $~lib/memory/__stack_pointer + local.tee $0 + local.get $1 + i32.store offset=4 + local.get $0 + i32.const 10096 + i32.store offset=8 + local.get $1 + i32.const 10096 + call $~lib/string/String.__eq + i32.eqz + br_if $folding-inner20 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 15924 + i32.lt_s + br_if $folding-inner23 + global.get $~lib/memory/__stack_pointer + local.tee $0 + i32.const 0 + i32.store + local.get $0 + i32.const 8880 + i32.store + local.get $2 + call $~lib/typedarray/Float32Array#join + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.tee $0 + local.get $1 + i32.store offset=4 + local.get $0 + i32.const 10096 + i32.store offset=8 + local.get $1 + i32.const 10096 + call $~lib/string/String.__eq + i32.eqz + br_if $folding-inner21 + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 15924 + i32.lt_s + br_if $folding-inner23 + global.get $~lib/memory/__stack_pointer + local.tee $0 + i64.const 0 + i64.store + local.get $0 + i64.const 0 + i64.store offset=8 + local.get $0 + i32.const 5 + call $~lib/typedarray/Float64Array#constructor + local.tee $2 + i32.store + local.get $2 + i32.const 0 + f64.const 1 + call $~lib/typedarray/Float64Array#__set + local.get $2 + i32.const 1 + f64.const 2 + call $~lib/typedarray/Float64Array#__set + local.get $2 + i32.const 2 + f64.const 3 + call $~lib/typedarray/Float64Array#__set + local.get $2 + i32.const 3 + f64.const 4 + call $~lib/typedarray/Float64Array#__set + local.get $2 + i32.const 4 + f64.const 5 + call $~lib/typedarray/Float64Array#__set + global.get $~lib/memory/__stack_pointer + i32.const 8880 + i32.store offset=12 + local.get $2 + call $~lib/typedarray/Float64Array#join + local.set $1 + global.get $~lib/memory/__stack_pointer + local.tee $0 + local.get $1 + i32.store offset=4 + local.get $0 + i32.const 10096 + i32.store offset=8 + local.get $1 + i32.const 10096 + call $~lib/string/String.__eq + i32.eqz + br_if $folding-inner20 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 15924 + i32.lt_s + br_if $folding-inner23 + global.get $~lib/memory/__stack_pointer + local.tee $0 + i32.const 0 + i32.store + local.get $0 + i32.const 8880 + i32.store + local.get $2 + call $~lib/typedarray/Float64Array#join + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.tee $0 + local.get $1 + i32.store offset=4 + local.get $0 + i32.const 10096 + i32.store offset=8 + local.get $1 + i32.const 10096 + call $~lib/string/String.__eq + i32.eqz + br_if $folding-inner21 + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 0 + call $~lib/arraybuffer/ArrayBuffer#constructor + local.tee $0 + i32.store offset=12 + i32.const 2 + global.set $~argumentsLength + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.const 0 + call $~lib/typedarray/Uint8Array.wrap@varargs + local.tee $0 + i32.store offset=24 + local.get $0 + i32.load offset=8 + if + i32.const 0 + i32.const 1568 + i32.const 714 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 2 + call $~lib/arraybuffer/ArrayBuffer#constructor + local.tee $0 + i32.store offset=12 + i32.const 2 + global.set $~argumentsLength + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.const 2 + call $~lib/typedarray/Uint8Array.wrap@varargs + local.tee $0 + i32.store offset=24 + local.get $0 + i32.load offset=8 + if + i32.const 0 i32.const 1568 - i32.const 438 + i32.const 718 i32.const 3 call $~lib/builtins/abort unreachable end i32.const 0 - i32.const 1568 - i32.const 440 + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 15924 + i32.lt_s + br_if $folding-inner23 + global.get $~lib/memory/__stack_pointer + local.tee $0 + i64.const 0 + i64.store + local.get $0 + i64.const 0 + i64.store offset=8 + local.get $0 + i32.const 0 + i32.store offset=16 + local.get $0 + i32.const 10224 + i32.store + local.get $0 + i32.const 10236 + i32.load + local.tee $4 + call $~lib/typedarray/Int8Array#constructor + local.tee $5 + i32.store offset=4 + loop $for-loop|00 + local.get $2 + local.get $4 + i32.lt_s + if + local.get $5 + local.get $2 + i32.const 10224 + local.get $2 + call $~lib/array/Array#__get + i32.extend8_s + call $~lib/typedarray/Int8Array#__set + local.get $2 + i32.const 1 + i32.add + local.set $2 + br $for-loop|00 + end + end + global.get $~lib/memory/__stack_pointer + local.tee $1 + local.get $5 + i32.load + local.tee $0 + i32.store offset=8 + local.get $1 + local.get $0 + local.get $5 + i32.load offset=4 + local.get $5 + i32.load + i32.sub + local.get $5 + i32.load offset=8 + local.get $5 + i32.load offset=4 + local.get $5 + i32.load + i32.sub + i32.add + call $~lib/arraybuffer/ArrayBuffer#slice + local.tee $3 + i32.store offset=12 + i32.const 1 + global.set $~argumentsLength + global.get $~lib/memory/__stack_pointer + local.tee $2 + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 15924 + i32.lt_s + br_if $folding-inner23 + global.get $~lib/memory/__stack_pointer + local.tee $1 + i32.const 0 + i32.store + local.get $3 + i32.const 20 + i32.sub + i32.load offset=16 + local.set $0 + local.get $1 + i32.const 12 + i32.const 3 + call $~lib/rt/itcms/__new + local.tee $1 + i32.store + local.get $1 + local.get $3 + i32.store + local.get $1 + local.get $3 + call $~lib/rt/itcms/__link + local.get $1 + local.get $0 + i32.store offset=8 + local.get $1 + local.get $3 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + local.get $1 + i32.store offset=16 + i32.const 0 + local.set $2 + loop $for-loop|1 + local.get $2 + local.get $4 + i32.lt_s + if + local.get $5 + local.get $2 + call $~lib/typedarray/Int8Array#__get + local.get $1 + local.get $2 + call $~lib/typedarray/Int8Array#__get + i32.ne + br_if $folding-inner22 + local.get $2 + i32.const 1 + i32.add + local.set $2 + br $for-loop|1 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 0 + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 15924 + i32.lt_s + br_if $folding-inner23 + global.get $~lib/memory/__stack_pointer + local.tee $0 + i64.const 0 + i64.store + local.get $0 + i64.const 0 + i64.store offset=8 + local.get $0 + i32.const 0 + i32.store offset=16 + local.get $0 + i32.const 10224 + i32.store + local.get $0 + i32.const 10236 + i32.load + local.tee $2 + call $~lib/typedarray/Uint8Array#constructor + local.tee $4 + i32.store offset=4 + loop $for-loop|019 + local.get $1 + local.get $2 + i32.lt_s + if + local.get $4 + local.get $1 + i32.const 10224 + local.get $1 + call $~lib/array/Array#__get + i32.const 255 + i32.and + call $~lib/typedarray/Uint8Array#__set + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|019 + end + end + global.get $~lib/memory/__stack_pointer + local.tee $1 + local.get $4 + i32.load + local.tee $0 + i32.store offset=8 + local.get $1 + local.get $0 + local.get $4 + i32.load offset=4 + local.get $4 + i32.load + i32.sub + local.get $4 + i32.load offset=8 + local.get $4 + i32.load offset=4 + local.get $4 + i32.load + i32.sub + i32.add + call $~lib/arraybuffer/ArrayBuffer#slice + local.tee $0 + i32.store offset=12 + i32.const 1 + global.set $~argumentsLength + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.const 0 + call $~lib/typedarray/Uint8Array.wrap@varargs + local.tee $0 + i32.store offset=16 + i32.const 0 + local.set $1 + loop $for-loop|11 + local.get $1 + local.get $2 + i32.lt_s + if + local.get $4 + local.get $1 + call $~lib/typedarray/Uint8Array#__get + local.get $0 + local.get $1 + call $~lib/typedarray/Uint8Array#__get + i32.ne + br_if $folding-inner22 + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|11 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 0 + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 15924 + i32.lt_s + br_if $folding-inner23 + global.get $~lib/memory/__stack_pointer + local.tee $0 + i64.const 0 + i64.store + local.get $0 + i64.const 0 + i64.store offset=8 + local.get $0 + i32.const 0 + i32.store offset=16 + local.get $0 + i32.const 10224 + i32.store + local.get $0 + i32.const 10236 + i32.load + local.tee $4 + call $~lib/typedarray/Uint8ClampedArray#constructor + local.tee $5 + i32.store offset=4 + loop $for-loop|04 + local.get $2 + local.get $4 + i32.lt_s + if + local.get $5 + local.get $2 + i32.const 10224 + local.get $2 + call $~lib/array/Array#__get + i32.const 255 + i32.and + call $~lib/typedarray/Uint8ClampedArray#__set + local.get $2 + i32.const 1 + i32.add + local.set $2 + br $for-loop|04 + end + end + global.get $~lib/memory/__stack_pointer + local.tee $1 + local.get $5 + i32.load + local.tee $0 + i32.store offset=8 + local.get $1 + local.get $0 + local.get $5 + i32.load offset=4 + local.get $5 + i32.load + i32.sub + local.get $5 + i32.load offset=8 + local.get $5 + i32.load offset=4 + local.get $5 + i32.load + i32.sub + i32.add + call $~lib/arraybuffer/ArrayBuffer#slice + local.tee $3 + i32.store offset=12 + i32.const 1 + global.set $~argumentsLength + global.get $~lib/memory/__stack_pointer + local.tee $2 + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 15924 + i32.lt_s + br_if $folding-inner23 + global.get $~lib/memory/__stack_pointer + local.tee $1 + i32.const 0 + i32.store + local.get $3 + i32.const 20 + i32.sub + i32.load offset=16 + local.set $0 + local.get $1 + i32.const 12 + i32.const 5 + call $~lib/rt/itcms/__new + local.tee $1 + i32.store + local.get $1 + local.get $3 + i32.store + local.get $1 + local.get $3 + call $~lib/rt/itcms/__link + local.get $1 + local.get $0 + i32.store offset=8 + local.get $1 + local.get $3 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + local.get $1 + i32.store offset=16 + i32.const 0 + local.set $2 + loop $for-loop|15 + local.get $2 + local.get $4 + i32.lt_s + if + local.get $5 + local.get $2 + call $~lib/typedarray/Uint8ClampedArray#__get + local.get $1 + local.get $2 + call $~lib/typedarray/Uint8ClampedArray#__get + i32.ne + br_if $folding-inner22 + local.get $2 + i32.const 1 + i32.add + local.set $2 + br $for-loop|15 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.add + global.set $~lib/memory/__stack_pointer + call $std/typedarray/testArrayWrap<~lib/typedarray/Int16Array,i16> + call $std/typedarray/testArrayWrap<~lib/typedarray/Uint16Array,u16> + call $std/typedarray/testArrayWrap<~lib/typedarray/Int32Array,i32> + call $std/typedarray/testArrayWrap<~lib/typedarray/Uint32Array,u32> + call $std/typedarray/testArrayWrap<~lib/typedarray/Int64Array,i64> + call $std/typedarray/testArrayWrap<~lib/typedarray/Uint64Array,u64> + call $std/typedarray/testArrayWrap<~lib/typedarray/Float32Array,f32> + call $std/typedarray/testArrayWrap<~lib/typedarray/Float64Array,f64> + call $std/typedarray/testTypedArraySet<~lib/typedarray/Int8Array> + call $std/typedarray/testTypedArraySet<~lib/typedarray/Uint8Array> + call $std/typedarray/testTypedArraySet<~lib/typedarray/Uint8ClampedArray> + call $std/typedarray/testTypedArraySet<~lib/typedarray/Int16Array> + call $std/typedarray/testTypedArraySet<~lib/typedarray/Uint16Array> + call $std/typedarray/testTypedArraySet<~lib/typedarray/Int32Array> + call $std/typedarray/testTypedArraySet<~lib/typedarray/Uint32Array> + call $std/typedarray/testTypedArraySet<~lib/typedarray/Int64Array> + call $std/typedarray/testTypedArraySet<~lib/typedarray/Uint64Array> + call $std/typedarray/testTypedArraySet<~lib/typedarray/Float32Array> + call $std/typedarray/testTypedArraySet<~lib/typedarray/Float64Array> + global.get $~lib/memory/__stack_pointer + i32.const 10 + call $~lib/typedarray/Uint8ClampedArray#constructor + local.tee $7 + i32.store offset=24 + global.get $~lib/memory/__stack_pointer + i32.const 3 + call $~lib/typedarray/Float32Array#constructor + local.tee $0 + i32.store offset=12 + local.get $0 + i32.const 0 + f32.const 400 + call $~lib/typedarray/Float32Array#__set + local.get $0 + i32.const 1 + f32.const nan:0x400000 + call $~lib/typedarray/Float32Array#__set + local.get $0 + i32.const 2 + f32.const inf + call $~lib/typedarray/Float32Array#__set + global.get $~lib/memory/__stack_pointer + i32.const 4 + call $~lib/typedarray/Int64Array#constructor + local.tee $6 + i32.store offset=8 + local.get $6 + i32.const 0 + i64.const -10 + call $~lib/typedarray/Int64Array#__set + local.get $6 + i32.const 1 + i64.const 100 + call $~lib/typedarray/Int64Array#__set + local.get $6 + i32.const 2 + i64.const 10 + call $~lib/typedarray/Int64Array#__set + local.get $6 + i32.const 3 + i64.const 300 + call $~lib/typedarray/Int64Array#__set + global.get $~lib/memory/__stack_pointer + i32.const 2 + call $~lib/typedarray/Int32Array#constructor + local.tee $5 + i32.store offset=16 + local.get $5 + i32.const 0 + i32.const 300 + call $~lib/typedarray/Int32Array#__set + local.get $5 + i32.const 1 + i32.const -1 + call $~lib/typedarray/Int32Array#__set + i32.const 0 + local.set $9 + local.get $7 + i32.load offset=8 + local.get $0 + i32.load offset=8 + i32.const 2 + i32.shr_u + i32.const 1 + i32.add + i32.lt_s + br_if $folding-inner16 + local.get $7 + i32.load offset=4 + i32.const 1 + i32.add + local.set $4 + local.get $0 + i32.load offset=4 + local.set $2 + local.get $0 + i32.load offset=8 + i32.const 2 + i32.shr_u + local.set $1 + loop $for-loop|0266 + local.get $1 + local.get $9 + i32.gt_s + if + local.get $4 + local.get $9 + i32.add + local.get $2 + local.get $9 + i32.const 2 + i32.shl + i32.add + f32.load + local.tee $11 + local.get $11 + f32.sub + f32.const 0 + f32.eq + if (result i32) + f32.const 0 + f32.const 255 + local.get $11 + f32.min + f32.max + i32.trunc_f32_u + else + i32.const 0 + end + i32.store8 + local.get $9 + i32.const 1 + i32.add + local.set $9 + br $for-loop|0266 + end + end + local.get $7 + local.get $6 + i32.const 4 + call $~lib/typedarray/Uint8ClampedArray#set<~lib/typedarray/Int64Array> + i32.const 0 + local.set $1 + local.get $7 + i32.load offset=8 + local.get $5 + i32.load offset=8 + i32.const 2 + i32.shr_u + i32.const 8 + i32.add + i32.lt_s + br_if $folding-inner16 + local.get $7 + i32.load offset=4 + i32.const 8 + i32.add + local.set $4 + local.get $5 + i32.load offset=4 + local.set $2 + local.get $5 + i32.load offset=8 + i32.const 2 + i32.shr_u + local.set $0 + loop $for-loop|0267 + local.get $0 + local.get $1 + i32.gt_s + if + local.get $1 + local.get $4 + i32.add + local.get $2 + local.get $1 + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $3 + i32.const 31 + i32.shr_s + i32.const -1 + i32.xor + local.get $3 + i32.const 255 + local.get $3 + i32.sub + i32.const 31 + i32.shr_s + i32.or + i32.and + i32.store8 + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|0267 + end + end + i32.const 10 + i32.const 0 + i32.const 63 + i32.const 14576 + call $~lib/rt/__newArray + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $7 + local.get $0 + call $std/typedarray/valuesEqual<~lib/typedarray/Uint8ClampedArray> + global.get $~lib/memory/__stack_pointer + i32.const 4 + call $~lib/typedarray/Uint32Array#constructor + local.tee $0 + i32.store offset=28 + local.get $0 + i32.const 0 + i32.const 1 + call $~lib/typedarray/Uint32Array#__set + local.get $0 + i32.const 1 + i32.const 300 + call $~lib/typedarray/Uint32Array#__set + local.get $0 + i32.const 2 + i32.const 100 + call $~lib/typedarray/Uint32Array#__set + local.get $0 + i32.const 3 + i32.const -1 + call $~lib/typedarray/Uint32Array#__set + global.get $~lib/memory/__stack_pointer + i32.const 4 + call $~lib/typedarray/Int16Array#constructor + local.tee $3 + i32.store + local.get $3 + i32.const 0 + i32.const -10 + call $~lib/typedarray/Int16Array#__set + local.get $3 + i32.const 1 + i32.const 100 + call $~lib/typedarray/Int16Array#__set + local.get $3 + i32.const 2 + i32.const 10 + call $~lib/typedarray/Int16Array#__set + local.get $3 + i32.const 3 + i32.const 300 + call $~lib/typedarray/Int16Array#__set + i32.const 0 + local.set $8 + local.get $7 + i32.load offset=8 + local.get $0 + i32.load offset=8 + i32.const 2 + i32.shr_u + i32.lt_s + br_if $folding-inner16 + local.get $7 + i32.load offset=4 + local.set $4 + local.get $0 + i32.load offset=4 + local.set $2 + local.get $0 + i32.load offset=8 + i32.const 2 + i32.shr_u + local.set $1 + loop $for-loop|0268 + local.get $1 + local.get $8 + i32.gt_s + if + local.get $4 + local.get $8 + i32.add + i32.const 255 + local.get $2 + local.get $8 + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $0 + local.get $0 + i32.const 255 + i32.gt_u + select + i32.store8 + local.get $8 + i32.const 1 + i32.add + local.set $8 + br $for-loop|0268 + end + end + local.get $7 + local.get $3 + i32.const 5 + call $~lib/typedarray/Uint8ClampedArray#set<~lib/typedarray/Int16Array> + i32.const 10 + i32.const 0 + i32.const 63 + i32.const 14608 + call $~lib/rt/__newArray + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $7 + local.get $0 + call $std/typedarray/valuesEqual<~lib/typedarray/Uint8ClampedArray> + call $std/typedarray/testArraySort<~lib/typedarray/Int8Array,i8> + call $std/typedarray/testArraySort<~lib/typedarray/Uint8Array,u8> + call $std/typedarray/testArraySort<~lib/typedarray/Uint8ClampedArray,u8> + call $std/typedarray/testArraySort<~lib/typedarray/Int16Array,i16> + call $std/typedarray/testArraySort<~lib/typedarray/Uint16Array,u16> + call $std/typedarray/testArraySort<~lib/typedarray/Int32Array,i32> + call $std/typedarray/testArraySort<~lib/typedarray/Uint32Array,u32> + call $std/typedarray/testArraySort<~lib/typedarray/Int64Array,i64> + call $std/typedarray/testArraySort<~lib/typedarray/Uint64Array,u64> + call $std/typedarray/testArraySort<~lib/typedarray/Float32Array,f32> + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 15924 + i32.lt_s + br_if $folding-inner23 + global.get $~lib/memory/__stack_pointer + local.tee $0 + i64.const 0 + i64.store + local.get $0 + i32.const 0 + i32.store offset=8 + local.get $0 i32.const 3 - call $~lib/builtins/abort - unreachable + call $~lib/typedarray/Float64Array#constructor + local.tee $0 + i32.store + local.get $0 + i32.const 2 + f64.const 1 + call $~lib/typedarray/Float64Array#__set + local.get $0 + i32.const 1 + f64.const 2 + call $~lib/typedarray/Float64Array#__set + local.get $0 + i32.const 0 + f64.const 3 + call $~lib/typedarray/Float64Array#__set + i32.const 0 + global.set $~argumentsLength + global.get $~lib/memory/__stack_pointer + local.get $0 + call $~lib/typedarray/Float64Array#sort@varargs + local.tee $0 + i32.store offset=4 + local.get $0 + i32.const 0 + call $~lib/typedarray/Float64Array#__get + f64.const 1 + f64.ne + if + i32.const 0 + i32.const 1568 + i32.const 855 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 1 + call $~lib/typedarray/Float64Array#__get + f64.const 2 + f64.ne + if + i32.const 0 + i32.const 1568 + i32.const 856 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 2 + call $~lib/typedarray/Float64Array#__get + f64.const 3 + f64.ne + if + i32.const 0 + i32.const 1568 + i32.const 857 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 15280 + i32.store offset=8 + local.get $0 + i32.const 15280 + call $~lib/typedarray/Float64Array#sort + drop + local.get $0 + i32.const 0 + call $~lib/typedarray/Float64Array#__get + f64.const 3 + f64.ne + if + i32.const 0 + i32.const 1568 + i32.const 859 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 1 + call $~lib/typedarray/Float64Array#__get + f64.const 2 + f64.ne + if + i32.const 0 + i32.const 1568 + i32.const 860 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 2 + call $~lib/typedarray/Float64Array#__get + f64.const 1 + f64.ne + if + i32.const 0 + i32.const 1568 + i32.const 861 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 32308 + global.set $~lib/memory/__stack_pointer + global.get $~lib/rt/itcms/state + i32.const 0 + i32.gt_s + if + loop $while-continue|0269 + global.get $~lib/rt/itcms/state + if + call $~lib/rt/itcms/step + drop + br $while-continue|0269 + end + end + end + call $~lib/rt/itcms/step + drop + loop $while-continue|1 + global.get $~lib/rt/itcms/state + if + call $~lib/rt/itcms/step + drop + br $while-continue|1 + end + end + global.get $~lib/rt/itcms/total + i64.extend_i32_u + i64.const 200 + i64.mul + i64.const 100 + i64.div_u + i32.wrap_i64 + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold + global.get $~lib/memory/__stack_pointer + i32.const 32 + i32.add + global.set $~lib/memory/__stack_pointer + return end i32.const 0 i32.const 1568 - i32.const 461 + i32.const 323 i32.const 3 call $~lib/builtins/abort unreachable end i32.const 0 i32.const 1568 - i32.const 463 + i32.const 344 i32.const 3 call $~lib/builtins/abort unreachable end i32.const 0 i32.const 1568 - i32.const 484 + i32.const 345 i32.const 3 call $~lib/builtins/abort unreachable end i32.const 0 i32.const 1568 - i32.const 486 + i32.const 346 i32.const 3 call $~lib/builtins/abort unreachable end i32.const 0 i32.const 1568 - i32.const 518 + i32.const 367 i32.const 3 call $~lib/builtins/abort unreachable end - i32.const 1360 - i32.const 1632 - i32.const 1865 - i32.const 47 + i32.const 0 + i32.const 1568 + i32.const 388 + i32.const 3 call $~lib/builtins/abort unreachable end i32.const 0 i32.const 1568 - i32.const 388 + i32.const 389 i32.const 3 call $~lib/builtins/abort unreachable end i32.const 0 i32.const 1568 - i32.const 389 + i32.const 390 i32.const 3 call $~lib/builtins/abort unreachable end i32.const 0 i32.const 1568 - i32.const 390 + i32.const 438 i32.const 3 call $~lib/builtins/abort unreachable end i32.const 0 i32.const 1568 - i32.const 652 - i32.const 5 + i32.const 440 + i32.const 3 call $~lib/builtins/abort unreachable end i32.const 0 i32.const 1568 - i32.const 653 - i32.const 5 + i32.const 461 + i32.const 3 call $~lib/builtins/abort unreachable end i32.const 0 i32.const 1568 - i32.const 649 - i32.const 5 + i32.const 463 + i32.const 3 call $~lib/builtins/abort unreachable end i32.const 0 i32.const 1568 - i32.const 650 - i32.const 5 + i32.const 484 + i32.const 3 call $~lib/builtins/abort unreachable end i32.const 0 i32.const 1568 - i32.const 855 + i32.const 486 i32.const 3 call $~lib/builtins/abort unreachable end i32.const 0 i32.const 1568 - i32.const 856 + i32.const 518 i32.const 3 call $~lib/builtins/abort unreachable end - i32.const 0 - i32.const 1568 - i32.const 857 - i32.const 3 + i32.const 1360 + i32.const 1632 + i32.const 1865 + i32.const 47 call $~lib/builtins/abort unreachable end i32.const 0 i32.const 1568 - i32.const 859 - i32.const 3 + i32.const 652 + i32.const 5 call $~lib/builtins/abort unreachable end i32.const 0 i32.const 1568 - i32.const 860 - i32.const 3 + i32.const 653 + i32.const 5 call $~lib/builtins/abort unreachable end i32.const 0 i32.const 1568 - i32.const 861 - i32.const 3 + i32.const 649 + i32.const 5 call $~lib/builtins/abort unreachable end i32.const 0 i32.const 1568 - i32.const 707 + i32.const 650 i32.const 5 call $~lib/builtins/abort unreachable end - i32.const 32336 - i32.const 32384 - i32.const 1 - i32.const 1 + i32.const 0 + i32.const 1568 + i32.const 707 + i32.const 5 call $~lib/builtins/abort unreachable end - i32.const 1056 - i32.const 1632 - i32.const 1831 - i32.const 9 + i32.const 32336 + i32.const 32384 + i32.const 1 + i32.const 1 call $~lib/builtins/abort unreachable ) @@ -61482,6 +62079,194 @@ global.set $~lib/memory/__stack_pointer local.get $2 ) + (func $~lib/util/number/itoa64 (param $0 i64) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 15924 + i32.lt_s + if + i32.const 32336 + i32.const 32384 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $0 + i64.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 7296 + return + end + i64.const 0 + local.get $0 + i64.sub + local.get $0 + local.get $0 + i64.const 63 + i64.shr_u + i32.wrap_i64 + local.tee $2 + select + local.tee $0 + i64.const 4294967295 + i64.le_u + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.wrap_i64 + local.tee $3 + local.tee $1 + i32.const 100000 + i32.lt_u + if (result i32) + local.get $1 + i32.const 100 + i32.lt_u + if (result i32) + local.get $1 + i32.const 10 + i32.ge_u + i32.const 1 + i32.add + else + local.get $1 + i32.const 10000 + i32.ge_u + i32.const 3 + i32.add + local.get $1 + i32.const 1000 + i32.ge_u + i32.add + end + else + local.get $1 + i32.const 10000000 + i32.lt_u + if (result i32) + local.get $1 + i32.const 1000000 + i32.ge_u + i32.const 6 + i32.add + else + local.get $1 + i32.const 1000000000 + i32.ge_u + i32.const 8 + i32.add + local.get $1 + i32.const 100000000 + i32.ge_u + i32.add + end + end + local.get $2 + i32.add + local.tee $4 + i32.const 1 + i32.shl + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $1 + i32.store + local.get $1 + local.get $3 + local.get $4 + call $~lib/util/number/utoa32_dec_lut + else + global.get $~lib/memory/__stack_pointer + local.get $0 + i64.const 1000000000000000 + i64.lt_u + if (result i32) + local.get $0 + i64.const 1000000000000 + i64.lt_u + if (result i32) + local.get $0 + i64.const 100000000000 + i64.ge_u + i32.const 10 + i32.add + local.get $0 + i64.const 10000000000 + i64.ge_u + i32.add + else + local.get $0 + i64.const 100000000000000 + i64.ge_u + i32.const 13 + i32.add + local.get $0 + i64.const 10000000000000 + i64.ge_u + i32.add + end + else + local.get $0 + i64.const 100000000000000000 + i64.lt_u + if (result i32) + local.get $0 + i64.const 10000000000000000 + i64.ge_u + i32.const 16 + i32.add + else + local.get $0 + i64.const -8446744073709551616 + i64.ge_u + i32.const 18 + i32.add + local.get $0 + i64.const 1000000000000000000 + i64.ge_u + i32.add + end + end + local.get $2 + i32.add + local.tee $3 + i32.const 1 + i32.shl + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $1 + i32.store + local.get $1 + local.get $0 + local.get $3 + call $~lib/util/number/utoa64_dec_lut + end + local.get $2 + if + local.get $1 + i32.const 45 + i32.store16 + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + ) (func $~lib/util/number/dtoa (param $0 f64) (result i32) (local $1 i32) (local $2 i32) diff --git a/tests/compiler/std/uri.optimized.wat b/tests/compiler/std/uri.optimized.wat index b37d772288..a0c3b04c5f 100644 --- a/tests/compiler/std/uri.optimized.wat +++ b/tests/compiler/std/uri.optimized.wat @@ -1,9 +1,9 @@ (module - (type $none_=>_none (func)) (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) + (type $none_=>_none (func)) + (type $i32_i32_=>_none (func (param i32 i32))) (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) (type $i32_=>_none (func (param i32))) - (type $i32_i32_=>_none (func (param i32 i32))) (type $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) (type $none_=>_i32 (func (result i32))) @@ -1146,7 +1146,7 @@ local.get $0 i32.const 4 i32.add - local.tee $0 + local.tee $1 i32.const 20748 i32.ge_u if @@ -1156,20 +1156,20 @@ call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT - local.get $0 + local.get $1 i32.const 4 i32.sub - local.set $1 - local.get $0 + local.set $0 + local.get $1 i32.const 15 i32.and i32.const 1 - local.get $0 + local.get $1 select if (result i32) i32.const 1 else - local.get $1 + local.get $0 i32.load i32.const 1 i32.and @@ -1182,14 +1182,11 @@ call $~lib/builtins/abort unreachable end - local.get $1 - local.tee $0 + local.get $0 + local.get $0 i32.load i32.const 1 i32.or - local.set $1 - local.get $0 - local.get $1 i32.store local.get $0 call $~lib/rt/tlsf/insertBlock @@ -1202,8 +1199,7 @@ local.tee $0 local.get $0 i32.store offset=4 - global.get $~lib/rt/itcms/toSpace - local.tee $0 + local.get $0 local.get $0 i32.store offset=8 i32.const 0 @@ -1343,80 +1339,11 @@ end end ) - (func $~lib/rt/itcms/__new (param $0 i32) (param $1 i32) (result i32) + (func $~lib/rt/tlsf/allocateBlock (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) - (local $5 i32) - (local $6 i32) - local.get $0 - i32.const 1073741804 - i32.ge_u - if - i32.const 1184 - i32.const 1248 - i32.const 260 - i32.const 31 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/rt/itcms/total - global.get $~lib/rt/itcms/threshold - i32.ge_u - if - block $__inlined_func$~lib/rt/itcms/interrupt - i32.const 2048 - local.set $2 - loop $do-continue|0 - local.get $2 - call $~lib/rt/itcms/step - i32.sub - local.set $2 - global.get $~lib/rt/itcms/state - i32.eqz - if - global.get $~lib/rt/itcms/total - i64.extend_i32_u - i64.const 200 - i64.mul - i64.const 100 - i64.div_u - i32.wrap_i64 - i32.const 1024 - i32.add - global.set $~lib/rt/itcms/threshold - br $__inlined_func$~lib/rt/itcms/interrupt - end - local.get $2 - i32.const 0 - i32.gt_s - br_if $do-continue|0 - end - global.get $~lib/rt/itcms/total - local.tee $2 - local.get $2 - global.get $~lib/rt/itcms/threshold - i32.sub - i32.const 1024 - i32.lt_u - i32.const 10 - i32.shl - i32.add - global.set $~lib/rt/itcms/threshold - end - end - local.get $0 - i32.const 16 - i32.add - local.set $2 - global.get $~lib/rt/tlsf/ROOT - i32.eqz - if - call $~lib/rt/tlsf/initialize - end - global.get $~lib/rt/tlsf/ROOT - local.set $3 - local.get $2 + local.get $1 i32.const 1073741820 i32.gt_u if @@ -1427,14 +1354,15 @@ call $~lib/builtins/abort unreachable end - local.get $3 - local.get $2 + local.get $0 + local.tee $2 + local.get $1 i32.const 12 i32.le_u if (result i32) i32.const 12 else - local.get $2 + local.get $1 i32.const 19 i32.add i32.const -16 @@ -1442,19 +1370,19 @@ i32.const 4 i32.sub end - local.tee $2 + local.tee $0 call $~lib/rt/tlsf/searchBlock - local.tee $4 + local.tee $1 i32.eqz if - local.get $2 + local.get $0 i32.const 536870910 i32.lt_u if (result i32) - local.get $2 + local.get $0 i32.const 1 i32.const 27 - local.get $2 + local.get $0 i32.clz i32.sub i32.shl @@ -1462,16 +1390,16 @@ i32.sub i32.add else - local.get $2 + local.get $0 end i32.const 4 memory.size - local.tee $6 + local.tee $1 i32.const 16 i32.shl i32.const 4 i32.sub - local.get $3 + local.get $2 i32.load offset=1568 i32.ne i32.shl @@ -1482,18 +1410,18 @@ i32.and i32.const 16 i32.shr_u - local.set $5 - local.get $6 - local.get $5 - local.get $5 - local.get $6 - i32.lt_s + local.set $3 + local.get $1 + local.get $3 + local.get $1 + local.get $3 + i32.gt_s select memory.grow i32.const 0 i32.lt_s if - local.get $5 + local.get $3 memory.grow i32.const 0 i32.lt_s @@ -1501,18 +1429,18 @@ unreachable end end - local.get $3 - local.get $6 + local.get $2 + local.get $1 i32.const 16 i32.shl memory.size i32.const 16 i32.shl call $~lib/rt/tlsf/addMemory - local.get $3 local.get $2 + local.get $0 call $~lib/rt/tlsf/searchBlock - local.tee $4 + local.tee $1 i32.eqz if i32.const 0 @@ -1523,8 +1451,8 @@ unreachable end end - local.get $2 - local.get $4 + local.get $0 + local.get $1 i32.load i32.const -4 i32.and @@ -1537,13 +1465,13 @@ call $~lib/builtins/abort unreachable end - local.get $3 - local.get $4 + local.get $2 + local.get $1 call $~lib/rt/tlsf/removeBlock - local.get $4 + local.get $1 i32.load - local.set $6 - local.get $2 + local.set $3 + local.get $0 i32.const 4 i32.add i32.const 15 @@ -1556,54 +1484,54 @@ call $~lib/builtins/abort unreachable end - local.get $6 + local.get $3 i32.const -4 i32.and - local.get $2 + local.get $0 i32.sub - local.tee $5 + local.tee $4 i32.const 16 i32.ge_u if - local.get $4 - local.get $2 - local.get $6 + local.get $1 + local.get $0 + local.get $3 i32.const 2 i32.and i32.or i32.store - local.get $2 - local.get $4 + local.get $0 + local.get $1 i32.const 4 i32.add i32.add - local.tee $2 - local.get $5 + local.tee $0 + local.get $4 i32.const 4 i32.sub i32.const 1 i32.or i32.store - local.get $3 local.get $2 + local.get $0 call $~lib/rt/tlsf/insertBlock else - local.get $4 - local.get $6 + local.get $1 + local.get $3 i32.const -2 i32.and i32.store - local.get $4 + local.get $1 i32.const 4 i32.add - local.tee $2 - local.get $4 + local.tee $0 + local.get $1 i32.load i32.const -4 i32.and i32.add - local.get $2 - local.get $4 + local.get $0 + local.get $1 i32.load i32.const -4 i32.and @@ -1613,182 +1541,143 @@ i32.and i32.store end - local.get $4 - local.get $1 - i32.store offset=12 - local.get $4 - local.get $0 - i32.store offset=16 - global.get $~lib/rt/itcms/fromSpace - local.tee $1 - i32.load offset=8 - local.set $2 - local.get $4 local.get $1 - global.get $~lib/rt/itcms/white - i32.or - i32.store offset=4 - local.get $4 - local.get $2 - i32.store offset=8 - local.get $2 - local.get $4 - local.get $2 - i32.load offset=4 - i32.const 3 - i32.and - i32.or - i32.store offset=4 - local.get $1 - local.get $4 - i32.store offset=8 - global.get $~lib/rt/itcms/total - local.get $4 - i32.load - i32.const -4 - i32.and - i32.const 4 - i32.add - i32.add - global.set $~lib/rt/itcms/total - local.get $4 - i32.const 20 - i32.add - local.tee $2 - local.set $3 + ) + (func $~lib/memory/memory.fill (param $0 i32) (param $1 i32) + (local $2 i32) block $~lib/util/memory/memset|inlined.0 - local.get $0 + local.get $1 i32.eqz br_if $~lib/util/memory/memset|inlined.0 - local.get $3 + local.get $0 i32.const 0 i32.store8 local.get $0 - local.get $3 + local.get $1 i32.add - local.tee $1 + local.tee $2 i32.const 1 i32.sub i32.const 0 i32.store8 - local.get $0 + local.get $1 i32.const 2 i32.le_u br_if $~lib/util/memory/memset|inlined.0 - local.get $3 + local.get $0 i32.const 0 i32.store8 offset=1 - local.get $3 + local.get $0 i32.const 0 i32.store8 offset=2 - local.get $1 + local.get $2 i32.const 2 i32.sub i32.const 0 i32.store8 - local.get $1 + local.get $2 i32.const 3 i32.sub i32.const 0 i32.store8 - local.get $0 + local.get $1 i32.const 6 i32.le_u br_if $~lib/util/memory/memset|inlined.0 - local.get $3 + local.get $0 i32.const 0 i32.store8 offset=3 - local.get $1 + local.get $2 i32.const 4 i32.sub i32.const 0 i32.store8 - local.get $0 + local.get $1 i32.const 8 i32.le_u br_if $~lib/util/memory/memset|inlined.0 - local.get $3 + local.get $0 i32.const 0 - local.get $3 + local.get $0 i32.sub i32.const 3 i32.and - local.tee $1 + local.tee $2 i32.add - local.tee $5 + local.tee $0 i32.const 0 i32.store - local.get $5 local.get $0 local.get $1 + local.get $2 i32.sub i32.const -4 i32.and - local.tee $3 + local.tee $2 i32.add - local.tee $0 + local.tee $1 i32.const 4 i32.sub i32.const 0 i32.store - local.get $3 + local.get $2 i32.const 8 i32.le_u br_if $~lib/util/memory/memset|inlined.0 - local.get $5 + local.get $0 i32.const 0 i32.store offset=4 - local.get $5 + local.get $0 i32.const 0 i32.store offset=8 - local.get $0 + local.get $1 i32.const 12 i32.sub i32.const 0 i32.store - local.get $0 + local.get $1 i32.const 8 i32.sub i32.const 0 i32.store - local.get $3 + local.get $2 i32.const 24 i32.le_u br_if $~lib/util/memory/memset|inlined.0 - local.get $5 + local.get $0 i32.const 0 i32.store offset=12 - local.get $5 + local.get $0 i32.const 0 i32.store offset=16 - local.get $5 + local.get $0 i32.const 0 i32.store offset=20 - local.get $5 + local.get $0 i32.const 0 i32.store offset=24 - local.get $0 + local.get $1 i32.const 28 i32.sub i32.const 0 i32.store - local.get $0 + local.get $1 i32.const 24 i32.sub i32.const 0 i32.store - local.get $0 + local.get $1 i32.const 20 i32.sub i32.const 0 i32.store - local.get $0 + local.get $1 i32.const 16 i32.sub i32.const 0 i32.store - local.get $5 - local.get $5 + local.get $0 + local.get $0 i32.const 4 i32.and i32.const 24 @@ -1796,7 +1685,7 @@ local.tee $1 i32.add local.set $0 - local.get $3 + local.get $2 local.get $1 i32.sub local.set $1 @@ -1829,7 +1718,123 @@ end end end + ) + (func $~lib/rt/itcms/__new (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + local.get $0 + i32.const 1073741804 + i32.ge_u + if + i32.const 1184 + i32.const 1248 + i32.const 260 + i32.const 31 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.ge_u + if + block $__inlined_func$~lib/rt/itcms/interrupt + i32.const 2048 + local.set $2 + loop $do-continue|0 + local.get $2 + call $~lib/rt/itcms/step + i32.sub + local.set $2 + global.get $~lib/rt/itcms/state + i32.eqz + if + global.get $~lib/rt/itcms/total + i64.extend_i32_u + i64.const 200 + i64.mul + i64.const 100 + i64.div_u + i32.wrap_i64 + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold + br $__inlined_func$~lib/rt/itcms/interrupt + end + local.get $2 + i32.const 0 + i32.gt_s + br_if $do-continue|0 + end + global.get $~lib/rt/itcms/total + local.tee $2 + local.get $2 + global.get $~lib/rt/itcms/threshold + i32.sub + i32.const 1024 + i32.lt_u + i32.const 10 + i32.shl + i32.add + global.set $~lib/rt/itcms/threshold + end + end + local.get $0 + i32.const 16 + i32.add + local.set $2 + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $2 + call $~lib/rt/tlsf/allocateBlock + local.tee $2 + local.get $1 + i32.store offset=12 + local.get $2 + local.get $0 + i32.store offset=16 + global.get $~lib/rt/itcms/fromSpace + local.tee $3 + i32.load offset=8 + local.set $1 + local.get $2 + local.get $3 + global.get $~lib/rt/itcms/white + i32.or + i32.store offset=4 + local.get $2 + local.get $1 + i32.store offset=8 + local.get $1 + local.get $2 + local.get $1 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + local.get $3 local.get $2 + i32.store offset=8 + global.get $~lib/rt/itcms/total + local.get $2 + i32.load + i32.const -4 + i32.and + i32.const 4 + i32.add + i32.add + global.set $~lib/rt/itcms/total + local.get $2 + i32.const 20 + i32.add + local.tee $1 + local.get $0 + call $~lib/memory/memory.fill + local.get $1 ) (func $~lib/util/memory/memcpy (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) @@ -3307,7 +3312,7 @@ i32.load offset=16 i32.const 1 i32.shr_u - local.tee $4 + local.tee $2 local.get $1 i32.const 20 i32.sub @@ -3321,18 +3326,15 @@ end block $__inlined_func$~lib/util/string/compareImpl (result i32) local.get $0 - local.set $2 - local.get $1 - local.set $3 - local.get $2 + local.tee $3 i32.const 7 i32.and - local.get $3 + local.get $1 i32.const 7 i32.and i32.or i32.const 1 - local.get $4 + local.get $2 local.tee $0 i32.const 4 i32.ge_u @@ -3340,20 +3342,20 @@ i32.eqz if loop $do-continue|0 - local.get $2 - i64.load local.get $3 i64.load + local.get $1 + i64.load i64.eq if - local.get $2 - i32.const 8 - i32.add - local.set $2 local.get $3 i32.const 8 i32.add local.set $3 + local.get $1 + i32.const 8 + i32.add + local.set $1 local.get $0 i32.const 4 i32.sub @@ -3366,33 +3368,33 @@ end loop $while-continue|1 local.get $0 - local.tee $1 + local.tee $2 i32.const 1 i32.sub local.set $0 - local.get $1 + local.get $2 if - local.get $2 - i32.load16_u - local.tee $1 local.get $3 i32.load16_u + local.tee $2 + local.get $1 + i32.load16_u local.tee $4 i32.ne if - local.get $1 + local.get $2 local.get $4 i32.sub br $__inlined_func$~lib/util/string/compareImpl end - local.get $2 - i32.const 2 - i32.add - local.set $2 local.get $3 i32.const 2 i32.add local.set $3 + local.get $1 + i32.const 2 + i32.add + local.set $1 br $while-continue|1 end end diff --git a/tests/compiler/super-inline.optimized.wat b/tests/compiler/super-inline.optimized.wat index b33c391db1..52c55af03c 100644 --- a/tests/compiler/super-inline.optimized.wat +++ b/tests/compiler/super-inline.optimized.wat @@ -1039,7 +1039,7 @@ local.get $0 i32.const 4 i32.add - local.tee $0 + local.tee $1 i32.const 17868 i32.ge_u if @@ -1049,20 +1049,20 @@ call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT - local.get $0 + local.get $1 i32.const 4 i32.sub - local.set $1 - local.get $0 + local.set $0 + local.get $1 i32.const 15 i32.and i32.const 1 - local.get $0 + local.get $1 select if (result i32) i32.const 1 else - local.get $1 + local.get $0 i32.load i32.const 1 i32.and @@ -1075,14 +1075,11 @@ call $~lib/builtins/abort unreachable end - local.get $1 - local.tee $0 + local.get $0 + local.get $0 i32.load i32.const 1 i32.or - local.set $1 - local.get $0 - local.get $1 i32.store local.get $0 call $~lib/rt/tlsf/insertBlock @@ -1095,8 +1092,7 @@ local.tee $0 local.get $0 i32.store offset=4 - global.get $~lib/rt/itcms/toSpace - local.tee $0 + local.get $0 local.get $0 i32.store offset=8 i32.const 0 diff --git a/tests/compiler/templateliteral.optimized.wat b/tests/compiler/templateliteral.optimized.wat index dbe75c87b0..1e6458eb7a 100644 --- a/tests/compiler/templateliteral.optimized.wat +++ b/tests/compiler/templateliteral.optimized.wat @@ -1,10 +1,10 @@ (module - (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) - (type $i32_=>_i32 (func (param i32) (result i32))) - (type $i32_=>_none (func (param i32))) (type $none_=>_none (func)) + (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) + (type $i32_=>_none (func (param i32))) (type $i32_i32_=>_none (func (param i32 i32))) + (type $i32_=>_i32 (func (param i32) (result i32))) (type $f64_=>_i32 (func (param f64) (result i32))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) (type $none_=>_i32 (func (result i32))) @@ -1190,7 +1190,7 @@ local.get $0 i32.const 4 i32.add - local.tee $0 + local.tee $1 i32.const 22028 i32.ge_u if @@ -1200,20 +1200,20 @@ call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT - local.get $0 + local.get $1 i32.const 4 i32.sub - local.set $1 - local.get $0 + local.set $0 + local.get $1 i32.const 15 i32.and i32.const 1 - local.get $0 + local.get $1 select if (result i32) i32.const 1 else - local.get $1 + local.get $0 i32.load i32.const 1 i32.and @@ -1226,14 +1226,11 @@ call $~lib/builtins/abort unreachable end - local.get $1 - local.tee $0 + local.get $0 + local.get $0 i32.load i32.const 1 i32.or - local.set $1 - local.get $0 - local.get $1 i32.store local.get $0 call $~lib/rt/tlsf/insertBlock @@ -1246,8 +1243,7 @@ local.tee $0 local.get $0 i32.store offset=4 - global.get $~lib/rt/itcms/toSpace - local.tee $0 + local.get $0 local.get $0 i32.store offset=8 i32.const 0 @@ -1387,80 +1383,11 @@ end end ) - (func $~lib/rt/itcms/__new (param $0 i32) (param $1 i32) (result i32) + (func $~lib/rt/tlsf/allocateBlock (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) - (local $5 i32) - (local $6 i32) - local.get $0 - i32.const 1073741804 - i32.ge_u - if - i32.const 1392 - i32.const 1184 - i32.const 260 - i32.const 31 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/rt/itcms/total - global.get $~lib/rt/itcms/threshold - i32.ge_u - if - block $__inlined_func$~lib/rt/itcms/interrupt - i32.const 2048 - local.set $2 - loop $do-continue|0 - local.get $2 - call $~lib/rt/itcms/step - i32.sub - local.set $2 - global.get $~lib/rt/itcms/state - i32.eqz - if - global.get $~lib/rt/itcms/total - i64.extend_i32_u - i64.const 200 - i64.mul - i64.const 100 - i64.div_u - i32.wrap_i64 - i32.const 1024 - i32.add - global.set $~lib/rt/itcms/threshold - br $__inlined_func$~lib/rt/itcms/interrupt - end - local.get $2 - i32.const 0 - i32.gt_s - br_if $do-continue|0 - end - global.get $~lib/rt/itcms/total - local.tee $2 - local.get $2 - global.get $~lib/rt/itcms/threshold - i32.sub - i32.const 1024 - i32.lt_u - i32.const 10 - i32.shl - i32.add - global.set $~lib/rt/itcms/threshold - end - end - local.get $0 - i32.const 16 - i32.add - local.set $2 - global.get $~lib/rt/tlsf/ROOT - i32.eqz - if - call $~lib/rt/tlsf/initialize - end - global.get $~lib/rt/tlsf/ROOT - local.set $3 - local.get $2 + local.get $1 i32.const 1073741820 i32.gt_u if @@ -1471,14 +1398,15 @@ call $~lib/builtins/abort unreachable end - local.get $3 - local.get $2 + local.get $0 + local.tee $2 + local.get $1 i32.const 12 i32.le_u if (result i32) i32.const 12 else - local.get $2 + local.get $1 i32.const 19 i32.add i32.const -16 @@ -1486,19 +1414,19 @@ i32.const 4 i32.sub end - local.tee $2 + local.tee $0 call $~lib/rt/tlsf/searchBlock - local.tee $4 + local.tee $1 i32.eqz if - local.get $2 + local.get $0 i32.const 536870910 i32.lt_u if (result i32) - local.get $2 + local.get $0 i32.const 1 i32.const 27 - local.get $2 + local.get $0 i32.clz i32.sub i32.shl @@ -1506,16 +1434,16 @@ i32.sub i32.add else - local.get $2 + local.get $0 end i32.const 4 memory.size - local.tee $6 + local.tee $1 i32.const 16 i32.shl i32.const 4 i32.sub - local.get $3 + local.get $2 i32.load offset=1568 i32.ne i32.shl @@ -1526,18 +1454,18 @@ i32.and i32.const 16 i32.shr_u - local.set $5 - local.get $6 - local.get $5 - local.get $5 - local.get $6 - i32.lt_s + local.set $3 + local.get $1 + local.get $3 + local.get $1 + local.get $3 + i32.gt_s select memory.grow i32.const 0 i32.lt_s if - local.get $5 + local.get $3 memory.grow i32.const 0 i32.lt_s @@ -1545,18 +1473,18 @@ unreachable end end - local.get $3 - local.get $6 + local.get $2 + local.get $1 i32.const 16 i32.shl memory.size i32.const 16 i32.shl call $~lib/rt/tlsf/addMemory - local.get $3 local.get $2 + local.get $0 call $~lib/rt/tlsf/searchBlock - local.tee $4 + local.tee $1 i32.eqz if i32.const 0 @@ -1567,8 +1495,8 @@ unreachable end end - local.get $2 - local.get $4 + local.get $0 + local.get $1 i32.load i32.const -4 i32.and @@ -1581,13 +1509,13 @@ call $~lib/builtins/abort unreachable end - local.get $3 - local.get $4 + local.get $2 + local.get $1 call $~lib/rt/tlsf/removeBlock - local.get $4 + local.get $1 i32.load - local.set $6 - local.get $2 + local.set $3 + local.get $0 i32.const 4 i32.add i32.const 15 @@ -1600,54 +1528,54 @@ call $~lib/builtins/abort unreachable end - local.get $6 + local.get $3 i32.const -4 i32.and - local.get $2 + local.get $0 i32.sub - local.tee $5 + local.tee $4 i32.const 16 i32.ge_u if - local.get $4 - local.get $2 - local.get $6 + local.get $1 + local.get $0 + local.get $3 i32.const 2 i32.and i32.or i32.store - local.get $2 - local.get $4 + local.get $0 + local.get $1 i32.const 4 i32.add i32.add - local.tee $2 - local.get $5 + local.tee $0 + local.get $4 i32.const 4 i32.sub i32.const 1 i32.or i32.store - local.get $3 local.get $2 + local.get $0 call $~lib/rt/tlsf/insertBlock else - local.get $4 - local.get $6 + local.get $1 + local.get $3 i32.const -2 i32.and i32.store - local.get $4 + local.get $1 i32.const 4 i32.add - local.tee $2 - local.get $4 + local.tee $0 + local.get $1 i32.load i32.const -4 i32.and i32.add - local.get $2 - local.get $4 + local.get $0 + local.get $1 i32.load i32.const -4 i32.and @@ -1657,182 +1585,143 @@ i32.and i32.store end - local.get $4 - local.get $1 - i32.store offset=12 - local.get $4 - local.get $0 - i32.store offset=16 - global.get $~lib/rt/itcms/fromSpace - local.tee $1 - i32.load offset=8 - local.set $2 - local.get $4 - local.get $1 - global.get $~lib/rt/itcms/white - i32.or - i32.store offset=4 - local.get $4 - local.get $2 - i32.store offset=8 - local.get $2 - local.get $4 - local.get $2 - i32.load offset=4 - i32.const 3 - i32.and - i32.or - i32.store offset=4 local.get $1 - local.get $4 - i32.store offset=8 - global.get $~lib/rt/itcms/total - local.get $4 - i32.load - i32.const -4 - i32.and - i32.const 4 - i32.add - i32.add - global.set $~lib/rt/itcms/total - local.get $4 - i32.const 20 - i32.add - local.tee $2 - local.set $3 + ) + (func $~lib/memory/memory.fill (param $0 i32) (param $1 i32) + (local $2 i32) block $~lib/util/memory/memset|inlined.0 - local.get $0 + local.get $1 i32.eqz br_if $~lib/util/memory/memset|inlined.0 - local.get $3 + local.get $0 i32.const 0 i32.store8 local.get $0 - local.get $3 + local.get $1 i32.add - local.tee $1 + local.tee $2 i32.const 1 i32.sub i32.const 0 i32.store8 - local.get $0 + local.get $1 i32.const 2 i32.le_u br_if $~lib/util/memory/memset|inlined.0 - local.get $3 + local.get $0 i32.const 0 i32.store8 offset=1 - local.get $3 + local.get $0 i32.const 0 i32.store8 offset=2 - local.get $1 + local.get $2 i32.const 2 i32.sub i32.const 0 i32.store8 - local.get $1 + local.get $2 i32.const 3 i32.sub i32.const 0 i32.store8 - local.get $0 + local.get $1 i32.const 6 i32.le_u br_if $~lib/util/memory/memset|inlined.0 - local.get $3 + local.get $0 i32.const 0 i32.store8 offset=3 - local.get $1 + local.get $2 i32.const 4 i32.sub i32.const 0 i32.store8 - local.get $0 + local.get $1 i32.const 8 i32.le_u br_if $~lib/util/memory/memset|inlined.0 - local.get $3 + local.get $0 i32.const 0 - local.get $3 + local.get $0 i32.sub i32.const 3 i32.and - local.tee $1 + local.tee $2 i32.add - local.tee $5 + local.tee $0 i32.const 0 i32.store - local.get $5 local.get $0 local.get $1 + local.get $2 i32.sub i32.const -4 i32.and - local.tee $3 + local.tee $2 i32.add - local.tee $0 + local.tee $1 i32.const 4 i32.sub i32.const 0 i32.store - local.get $3 + local.get $2 i32.const 8 i32.le_u br_if $~lib/util/memory/memset|inlined.0 - local.get $5 + local.get $0 i32.const 0 i32.store offset=4 - local.get $5 + local.get $0 i32.const 0 i32.store offset=8 - local.get $0 + local.get $1 i32.const 12 i32.sub i32.const 0 i32.store - local.get $0 + local.get $1 i32.const 8 i32.sub i32.const 0 i32.store - local.get $3 + local.get $2 i32.const 24 i32.le_u br_if $~lib/util/memory/memset|inlined.0 - local.get $5 + local.get $0 i32.const 0 i32.store offset=12 - local.get $5 + local.get $0 i32.const 0 i32.store offset=16 - local.get $5 + local.get $0 i32.const 0 i32.store offset=20 - local.get $5 + local.get $0 i32.const 0 i32.store offset=24 - local.get $0 + local.get $1 i32.const 28 i32.sub i32.const 0 i32.store - local.get $0 + local.get $1 i32.const 24 i32.sub i32.const 0 i32.store - local.get $0 + local.get $1 i32.const 20 i32.sub i32.const 0 i32.store - local.get $0 + local.get $1 i32.const 16 i32.sub i32.const 0 i32.store - local.get $5 - local.get $5 + local.get $0 + local.get $0 i32.const 4 i32.and i32.const 24 @@ -1840,7 +1729,7 @@ local.tee $1 i32.add local.set $0 - local.get $3 + local.get $2 local.get $1 i32.sub local.set $1 @@ -1873,7 +1762,123 @@ end end end + ) + (func $~lib/rt/itcms/__new (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + local.get $0 + i32.const 1073741804 + i32.ge_u + if + i32.const 1392 + i32.const 1184 + i32.const 260 + i32.const 31 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.ge_u + if + block $__inlined_func$~lib/rt/itcms/interrupt + i32.const 2048 + local.set $2 + loop $do-continue|0 + local.get $2 + call $~lib/rt/itcms/step + i32.sub + local.set $2 + global.get $~lib/rt/itcms/state + i32.eqz + if + global.get $~lib/rt/itcms/total + i64.extend_i32_u + i64.const 200 + i64.mul + i64.const 100 + i64.div_u + i32.wrap_i64 + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold + br $__inlined_func$~lib/rt/itcms/interrupt + end + local.get $2 + i32.const 0 + i32.gt_s + br_if $do-continue|0 + end + global.get $~lib/rt/itcms/total + local.tee $2 + local.get $2 + global.get $~lib/rt/itcms/threshold + i32.sub + i32.const 1024 + i32.lt_u + i32.const 10 + i32.shl + i32.add + global.set $~lib/rt/itcms/threshold + end + end + local.get $0 + i32.const 16 + i32.add + local.set $2 + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $2 + call $~lib/rt/tlsf/allocateBlock + local.tee $2 + local.get $1 + i32.store offset=12 + local.get $2 + local.get $0 + i32.store offset=16 + global.get $~lib/rt/itcms/fromSpace + local.tee $3 + i32.load offset=8 + local.set $1 + local.get $2 + local.get $3 + global.get $~lib/rt/itcms/white + i32.or + i32.store offset=4 + local.get $2 + local.get $1 + i32.store offset=8 + local.get $1 + local.get $2 + local.get $1 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + local.get $3 + local.get $2 + i32.store offset=8 + global.get $~lib/rt/itcms/total + local.get $2 + i32.load + i32.const -4 + i32.and + i32.const 4 + i32.add + i32.add + global.set $~lib/rt/itcms/total local.get $2 + i32.const 20 + i32.add + local.tee $1 + local.get $0 + call $~lib/memory/memory.fill + local.get $1 ) (func $~lib/util/memory/memcpy (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) @@ -2822,297 +2827,76 @@ end end ) - (func $~lib/staticarray/StaticArray<~lib/string/String>#join (param $0 i32) (result i32) - (local $1 i32) + (func $~lib/string/String.__eq (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) - (local $5 i32) - (local $6 i32) + local.get $0 + local.get $1 + i32.eq + if + i32.const 1 + return + end + local.get $1 + i32.const 0 + local.get $0 + select + i32.eqz + if + i32.const 0 + return + end local.get $0 i32.const 20 i32.sub i32.load offset=16 - i32.const 2 + i32.const 1 i32.shr_u - local.set $5 - global.get $~lib/memory/__stack_pointer - i32.const 12 + local.tee $2 + local.get $1 + i32.const 20 i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 5644 - i32.lt_s + i32.load offset=16 + i32.const 1 + i32.shr_u + i32.ne if - i32.const 22048 - i32.const 22096 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable + i32.const 0 + return end - global.get $~lib/memory/__stack_pointer - local.tee $6 - i64.const 0 - i64.store - local.get $6 - i32.const 0 - i32.store offset=8 - block $__inlined_func$~lib/util/string/joinStringArray - local.get $5 + block $__inlined_func$~lib/util/string/compareImpl (result i32) + local.get $0 + local.tee $3 + i32.const 7 + i32.and + local.get $1 + i32.const 7 + i32.and + i32.or i32.const 1 - i32.sub - local.tee $6 - i32.const 0 - i32.lt_s - if - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.add - global.set $~lib/memory/__stack_pointer - i32.const 1120 - local.set $2 - br $__inlined_func$~lib/util/string/joinStringArray - end - local.get $6 - i32.eqz - if - global.get $~lib/memory/__stack_pointer - local.tee $2 - local.get $0 - i32.load - local.tee $0 - i32.store - local.get $2 - i32.const 12 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $0 - i32.const 1120 - local.get $0 - select - local.set $2 - br $__inlined_func$~lib/util/string/joinStringArray - end - loop $for-loop|0 - local.get $3 - local.get $5 - i32.lt_s - if - global.get $~lib/memory/__stack_pointer - local.get $0 - local.get $3 - i32.const 2 - i32.shl - i32.add - i32.load - local.tee $4 - i32.store offset=4 - local.get $4 - if - local.get $2 - local.get $4 - i32.const 20 - i32.sub - i32.load offset=16 - i32.const 1 - i32.shr_u - i32.add - local.set $2 - end - local.get $3 - i32.const 1 - i32.add - local.set $3 - br $for-loop|0 - end - end - global.get $~lib/memory/__stack_pointer - local.get $2 - local.get $6 - i32.const 1116 - i32.load - i32.const 1 - i32.shr_u - local.tee $5 - i32.mul - i32.add - i32.const 1 - i32.shl - i32.const 1 - call $~lib/rt/itcms/__new - local.tee $2 - i32.store offset=8 - i32.const 0 - local.set $3 - loop $for-loop|1 - local.get $3 - local.get $6 - i32.lt_s - if - global.get $~lib/memory/__stack_pointer - local.get $0 - local.get $3 - i32.const 2 - i32.shl - i32.add - i32.load - local.tee $4 - i32.store offset=4 - local.get $4 - if - local.get $2 - local.get $1 - i32.const 1 - i32.shl - i32.add - local.get $4 - local.get $4 - i32.const 20 - i32.sub - i32.load offset=16 - i32.const 1 - i32.shr_u - local.tee $4 - i32.const 1 - i32.shl - call $~lib/memory/memory.copy - local.get $1 - local.get $4 - i32.add - local.set $1 - end - local.get $5 - if - local.get $2 - local.get $1 - i32.const 1 - i32.shl - i32.add - i32.const 1120 - local.get $5 - i32.const 1 - i32.shl - call $~lib/memory/memory.copy - local.get $1 - local.get $5 - i32.add - local.set $1 - end - local.get $3 - i32.const 1 - i32.add - local.set $3 - br $for-loop|1 - end - end - global.get $~lib/memory/__stack_pointer - local.get $0 - local.get $6 - i32.const 2 - i32.shl - i32.add - i32.load - local.tee $0 - i32.store offset=4 - local.get $0 - if - local.get $2 - local.get $1 - i32.const 1 - i32.shl - i32.add - local.get $0 - local.get $0 - i32.const 20 - i32.sub - i32.load offset=16 - i32.const 1 - i32.shr_u - i32.const 1 - i32.shl - call $~lib/memory/memory.copy - end - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.add - global.set $~lib/memory/__stack_pointer - end - local.get $2 - ) - (func $~lib/string/String.__eq (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - local.get $0 - local.get $1 - i32.eq - if - i32.const 1 - return - end - local.get $1 - i32.const 0 - local.get $0 - select - i32.eqz - if - i32.const 0 - return - end - local.get $0 - i32.const 20 - i32.sub - i32.load offset=16 - i32.const 1 - i32.shr_u - local.tee $4 - local.get $1 - i32.const 20 - i32.sub - i32.load offset=16 - i32.const 1 - i32.shr_u - i32.ne - if - i32.const 0 - return - end - block $__inlined_func$~lib/util/string/compareImpl (result i32) - local.get $0 - local.set $2 - local.get $1 - local.set $3 - local.get $2 - i32.const 7 - i32.and - local.get $3 - i32.const 7 - i32.and - i32.or - i32.const 1 - local.get $4 - local.tee $0 - i32.const 4 - i32.ge_u - select + local.get $2 + local.tee $0 + i32.const 4 + i32.ge_u + select i32.eqz if loop $do-continue|0 - local.get $2 - i64.load local.get $3 i64.load + local.get $1 + i64.load i64.eq if - local.get $2 - i32.const 8 - i32.add - local.set $2 local.get $3 i32.const 8 i32.add local.set $3 + local.get $1 + i32.const 8 + i32.add + local.set $1 local.get $0 i32.const 4 i32.sub @@ -3125,33 +2909,33 @@ end loop $while-continue|1 local.get $0 - local.tee $1 + local.tee $2 i32.const 1 i32.sub local.set $0 - local.get $1 + local.get $2 if - local.get $2 - i32.load16_u - local.tee $1 local.get $3 i32.load16_u + local.tee $2 + local.get $1 + i32.load16_u local.tee $4 i32.ne if - local.get $1 + local.get $2 local.get $4 i32.sub br $__inlined_func$~lib/util/string/compareImpl end - local.get $2 - i32.const 2 - i32.add - local.set $2 local.get $3 i32.const 2 i32.add local.set $3 + local.get $1 + i32.const 2 + i32.add + local.set $1 br $while-continue|1 end end @@ -4467,8 +4251,6 @@ (func $~start (local $0 i32) (local $1 i32) - (local $2 i32) - (local $3 i32) global.get $~started if return @@ -4511,799 +4293,1089 @@ i32.const 24 i32.sub global.set $~lib/memory/__stack_pointer - block $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 5644 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - local.tee $0 - i64.const 0 - i64.store - local.get $0 - i64.const 0 - i64.store offset=8 - local.get $0 - i64.const 0 - i64.store offset=16 - local.get $0 - i32.const 1056 - i32.store - local.get $0 - i32.const 1088 - i32.store offset=4 - local.get $0 - i32.const 1152 - i32.store offset=16 - i32.const 1152 + global.get $~lib/memory/__stack_pointer + i32.const 5644 + i32.lt_s + if + i32.const 22048 + i32.const 22096 i32.const 1 - i32.const 1056 - call $~lib/staticarray/StaticArray<~lib/string/String>#__uset - global.get $~lib/memory/__stack_pointer - local.tee $0 - i32.const 1152 - i32.store offset=16 - local.get $0 - i32.const 1120 - i32.store offset=20 - i32.const 1152 - call $~lib/staticarray/StaticArray<~lib/string/String>#join - local.set $0 - global.get $~lib/memory/__stack_pointer - local.tee $1 - local.get $0 - i32.store offset=8 - local.get $1 - i32.const 1056 - i32.store offset=12 - local.get $0 - i32.const 1056 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1584 - i32.const 4 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 1648 - i32.store offset=16 - i32.const 1648 i32.const 1 - i32.const 1056 - call $~lib/staticarray/StaticArray<~lib/string/String>#__uset - global.get $~lib/memory/__stack_pointer - i32.const 1648 - i32.store offset=16 - i32.const 1648 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.tee $0 + i64.const 0 + i64.store + local.get $0 + i64.const 0 + i64.store offset=8 + local.get $0 + i64.const 0 + i64.store offset=16 + local.get $0 + i32.const 1056 + i32.store + local.get $0 + i32.const 1088 + i32.store offset=4 + local.get $0 + i32.const 1152 + i32.store offset=16 + i32.const 1152 + i32.const 1 + i32.const 1056 + call $~lib/staticarray/StaticArray<~lib/string/String>#__uset + global.get $~lib/memory/__stack_pointer + local.tee $0 + i32.const 1152 + i32.store offset=16 + local.get $0 + i32.const 1120 + i32.store offset=20 + i32.const 1152 + i32.const 1148 + i32.load + i32.const 2 + i32.shr_u + call $~lib/util/string/joinStringArray + local.set $0 + global.get $~lib/memory/__stack_pointer + local.tee $1 + local.get $0 + i32.store offset=8 + local.get $1 + i32.const 1056 + i32.store offset=12 + local.get $0 + i32.const 1056 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1584 + i32.const 4 i32.const 3 - i32.const 1088 - call $~lib/staticarray/StaticArray<~lib/string/String>#__uset - global.get $~lib/memory/__stack_pointer - local.tee $0 - i32.const 1648 - i32.store offset=16 - local.get $0 - i32.const 1120 - i32.store offset=20 - i32.const 1648 - call $~lib/staticarray/StaticArray<~lib/string/String>#join - local.set $0 - global.get $~lib/memory/__stack_pointer - local.tee $1 - local.get $0 - i32.store offset=8 - local.get $1 - i32.const 1696 - i32.store offset=12 - local.get $0 - i32.const 1696 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1584 - i32.const 5 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 1824 - i32.store offset=16 - i32.const 1824 - i32.const 1 - i32.const 1056 - call $~lib/staticarray/StaticArray<~lib/string/String>#__uset - global.get $~lib/memory/__stack_pointer - i32.const 1824 - i32.store offset=16 - i32.const 1824 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 1648 + i32.store offset=16 + i32.const 1648 + i32.const 1 + i32.const 1056 + call $~lib/staticarray/StaticArray<~lib/string/String>#__uset + global.get $~lib/memory/__stack_pointer + i32.const 1648 + i32.store offset=16 + i32.const 1648 + i32.const 3 + i32.const 1088 + call $~lib/staticarray/StaticArray<~lib/string/String>#__uset + global.get $~lib/memory/__stack_pointer + local.tee $0 + i32.const 1648 + i32.store offset=16 + local.get $0 + i32.const 1120 + i32.store offset=20 + i32.const 1648 + i32.const 1644 + i32.load + i32.const 2 + i32.shr_u + call $~lib/util/string/joinStringArray + local.set $0 + global.get $~lib/memory/__stack_pointer + local.tee $1 + local.get $0 + i32.store offset=8 + local.get $1 + i32.const 1696 + i32.store offset=12 + local.get $0 + i32.const 1696 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1584 + i32.const 5 i32.const 3 - i32.const 1088 - call $~lib/staticarray/StaticArray<~lib/string/String>#__uset - global.get $~lib/memory/__stack_pointer - local.tee $0 - i32.const 1824 - i32.store offset=16 - local.get $0 - i32.const 1120 - i32.store offset=20 - i32.const 1824 - call $~lib/staticarray/StaticArray<~lib/string/String>#join - local.set $0 - global.get $~lib/memory/__stack_pointer - local.tee $1 - local.get $0 - i32.store offset=8 - local.get $1 - i32.const 1872 - i32.store offset=12 - local.get $0 - i32.const 1872 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1584 - i32.const 6 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 24 - i32.add - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 20 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 5644 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - local.tee $0 - i64.const 0 - i64.store - local.get $0 - i64.const 0 - i64.store offset=8 - local.get $0 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 1824 + i32.store offset=16 + i32.const 1824 + i32.const 1 + i32.const 1056 + call $~lib/staticarray/StaticArray<~lib/string/String>#__uset + global.get $~lib/memory/__stack_pointer + i32.const 1824 + i32.store offset=16 + i32.const 1824 + i32.const 3 + i32.const 1088 + call $~lib/staticarray/StaticArray<~lib/string/String>#__uset + global.get $~lib/memory/__stack_pointer + local.tee $0 + i32.const 1824 + i32.store offset=16 + local.get $0 + i32.const 1120 + i32.store offset=20 + i32.const 1824 + i32.const 1820 + i32.load + i32.const 2 + i32.shr_u + call $~lib/util/string/joinStringArray + local.set $0 + global.get $~lib/memory/__stack_pointer + local.tee $1 + local.get $0 + i32.store offset=8 + local.get $1 + i32.const 1872 + i32.store offset=12 + local.get $0 + i32.const 1872 + call $~lib/string/String.__eq + i32.eqz + if i32.const 0 - i32.store offset=16 - local.get $0 - i32.const 1920 - i32.store offset=8 - i32.const 1 - call $~lib/util/number/itoa32 - local.set $0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=12 - i32.const 1920 - i32.const 1 - local.get $0 - call $~lib/staticarray/StaticArray<~lib/string/String>#__uset - global.get $~lib/memory/__stack_pointer - local.tee $0 - i32.const 1920 - i32.store offset=8 - local.get $0 - i32.const 1120 - i32.store offset=16 - i32.const 1920 - call $~lib/staticarray/StaticArray<~lib/string/String>#join - local.set $0 - global.get $~lib/memory/__stack_pointer - local.tee $1 - local.get $0 - i32.store - local.get $1 - i32.const 3728 - i32.store offset=4 - local.get $0 - i32.const 3728 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1584 - i32.const 13 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 3760 - i32.store offset=8 + i32.const 1584 + i32.const 6 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.add + global.set $~lib/memory/__stack_pointer + call $templateliteral/test_integer + call $templateliteral/test_float + call $templateliteral/test_ref + ) + (func $templateliteral/test_integer + (local $0 i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 5644 + i32.lt_s + if + i32.const 22048 + i32.const 22096 i32.const 1 - call $~lib/util/number/itoa32 - local.set $0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=12 - i32.const 3760 i32.const 1 - local.get $0 - call $~lib/staticarray/StaticArray<~lib/string/String>#__uset - global.get $~lib/memory/__stack_pointer - i32.const 3760 - i32.store offset=8 - i32.const 2 - call $~lib/util/number/itoa32 - local.set $0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=12 - i32.const 3760 - i32.const 3 - local.get $0 - call $~lib/staticarray/StaticArray<~lib/string/String>#__uset - global.get $~lib/memory/__stack_pointer - local.tee $0 - i32.const 3760 - i32.store offset=8 - local.get $0 - i32.const 1120 - i32.store offset=16 - i32.const 3760 - call $~lib/staticarray/StaticArray<~lib/string/String>#join - local.set $0 - global.get $~lib/memory/__stack_pointer - local.tee $1 - local.get $0 - i32.store - local.get $1 - i32.const 3808 - i32.store offset=4 - local.get $0 - i32.const 3808 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1584 - i32.const 14 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 3840 - i32.store offset=8 - i32.const 1 - call $~lib/util/number/itoa32 - local.set $0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=12 - i32.const 3840 - i32.const 1 - local.get $0 - call $~lib/staticarray/StaticArray<~lib/string/String>#__uset - global.get $~lib/memory/__stack_pointer - i32.const 3840 - i32.store offset=8 - i32.const 2 - call $~lib/util/number/itoa32 - local.set $0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=12 - i32.const 3840 - i32.const 3 - local.get $0 - call $~lib/staticarray/StaticArray<~lib/string/String>#__uset - global.get $~lib/memory/__stack_pointer - local.tee $0 - i32.const 3840 - i32.store offset=8 - local.get $0 - i32.const 1120 - i32.store offset=16 - i32.const 3840 - call $~lib/staticarray/StaticArray<~lib/string/String>#join - local.set $0 - global.get $~lib/memory/__stack_pointer - local.tee $1 - local.get $0 - i32.store - local.get $1 - i32.const 3888 - i32.store offset=4 - local.get $0 - i32.const 3888 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1584 - i32.const 15 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 20 - i32.add - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 20 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 5644 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - local.tee $0 - i64.const 0 - i64.store - local.get $0 - i64.const 0 - i64.store offset=8 - local.get $0 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.tee $0 + i64.const 0 + i64.store + local.get $0 + i64.const 0 + i64.store offset=8 + local.get $0 + i32.const 0 + i32.store offset=16 + local.get $0 + i32.const 1920 + i32.store offset=8 + i32.const 1 + call $~lib/util/number/itoa32 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=12 + i32.const 1920 + i32.const 1 + local.get $0 + call $~lib/staticarray/StaticArray<~lib/string/String>#__uset + global.get $~lib/memory/__stack_pointer + local.tee $0 + i32.const 1920 + i32.store offset=8 + local.get $0 + i32.const 1120 + i32.store offset=16 + i32.const 1920 + i32.const 1916 + i32.load + i32.const 2 + i32.shr_u + call $~lib/util/string/joinStringArray + local.set $0 + global.get $~lib/memory/__stack_pointer + local.tee $1 + local.get $0 + i32.store + local.get $1 + i32.const 3728 + i32.store offset=4 + local.get $0 + i32.const 3728 + call $~lib/string/String.__eq + i32.eqz + if i32.const 0 - i32.store offset=16 - local.get $0 - i32.const 3936 - i32.store offset=8 - f64.const 1 - call $~lib/number/F64#toString - local.set $0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=12 - i32.const 3936 - i32.const 1 - local.get $0 - call $~lib/staticarray/StaticArray<~lib/string/String>#__uset - global.get $~lib/memory/__stack_pointer - local.tee $0 - i32.const 3936 - i32.store offset=8 - local.get $0 - i32.const 1120 - i32.store offset=16 - i32.const 3936 - call $~lib/staticarray/StaticArray<~lib/string/String>#join - local.set $0 - global.get $~lib/memory/__stack_pointer - local.tee $1 - local.get $0 - i32.store - local.get $1 - i32.const 5104 - i32.store offset=4 - local.get $0 - i32.const 5104 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1584 - i32.const 22 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 5136 - i32.store offset=8 - f64.const 1 - call $~lib/number/F64#toString - local.set $0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=12 - i32.const 5136 - i32.const 1 - local.get $0 - call $~lib/staticarray/StaticArray<~lib/string/String>#__uset - global.get $~lib/memory/__stack_pointer - i32.const 5136 - i32.store offset=8 - f64.const 2 - call $~lib/number/F64#toString - local.set $0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=12 - i32.const 5136 + i32.const 1584 + i32.const 13 i32.const 3 - local.get $0 - call $~lib/staticarray/StaticArray<~lib/string/String>#__uset - global.get $~lib/memory/__stack_pointer - local.tee $0 - i32.const 5136 - i32.store offset=8 - local.get $0 - i32.const 1120 - i32.store offset=16 - i32.const 5136 - call $~lib/staticarray/StaticArray<~lib/string/String>#join - local.set $0 - global.get $~lib/memory/__stack_pointer - local.tee $1 - local.get $0 - i32.store - local.get $1 - i32.const 5184 - i32.store offset=4 - local.get $0 - i32.const 5184 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1584 - i32.const 23 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 5216 - i32.store offset=8 - f64.const 1 - call $~lib/number/F64#toString - local.set $0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=12 - i32.const 5216 - i32.const 1 - local.get $0 - call $~lib/staticarray/StaticArray<~lib/string/String>#__uset - global.get $~lib/memory/__stack_pointer - i32.const 5216 - i32.store offset=8 - f64.const 2 - call $~lib/number/F64#toString - local.set $0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=12 - i32.const 5216 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 3760 + i32.store offset=8 + i32.const 1 + call $~lib/util/number/itoa32 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=12 + i32.const 3760 + i32.const 1 + local.get $0 + call $~lib/staticarray/StaticArray<~lib/string/String>#__uset + global.get $~lib/memory/__stack_pointer + i32.const 3760 + i32.store offset=8 + i32.const 2 + call $~lib/util/number/itoa32 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=12 + i32.const 3760 + i32.const 3 + local.get $0 + call $~lib/staticarray/StaticArray<~lib/string/String>#__uset + global.get $~lib/memory/__stack_pointer + local.tee $0 + i32.const 3760 + i32.store offset=8 + local.get $0 + i32.const 1120 + i32.store offset=16 + i32.const 3760 + i32.const 3756 + i32.load + i32.const 2 + i32.shr_u + call $~lib/util/string/joinStringArray + local.set $0 + global.get $~lib/memory/__stack_pointer + local.tee $1 + local.get $0 + i32.store + local.get $1 + i32.const 3808 + i32.store offset=4 + local.get $0 + i32.const 3808 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1584 + i32.const 14 i32.const 3 - local.get $0 - call $~lib/staticarray/StaticArray<~lib/string/String>#__uset - global.get $~lib/memory/__stack_pointer - local.tee $0 - i32.const 5216 - i32.store offset=8 - local.get $0 - i32.const 1120 - i32.store offset=16 - i32.const 5216 - call $~lib/staticarray/StaticArray<~lib/string/String>#join - local.set $0 - global.get $~lib/memory/__stack_pointer - local.tee $1 - local.get $0 - i32.store - local.get $1 - i32.const 5264 - i32.store offset=4 - local.get $0 - i32.const 5264 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1584 - i32.const 24 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 20 - i32.add - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 28 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 5644 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - local.tee $0 - i64.const 0 - i64.store - local.get $0 - i64.const 0 - i64.store offset=8 - local.get $0 - i64.const 0 - i64.store offset=16 - local.get $0 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 3840 + i32.store offset=8 + i32.const 1 + call $~lib/util/number/itoa32 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=12 + i32.const 3840 + i32.const 1 + local.get $0 + call $~lib/staticarray/StaticArray<~lib/string/String>#__uset + global.get $~lib/memory/__stack_pointer + i32.const 3840 + i32.store offset=8 + i32.const 2 + call $~lib/util/number/itoa32 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=12 + i32.const 3840 + i32.const 3 + local.get $0 + call $~lib/staticarray/StaticArray<~lib/string/String>#__uset + global.get $~lib/memory/__stack_pointer + local.tee $0 + i32.const 3840 + i32.store offset=8 + local.get $0 + i32.const 1120 + i32.store offset=16 + i32.const 3840 + i32.const 3836 + i32.load + i32.const 2 + i32.shr_u + call $~lib/util/string/joinStringArray + local.set $0 + global.get $~lib/memory/__stack_pointer + local.tee $1 + local.get $0 + i32.store + local.get $1 + i32.const 3888 + i32.store offset=4 + local.get $0 + i32.const 3888 + call $~lib/string/String.__eq + i32.eqz + if i32.const 0 - i32.store offset=24 - local.get $0 - i32.const 1 - call $templateliteral/Ref#constructor - local.tee $0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 2 - call $templateliteral/Ref#constructor - local.tee $1 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - i32.const 5312 - i32.store offset=16 - local.get $0 - call $templateliteral/Ref#toString - local.set $2 - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=20 - i32.const 5312 + i32.const 1584 + i32.const 15 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $templateliteral/test_float + (local $0 i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 5644 + i32.lt_s + if + i32.const 22048 + i32.const 22096 i32.const 1 - local.get $2 - call $~lib/staticarray/StaticArray<~lib/string/String>#__uset - global.get $~lib/memory/__stack_pointer - local.tee $2 - i32.const 5312 - i32.store offset=16 - local.get $2 - i32.const 1120 - i32.store offset=24 - i32.const 5312 - call $~lib/staticarray/StaticArray<~lib/string/String>#join - local.set $2 - global.get $~lib/memory/__stack_pointer - local.tee $3 - local.get $2 - i32.store offset=8 - local.get $3 - i32.const 5376 - i32.store offset=12 - local.get $2 - i32.const 5376 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1584 - i32.const 38 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 5408 - i32.store offset=16 - local.get $0 - call $templateliteral/Ref#toString - local.set $2 - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=20 - i32.const 5408 i32.const 1 - local.get $2 - call $~lib/staticarray/StaticArray<~lib/string/String>#__uset - global.get $~lib/memory/__stack_pointer - i32.const 5408 - i32.store offset=16 - local.get $1 - call $templateliteral/Ref#toString - local.set $2 - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=20 - i32.const 5408 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.tee $0 + i64.const 0 + i64.store + local.get $0 + i64.const 0 + i64.store offset=8 + local.get $0 + i32.const 0 + i32.store offset=16 + local.get $0 + i32.const 3936 + i32.store offset=8 + f64.const 1 + call $~lib/number/F64#toString + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=12 + i32.const 3936 + i32.const 1 + local.get $0 + call $~lib/staticarray/StaticArray<~lib/string/String>#__uset + global.get $~lib/memory/__stack_pointer + local.tee $0 + i32.const 3936 + i32.store offset=8 + local.get $0 + i32.const 1120 + i32.store offset=16 + i32.const 3936 + i32.const 3932 + i32.load + i32.const 2 + i32.shr_u + call $~lib/util/string/joinStringArray + local.set $0 + global.get $~lib/memory/__stack_pointer + local.tee $1 + local.get $0 + i32.store + local.get $1 + i32.const 5104 + i32.store offset=4 + local.get $0 + i32.const 5104 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1584 + i32.const 22 i32.const 3 - local.get $2 - call $~lib/staticarray/StaticArray<~lib/string/String>#__uset - global.get $~lib/memory/__stack_pointer - local.tee $2 - i32.const 5408 - i32.store offset=16 - local.get $2 - i32.const 1120 - i32.store offset=24 - i32.const 5408 - call $~lib/staticarray/StaticArray<~lib/string/String>#join - local.set $2 - global.get $~lib/memory/__stack_pointer - local.tee $3 - local.get $2 - i32.store offset=8 - local.get $3 - i32.const 5456 - i32.store offset=12 - local.get $2 - i32.const 5456 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1584 - i32.const 39 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 5504 - i32.store offset=16 - local.get $0 - call $templateliteral/Ref#toString - local.set $0 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 5136 + i32.store offset=8 + f64.const 1 + call $~lib/number/F64#toString + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=12 + i32.const 5136 + i32.const 1 + local.get $0 + call $~lib/staticarray/StaticArray<~lib/string/String>#__uset + global.get $~lib/memory/__stack_pointer + i32.const 5136 + i32.store offset=8 + f64.const 2 + call $~lib/number/F64#toString + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=12 + i32.const 5136 + i32.const 3 + local.get $0 + call $~lib/staticarray/StaticArray<~lib/string/String>#__uset + global.get $~lib/memory/__stack_pointer + local.tee $0 + i32.const 5136 + i32.store offset=8 + local.get $0 + i32.const 1120 + i32.store offset=16 + i32.const 5136 + i32.const 5132 + i32.load + i32.const 2 + i32.shr_u + call $~lib/util/string/joinStringArray + local.set $0 + global.get $~lib/memory/__stack_pointer + local.tee $1 + local.get $0 + i32.store + local.get $1 + i32.const 5184 + i32.store offset=4 + local.get $0 + i32.const 5184 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1584 + i32.const 23 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 5216 + i32.store offset=8 + f64.const 1 + call $~lib/number/F64#toString + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=12 + i32.const 5216 + i32.const 1 + local.get $0 + call $~lib/staticarray/StaticArray<~lib/string/String>#__uset + global.get $~lib/memory/__stack_pointer + i32.const 5216 + i32.store offset=8 + f64.const 2 + call $~lib/number/F64#toString + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=12 + i32.const 5216 + i32.const 3 + local.get $0 + call $~lib/staticarray/StaticArray<~lib/string/String>#__uset + global.get $~lib/memory/__stack_pointer + local.tee $0 + i32.const 5216 + i32.store offset=8 + local.get $0 + i32.const 1120 + i32.store offset=16 + i32.const 5216 + i32.const 5212 + i32.load + i32.const 2 + i32.shr_u + call $~lib/util/string/joinStringArray + local.set $0 + global.get $~lib/memory/__stack_pointer + local.tee $1 + local.get $0 + i32.store + local.get $1 + i32.const 5264 + i32.store offset=4 + local.get $0 + i32.const 5264 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1584 + i32.const 24 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $templateliteral/Ref#toString (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner0 global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=20 - i32.const 5504 - i32.const 1 - local.get $0 - call $~lib/staticarray/StaticArray<~lib/string/String>#__uset + i32.const 5644 + i32.lt_s + br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - i32.const 5504 - i32.store offset=16 + local.tee $1 + i64.const 0 + i64.store local.get $1 - call $templateliteral/Ref#toString - local.set $0 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=20 - i32.const 5504 - i32.const 3 - local.get $0 - call $~lib/staticarray/StaticArray<~lib/string/String>#__uset - global.get $~lib/memory/__stack_pointer - local.tee $0 - i32.const 5504 - i32.store offset=16 + i32.const 5344 + i32.store local.get $0 - i32.const 1120 - i32.store offset=24 - i32.const 5504 - call $~lib/staticarray/StaticArray<~lib/string/String>#join + i32.load + call $~lib/util/number/itoa32 local.set $0 global.get $~lib/memory/__stack_pointer local.tee $1 local.get $0 - i32.store offset=8 + i32.store offset=4 local.get $1 - i32.const 5552 - i32.store offset=12 - local.get $0 - i32.const 5552 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1584 - i32.const 40 - i32.const 3 - call $~lib/builtins/abort - unreachable + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 5644 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + block $__inlined_func$~lib/string/String#concat + i32.const 5340 + i32.load + i32.const 1 + i32.shr_u + i32.const 1 + i32.shl + local.tee $2 + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 1 + i32.shr_u + i32.const 1 + i32.shl + local.tee $3 + i32.add + local.tee $1 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 1120 + local.set $1 + br $__inlined_func$~lib/string/String#concat + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $1 + i32.store + local.get $1 + i32.const 5344 + local.get $2 + call $~lib/memory/memory.copy + local.get $1 + local.get $2 + i32.add + local.get $0 + local.get $3 + call $~lib/memory/memory.copy + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer end global.get $~lib/memory/__stack_pointer - i32.const 28 + i32.const 8 i32.add global.set $~lib/memory/__stack_pointer + local.get $1 return end - i32.const 22048 - i32.const 22096 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable + i32.const 22048 + i32.const 22096 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) + (func $templateliteral/test_ref + (local $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 28 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 5644 + i32.lt_s + if + i32.const 22048 + i32.const 22096 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.tee $0 + i64.const 0 + i64.store + local.get $0 + i64.const 0 + i64.store offset=8 + local.get $0 + i64.const 0 + i64.store offset=16 + local.get $0 + i32.const 0 + i32.store offset=24 + local.get $0 + i32.const 1 + call $templateliteral/Ref#constructor + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 2 + call $templateliteral/Ref#constructor + local.tee $2 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 5312 + i32.store offset=16 + local.get $0 + call $templateliteral/Ref#toString + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=20 + i32.const 5312 + i32.const 1 + local.get $1 + call $~lib/staticarray/StaticArray<~lib/string/String>#__uset + global.get $~lib/memory/__stack_pointer + local.tee $1 + i32.const 5312 + i32.store offset=16 + local.get $1 + i32.const 1120 + i32.store offset=24 + i32.const 5312 + i32.const 5308 + i32.load + i32.const 2 + i32.shr_u + call $~lib/util/string/joinStringArray + local.set $1 + global.get $~lib/memory/__stack_pointer + local.tee $3 + local.get $1 + i32.store offset=8 + local.get $3 + i32.const 5376 + i32.store offset=12 + local.get $1 + i32.const 5376 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1584 + i32.const 38 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 5408 + i32.store offset=16 + local.get $0 + call $templateliteral/Ref#toString + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=20 + i32.const 5408 + i32.const 1 + local.get $1 + call $~lib/staticarray/StaticArray<~lib/string/String>#__uset + global.get $~lib/memory/__stack_pointer + i32.const 5408 + i32.store offset=16 + local.get $2 + call $templateliteral/Ref#toString + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=20 + i32.const 5408 + i32.const 3 + local.get $1 + call $~lib/staticarray/StaticArray<~lib/string/String>#__uset + global.get $~lib/memory/__stack_pointer + local.tee $1 + i32.const 5408 + i32.store offset=16 + local.get $1 + i32.const 1120 + i32.store offset=24 + i32.const 5408 + i32.const 5404 + i32.load + i32.const 2 + i32.shr_u + call $~lib/util/string/joinStringArray + local.set $1 + global.get $~lib/memory/__stack_pointer + local.tee $3 + local.get $1 + i32.store offset=8 + local.get $3 + i32.const 5456 + i32.store offset=12 + local.get $1 + i32.const 5456 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1584 + i32.const 39 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 5504 + i32.store offset=16 + local.get $0 + call $templateliteral/Ref#toString + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=20 + i32.const 5504 + i32.const 1 + local.get $0 + call $~lib/staticarray/StaticArray<~lib/string/String>#__uset + global.get $~lib/memory/__stack_pointer + i32.const 5504 + i32.store offset=16 + local.get $2 + call $templateliteral/Ref#toString + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=20 + i32.const 5504 + i32.const 3 + local.get $0 + call $~lib/staticarray/StaticArray<~lib/string/String>#__uset + global.get $~lib/memory/__stack_pointer + local.tee $0 + i32.const 5504 + i32.store offset=16 + local.get $0 + i32.const 1120 + i32.store offset=24 + i32.const 5504 + i32.const 5500 + i32.load + i32.const 2 + i32.shr_u + call $~lib/util/string/joinStringArray + local.set $0 + global.get $~lib/memory/__stack_pointer + local.tee $2 + local.get $0 + i32.store offset=8 + local.get $2 + i32.const 5552 + i32.store offset=12 + local.get $0 + i32.const 5552 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1584 + i32.const 40 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 28 + i32.add + global.set $~lib/memory/__stack_pointer ) - (func $templateliteral/Ref#toString (param $0 i32) (result i32) - (local $1 i32) + (func $~lib/util/string/joinStringArray (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) global.get $~lib/memory/__stack_pointer - i32.const 8 + i32.const 12 i32.sub global.set $~lib/memory/__stack_pointer - block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 5644 + i32.lt_s + if + i32.const 22048 + i32.const 22096 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.tee $5 + i64.const 0 + i64.store + local.get $5 + i32.const 0 + i32.store offset=8 + local.get $1 + i32.const 1 + i32.sub + local.tee $5 + i32.const 0 + i32.lt_s + if global.get $~lib/memory/__stack_pointer - i32.const 5644 - i32.lt_s - br_if $folding-inner0 + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 1120 + return + end + local.get $5 + i32.eqz + if global.get $~lib/memory/__stack_pointer local.tee $1 - i64.const 0 - i64.store - local.get $1 - i32.const 5344 - i32.store local.get $0 i32.load - call $~lib/util/number/itoa32 - local.set $0 - global.get $~lib/memory/__stack_pointer - local.tee $1 - local.get $0 - i32.store offset=4 + local.tee $0 + i32.store local.get $1 - i32.const 4 - i32.sub + i32.const 12 + i32.add global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 5644 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - block $__inlined_func$~lib/string/String#concat - i32.const 5340 - i32.load - i32.const 1 - i32.shr_u - i32.const 1 - i32.shl - local.tee $2 + local.get $0 + i32.const 1120 + local.get $0 + select + return + end + loop $for-loop|0 + local.get $1 + local.get $4 + i32.gt_s + if + global.get $~lib/memory/__stack_pointer local.get $0 - i32.const 20 - i32.sub - i32.load offset=16 - i32.const 1 - i32.shr_u - i32.const 1 + local.get $4 + i32.const 2 i32.shl - local.tee $3 i32.add - local.tee $1 - i32.eqz + i32.load + local.tee $6 + i32.store offset=4 + local.get $6 if - global.get $~lib/memory/__stack_pointer - i32.const 4 + local.get $3 + local.get $6 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 1 + i32.shr_u i32.add - global.set $~lib/memory/__stack_pointer - i32.const 1120 - local.set $1 - br $__inlined_func$~lib/string/String#concat + local.set $3 end - global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $4 i32.const 1 - call $~lib/rt/itcms/__new - local.tee $1 - i32.store - local.get $1 - i32.const 5344 - local.get $2 - call $~lib/memory/memory.copy - local.get $1 - local.get $2 i32.add + local.set $4 + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + local.get $3 + local.get $5 + i32.const 1116 + i32.load + i32.const 1 + i32.shr_u + local.tee $6 + i32.mul + i32.add + i32.const 1 + i32.shl + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $1 + i32.store offset=8 + i32.const 0 + local.set $4 + loop $for-loop|1 + local.get $4 + local.get $5 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer local.get $0 + local.get $4 + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $3 + i32.store offset=4 local.get $3 - call $~lib/memory/memory.copy - global.get $~lib/memory/__stack_pointer - i32.const 4 + if + local.get $1 + local.get $2 + i32.const 1 + i32.shl + i32.add + local.get $3 + local.get $3 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 1 + i32.shr_u + local.tee $3 + i32.const 1 + i32.shl + call $~lib/memory/memory.copy + local.get $2 + local.get $3 + i32.add + local.set $2 + end + local.get $6 + if + local.get $1 + local.get $2 + i32.const 1 + i32.shl + i32.add + i32.const 1120 + local.get $6 + i32.const 1 + i32.shl + call $~lib/memory/memory.copy + local.get $2 + local.get $6 + i32.add + local.set $2 + end + local.get $4 + i32.const 1 i32.add - global.set $~lib/memory/__stack_pointer + local.set $4 + br $for-loop|1 end - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer + end + global.get $~lib/memory/__stack_pointer + local.get $0 + local.get $5 + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $0 + i32.store offset=4 + local.get $0 + if local.get $1 - return + local.get $2 + i32.const 1 + i32.shl + i32.add + local.get $0 + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 1 + i32.shr_u + i32.const 1 + i32.shl + call $~lib/memory/memory.copy end - i32.const 22048 - i32.const 22096 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 ) (func $~lib/util/number/itoa32 (param $0 i32) (result i32) (local $1 i32) diff --git a/tests/compiler/throw.optimized.wat b/tests/compiler/throw.optimized.wat index f27d104813..3c7bef4b4c 100644 --- a/tests/compiler/throw.optimized.wat +++ b/tests/compiler/throw.optimized.wat @@ -177,16 +177,16 @@ i32.store offset=4 end global.get $~lib/rt/itcms/toSpace - local.set $2 + local.set $1 local.get $0 i32.load offset=12 - local.tee $1 + local.tee $2 i32.const 1 i32.le_u if (result i32) i32.const 1 else - local.get $1 + local.get $2 i32.const 1728 i32.load i32.gt_u @@ -198,7 +198,7 @@ call $~lib/builtins/abort unreachable end - local.get $1 + local.get $2 i32.const 3 i32.shl i32.const 1732 @@ -214,26 +214,26 @@ i32.const 2 end local.set $3 - local.get $2 + local.get $1 i32.load offset=8 - local.set $1 + local.set $2 local.get $0 - local.get $2 + local.get $1 local.get $3 i32.or i32.store offset=4 local.get $0 - local.get $1 + local.get $2 i32.store offset=8 - local.get $1 + local.get $2 local.get $0 - local.get $1 + local.get $2 i32.load offset=4 i32.const 3 i32.and i32.or i32.store offset=4 - local.get $2 + local.get $1 local.get $0 i32.store offset=8 global.get $~lib/rt/itcms/visitCount diff --git a/tests/compiler/typeof.optimized.wat b/tests/compiler/typeof.optimized.wat index 2887713ff9..4b1dc4184d 100644 --- a/tests/compiler/typeof.optimized.wat +++ b/tests/compiler/typeof.optimized.wat @@ -80,7 +80,7 @@ i32.load offset=16 i32.const 1 i32.shr_u - local.tee $4 + local.tee $2 local.get $1 i32.const 20 i32.sub @@ -94,18 +94,15 @@ end block $__inlined_func$~lib/util/string/compareImpl (result i32) local.get $0 - local.set $2 - local.get $1 - local.set $3 - local.get $2 + local.tee $3 i32.const 7 i32.and - local.get $3 + local.get $1 i32.const 7 i32.and i32.or i32.const 1 - local.get $4 + local.get $2 local.tee $0 i32.const 4 i32.ge_u @@ -113,20 +110,20 @@ i32.eqz if loop $do-continue|0 - local.get $2 - i64.load local.get $3 i64.load + local.get $1 + i64.load i64.eq if - local.get $2 - i32.const 8 - i32.add - local.set $2 local.get $3 i32.const 8 i32.add local.set $3 + local.get $1 + i32.const 8 + i32.add + local.set $1 local.get $0 i32.const 4 i32.sub @@ -139,33 +136,33 @@ end loop $while-continue|1 local.get $0 - local.tee $1 + local.tee $2 i32.const 1 i32.sub local.set $0 - local.get $1 + local.get $2 if - local.get $2 - i32.load16_u - local.tee $1 local.get $3 i32.load16_u + local.tee $2 + local.get $1 + i32.load16_u local.tee $4 i32.ne if - local.get $1 + local.get $2 local.get $4 i32.sub br $__inlined_func$~lib/util/string/compareImpl end - local.get $2 - i32.const 2 - i32.add - local.set $2 local.get $3 i32.const 2 i32.add local.set $3 + local.get $1 + i32.const 2 + i32.add + local.set $1 br $while-continue|1 end end @@ -1173,7 +1170,7 @@ local.get $0 i32.const 4 i32.add - local.tee $0 + local.tee $1 i32.const 18220 i32.ge_u if @@ -1183,20 +1180,20 @@ call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT - local.get $0 + local.get $1 i32.const 4 i32.sub - local.set $1 - local.get $0 + local.set $0 + local.get $1 i32.const 15 i32.and i32.const 1 - local.get $0 + local.get $1 select if (result i32) i32.const 1 else - local.get $1 + local.get $0 i32.load i32.const 1 i32.and @@ -1209,14 +1206,11 @@ call $~lib/builtins/abort unreachable end - local.get $1 - local.tee $0 + local.get $0 + local.get $0 i32.load i32.const 1 i32.or - local.set $1 - local.get $0 - local.get $1 i32.store local.get $0 call $~lib/rt/tlsf/insertBlock @@ -1229,8 +1223,7 @@ local.tee $0 local.get $0 i32.store offset=4 - global.get $~lib/rt/itcms/toSpace - local.tee $0 + local.get $0 local.get $0 i32.store offset=8 i32.const 0 diff --git a/tests/compiler/wasi/abort.optimized.wat b/tests/compiler/wasi/abort.optimized.wat index 31a2c156cb..1df217ad14 100644 --- a/tests/compiler/wasi/abort.optimized.wat +++ b/tests/compiler/wasi/abort.optimized.wat @@ -5,7 +5,6 @@ (type $i32_=>_none (func (param i32))) (import "wasi_snapshot_preview1" "fd_write" (func $~lib/bindings/wasi_snapshot_preview1/fd_write (param i32 i32 i32 i32) (result i32))) (import "wasi_snapshot_preview1" "proc_exit" (func $~lib/bindings/wasi_snapshot_preview1/proc_exit (param i32))) - (global $~argumentsLength (mut i32) (i32.const 0)) (memory $0 1) (data (i32.const 1036) "<") (data (i32.const 1048) "\01\00\00\00$\00\00\00U\00n\00p\00a\00i\00r\00e\00d\00 \00s\00u\00r\00r\00o\00g\00a\00t\00e") @@ -18,57 +17,47 @@ (export "test" (func $wasi/abort/test)) (export "memory" (memory $0)) (export "_start" (func $~start)) - (func $~lib/string/String.UTF8.encodeUnsafe@varargs (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/string/String.UTF8.encodeUnsafe (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) - block $2of2 - block $outOfRange - global.get $~argumentsLength - i32.const 3 - i32.sub - br_table $2of2 $2of2 $2of2 $outOfRange - end - unreachable - end local.get $0 - local.tee $3 local.get $1 i32.const 1 i32.shl i32.add local.set $4 local.get $2 - local.set $0 + local.set $1 loop $while-continue|0 - local.get $3 + local.get $0 local.get $4 i32.lt_u if - local.get $3 + local.get $0 i32.load16_u - local.tee $1 + local.tee $3 i32.const 128 i32.lt_u if (result i32) - local.get $0 local.get $1 + local.get $3 i32.store8 - local.get $0 + local.get $1 i32.const 1 i32.add else - local.get $1 + local.get $3 i32.const 2048 i32.lt_u if (result i32) - local.get $0 local.get $1 + local.get $3 i32.const 6 i32.shr_u i32.const 192 i32.or - local.get $1 + local.get $3 i32.const 63 i32.and i32.const 128 @@ -77,28 +66,28 @@ i32.shl i32.or i32.store16 - local.get $0 + local.get $1 i32.const 2 i32.add else - local.get $1 + local.get $3 i32.const 63488 i32.and i32.const 55296 i32.eq if local.get $4 - local.get $3 + local.get $0 i32.const 2 i32.add i32.gt_u i32.const 0 - local.get $1 + local.get $3 i32.const 56320 i32.lt_u select if - local.get $3 + local.get $0 i32.load16_u offset=2 local.tee $5 i32.const 64512 @@ -106,8 +95,8 @@ i32.const 56320 i32.eq if - local.get $0 local.get $1 + local.get $3 i32.const 1023 i32.and i32.const 10 @@ -118,14 +107,14 @@ i32.const 1023 i32.and i32.or - local.tee $1 + local.tee $3 i32.const 63 i32.and i32.const 128 i32.or i32.const 24 i32.shl - local.get $1 + local.get $3 i32.const 6 i32.shr_u i32.const 63 @@ -135,7 +124,7 @@ i32.const 16 i32.shl i32.or - local.get $1 + local.get $3 i32.const 12 i32.shr_u i32.const 63 @@ -145,32 +134,32 @@ i32.const 8 i32.shl i32.or - local.get $1 + local.get $3 i32.const 18 i32.shr_u i32.const 240 i32.or i32.or i32.store - local.get $0 + local.get $1 i32.const 4 i32.add - local.set $0 - local.get $3 + local.set $1 + local.get $0 i32.const 4 i32.add - local.set $3 + local.set $0 br $while-continue|0 end end end - local.get $0 local.get $1 + local.get $3 i32.const 12 i32.shr_u i32.const 224 i32.or - local.get $1 + local.get $3 i32.const 6 i32.shr_u i32.const 63 @@ -181,27 +170,27 @@ i32.shl i32.or i32.store16 - local.get $0 local.get $1 + local.get $3 i32.const 63 i32.and i32.const 128 i32.or i32.store8 offset=2 - local.get $0 + local.get $1 i32.const 3 i32.add end end - local.set $0 - local.get $3 + local.set $1 + local.get $0 i32.const 2 i32.add - local.set $3 + local.set $0 br $while-continue|0 end end - local.get $0 + local.get $1 local.get $2 i32.sub ) @@ -220,38 +209,30 @@ i32.const 12 i64.const 9071471065260641 i64.store + i32.const 1168 i32.const 1164 i32.load i32.const 1 i32.shr_u - local.set $0 - i32.const 3 - global.set $~argumentsLength - i32.const 1168 - local.get $0 i32.const 19 - call $~lib/string/String.UTF8.encodeUnsafe@varargs + call $~lib/string/String.UTF8.encodeUnsafe i32.const 19 i32.add local.tee $0 i32.const 544106784 i32.store - i32.const 1212 - i32.load - i32.const 1 - i32.shr_u - local.set $3 - i32.const 3 - global.set $~argumentsLength - i32.const 1216 - local.get $3 local.get $0 i32.const 4 i32.add local.tee $0 - call $~lib/string/String.UTF8.encodeUnsafe@varargs local.set $3 + i32.const 1216 + i32.const 1212 + i32.load + i32.const 1 + i32.shr_u local.get $0 + call $~lib/string/String.UTF8.encodeUnsafe local.get $3 i32.add local.tee $0 diff --git a/tests/compiler/wasi/seed.optimized.wat b/tests/compiler/wasi/seed.optimized.wat index 8506c078fe..bd74675984 100644 --- a/tests/compiler/wasi/seed.optimized.wat +++ b/tests/compiler/wasi/seed.optimized.wat @@ -1,9 +1,11 @@ (module - (type $none_=>_none (func)) (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) + (type $i32_=>_i32 (func (param i32) (result i32))) (type $i32_i32_i32_i32_=>_i32 (func (param i32 i32 i32 i32) (result i32))) (type $i32_=>_none (func (param i32))) + (type $i64_=>_none (func (param i64))) (type $none_=>_f64 (func (result f64))) + (type $none_=>_none (func)) (import "wasi_snapshot_preview1" "random_get" (func $~lib/bindings/wasi_snapshot_preview1/random_get (param i32 i32) (result i32))) (import "wasi_snapshot_preview1" "fd_write" (func $~lib/bindings/wasi_snapshot_preview1/fd_write (param i32 i32 i32 i32) (result i32))) (import "wasi_snapshot_preview1" "proc_exit" (func $~lib/bindings/wasi_snapshot_preview1/proc_exit (param i32))) @@ -22,43 +24,24 @@ (export "test" (func $wasi/seed/test)) (export "memory" (memory $0)) (export "_start" (func $~start)) - (func $~lib/wasi/index/abort - (local $0 i32) + (func $~lib/string/String.UTF8.encodeUnsafe (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) - (local $5 i32) - (local $6 i32) - i32.const 5 - local.set $3 - i32.const 1421 - local.set $4 - i32.const 0 - i32.const 12 - i32.store - i32.const 12 - i64.const 9071471065260641 - i64.store - i32.const 19 - i32.const 544106784 - i32.store i32.const 1168 local.set $2 - i32.const 1164 - i32.load - i32.const 1 - i32.shr_u + local.get $0 i32.const 1 i32.shl i32.const 1168 i32.add - local.set $5 + local.set $3 i32.const 23 local.set $0 loop $while-continue|0 local.get $2 - local.get $5 + local.get $3 i32.lt_u if local.get $2 @@ -103,7 +86,7 @@ i32.const 55296 i32.eq if - local.get $5 + local.get $3 local.get $2 i32.const 2 i32.add @@ -116,7 +99,7 @@ if local.get $2 i32.load16_u offset=2 - local.tee $6 + local.tee $4 i32.const 64512 i32.and i32.const 56320 @@ -130,7 +113,7 @@ i32.shl i32.const 65536 i32.add - local.get $6 + local.get $4 i32.const 1023 i32.and i32.or @@ -218,88 +201,245 @@ end end local.get $0 - i32.const 40 - i32.store8 + i32.const 23 + i32.sub + ) + (func $~lib/math/NativeMath.seedRandom (param $0 i64) + (local $1 i32) + (local $2 i64) + (local $3 i64) + (local $4 i32) + (local $5 i32) + i32.const 1 + global.set $~lib/math/random_seeded local.get $0 - i32.const 5 - i32.add - local.set $0 - loop $do-continue|0 - local.get $0 - i32.const 1 - i32.sub - local.tee $0 - local.get $4 - i32.const 10 - i32.rem_u - i32.const 48 - i32.add - i32.store8 - local.get $4 - i32.const 10 - i32.div_u - local.tee $4 - br_if $do-continue|0 - end local.get $0 - i32.const 4 - i32.add - local.tee $0 - i32.const 58 - i32.store8 + i64.const 33 + i64.shr_u + i64.xor + i64.const -49064778989728563 + i64.mul + local.tee $2 + local.get $2 + i64.const 33 + i64.shr_u + i64.xor + i64.const -4265267296055464877 + i64.mul + local.tee $2 + local.get $2 + i64.const 33 + i64.shr_u + i64.xor + global.set $~lib/math/random_state0_64 + global.get $~lib/math/random_state0_64 + local.tee $2 + i64.const -1 + i64.xor + local.tee $3 + local.get $3 + i64.const 33 + i64.shr_u + i64.xor + i64.const -49064778989728563 + i64.mul + local.tee $3 + local.get $3 + i64.const 33 + i64.shr_u + i64.xor + i64.const -4265267296055464877 + i64.mul + local.tee $3 + local.get $3 + i64.const 33 + i64.shr_u + i64.xor + global.set $~lib/math/random_state1_64 local.get $0 - i32.const 2 + i32.wrap_i64 + i32.const 1831565813 i32.add - local.set $0 - loop $do-continue|1 - local.get $0 + local.tee $1 + local.get $1 + i32.const 15 + i32.shr_u + i32.xor + local.get $1 + i32.const 1 + i32.or + i32.mul + local.tee $1 + local.get $1 + local.get $1 + i32.const 61 + i32.or + local.get $1 + local.get $1 + i32.const 7 + i32.shr_u + i32.xor + i32.mul + i32.add + i32.xor + local.tee $1 + local.get $1 + i32.const 14 + i32.shr_u + i32.xor + global.set $~lib/math/random_state0_32 + global.get $~lib/math/random_state0_32 + local.tee $4 + i32.const 1831565813 + i32.add + local.tee $1 + local.get $1 + i32.const 15 + i32.shr_u + i32.xor + local.get $1 + i32.const 1 + i32.or + i32.mul + local.tee $1 + local.get $1 + local.get $1 + i32.const 61 + i32.or + local.get $1 + local.get $1 + i32.const 7 + i32.shr_u + i32.xor + i32.mul + i32.add + i32.xor + local.tee $1 + local.get $1 + i32.const 14 + i32.shr_u + i32.xor + global.set $~lib/math/random_state1_32 + global.get $~lib/math/random_state1_32 + i32.const 0 + i32.ne + i32.const 0 + local.get $4 + i32.const 0 + global.get $~lib/math/random_state1_64 + i64.const 0 + i64.ne + i32.const 0 + local.get $2 + i64.const 0 + i64.ne + select + select + select + i32.eqz + if + i32.const 5 + local.set $4 + i32.const 1421 + local.set $5 + i32.const 0 + i32.const 12 + i32.store + i32.const 12 + i64.const 9071471065260641 + i64.store + i32.const 19 + i32.const 544106784 + i32.store + i32.const 1164 + i32.load i32.const 1 - i32.sub - local.tee $0 - local.get $3 - i32.const 10 - i32.rem_u - i32.const 48 + i32.shr_u + call $~lib/string/String.UTF8.encodeUnsafe + i32.const 23 i32.add + local.tee $1 + i32.const 40 i32.store8 - local.get $3 + local.get $1 + i32.const 5 + i32.add + local.set $1 + loop $do-continue|0 + local.get $1 + i32.const 1 + i32.sub + local.tee $1 + local.get $5 + i32.const 10 + i32.rem_u + i32.const 48 + i32.add + i32.store8 + local.get $5 + i32.const 10 + i32.div_u + local.tee $5 + br_if $do-continue|0 + end + local.get $1 + i32.const 4 + i32.add + local.tee $1 + i32.const 58 + i32.store8 + local.get $1 + i32.const 2 + i32.add + local.set $1 + loop $do-continue|1 + local.get $1 + i32.const 1 + i32.sub + local.tee $1 + local.get $4 + i32.const 10 + i32.rem_u + i32.const 48 + i32.add + i32.store8 + local.get $4 + i32.const 10 + i32.div_u + local.tee $4 + br_if $do-continue|1 + end + local.get $1 + i32.const 1 + i32.add + local.tee $1 + i32.const 2601 + i32.store16 + i32.const 4 + local.get $1 i32.const 10 - i32.div_u - local.tee $3 - br_if $do-continue|1 + i32.sub + i32.store + i32.const 2 + i32.const 0 + i32.const 1 + i32.const 8 + call $~lib/bindings/wasi_snapshot_preview1/fd_write + drop + i32.const 255 + call $~lib/bindings/wasi_snapshot_preview1/proc_exit + unreachable end - local.get $0 - i32.const 1 - i32.add - local.tee $0 - i32.const 2601 - i32.store16 - i32.const 4 - local.get $0 - i32.const 10 - i32.sub - i32.store - i32.const 2 - i32.const 0 - i32.const 1 - i32.const 8 - call $~lib/bindings/wasi_snapshot_preview1/fd_write - drop - i32.const 255 - call $~lib/bindings/wasi_snapshot_preview1/proc_exit ) (func $wasi/seed/test (result f64) - (local $0 i32) + (local $0 i64) (local $1 i64) - (local $2 i64) - (local $3 i64) - (local $4 i32) global.get $~lib/math/random_seeded i32.eqz if i32.const 0 i64.load - local.set $2 + local.set $0 loop $do-continue|0 i32.const 0 i32.const 8 @@ -312,166 +452,36 @@ br_if $do-continue|0 end i32.const 0 - local.get $2 + local.get $0 i64.store - i32.const 1 - global.set $~lib/math/random_seeded local.get $1 f64.reinterpret_i64 i64.reinterpret_f64 - local.tee $2 - local.get $2 - i64.const 33 - i64.shr_u - i64.xor - i64.const -49064778989728563 - i64.mul - local.tee $1 - local.get $1 - i64.const 33 - i64.shr_u - i64.xor - i64.const -4265267296055464877 - i64.mul - local.tee $1 - local.get $1 - i64.const 33 - i64.shr_u - i64.xor - global.set $~lib/math/random_state0_64 - global.get $~lib/math/random_state0_64 - local.tee $1 - i64.const -1 - i64.xor - local.tee $3 - local.get $3 - i64.const 33 - i64.shr_u - i64.xor - i64.const -49064778989728563 - i64.mul - local.tee $3 - local.get $3 - i64.const 33 - i64.shr_u - i64.xor - i64.const -4265267296055464877 - i64.mul - local.tee $3 - local.get $3 - i64.const 33 - i64.shr_u - i64.xor - global.set $~lib/math/random_state1_64 - local.get $2 - i32.wrap_i64 - i32.const 1831565813 - i32.add - local.tee $0 - local.get $0 - i32.const 15 - i32.shr_u - i32.xor - local.get $0 - i32.const 1 - i32.or - i32.mul - local.tee $0 - local.get $0 - local.get $0 - i32.const 61 - i32.or - local.get $0 - local.get $0 - i32.const 7 - i32.shr_u - i32.xor - i32.mul - i32.add - i32.xor - local.tee $0 - local.get $0 - i32.const 14 - i32.shr_u - i32.xor - global.set $~lib/math/random_state0_32 - global.get $~lib/math/random_state0_32 - local.tee $4 - i32.const 1831565813 - i32.add - local.tee $0 - local.get $0 - i32.const 15 - i32.shr_u - i32.xor - local.get $0 - i32.const 1 - i32.or - i32.mul - local.tee $0 - local.get $0 - local.get $0 - i32.const 61 - i32.or - local.get $0 - local.get $0 - i32.const 7 - i32.shr_u - i32.xor - i32.mul - i32.add - i32.xor - local.tee $0 - local.get $0 - i32.const 14 - i32.shr_u - i32.xor - global.set $~lib/math/random_state1_32 - global.get $~lib/math/random_state1_32 - i32.const 0 - i32.ne - i32.const 0 - local.get $4 - i32.const 0 - global.get $~lib/math/random_state1_64 - i64.const 0 - i64.ne - i32.const 0 - local.get $1 - i64.const 0 - i64.ne - select - select - select - i32.eqz - if - call $~lib/wasi/index/abort - unreachable - end + call $~lib/math/NativeMath.seedRandom end global.get $~lib/math/random_state0_64 - local.set $1 + local.set $0 global.get $~lib/math/random_state1_64 - local.tee $2 + local.tee $1 global.set $~lib/math/random_state0_64 - local.get $2 - local.get $1 local.get $1 + local.get $0 + local.get $0 i64.const 23 i64.shl i64.xor - local.tee $1 - local.get $1 + local.tee $0 + local.get $0 i64.const 17 i64.shr_u i64.xor i64.xor - local.get $2 + local.get $1 i64.const 26 i64.shr_u i64.xor global.set $~lib/math/random_state1_64 - local.get $2 + local.get $1 i64.const 12 i64.shr_u i64.const 4607182418800017408 diff --git a/tests/compiler/wasi/trace.optimized.wat b/tests/compiler/wasi/trace.optimized.wat index c2588b9f7f..3c86227205 100644 --- a/tests/compiler/wasi/trace.optimized.wat +++ b/tests/compiler/wasi/trace.optimized.wat @@ -3,17 +3,16 @@ (type $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) (type $i32_i32_=>_none (func (param i32 i32))) (type $none_=>_none (func)) + (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) (type $i32_f64_=>_i32 (func (param i32 f64) (result i32))) (type $i32_i32_i32_i32_=>_i32 (func (param i32 i32 i32 i32) (result i32))) (type $i32_=>_none (func (param i32))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) - (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) (type $i32_i64_i32_i64_i32_i64_i32_=>_i32 (func (param i32 i64 i32 i64 i32 i64 i32) (result i32))) (type $i32_f64_f64_f64_f64_f64_=>_none (func (param i32 f64 f64 f64 f64 f64))) (import "wasi_snapshot_preview1" "fd_write" (func $~lib/bindings/wasi_snapshot_preview1/fd_write (param i32 i32 i32 i32) (result i32))) (import "wasi_snapshot_preview1" "proc_exit" (func $~lib/bindings/wasi_snapshot_preview1/proc_exit (param i32))) (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) - (global $~argumentsLength (mut i32) (i32.const 0)) (global $~lib/util/number/_frc_plus (mut i64) (i64.const 0)) (global $~lib/util/number/_frc_minus (mut i64) (i64.const 0)) (global $~lib/util/number/_exp (mut i32) (i32.const 0)) @@ -39,57 +38,47 @@ (data (i32.const 2240) "0\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009") (export "memory" (memory $0)) (export "_start" (func $~start)) - (func $~lib/string/String.UTF8.encodeUnsafe@varargs (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/string/String.UTF8.encodeUnsafe (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) - block $2of2 - block $outOfRange - global.get $~argumentsLength - i32.const 3 - i32.sub - br_table $2of2 $2of2 $2of2 $outOfRange - end - unreachable - end local.get $0 - local.tee $3 local.get $1 i32.const 1 i32.shl i32.add local.set $4 local.get $2 - local.set $0 + local.set $1 loop $while-continue|0 - local.get $3 + local.get $0 local.get $4 i32.lt_u if - local.get $3 + local.get $0 i32.load16_u - local.tee $1 + local.tee $3 i32.const 128 i32.lt_u if (result i32) - local.get $0 local.get $1 + local.get $3 i32.store8 - local.get $0 + local.get $1 i32.const 1 i32.add else - local.get $1 + local.get $3 i32.const 2048 i32.lt_u if (result i32) - local.get $0 local.get $1 + local.get $3 i32.const 6 i32.shr_u i32.const 192 i32.or - local.get $1 + local.get $3 i32.const 63 i32.and i32.const 128 @@ -98,28 +87,28 @@ i32.shl i32.or i32.store16 - local.get $0 + local.get $1 i32.const 2 i32.add else - local.get $1 + local.get $3 i32.const 63488 i32.and i32.const 55296 i32.eq if local.get $4 - local.get $3 + local.get $0 i32.const 2 i32.add i32.gt_u i32.const 0 - local.get $1 + local.get $3 i32.const 56320 i32.lt_u select if - local.get $3 + local.get $0 i32.load16_u offset=2 local.tee $5 i32.const 64512 @@ -127,8 +116,8 @@ i32.const 56320 i32.eq if - local.get $0 local.get $1 + local.get $3 i32.const 1023 i32.and i32.const 10 @@ -139,14 +128,14 @@ i32.const 1023 i32.and i32.or - local.tee $1 + local.tee $3 i32.const 63 i32.and i32.const 128 i32.or i32.const 24 i32.shl - local.get $1 + local.get $3 i32.const 6 i32.shr_u i32.const 63 @@ -156,7 +145,7 @@ i32.const 16 i32.shl i32.or - local.get $1 + local.get $3 i32.const 12 i32.shr_u i32.const 63 @@ -166,32 +155,32 @@ i32.const 8 i32.shl i32.or - local.get $1 + local.get $3 i32.const 18 i32.shr_u i32.const 240 i32.or i32.or i32.store - local.get $0 + local.get $1 i32.const 4 i32.add - local.set $0 - local.get $3 + local.set $1 + local.get $0 i32.const 4 i32.add - local.set $3 + local.set $0 br $while-continue|0 end end end - local.get $0 local.get $1 + local.get $3 i32.const 12 i32.shr_u i32.const 224 i32.or - local.get $1 + local.get $3 i32.const 6 i32.shr_u i32.const 63 @@ -202,27 +191,27 @@ i32.shl i32.or i32.store16 - local.get $0 local.get $1 + local.get $3 i32.const 63 i32.and i32.const 128 i32.or i32.store8 offset=2 - local.get $0 + local.get $1 i32.const 3 i32.add end end - local.set $0 - local.get $3 + local.set $1 + local.get $0 i32.const 2 i32.add - local.set $3 + local.set $0 br $while-continue|0 end end - local.get $0 + local.get $1 local.get $2 i32.sub ) @@ -236,19 +225,15 @@ i64.store local.get $0 if (result i32) + local.get $0 local.get $0 i32.const 20 i32.sub i32.load offset=16 i32.const 1 i32.shr_u - local.set $4 - i32.const 3 - global.set $~argumentsLength - local.get $0 - local.get $4 i32.const 19 - call $~lib/string/String.UTF8.encodeUnsafe@varargs + call $~lib/string/String.UTF8.encodeUnsafe i32.const 19 i32.add else @@ -263,19 +248,15 @@ local.set $4 local.get $1 if + local.get $1 local.get $1 i32.const 20 i32.sub i32.load offset=16 i32.const 1 i32.shr_u - local.set $0 - i32.const 3 - global.set $~argumentsLength - local.get $1 - local.get $0 local.get $4 - call $~lib/string/String.UTF8.encodeUnsafe@varargs + call $~lib/string/String.UTF8.encodeUnsafe local.get $4 i32.add local.set $4 @@ -1171,92 +1152,296 @@ end end ) - (func $~lib/util/number/genDigits (param $0 i32) (param $1 i64) (param $2 i32) (param $3 i64) (param $4 i32) (param $5 i64) (param $6 i32) (result i32) - (local $7 i64) - (local $8 i32) - (local $9 i64) - (local $10 i32) - (local $11 i64) - (local $12 i64) - local.get $3 - local.get $1 - i64.sub - local.set $9 - local.get $3 - i64.const 1 - i32.const 0 - local.get $4 - i32.sub - local.tee $10 - i64.extend_i32_s - local.tee $1 - i64.shl - local.tee $11 - i64.const 1 - i64.sub - local.tee $12 - i64.and - local.set $7 - local.get $3 + (func $~lib/rt/tlsf/allocateBlock (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) local.get $1 - i64.shr_u - i32.wrap_i64 + i32.const 1073741820 + i32.gt_u + if + i32.const 1280 + i32.const 1216 + i32.const 458 + i32.const 29 + call $~lib/wasi/index/abort + unreachable + end + local.get $0 local.tee $2 - local.set $4 - local.get $2 - i32.const 100000 - i32.lt_u + local.get $1 + i32.const 12 + i32.le_u if (result i32) - local.get $4 - i32.const 100 + i32.const 12 + else + local.get $1 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + end + local.tee $0 + call $~lib/rt/tlsf/searchBlock + local.tee $1 + i32.eqz + if + local.get $0 + i32.const 536870910 i32.lt_u if (result i32) - local.get $4 - i32.const 10 - i32.ge_u + local.get $0 + i32.const 1 + i32.const 27 + local.get $0 + i32.clz + i32.sub + i32.shl i32.const 1 + i32.sub i32.add else - local.get $4 - i32.const 10000 - i32.ge_u - i32.const 3 - i32.add - local.get $4 - i32.const 1000 - i32.ge_u - i32.add + local.get $0 end - else - local.get $4 - i32.const 10000000 - i32.lt_u - if (result i32) - local.get $4 - i32.const 1000000 - i32.ge_u - i32.const 6 - i32.add - else - local.get $4 - i32.const 1000000000 - i32.ge_u - i32.const 8 - i32.add - local.get $4 - i32.const 100000000 - i32.ge_u - i32.add + i32.const 4 + memory.size + local.tee $1 + i32.const 16 + i32.shl + i32.const 4 + i32.sub + local.get $2 + i32.load offset=1568 + i32.ne + i32.shl + i32.add + i32.const 65535 + i32.add + i32.const -65536 + i32.and + i32.const 16 + i32.shr_u + local.set $3 + local.get $1 + local.get $3 + local.get $1 + local.get $3 + i32.gt_s + select + memory.grow + i32.const 0 + i32.lt_s + if + local.get $3 + memory.grow + i32.const 0 + i32.lt_s + if + unreachable + end + end + local.get $2 + local.get $1 + i32.const 16 + i32.shl + memory.size + i32.const 16 + i32.shl + call $~lib/rt/tlsf/addMemory + local.get $2 + local.get $0 + call $~lib/rt/tlsf/searchBlock + local.tee $1 + i32.eqz + if + i32.const 0 + i32.const 1216 + i32.const 496 + i32.const 16 + call $~lib/wasi/index/abort + unreachable end end - local.set $8 - loop $while-continue|0 - local.get $8 + local.get $0 + local.get $1 + i32.load + i32.const -4 + i32.and + i32.gt_u + if i32.const 0 - i32.gt_s - if - block $break|1 - block $case10|1 + i32.const 1216 + i32.const 498 + i32.const 14 + call $~lib/wasi/index/abort + unreachable + end + local.get $2 + local.get $1 + call $~lib/rt/tlsf/removeBlock + local.get $1 + i32.load + local.set $3 + local.get $0 + i32.const 4 + i32.add + i32.const 15 + i32.and + if + i32.const 0 + i32.const 1216 + i32.const 357 + i32.const 14 + call $~lib/wasi/index/abort + unreachable + end + local.get $3 + i32.const -4 + i32.and + local.get $0 + i32.sub + local.tee $4 + i32.const 16 + i32.ge_u + if + local.get $1 + local.get $0 + local.get $3 + i32.const 2 + i32.and + i32.or + i32.store + local.get $0 + local.get $1 + i32.const 4 + i32.add + i32.add + local.tee $0 + local.get $4 + i32.const 4 + i32.sub + i32.const 1 + i32.or + i32.store + local.get $2 + local.get $0 + call $~lib/rt/tlsf/insertBlock + else + local.get $1 + local.get $3 + i32.const -2 + i32.and + i32.store + local.get $1 + i32.const 4 + i32.add + local.tee $0 + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.get $0 + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + i32.load + i32.const -3 + i32.and + i32.store + end + local.get $1 + ) + (func $~lib/util/number/genDigits (param $0 i32) (param $1 i64) (param $2 i32) (param $3 i64) (param $4 i32) (param $5 i64) (param $6 i32) (result i32) + (local $7 i64) + (local $8 i32) + (local $9 i64) + (local $10 i32) + (local $11 i64) + (local $12 i64) + local.get $3 + local.get $1 + i64.sub + local.set $9 + local.get $3 + i64.const 1 + i32.const 0 + local.get $4 + i32.sub + local.tee $10 + i64.extend_i32_s + local.tee $1 + i64.shl + local.tee $11 + i64.const 1 + i64.sub + local.tee $12 + i64.and + local.set $7 + local.get $3 + local.get $1 + i64.shr_u + i32.wrap_i64 + local.tee $2 + local.set $4 + local.get $2 + i32.const 100000 + i32.lt_u + if (result i32) + local.get $4 + i32.const 100 + i32.lt_u + if (result i32) + local.get $4 + i32.const 10 + i32.ge_u + i32.const 1 + i32.add + else + local.get $4 + i32.const 10000 + i32.ge_u + i32.const 3 + i32.add + local.get $4 + i32.const 1000 + i32.ge_u + i32.add + end + else + local.get $4 + i32.const 10000000 + i32.lt_u + if (result i32) + local.get $4 + i32.const 1000000 + i32.ge_u + i32.const 6 + i32.add + else + local.get $4 + i32.const 1000000000 + i32.ge_u + i32.const 8 + i32.add + local.get $4 + i32.const 100000000 + i32.ge_u + i32.add + end + end + local.set $8 + loop $while-continue|0 + local.get $8 + i32.const 0 + i32.gt_s + if + block $break|1 + block $case10|1 block $case9|1 block $case8|1 block $case7|1 @@ -3360,37 +3545,37 @@ i32.load i32.const 1056 i32.add - local.set $8 + local.set $6 loop $while-continue|0 - local.get $8 + local.get $6 local.get $9 i32.gt_u if local.get $9 i32.load16_u - local.tee $10 + local.tee $7 i32.const 128 i32.lt_u if (result i32) - local.get $6 + local.get $10 i32.const 1 i32.add else - local.get $10 + local.get $7 i32.const 2048 i32.lt_u if (result i32) - local.get $6 + local.get $10 i32.const 2 i32.add else - local.get $8 + local.get $6 local.get $9 i32.const 2 i32.add i32.gt_u i32.const 0 - local.get $10 + local.get $7 i32.const 64512 i32.and i32.const 55296 @@ -3404,10 +3589,10 @@ i32.const 56320 i32.eq if - local.get $6 + local.get $10 i32.const 4 i32.add - local.set $6 + local.set $10 local.get $9 i32.const 4 i32.add @@ -3415,12 +3600,12 @@ br $while-continue|0 end end - local.get $6 + local.get $10 i32.const 3 i32.add end end - local.set $6 + local.set $10 local.get $9 i32.const 2 i32.add @@ -3428,409 +3613,191 @@ br $while-continue|0 end end - local.get $6 + local.get $10 i32.const 56 - local.get $6 + local.get $10 i32.const 56 i32.gt_s select i32.const 13 i32.add - local.set $6 + local.set $10 global.get $~lib/rt/tlsf/ROOT i32.eqz if call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT - local.set $10 + local.get $10 + call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add + local.tee $10 + i32.const 8 + i32.add + local.tee $8 + i32.const 4 + i32.add + local.set $6 + local.get $10 local.get $6 - i32.const 1073741820 - i32.gt_u - if - i32.const 1280 - i32.const 1216 - i32.const 458 - i32.const 29 - call $~lib/wasi/index/abort - unreachable - end + i32.store + local.get $6 + i64.const 9071406388179572 + i64.store + local.get $10 + i32.const 7 + i32.store offset=4 + i32.const 2 local.get $10 + i32.const 1 + local.get $8 + call $~lib/bindings/wasi_snapshot_preview1/fd_write + drop + local.get $10 + i32.const 1056 + i32.const 1052 + i32.load + i32.const 1 + i32.shr_u local.get $6 - i32.const 12 - i32.le_u + call $~lib/string/String.UTF8.encodeUnsafe + i32.store offset=4 + i32.const 2 + local.get $10 + i32.const 1 + local.get $8 + call $~lib/bindings/wasi_snapshot_preview1/fd_write + drop + local.get $0 if (result i32) - i32.const 12 - else local.get $6 - i32.const 19 + i32.const 32 + i32.store8 + local.get $6 + i32.const 1 i32.add - i32.const -16 - i32.and - i32.const 4 - i32.sub - end - local.tee $6 - call $~lib/rt/tlsf/searchBlock - local.tee $7 - i32.eqz - if - local.get $6 - i32.const 536870910 - i32.lt_u - if (result i32) - local.get $6 - i32.const 1 - i32.const 27 - local.get $6 - i32.clz - i32.sub - i32.shl - i32.const 1 - i32.sub - i32.add - else - local.get $6 - end - i32.const 4 - memory.size - local.tee $9 - i32.const 16 - i32.shl - i32.const 4 - i32.sub - local.get $10 - i32.load offset=1568 - i32.ne - i32.shl - i32.add - i32.const 65535 - i32.add - i32.const -65536 - i32.and - i32.const 16 - i32.shr_u - local.set $8 - local.get $9 - local.get $8 - local.get $8 - local.get $9 - i32.lt_s - select - memory.grow - i32.const 0 - i32.lt_s - if - local.get $8 - memory.grow - i32.const 0 - i32.lt_s - if - unreachable - end - end - local.get $10 - local.get $9 - i32.const 16 - i32.shl - memory.size - i32.const 16 - i32.shl - call $~lib/rt/tlsf/addMemory - local.get $10 - local.get $6 - call $~lib/rt/tlsf/searchBlock local.tee $7 - i32.eqz - if - i32.const 0 - i32.const 1216 - i32.const 496 - i32.const 16 - call $~lib/wasi/index/abort - unreachable - end - end - local.get $6 - local.get $7 - i32.load - i32.const -4 - i32.and - i32.gt_u - if - i32.const 0 - i32.const 1216 - i32.const 498 - i32.const 14 - call $~lib/wasi/index/abort - unreachable - end - local.get $10 - local.get $7 - call $~lib/rt/tlsf/removeBlock - local.get $7 - i32.load - local.set $9 - local.get $6 - i32.const 4 - i32.add - i32.const 15 - i32.and - if - i32.const 0 - i32.const 1216 - i32.const 357 - i32.const 14 - call $~lib/wasi/index/abort - unreachable - end - local.get $9 - i32.const -4 - i32.and - local.get $6 - i32.sub - local.tee $8 - i32.const 16 - i32.ge_u - if - local.get $7 - local.get $6 - local.get $9 - i32.const 2 - i32.and - i32.or - i32.store - local.get $6 - local.get $7 - i32.const 4 - i32.add - i32.add - local.tee $6 - local.get $8 - i32.const 4 - i32.sub - i32.const 1 - i32.or - i32.store + local.get $1 + call $~lib/util/number/dtoa_buffered + local.set $9 local.get $10 - local.get $6 - call $~lib/rt/tlsf/insertBlock - else local.get $7 - local.get $9 - i32.const -2 - i32.and - i32.store - local.get $7 - i32.const 4 - i32.add local.tee $6 - local.get $7 - i32.load - i32.const -4 - i32.and - i32.add - local.get $6 - local.get $7 - i32.load - i32.const -4 - i32.and - i32.add - i32.load - i32.const -3 - i32.and - i32.store - end - local.get $7 - i32.const 4 - i32.add - local.tee $7 - i32.const 8 - i32.add - local.tee $10 - i32.const 4 - i32.add - local.set $9 - local.get $7 - local.get $9 - i32.store - local.get $9 - i64.const 9071406388179572 - i64.store - local.get $7 - i32.const 7 - i32.store offset=4 - i32.const 2 - local.get $7 - i32.const 1 - local.get $10 - call $~lib/bindings/wasi_snapshot_preview1/fd_write - drop - i32.const 1052 - i32.load - i32.const 1 - i32.shr_u - local.set $6 - i32.const 3 - global.set $~argumentsLength - local.get $7 - i32.const 1056 - local.get $6 - local.get $9 - call $~lib/string/String.UTF8.encodeUnsafe@varargs - i32.store offset=4 - i32.const 2 - local.get $7 - i32.const 1 - local.get $10 - call $~lib/bindings/wasi_snapshot_preview1/fd_write - drop - local.get $0 - if (result i32) - local.get $9 - i32.const 32 - i32.store8 local.get $9 - i32.const 1 - i32.add - local.tee $8 - local.get $1 - call $~lib/util/number/dtoa_buffered - local.set $6 - i32.const 3 - global.set $~argumentsLength local.get $7 - local.get $8 - local.get $6 - local.get $8 - call $~lib/string/String.UTF8.encodeUnsafe@varargs + call $~lib/string/String.UTF8.encodeUnsafe i32.const 1 i32.add i32.store offset=4 i32.const 2 - local.get $7 - i32.const 1 local.get $10 + i32.const 1 + local.get $8 call $~lib/bindings/wasi_snapshot_preview1/fd_write drop local.get $0 i32.const 1 i32.gt_s if - local.get $8 + local.get $10 + local.get $6 + local.get $7 local.get $2 call $~lib/util/number/dtoa_buffered - local.set $6 - i32.const 3 - global.set $~argumentsLength local.get $7 - local.get $8 - local.get $6 - local.get $8 - call $~lib/string/String.UTF8.encodeUnsafe@varargs + call $~lib/string/String.UTF8.encodeUnsafe i32.const 1 i32.add i32.store offset=4 i32.const 2 - local.get $7 - i32.const 1 local.get $10 + i32.const 1 + local.get $8 call $~lib/bindings/wasi_snapshot_preview1/fd_write drop local.get $0 i32.const 2 i32.gt_s if - local.get $8 + local.get $10 + local.get $6 + local.get $7 local.get $3 call $~lib/util/number/dtoa_buffered - local.set $6 - i32.const 3 - global.set $~argumentsLength local.get $7 - local.get $8 - local.get $6 - local.get $8 - call $~lib/string/String.UTF8.encodeUnsafe@varargs + call $~lib/string/String.UTF8.encodeUnsafe i32.const 1 i32.add i32.store offset=4 i32.const 2 - local.get $7 - i32.const 1 local.get $10 + i32.const 1 + local.get $8 call $~lib/bindings/wasi_snapshot_preview1/fd_write drop local.get $0 i32.const 3 i32.gt_s if - local.get $8 + local.get $10 + local.get $6 + local.get $7 local.get $4 call $~lib/util/number/dtoa_buffered - local.set $6 - i32.const 3 - global.set $~argumentsLength local.get $7 - local.get $8 - local.get $6 - local.get $8 - call $~lib/string/String.UTF8.encodeUnsafe@varargs + call $~lib/string/String.UTF8.encodeUnsafe i32.const 1 i32.add i32.store offset=4 i32.const 2 - local.get $7 - i32.const 1 local.get $10 + i32.const 1 + local.get $8 call $~lib/bindings/wasi_snapshot_preview1/fd_write drop local.get $0 i32.const 4 i32.gt_s if - local.get $8 + local.get $10 + local.get $7 + local.get $7 local.get $5 call $~lib/util/number/dtoa_buffered - local.set $0 - i32.const 3 - global.set $~argumentsLength local.get $7 - local.get $8 - local.get $0 - local.get $8 - call $~lib/string/String.UTF8.encodeUnsafe@varargs + call $~lib/string/String.UTF8.encodeUnsafe i32.const 1 i32.add i32.store offset=4 i32.const 2 - local.get $7 - i32.const 1 local.get $10 + i32.const 1 + local.get $8 call $~lib/bindings/wasi_snapshot_preview1/fd_write drop end end end end - local.get $8 + local.get $7 i32.const 1 i32.sub else - local.get $9 + local.get $6 end i32.const 10 i32.store8 - local.get $7 + local.get $10 i32.const 1 i32.store offset=4 i32.const 2 - local.get $7 - i32.const 1 local.get $10 + i32.const 1 + local.get $8 call $~lib/bindings/wasi_snapshot_preview1/fd_write drop - local.get $7 + local.get $10 i32.const 19024 i32.ge_u if @@ -3840,20 +3807,20 @@ call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT - local.get $7 + local.get $10 i32.const 4 i32.sub - local.set $10 - local.get $7 + local.set $7 + local.get $10 i32.const 15 i32.and i32.const 1 - local.get $7 + local.get $10 select if (result i32) i32.const 1 else - local.get $10 + local.get $7 i32.load i32.const 1 i32.and @@ -3866,13 +3833,13 @@ call $~lib/wasi/index/abort unreachable end - local.get $10 - local.get $10 + local.get $7 + local.get $7 i32.load i32.const 1 i32.or i32.store - local.get $10 + local.get $7 call $~lib/rt/tlsf/insertBlock end ) diff --git a/tests/compiler/while.optimized.wat b/tests/compiler/while.optimized.wat index e0f1361365..c8b691b704 100644 --- a/tests/compiler/while.optimized.wat +++ b/tests/compiler/while.optimized.wat @@ -1027,7 +1027,7 @@ local.get $0 i32.const 4 i32.add - local.tee $0 + local.tee $1 i32.const 17908 i32.ge_u if @@ -1037,20 +1037,20 @@ call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT - local.get $0 + local.get $1 i32.const 4 i32.sub - local.set $1 - local.get $0 + local.set $0 + local.get $1 i32.const 15 i32.and i32.const 1 - local.get $0 + local.get $1 select if (result i32) i32.const 1 else - local.get $1 + local.get $0 i32.load i32.const 1 i32.and @@ -1063,14 +1063,11 @@ call $~lib/builtins/abort unreachable end - local.get $1 - local.tee $0 + local.get $0 + local.get $0 i32.load i32.const 1 i32.or - local.set $1 - local.get $0 - local.get $1 i32.store local.get $0 call $~lib/rt/tlsf/insertBlock @@ -1083,8 +1080,7 @@ local.tee $0 local.get $0 i32.store offset=4 - global.get $~lib/rt/itcms/toSpace - local.tee $0 + local.get $0 local.get $0 i32.store offset=8 i32.const 0